40 MAXFILES=1:DIMB%(32) 50 ON ERRORGOTO5000 60 ER%=0:OPEN "PRN100" FOR INPUT AS 1 90 IF ER THEN 60 100 ON ERROR GOTO 0 110 GOSUB 1000 130 CLOSE:OPEN "ldr$$$" FOR OUTPUT AS 1 140 PRINT#1,AD:CLOSE 150 CLEAR 256,AD:MAXFILES=1:DIM B%(32) 160 OPEN "ldr$$$"FOR INPUT AS 1 170 INPUT#1,ST:CLOSE 180 KILL "ldr$$$.do" 185 EN=0 190 OPEN "PRN100" FOR INPUT AS 1 200 GOSUB 1000 210 IF CN%=0 THEN 280 220 FOR P%=1 TO CN% 230 POKE AD,B%(P%) 235 AD=AD+1:CK=CK+B%(P%) 240 NEXT P% 250 IF AD>EN THEN EN=AD 270 GOTO 200 280 EP=AD 285 IFCK<>373899THEN"Load Failed -- Try Again":END 286 PRINT"Load Successful!" 287 PRINT "Top:";ST:PRINT "End:";EN:PRINT "Exe:";EP 290 SAVEM "PRINT",EP,EP,EP 300 END 1000 LINEINPUT#1,L$ 1010 IF LEFT$(L$,1)<>":" THEN M$="Invalid HEX file line":GOTO 4000 1020 C%=0:L%=2 1030 GOSUB 2000:CN%=B% 1035 GOSUB 2000:AD=256*B%:GOSUB 2000:AD=AD+B%:GOSUB 2000:IF CN%=0 THEN RETURN 1040 FOR I%=1 TO CN%:GOSUB 2000:B%(I%)=B%:NEXT I% 1050 RETURN 2000 GOSUB 2100:B%=16*B1%:GOSUB 2100:B%=B%+B1%:RETURN 2100 B1%=ASC(MID$(L$,L%,1)):L%=L%+1 2200 IF B1%>=48 AND B1%<=57 THEN B1%=B1%-48:RETURN 2210 IF B1%>=65 AND B1%<=70 THEN B1%=B1%-55:RETURN 2220 M$="Invalid hex digit" 2230 GOTO 4000 4000 PRINT M$:CLOSE:END 5000 ER%=-1:RESUME NEXT