EtchedPixels/EmulatorKit でMIKBUGを動かしてみた(4)emu6800も使ってみる
rcbus-6800+MIKBUGでプログラムが動くようになったが、デバッグが面倒くさい。
emu6800のように逆アセンブルしながら動作できるとデバッグしやすいので、emu6800にMIKBUG、Altair680の互換サブルーチンを仕込んでみた。
EmulatorKit全部を使うのも大変なので、emu6800関連ファイルだけを別リポジトリにした。ライセンスはオリジナルと同じ(GPLv3)。
仕様・使えるサブルーチン
開始アドレスは $0100 固定。これも指定できるようにした方がいいな。あとで考える。
1文字入力・出力・キー入力の有無確認の3つのサブルーチンが使える。
- 入力: $FF00 および $E1AC。前者はAccB、後者はAccAに1文字入力する。エコーバックしない。
- 出力: $FF81 および $E1D1。両方ともAccAの8bit目をマスクして表示(ANDA #$7F)。
- キーチェック: $FF24。キーボードが押されていたら C=1
MIKBUGのINEEE/OUTEEE、Altair680のINCH/OUTCH/POLCAT相当のルーチンである。
動作例
$ emu6800 6800 basic680.b MEMORY SIZE? 16384 TERMINAL WIDTH? 80 WANT SIN-COS-TAN-ATN? Y 9946 BYTES FREE MITS ALTAIR 680 BASIC VERSION 1.1 REV 3.2 COPYRIGHT 1976 BY MITS INC. OK 10 FOR Y=-12 TO 12 20 FOR X=-39 TO 39 30 CA=X*0.0458 40 CB= Y*0.08333 50 A=CA 60 B=CB 70 FOR I=0 TO 15 80 T=A*A-B*B+CA 90 B=2*A*B+CB 100 A=T 110 IF (A*A+B*B)>4 THEN GOTO 200 120 NEXT I 130 PRINT " "; 140 GOTO 210 200 IF I>9 THEN I=I+7 205 PRINT CHR$(48+I); 210 NEXT X 220 PRINT 230 NEXT Y LIST (略) OK RUN 000000011111111111111111122222233347E7AB322222111100000000000000000000000000000 000001111111111111111122222222333557BF75433222211111000000000000000000000000000 000111111111111111112222222233445C 643332222111110000000000000000000000000 011111111111111111222222233444556C 654433332211111100000000000000000000000 11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000 111111111111122223333334469 D 6322111111000000000000000000000 1111111111222333333334457DB 85332111111100000000000000000000 11111122234B744444455556A 96532211111110000000000000000000 122222233347BAA7AB776679 A32211111110000000000000000000 2222233334567 9A A532221111111000000000000000000 222333346679 9432221111111000000000000000000 234445568 F B5432221111111000000000000000000 864332221111111000000000000000000 234445568 F B5432221111111000000000000000000 222333346679 9432221111111000000000000000000 2222233334567 9A A532221111111000000000000000000 122222233347BAA7AB776679 A32211111110000000000000000000 11111122234B744444455556A 96532211111110000000000000000000 1111111111222333333334457DB 85332111111100000000000000000000 111111111111122223333334469 D 6322111111000000000000000000000 11111111111111112222233346 D978 BCF DF9 6556F4221111110000000000000000000000 011111111111111111222222233444556C 654433332211111100000000000000000000000 000111111111111111112222222233445C 643332222111110000000000000000000000000 000001111111111111111122222222333557BF75433222211111000000000000000000000000000 000000011111111111111111122222233347E7AB322222111100000000000000000000000000000 OK
-d オプションを付けると、逆アセンブルしながら実行する。
$ emu6800 -d 6800 basic680.b 0100 : ----I- 00|00 0000 0000 | JMP 0112 0112 : ----I- 00|00 0000 0000 | JMP 18F9 18F9 : ----I- 00|00 0000 0000 | LDX #FFFF 18FC : ---NI- 00|00 FFFF 0000 | STX 8A [0000] 18FE : ---NI- 00|00 FFFF 0000 | LDS #1B1B 1901 : ----I- 00|00 FFFF 1B1B | STS 82 [0000] 1903 : ----I- 00|00 FFFF 1B1B | CLR 0111 [00] 1906 : --Z-I- 00|00 FFFF 1B1B | JSR 0834 0834 : --Z-I- 00|00 FFFF 1B19 | LDAA #0D 0836 : ----I- 0D|00 FFFF 1B19 | STAA 0B [00] 0838 : ----I- 0D|00 FFFF 1B19 | BSR 0895 [0D] 0895 : ----I- 0D|00 FFFF 1B17 | TST 0111 [00] 0898 : --Z-I- 0D|00 FFFF 1B17 | BNE 08B1 [0D] 089A : --Z-I- 0D|00 FFFF 1B17 | PSHA 089B : --Z-I- 0D|00 FFFF 1B16 | CMPA #20 089D : C--NI- 0D|00 FFFF 1B16 | BCS 08AA [0D] 08AA : C--NI- 0D|00 FFFF 1B16 | PULA 08AB : C--NI- 0D|00 FFFF 1B17 | PSHB 08AC : C--NI- 0D|00 FFFF 1B16 | TAB 08AD : C---I- 0D|0D FFFF 1B16 | JSR FF81 FF81 : C---I- 0D|0D FFFF 1B14 | PSHA FF82 : C---I- 0D|0D FFFF 1B13 | ANDA #7F FF84 : C---I- 0D|0D FFFF 1B13 | STAA FEFE [FF] FF87 : C---I- 0D|0D FFFF 1B13 | PULA FF88 : C---I- 0D|0D FFFF 1B14 | RTS 08B0 : C---I- 0D|0D FFFF 1B16 | PULB 08B1 : C---I- 0D|00 FFFF 1B17 | RTS
デバッグが だいぶ楽になった。ツール大事。
リンク
- EtchedPixels/Fuzix-Compiler-Kit: Fuzix C Compiler Project – Codeberg.org
- zu2/emu6800-mikbug: emu6800 for mikbug
続く




ディスカッション
コメント一覧
まだ、コメントがありません