Windows上にPCemの開発環境を構築するところからいきなり大変だった。結局、最新のdevブランチじゃなくてreleaseブランチのPCem V17のソースコードからMINGW環境でビルドした。これに相当な時間が掛かった。

PS/55モデル5550-S/T/Vのエミュレーション環境を作りたいので、ベースとしたのはPS/2 model 70, 80あたり。ROMファイルのパス名だけ変更してソースコードはそのまま流用すれば使えるかと思ったら、そんな簡単じゃなかった。

エミュレーターを起動すると225というエラーコードが出る。IBM PC and PS/2 - Error codesによれば、”225 Some of your memory may be defective or not fast enough for your machine.“とのこと。これの原因はすぐ思い付いた。システム装置に装着されているメモリーの認識方法が model 70や80と違って、PS/55 5550-S/T/VではメモリーカードのIDを読み取って容量を認識するので、これをエミュレーションする必要があった。

この問題をパスしてメモリーカウントが表示されたことに喜んだのも束の間、今度は160, 603, 161, 163とエラーコードが4つ表示された。F1キーで処理を続行することはできるが、画面が消去された後、リファレンスディスケットを含めフロッピーからブートできずに途中で止まる。

160は”System Board ID not recognized.“。残りはQ35436: IBM PC, XT, AT, and PS/2 Error Codes | KnowledgeBase Archiveによれば、次のように書かれている。

1xx     System Board Errors
---------------------------
  161  System Options Error - (Run SETUP) Battery failure
  163  Time and date not set - (Run SETUP

6xx    Floppy Disk Drive Errors
--------------------------------
  603  Disk size error

まず、システムボードIDというのはMicroChannelコントローラーから取得できるシステムボードのPOS IDのこと。IDはリファレンスディスケットの情報から知ることができたので、あとはPOS IDとして返すだけであって、既存のコードを流用できたからエミュレーションするのは難しくなかった。

問題はDisk size errorの方。何が原因なのか思い当たる節がない。

症状をもっと詳しく調べてみると、2DDフォーマットのDOSは起動できることが分かった。しかし、2HDフォーマットのディスクは起動ファイルの読み込み中に止まってしまう。

Seek drive=0 track=0 sectors=18 sector_size=512 sides=2
Disk seeked to track 0
 Read FDC 03F0 86 E000:39A7 58467725 20 58467725 rate=0  0 Status Register A
 Write FDC 03F5 08 E000:39D3 58467739 20 58467739 rate=0  0 CMD:Sense interrupt
Sense interrupt status 0
[pcem55] FDC Read: 3F5 20 E000:3914 
[pcem55] FDC Read: 3F5 00 E000:3914 
 Write FDC 03F5 E6 E000:37FB 58506741 20 58506741 rate=0  0 CMD:Read Data
 Write FDC 03F3 88 E000:3451 58506979 20 58506979 rate=0  0
Read a sector track=0 head=0 sector=1 eot=18 [drive=0 rate=0]
Read data 1
 Read FDC 03F0 86 E000:39A7 58674943 20 58674943 rate=0  1 Status Register A
[pcem55] FDC Read: 3F0 86 E000:39A7 
[pcem55] FDC Read: 3F5 00 E000:3914 
[pcem55] FDC Read: 3F5 00 E000:3914 
[pcem55] FDC Read: 3F5 00 E000:3914 
[pcem55] FDC Read: 3F5 00 E000:3914 
[pcem55] FDC Read: 3F5 00 E000:3914 
[pcem55] FDC Read: 3F5 02 E000:3914 
[pcem55] FDC Read: 3F5 02 E000:3914 
 Read FDC 03F3 80 E000:35C2 58675463 20 58675463 rate=0  1 Drive Status Register
 Write FDC 03F5 03 E000:37FB 58676118 20 58676118 rate=0  0 CMD:Specify
Write DMA 000C 46 E000:34F7
Write DMA 000B 46 E000:34FB
Write DMA 0004 00 E000:3517
Write DMA 0004 F8 E000:351D
Write DMA 0005 FF E000:3546
Write DMA 0005 01 E000:354C
Write DMA 000A 02 E000:3551
 Read FDC 03F1 C1 E000:3772 58676427 20 58676427 rate=0  0 Status Register B
 Write FDC 03F2 1C E000:3792 58676440 20 58676440 rate=0  0 Digital Output Register
 Write FDC 03F5 E6 E000:37FB 58676476 20 58676476 rate=0  0 CMD:Read Data
 Write FDC 03F3 88 E000:3451 58676718 20 58676718 rate=0  0
Read a sector track=0 head=0 sector=2 eot=9 [drive=0 rate=0]
 Read FDC 03F0 96 E000:39A7 59599542 20 59599542 rate=0  1 Status Register A
[pcem55] FDC Read: 3F0 96 E000:39A7 
[pcem55] FDC Read: 3F5 00 E000:3914 
[pcem55] FDC Read: 3F5 00 E000:3914 
[pcem55] FDC Read: 3F5 00 E000:3914 
[pcem55] FDC Read: 3F5 04 E000:3914 
[pcem55] FDC Read: 3F5 00 E000:3914 
[pcem55] FDC Read: 3F5 01 E000:3914 
[pcem55] FDC Read: 3F5 02 E000:3914 

途中で15セクター/トラック(2HD)が9セクター/トラック(2DD)の読み取りになってしまっている。なぜ?リファレンスディスケットから起動しないことにはCMOSの設定を変更できないから、あと問題がありそうなのはI/Oポートに未実装があるくらいしか考えられないが。


※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!