正直、かなり手強そうです。
現在、The Unofficial CP/M Web Site にある、下の2つのドキュメントを読んでいるところです。
・ Programmer's Guide
・ System Guide
ドキュメントが英語で書かれているのは仕方ないとして、私がCP/Mの知識をほとんど持っていないことが、理解が進まない原因です。さらに、セグメントやシステム/ユーザーモードの存在とかが話をややこしくしていて、頭がだいぶ混乱しています。しかし所詮は趣味なので、最高の人生の暇つぶしとして移植を楽しんでいくつもりです。
これからは、情報をまとめるためのメモ代わりとして、ここを使っていきます。
とりあえずわかったこと、
CP/M-8000の実行環境が無いとld8kが使えないので、cpm.sysを作るには、クロスでリンクできる環境が必要そうです。
とりあえず、CP/M本体をメモリーにロードするcpmldrを動かすことを当面の目標にします。
現在、The Unofficial CP/M Web Site にある、下の2つのドキュメントを読んでいるところです。
・ Programmer's Guide
・ System Guide
ドキュメントが英語で書かれているのは仕方ないとして、私がCP/Mの知識をほとんど持っていないことが、理解が進まない原因です。さらに、セグメントやシステム/ユーザーモードの存在とかが話をややこしくしていて、頭がだいぶ混乱しています。しかし所詮は趣味なので、最高の人生の暇つぶしとして移植を楽しんでいくつもりです。
これからは、情報をまとめるためのメモ代わりとして、ここを使っていきます。
とりあえずわかったこと、
- cpm.sysがOS本体で、bios.rel, cpmsys.rel, libcpm.a をld8kでリンクして作る 。
- cpmsys.rel は、ccp.rel, bdos.rel, libcpm.a をリンクしたもの。
- 簡略版のBDOS と BIOSをリンクしたcpmldrが、cpm.sysをメモリーにロードする。
- CP/Mはシステムメモリ空間、トランジェントコマンドはノーマルメモリ空間を使う(ハードウェアが対応していれば)
- ノンセグメントのコマンドでは、インストラクションとデータのメモリ空間をわけることもできる。(ハードウェアが対応していれば)
- cpm.sysが読み込まれるメモリアドレスがどう決まるのか?
- TPAのアドレスがどうやって決まるのか?
- トランジェントコマンドは、何かリロケータブルなフォーマットなのか?
- ccp.rel と bdos.rel は提供されていない?
CP/M-8000の実行環境が無いとld8kが使えないので、cpm.sysを作るには、クロスでリンクできる環境が必要そうです。
とりあえず、CP/M本体をメモリーにロードするcpmldrを動かすことを当面の目標にします。
0 件のコメント:
コメントを投稿