100 STRING 78,76 105 PRINT:PRINT "**HEX FILE LOAD**" 106 INPUT "MEMORY OFFSET? ",MOS 110 PRINT : PRINT "SEND FILE..." 120 INPUT $(0) : IF ASC($(0),1)=ASC( : ) THEN 140 : REM CHECK COLON 130 PRINT "BAD CARD IMAGE, MUST START WITH ':' -ABORT" : END 140 A=ASC($(0),2) : B=ASC($(0),3) : REM # DATA BYTES 150 PUSH A : GOSUB 310 : POP A : PUSH B : GOSUB 310 : POP B 160 CNTB=(B+(A*16)) 170 ZZZ=CNTB : CNT=CNTB*2 : CIDX=1 175 IF CNTB=0.AND.ASC($(0),9)=31H THEN 360 180 FOR I=4 TO CNT+8 STEP 2 : REM CONV ALL but CHECKSUM 190 A=ASC($(0),I) : PUSH A 195 GOSUB 310 : POP A : REM 1ST NIBBLE 200 B=ASC($(0),I+1) : PUSH B 205 GOSUB 310 : POP B : REM 2ND NIBBLE 210 C=16*A+B : ZZZ=ZZZ+C 215 ASC($(0),CIDX)=C : CIDX=CIDX+1 : NEXT I 220 A=ASC($(0),CNT+10) : B=ASC($(0),CNT+11) : REM CHECKSUM 230 PUSH A : GOSUB 310 : POP A : PUSH B : GOSUB 310 : POP B 240 CCC=B+(A*16) 250 ZZZ=ZZZ.AND.0FFH : ZZZ=ZZZ.XOR.0FFH : ZZZ=ZZZ+1 : CHK=ZZZ.AND.0FFH 260 IF CHK<>CCC THEN GOTO 350 270 MEM=ASC($(0),1) : MEM=MEM*256+ASC($(0),2) 280 MEM=MEM+MOS : IF MEM>MTOP THEN 300 290 PRINT "IMAGE+OFFSET ADDRESS < OR = MTOP...ABORT" : END 300 MEM=MEM-4 : FOR I=4 TO CNTB+3 : XBY(MEM+I)=ASC($(0),I) : NEXT I 305 GOTO 120 310 REM HEX TO BIN 320 POP AA : IF AA>60H THEN AA=AA-20H : REM TO UPPER CASE 330 AA=AA-30H : IF AA>10H THEN AA=AA-7 : REM ASCII BIAS 340 PUSH AA : RETURN 350 PRINT "CKSUM=", : PH0. CCC, : PRINT "COMPUTED=", : PH0. CHK : END 360 ?"DONE-IN IDLE MODE!":IDLE:END:rem stop here for configuration changes