10 DIM SW(26):FOR I=1 TO 26:READ X:SW(I)=X:NEXT I 15 DATA 1500,0,0,1410,25,1340,30,1100,0,0,0,0,1180,0,0,1300,0,0,110,1330,500,0,1320,0,0,0 20 DIM A$(17),D$(15),T$(133),R$(15):D$="D :":S=ADR(D$)+200:C=764:O=53279:Z=0:F=FRE(Z)-125 25 L=S:WF=Z:NB=Z 30 SETCOLOR 2,8,2:SETCOLOR 4,8,2:? "}" 35 POKE 82,Z:? ," Terminal Mode":GOSUB 1000:L=S:WF=Z:NB=Z 40 GOSUB 290:TRAP O 50 STATUS #2,V:IF PEEK(747) THEN X=USR(1648):POKE L,PEEK(208):L=L+WF:GOTO 50 55 IF PEEK(C)=156 THEN GOSUB 400 60 IF PEEK(C)<>255 THEN X=USR(1701) 65 CON=PEEK(O) 70 IF L-1>F+S THEN 100 80 IF CON=6 THEN GOSUB 300 85 IF CON=3 THEN GOTO 1200 90 GOTO 50 100 GOSUB 350 110 ? :? "ENTER DOWNLOAD FILENAME "; 120 TRAP 38:INPUT A$:TRAP O:IF LEN(A$)=Z THEN 40 130 IF LEN(A$)<3 THEN A$(LEN(A$)+1)=" " 140 IF A$(1,1)="D" AND (A$(2,2)=":" OR A$(3,3)=":") THEN D$=A$:GOTO 160 150 D$="D1:":D$(4)=A$ 160 TRAP 180:CLOSE #1:CLOSE #2:OPEN #3,8,Z,D$ 165 SETCOLOR 2,8,2:SETCOLOR 4,8,2 170 X=USR(1539,3,S,L-S+1):CLOSE #3:? :? ," I/O COMPLETE":? ,"File Preserved":FOR I=1 TO 222:NEXT I 173 IF D$="E:" THEN ? :? "Press RETURN";:INPUT A$ 175 GOTO 1200 180 GOSUB 700:? "TRY AGAIN":POKE C,255:A=Z:GOSUB 1000:GOTO 50 290 POKE C,255:RETURN 300 IF WF THEN WF=Z:? "STOP ";:GOTO 320 310 WF=1:NB=NB+WF:? "BLOCK # ";NB;" BYTES FREE=";F+S-1-L:? "START "; 320 ? "FILLING BUFFER" 350 IF PEEK(O)<>7 THEN 350 360 RETURN 400 CLOSE #2:OPEN #2,13,Z,"R:" 410 XIO 34,#2,2,Z,"R:" 420 FOR I=1 TO 200:NEXT I 430 XIO 34,#2,3,Z,"R:" 435 XIO 40,#2,Z,Z,"R:" 440 RETURN 500 TRAP 690:? "ENTER UPLOAD FILENAME";:INPUT A$:IF LEN(A$)=Z THEN 1200 510 IF LEN(A$)<3 THEN A$(LEN(A$)+1)=" " 520 IF A$(1,1)="D" AND (A$(2,2)=":" OR A$(3,3)=":") THEN D$=A$:GOTO 540 530 D$="D1:":D$(LEN(D$)+1)=A$ 540 TRAP 690:CLOSE #2:CLOSE #3:OPEN #3,4,Z,D$:NOTE #3,SEC,BYTE:CLOSE #3:GOSUB 1000 545 OPEN #4,8,0,"S:":SETCOLOR 2,8,2:SETCOLOR 4,8,2:? "}" 550 IF PEEK(O)<>7 THEN 1200 560 CLOSE #2:OPEN #3,4,Z,D$:POINT #3,SEC,BYTE:INPUT #3;T$:NOTE #3,SEC,BYTE:GOSUB 1000:? #2;T$ 565 I=Z:IF ECHO<=Z THEN ? T$:POKE 77,0 575 IF DF=Z THEN 585 580 FOR I=0 TO 10*DF:NEXT I 585 STATUS #2,A:IF A<>1 THEN GOSUB 720:GOTO 1200 590 IF FLOW=Z THEN 550 600 A=PEEK(747)+256*PEEK(748):IF A>Z THEN 630 610 IF FLOW>=Z THEN 550 615 IF PEEK(O)<>7 THEN 1200 620 I=I+1:IF I<222 THEN 585 625 ? "No prompt received. Sending next line":? "Press OPTION to abort.":GOTO 550 630 FOR I=1 TO A:GET #2,X 635 IF ECHO>=Z THEN PUT #4,X:POKE 77,0 640 IF FLOW=-1 AND X=FLON THEN POP :GOTO 550 650 IF FLOW>Z AND X=FLOW THEN POP :GOTO 670 660 NEXT I:IF FLOW>=Z THEN 550 665 IF FLOW=-1 THEN 600 667 ? "INTERNAL ERROR 667":STOP 670 GET #2,X:IF X<>FLON THEN 670 680 GOTO 550 690 GOSUB 700:GOTO 1200 700 TRAP O:A=PEEK(195):IF A=136 THEN ? ,"Operation complete":POP :GOTO 30 720 POSITION 2,PEEK(84):? " ERROR ";A;" "; 740 IF A=144 THEN ? "Device done error":GOTO 900 750 IF A=164 THEN ? "Disk links scrambled":GOTO 900 760 IF A=170 THEN ? "Incorrect file name":GOTO 900 770 IF A=130 THEN GRAPHICS Z:? :? "850 INTERFACE NOT BOOTED":? "REBOOT AND TRY AGAIN":END 780 IF A=138 THEN ? "DEVICE TIMEOUT, TURN ON DEVICE":GOTO 900 790 IF A=162 THEN ? "DISK FULL":GOTO 900 800 IF A=165 THEN ? "INVALID FILENAME, ":GOTO 900 810 IF A=167 THEN ? "LOCKED FILE, ":GOTO 900 820 IF A=169 THEN ? "DIRECTORY FULL":GOTO 900 890 ? " AT LINE ";PEEK(186)+256*PEEK(187) 900 FOR I=1 TO 222:NEXT I:RETURN 1000 CLOSE #1:CLOSE #2:CLOSE #3 1010 OPEN #1,4,Z,"K:":OPEN #2,13,Z,"R:":XIO 38,#2,PEEK(209),Z,"R:":XIO 40,#2,Z,Z,"R:":RETURN 1100 CLOSE #5:TRAP 1160:OPEN #5,4,0,"D:ATERMHLP.TXT":? "}" 1110 POKE 195,1:TRAP 1130:INPUT #5,T$:? T$:IF LEN(T$)<5 THEN 1110 1120 IF T$(1,5)<>"*****" THEN 1110 1130 A=PEEK(195):? ,"Press RETURN ";:INPUT T$:? "}":IF A=1 THEN 1110 1140 IF A<>136 THEN ? "ERROR ";A;" READING INSTRUCTION FILE" 1150 TRAP OFF:CLOSE #5:GOTO 1200 1160 ? "ERROR: Can't find TERMINAL.HLP":FOR I=1 TO 155:NEXT I:GOTO 1150 1180 RUN "D:ATERM." 1200 CLOSE #1:CLOSE #2:CLOSE #3:CLOSE #4:CLOSE #5:SETCOLOR 2,8,2:SETCOLOR 4,8,2:? "}","Options" 1211 ? "A Print disk directory" 1214 ? "D Dump download buffer to":? " D:DUMPBUFF.SAV" 1215 ? "E Empty downloaded buffer" 1216 ? "F Fix upload parameters" 1217 ? "G Go to terminal mode" 1218 ? "H Print Help file" 1223 ? "M Reset modem/translation options" 1226 ? "P Print hardcopy of downloaded file" 1229 ? "S Store dowloaded file to disk" 1230 ? "T Type downloaded file on screen" 1231 ? "U Upload file" 1233 ? "W Write downloaded buffer to casette" 1260 CLOSE #1:OPEN #1,4,Z,"K:":TRAP 1200 1270 ? ,"Option?";:GET #1,I:? 1280 GOTO SW(I-64) 1300 D$="P:":GOTO 160 1320 D$="C:":GOTO 160 1330 D$="E:":GOTO 160 1340 ? "Echo","-1 Output":? ," 0 Both":? ," 1 Prompt/echo":INPUT ECHO 1342 ? "Send line only when prompted (Y/N)";:INPUT A$:IF LEN(A$)=0 THEN 1342 1344 IF A$(1,1)="N" THEN 1360 1346 IF A$(1,1)<>"Y" THEN 1342 1348 FLOW=-1:DF=Z 1350 ? :? "Decimal value of prompt character":? "(ATASCII CR=155, X-ON=17)";:INPUT A$ 1352 IF LEN(A$)=0 THEN 1350 1354 FLON=VAL(A$):GOTO 1200 1355 DF=VAL(A$) 1360 ? :? "End of line delay factor (UNIX=22)";:INPUT A$:IF LEN(A$)=0 THEN DF=0:GOTO 1360 1362 DF=VAL(A$) 1365 ? :? "Decimal value of character sent to":? "stop Atari (X-OFF=19)";:INPUT A$ 1367 IF LEN(A$)=0 THEN FLOW=0:GOTO 1370 1368 FLOW=VAL(A$) 1370 ? :? "Decimal value of character sent to":? "restart Atari(X-ON=17)";:INPUT A$ 1375 IF LEN(A$)=0 THEN FLON=0:GOTO 1200 1380 FLON=VAL(A$) 1390 GOTO 1200 1410 D$="D:DUMPBUFF.SAV":L=F+S-1:GOTO 160 1500 TRAP 1500:? "Drive number ";:INPUT X:CLOSE #1:CLOSE #2:CLOSE #3 1510 D$="D :*.*":D$(2,2)=STR$(X):OPEN #1,6,0,D$ 1520 TRAP 1530:INPUT #1,A$:? A$:GOTO 1520 1530 IF A$(10,11)<>"SE" THEN ? " free sectors." 1540 ? "Press RETURN";:INPUT A$:GOTO 1200