1 'hexldr -- load com file 2 'copyright 1983 Michael M Rubenstein 3 'modified 1986 Jay Maynard [71036,1603] 4 MAXFILES=1:DIMB%(32) 5 ONERRORGOTO49 6 ER%=0:F$="":INPUT"File to load";F$ 7 IFF$=""THENMENU 8 OPENF$FORINPUTAS1 9 IFERTHEN6 10 ONERRORGOTO0 11 GOSUB33 12 CLOSE:OPEN"ldr$$$"FOROUTPUTAS1 13 PRINT#1,F$;",";AD:CLOSE 14 CLEAR256,AD:MAXFILES=1:DIMB%(32) 15 OPEN"ldr$$$"FORINPUTAS1 16 INPUT#1,F$,ST:CLOSE 17 KILL"ldr$$$.do" 18 EN=0 19 OPENF$FORINPUTAS1 20 GOSUB33 21 IFCN%=0THEN28 22 FORP%=1TOCN% 23 POKEAD,B%(P%) 24 AD=AD+1 25 NEXTP% 26 IFAD>=ENTHENEN=AD-1 27 GOTO20 28 EP=AD 29 L%=INSTR(F$,"."):IFL%THENF$=LEFT$(F$,L%-1) 30 PRINT"Top:";ST:PRINT"End:";EN:PRINT"Exe:";EP 31 SAVEMF$,ST,EN,EP 32 END 33 LINEINPUT#1,L$ 34 IFLEFT$(L$,1)<>":"THENM$="Invalid HEX file line":GOTO48 35 C%=0:L%=2:CK%=0 36 GOSUB42:CN%=B% 37 GOSUB42:AD=256*B%:GOSUB42:AD=AD+B%:GOSUB42 38 IFCN%=0THENGOSUB42:IFCK%=0THENRETURNELSEM$="Checksum error in EOF record":GOTO48 39 FORI%=1TOCN%:GOSUB42:B%(I%)=B%:NEXTI% 40 GOSUB42:IFCK%<>0THENM$="Checksum error":GOTO48 41 RETURN 42 GOSUB43:B%=16*B1%:GOSUB43:B%=B%+B1%:CK%=(CK%+B%)AND255:RETURN 43 B1%=ASC(MID$(L$,L%,1)):L%=L%+1 44 IFB1%>=48ANDB1%<=57THENB1%=B1%-48:RETURN 45 IFB1%>=65ANDB1%<=70THENB1%=B1%-55:RETURN 46 M$="Invalid hex digit" 47 GOTO48 48 PRINTM$:CLOSE:END 49 ER%=-1:RESUMENEXT