home *** CD-ROM | disk | FTP | other *** search
- #include "bbs.h"
-
- extern int CHATF, ChatSerFlag,ChatConFlag;
- //extern UBYTE GUB1;
- extern UBYTE serin[],conin[];
- int BypassCSI=0;
- int XIMPort=0;
-
- //int CheckSerCSI(void); remove from console.c
-
- static int readser(ULONG wait)
- {
- UBYTE gub1;
-
- if(SEROUT) {
- SetTimer(wait,0L); /* wait for n seconds */
- while(TRUE) {
- Wait( SerCharSig | TimerSig);
- if(CheckSer()) {
- AbortIO(TimerMsg);
- WaitIO(TimerMsg);
- WaitIO(ReadSerReq);
- gub1 = (int)serin[0];
- SendIO(ReadSerReq);
- return((int)gub1);
- }
- if(CheckIO(TimerMsg)) {
- WaitIO(TimerMsg);
- return(TIMEOUT);
- }
- }
- }
- return(SUCCESS);
- }
-
- static int CheckSerCSI(void)
- {
- extern UBYTE NumHistItems,WhichHist;
- extern long DoHistory,LineHasChanged;
- extern int HistorySelect;
-
- int ch;
-
- ch=readser(3L);
- if(ch=='[') {
- ch=readser(3L);
- if((!DoHistory)||NumHistItems==0)
- {
- if((ch>='A' )&&(ch<'E')&&!RawArrow) return(FALSE);
- }
- if(ch=='A') {
- if(RawArrow) return(UPARROW);
- HistorySelect--;
- if(HistorySelect<0) {
- if(NumHistItems==MAXHIST) HistorySelect=MAXHIST-1;
- else {
- HistorySelect=0;
- if(LineHasChanged) {
- LineHasChanged=0;
- return(HISTORY);
- }
- return(FAILURE);
- }
- }
- return(HISTORY);
- }
-
- if(ch=='B') {
- if(RawArrow) return(DOWNARROW);
-
- HistorySelect++;
- if(NumHistItems!=MAXHIST) {
- if(HistorySelect>=WhichHist) {
- HistorySelect--;
- if(LineHasChanged) {
- LineHasChanged=0;
- return(HISTORY);
- }
- return(FAILURE);
- }
- } else {
- if(HistorySelect>=MAXHIST) HistorySelect=0;
- }
- return(HISTORY);
- }
- if(ch=='C'||ch=='D')
- {
- if(RawArrow)
- {
- if(ch=='C')return(LEFTARROW);
- return(RIGHTARROW);
- }
- return(FALSE);
- }
-
- }
- return(FALSE);
- }
- int ReadChar(ULONG wait)
- {
- int ch,flag;
- long sig;
- BOOL SERVERCMD;
- //char hex[8];
-
- flag=0;
- if((long)wait>70L)
- {
- flag=1;
- wait=wait-60L;
- }
-
- ChatConFlag=0;
- ChatSerFlag=0;
- SetTimer((long)wait,0L);
- FOREVER
- {
- if(KEYIN)
- {
- if(SEROUT)
- {
- sig=Wait(SerCharSig | ConCharSig | TimerSig | IconifySig | RexxSig | DoorSig);
- }
- else
- {
- sig=Wait(ConCharSig | TimerSig | IconifySig | RexxSig | DoorSig);
- }
- }
- else
- {
- if(SEROUT)
- {
- sig=Wait(SerCharSig | TimerSig | IconifySig | DoorSig | RexxSig);
- }
- else
- {
- sig=Wait(TimerSig | IconifySig | DoorSig | RexxSig);
- }
- }
- OneMin:
- if(Whence_The_Logon==REMOTE_LOGON)
- {
- GI1=CheckCarrier();
- if(GI1==FALSE)
- {
- AbortIO(TimerMsg);
- WaitIO(TimerMsg);
- return(NO_CARRIER);
- }
- }
- if(CheckSer())
- {
- XIMPort=SERIAL_PORT;
- AbortIO(TimerMsg);
- WaitIO(TimerMsg);
- WaitIO(ReadSerReq);
- ch = (int)serin[0];
- SendIO(ReadSerReq);
- if(IO_Flags[IOFLAG_SER_IN]>0)
- {
- ChatSerFlag=1;
- if(ch == 27)
- {
- if(BypassCSI) return(ch);
- GI1=CheckSerCSI();
- switch(GI1)
- {
- case HISTORY:
- return(HISTORY);
- case LEFTARROW:
- case RIGHTARROW:
- case UPARROW:
- case DOWNARROW:
- return(GI1);
- }
- SetTimer(wait,0L);
- goto OneMin;//goto OneMin;
- }
-
- return(ch);
- }
- else
- {
- if(Whence_The_Logon!=REMOTE_LOGON)
- {
- PurgeLine();
- return(0);
- }
- SetTimer(wait,0L);
- flag=1;
- goto OneMin;
- }
- }
- if(CheckCon())
- {
- XIMPort=CONSOLE_PORT;
- AbortIO(TimerMsg);
- WaitIO(TimerMsg);
- WaitIO(ReadConReq);
- ch = (int)conin[0];
- SendIO(ReadConReq);
- if(ch == CSI)
- {
- if(BypassCSI) return(ch);
- GI1=CheckCSI();
- switch(GI1)
- {
- case HISTORY:
- return(HISTORY);
- case NO_CARRIER:
- return(GI1);
- case EXITCHAT:
- return(0);
- case 1:
- if(CHATF==1)
- {
- return(13);
- }
- return(0);
- break;
- case 0:
- if(wait==1)
- {
- return(0);
- }
- break;
- case LEFTARROW:
- case RIGHTARROW:
- case UPARROW:
- case DOWNARROW:
- return(GI1);
- }
- SetTimer(wait,0L);
- goto OneMin;
- }
- ChatConFlag=1;
- return(ch);
- }
-
-
- if(CheckIO(TimerMsg))
- {
- WaitIO(TimerMsg);
- if(flag==1)
- {
- if(!Sopt->Toggles[4])SendChar('\07');
- wait=60L;
- SetTimer(wait,0L);
- if(!Sopt->Toggles[4]) flag=0;
- goto OneMin;
-
- }
- return(TIMEOUT);
- }
-
- SERVERCMD=CheckDoorMsg(1);
- if(SERVERCMD)
- {
- AbortIO(TimerMsg);
- WaitIO(TimerMsg);
- if(ServerCmd)
- {
- switch(ServerCmd)
- {
- case SV_CHAT:
- CHATF=1;
- ChatFlag=!ChatFlag;
- if(ChatFlag==0) { return(0); }
- SetEnvStat(ENV_CHAT);
- if(Chat()==NO_CARRIER)
- {
- return(NO_CARRIER);
- }
-
- break;
- }
- ServerCmd=0;
- }
- ch = (int)serverin[0];
- if(ch == CSI)
- {
- GI1=CheckCSI();
- switch(GI1)
- {
- case HISTORY:
- return(HISTORY);
- case NO_CARRIER:
- return(GI1);
- case EXITCHAT:
- return(0);
- case 1:
- if(CHATF==1)
- {
- return(13);
- }
- return(0);
- break;
- case 0:
- if(wait==1)
- {
- return(0);
- }
- break;
- case LEFTARROW:
- case RIGHTARROW:
- case UPARROW:
- case DOWNARROW:
- return(GI1);
- }
- SetTimer(wait,0L);
- goto OneMin;
- }
- ChatConFlag=1;
- return(ch);
-
- }
-
- CheckIconifyMsg();
- CheckRexxMessage();
-
-
- }
- return(SUCCESS);
- }
- int ReadExtChar(ULONG wait,ULONG mysig)
- {
- int ch,flag;
- long sig;
- BOOL SERVERCMD;
- //char hex[8];
-
- flag=0;
- if((long)wait>70L)
- {
- flag=1;
- wait=wait-60L;
- }
-
- ChatConFlag=0;
- ChatSerFlag=0;
- SetTimer((long)wait,0L);
- FOREVER
- {
- if(KEYIN)
- {
- if(SEROUT)
- {
- sig=Wait(SerCharSig | ConCharSig | TimerSig | IconifySig | RexxSig | DoorSig | mysig);
- }
- else
- {
- sig=Wait(ConCharSig | TimerSig | IconifySig | RexxSig | DoorSig | mysig);
- }
- }
- else
- {
- if(SEROUT)
- {
- sig=Wait(SerCharSig | TimerSig | IconifySig | DoorSig | RexxSig | mysig);
- }
- else
- {
- sig=Wait(TimerSig | IconifySig | DoorSig | RexxSig | mysig);
- }
- }
- if(sig&mysig) { SetTimer(wait,0L); return(0);}
- OneMin:
- if(Whence_The_Logon==REMOTE_LOGON)
- {
- GI1=CheckCarrier();
- if(GI1==FALSE)
- {
- AbortIO(TimerMsg);
- WaitIO(TimerMsg);
- return(NO_CARRIER);
- }
- }
- if(CheckSer())
- {
- AbortIO(TimerMsg);
- WaitIO(TimerMsg);
- WaitIO(ReadSerReq);
- ch = (int)serin[0];
- SendIO(ReadSerReq);
- if(IO_Flags[IOFLAG_SER_IN]>0)
- {
- ChatSerFlag=1;
- if(ch == 27)
- {
- if((GI1=CheckSerCSI())==HISTORY)
- {
- return(HISTORY);
- }
- switch(GI1)
- {
- case LEFTARROW:
- case RIGHTARROW:
- case UPARROW:
- case DOWNARROW:
- return(GI1);
- }
- SetTimer(wait,0L);
- goto OneMin;//goto OneMin;
- }
-
- return(ch);
- }
- else
- {
- if(Whence_The_Logon!=REMOTE_LOGON)
- {
- PurgeLine();
- return(0);
- }
- SetTimer(wait,0L);
- flag=1;
- goto OneMin;
- }
- }
- if(CheckCon())
- {
- AbortIO(TimerMsg);
- WaitIO(TimerMsg);
- WaitIO(ReadConReq);
- ch = (int)conin[0];
- SendIO(ReadConReq);
- if(ch == CSI)
- {
- GI1=CheckCSI();
- switch(GI1)
- {
- case HISTORY:
- return(HISTORY);
- case NO_CARRIER:
- return(GI1);
- case EXITCHAT:
- return(0);
- case 1:
- if(CHATF==1)
- {
- return(13);
- }
- return(0);
- break;
- case 0:
- if(wait==1)
- {
- return(0);
- }
- break;
- case LEFTARROW:
- case RIGHTARROW:
- case UPARROW:
- case DOWNARROW:
- return(GI1);
- }
- SetTimer(wait,0L);
- goto OneMin;
- }
- ChatConFlag=1;
- return(ch);
- }
-
-
- if(CheckIO(TimerMsg))
- {
- WaitIO(TimerMsg);
- if(flag==1)
- {
- if(!Sopt->Toggles[4])SendChar('\07');
- wait=60L;
- SetTimer(wait,0L);
- if(!Sopt->Toggles[4])flag=0;
- goto OneMin;
- }
- return(TIMEOUT);
- }
- SERVERCMD=CheckDoorMsg(1);
- if(SERVERCMD)
- {
- AbortIO(TimerMsg);
- WaitIO(TimerMsg);
- if(ServerCmd)
- {
- switch(ServerCmd)
- {
- case SV_CHAT:
- CHATF=1;
- ChatFlag=!ChatFlag;
- if(ChatFlag==0) { return(0); }
- SetEnvStat(ENV_CHAT);
- if(Chat()==NO_CARRIER)
- {
- return(NO_CARRIER);
- }
-
- break;
- }
- ServerCmd=0;
- }
- ch = (int)serverin[0];
- if(ch == CSI)
- {
- GI1=CheckCSI();
- switch(GI1)
- {
- case HISTORY:
- return(HISTORY);
- case NO_CARRIER:
- return(GI1);
- case EXITCHAT:
- return(0);
- case 1:
- if(CHATF==1)
- {
- return(13);
- }
- return(0);
- break;
- case 0:
- if(wait==1)
- {
- return(0);
- }
- break;
- case LEFTARROW:
- case RIGHTARROW:
- case UPARROW:
- case DOWNARROW:
- return(GI1);
- }
- SetTimer(wait,0L);
- goto OneMin;
- }
- ChatConFlag=1;
- return(ch);
-
- }
- CheckIconifyMsg();
- CheckRexxMessage();
-
-
- }
- return(SUCCESS);
- }