;CBBS V3.5.0 CBBSHAYS.ASM - HAYES MODEM ;07/11/81 12:58:51 ; LINKS TO CBBSWORK ; ; O O O O O O O O O O ; O O O O O O O ;CBBS O O O O O O O O O O .ASM ; O O O O O O ; O O O O O O O O ; ;MOD LOG (THRU 3.2 WRITTEN TO "HISTORY") ; ;<< NO FURTHER MODS >> ; ;DC HAYES MODEM BOARD EQUATES ; DCHDAT EQU 80H ;DATA PORT ADDRESS ; ;STATUS INPUT PORT, AND IT'S BITS: ; DCHST EQU DCHDAT+1 ;STATUS PORT ; DCHRI EQU 80H ;RING INDICATE DCHCD EQU 40H ;CARRIER DETECT DCHOE EQU 10H ;OVERFLOW ERR DCHFE EQU 8 ;FRAMING ERROR DCHPE EQU 4 ;PARITY ERROR DCHTRE EQU 2 ;TX REG EMPTY DCHRRF EQU 1 ;RCV REG FILLED ; ;CONTROL OUTPUT PORT 1 AND IT'S BITS: ; DCHCP1 EQU DCHST ;CONTROL PORT 1 ; DCHPI EQU 10H ;PARITY INHIBIT DCHSBS EQU 8 ;STOP BIT SELECT DCH8BT EQU 4+2 ;8 BIT SELECT DCHEPE EQU 1 ;EVEN PARITY ENABLE ; ;CONTROL OUTPUT PORT 2 AND IT'S BITS: ; DCHCP2 EQU DCHST+1 ;CONTROL PORT 2 ; DCHOH EQU 80H ;1=OFF HOOK DCHRID EQU 20H ;1=RING INDICATE DISABLE DCHTST EQU 10H ;1=SELF TEST DCHES EQU 8 ;1=ECHO SUPPRESS DCHMS EQU 4 ;1=ORIG 0=ANS, (MODE SEL) DCHTXE EQU 2 ;1=TRANSMIT ENABLE DCHBRS EQU 1 ;1=300, 0=110 BAUD RATE SELECT ; ; ---- ; ;CONNECT WITH CALLER, AWAIT CARRIER FOR 15 SEC ; CONNECT CALL SET110 ;PICK UP PHONE, 110 BAUD MVI B,15 ;APPROX # SEC. DELAY DELAY LXI H,9A00H ;1 SEC DELAY DELLP IN DCHST ;GET STATUS ANI DCHCD ;CHECK FOR CARRIER JNZ GOTCAR ;EXIT LOOP IF CARRIER FOUND DCX H ;DECR. LOOP COUNT MOV A,H ORA L JNZ DELLP ;DELAYED ANOTHER SECOND. ;MORE SECONDS? DCR B JNZ DELAY ;YES JMP NOCAR ; ;PHASE 1 - LOOK FOR C/R AT EITHER SPEED ; GOTCAR MVI A,10+1 ;10 TRIES FOR C/R STA TRIES ; ;QUIT IF NO C/R HAS BEEN READ AFTER 10 TRIES ; TRY1 LXI H,TRIES DCR M JZ NOCAR ;NO CARRIER CALL SET110 CALL KEYIN ;GET A CHAR CPI CR RZ ;OK. GO WELCOME ABOARD INR A ;LOSS OF CARRIER? JZ NOCAR ;YES CALL SET300 CALL KEYIN ;GET A CHAR CPI CR RZ ;OK. GO WELCOME ABOARD INR A ;LOSS OF CARRIER? JNZ TRY1 ;NO, TRY AGAIN ; ;NO CARRIER FOUND ; NOCAR LXI H,NOCON JMP PRDIS ;PRINT MSG, EXIT TO PROM ; NOCON DB CR,LF DB '++NO C/R SEEN, OR LOSS OF CARRIER' DB CR,LF,' ',0 ; ;BAUD RATE SET SUBROUTINES FOR HAYES MODEM ; ;SET SPEED TO 110 BAUD - PARITY INHIBIT, 2 STOP BITS, ;ANSWER MODE ; SET110 MVI A,DCHPI+DCHSBS+DCH8BT OUT DCHCP1 MVI A,DCHOH+DCHRID+DCHTXE OUT DCHCP2 RET ; ;SET SPEED TO 300 BAUD, PARITY INHIBIT, 1 STOP BIT, ;ANSWER MODE ; SET300 MVI A,DCHPI+DCH8BT OUT DCHCP1 MVI A,DCHOH+DCHRID+DCHTXE+DCHBRS OUT DCHCP2 RET ; ;ROUTINE TO HANG UP PHONE ; HANGUP XRA A OUT DCHCP2 ;HANG UP RET ; ;IF RUNNING "REINIT", AWAIT PHONE RING. ; IF REINIT RINGWT IN DCHST ;INPUT HAYES STATUS PORT ANI DCHRI ;RINGING? JZ START IN SSW ;GO TO START IF REMOTE ANI REMOTE ;..SWITCH TURNED OFF JZ START JMP RINGWT ENDIF ;REINIT ; LINK CBBSWORK ;NEXT .ASM FILE