CPU実験室

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

FPU実装

コプロセッサ30387DXに与える信号線が準備できたのでソケットに挿込みました
イメージ 1


まだ動作は確認できていませんがひとつチェックする方法があります。
ROMに焼きこんであるモニタはLSIC-86で記述していますが、ビルド時にリンクされる
スタートアップルーチンの中に数値演算コプロセッサの存在をチェックするルーチンが含まれています
;check if 8087 exists
	FNINIT
	MOV	[_8087_].W,5A5AH
	FNSTSW	[_8087_]
      :
      :
    途中省略
      :
      :
	MOV	[_8087_].W,1	; with 80x87
	FWAIT
	JMP	_90
80:
	MOV	[_8087_].W,0	; without 8087
90:

コプロセッサが存在すると_8087_というフラグに1をセットし
浮動小数点演算ライブラリの中で自動的にソフト処理か8087コードを使用するかを
切り替えているようです。

_8087_の位置はMAPファイルによると0x100番地なので、ここをダンプすると

イメージ 2


0x0001がセットされており確かにコプロセッサが認識されているようです