EtchedPixels/EmulatorKit でMIKBUGを動かしてみた(1)
6800系の開発テストには、Fuzix-Compiler-Kit/testにあるemu6800を使っているのだが、これは文字出力はできても入力ができない。
言語処理系のテストでは出力だけでも良いのだけど、ライブラリのテストや、ちょっとしたゲームを動かそうと思ったら機能不足である。
Amsterdam Compiler Kitには、CやBASICで書かれたゲームがexampleとして含まれていて、テストのために emu6800 にパッチを当てて使っている。
パッチを当てて使うのもイマイチなので、別のエミュレーターを探してみた。EtchedPixels氏のEmulatorKitにはRC2014というハードウェアのエミュレータがあり、MIKBUGやFLEXも動くらしいので試してみた。
- Fuzix-Compiler-Kit/test at main · EtchedPixels/Fuzix-Compiler-Kit
- chibicc-6800-v1/parse.c at main · zu2/chibicc-6800-v1
- zu2/ack-6800: The Amsterdam Compiler Kit for MC6800
- EtchedPixels/EmulatorKit: A collection of emulators mostly of retrobrew style systems
憧れのMIKBUG
古のコンピュータ雑誌のMC6800の記事では、プログラムが動く環境としてMIKBUGやその互換環境が指定されているものも多かった。6800で一番多かったのはH68/TRで、その次がMIKBUGだと思う。私が使っていたベーシックマスターの記事が増えるのは1980年以降だ。
MIKBUGは Motorola MEK6800、SWTPC 6800 でも使われ、ERIS6800にもMIKBUG互換モニタが搭載されている。
黎明期に日本の雑誌で紹介されたSWTPC 6800 4K BASICもMIKBUGで動く(I/OとASCIIの掲載が同時だったんだな)。
ベストセラーになった ブルーバックスの「マイコンピュータをつかう」掲載の電大版Tiny BASICもMIKBUGの上で動作する。
とにかく、古い6800のプログラムを探すとMIKBUGにぶち当たるのだ。
- I/O誌 1977年9月号 SWTPC 6800 4K BASIC
- ASCII誌1977年9月号(創刊3号) 6800 4K BASIC
- マイコンピュータをつかう : 周辺機器と活用の実際 (ブルーバックス) – 国立国会図書館デジタルコレクション(1978年4月)
- zoggins/MC6800: My collection of code and docs for the Corsham Tech 6800/6809.
EmulatorKit/rcbus-6800
EmulatorKitにはrcbus-6800というエミュレーターが含まれている。RCBus は、さまざまなCPUが動くように作られたBusで、往年のS-100 Busみたいなものだ(と言われても、ご年配の方でないとわからんか)。
rcbus-6800 は RAM 32K ($0000-$7FFF)、 ROM 32K ($8000-$FFFF)のシステムを想定しており、I/O空間は $FE00-$FEFF の256バイトに存在する。
ROM領域はバンク切り替えでき、0-3の4バンク。1-3はRAMとしても使える(0はROM固定)。RAM 512Kモードもあるようだ。
EmularKit rcbus-6800でMIKBUGを動かす
./rcbus-6800 -r 6800.rom とすると、6800.rom を読み込んで起動する。6800.romは$8000-$FFFFまでの32KBである必要がある。MIKBUGは256バイトしかないのに大盤振る舞いだ。
検索するとMIKBUGを提供しているサイトはいくつもある。MIKBUGにはいくつかの変種があって、I/OがPIAのものとACIAのものがある。
rcbus-6800はACIAをエミュレートするので、ACIA版が必要である。
MIKBUG for SBC6800 がACIA版なので、これを使う。
MIKBUGが想定しているACIAの場所が違うのと、ROMが$8000から始まる必要があるので、パッチを当てる。
diff -ub mikbug.asm mikbug-rcbus-6800.asm --- mikbug.asm 2025-12-20 16:05:41.676004544 +0900 +++ mikbug-rcbus-6800.asm 2025-12-20 13:21:44.919348097 +0900 @@ -12,11 +12,13 @@ * CC B A X P S * * ADDRESS -ACIACS EQU $8018 -ACIADA EQU $8019 +ACIACS EQU $FEA0 +ACIADA EQU $FEA1 VAR EQU $1F00 * * OPT MEMORY + ORG $8000 + NOP ORG $E000 * * I/O INTERRUPT SEQUENCE
Arakula/A09: A09 6800/6801/6809/6309/68HC11 Assembler でアセンブルする。メモリが連続していないので、-oFBG が必要。
$ a09 -oM00 -oFBG -l mikbug.lst mikbug-rcbus-6800.asm
できた mikbug.b を rcbus-6800 に喰わせると MIKBUG が起動する。^\ で終了 (^Cは効かない)。
プロンプトが * で、起動メッセージも何もなくてシンプル。
$ ./rcbus-6800 -r mikbug.b *M E000 *E000 FE *
続く





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