SSブログ

起動処理のバグとディスクの枚数の関係 [パソコン]

メインPCが逝かれたのと新プロダクト開発(Dash-8X です)で忙しいので更新が滞っている Thunderbolt です。

大ネタを準備するのも大変だし、かと言って更新しないのも嫌だな…という訳で、小ネタを出していきます。




PC-8801 (初代)の N88-BASIC には、IPL 読み込みに致命的なバグが存在します。
2代目の PC-8801mk2 では修正されていましたので、もしかすると後期の ROM では修正されているかもしれません。

そのバグとは…

ディスクアクセスでは、読み込みに失敗した場合は2回リトライし、それでもエラーだった時は ”Disk I/O error” を発生させて処理を中止するのが通常の動作ですが、IPL の読み込みでエラーが発生した場合は、書き込みモードでリトライしてしまう。

…というものです。

たまたまディスクにゴミが付いていたりして読み込みに失敗すると、リトライ時は書き込みモードなのでメモリ上の C000H から256バイトの領域にある無意味なデータが IPL に書き込まれてしまい、それ以降は二度と起動できなくなってしまいます。


エラー処理のバグというのは見過ごされがちな部分ですが、当時は ICE とかを使ってデバグしていなかったのでしょうね。
まあ、PC-8801 の時代は BIOS という概念も未発達だったため、BIOS に重点を置いたデバグというものができなくて、全体を隈なくデバグするということは時間的にも工数的にもムリだったのでしょうが、ちょっと痛すぎます。


この事に気付いたマニア達やショップ等は、作業用のディスクと起動用のシステムディスクとを分けておき、起動用のディスクにはプロテクトシールを張って書き込みができないようにして対処していました。

たしか「PC ニュース」でも取り上げられていた記憶があるのですが、現物が手元に無いため未確認です。

また、NEC のユーザーズマニュアルやディスクメディアの商品取扱説明書等に「起動用ディスクには、必ずプロテクトシールを張ってください」という記述が目立つようになったのも、この頃ではないかと思われます。


普通は、システムディスクの原本は保存しておいてコピーした方を使うのでまだ救われていますが、ハイスコアを記録したり、途中経過を原本にセーブするようなゲームではどんな状況だったのか、非常に気になります。

「ハイスコアなんてデータ量が少ないんだから、わざわざユーザーディスクを作らなくてもゲームディスク本体にセーブすればいいじゃん」…なんて当時は考えてましたけど…。

ディスク2枚組みやユーザーディスクの作成が必要なゲームが増え始めたのと、PC-8801 の起動処理のバグには因果関係があるのでしょうかね…謎です。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。