4 CLS: SCREEN0,0:CALL17006:PRINT@136,"KEYS 2.0":PRINT:PRINTTAB(8)"(C)1987 Linwood McDowell 6 MAXFILES=2:CLEAR900,MAXRAM:DEFSNGA-G:DEFINTH-Z:DEFSTRD,F,I,U:ONERRORGOTO90:DIMF(20),AD(21),P(20),SZ(20),X(20),Y(20):F(1)="0":AD(1)=PEEK(63898)+PEEK(63899)*256:NV=17006:RV=NV-5:XP=240:N$="KEYS BA":U="##### 8 A=1:B=1:FORC=63930TO64128STEP11:A=A+1:F(A)=SPACE$(8):IFPEEK(C)THENB=B+1:FORE=1TO8:MID$(F(B),E)=CHR$(PEEK(C+E+2)):NEXT:AD(B)=PEEK(C+1)+PEEK(C+2)*256:IFPEEK(C)=192THENND=ND+1ELSEIFF(B)=N$THENF(B)=" 10 NEXT:A=PEEK(63909)+PEEK(63910)*256:C=PEEK(64434)+PEEK(64435)*256-1:IFC>ATHENE=A:A=C:FORC=1TOB:IFAD(C)-E>0THENAD(C)=AD(C)-1:NEXTELSENEXT 12 AD(B+1)=A:NF=B:GOSUB902:FORA=1TONF:SZ(A)=AD(A+1)-AD(A):J=J+SZ(A):NEXT:GOSUB900:NB=J-SZ(1)-2:IFNDTHENXD=NF-ND+1 14 DR=SPACE$(XP):A=30:FORB=1TO5:FORC=0TO15STEP5:A=A+10:P(B+C)=A:MID$(DR,A-39)=F(B+C)+" "+CHR$(124):NEXT:MID$(DR,A-30)=" ":NEXT:J=11:ME=FRE(0)-29:X=1 20 CLOSE:CALL16954:CALL17471:CALL23161:GOSUB914:B$=" 30 J=0:SW=0:XM=ME:ONKEYGOSUB100,200,300,400,500,600,700,800:CALLRV:PRINT@280,"open READ find name time tape kill quit ":IFME<999THENPRINT@4,USINGU;ME:IFME<599THENPRINT@4,"* 32 GOSUB918:CALLNV:PRINT@XP,SPACE$(39):GOTO46 40 KEYON:I=INKEY$:PRINT@14,USINGU;FRE(0)+6:IFI=""THEN40ELSEKEYOFF:K=ASC(I):IFK<30ORK>31THENIFK=13ANDX>1THEN50ELSE40 42 PRINT@P(X)+8," ":X=X-1:IFK=31THENX=X+2:IFNF99THENBEEPELSE202 208 GOTO206 300 GOSUB928:PRINT@XP,"string:"TAB(29)": FIND":L=22:P=247:GOSUB942:IFK=27THEN30ELSEGOSUB932:CALL16949:CALL17472:PRINTTAB(37-A)"'"IO"'":CALLNV:OPENF(X)FORINPUTAS1:B=80:J=33:SZ=SZ(X)-1:A$=" 302 IFB>SZTHENB=SZ 304 SZ=SZ-B:IFBTHENI=INPUT$(B,1):A$=A$+I:B$=""ELSEPRINTA$:GOTO20 306 KEY(1)ON:ONKEYGOSUB20:C=INSTR(A$,IO):IFCTHENPRINTLEFT$(A$,C-1);:CALLRV:PRINTIO;:CALLNV:SOUND12538,2:A$=MID$(A$,A+C):KEYOFFELSE310 308 GOSUB924:IFK=13THEN306ELSEIFK=27THEN20ELSE308 310 C=LEN(A$):B$=RIGHT$(A$,A):IFC>ATHENA$=LEFT$(A$,C-A)ELSEA$=" 312 PRINTA$;:A$=B$:GOTO302 400 KEYOFF:IFX<3THENBEEP:GOTO40ELSEA$=MID$(F(X),7):CALLNV:PRINT@XP,"rename as: "A$TAB(35)"NAME":CALLRV:PRINT@P(X),F(X):CALLNV 402 GOSUB938:F=FN+A$:NAMEF(X)ASF:SOUND1046,1:CALLRV:PRINT@P(X),F:F(X)=F:SW=2:IFINSTR(DR,F)THENSW=0 404 GOTO400 500 KEYOFF:DT=DATE$ 502 IFINSTR(DT,LEFT$(TIME$,5))=0THENGOSUB920:PRINT@XP,DT"TIME"ELSEK$=INKEY$:IFK$>""THENGOSUB926:IFK=27THEN32 504 GOTO502 600 KEYOFF:FORA=1TONF:X(A)=SZ(A):NEXT:J=33:Y=1:GOSUB934 602 PRINT@XP,TAB(35)"TAPE":CALLRV:PRINT"bkup load"TAB(39) 604 KEY(1)ON:KEY(2)ON:ONKEYGOSUB610,650:GOSUB922:KEYOFF:GOTO604 610 KEYOFF:FORA=XDTONF:IFND=0ORSZ(A)=1THENNEXT:BEEP:GOTO604ELSEGOSUB936:FX=SPACE$(NF):FORB=ATONF:IFSZ(B)>1THENMID$(FX,B)="X 612 NEXT:D=DR:XB=NB:XF=NF:GOSUB950:GOSUB918:GOSUB960:X$="BKUP":GOSUB850:GOSUB936:IFK=27THENGOSUB956:GOTO602ELSEGOSUB950:GOSUB920:MID$(DR,201)=DT+X$:X=1:GOSUB914:GOSUB962 614 MOTORON:FORC=0TO999:NEXT:OPEN"CAS:X"FOROUTPUTAS1:PRINT#1,A,NB,DR:FORC=1TOA:PRINT#1,SZ(C):NEXT:CLOSE 616 FORX=1TOA:GOSUB964:OPENFFORINPUTAS1:OPEN"CAS:"+FFOROUTPUTAS2:GOSUB966:NEXT:MOTORON:FORA=0TO999:NEXT:MOTOROFF:PRINT@279,;:CALL17583 618 GOSUB924:IFK=27THENCALL17594:GOSUB936:RN=1:GOSUB956:X=W:GOTO20ELSE618 650 KEYOFF:CALLNV:IFNF-ND=20THENPRINT@XP,"kill a file!":BEEP:FORA=0TO39:NEXT:GOTO602ELSEP$="load":GOSUB930:IFNF=2THENXM=XM-10 652 GOSUB924:IFK=13THENGOSUB936:X$="LOAD":PRINT@275,X$ELSEIFK=27THEN602ELSE652 654 OPEN"CAS:X"FORINPUTAS1:D=DR:DR="":A=0:XB=NB:XF=NF:INPUT#1,NF,NB,DR:MID$(DR,236)=X$:FORB=2TOXF:IFINSTR(DR,F(B))THENA=A+1:Y(A)=SZ(B):MID$(D,P(B)-32)="* 656 NEXT:FORA=1TONF:F(A)=MID$(DR,P(A)-39,8):INPUT#1,SZ(A):IFINSTR(D,LEFT$(F(A),7))THENY(A)=Y(A)-SZ(A):GOSUB970ELSEFORB=NFTOASTEP-1:Y(B+1)=Y(B):NEXT:Y(A)=-SZ(A) 658 NEXT:CLOSE:A=ME:ME=XM:GOSUB914:M=2:ME=A 660 GOSUB850:GOSUB936:IFK=27THENRN=1:GOSUB956:GOTO20ELSEGOSUB950:GOSUB914:GOSUB962:FORX=1TOA:GOSUB964:OPEN"CAS:"+FFORINPUTAS1:OPENFFOROUTPUTAS2:GOSUB966:NEXT:GOSUB936:GOTO6 700 KEYOFF:IFNDTHENGOSUB934:X$="KILL":M=1:Y=XDELSE928 702 PRINT@XP,TAB(5):GOSUB850:IFK=27THENPRINT@40,DR:GOTO30ELSEP$="kill":SW=1:GOSUB930 704 GOSUB924:IFK=27THEN702ELSEIFK-13THEN704ELSEGOSUB936:FORA=XDTONF:IFMID$(FX,A,1)="X"THENKILLF(A) 706 NEXT:GOTO6 800 KEYOFF:P$="quit":GOSUB930 802 GOSUB922:IFK=13THENPRINT@XP,TAB(5):GOSUB974:MAXFILES=0:MENUELSE802 850 CALLNV:A$="pull"+SPACE$(36):IFM=2THENMID$(A$,6)="PEEK 852 PRINT@275,X$:CALLRV:PRINTA$:CALLNV:IFSWTHENSW=0ELSEFX=SPACE$(NF):KEY1,CHR$(1):KEY2,CHR$(2):A=0:B=0:W=X:X=Y 854 GOTO862 856 GOSUB924:IFK<30ORK>31THENIFK=1THEN864ELSEIFK=2ANDM=2THENZ=1:PRINT@275,"PEEK":CALLRV:GOTO886ELSEIFK=13ANDBTHENRETURNELSEIFK=27THENM=0:X=W:RETURNELSE856 858 IFNF=1ORM=1ANDXD=NFTHEN856ELSEPRINT@P(X)+8," ":X=X-1:IFK=31THENX=X+2:IFNF31THEN880 882 Z=Z-40:IFK=31THENZ=Z+80:IFZ>161THENZ=1 884 IFZ<1THENZ=161 886 PRINT@280,MID$(D,Z,38);USING":#";FIX(Z/40)+1:GOTO880 900 B=NF:FORA=1TOB:IFF(A)=N$THENF(A)=""ELSENEXT 902 A=1:B=INT(B/2):IFB=0THENIFSZ(1)THENF(1)=N$:F(2)="SOFTWARE":RETURNELSERETURN 904 C=A 906 E=B+C:IFSZ(1)THENIFMID$(F(C),7)+F(C)>MID$(F(E),7)+F(E)THEN910ELSE912 908 IFAD(C)0THEN906 912 A=A+1:IFA>NF-BTHEN902ELSE904 914 ST$="MEM:"+RIGHT$(SPACE$(3)+STR$(ME),5)+CHR$(124)+"FRE:"+RIGHT$(SPACE$(3)+STR$(FRE(0)+J),5)+CHR$(124)+"FIL:"+RIGHT$(SPACE$(3)+STR$(SZ(X)),5)+CHR$(124)+"DIR:"+RIGHT$(SPACE$(3)+STR$(NB),5)+" " 916 CALLNV:PRINT@0,ST$;DR:RETURN 918 FORG=1TOPEEK(65450):I=INKEY$:NEXT:RETURN 920 DT=" "+DATE$+SPACE$(5)+LEFT$(TIME$,5)+SPACE$(16):RETURN 922 GOSUB924:IFK=13THENRETURNELSEIFK=27THEN30ELSE922 924 K$=INKEY$:IFK$=""THEN924 926 K=ASC(K$):RETURN 928 KEYOFF:IFNDANDX>=XDANDSZ(X)>1THENRETURNELSEBEEP:GOTO40 930 PRINT@XP,P$"?":FORG=1TO2:SOUND415,2:FORH=0TO9:NEXT:NEXT:P$="":RETURN 932 CALLNV:PRINT@0,TAB(255)SPACE$(25):CALLRV:PRINTLEFT$(F(X),6)".DO";:RETURN 934 CALLNV:PRINT@P(X)+8," ":RETURN 936 CALLNV:PRINT@XP,"wait ...."TAB(19):RETURN 938 L=6:P=250:GOSUB942:IFJ+K-27THENRETURNELSEIFSWTHENGOSUB936ELSEPRINT@P(X),F(X):GOTO30 940 IFSW=1THEN6ELSEF(2)="0":GOSUB900:GOSUB954:J=33:X=1:GOTO20 942 A=0:IO=" 944 PRINT@A+P,CHR$(155)CHR$(8);:I=INPUT$(1):K=ASC(I):IFK>27ANDL=6THENIFK<48ORK>57ANDK<65ORK>90THENBEEP:GOTO944 946 IFK>31THENPRINTI:IO=IO+I:A=A+1ELSEIFK=27THENRETURNELSEIFA=0THEN944ELSEIFK=8THENPRINT" "+CHR$(8):A=A-1:IO=LEFT$(IO,A) 948 IFA=LORK=13THENIFL>6THENRETURNELSEFN=IO+SPACE$(6-A):RETURNELSE944 950 A=0:NB=0:FORB=1TO20:F=F(B):F(B)=SPACE$(9):IFMID$(FX,B,1)="X"THENA=A+1:SZ(A)=SZ(B):NB=NB+SZ(A):F(A)=LEFT$(F,7)+"O 952 NEXT:NF=A 954 FORB=1TO20:MID$(DR,P(B)-39)=F(B):NEXT:RETURN 956 FORA=1TO20:B=INSTR(D,"*"):IFBTHENMID$(D,B)="O 958 F(A)=MID$(D,P(A)-39,8):SZ(A)=X(A):NEXT:DR="":DR=D:D="":NB=XB:NF=XF:IFRNTHENRN=0:RETURN 960 CALLNV:PRINT@34,USINGU;NB:PRINT@40,DR:RETURN 962 GOSUB920:CALLRV:PRINTDT" 0%":PRINT@48,CHR$(155):B=0:RETURN 964 CALLNV:DR="":F=F(X):B=B+1:C=255:SZ=SZ(X)-1:PRINT@24,USINGU;SZ+1:CALLRV:PRINT@P(X),FCHR$(155):CALLNV:RETURN 966 IFC>SZTHENC=SZ 968 B=B+C:PRINT#2,INPUT$(C,1);:GOSUB920:CALLRV:PRINT@280,DT;USING"###";B/NB*100:IFB=NBTHENCLOSE:RETURNELSESZ=SZ-C:IFSZTHEN966ELSECLOSE:IFA>XTHENGOSUB934:RETURNELSERETURN 970 A$="=":IFY(A)THENA$="-":IFY(A)<0THENA$="+ 972 MID$(F(A),8)=A$:MID$(DR,P(A)-32)=A$:RETURN 974 CALL23164,0,23366:CALL27795:CALL17472:RETURN