CPU実験室

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

モニタROMプログラムFIX

ボード上最後まで確認できていなかったIOP:8089、デバッグがご無沙汰していましたがちょっと進展です

8086を含めてx86系のCPUは物理アドレスの最末端、残り16バイトのところにリセットベクタが存在するのは周知ですが、実はその後ろの部分もRESERVEDになっていて0xFFFF6~には8089の動作設定パラメータのポインタが割り付けられています。
 
 
イメージ 1
 
このように
 system configuration pointer
  →system configuration block
    →channel control block
      →channel parameter block
 
という風に多重のリスト構造になっていて、このうち場所が固定されているsystem configuration pointerとハードウェア構成によって一意に決定する固定値のsystem configuration blockはROMに書き込んでしまいます
 
現状のモニタROMの最終256バイトの部分に追加書込みをしてROMソケットに直接差し込みました。
 
イメージ 3

 


モニタROM自身をダンプしてみるとFFFF6番地からsystem configuration pointer(FFF00番地をポイント)
FFF00番地からsystem configuration block(とりあえずSRAMの後ろの方、18000番地をポイント)がセットされているのがわかります。
 

 

イメージ 2


放置していたのをなんで急に思い立って始めたか言うと、実はモニタROMが暫定のため使っていた40ピンZIFソケットを奪い取ってMCS-85プロジェクトで使いたいためだけでした・・・