diff options
| -rw-r--r-- | src/cmd.c | 7 | ||||
| -rw-r--r-- | src/nio.c | 16 |
2 files changed, 23 insertions, 0 deletions
@@ -33,6 +33,7 @@ static void do_quit(void); static void do_quote(void); static void do_topic(void); static void do_ver(void); +static void do_reset(void); typedef struct { char *cmd; @@ -66,6 +67,7 @@ cmd_t command_defs[] = { { "QUIT", do_quit, 0 }, { "QUOTE", do_quote, 1 }, { "TOPIC", do_topic, 0 }, + { "RESET", do_reset, 0 }, { "VER", do_ver, 0 }, { "VERSION", do_ver, 0 }, { 0, 0 } @@ -73,6 +75,11 @@ cmd_t command_defs[] = { cmd_t *cmd_def; +static void do_reset(void) { + extern unsigned char nreset(void); + nreset(); +} + static void cmd_chan_text(void) { scr_activate(scr_current); @@ -148,6 +148,22 @@ unsigned char nwrite(char* devicespec, unsigned char* buf, unsigned short len) return OS.dcb.dstats; // Return SIO error or success. } +/* https://fujinet.online/wiki/?p=SIO-Command-%24FF-Reset-FujiNet */ +unsigned char nreset(void) { + OS.dcb.ddevic = 0x70; + OS.dcb.dunit = 1; + OS.dcb.dcomnd = 0xff; /* reset */ + OS.dcb.dstats = DWRITE; + OS.dcb.dbuf = 0; + OS.dcb.dtimlo = TIMEOUT; + OS.dcb.dbyt = 0; + OS.dcb.daux = 0; + siov(); + + return OS.dvstat[DVSTAT_EXTENDED_ERROR]; // return extended status +} + + /* IRC doesn't need this */ #if 0 unsigned char nlogin(char* devicespec, char *login, char *password) |
