IBM PS/55 モデル5570-S 仕様とディスプレイ・アダプター

標準構成で2台の3.5インチFDDと70MBのハードディスクを内蔵し、当時にしては豪華です。報道発表資料や広告などに書かれている「最小構成223万円から」というのは、後述するオプションのうち使用に必須となる表示装置アダプター(4773089)、カラーディスプレイ(5574C02)、キーボード(5576001)を合わせた価格のようです。
本文を読む…

240807 PS/55エミュ製作 [42]86Boxのビルド環境を準備する

エミュレーターはだいたい完成したので公開の準備をしていたのだけど、最近ささやかに話題の86Boxに統合できないかと、ふと思った。

Windows + MSYS2上でのビルド環境の構築方法は下の2つのページが参考になった。

無事に86Boxをソースコードからバイナリ生成できたところで、私が書いたソースコードの移植に取りかかっているのだが、PCemとは基本構造は同じなんだけど色々と拡張されていて、思ったより書き直す必要がある部分は多い。1日では終わりそうにないねぇ。

240802 PS/55エミュ製作 [41]PS/55のモニターID検出方式

Image: 240802 PS/55エミュ製作 [41]PS/55のモニターID検出方式
最近、OS/2のDDK (Driver Development Kit)を見つけて、これにディスプレイ・アダプターに関するヒントがワンチャンあればなぁ、でもこれは日本独自仕様だからないだろうな、と思いながら調べていたら、ディスプレイ・アダプターの内部レジスターが少しだけ分かる資料を見つけた。
本文を読む…

240730 うみねこのなく頃に咲 (PS4)

Image: 240730 うみねこのなく頃に咲 (PS4)

最近、にじの新人vtuberを色々見ているので誰だったか忘れたけど、誰かが「うみねこはいい!」と熱弁していて、原作準拠ならコンシューマー版はボイスがあるからおすすめだということで、PS4版うみねこのなく頃に咲を買ってきた。内容が猟奇よりのサスペンスで、17禁(CERO D)のビジュアルノベルということあってコアな作品だが、私が知るだけでも何人かがうみねこ好きを公言しているので、ある種の沼なのかもしれない。

ミステリーサスペンスの作品を自分で体験すること自体がとても久しぶりなのですが、話が探偵ものだと思ったら、ファンタジーなのかバトルものなのかと、翻弄されています。言い回しがいかにもひぐらしと同じ作者だと思わせるんだけど、そこに著名な声優の迫真の演技でのボイスが入っているから、いっそう滑稽で面白い。

この夏はこれを読み切るのが目標になりそう。続きが気になって仕方ないので、読み切れるでしょう。

240728 PS/55エミュ製作 [40]PS/55のモノクロモニター判別

Image: 240728 PS/55エミュ製作 [40]PS/55のモノクロモニター判別
最近、こればかりにずっと掛かりっきり。OS/2 J1.3はだいたい正しく表示されるようになった。2バイト文字が表示されなかった問題は、OS/2のフォントドライバーにフォントROMの署名チェックがあって、私が使用していたえせROMデータ(DOS/Vのフォントから作成したもの)ではパスできていなかったことが原因だった。
本文を読む…

240720 PS/55エミュ製作 [39]OS/2は起動するけど表示の修正が必要

Image: 240720 PS/55エミュ製作 [39]OS/2は起動するけど表示の修正が必要
Windows 3.0は8色モードと256色モードの識別方法を変えたら色が正しく表示されるようになった。反転表示も問題ないのでエミュレーションの精度はDOSBoxを上回っている。上のスクリーンショットでは横長い黒線が一本残っているが、画面の差分更新プログラムを修正すれば直るだろう。
本文を読む…

240712 応急手当の講習を受ける

Image: 240712 応急手当の講習を受ける

施設管理者たるものは、AEDや心肺蘇生をためらいなくできるようにならねばならない、ということで、会社の命で救命講習を受けてきた。

心肺蘇生をやるのは、数年前に酸素欠乏・硫化水素危険作業主任者の講習を受けたとき以来だった。あなたが公園にいたとき、オフィスにいたとき、商業施設にいたとき、倒れている人を見かけた、といったシナリオで繰り返しやったことで、私はそこそこ自信を付けたと思う。

ブルアカの期間イベで心肺蘇生の話が出てきて、私にとってはホットな話題だった。さすがに人工呼吸は、現在はCOVIDの影響で厚生労働省が「人工呼吸は行わなくても良い」と指導しているらしく、講習でも人工呼吸は演技だけで終わった。前回の講習がCOVID前だったので、その時は模型相手に人工呼吸もやったけど、意外に肺活量を求められるから、心臓マッサージの合間にあれをやるのは結構大変だったのを思い出す。

240712 PS/55エミュ製作 [37]ESDIアダプター内蔵ハードディスク

Image: 240712 PS/55エミュ製作 [37]ESDIアダプター内蔵ハードディスク

