5 POKE53280,12:POKE53281,11 6 PRINT"[147][155] FLANKSPEED "; 10 PRINT" MISTAKEPROOF ML ENTRY PROGRAM " 15 PRINT" CREATED BY G. F. WHEAT " 20 PRINT" COPR. 1984, ION INTERNATIONAL INC. " 30 FORA=54272TO54296:POKEA,0:NEXT 40 POKE54272,4:POKE54273,48:POKE54277,0:POKE54278,249:POKE54296,15 70 FORA=680TO699:READB:POKEA,B:NEXT 75 DATA169,251,166,253,164,254,32,216,255,96 76 DATA169,0,166,251,164,252,32,213,255,96 80 B$="STARTING ADDRESS IN HEX":GOSUB2010:AD=B:SR=B 85 GOSUB2520:IFB=0THEN80 86 POKE251,T(4)+T(3)*16:POKE252,T(2)+T(1)*16 90 B$="ENDING ADDRESS IN HEX":GOSUB2010:EN=B 95 GOSUB2510:IFB=0THEN80 96 POKE254,T(2)+T(1)*16:B=T(4)+1+T(3)*16 97 IFB>255THENB=B-255:POKE254,PEEK(254)+1 98 POKE253,B:PRINT 100 REM GET HEX LINE 110 GOSUB3010:PRINT": [175][157]";:FORA=0TO8 120 FORB=0TO1:GOTO210 125 NEXTB 130 A%(A)=T(1)+T(0)*16:IFAD+A-1=ENTHEN310 135 PRINT" [175][157]"; 140 NEXTA:T=AD-(INT(AD/256)*256):PRINT" " 150 FORA=0TO7:T=T+A%(A):IFT>255THENT=T-255 160 NEXT 170 IFA%(8)<>TTHENGOSUB1010:GOTO110 180 FORA=0TO7:POKEAD+A,A%(A):NEXT:AD=AD+8:GOTO110 200 REM GET HEX INPUT 210 GETA$:IFA$=""THEN210 211 IFA$=CHR$(20)THEN270 212 IFA$=CHR$(133)THEN4000 213 IFA$=CHR$(134)THEN4100 214 IFA$=CHR$(135)THENPRINT" ":GOTO4500 215 IFA$=CHR$(136)THENPRINT" ":GOTO4700 220 IFA$>"@"ANDA$<"G"THENT(B)=ASC(A$)-55:GOTO250 230 IFA$>"/"ANDA$<":"THENT(B)=ASC(A$)-48:GOTO250 240 GOSUB1100:GOTO210 250 PRINTA$"[175][157]"; 260 GOTO125 270 IFA>0THEN280 272 A=-1:IFB=1THEN290 274 GOTO140 280 IFB=0THENPRINTCHR$(20);CHR$(20);:A=A-1 285 A=A-1 290 PRINTCHR$(20);:GOTO140 300 REM LAST LINE 310 PRINT" ":T=AD-(INT(AD/256)*256) 320 FORB=0TOA-1:T=T+A%(B):IFT>255THENT=T-255 330 NEXT 340 IFA%(A)<>TTHENGOSUB1010:GOTO110 350 FORB=0TOA-1:POKEAD+B,A%(B):NEXT 360 PRINT:PRINT"YOU ARE FINISHED!":GOTO4000 1000 REM BELL AND ERROR MESSAGES 1010 PRINT:PRINT"LINE ENTERED INCORRECTLY":PRINT:GOTO1100 1020 PRINT:PRINT"INPUT A 4 DIGIT HEX VALUE!":GOTO1100 1030 PRINT:PRINT"ENDING IS LESS THAN STARTING!":B=0:GOTO1100 1040 PRINT:PRINT"ADDRESS NOT WITHIN SPECIFIED RANGE!":B=0:GOTO1100 1050 PRINT:PRINT"NOT ZERO PAGE OR ROM!":B=0:GOTO1100 1060 PRINT"?ERROR IN SAVE":GOTO1100 1070 PRINT"?ERROR IN LOAD":GOTO1100 1080 PRINT:PRINT:PRINT"END OF ML AREA":PRINT 1100 POKE54276,17:POKE54276,16:RETURN 1200 OPEN15,8,15:INPUT#15,A,A$:CLOSE15:PRINTA$:RETURN 2000 REM GET FOUR DIGIT HEX 2010 PRINT:PRINTB$;:INPUTT$ 2020 IFLEN(T$)<>4THENGOSUB1020:GOTO2010 2040 FORA=1TO4:A$=MID$(T$,A,1):GOSUB2060:IFT(A)=16THENGOSUB1020:GOTO2010 2050 NEXT:B=(T(1)*4096)+(T(2)*256)+(T(3)*16)+T(4):RETURN 2060 IFA$>"@"ANDA$<"G"THENT(A)=ASC(A$)-55:RETURN 2070 IFA$>"/"ANDA$<":"THENT(A)=ASC(A$)-48:RETURN 2080 T(A)=16:RETURN 2500 REM ADRESS CHECK 2510 IFAD>ENTHEN1030 2515 IFBENTHEN1040 2520 IFB<256OR(B>40960ANDB<49152)ORB>53247THEN1050 2530 RETURN 3000 REM ADDRESS TO HEX 3010 AC=AD:A=4096:GOSUB3070 3020 A=256:GOSUB3070 3030 A=16:GOSUB3070 3040 A=1:GOSUB3070 3060 RETURN 3070 T=INT(AC/A):IFT>9THENA$=CHR$(T+55):GOTO3090 3080 A$=CHR$(T+48) 3090 PRINTA$;:AC=AC-A*T:RETURN 4000 A$="**SAVE**":GOSUB4200 4050 OPEN1,T,1,A$:SYS680:CLOSE1 4060 IFST=0THENEND 4070 GOSUB1060:IFT=8THENGOSUB1200 4080 GOTO4000 4100 A$="**LOAD**":GOSUB4200 4150 OPEN1,T,0,A$:SYS690:CLOSE1 4160 IFST=64THEN110 4170 GOSUB1070:IFT=8THENGOSUB1200 4180 GOTO4100 4200 PRINT" ":PRINTTAB(14)A$ 4210 PRINT:A$="":INPUT"FILENAME";A$ 4215 IFA$=""THEN4210 4220 PRINT:PRINT"TAPE OR DISK?":PRINT 4230 GETB$:T=1:IFB$="D"THENT=8:A$="@0:"+A$:RETURN 4240 IFB$<>"T"THEN4230 4250 RETURN 4500 B$="CONTINUE FROM ADDRESS":GOSUB2010:AD=B 4510 GOSUB2515:IFB=0THEN4500 4520 PRINT:GOTO110 4700 B$="BEGIN SCAN AT ADDRESS":GOSUB2010:AD=B 4705 GOSUB2515:IFB=0THEN4700 4706 PRINT:GOTO4740 4710 FORB=0TO7:AC=PEEK(AD+B):GOSUB3030:IFAD+B=ENTHENAD=SR:GOSUB1080:GOTO110 4715 PRINT" ";:NEXTB 4720 PRINT:AD=AD+8 4730 GETB$:IFB$=CHR$(136)THEN110 4740 GOSUB3010:PRINT": ";:GOTO4710