10 REM BINHEX - HEX TO BINARY/BINARY TO HEX FILE CONVERTER
20 REM Orignially by Tim Mann
30 CLS:PRINT:PRINT"Binhex - HEX to binary/Binary to HEX File converter":PRINT
40 GOSUB 1000
50 PRINT"Type 1 to convert a binary file to hex"
60 PRINT"     2 to convert a hex file to binary"
70 PRINT:INPUT D
80 PRINT
90 IF D<>1 AND D<>2 THEN GOTO 50
100 ON D GOTO 400,200
110 GOTO 50
200 LINE INPUT "Hex file name: ";HF$
210 LINE INPUT "Binary file name: ";BF$
220 OPEN"I",1,HF$
230 OPEN"O",2,BF$
240 IF EOF(1) THEN 310
250 LINE INPUT#1,D$
260 IF D$="" OR D$="OK" THEN GOTO 240
270 FOR I=1 TO LEN(D$) STEP 2
280 DN=FND2(MID$(D$,I,2)):SU=SU+DN
290 PRINT#2,CHR$(DN);
300 NEXT I:GOTO 240
310 IF SU>255 THEN CS=SU-INT(SU/256)*256 ELSE CS=SU
320 CS$=FNH2$(CS)
330 CLOSE:PRINT:PRINT"Done - Checksum = *";CS$:SU=0
340 GOTO 50
400 LINE INPUT "Binary file name: ";BF$
410 LINE INPUT "Hex file name: ";HF$
420 OPEN"RO",1,BF$,1
430 OPEN"O",2,HF$
440 FIELD 1,1 AS F$
450 FOR I=1 TO 30
460 IF EOF(1) THEN GOTO 530
470 GET 1
480 DN=ASC(F$):SU=SU+DN
490 PRINT#2,FNH2$(DN);
500 NEXT I
510 PRINT#2,""
520 GOTO 450
530 PRINT#2,""
540 CLOSE
550 IF SU>255 THEN CS=SU-INT(SU/256)*256 ELSE CS=SU
560 CS$=FNH2$(CS)
570 PRINT:PRINT"Done - Checksum = *";CS$:SU=0
580 GOTO 50
1000 DEF FNH1$(X)=MID$("0123456789ABCDEF",(X AND 15)+1,1)
1010 DEF FNH2$(X)=FNH1$(FIX(X/16))+FNH1$(X)
1020 DEF FND1(X$)=INSTR("123456789ABCDEF",LEFT$(X$,1))
1030 DEF FND2(X$)=FND1(RIGHT$(X$,1))+16*FND1(RIGHT$(X$,2))
1040 RETURN
