CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

原始モニタ作成

CPUおよび周辺がとりあえず動作できているようなので一安心。
これから色々なアプリケーションを動かそうと思うのですが、
今までのようにアセンブラで組んでコードを拾い出してROMに焼いてセット・・
では日が暮れてしまうので、外部からプログラムを転送できるシステムにします。

つまりボード側にOSというかモニタプログラムを持たせるわけですが
いきなり高機能のモニタを組み込むのではなく、まず最低限機能のモニタ(原始モニタ)
を書き込んで、この環境でモニタ自身を開発デバッグしていくことにします。
開発言語はLSIC-86を使います。これにはロケーションが指定できるリンカや
ROM化用のスタートアップルーチンが付属していてROM化が容易です。

原始モニタに要求される機能は
(1)シリアル受信したデータをRAMに展開する
(2)RAM上のコードに制御を移す

の2点のみなのでプログラムを書くと

void main(void)
{
char far*adrs;
devini(); /*周辺の初期化*/
if(dip()){ /*DIPスイッチがONならユーザルーチンへジャンプ*/
_asm("\n\tMOV AX,DGROUP\n\tMOV ES,AX\n\tMOV DS,AX\n\tjmpf 0000h,200h\n");
}
adrs=(char far *)0x00002000;
/*DIPスイッチがOFFならシリアル受信したデータを2000番地からセット*/
for(;;){
*adrs++=getcom();
}
}

これをROMに書いてボードにセットしたあとアプリケーションをDLLし
DIPスイッチをONにして再起動させればアプリケーションが動作します