211204 PS/55エミュ製作 [7]フォントのRAM配置と半角拡張文字

Image: 211204 PS/55エミュ製作 [7]フォントのRAM配置と半角拡張文字
フォントデータのバイナリをビットマップに変換するプログラムを作ってフォントファイルやメモリダンプを解析した結果、色々分かってきた。まず、半角拡張文字の字形はどことなく見覚えあるようなないようなと思っていたら、APLで使われる文字セットだった。APL以外で使われることはなさそう。
本文を読む…

211203 PS/55エミュ製作 [6]外字の対応はほぼ完了

Image: 211203 PS/55エミュ製作 [6]外字の対応はほぼ完了
まず、日時を取得できない問題はBIOS領域にRTCへアクセスするプログラムを追加して対応した。コードはアセンブリ言語で60行程度。普段プログラムなんて書かない上、NASMなんて使ったのは何年ぶりか。PS/55のDisplay Adapterには256KBの外字用RAMがあって、特定のI/Oポートを操作するとメモリ空間にそのRAMの一部が出現するようになっている。これはDOSBoxのPageHandlerクラスを継承してRead / Writeの関数をオーバーライドすることで実装できた。初め、コンストラクタに余計なflagsを設定していたせいで手こずってしまった。
本文を読む…

211131 PS/55エミュ製作 [5]外字のコード変換が複雑

Image: 211131 PS/55エミュ製作 [5]外字のコード変換が複雑
画面がモノクロ表示になる原因はDOS起動時にビデオDACにモノクロディスプレイ用の色パレットが記憶されていたためで、ある非公開レジスタ (3E1h) で正しいビットを返すようにしたらカラーで表示されるようになりました。属性の解釈については技術解説書に説明されているが、色のビットが反転していることが書かれていなかった点が不親切だった。
本文を読む…

211127 PS/55エミュ製作 [4]白いDOS画面

Image: 211127 PS/55エミュ製作 [4]白いDOS画面

PS/55ではCRTCのラインコンペアレジスタを使用していないか、またはハード的に何らかの初期値を持っているようで、とりあえず最大値 (0xFFFF) で初期化するように改変して、ある1行のメモリアドレスを制御するコードを修正したら動作するようになりました。

これでDOS K3.3は起動するようになりました。しかし真っ白。文字色も背景も色が何か変で、アトリビュートの解釈が上手くいかない。パレットがモノクロになっている?カレンダー時計もおかしい。

DOS J5.0はtoo many drivesのエラーで起動しない。EBDA (Extended BIOS Data Area) をチェックしているようなので、これを実装しないといけないらしい。課題は山積みだ。

211126 PS/55エミュ製作 [3]VGAのレジスタが多すぎて把握不能

亀歩きのような遅さですが、一応実装は進んでいます。テキストモードのビデオメモリに使われる内部コードとシフトJISコードを相互に変換できるようになり、DOS K3.3の起動画面が何とか読める状態になりました。

何とか読める状態というのは、テキスト画面がなぜかスクロールする毎に奇数行と偶数行で表示が入れ替わってしまうので、まだ実用的では無い状態です。元のEGA/VGAのコードを流用(I/Oポートのミラーと16ビットデータアクセスの対応)しているので、何かのレジスタの設定を修正する必要があると思うのですが、なにぶんVGAのレジスタは300以上あるらしいので把握しきれない。

極めつけはOverflow Registerという、幾つかのレジスタの値が8ビットに収まらなくなったから上位ビットの一部を別の場所に寄せて集めたレジスタがある。VGAは全てのレジスタが8ビットだが、PS/55の場合は内部的に16ビットのレジスタを持っているので、これがかえって互換性を犠牲にし、VGAを流用する場合はOverflow Registerに当てはめなければいけない。9ビット目はここ、10ビット目はそっちというように桁がバラバラなので面倒くさい。

211121 PS/55エミュ製作 [2]仕様ブラックボックスとの戦い

Image: 211121 PS/55エミュ製作 [2]仕様ブラックボックスとの戦い
2年前の挫折に懲りずにPS/55のエミュレーターを作ろうと試行錯誤しているんだけど、仕様がブラックボックスに近いのでマジで苦労している。ストレスが貯まりまくってマックス。あ゛ー投げたい。DOSBoxの画面描画処理の把握と切り替え方法にふた苦労。グラフィックのレジスタの仕様がブラックボックスで、これもふた苦労。
本文を読む…

DOSBox内蔵デバッガーの使い方

Image: DOSBox内蔵デバッガーの使い方
DOSBoxの内蔵デバッガーは通常ビルドでは無効にされている。gccならビルド時に`.configure --enable-debug`を実行する。VC++なら「構成プロパティ」→「C/C++」→「プリプロセッサ」で`C_DEBUG`を定義するか、config.hを書き換える。DOSBox実行中にメインウィンドウでAlt+Pauseキーを押すとデバッグモードへ移行する。通常ビルドのDOSBoxからmapper.txtを持ち越している場合、デバッガー起動イベントに対してキーが割り当てられていないので、Ctrl+Alt+1キーを押して「Debugger」のキーバインドを確認する。
本文を読む…

