10 REM>CXTerm35 90 MODE&87:IFFNB(0,1,0)>5:PRINT"Calling Basic version":CHAIN"BXTerm" 100 IFFNR(130,0,0)<>&FFFF:PRINT"I/O Processor Only":END 110 OSCLI"FX229,1":OSCLI"FX7,7":OSCLI"FX8,7":U%=FALSE:h%=&3800:M%=TOP+40:IF!M%=TRUE:FORA%=M%+8TOM%+8+M%!4-1:VDU?A%:NEXT:M%=A% 150 IF!M%=TRUE:FORA%=0TOM%!4-1:A%?&9A0=M%?(A%+8):NEXT:U%=&9AE:M%=M%+A%+8 160 IF!M%=TRUE:FORA%=0TOM%!4-1STEP4:A%!h%=M%!(A%+8):NEXT:M%=M%+A%+8 170 MODE&80-3*(HIMEM<&8000):HIMEM=h%:IFU%:A%=78:CALLU% 180 I%=0:L%=0:ONERRORREPORT:PRINTERL:PROCH:END 190 IFU%=0:OSCLI"BUFFER SERIN":OSCLI"LOAD _TERM":OSCLI"LOAD _FTP" 200 m%=h%:o%=h%+3:p%=h%+6:w%=h%+9:PROCG:`%=&780:q%=&7C0:CALLm%:CLS:E$="0.35":i%=FALSE:A%=FN_80:ONERRORIFFNM:PROCH:END 230 IFi%:A%=FN_81 240 X%=q%:Y%=X%DIV256:REPEATUNTILFNO(USRo%AND&FF):END 260 DEFFNM:OSCLI"FX3":REPORT:IFERR<128ANDERR<>17:PRINT" at line ";ERL; 270 IFc%:c%=FALSE:OSCLI"FX2,1":OSCLI"FX3,1":PROCB:OSCLI"FX3":*FX2,2 280 PROCE:PRINT:=INKEY-1 310 DEFFNO(A%):IFPOS:PRINT 320 =EVAL("FN_"+STR$~A%) 330 DEFFN_80:PRINT"XTerm C"E$" 24-Jan-1998 (C)J.G.Harston":PRINT"f0=Help f1=*Command f2=Baud f5=Download f6=Upload f7=MODE 7 f8=MODE 0 f9=Exit"':=0 350 DEFFN_81:OSCLI"FX229":i%=TRUE:REPEATINPUTLINE"="A$:OSCLIA$:UNTILA$="":OSCLI"FX229,1":i%=FALSE:=0 360 DEFFN_82:INPUT"Baud rate: "A$:IFA$="":=0 370 A%=(LN(VALA$DIV75)/LN2):OSCLI"FX7,"+STR$A%:OSCLI"FX8,"+STR$A%:=0 380 DEFFN_83:W%=NOTW%:PRINT"Debug: "FNP(W%):=0 390 DEFFN_84:J%=(J%EOR&480)EOR(((J%AND&FF)=0)AND&1000):PRINT"Tx size: ";J%AND&FFF;" CRC:"FNP((J%AND&1000)<>0):=0 400 DEFFN_85:PROCM:=0 410 DEFFN_86:PROCI:=0 420 DEFFN_87:VDU22,&87:=0 430 DEFFN_88:VDU22,&80:=0 440 DEFFN_89:PRINT"Exit":PROCH:=TRUE 450 DEFFN_8A:=0 460 DEFFN_8B:=0 470 DEFFN_8C:=0 480 DEFFN_8D:=0 490 DEFFN_8E:=0 500 DEFFN_8F:=0 530 DEFFNB(A%,X%,Y%):=((USR&FFF4)AND&FF00)DIV256 540 DEFFNR(A%,X%,Y%):=((USR&FFF4)AND&FFFF00)DIV256 550 DEFPROCN(A%,C%,D%,N%):?X%=C%:X%!1=D%:X%!5=N%:X%!9=PTR#C%:CALL&FFD1:ENDPROC 560 DEFFND(A$,A%):$`%=A$:?X%=`%:X%?1=`%DIV256:=(USR&FFDD)AND&FF 570 DEFPROCH:OSCLI"FX229":OSCLI"FX225,1":OSCLI"FX2":OSCLI"FX3":PROCE:PROCJ:ENDPROC 580 DEFPROCE:IFI%:A%=I%:I%=0:CLOSE#A% 590 IFL%:A%=L%:L%=0:CLOSE#A% 600 ENDPROC 670 DEFPROCG:c%=FALSE:L=2:W%=FALSE:J=&86:J%=&80:B=0:M=1:N=2:H=4:K=6:O=21:I=24:Q=26:G=-1:A=1:C=2:D=6:F=12:E=27:DIMO%1023,A$(7):FORz%=0TO7:READA$(z%):NEXT:ENDPROC 710 DATA Ok,Bad data,No data,Bad sequence,Remote abort,Local abort 720 DATA Can't open file,No signal 740 DEFFNE:PRINT"(T)ext or (B)inary? ";:REPEATA%=GETAND&DF:UNTILINSTR("TB",CHR$A%):VDUA%:=A%=ASC"T" 750 DEFFNP(A%)=MID$("OFFON",-3*A%+1,3) 760 DEFFNI(A%):IFA%<0:="?"ELSE=A% 770 DEFFNJ(A%):=LEFT$($A%,INSTR($A%,CHR$0)-1) 820 DEFPROCA(A$,A%):OSCLI"FX3":PRINTCHR$6;CHR$13;A$;SPC((9-LENA$)AND(LENA$<10))" '"C$"' Pkt ";FNI(G%);": ";FNI(F%);" bytes";:IFA%:VDU13:OSCLI"FX3,3":ENDPROC 830 IFE%>0:t%=100*F%DIVE%:PRINT", ";t%;"% of ";E%;:t%=j%*(100-t%)DIV(t%+1)DIV100:PRINT" ";t%DIV60;":";RIGHT$("0"+STR$(t%MOD60),2); 840 PRINT" ";100*F%DIVj%;"c/s "MID$("1281k",(H%DIV&100),3)"-"MID$("SUMCRC",-3*Q%+1,3)" "MID$("TIMEOUTOk BadCRCEOT BadPkt",3*(B%AND-2)+7-(B%>=0),6-(B%<0));SPC6;STRING$(15,CHR$8);:OSCLI"FX3,3":ENDPROC 890 DEFPROCM:PRINT"XYModem download. ";:*FX229 900 INPUT"Destination file/directory: "B$:d%=FNE:IFd%:PRINT" - Converting incoming LF to CR"; 920 OSCLI"FX229,1":PRINT:B%=FNS(B$,d%):PRINT:IFB%<>B:PRINT"Download error: ";A$(B%) 930 PRINT:ENDPROC 1020 DEFFNS(B$,d%):OSCLI"FX3,3":OSCLI"FX2,1":Z%=FNB(229,1,0):c%=TRUE:REPEATB%=FNF:UNTILB%<>B:c%=FALSE:OSCLI"FX3":OSCLI"FX2,2":Z%=FNB(229,Z%,0):=(B%AND15)DIV2 1120 DEFFNF:F$=B$:C$="":D$="":E%=-1:u%=-1:v%=-1:G%=-1:H%=-1:Q%=-1:k%=-1:F%=-1:P%=TIME:j%=1:e%=FALSE:B%=FNA:IFB%<>B:=B% 1140 IFG%>1:PROCB:=D 1150 IFG%=0:PROCK:e%=TRUE:IFC$="":PROCC:=A 1160 L%=FNG:IFL%=0:PROCB:=F 1170 P%=TIME:IFG%=0:PROCC:B%=FNA:IFB%<>B:PROCF:PROCB:=B% 1180 K%=1:F%=0:REPEATB%=FNK:UNTILB%<>B:PROCF:IFB%=H:PROCA("Finishing",FALSE):PROCC:B%=B:IFNOTe%:B%=A 1200 =B% 1280 DEFFNA:_%=3*3*3:REPEATPROCA("Negotiating",FALSE):IF_%MOD3=0:a%=ASCMID$("G"+CHR$21+"C",(_%DIV3-1)MOD3+1,1):Q%=a%<>21:k%=a%=ASC"G" 1310 VDUa%:B%=FNC:IFB%=HORB%=C:PROCD 1320 _%=_%-1:UNTIL_%=0ORB%=IORB%=EORB%=B:=B% 1410 DEFFNK:IFG%=K%:PROCL:F%=F%+f%:K%=(K%+1)AND255 1430 PROCA("Receiving",FALSE):IFG%=((K%-1)AND255):PROCC:=FNH 1440 =D 1500 DEFPROCL:PROCA("Writing",TRUE):f%=H%:IFE%>=0ANDF%+f%>E%:f%=E%-F% 1520 PROCN(L,L%,O%,f%):ENDPROC 1600 DEFPROCC:IFNOTk%:VDUK 1610 ENDPROC 1660 DEFPROCD:REPEATUNTILINKEY0<0:ENDPROC 1730 DEFFNH:R%=3:REPEATB%=FNC:R%=R%-1:UNTILR%=0OR(B%<>GANDB%<>C)ORk%:=B% 1850 DEFFNC:!J=O%:A%=(d%AND1)OR(Q%AND&80):A%=USRp%:j%=TIME-P%:B%=A%AND&FF:IFB%=B:G%=(A%AND&FF00)DIV256:H%=(A%AND&FF0000)DIV512 1870 IFB%=E:PROCB 1880 =B% 1910 DEFPROCB:PROCD:PRINTSTRING$(8,CHR$I);:ENDPROC 1940 DEFPROCK:IF?O%=0:ENDPROC 1950 O%?127=13:C$=FNJ(O%):D$=FNJ(O%+1+LENC$):IFD$<>"":E%=VALD$ 1980 ENDPROC 2050 DEFFNG:A%=2:IFB$<>"":A%=FND(B$,5):IFA%=1:IFC$="":C$=B$ELSEIFA%=1:REPEATB$=LEFT$(B$,LENB$-1):UNTILRIGHT$(B$,1)="."ORB$="":B$=LEFT$(B$,LENB$-1) 2080 IFC$="":C$="T"+RIGHT$("00000"+STR$TIME,6) 2100 PROCA("Opening",FALSE):IFE%>=0:X%!2=0:X%!6=0:X%!10=0:X%!14=E%:A%=FND(B$+LEFT$(".",B$<>"")+C$,7) 2120 =OPENOUT(B$+LEFT$(".",B$<>"")+C$) 2180 DEFPROCF:PROCA("Closing",FALSE):CLOSE#L%:L%=0:IFG%<0:ENDPROC 2200 ENDPROC 2500 DEFPROCI:INPUT"XModem upload file: "C$:IFC$="":ENDPROC 2510 PRINT"File '"C$"' ";:G%=1:s%=1:F%=0:V%=0:H%=J%AND&FFF:Q%=(J%AND&1000)<>0:I%=OPENINC$:IFI%=0:PRINT"not found":ENDPROC 2530 E%=EXT#I%:PRINT"is ";1+E%DIVH%;" blocks":l%=FNE:IFl%:PRINT" - Converting outgoing CR to LF"; 2550 PRINT:P%=TIME:j%=1:B%=0:T%=0:OSCLI"FX2,1":*FX3,3 2560 PROCA("Waiting",FALSE):OSCLI"FX229":REPEATA%=INKEY200:UNTILA%=21OR(A%=ASC"C"ANDQ%):REPEATPROCA("Waiting",TRUE):IFA%=0:REPEATA%=INKEY200:UNTILA%=6ORA%=21ORA%=24 2600 IFA%=24:REPEATA%=INKEY200:UNTILA%=6ORA%=21ORA%=24 2610 B%=((A%AND&E)DIV2)-((A%=6)AND3):IFB%=B:V%=V%OR1:F%=PTR#I%:G%=G%+1 2630 j%=TIME-P%:IFV%<>3ANDB%<>4:PROCO 2650 A%=0:UNTILV%=3ORB%>2:PROCA("Finishing",0):CLOSE#I%:I%=0:OSCLI"FX3":PRINT'A$(B%):OSCLI"FX229,1":ENDPROC 2680 DEFPROCO:V%=0:IFEOF#I%ANDT%=0:VDU4:V%=2:ENDPROC 2690 IFF%+H%>E%:H%=128 2700 PROCA("Sending",0):PTR#I%=F%:g%=0:FORn%=0TOH%-1:IFT%:b%=T%:T%=0ELSEIFEOF#I%:b%=26ELSEb%=BGET#I% 2730 IFb%=13ANDl%:b%=10:r%=BGET#I%:PTR#I%=PTR#I%-1-EOF#I%:IFr%=13:T%=32 2740 g%=FNQ(b%,g%):O%?n%=b%:NEXT:REPEATA%=INKEY0:UNTILA%<>21:IFA%<>-1:B%=3:ENDPROC 2760 VDUH%DIV1024+1,G%,255-G%:FORn%=0TOH%-1:VDUO%?n%:NEXT:VDUg%:IFQ%:VDUg%DIV256 2790 s%=G%:ENDPROC 2810 DEFFNQ(A%,S%):LOCALz%:IFNOTQ%:=(S%+A%)AND255 2820 S%=S%EOR(A%*256):FORz%=1TO8:S%=S%*2:IF(S%AND&10000):S%=S%EOR&1021 2830 NEXT:=S%AND&FFFF 2880 DEFPROCJ:IFU%:A%=!&FFB7:!&22A=A%!&2A:!&22C=A%!&2C 2890 IFU%=0:*BUFFER OFF 2900 ENDPROC