エミュレータのディスクイメージを操作するための調査中。 137Byte×32Sector×77トラックをなんとなくテキスト化してみたら、 Track0~5とTrack6~76でフォーマットが違う。 なんだろう?と思いつつグーグル先生に頼っていたら、こういうのを発見した。 https://deramp.com/downloads/mfe_archive/010-S100%20Computers%20and%20Boards/00-MITS/40-Software/DSK%20Disk%20Images/Altair%20cpm%20Disk%20Images/Burcon%20(MITS)%20CPM.pdf となると、Track6からデータなんだろうか? 見た目では、Track2にディレクトリ情報があるように見えるのでそれも違うだろう。 答えはCP/MのDPBに書いてあるらしい。 あれこれ調べたら、DPBはCP/MのBDOSで定義しているらしく、実装によって さまざまな定義になっているとか。 CP/Mは「8インチ片面単密度IBMフォーマット」で統一されている、と勝手に 思っていたのだけど、どうやら違うらしい。(でなければ137バイトなんて出てこない) cpmtoolsというのを見つけだけど、なるほどこれは大変だ・・・。 MS-DOS(PC-DOS)でフロッピーのフォーマットを固定化できたのはIBMの功績、なのだろう。 で、ESP32のAltair8800エミュでのDPBをどうやって調べる?ということに話が戻る・・。 CP/Mを知ったころにはナゾなシステムコール「DPBのアドレスを返す」のはここで使う のか、と。。。 とはいえ、このシステムコールってなんの用途で存在しているのだろう?? BDOS上のテーブルだから書き換えられないだろうし、どういう用途があるのだろう? とはいえ、今は目的のものがそこにあるので、呼ばない手はない。 だが、i8080アセンブラでCP/M上のプログラムを作るのか・・・。 Z-80/i8080のことでお世話になっている中日電工さんで、CP/Mの解説を以前されていた ことを思い出し、過去情報を読んでいると、そのものずばりな記事がありました。 https://userweb.alles.or.jp/chunichidenko/cpm_myc