jr7cwk;lavo

▼システム吸い上げ

ハードは置いといて、
解析(逆アセンブル!)の為に、手元のPC-8001mkIIより、システムを吸い上げた。
一応、ROM(N及びN88)と、DISKBASIC(N及びN88)、DISKユーティリティを
WINDOWS環境で読めるよう、読み出し、ファイル化、フォーマット変換等を行う。
ROMはPEEK関数、DISKBASICのコードはDSKI$関数により、DISKBASIC上で
バイナリイメージのファイル化し、出来たファイルを
PC9801のMS-DOSの"FILECONV"ツールにてDISKBASICフォーマットから
MS-DOSフォーマットに変換。

今になってわかりましたが、このツール、2DDが読めるドライブなら、
2Dのディスクも読んでくれるんですね。
ところが、落とし穴。
バイナリ形式でセーブされたN-BASICやN88-BASICのファイルを変換すると、
ファイルサイズが馬鹿みたいに大きくなるんです。
2HDのディスク1枚に2Dのディスク3枚分は入るだろうと、変換かけると、
容量不足になり途中で変換が終了してしまいます。

2Dディスクの容量計算(クラスタサイズ)間違えているのかと思い、
DISKBASIC上で2HD化してから変換かけても結果は同じでした。
変換後のファイルを覗いて見ると、変換ツール自身の一部が一緒に落ちているみたい。
確かバイナリセーブされたBASICプログラムのファイルの先頭には
ファイルサイズを示すデータが入っていたような気がするのですが、
PC80/88系とPC98系では表現方法が違ったような気がするのですが、
変換ツール、この値を参照しついるのかも。

なお、バイナリのBASICのファイルは、自作のリスト化プログラムで
テキストに戻しています。
(実はそのプログラムってN88-BASICで記述してあって・・・
PC互換機上でPC9801エミュレータ起動して動くかしているという。
N88(86)のDOS版専用の変換ツールはCに焼き直したのもあるのですが、
他の形式までサポートするように出来なかったんです。)


●2005.09.30
●cwk
編集


コメントを書く
記事へ
HOME

copyright/jr7cwk

powered by samidare