フライトシミュレーター 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