CPU実験室

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

モニタ移植

パタン修正した箇所を元に戻したところ、メモリテストは正常に続行するようになりました。
メモリ範囲の拡大やパタンをさらに変えて試験する必要がありますが、
今の開発環境ではプログラムの実装が非常にめんどくさいです。

というのはプログラム作成後ROMに焼かなければなりませんが、ROMをソケットから抜いて、
コード焼付け、またソケットに実装と32ビットバスなのでこれを4回繰り返さなければなりません。
さらにPLCCソケットはバネでコンタクトを取っているのでメーカのサイトを見ると保証挿抜回数は50回とあります
(PLCCのIC側はさらに厳しくてアルテラとかでは3回までとしている)
FlashROMなのでまだいいですがこれがDIPの紫外線消去EPROMだったらくじけてます。
ともかく早くROM内容をFIXしたいのでモニタを移植してSRAM上で開発をおこないます

モニタを移植する上での注意はシリアルI/Oのデータバスにスクランブルがかかっていることで
これは入出力時に以下のような256→256の変換テーブルを噛ましてビット並び替えをさせます

/* シリアル出力するデータの変換 */
const unsigned char cnv_tbl_out[]=
{
 0x00,0x20,0x40,0x60,0x80,0xA0,0xC0,0xE0,0x04,0x24,0x44,0x64,0x84,0xA4,0xC4,0xE4,
 0x01,0x21,0x41,0x61,0x81,0xA1,0xC1,0xE1,0x05,0x25,0x45,0x65,0x85,0xA5,0xC5,0xE5,
;;中略
 0x1A,0x3A,0x5A,0x7A,0x9A,0xBA,0xDA,0xFA,0x1E,0x3E,0x5E,0x7E,0x9E,0xBE,0xDE,0xFE,
 0x1B,0x3B,0x5B,0x7B,0x9B,0xBB,0xDB,0xFB,0x1F,0x3F,0x5F,0x7F,0x9F,0xBF,0xDF,0xFF
};

/* シリアル入力されたデータの逆変換 */
const unsigned char cnv_tbl_in[]=
{
 0x00,0x10,0x20,0x30,0x08,0x18,0x28,0x38,0x40,0x50,0x60,0x70,0x48,0x58,0x68,0x78,
 0x80,0x90,0xA0,0xB0,0x88,0x98,0xA8,0xB8,0xC0,0xD0,0xE0,0xF0,0xC8,0xD8,0xE8,0xF8,
;;中略
 0x07,0x17,0x27,0x37,0x0F,0x1F,0x2F,0x3F,0x47,0x57,0x67,0x77,0x4F,0x5F,0x6F,0x7F,
 0x87,0x97,0xA7,0xB7,0x8F,0x9F,0xAF,0xBF,0xC7,0xD7,0xE7,0xF7,0xCF,0xDF,0xEF,0xFF
};

V53ボードを開発したときのモニタをベースにシリアル入出力ルーチンを差し替えROMに焼きこみました

イメージ 1


とりあえず起動はするのですが何故か引数を持つコマンドが暴走します。
幸いL(ロード)コマンドとG(実行)コマンドは正常動作しているようなので
まずはROM焼きからは一時解放されました