PCemのビデオメモリーアドレスの仕組みが理解できなくて、グラフィックモードの開発が進まない。DOSBoxでもだいぶ苦労した部分なので、ここを突破するのは時間が掛かりそう。そういうわけで、エミュレーション精度を上げるために別の開発に取り組んでいた。

PS/55モデル5551-S,TはESDIハードディスク(リファレンスディスケットでは「アダプター内蔵ハード・ディスクII」と表示される)を内蔵しているんだけど、これをエミュレーションするのはそんなに難しくなかった。

ESDIコントローラー単体のMicroChannelアダプターとの違いは、ディスクBIOSのROMがない(システム・ボード側のROMで認識する)ことと、POS IDが違うこと以外はほとんど同じ。ただ、ESDI Fixed Disk Controllerのコードを流用すると、POSTでエラー10482(ハード・ディスク・エラー)が出る。BIOSを解析すると、デバイス7(アダプター)が対象のGet Device Configurationコマンドに対してセクターバッファーサイズを返す必要があって、少しコードを書く必要があった。こりゃBIOS ROMを逆アセンブルしないと分からないな。

240709 N64はレトロゲー [Niji]

最近、石神とサロメの配信をよく見てるので、石神とサロメの星のカービィSDXコラボや、MelocoとのときメモGSコラボがやってて、推し同士がコラボしてるの少し嬉しかった。N64がレトロゲーに入るかどうかって10年くらい前から議論されているけども、今の年数は30年を迎えつつあるから、それを考えたら立派なレトロゲーだな。

夏野菜議論、野菜全推しでTier表が崩壊してるんよ。食べ物の議論は奥が深いな…

240709 PS/55エミュ製作 [36]ROMのメモリー・エンコーディングを修正

DOS J4.0が起動しない問題は、DOSの動作中にメモリーの割り当て方法を設定するI/Oポート・レジスターが書き換えられて、ディスプレイ・アダプターの属性バッファーが配置されていたE0000-E0FFFhがシステムメモリー (RAM) に再割り当てされていたことが原因だった。

メモリー・エンコーディング・レジスター 1(16進 00E1)
Bit | Function
----|-----------------
7   | -Card 2 EN 2
6   | -Card 2 EN 1
5   | -Card 1 EN 2
4   | -Card 1 EN 1
3   | -ENSPLIT
2   | -640
1   | ROMEN
0   | Reserved

ビット1:このビットは、アドレス16進000E0000~000FFFFFがどのように割り当てられるかを決定します。このビットを1にセットすると、ROMがイネーブルされ、読み出しアクセス・アドレスがROMに割り当てられ、書き込みアクセス・アドレスはRAMに割り当てられます。このビットを0にセットすると、ROMがディセーブルされ、読み出しアドレスがRAMに割り当てられます。ROMがディセーブルされている間、書き込みアドレスはディセーブルされています。(注意:このビットを1にセットすると、システムの性能が低下します。ROMへのアクセスが8ビットであり、サイクルが長いためです。)

POSTはメモリー・エンコーディング・レジスターのビット1 (ROMEN) に1をセットして、BIOS ROMのデータをRAMにコピーし終わると、0をセットしてROMを無効にする。これは、注意書きにあるとおり、BIOSをRAMに再配置した方がレスポンスが改善するからだろう。しかし、まさかDOSの動作中にこのビットが書き換えられているとは思わなかった。

これで文字モードの実装はほぼ終わったので、あとはAPA(グラフィック)モードの実装だ。本当に苦労するのはここからかもな。

240707 PS/55エミュ製作 [35]DOS J4.0だけおかしくなる文字モード

Image: 240707 PS/55エミュ製作 [35]DOS J4.0だけおかしくなる文字モード

モノクロモニターの判別問題は、I/Oポート3E1hインデックス3のビット7がVGAでのSwitch Sense Bitと同じ役割を果たしていて、これはDOSVAXの実装と同じだった。問題はここではなく、属性コントローラーへのI/Oポートのデータ出力処理にバグがあって、これを直したらカラーパレットが正しく初期化されるようになって、問題が解決した。

属性コントローラーのI/Oポートにバイト単位で書き込むときはフリップフロップでインデックスとデータが交互に書き込まれるんだけど、ワード単位で書き込むときに、低位8ビットがインデックスで高位8ビットがデータに書き込まれるはずが、逆になっていた。

とても時間を掛けながらも、文字モードはほぼ実用レベルで表示できるようになった。しかし、今ぶち当たっている問題は、DOS K3.3やJ5.0は正しく起動するのに、DOS J4.0だけ文字モードが正しく表示されない。導入プログラムで使われる画面モード03hは正しく表示される。画面処理のBIOSがROMではなくDOSにあるのは知っているが、なんでDOSのバージョンによって挙動が違うんだ。

Image: DOS J4.04