diff options
Diffstat (limited to 'src/cmd.c')
| -rw-r--r-- | src/cmd.c | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -34,6 +34,7 @@ static void do_quote(void); static void do_topic(void); static void do_ver(void); static void do_reset(void); +static void do_reboot(void); typedef struct { char *cmd; @@ -67,6 +68,7 @@ cmd_t command_defs[] = { { "QUIT", do_quit, 0 }, { "QUOTE", do_quote, 1 }, { "TOPIC", do_topic, 0 }, + { "REBOOT", do_reboot, 0 }, { "RESET", do_reset, 0 }, { "VER", do_ver, 0 }, { "VERSION", do_ver, 0 }, @@ -194,11 +196,27 @@ static void do_j(void) { static void do_quit(void) { reconnect_timeout = 0; /* do not reconnect on /quit */ txbuf_set_str("QUIT"); - if(arg1) + if(arg1) { txbuf_append_str2(" :", arg1); + } txbuf_send(); } +static void pause(void) { + OS.rtclok[2] = 0; + while(OS.rtclok[2] < hz) + /* NOP */; +} + +static void do_reboot(void) { + arg1 = "Rebooting again..."; + do_quit(); + pause(); + do_reset(); + pause(); + asm("jmp $e477"); +} + static void do_part(void) { if(arg1[0] == '#') { target = arg1; |
