211219 サガプラ、アサプロ、まーま新作

18歳未満の方の閲覧はご遠慮下さい。先月の時点ではまだほとんど情報が無かったけど、春頃発売の新作がいろいろ出てきましたね。昨日には5月発売予定のサガプラの新作もサイト公開。混雑のせいか接続が安定してないせいか分からないが、ちょっと繋がりにくい。時期的に5月発売というのがあまりピンとこないというか、珍しい。内容的にはサガプラらしいという点で、まあ期待から外れていないですね。
本文を読む…

211217 3D Moving Pomu [NijiEN]

約4週間もソースコードとにらめっこしてたんだな。我ながらよくやり遂げたもんだ。その間、他は何も進まなかったけど、ここからは平常運転。

この間、PomuとEliraとPetraの放送を中心に見てた。2週間前のVRチャットの回は、ハンドジェスチャーが見えるのがすごく新鮮だった。2時間放送の最後の方では息切れしつつキレのあるハレハレユカイも披露。正式な3Dお披露目ではないけども、動くってこうも良いものだとは思わなかった。

最近のAkiba’s Tripとポケモンのゲンガーチャレンジも見どころ多い。

一部の層で待ち望まれていたEN勢初(?)の男性陣が最近加わり、これからどうなるのか気になる。ツイートで早々にいじられ、仲が良いようで何より。

𝗜𝘀 𝘁𝗵𝗲 𝗗𝗲𝘁𝗲𝗰𝘁𝗶𝘃𝗲 𝗠𝘆𝘀𝘁𝗮 𝗯𝘂𝗹𝗹𝘆𝗮𝗯𝗹𝗲?【NIJISANJI EN - Mysta】 - YouTube

211217 PS/55エミュ製作 [11]画面モード3の実装とバグ修正して開発完了

Image: 211217 PS/55エミュ製作 [11]画面モード3の実装とバグ修正して開発完了
DOS J5.0がディスケットから起動し、セットアップが起動して、ハードディスクへインストールでき、シェルが起動する。そして、SWITCHでDOS/Vモードへ切り替わる。ここまでできれば、もう十分満足。当初の目標は十分達成したため、これで開発完了。もう今年はVisual Studioを二度と開けることないな。
本文を読む…

211216 PS/55エミュ製作 [10]テキストモードの完全実装まであと1歩

Image: 211216 PS/55エミュ製作 [10]テキストモードの完全実装まであと1歩
VRAMに書かれた文字コードの大小から全角・半角を判別するというその場しのぎで、とりあえず画面モード03hを使用するDOSシェルが起動するようになりました。一部文字化けが発生しています。また、画面サイズが微妙に変なため下にミラーができています。CRTCのパラメーターに修正を加える必要あり。ファイラーのFDがこの画面モードを使用しているようで、一部の文字が点滅したことからバグが判明し、属性解釈をバグ取りすることができました。
本文を読む…

211208 PS/55エミュ製作 [8]DOS Jx.xが起動できるようになった

Image: 211208 PS/55エミュ製作 [8]DOS Jx.xが起動できるようになった
利用者定義文字については、BIOSは仕様が分からず未実装ですが、ハードウェア的にはフォントROMからもフォントパターンを読み出せるようになりました。PS/55では外字RAMと同様にフォントROMもA0000h-BFFFFhにバンク切り替えで出現させているようです。ちなみに、上で表示している漢字はJISコードで最も画数が多い字。昔、漢字辞典で画数から区点コードを調べたときに目に焼き付いたのでよく覚えてる。
本文を読む…

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の画面描画処理の把握と切り替え方法にふた苦労。グラフィックのレジスタの仕様がブラックボックスで、これもふた苦労。
本文を読む…