EtchedPixels/EmulatorKit でMIKBUGを動かしてみた(1)

BASICMASTER

6800系の開発テストには、Fuzix-Compiler-Kit/testにあるemu6800を使っているのだが、これは文字出力はできても入力ができない。

言語処理系のテストでは出力だけでも良いのだけど、ライブラリのテストや、ちょっとしたゲームを動かそうと思ったら機能不足である。

Amsterdam Compiler Kitには、CやBASICで書かれたゲームがexampleとして含まれていて、テストのために emu6800 にパッチを当てて使っている。

パッチを当てて使うのもイマイチなので、別のエミュレーターを探してみた。EtchedPixels氏のEmulatorKitにはRC2014というハードウェアのエミュレータがあり、MIKBUGやFLEXも動くらしいので試してみた。


憧れの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にぶち当たるのだ。


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   
*

続く

BASICMASTER

Posted by ず@沖縄