CPU実験室

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

コード配置

バスのアクセス状況の確認のために安定にループするプログラムを作成します。例によってもっとも単純なプログラム、JUMP $から始めます。これはx86系でも何度も書いていてコードも覚えてしまいました。

          EB FE   JMP $

これを486CPUのリセットベクタに配置します。ROMへのリロケーションはシステム設計により変わるのでT805につづいてこちらも備忘録でまとめておきました。

 

32ビットアドレス空間0x***80000~0x***FFFFF512kbyteに16ビット幅ROM2個でコードが配置されます

リセットベクタ:0xFFFFFFF0はLOWER側、ROM0に存在するのでここからリトルエンディアンでEB/FEを焼き込みます

ただしワードROMは16bit幅1ワード単位でアドレスが振られているのでROMとしてのスタートアドレスは0x1FFFCとなること、ワード内での表記上はビッグエンディアン0xFEEBとなるのでここらへんが考えているとこんがらがります。

ROMライタのバッファにコードを転送したとき1バイト8ビットオリエンテッドでダンプすると、どこにどういう順番で書かれるか直感的に判りません

 

おなじバイナリイメージをワードROMに書くことに備えて、1ワード16ビットオリエンテッドのダンプモードを組み込みました