ブートの仕組み解明
2024.09.24
CP/M移植後、その起動にはBASICを必要とした。

ちょうど良い具合にBIOSやCCPなどの配置アドレスがBASICのフリーエリアにあたり、
そこへBLOADで必要なモジュールを読み込み、開始番地へ飛べばCP/Mが起動できた。

(注意:開始番地へ飛ぶ前に、フロッピーをCP/M用に差し替えないとうまく動かないし、BASICのフロッピーの内容を壊してしまう)

だが、本来ならばフロッピーから直接CP/Mを起動したかった。

この仕組みはある程度理解できたが、実際に起動するようにはできなかった。

まずIPLのROM、これはマニュアルにソースがあったから、どんな仕組みでフロッピーを読み込むかが把握できた。
自分でいじれるように、そのソースを自分で手打ちしてテキスト化し、自由にコメントが書き込めるようにした。

次に、Hu-BASICの読み込みのプログラムを逆アセンブルして、その仕組を解明しようとした。これはそのセクターを一旦RAMに読み込み、それをHEX化してWindowsのPCへ送り、その先で逆アセンブルのソフトにかけた。

さらに内容を1行ずつ理解しながら、1行1行にコメントをつけて、このビットは何で、あれをどうすればこうなるとか詳しく記述しながら理解を深めていった。

こうして仕組みを把握したところで実際にCP/Mを読み込ませる仕組みを作ろうとしたが、MZの起動用のセクターとCP/Mの起動用のセクターの・・・・・・うーんと、もう忘れたな。

結局、IPLのROMをいじってCP/M専用のロード機能を付けたらどうか、あるいはRAMボードに入れるか、RAMボードにCP/M専用のブートローダを入れて動かしたらどうか、と妄想したところで止まっていた。
トラックバックURL
トラックバック一覧
コメント一覧
kanitama - 2024年09月26日 18:03
いろいろと供養されていない取り組みがあることがわかりました。今ならできることも多くあると思いますので、成仏させてあげたいですね。MZ-2000を主力マシンとして表舞台に立たせましょう!
コメント投稿

名前

URL

メッセージ

- CafeLog -