昔懐かしCP/M。思い出してメモ。
基礎知識
CP/M は intel の 8ビットCPU である i8080 用に作られた DOS (Disk Operating System)。
CP/M は intel 8086 用の CP/M-86 、モトローラ 68000 用の CP/M-68K などもあるが、通常 CP/M と言えば i8080 用の CP/M-80 を指す。
CP/M-80は 1976年発売。執筆時の2021年の45年前!
ザイログの Z80は、i8080 とバイナリ上位互換であり、Z80 命令としてリロケータブルアドレスな命令を備えている。なので1980年台当時はZ80のプログラムをCP/M上で動かすことが多く行われていたが、CP/M自体はi8080命令セットのみで作成されているため、CP/Mのシステムをメモリ上で再配置するには再コンパイルなどのテクニックが必要。それが動作や操作に影響を及ぼしているのが特徴である。
メモリサイズ
- 上記は62K CP/M のアドレス。CP/Mは8080命令セットで作成されているためリロケータブルではない。
- 他のメモリサイズの場合はそれに合わせてバイナリを作成しインストールする。
リロケータブルの意味は、プログラムを別のアドレスに置くことができるという意味。8080命令セットはジャンプ命令がアドレス絶対番地指定のため、このような制約がある。8080上位互換のZ80命令セットはジャンプ命令が相対番地指定できるようになり、リロケータブルがある程度可能になった。
CCP/BDOS領域の侵害
- CCPのエリアは ユーザアプリが動作している間は使用しないので、ユーザプログラムにより破壊しても良い。
- BDOSの機能も使わないアプリケーションの場合は、BDOS領域も破壊しても良い。
- 破壊されたCCP/BDOSはリブート時に再ロードされる。
BIOS
BIOS は各マシン向けにカスタマイズされ、CBIOS (Customized BIOS)と呼称されていた。CBIOS は通常ソースコードが提供されていて、メモリの配置位置を再アセンブルして調整することが行われていた。
上記がロードされた状態で、BIOS先頭(上図ではF200H) にジャンプすれば a> プロンプトが出るらしい。(BDOSは動かない状態)
エミュレーター
IMSAI Altair 8800 のシュミレーターと併せ、CP/Mイメージが公開されている。
https://schorn.ch/altair.html
実機がなくても MS-Windows/Mac/Linux などで動かすことができる。