aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/irc.c7
-rw-r--r--src/irc.h2
-rw-r--r--src/main.c48
3 files changed, 34 insertions, 23 deletions
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();
}
}
}