'=========================================================================== ' Subject: DIAL-UP CHAT (ANSWER) Date: 04-22-97 (21:08) ' Author: Mike G. Stewart Code: QB, QBasic, PDS ' Origin: mikegs@juno.com Packet: MODEM.ABC '=========================================================================== 'answer.bas: Dial-Up Chat Server 'Program written by Mike Stewart '(C) 1997 M Stewart 'Public Domain 'I changed the program CONNECT.BAS a lot to make this program. 'This program can be changed a lot. 'Use it to start your own network. 'Just include my name in the program that you write, in the credits or something. 'Have Fun! :-) DECLARE SUB answer () DECLARE SUB Keyscan () DECLARE SUB delay (td!) COMMON SHARED ModemIn$ ON ERROR GOTO Handler ON COM(2) GOSUB GetBuf COM(2) ON PRINT "Press Any Key to Answer Phone." SLEEP answer DO CALL Keyscan ' You're online now. Stay in this loop forever. LOOP Handler: RESUME NEXT GetBuf: InStr$ = INPUT$(LOC(1), #1) DO BackSpace = INSTR(InStr$, CHR$(8)) IF BackSpace THEN MID$(InStr$, BackSpace) = CHR$(29) END IF LOOP WHILE BackSpace DO LineFeed = INSTR(InStr$, CHR$(10)) IF LineFeed THEN InStr$ = LEFT$(InStr$, LineFeed - 1) + MID$(InStr$, LineFeed + 1) END IF LOOP WHILE LineFeed ModemIn$ = RIGHT$(ModemIn$ + InStr$, 10240) PRINT (InStr$); RETURN SUB answer OPEN "COM2:9600,N,8,1" FOR RANDOM AS #1 CLS LOCATE 25, 40: PRINT "ALT-X to exit.." LOCATE 1, 1, 1 PRINT #1, "ATZ" CALL delay(1.25) PRINT #1, "ATS7=45 S0=0 V1 M0" ' modem initialization string CALL delay(1.25) DO CALL delay(1) PRINT "Answering..." PRINT #1, "ata" + CHR$(13) TimeDelay! = TIMER + 40 DO UNTIL TIMER > TimeDelay! CALL Keyscan test = INSTR(RIGHT$(ModemIn$, 20), "CONNECT") IF test THEN result = -1: EXIT DO test = INSTR(RIGHT$(ModemIn$, 5), "BUSY") IF test THEN result = 0: EXIT DO test = INSTR(RIGHT$(ModemIn$, 12), "NO DIALTONE") IF test THEN result = 0: CALL delay(2): EXIT DO test = INSTR(RIGHT$(ModemIn$, 11), "NO CARRIER") IF test THEN result = 0: CALL delay(2): EXIT DO LOOP LOOP UNTIL result FOR t = 1 TO 5 ' It connected! ring the alarm! SOUND 750, 2 SOUND 550, 2 SOUND 650, 2 IF INKEY$ <> "" THEN EXIT FOR NEXT END SUB SUB delay (td!) TimeDelay! = (TIMER + td!) MOD 86400 WHILE TimeDelay! > TIMER: WEND END SUB SUB Keyscan a$ = INKEY$ IF a$ = CHR$(0) + CHR$(45) THEN CLOSE : END PRINT #1, a$; END SUB