100 POKE53280,12:POKE53281,11 105 PRINT"[147][155] FLANKSPEED "; 110 PRINT" MISTAKEPROOF ML ENTRY PROGRAM " 115 PRINT" CREATED BY G. F. WHEAT " 120 PRINT" COPR. 1984, ION INTERNATIONAL INC. " 125 FORA=54272TO54296:POKEA,0:NEXT 130 POKE54272,4:POKE54273,48:POKE54277,0:POKE54278,249:POKE54296,15 135 FORA=680TO699:READB:POKEA,B:NEXT 140 DATA169,251,166,253,164,254,32,216,255,96 145 DATA169,0,166,251,164,252,32,213,255,96 150 B$="STARTING ADDRESS IN HEX":GOSUB430:AD=B:SR=B 155 GOSUB480:IFB=0THEN150 160 POKE251,T(4)+T(3)*16:POKE252,T(2)+T(1)*16 165 B$="ENDING ADDRESS IN HEX":GOSUB430:EN=B 170 GOSUB470:IFB=0THEN150 175 POKE254,T(2)+T(1)*16:B=T(4)+1+T(3)*16 180 IFB>255THENB=B-255:POKE254,PEEK(254)+1 185 POKE253,B:PRINT 190 REM GET HEX LINE 195 GOSUB495:PRINT": [175][157]";:FORA=0TO8 200 FORB=0TO1:GOTO250 205 NEXTB 210 A%(A)=T(1)+T(0)*16:IFAD+A-1=ENTHEN340 215 PRINT" [175][157]"; 220 NEXTA:T=AD-(INT(AD/256)*256):PRINT" " 225 FORA=0TO7:T=T+A%(A):IFT>255THENT=T-255 230 NEXT 235 IFA%(8)<>TTHENGOSUB375:GOTO195 240 FORA=0TO7:POKEAD+A,A%(A):NEXT:AD=AD+8:GOTO195 245 REM GET HEX INPUT 250 GETA$:IFA$=""THEN250 255 IFA$=CHR$(20)THEN305 260 IFA$=CHR$(133)THEN535 265 IFA$=CHR$(134)THEN560 270 IFA$=CHR$(135)THENPRINT" ":GOTO620 275 IFA$=CHR$(136)THENPRINT" ":GOTO635 280 IFA$>"@"ANDA$<"G"THENT(B)=ASC(A$)-55:GOTO295 285 IFA$>"/"ANDA$<":"THENT(B)=ASC(A$)-48:GOTO295 290 GOSUB415:GOTO250 295 PRINTA$"[175][157]"; 300 GOTO205 305 IFA>0THEN320 310 A=-1:IFB=1THEN330 315 GOTO220 320 IFB=0THENPRINTCHR$(20);CHR$(20);:A=A-1 325 A=A-1 330 PRINTCHR$(20);:GOTO220 335 REM LAST LINE 340 PRINT" ":T=AD-(INT(AD/256)*256) 345 FORB=0TOA-1:T=T+A%(B):IFT>255THENT=T-255 350 NEXT 355 IFA%(A)<>TTHENGOSUB375:GOTO195 360 FORB=0TOA-1:POKEAD+B,A%(B):NEXT 365 PRINT:PRINT"YOU ARE FINISHED!":GOTO535 370 REM BELL AND ERROR MESSAGES 375 PRINT:PRINT"LINE ENTERED INCORRECTLY":PRINT:GOTO415 380 PRINT:PRINT"INPUT A 4 DIGIT HEX VALUE!":GOTO415 385 PRINT:PRINT"ENDING IS LESS THAN STARTING!":B=0:GOTO415 390 PRINT:PRINT"ADDRESS NOT WITHIN SPECIFIED RANGE!":B=0:GOTO415 395 PRINT:PRINT"NOT ZERO PAGE OR ROM!":B=0:GOTO415 400 PRINT"?ERROR IN SAVE":GOTO415 405 PRINT"?ERROR IN LOAD":GOTO415 410 PRINT:PRINT:PRINT"END OF ML AREA":PRINT 415 POKE54276,17:POKE54276,16:RETURN 420 OPEN15,8,15:INPUT#15,A,A$:CLOSE15:PRINTA$:RETURN 425 REM GET FOUR DIGIT HEX 430 PRINT:PRINTB$;:INPUTT$ 435 IFLEN(T$)<>4THENGOSUB380:GOTO430 440 FORA=1TO4:A$=MID$(T$,A,1):GOSUB450:IFT(A)=16THENGOSUB380:GOTO430 445 NEXT:B=(T(1)*4096)+(T(2)*256)+(T(3)*16)+T(4):RETURN 450 IFA$>"@"ANDA$<"G"THENT(A)=ASC(A$)-55:RETURN 455 IFA$>"/"ANDA$<":"THENT(A)=ASC(A$)-48:RETURN 460 T(A)=16:RETURN 465 REM ADRESS CHECK 470 IFAD>ENTHEN385 475 IFBENTHEN390 480 IFB<256OR(B>40960ANDB<49152)ORB>53247THEN395 485 RETURN 490 REM ADDRESS TO HEX 495 AC=AD:A=4096:GOSUB520 500 A=256:GOSUB520 505 A=16:GOSUB520 510 A=1:GOSUB520 515 RETURN 520 T=INT(AC/A):IFT>9THENA$=CHR$(T+55):GOTO530 525 A$=CHR$(T+48) 530 PRINTA$;:AC=AC-A*T:RETURN 535 A$="**SAVE**":GOSUB585 540 OPEN1,T,1,A$:SYS680:CLOSE1 545 IFST=0THENEND 550 GOSUB400:IFT=8THENGOSUB420 555 GOTO535 560 A$="**LOAD**":GOSUB585 565 OPEN1,T,0,A$:SYS690:CLOSE1 570 IFST=64THEN195 575 GOSUB405:IFT=8THENGOSUB420 580 GOTO560 585 PRINT" ":PRINTTAB(14)A$ 590 PRINT:A$="":INPUT"FILENAME";A$ 595 IFA$=""THEN590 600 PRINT:PRINT"TAPE OR DISK?":PRINT 605 GETB$:T=1:IFB$="D"THENT=8:A$="@0:"+A$:RETURN 610 IFB$<>"T"THEN605 615 RETURN 620 B$="CONTINUE FROM ADDRESS":GOSUB430:AD=B 625 GOSUB475:IFB=0THEN620 630 PRINT:GOTO195 635 B$="BEGIN SCAN AT ADDRESS":GOSUB430:AD=B 640 GOSUB475:IFB=0THEN635 645 PRINT:GOTO670 650 FORB=0TO7:AC=PEEK(AD+B):GOSUB505:IFAD+B=ENTHENAD=SR:GOSUB410:GOTO195 655 PRINT" ";:NEXTB 660 PRINT:AD=AD+8 665 GETB$:IFB$=CHR$(136)THEN195 670 GOSUB495:PRINT": ";:GOTO650