211114 AXエミュ製作 [13]Video mode 6の画面表示が崩れる問題を修正

Image: 211114 AXエミュ製作 [13]Video mode 6の画面表示が崩れる問題を修正
Video mode 6 (CGA互換320x200モード)の画面表示が崩れる問題を修正しました。これによりWindows 2.1の起動画面を正常に表示できるようになりました。元祖ブルースクリーンと言われる、Incorrect DOS Versionによるバグ表示もちゃんと見られます。残念ながらVER SETコマンドでバージョン番号を合わせても、DOSVAXのプロンプトからWindows 2.1を起動させることはできませんが、AX用のMS-DOSからであれば正常に起動します。Bochsで作成したHDイメージを用意してフロッピーディスクからMS-DOSを起動するという回りくどい手順が必要ですが...
本文を読む…

i8042 KBD I/Oポート64hコマンドD0h実行時の割り込み?

Image: i8042 KBD I/Oポート64hコマンドD0h実行時の割り込み?
沖電気OEMのMS-DOS 3.21にはPhoenix TechnologiesのControl/386というメモリマネージャーが入っているのだが、DOSVAXで起動するとメッセージ後のプロンプトに「1」が必ず入力される。これは元々のDOSBoxのバグなんじゃないかと色々悩みながら調査していた。I/Oポートの操作によるハードウェア割り込みが絡んでいたので、原因になっている処理が分かるまでにかなり時間が掛かってしまった。
本文を読む…

211111 USB-DACとヘッドホンの消失

Image: 211111 USB-DACとヘッドホンの消失

今使っているUSB-DACが8年ものになるのでそろそろ買い替え時期かなと思ったのだが、価格コムのヘッドホンアンプ・USB-DACカテゴリを見ると、一時期の盛況ぶりはどこへ行ったのやら寂しい状況。Amazonで調べてもUSBケーブルのごとく聞いたことないメーカーの製品ばかり。

メーカーはポータブルアンプのFiiOと据え置きのFOSTEXが昔から知られていたが、一時期(2016年辺り)はソニーやコルグが製品を出してランキング上位に食い込んでいた。当然、有名なブランドが出しているとあって普段手を出さないようなユーザーも買っていたのだろう。このカテゴリーらしからぬ盛り上がりで、レビューの数もかなりあった。

それが今や、ランキング上位製品でも取扱店舗が数店舗しかないという状況。もはやカテゴリーランキングとして成立していない。

イヤホン・ヘッドホンカテゴリーを見ても、上位20製品で7割以上をワイヤレスイヤホンが占めている。人気はこれらに移り、ワイヤードでオーバーヘッドなイヤホンとそれを必要とするUSB-DACやヘッドホンアンプの人気は衰退したんだろう。

かつてサウンドカードで知られたクリエイティブは一時期スピーカーに人気があったが、ここ数年はロジクールなどのPC周辺機器メーカーと小さいパイを取り合っているように見える。サウンドカードはOnkyo、Auzen、Audiotrakなどは既に撤退し、クリエイティブとASUSが細々と売り続けている。PCゲーム用途を見ても、ゲーミングマザーボードで高音質のサウンドチップを搭載することは当たり前になっているので、別でサウンドカードを買うということにメリット以前に発想が至らないのかもしれない。

AE-9の商品ページを見ていると、クリエイティブがここまで音質とデザインをアピールしていることに驚く。かつて4チャンネルごときのこんな無骨なサウンドカードを3万円で売り出すメーカーだったのに。

Image: Sound Blaster Live!

今サウンドカードを買うとしたら、サラウンド対応ヘッドホンと組み合わせて、高音質を重視するか付加機能(全部入り)を目当てにする場合だろうか。あるいは、LEDで機内装飾?😏 ワイヤレスはレイテンシーが気になるが、そこが解決可能となるといよいよサウンドカードは生き残れないだろうな。

211111 ATOK Passport価格改定 550円→660円/月

「ATOK Passport [プレミアム]」価格改定について | お知らせ |【公式】ATOK.com

iOS対応だぁ?そんなもん知らんがな(←Android歴10年)。

Amazon Prime, ニコ動プレ垢(解約済み)、ATOK 2度目の価格改定 514円→550円 (2019.10)→660円 (2022.2)とここ数年の相次ぐサブスクリプション価格改定でつらい。何となく気分的に。

211109 AXエミュ製作 [12]JEGA 640x480モードのピクセルクロック

Image: 211109 AXエミュ製作 [12]JEGA 640x480モードのピクセルクロック
写真はJEGA Video Adapter YS-90047H by htomari (CC BY-SA 2.0)より。オリジナルのVGAにはピクセルクロックの生成用に25.175MHzと28.322MHzの2つのオシレーターがあって、画面モード(ざっくり言うと縦のライン数)によって使い分けられている。640x480の画面モードなら480ラインになるため、この場合は25.175MHzが使われている。VGAの前身であるEGAの場合、DOSBoxのソースコードを見た所は14.31818MHzと16.257MHzの2つがクロックソースに使われているらしい。JEGAの場合はどうだったのか。
本文を読む…