0 'XMODEM.BA - BY RICK PERRY 1 'CLUB 100 LIBRARY - 415/939-1246 BBS, 937-5039 NEWSLETTER, 932-8856 VOICE 2 GOTO68:REM XMODEM 1/23/85 by Rick Perry 3 T=0 4 CALLVARPTR(M(16)),0,VARPTR(X(0)):IFX(0)THENRETURNELSET=T+1:IFT<66*STHEN4ELSERETURN 5 CALLVARPTR(M(21)),0,VARPTR(X):IFQTHENPRINTCHR$(X);ELSEPRINTCHR$(T(X)); 6 IFDTHENN=N+1:Z(N)=X:IFN>255THEN8 7 RETURN 8 S=0:GOSUB63:FORJ=0TON:PRINT#3,CHR$(Z(J));:NEXT:N=-1:GOTO63 9 IFLTHENCLOSE1,2:OPENQ$FORINPUTAS1:OPENQ$FOROUTPUTAS2ELSEA$="8N1D"+N$:R=6118:GOSUB57 10 A=256:B=1:GOSUB55:ONERRORGOTO30:IFETHEN19 11 S=1:GOSUB3:IFX(0)THEN11 12 IFINKEY$=G$THEN31ELSEPRINT#2,CHR$(21);:PRINT"X";:S=10:GOSUB3:IFX(0)THEN14ELSE12 13 IFINKEY$=G$THEN31ELSEPRINT#2,CHR$(6);:PRINT".";:S=10:GOSUB3:IFX(0)=0THEN12 14 IFX(1)=1THEN15ELSEIFX(1)=4THENPRINT#2,CHR$(6);:GOTO29ELSEIFX(1)=24THEN31ELSE11 15 CALLVARPTR(M(24)),0,VARPTR(Z(0)):IFZ(0)=0THEN11ELSEIFZ(2)<>(255ANDNOTZ(1))THEN11ELSEIFZ(1)=ATHEN13ELSEIFZ(1)<>BTHEN31 16 X=0:FORN=3TO130:X=X+Z(N):NEXT:X=XAND255:IFX<>Z(131)THEN11 17 FORN=3TO130:IFZ(N)=26THENN=130ELSEPRINT#3,CHR$(Z(N)); 18 NEXT:A=B:B=B+1AND255:GOTO13 19 GOSUB26 20 PRINT"?"; 21 IFINKEY$=G$THEN31ELSES=10:GOSUB3:IFX(0)=0THEN20ELSEIFX(1)=6THEN25ELSEIFX(1)=21THEN22ELSEIFX(1)=24THEN31ELSE20 22 PRINT"X"; 23 IFN=0THENPRINT#2,CHR$(4);ELSEPRINT#2,CHR$(1)CHR$(A)CHR$(255ANDNOTA);:X=0:FORJ=1TO128:X=X+Z(J):PRINT#2,CHR$(Z(J));:NEXT:X=XAND255:PRINT#2,CHR$(X); 24 S=0:GOSUB3:IFX(0)THEN24ELSE21 25 IFN=0THEN29ELSEPRINT".";:GOSUB26:GOTO23 26 A=A+1AND255:N=0:IFNOTETHENRETURN 27 FORN=1TO128:IFETHENIFNOTEOF(3)THENZ(N)=ASC(INPUT$(1,3))ELSEE=0:Z(N)=26ELSEZ(N)=0 28 NEXT:RETURN 29 CLOSE3:PRINT:PRINT"File transfer complete.":BEEP:GOTO33 30 RESUME31 31 SCREEN,0:PRINT:PRINT"ABORT":SOUND9394,9:CLOSE3 32 S=1:GOSUB3:IFX(0)THEN32ELSEPRINT#2,CHR$(24); 33 IFLTHENCLOSE:OPENP$FORINPUTAS1:OPENP$FOROUTPUTAS2ELSEA$="7I1E"+N$:R=6118:GOSUB57 34 POKE-86,0:D=0:ONERRORGOTO46:POKE63056,64:A$="PrevDown Up TermBrk Fre Dir Bye ":GOSUB54 35 CALL16969:ONCOMGOSUB5:ONMDMGOSUB5:S=-1:GOSUB63:K=0 36 ONKGOTO41,47,58,44:A$=INKEY$:IFINSTR(N$,A$)=0THENA=INSTR(F$,A$):IFATHENONAGOSUB62,38,39,58,66,67,65,40ELSEIFA$=CHR$(7)THENQ=NOTQELSEPRINT#2,A$; 37 GOTO36 38 IFDTHENK=4:RETURNELSEK=1:RETURN 39 IFDTHENRETURNELSEK=2:RETURN 40 K=3:RETURN 41 COMSTOP:MDMSTOP:SCREEN,0:PRINT:LINEINPUT"File to Download? ";Y$:IFINSTR(Y$,":")<4THENPRINT"Append? ";:GOSUB95:IFA$="Y"THENOPENY$FORAPPENDAS3:GOTO43 42 OPENY$FOROUTPUTAS3 43 GOSUB94:IFA$="Y"THENE=0:GOTO9ELSEA$="Prev@@@@ TermBrk Fre Dir Bye ":GOSUB54:N=-1:D=-1:GOTO35 44 SCREEN,0:D=0:IFN>-1THENGOSUB8 45 S=0:GOSUB63:CLOSE3:GOTO34 46 PRINT" aborted":IFERR=22THENSCREEN,1:RESUME35ELSECLOSE3:RESUME34 47 COMSTOP:MDMSTOP:SCREEN,0:PRINT:LINEINPUT"File to Upload? ";Y$:OPENY$FORINPUTAS3:GOSUB94:IFA$="Y"THENE=-1:GOTO9ELSEW=1:INPUT"Width";W:W=W-1:T=W-9:C=0:S=0:GOSUB55:GOSUB51 48 IFINKEY$=G$THENPRINT:ERROR7ELSEIFN<0THENCLOSE3:BEEP:GOTO34ELSEGOSUB49:GOTO48 49 J=J+1:IFJ>NTHEN51ELSEPRINT#2,CHR$(Z(J));:IFWTHENIFZ(J)=13THENC=0ELSEC=C+1:IFTWTHENC=0:PRINT#2,CHR$(13); 50 RETURN 51 J=-1:N=-1:IFEOF(3)THENRETURNELSEGOSUB63 52 N=N+1:Z(N)=ASC(INPUT$(1,3)):IFZ(N)=10THENN=N-1 53 IFN>255OREOF(3)THEN63ELSE52 54 FORJ=4TO32STEP4:MID$(A$,J,1)=CHR$(ASC(MID$(A$,J))OR128):NEXT:GOTO56 55 A$=STRING$(7,128)+"Abr"+CHR$(244) 56 R=17061 57 V=VARPTR(A$):CALLR,60,PEEK(V+1)+256*PEEK(V+2):RETURN 58 COMSTOP:MDMSTOP:SCREEN,0:PRINT:IFK=3THENPRINT"Disconnect? ";ELSEPRINT"Telcom? "; 59 GOSUB95:IFA$<>"Y"THENERRORELSEIFDANDN>-1THENGOSUB8:CLOSE3 60 IFK=3THENMAXFILES=2:MENUELSEIFLTHENMAXFILES=2:CLEAR0 61 CALL21608 62 S=0:GOSUB63:CALL21795 63 S=NOTS:IFSTHENCOMSTOP:MDMSTOP:PRINT#2,CHR$(19);:CALLVARPTR(M(59)),100ELSEPRINT#2,CHR$(17);:MDMON:COMON 64 RETURN 65 PRINT:FILES:RETURN 66 STOP:RETURN 67 PRINT:PRINTFRE(0)"Bytes Free":RETURN 68 MAXFILES=3:CLEAR500,MAXRAM:DEFINTA-Z:DIMX,X(1),M(60),Z(300),T(127):SCREEN,0:CLS:FORN=0TO60:READM(N):NEXT:FORN=0TO127:T(N)=N:NEXT:T(7)=0:T(8)=143:T(124)=249:T(126)=36:FORN=33TO96:READT(N):NEXT:K=3:Q=-1 69 N$=CHR$(0):V$=CHR$(22):G$=CHR$(255):F$="":FORN=248TO255:F$=F$+CHR$(N):NEXT:POKE63056,64:CALL17875:POKE63056,0:CALL27804 70 P$="com:57i1e":Q$="com:58n1d":CLOSE:OPEN"adrs"FORINPUTAS1:LINEINPUT"Find:";A$:CALLVARPTR(M(3)),0,VARPTR(A$):IFA$="MENU"THEN60ELSEIFA$="DIAL"THEN78 71 IFEOF(1)THEN70ELSELINEINPUT#1,Y$:I=INSTR(Y$,":"):B$=LEFT$(Y$,I):CALLVARPTR(M(3)),0,VARPTR(B$):IFINSTR(B$,A$)=0THEN71ELSEJ=INSTR(I,Y$,"<"):IFJ=0THEN71 72 PRINTLEFT$(Y$,J)">";:Z$=INPUT$(1):CALLVARPTR(M(3)),0,VARPTR(Z$):PRINT:ONINSTR(CHR$(27)+"3SM",Z$)GOTO70,80,80,73:GOTO71 73 CLOSE:L=0:A$="7I1E"+N$:R=6118:GOSUB57:A$=MID$(Y$,I+1,J-I-1)+N$ 74 PRINT"Calling "LEFT$(Y$,I);:R=21293:GOSUB57:CALL21172:PRINT:N=0 75 N=N+1:CALLVARPTR(M(0)),0,VARPTR(X):IFX=0THEN79ELSEB$=INKEY$:IFB$=""ANDN<1000THEN75 76 CALL21179:IFB$>""THEN70ELSEPRINT"NO CARRIER":N=0 77 N=N+1:CALL21264:IFINKEY$>""THEN70ELSEIFN<9THEN77ELSE74 78 CLOSE:Y$="":J=1:L=-1:ONINSTR(" 33SsMm",INPUT$(1))\2GOTO83,33,79:GOTO70 79 L=0:PRINT"CONNECTED":BEEP:A$=MID$(Y$,J)+N$:R=21392:GOSUB57:OPEN"mdm:7i1e"FORINPUTAS1:OPEN"mdm:7i1e"FOROUTPUTAS2:GOTO34 80 CLOSE:IFZ$="S"THENB$="com:37i1e"ELSEB$="com:57i1e" 81 OPENB$FOROUTPUTAS2:B$="%n"+V$:GOSUB91:IFZ$="S"THENB$="2"ELSEB$="1" 82 B$=V$+"s"+B$:GOSUB91:IFZ$="S"THEN84 83 P$="com:37i1e":Q$="com:38n1d":IFY$=""THEN33 84 CLOSE:L=-1:OPENP$FORINPUTAS1:OPENP$FOROUTPUTAS2:ONCOMGOSUB92:COMON:B$="%n"+V$:GOSUB91:B$=V$+"f4":GOSUB91:B$=V$+"d"+MID$(Y$,I+1,J-I-1):W$="C":W=-1:GOSUB91:GOSUB89:BEEP:B$=V$+"u0":GOSUB91:PRINT#2,CHR$(3); 85 I=INSTR(J,Y$,"?"):IFI=0THEN34ELSEW$=MID$(Y$,I+1,1):W=-1:GOSUB89:J=I+1 86 J=J+1:A$=MID$(Y$,J,1):IFA$="^"THENPRINT#2,CHR$(13);:GOTO85ELSEIFA$="?"THEN85 87 PRINT#2,A$;:GOTO86 88 B$=V$+"h":GOSUB91:B$=A$:W$="K":W=-1:GOSUB89:IFB$=CHR$(18)THENRUNELSE60 89 A$=INKEY$:IFA$>""THENIFINSTR(CHR$(5)+CHR$(18),A$)THEN88ELSEPRINT#2,A$; 90 IFWTHEN89ELSERETURN 91 PRINT#2,LEFT$(B$,2);:CALL21274:PRINT#2," "MID$(B$,3):CALL21270,2:RETURN 92 Z$=INPUT$(1,1):PRINTZ$;:IFZ$=W$THENW=0 93 RETURN 94 PRINT"Use XMODEM protocol? "; 95 A$=INPUT$(1):IFINSTR("YyNn",A$)THENPRINTA$:CALLVARPTR(M(3)),0,VARPTR(A$):RETURNELSE95 96 DATA-4147,30574,201,-18562,20424,32291,26147,4463,2,-5683,6449,6865,-5683,4623,3347,-5688,54,28109,-14227,9012,35,32461,30573,201 97 DATA54,23892,-5683,1585,-14973,8677,7282,28109,-16019,-14907,483,39,-7415,-15936,31787,-15947,-14907,483,7,-7415,-15936,-15935,-13887,32461,4973,4627,-15903,-15099,485,4,-6903,-7744,-7711,13537,201,-15537,21276 98 DATA190,41,60,254,61,62,93,86,197,138,37,44,43,46,47,48,49,50,51,52,53,54,55,56,57,40,91,59,88,58,92,241,65,248,145,246,69,95,167,159,142,166,39,255,245,243,79,42,63,82,240,126,153,85,87,88,152,67,155,244,154,252,45,157