じょんのブログ -9ページ目

じょんのブログ

NEC PC-88VA2を修理(?)している記録です。

約30年前に自分が作っていたプログラムを見ていました。


PC-88VAのディスクマガジンを閲覧するための新しいビュアー(今でいうブラウザかな)を作ろうとしていたようです。(元々使われていたビュアーは別の方が作られたものです。)

 

その頃、私がディスクマガジンの会長をしていたはずですが、大学生から社会人になって、仕事が忙しすぎて活動を継続できなくなり、引き継いでもらえる人も見つからず、そのまま解散となってしまったんじゃなかったかな?

結局、ソフトのほうも作りかけのまま放置で、日の目を見ないソフトとなってしまいました。

 

当時、V50相当CPUで8MHz動作のPC-88VAは、とっくに時代遅れのパソコンでした。

ソフト開発にはCPU処理速度が必要なので、PC-98上で開発していたようです。(もう忘れているw)

今だったら、PC-88VAエミュレータ上で動かせば、ストレスなくコンパイルできますけどね。

 

グラフィック画面に高速に文字を表示をするために、4つのバージョンのテストプログラムを作っていたようです。

1. BIOSを使ってとりあえず動くバージョン

2. BIOSコールをハード直接操作に置き換えたバージョン

3. CPUで描いていたのをSGP(カスタム描画チップ)を使うようにしたバージョン

4. SGPコマンドをバッファリングして割込み処理で動かすバージョン

みたいな感じじゃないかな?

 

自分のことながら、月100時間以上残業しながら、音楽活動もしながら、よくこれだけのことをやっていたものだなと、感心するばかりです。

この記事の続きの話です。

ディスクのd88ファイル化は、結局うまくいかないので、自分で変換プログラムを作ってみました。

と言ってもゼロから作るのは大変なので、こちらから、ソースコードを使わせていただきました。

ソースコードを公開していただき、ありがとうございます。

この場を借りてお礼をいたします。


このプログラムは、PC-98シリーズのフロッピーディスクを読み込んでd88ファイルにしたり、逆にd88ファイルを読み込んでフロッピーディスクに戻したりします。


PC-98シリーズのディスクBIOSを使っているので、もちろんそのままではPC-88VAシリーズ上では動きません。


最初はPC-98のディスクBIOSをPC-88VAのフロッピーディスクBIOSでエミュレートすればいいかな?と思っていましたが、PC-98とPC-88VAの両方のBIOSの仕様を見比べたり、自分には必要のない2Dと2DDの判定部分のソースを読んだりするのが面倒になってきて、結局、コマンドラインの解析部分とd88ファイルイメージの構造体以外はほぼ作り直してしまいました。


元のFDIMG.EXEは、色々と考えて作られていますが、私の場合はソフトを公開するのが目的ではないので、セクタ長1024バイト固定、シリンダ数80として、2HDディスクのみ対応としました。

それによって、1トラック一気に処理することができるので、高速化ができます。

あとはprintfが遅いので、文字列の表示もBIOSルーチン化して、できあがり。


ハードディスクがSDカード化されているので、空の仮想ハードディスクを作ってB:ドライブとして、そこにd88ファイルを入れていきます。


数日かけて80枚ぐらいあったディスクマガジンのd88化が完了しました。


この続きは↓こちら


2HDのフロッピーディスクのフォーマットが、PC-98シリーズの1.2MBフォーマットと、IBM-PCシリーズの1.44MBフォーマットの2種類に大きく分かれることは、まあ、互換がないので知っていました。

 

PC-88VAシリーズはPC-98フォーマットが読めるから、PC98シリーズと同じフォーマットだと思っていましたが、実は微妙に違っていたようです。

フォーマット後の容量が48KB多いのです。

 

具体的に言うと、PC-98シリーズのフォーマットが、

 

シリンダ数: 77

サーフェイス: 2

セクタ: 8

セクタあたりのバイト数: 1024

 

という仕様になっているのに対して、PC-88VAシリーズは

 

シリンダ数: 80

 

となっています。

 

つまり、

(80-77)[シリンダ]×2[サーフェイス]×8[セクタ]×1024[バイト]=48KB

ということで、48KB多いという計算です。

 

これはPC-88VAでフロッピーディスク容量いっぱいまで書き込んでしまうと、後ろの方のシリンダに書き込まれたデータはPC-98では読めないということを意味します。

 

今なら誤差程度でも、メモリやディスクの容量が限られていた当時は、互換性を損ねてでも増やしたかった容量なのでしょうかね?

いや、当時にしても48KBは微妙な容量のような気がしますが…