1 ' Copyright 1983 2 ' William P. Steinberg 3 ' 156 West 44th Street 4 ' New York, NY 10036 5 ' (212) 921-0663 6 ' 7 ' ATEX rev 2 8 ' 9 ' 10 ' 20 ' init 30 ' 40 MAXFILES=2 50 ALARM$="07:30:00" 60 PH$="5551212<>" 70 IN$=CHR$(27)+"p" 80 NO$=CHR$(27)+"q" 90 EX$=CHR$(20) 100 FORX=1TO40:AR$=AR$+CHR$(152):NEXT 110 KEY1,"READ":KEY2,"KILL":KEY3,"ALRM" 120 KEY4,"PH #":KEY5,"CALL":KEY8,"MENU" 130 ONKEYGOSUB830,980,1090,1230,330,,,1370 140 ONMDMGOSUB510 150 GOSUB1530 160 ' 170 ' main menu loop 180 ' 190 PRINT@123,TIME$ 200 X=X+1:IFX>1THENX=0 210 PRINT@(135),CHR$(144+X); 220 FORY=1TO20:NEXT 230 PRINT@(145),CHR$(144+X); 240 FORY=1TO20:NEXT 250 PRINT@(215),CHR$(144+X); 260 FORY=1TO20:NEXT 270 PRINT@(225),CHR$(144+X); 280 FORY=1TO20:NEXT 290 GOTO160 300 ' 310 ' time$ interrupt, dial routine 320 ' 330 TIME$OFF 340 KEYOFF:SCREEN0,0 350 CLS 360 PRINT@280,IN$+"Calling ATEX:"+NO$+" "; 370 M=VARPTR(PH$) 380 AD=PEEK(M+1)+(PEEK(M+2)*256) 390 CALL21200 400 CALL21293,0,AD 410 CLS 420 OPEN"mdm:7I1E"FORINPUTAS1 430 OPEN"ram:data.do"FORAPPENDAS2 440 MDMON 450 FLAG=FLAG+1 460 IFRAGOTO780 470 IFFLAG=4125GOTO620ELSEGOTO450 480 ' 490 ' mdm: interrupt 500 ' 510 MDMSTOP 520 FLAG=0 530 XX$=INPUT$(1,1) 540 IFXX$=EX$THENRA=-1:RETURN 550 PRINT#2,XX$; 560 PRINTXX$; 570 MDMON 580 RETURN 590 ' 600 ' timeout routine 610 ' 620 MDMOFF 630 CALL21179 640 FLAG=0 650 CLOSE1 660 PRINT#2,CHR$(13)+CHR$(10)+IN$+"Timeout occured on "+DATE$+" at "+TIME$ 670 IFFFGOTO720 680 PRINT#2,"Trying again..."+NO$ 690 FF=-1 700 CLOSE 710 GOTO330 720 PRINT#2,"Giving up after two timeouts"+NO$ 730 CLOSE 740 GOSUB1530:RETURN 750 ' 760 ' clean signoff routine 770 ' 780 MDMOFF 790 PRINT#2,CHR$(13)+CHR$(10)+IN$+AR$; 800 PRINT#2,"Message Received on "+DATE$+" at "+TIME$+NO$ 810 CLOSE:CALL21179 820 GOSUB1530:RETURN 830 ' 840 ' key1 interrupt 850 ' 860 TIME$STOP:KEYOFF:CLS:SCREEN0,0 870 CLOSE 880 ONERRORGOTO960 890 OPEN"ram:data.do"FORINPUTAS1 900 OPEN"lcd:"FOROUTPUTAS2 910 IFEOF(1)GOTO950 920 AB$=INPUT$(1,1) 930 PRINT#2,AB$; 940 GOTO910 950 CLOSE:FORY=1TO1000:NEXT:GOSUB1530:RETURN 960 CLS 970 PRINT@130,IN$+"NO DATA FILE ON DISK"+NO$:RESUME950 980 ' 990 ' key2 interrupt 1000 ' 1010 TIME$STOP:KEYOFF:SCREEN0,0:CLS 1020 FORY=1TO100:A$=INKEY$:NEXT 1030 PRINT@40,"Erase the DATA file (y/n)?"; 1040 A$=INPUT$(1) 1050 ONERRORGOTO1070 1060 IFA$="Y"ORA$="y"THENKILL"ram:data.do":GOSUB1530:RETURNELSEGOSUB1530:RETURN 1070 GOSUB1530:RESUME1080 1080 RETURN 1090 ' 1100 ' key3 interrupt 1110 ' 1120 TIME$STOP:KEYOFF:SCREEN0,0:CLS 1130 FORY=1TO100:B$=INKEY$:NEXT 1140 PRINT@40,"The current alarm time is: "+ALARM$ 1150 PRINT@80,"Enter new time (hh:mm:ss)"; 1160 INPUTB$:IFB$=""GOTO1220 1170 TA$=MID$(B$,3,1):TB$=MID$(B$,6,1) 1180 IFLEN(B$)<>8THENB$="":GOTO1150 1190 IFMID$(B$,3,1)<>":"THENB$="":GOTO1150 1200 IFMID$(B$,6,1)<>":"THENB$="":GOTO1150 1210 ALARM$=B$ 1220 GOSUB1530:RETURN 1230 ' 1240 ' key4 interrupt 1250 ' 1260 TIME$STOP:KEYOFF:SCREEN0,0:CLS 1270 FORY=1TO100:A$=INKEY$:NEXT 1280 PA$=LEFT$(PH$,(LEN(PH$)-2)) 1290 PRINT@40,"The current phone # is ";+PA$ 1300 PRINT@80,"Enter a new number ->"; 1310 INPUTA$ 1320 IFA$=""GOTO1360 1330 IFLEN(A$)<7THENA$="":GOTO1300 1340 A$=A$+"<>" 1350 PH$=A$ 1360 GOSUB1530:RETURN 1370 ' 1380 ' key8 interrupt 1390 ' 1400 CLOSE 1410 SCREEN0,0 1420 MAXFILES=1 1430 CALL21179 1440 CALL23164,0,23366 1450 CALL27795 1460 KEYOFF 1470 TIME$OFF 1480 MDMOFF 1490 MENU 1500 ' 1510 ' screen, flag, & interrupt entry 1520 ' 1530 CLS:SCREEN0,0 1540 FORY=5TO20 1550 LINE(0,Y)-(83,Y) 1560 LINE(161,Y)-(239,Y) 1570 NEXT 1580 LINE(83,20)-(161,50),1,B 1590 PRINT@41,IN$+"Current Time" 1600 PRINT@68,"Log-On Time"+NO$ 1610 LINE(6,17)-(76,17),0 1620 LINE(168,17)-(232,17),0 1630 PRINT@150,ALARM$ 1640 PRINT@177,"NEWSDAY" 1650 SCREEN0,1 1660 ONTIME$=ALARM$GOSUB330 1670 RA=0:FLAG=0:FF=0:TIME$ON:KEYON 1680 RETURN