10 PCLEAR1:CLEAR420,12287 12 DIMD(16) 13 M$="H":M2$=M$:DV$="D" 15 CLS 17 PRINT"MEM OK AT $3000." 20 PRINT:PRINTDV$;M$;"$"; 22 C$=INKEY$:IFC$=""THEN22 50 IFC$<>"M"THEN100 53 PRINT"M ";:GOSUB9000:IFE<>0THEN20 56 PRINT:GOSUB8000:PRINT" ";:D=PEEK(A):GOSUB8200:PRINT" ";:GOSUB9200:IFE<>0THEN70 60 POKE A,D 62 A=A+1 64 GOSUB8400:GOTO56 70 IFT$="N"ORT$=" "THEN62 72 IFT$="^"ORT$="P"THENA=A-1:GOTO64 74 GOTO20 100 IFC$<>"L"THEN150 103 PRINT"L ";:GOSUB9000:IFE<>0THEN20 106 PRINT:GOSUB8000:PRINT" :";:FORL1=1TO8:D=PEEK(A):PRINT" ";:GOSUB8200:A=A+1:GOSUB8400:NEXTL1 110 T$=INKEY$:IFT$=""THEN110 112 IFT$=CHR$(13)THEN20 114 IFT$="^"ORT$="P"THENA=A-16:GOSUB8400 116 GOTO106 150 IFC$<>"J"THEN180 153 PRINT"J ";:GOSUB9000 155 IFE=42ANDT3=0THENEXEC:GOTO20 160 IFE=13ANDT3=0THEN175 165 IFE<>0THEN20 170 DEFUSR1=A 175 A=USR1(0):GOTO20 180 IFC$="U"THENPRINT"U";:GOTO175 200 IFC$=CHR$(12)THEN15 210 IFC$="B"THENPRINT"B":END 220 IFC$="A"ORC$="H"THENM$=C$:M2$=M$ 230 IFC$="D"ORC$="T"THENDV$=C$ 300 IFC$<>"S"THEN400 304 PRINT"S ";:GOSUB9000:IFE<>0THEN20 308 A1=A:PRINT"-";:GOSUB9000:IFE<>0THEN20 312 A2=A:N=0:PRINT";";:GOTO324 320 PRINT","; 324 GOSUB9200:IFE<>0THEN332 328 N=N+1:D(N)=D:IFN<16THEN320 332 IFN=0OR(E<>0AND(E<>13ORT<>0))THEN20 336 B=1:D=D(1):T2=0:IFA2D THEN380 348 IFN=1THEN355 350 L2=L1+1:B=2 352 IFPEEK(L2)<>D(B)THEN380ELSEB=B+1:IFB<=N THENL2=L2+1:GOTO352 355 T2=T2+1:GOSUB8000:D=D(1):PRINT" ";:IFT2/6=INT(T2/6)THENPRINT 380 NEXTL1 390 GOTO20 400 IFC$<>"?"THEN500 404 PRINTC$:PRINT"COMMANDS :" 406 PRINT" A-ASCII MODE";TAB(15); 408 PRINT" B-BREAK; BASIC" 410 PRINT" C-PRINT CKSUM";TAB(15); 414 PRINT" D-DISC MODE" 417 PRINT" F-FILL MEMORY";TAB(15); 418 PRINT" G-GET SECTOR" 419 PRINT" H-HEX MODE";TAB(15); 420 PRINT" J-JUMP TO ADDR" 422 PRINT" L-LIST MEMORY";TAB(15); 424 PRINT" M-MODIFY MEMORY" 428 PRINT" P-PUT SECTOR" 430 PRINT" R-READ A FILE";TAB(15) 432 PRINT" S-SEARCH MEMORY" 433 PRINT" T-TAPE MODE";TAB(15); 434 PRINT" U-USR1" 435 PRINT" W-WRITE A FILE" 437 PRINT" =-COMPARE MEMORY" 438 PRINT" #-DEFINE ENTRY POINT" 440 PRINT" >-USE ENTRY POINT" 488 PRINT" ?-LIST COMMANDS" 490 GOTO20 500 IFC$<>"F"THEN600 504 PRINT"F ";:GOSUB9000:IFE<>0THEN20 507 A1=A:PRINT"-";:GOSUB9000:IFE<>0THEN20 510 A2=A:N=0:PRINT";";:GOTO520 515 PRINT ","; 520 GOSUB9200:IFE<>0THENIFN=0ORE<>13ORT<>0THEN20ELSE528 524 N=N+1:D(N)=D:IFN<16THEN515 528 B=1:IFA2N THENB=1 538 NEXT:GOTO20 600 IFC$<>"W"THEN650 602 PRINT"W ";:GOSUB9400:IFE<>0THEN647 615 PRINT:PRINT"FROM :";:GOSUB9000:IFE=0THENA1=A:PRINT" TO :";:GOSUB9000:IFE=0THENA2=A:PRINT" XFER :";:GOSUB9000:PRINT:IFE=0THEN618 617 GOTO647 618 IFDV$="D"THEN626 620 PRINT"GET TAPE READY, HIT 'ENTER'." 622 T$=INKEY$:IFT$=""THEN622 623 IFT$<>CHR$(13)THEN647 625 AUDIOON:CSAVEM FL$,A1,A2,A:AUDIOOFF:GOTO627 626 SAVEM FL$,A1,A2,A 627 PRINT"WRITTEN.":GOTO20 647 PRINT"NOT WRITTEN.":GOTO20 650 IFC$<>"R"THEN700 652 PRINT"R ";:GOSUB9400:PRINT:IFE<>0AND(DV$="D"OR(E<>13ANDE<>32))THEN697 653 IFFL$=CHR$(13)THENFL$="" 655 PRINT"LOAD OFFSET :";:GOSUB9000:PRINT:IF(E=13ORE=32)ANDT3=0THENA=0ELSEIFE<>0THEN697 660 IFDV$="D"THEN685 675 PRINT"GET TAPE READY, HIT 'ENTER'." 677 T$=INKEY$:IFT$=""THEN677 678 PRINT:IFT$<>CHR$(13)THEN697 680 AUDIOON 682 IFFL$<>""THENCLOADM FL$,A ELSECLOADM ,A 683 AUDIO OFF:GOTO690 685 LOADM FL$,A 690 PRINT"READ.":GOTO20 697 PRINT"NOT READ.":GOTO20 700 IFC$<>"="THEN750 703 PRINT"= ";:GOSUB9000:IFE<>0THEN20 706 A1=A:PRINT" - ";:GOSUB9000:IFE<>0THEN20 710 A2=A:PRINT:PRINT"W/";:GOSUB9000:IFE<>0THEN20 713 PRINT:C=0:DF=A-A1:IFA2";:A=A5:GOSUB8000:C=C+1:IFC/2=INT(C/2)THENPRINTELSEPRINT" "; 730 NEXT:IFC/2<>INT(C/2)THENPRINT 733 GOTO20 750 IFC$<>"#"THEN780 753 PRINT"# ";:GOSUB9500:IFT$<"1"ORT$>"9"THEN20 756 D2=VAL(T$):PRINT" >>--> ";:GOSUB9000:IFE<>0THEN20 760 OND2 GOSUB771,772,773,774,775,776,777,778,779 763 GOTO20 771 DEFUSR1=A:RETURN 772 DEFUSR2=A:RETURN 773 DEFUSR3=A:RETURN 774 DEFUSR4=A:RETURN 775 DEFUSR5=A:RETURN 776 DEFUSR6=A:RETURN 777 DEFUSR7=A:RETURN 778 DEFUSR8=A:RETURN 779 DEFUSR9=A:RETURN 780 IFC$<>">"THEN800ELSEPRINT"> ";:GOSUB9500:IFT$<"1"ORT$>"9"THEN20ELSED=VAL(T$):OND GOSUB791,792,793,794,795,796,797,798,799:GOSUB9502:GOTO20 791 A=USR1(0):RETURN 792 A=USR2(0):RETURN 793 A=USR3(0):RETURN 794 A=USR4(0):RETURN 795 A=USR5(0):RETURN 796 A=USR6(0):RETURN 797 A=USR7(0):RETURN 798 A=USR8(0):RETURN 799 A=USR9(0):RETURN 800 IFC$<>"C"THEN850ELSEPRINT"CKSUM ";:GOSUB9000:IFE<>0THEN20 803 A1=A:PRINT" - ";:GOSUB9000:IFE<>0THEN20 806 PRINT:C1=0:C2=0:A2=A:IFA24095THENC1=C1-4096:C2=C2+1 816 NEXTL1 820 PRINT"CKSUM=";:D=C2:GOSUB8200:A=C1:GOSUB8000:GOTO20 850 IFC$<>"G"THEN900ELSEPRINT"G ";:GOSUB9600:IFE<>0THEN20 855 PRINT "BUFFER: ";:GOSUB9000:IFE<>0THEN20 856 IFA<12288THENPRINT"MIN BUFFER=3000":GOTO20 859 PRINT "TRACK=";DT;"SECTOR=";DS 860 DA$="":DB$="":DSKI$ 0,DT,DS,DA$,DB$ 870 FORI=1TO128:POKEA+I-1,ASC(MID$(DA$,I,1)):POKEA+I+127,ASC(MID$(DB$,I,1)):NEXTI 890 GOTO 106 900 IFC$<>"P"THEN950ELSEPRINT"P ";:GOSUB9600:IFE<>0THEN20 910 PRINT"BUFFER: ";:GOSUB9000:IFE<>0THEN20 920 DA$="":DB$="":FORI=1TO128:DA$=DA$+CHR$(PEEK(A+I-1)):DB$=DB$+CHR$(PEEK(A+I+127)):NEXTI 930 DSKO$ 0,DT,DS,DA$,DB$ 940 GOTO20 950 REM 990 PRINTC$;:GOTO20 8000 M2$="H":D=INT(A/256):GOSUB8200:D=A-INT(A/256)*256:GOSUB8200:M2$=M$:RETURN 8200 IFM2$<>"A"ORD<32ORD>127THEN8210 8202 PRINTCHR$(D);" ";:RETURN 8210 T=INT(D/16):GOSUB8300:T=D-INT(D/16)*16 8300 T=T+48:IFT>57THENT=T+7 8302 PRINTCHR$(T);:RETURN 8400 IFA>65535THENA=A-65536 8402 IFA<0THENA=A+65536 8404 RETURN 9000 M2$="H":T3=0:GOSUB9200:T3=T3+T:IFE<>0THENM2$=M$:RETURN 9002 A=D:GOSUB9200:T3=T3+T:A=A*256+D:M2$=M$:RETURN 9200 E=0:D=0:T=0:IFM2$="A"THEN9220 9202 T$=INKEY$:IFT$=""THEN9202 9204 PRINTT$;:T2=ASC(T$)-48:IFT2<0OR(T2>9ANDT2<17)ORT2>22THENE=T2+48:IFE<=0THENE=300 9206 IFT2>9THENT2=T2-7 9208 IFE=0THEND=D*16+T2:T=T+1:IFT<2THEN9202 9210 RETURN 9220 T$=INKEY$:IFT$=""THEN9220 9222 E=ASC(T$):IFE>32ANDE<91THEND=E:E=0:T=1 9230 PRINTT$;:RETURN 9400 FL$="":DP=0:E=0:PRINT"FILE:"; 9402 GOSUB9500 9404 T=ASC(T$):IF(T=13ORT=32)ANDLEN(FL$)>0THENRETURNELSEIFT<46ORT>90OR((T=46ORT=47)ANDDP>0)OR(T>57ANDT<65)OR(T<65ANDLEN(FL$)=0)THENE=T:IFE=0THENE=300 9405 IFT=46ORT=47THENDP=LEN(FL$)+1 9406 FL$=FL$+T$:IFLEN(FL$)<12ANDE=0THEN9402 9408 RETURN 9500 T$=INKEY$:IFT$=""THEN9500ELSEPRINTT$; 9502 RETURN 9600 INPUT "TRACK,SECTOR";DT,DS 9605 E=0:IFDT<0ORDT>34ORDS<1ORDS>18THENPRINT"0<=T<=34, 1<=S<=18":E=1 9609 RETURN