2019年7月28日日曜日

CP/M-8000は移植できるのか

正直、かなり手強そうです。

現在、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 件のコメント:

コメントを投稿