フライトシミュレーター The COCKPITのBASIC MASTER LEVEL3のマシン語部分の入力です。
QB64で、チェック&バイナリ生成プログラムを作りました。
OCRで読み取って作成されたテキストファイルは、結構間違いがあります。
・「1」と「I」
・「0」と「O」
・「8」と「B」
・「8」と「S」「e」など
これらを、チェックプログラムでわかりやすくし、せっせと修正していきます。
SCREEN 12
PRINT "MAKE HBML3 MACHINE BINARY";
OPEN "cp_L3.BAS" FOR INPUT AS #1
WHILE (EOF(1) = 0 AND ls$ <> "'HBML3")
ls$ = ""
LINE INPUT #1, s$
ls$ = LEFT$(s$, 6)
WEND
IF EOF(1) <> 0 THEN GOTO Label01
PRINT "Find HBML3 Machine Language"
ferr = 0
OPEN "HBML3_BI" FOR OUTPUT AS #2
icount = 0
WHILE (EOF(1) = 0 AND ferr = 0)
LINE INPUT #1, ls$
IF LEN(ls$) > 1 THEN
adr$ = MID$(ls$, 1, 5)
COLOR 15: PRINT adr$; ":";
isum = 0
FOR il = 0 TO 15
s$ = MID$(ls$, 7 + il * 3, 3)
ib = VAL("&h" + s$)
IF ib = 0 AND s$ <> "00 " THEN
COLOR 4: ' ferr = 1
ELSE
PRINT #2, CHR$(ib);
COLOR 2
END IF
PRINT s$;
isum = isum + ib
NEXT il
ssum$ = MID$(ls$, 7 + 48, 3)
PRINT ssum$;
IF VAL("&H" + ssum$) <> (isum AND 255) THEN
PRINT " Error "; RIGHT$("0" + HEX$(isum), 2)
ELSE
PRINT
END IF
END IF
icount = icount + 1
IF icount > 16 THEN
WHILE (INKEY$ <> ""): WEND
WHILE (INKEY$ = ""): WEND
icount = 0
PRINT: PRINT
END IF
WEND
CLOSE #2
Label01:
CLOSE #1
END