10 ' hexldr -- load com file 20 ' copyright 1983 30 ' Michael M Rubenstein 40 MAXFILES=1:DIM B%(32) 50 ON ERROR GOTO 5000 60 ER%=0:F$="":INPUT "File to load";F$ 70 IF F$="" THEN MENU 80 OPEN F$ 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,F$;",";AD:CLOSE 150 CLEAR 256,AD:MAXFILES=1:DIM B%(32) 160 OPEN "ldr$$$"FOR INPUT AS 1 170 INPUT#1,F$,ST:CLOSE 180 KILL "ldr$$$.do" 185 EN=0 190 OPEN F$ 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 240 NEXT P% 250 IF AD>EN THEN EN=AD 270 GOTO 200 280 EP=AD 285 L%=INSTR(F$,"."):IF L% THEN F$=LEFT$(F$,L%-1) 287 PRINT "Top:";ST:PRINT "End:";EN:PRINT "Exe:";EP 290 SAVEM F$,ST,EN,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