compusci@aecom.UUCP (Yitz Twersky) (04/19/85)
I recieved this from a friend, and I thought maybe you people can use it. yitz ...{philabs,cucard,pegasus,ihnp4,rocky2}!aecom!twersky ------------------------------------------------------------------------------ 0 REM Terminal program for Macintosh with up/download, 1200 baud, autodial ... 10 REM Overlay to MacTEP v. 1.81 20 REM Overlay by Loftus E. Becker, Jr. - Compuserve 70206,67 30 REM Adds Automatic Dial/Redial (Anchor Mark XII, Hayes Smartmodem), 40 REM viewing disk files, resetting baud rate, and timer functions 50 REM 1010 REM 1020 REM Version 1.81 - 6-Apr-84 1030 REM Dennis F. Brothers - Compuserve 70065,172 - MCI Mail DBROTHERS 1040 REM 1050 REM Copyright (c) 1984 - Brothers Associates, Wayland MA 1060 REM Permission is hereby granted for personal, non-commercial 1070 REM reproduction and use of this program, provided that this 1080 REM notice is included in any copy. 1090 REM 1100 REM Modem connections: 1110 REM Mac Modem 1120 REM 1 1 (Frame Ground) 1130 REM 3,8 7 (Signal Ground) 1140 REM 5 2 (Transmit Data) 1150 REM 6 20 (+12V -> DTR) 1160 REM 7 8 (CTS <- DCD) 1170 REM 9 3 (Receive Data) 1180 REM 1190 REM 1200 CLEAR ,25000: REM Allocate extra memory 1205 CALL TEXTFONT(0): CALL TEXTSIZE (12): CALL TEXTFACE (1): CLS 1207 CALL MOVETO (150,20): PRINT "MacTEP v. 1.81" 1209 CALL MOVETO (160, 150): PRINT "Initializing. . . ." 1210 REM 1220 DEFINT A-Z: REM Default to integers for speed 1230 REM 1240 REM 2000 REM Define constants 2010 REM 2020 BUFFERSIZE=2048 2030 BUFLIM=BUFFERSIZE\4 2040 REM 2050 FALSE=0: TRUE=-1 2060 REM 2070 LF=10: LF$=CHR$(LF) 2080 CR=13: CR$=CHR$(CR) 2090 XON=17: XON$=CHR$(XON) 2100 XOFF=19: XOFF$=CHR$(XOFF) 2110 REM 2120 CMDB=2: CMDB$=CHR$(CMDB) 2130 CMDE=5: CMDE$=CHR$(CMDE) 2140 CMDR=18: CMDR$=CHR$(CMDR) 2150 CMDT=20: CMDT$=CHR$(CMDT) 2155 GOOD$(1)="CONNECT" 2157 BAD$(1) = "ERROR": BAD$(2) = "BUSY": BAD$(3) = "NO CARRIER" 2159 START] = TIMER: FINISH] = TIMER 2160 REM 2170 AIN=-6: AOUT=-7 2180 SB1=&H4000: SB15=&H8000: SB2=&HC000FILE: MACTEPB BAS A1 04/04/85 09:09:44 City University of New York / University Computer Center PAGE 002 2190 PARNONE=&H0: PARODD=&H1000: PAREVEN=&H3000 2200 DB5=&H0: DB6=&H800: DB7=&H400: DB8=&HC00 2210 REM 2220 REM 3000 REM Pre-allocate all variables so arrays don't move 3010 REM 3020 GOSUB 20000 3030 DIM XTABLEARRAY(127) 3040 DIM BUFFERARRAY(BUFFERSIZE/2) 3050 DIM PARAMLIST(39) 3055 DIM PHONENUMBERS$(10,1) 3060 I=0: A=0 3070 TL=0 3080 BR=0: TC=0 3090 L$="": LP]=0: C$="": XL$="" 3100 F$="": FL=0: FP]=0 3105 CHOICE$="": CHOICE=0 3110 TYPEAPPL$="" 3120 XFLAG=FALSE 3130 CRFLAG=FALSE: FLUSH=FALSE 3140 C=0 3150 QUIT=0 3160 REM 3170 CONTROL]=0 3180 TRANSLATE]=0 3190 BPROC]=0 3200 GETFILEINFO]=0 3210 SETFILEINFO]=0 3220 XTABLE]=0 3230 BUFFER]=0: BUFFERT]=0: BUFFERH=0: BUFFERL=0 3240 PARAM]=0 3250 LP]=VARPTR(L$): FP]=VARPTR(F$) 3260 TLP]=0 3270 CRFLAGP]=0: FLUSHP]=0 3280 REM 3290 CONTROL]=VARPTR(CONTROLCODE(0)) 3300 TRANSLATE]=VARPTR(TRANSLATECODE(0)) 3310 BPROC]=VARPTR(BPROCCODE(0)) 3320 GETFILEINFO]=VARPTR(GETFILEINFOCODE(0)) 3330 SETFILEINFO]=VARPTR(SETFILEINFOCODE(0)) 3340 XTABLE]=VARPTR(XTABLEARRAY(0)) 3350 BUFFER]=VARPTR(BUFFERARRAY(0)) 3360 BUFFERH=INT(BUFFER]/65536]): BUFFERT]=BUFFER]-(BUFFERH*65536]) 3370 IF BUFFERT]<32768] THEN BUFFERL=BUFFERT] ELSE BUFFERL=BUFFERT]-65536] 3380 PARAM]=VARPTR(PARAMLIST(0)) 3390 LP]=VARPTR(L$): FP]=VARPTR(F$) 3400 TLP]=VARPTR(TL) 3410 CRFLAGP]=VARPTR(CRFLAG) 3420 FLUSHP]=VARPTR(FLUSH) 3430 REM 3440 REM Initialize the character translation table 3450 REM 3460 FOR I=0 TO 255:POKE XTABLE]+I,0:NEXT I 3470 FOR I=8 TO 13 3480 POKE XTABLE]+I,I: POKE XTABLE]+128+I,IFILE: MACTEPB BAS A1 04/04/85 09:09:44 City University of New York / University Computer Center PAGE 003 3490 NEXT I 3500 POKE XTABLE]+10,0: POKE XTABLE]+128+10,0 3510 FOR I=32 TO 126 3520 POKE XTABLE]+I,I: POKE XTABLE]+128+I,I 3530 NEXT I 3540 REM 3550 REM 4000 REM Initialize and display startup information 4010 REM 4015 CALL TEXTFACE(0) 4020 CALL TEXTSIZE(9): CALL TEXTFONT(4):WIDTH 255 4030 CALL PENNORMAL: CALL SHOWPEN: CALL PENMODE(10) 4040 CLS: PRINT: PRINT: PRINT 4050 PRINT "MacTEP - V1.81 - Copyright (c) 1984, Brothers Associates" 4060 PRINT: PRINT: PRINT 4070 PRINT " CMD-E displays the Menu." 4080 PRINT " CMD-T starts and stops ASCII transmit (upload)." 4090 PRINT " CMD-R starts and stops ASCII receive (download)." 4100 PRINT " CMD-B starts and stops ASCII Basic receive" 4110 PRINT " (lines not beginning with a digit are ignored)." 4120 PRINT: PRINT 4130 REM 4140 REM 5000 REM Set up and OPEN the COM1 port 5010 REM 5020 OPEN "COM1:" AS #1 LEN=BUFFERSIZE 5030 WIDTH #1,255 5040 REM 5050 INPUT "Baud rate: ", BR 5060 TC=(115200]/BR)-2 5070 REM 5080 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I 5090 PARAMLIST(24\2)=AIN 5100 PARAMLIST(26\2)=8 5110 PARAMLIST(28\2)=SB1+PARNONE+DB8+TC 5120 CALL CONTROL](PARAM]) 5130 REM 5140 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I 5150 PARAMLIST(24\2)=AOUT 5160 PARAMLIST(26\2)=8 5170 PARAMLIST(28\2)=SB1+PARNONE+DB8+TC 5180 CALL CONTROL](PARAM]) 5190 REM 5200 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I 5210 PARAMLIST(24\2)=AIN 5220 PARAMLIST(26\2)=9 5230 PARAMLIST(28\2)=BUFFERH 5240 PARAMLIST(30\2)=BUFFERL 5250 PARAMLIST(32\2)=BUFFERSIZE 5260 CALL CONTROL](PARAM]) 5270 REM 5280 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I 5290 PARAMLIST(24\2)=AIN 5300 PARAMLIST(26\2)=10 5310 POKE PARAM]+28,1: REM enable XON/XOFF output handshakeFILE: MACTEPB BAS A1 04/04/85 09:09:44 City University of New York / University Computer Center PAGE 004 5320 POKE PARAM]+29,0: REM disable CTS output handshake 5330 POKE PARAM]+30,XON: REM X-ON handshake character 5340 POKE PARAM]+31,XOFF: REM X-OFF handshake character 5350 POKE PARAM]+32,0: REM no aborts 5360 POKE PARAM]+33,0: REM no events 5370 POKE PARAM]+34,0: REM disable XON/XOFF input flow control 5380 CALL CONTROL](PARAM]) 5390 REM 5400 PRINT: PRINT: PRINT 5410 REM 5420 REM 6000 REM Terminal Mode 6010 REM 6020 CALL PENSIZE(4,1) 6030 XFLAG=FALSE 6040 CALL LINE(0,-4) 6050 IF LOC(1)=0 THEN GOTO 6110 6060 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE 6070 L$=INPUT$(LOC(1),#1) 6080 CALL TRANSLATE](XTABLE],LP],TLP]) 6090 IF TL<>0 THEN CALL LINE(0,4): PRINT LEFT$(L$,TL);: CALL LINE(0,-4) 6100 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$; 6110 C$=INKEY$ 6120 IF C$="" THEN GOTO 6050 6130 IF C$=CMDE$ THEN GOTO 30000 6140 IF C$=CMDB$ THEN CALL LINE(0,4): GOTO 7000 6150 IF C$=CMDR$ THEN CALL LINE(0,4): GOTO 8000 6160 IF C$=CMDT$ THEN CALL LINE(0,4): GOTO 9000 6170 PRINT #1,C$; 6180 GOTO 6050 6190 REM 6200 REM 7000 REM Receive (download) BASIC program 7010 REM 7020 CALL PENSIZE(6,1) 7030 XFLAG=FALSE: CRFLAG=TRUE: FLUSH=FALSE 7040 PRINT: LINE INPUT "BASIC File Name: ",F$ 7050 IF F$="" THEN GOTO 6000 7060 OPEN F$ FOR OUTPUT AS #2 7070 CALL LINE(0,-2) 7080 QUIT=FALSE 7090 WHILE NOT QUIT 7100 IF LOC(1)=0 THEN GOTO 7210 7110 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE 7120 L$=INPUT$(LOC(1),#1) 7130 CALL TRANSLATE](XTABLE],LP],TLP]) 7140 IF TL=0 THEN GOTO 7200 7150 CALL LINE(0,2): PRINT LEFT$(L$,TL);: CALL LINE(0,-2) 7160 CALL BPROC](LP],TLP],CRFLAGP],FLUSHP]) 7170 IF TL=0 THEN GOTO 7200 7180 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE 7190 PRINT #2,LEFT$(L$,TL); 7200 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$; 7210 C$=INKEY$ 7220 IF C$="" THEN GOTO 7250FILE: MACTEPB BAS A1 04/04/85 09:09:44 City University of New York / University Computer Center PAGE 005 7230 IF (C$=CMDB$) OR (C$=CMDR$) THEN QUIT=TRUE: GOTO 7250 7240 PRINT #1,C$; 7250 WEND 7260 CALL LINE(0,2) 7270 CLOSE #2 7280 IF RIGHT$(F$,1)<>":" THEN TYPEAPPL$="MSBAMSBA": GOSUB 10000 7290 PRINT: PRINT "BASIC Receive Ended": PRINT 7300 GOTO 6000 7310 REM 7320 REM 8000 REM Receive (download) ASCII file 8010 REM 8020 CALL PENSIZE(6,1) 8030 XFLAG=FALSE 8040 PRINT: LINE INPUT "Receive File Name: ",F$ 8050 IF F$="" THEN GOTO 6000 8060 OPEN F$ FOR OUTPUT AS #2 8070 CALL LINE(0,-2) 8080 QUIT=FALSE 8090 WHILE NOT QUIT 8100 IF LOC(1)=0 THEN GOTO 8190 8110 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE 8120 L$=INPUT$(LOC(1),#1) 8130 CALL TRANSLATE](XTABLE],LP],TLP]) 8140 IF TL=0 THEN GOTO 8180 8150 CALL LINE(0,2): PRINT LEFT$(L$,TL);: CALL LINE(0,-2) 8160 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE 8170 PRINT #2,LEFT$(L$,TL); 8180 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$; 8190 C$=INKEY$ 8200 IF C$="" THEN GOTO 8230 8210 IF (C$=CMDB$) OR (C$=CMDR$) THEN QUIT=TRUE: GOTO 8230 8220 PRINT #1,C$; 8230 WEND 8240 CALL LINE(0,2) 8250 CLOSE #2 8260 IF RIGHT$(F$,1)<>":" THEN TYPEAPPL$="TEXTMACA": GOSUB 10000 8270 PRINT: PRINT "Receive Ended": PRINT 8280 GOTO 6000 8290 REM 8300 REM 9000 REM Transmit (upload) ASCII file 9010 REM 9020 CALL PENSIZE(2,1) 9030 XFLAG=FALSE 9040 PRINT: LINE INPUT "Transmit File Name: ",F$ 9050 IF F$="" THEN GOTO 6000 9060 OPEN F$ FOR INPUT AS #2 9070 CALL LINE(0,-6) 9080 QUIT=FALSE 9090 WHILE NOT (EOF(2) OR QUIT) 9100 IF LOC(1)<>0 THEN GOTO 9150 9110 LINE INPUT #2,XL$ 9120 IF XL$<>"" THEN FOR I=1 TO LEN(XL$): PRINT #1,MID$(XL$,I,1);: NEXT I 9130 PRINT #1,CR$;FILE: MACTEPB BAS A1 04/04/85 09:09:44 City University of New York / University Computer Center PAGE 006 9140 IF LOC(1)=0 THEN GOTO 9200 9150 IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE 9160 L$=INPUT$(LOC(1),#1) 9170 CALL TRANSLATE](XTABLE],LP],TLP]) 9180 IF TL<>0 THEN CALL LINE(0,6): PRINT LEFT$(L$,TL);: CALL LINE(0,-6) 9190 IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$; 9200 C$=INKEY$ 9210 IF C$="" THEN GOTO 9240 9220 IF C$=CMDT$ THEN QUIT=TRUE: GOTO 9250 9230 PRINT #1,C$; 9240 IF LOC(1)<>0 THEN GOTO 9150 9250 WEND 9260 CALL LINE(0,6) 9270 CLOSE #2 9280 PRINT: PRINT "Transmit Ended": PRINT 9290 GOTO 6000 9300 REM 9310 REM 10000 REM Subroutine to set type and application of a file 10010 REM 10020 FL=LEN(F$) 10030 F$=CHR$(FL)+F$ 10040 FOR I=0 TO 79: POKE PARAM]+I,0: NEXT I 10050 POKE PARAM]+19,PEEK(FP]+2) 10060 POKE PARAM]+20,PEEK(FP]+3) 10070 POKE PARAM]+21,PEEK(FP]+4) 10080 CALL GETFILEINFO](PARAM]) 10090 FOR I=1 TO 8 10100 POKE PARAM]+31+I,ASC(MID$(TYPEAPPL$,I,1)) 10110 NEXT I 10120 CALL SETFILEINFO](PARAM]) 10130 RETURN 10140 REM 10150 REM 20000 REM Set up Control ROM call 20010 REM 20020 DIM CONTROLCODE(25) 20030 RESTORE 20100 20040 I=0 20050 READ A:CONTROLCODE(I)=A 20060 I=I+1 20070 IF A<>-1 THEN GOTO 20050 20080 REM 20090 REM 20100 REM Machine language code to invoke Control ROM function 20110 REM 20120 DATA &H4E56, &HFFF8, &H48EE, &H0101, &HFFF8, &H206E, &H0008, &HA004 20130 DATA &H4CEE, &H0101, &HFFF8, &H4E5E, &H4E75 20140 DATA -1 20150 REM 20160 REM 21000 REM Set up Translate ML routine 21010 REM 21020 DIM TRANSLATECODE(50) 21030 RESTORE 21100FILE: MACTEPB BAS A1 04/04/85 09:09:44 City University of New York / University Computer Center PAGE 007 21040 I=0 21050 READ A:TRANSLATECODE(I)=A 21060 I=I+1 21070 IF A<>-1 THEN GOTO 21050 21080 REM 21090 REM 21100 REM Machine language code to translate strings 21110 REM 21120 DATA &H4E56, &HFFE8, &H48EE, &H0707, &HFFE8, &H226E, &H000C, &H4281 21130 DATA &H1219, &HE181, &H1219, &H4282, &H1419, &HE182, &H1419, &HE182 21140 DATA &H1419, &H2042, &H2248, &H246E, &H0010, &H4282, &H4A41, &H6712 21150 DATA &H4280, &H1018, &H12B2, &H0000, &H6704, &H5289, &H5242, &H5341 21160 DATA &H66F0, &H206E, &H0008, &H3082, &H4CEE, &H0707, &HFFE8, &H4E5E 21170 DATA &H4E75 21180 DATA -1 21190 REM 21200 REM 22000 REM Set up Process BASIC ML routine 22010 REM 22020 DIM BPROCCODE(100) 22030 RESTORE 22100 22040 I=0 22050 READ A:BPROCCODE(I)=A 22060 I=I+1 22070 IF A<>-1 THEN GOTO 22050 22080 REM 22090 REM 22100 REM Machine language code to process BASIC program 22110 REM 22120 DATA &H4E56, &HFFE0, &H48EE, &H1F07, &HFFE0, &H206E, &H0014, &H5488 22130 DATA &H4280, &H1018, &HE180, &H1018, &HE180, &H1018, &H2040, &H2248 22140 DATA &H246E, &H0010, &H266E, &H000C, &H286E, &H0008, &H3212, &H4282 22150 DATA &H4A41, &H6746, &H1018, &H0C00, &H000D, &H661A, &H4A54, &H6708 22160 DATA &H4254, &H36BC, &H0001, &H602E, &H4A53, &H662A, &H36BC, &H0001 22170 DATA &H12C0, &H5242, &H6020, &H4A54, &H661C, &H4A53, &H6712, &H0C00 22180 DATA &H0030, &H6D06, &H0C00, &H0039, &H6F06, &H38BC, &H0001, &H6006 22190 DATA &H4253, &H12C0, &H5242, &H5341, &H66BA, &H3482, &H4CEE, &H1F07 22200 DATA &HFFE0, &H4E5E, &H4E75 22210 DATA -1 22220 REM 22230 REM 23000 REM Set up GetFileInfo ROM call 23010 REM 23020 DIM GETFILEINFOCODE(25) 23030 RESTORE 23100 23040 I=0 23050 READ A: GETFILEINFOCODE(I)=A 23060 I=I+1 23070 IF A<>-1 THEN GOTO 23050 23080 REM 23090 REM 23100 REM Machine language code to invoke GetFileInfo ROM function 23110 REM 23120 DATA &H4E56, &HFFF8, &H48EE, &H0101, &HFFF8, &H206E, &H0008, &HA00C 23130 DATA &H4CEE, &H0101, &HFFF8, &H4E5E, &H4E75FILE: MACTEPB BAS A1 04/04/85 09:09:44 City University of New York / University Computer Center PAGE 008 23140 DATA -1 23150 REM 23160 REM 24000 REM Set up SetFileInfo ROM call 24010 REM 24020 DIM SETFILEINFOCODE(25) 24030 RESTORE 24100 24040 I=0 24050 READ A: SETFILEINFOCODE(I)=A 24060 I=I+1 24070 IF A<>-1 THEN GOTO 24050 24080 REM 24090 REM 24100 REM Machine language code to invoke SetFileInfo ROM function 24110 REM 24120 DATA &H4E56, &HFFF8, &H48EE, &H0101, &HFFF8, &H206E, &H0008, &HA00D 24130 DATA &H4CEE, &H0101, &HFFF8, &H4E5E, &H4E75 24140 DATA -1 24150 REM 24160 REM 25000 RETURN 25010 REM 29990 REM 30000 REM Main Menu Routine 30010 REM 30015 REM *** THIS LINE GAVE TROUBLE - OUT *** PRINT #1, XOFF$ 30020 CLS: CALL MOVETO(150, 20): PRINT " MacTEP 1.81 Menu": PRINT: PRINT 30030 PRINT TAB (12);"1. Autodial Functions." 30040 PRINT TAB (12);"2. Reset Baud Rate (currently "; BR; ")." 30050 PRINT TAB (12);"3. View Disk File." 30060 PRINT TAB (12);"4. Exit to Basic." 30070 PRINT TAB (12);"5. Exit to System." 30080 PRINT TAB (12);"6. Timer Functions." 30085 PRINT TAB (12);"7. Return to Terminal Mode." 30090 PRINT: PRINT 30100 PRINT TAB (10);"Enter your selection: "; 30110 CHOICE$=INKEY$: IF CHOICE$="" THEN GOTO 30110 30120 PRINT CHOICE$: CHOICE=VAL(CHOICE$) 30130 IF CHOICE < 1 THEN PRINT "Use number between 1 and 7.":GOTO 30100 30135 IF CHOICE > 7 THEN PRINT "Use number between 1 and 7.":GOTO 30100 30140 ON CHOICE GOTO 31000, 32000, 33000, 34000, 35000, 36000, 37000 31000 REM Autodial Routine 31010 RESTORE 31050 : REM In case we come back here 31015 I=1 31020 READ PHONENUMBERS$(I,0) 31025 IF VAL(PHONENUMBERS$(I,0))<0 THEN TL=I-1: GOTO 31060 31030 READ PHONENUMBERS$(I,1):I=I+1: GOTO 31020 31050 REM 31051 DATA Washington Apple Pi, 986-8085 31052 DATA CompuServe, 1-254-7113 31053 DATA Tymshare, 1-703-691-8200 31059 DATA -1 31060 CLS: CALL MOVETO(150,20): PRINT "Phone Number Menu":PRINT:PRINT 31070 FOR I=1 TO TL: PRINT I; TAB(15); PHONENUMBERS$(I,0); 31075 PRINT TAB(43); PHONENUMBERS$(I,1): NEXT IFILE: MACTEPB BAS A1 04/04/85 09:09:44 City University of New York / University Computer Center PAGE 009 31180 PRINT TL+1, "Dial a number to be entered.": PRINT: PRINT 31190 PRINT TAB (12);"Enter your choice: "; 31200 C$=INKEY$:IF C$="" THEN GOTO 31200 ELSE C=VAL(C$): PRINT C$ 31210 IF C<1 THEN PRINT CHR$(7): GOTO 31060 31220 IF C =< TL THEN F$=PHONENUMBERS$(C,1) ELSE LINE INPUT "Phone number: ", F$ 31230 C$="": PRINT #1, "ATM1DT "+F$ 31240 IF LOC(1) = 0 THEN GOTO 31290 31250 C=ASC(INPUT$(1,1)) AND &H7F 31260 PRINT CHR$(C);: IF C>28 THEN C$= C$+CHR$(C) 31290 IF INSTR(C$,BAD$(1)) OR INSTR(C$,BAD$(2)) THEN GOTO 31230 31295 IF INSTR(C$,BAD$(3)) THEN GOTO 31230 31300 IF INSTR(C$, GOOD$(1)) THEN START] = TIMER: GOTO 6000 31310 L$=INKEY$: IF L$=CMDE$ THEN GOTO 30000 ELSE GOTO 31240 32000 CLOSE #1: GOTO 4000 33000 LINE INPUT "Name of file to read: ", F$: IF F$="" THEN 30000 33010 ON ERROR GOTO 33500 33020 OPEN F$ FOR INPUT AS #2 33030 WHILE NOT EOF(2) 33040 LINE INPUT #2, XL$: PRINT XL$ 33050 WEND 33055 CLOSE #2: PRINT: PRINT "Press any key to continue. " 33057 C$=INKEY$: IF C$="" THEN 33057 33060 ON ERROR GOTO 0: GOTO 30000 33500 CLOSE #2: PRINT "No such file. Available files are:": FILES 33510 RESUME 33000 34000 CLOSE: CALL TEXTFONT(1): CALL TEXTFACE(0): CALL TEXTSIZE(12) 34005 PRINT "Back to Basic.": END 35000 CLOSE: SYSTEM 36000 REM Timer Functions 36010 CLS: CALL MOVETO(150, 50): PRINT "Timer functions":PRINT: PRINT 36020 PRINT TAB (12); "1. Display Elapsed Time." 36030 PRINT TAB (12); "2. Reset Starting Time." 36040 PRINT: PRINT: PRINT TAB (12); " Date is "; DATE$ 36045 PRINT TAB (12); " Time is "; TIME$: PRINT: PRINT 36050 PRINT TAB (12); "Enter your selection: "; 36060 C$=INKEY$: IF C$="" THEN 36060 ELSE PRINT C$ 36070 IF VAL(C$)<1 OR VAL(C$)>2 THEN PRINT CHR$(7): GOTO 36010 36080 ON VAL(C$) GOTO 36100, 36200 36100 FINISH] = TIMER: PRINT: PRINT 36110 ELAPSEDMIN% = INT((FINISH] - START]) /60*100) /100 36115 PRINT TAB (10); "Elapsed time is "; ELAPSEDMIN% ; " minutes." 36120 FOR I = 1 TO 2000: NEXT I: GOTO 30000 36200 START] = TIMER: PRINT "Timer reset": FOR I = 1 TO 2000: NEXT I: GOTO 30000 37000 PRINT #1, XON$: GOTO 6000