From 8b76e79585aa1ed0a3bc4c1708f2d270aac239fc Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Fri, 13 Mar 2026 01:33:21 -0400 Subject: "Connection failed" waits for a keypress before reconnect. --- src/irc.c | 7 ++----- src/irc.h | 2 ++ src/main.c | 48 ++++++++++++++++++++++++++++++------------------ 3 files changed, 34 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/irc.c b/src/irc.c index 1d2907d..95ab584 100644 --- a/src/irc.c +++ b/src/irc.c @@ -16,8 +16,6 @@ #define MAX_MSG 512 -extern void __fastcall__ bell(void); /* see src/bell.s */ - char *msg_src, *msg_cmd, *msg_dest, *msg_text; char *msg_args[MAX_MSG_ARGS]; int msg_argcount; @@ -622,7 +620,6 @@ void print_errnum(void) { scr_print_current("Error #"); itoa(err, numbuf, 10); scr_print_current(numbuf); - scr_print_current(", press any key...\n"); } int irc_read(void) { @@ -633,13 +630,13 @@ int irc_read(void) { if(err != 1) { regged = 0; if(err == 136) { - scr_print_current("Disconnected, press any key...\n"); + scr_print_current("Disconnected"); } else { print_errnum(); } + scr_print_current(", press any key...\n"); bell(); cgetc(); - scr_display(0); return 0; } diff --git a/src/irc.h b/src/irc.h index d513604..203f4dc 100644 --- a/src/irc.h +++ b/src/irc.h @@ -59,6 +59,8 @@ void irc_loop(void); void print_errnum(void); +void __fastcall__ bell(void); /* see src/bell.s */ + /**** cmd.c */ void cmd_command(char *cmd); void cmd_execute(void); diff --git a/src/main.c b/src/main.c index a701324..59f751e 100644 --- a/src/main.c +++ b/src/main.c @@ -23,6 +23,7 @@ void *old_vprced; // old PROCEED vector, restored on exit. unsigned short rxbuflen; // RX buffer length unsigned int txbuflen; // TX buffer length char hz; /* 50 for PAL, 60 for NSTC */ +char reconnect_timeout; /* TODO: user modes (default +iw), fg/bg color... */ @@ -83,26 +84,32 @@ void txbuf_send_str(const char *str) { } int fn_connect(void) { - scr_print(SCR_SERVER, "Connecting to: "); - scr_print(SCR_SERVER, conf->url); - scr_print(SCR_SERVER, "\n"); + scr_display(SCR_SERVER); + scr_print_current("Connecting to: "); + scr_print_current(conf->url); + scr_eol_current(); + + err = nopen(conf->url, FNET_TRANSLATION); + + if(err != SUCCESS) { + bell(); + scr_print_current("Connection failed: "); + print_errnum(); + scr_eol_current(); + cgetc(); + return 0; + } - err = nopen(conf->url, FNET_TRANSLATION); + // Open successful, set up interrupt + old_vprced = OS.vprced; // save the old interrupt vector + old_enabled = PIA.pactl & 1; // keep track of old interrupt state + PIA.pactl &= (~1); // Turn off interrupts before changing vector + OS.vprced = ih; // Set PROCEED interrupt vector to our interrupt handler. + PIA.pactl |= 1; // Indicate to PIA we are ready for PROCEED interrupt. - if(err != SUCCESS) { - scr_print(SCR_SERVER, "Connection failed: "); - print_errnum(); - return 0; - } - - // Open successful, set up interrupt - old_vprced = OS.vprced; // save the old interrupt vector - old_enabled = PIA.pactl & 1; // keep track of old interrupt state - PIA.pactl &= (~1); // Turn off interrupts before changing vector - OS.vprced = ih; // Set PROCEED interrupt vector to our interrupt handler. - PIA.pactl |= 1; // Indicate to PIA we are ready for PROCEED interrupt. - - return 1; + reconnect_timeout = 1; + + return 1; } void fn_disconnect(void) { @@ -123,6 +130,9 @@ void init_channels(void) { } } +void reconnect_wait(void) { +} + void main(void) { bell_type = conf->alert_type; /* TODO: have bell.s read staight from the struct */ OS.shflok = 0; // turn off shift-lock. @@ -143,6 +153,8 @@ void main(void) { irc_register(); irc_loop(); fn_disconnect(); + } else { + reconnect_wait(); } } } -- cgit v1.2.3