エミュレータのディスクイメージを操作するための調査中。
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_mycom96.html
すばらしい。実行アドレスが8100なだけで完全に目的の動作です。
JPアドレスで0x81か0x80になっているところだけ0x01か0x00にすればいいだけなのです。
ESP32のAltiar8800を起動して、C:ドライブに移動して、DDTを起動。
s100[Enter]して、ひたすら16進コードをうちこみました。
(DDTの入力モード終了は16進コードのかわりに . とだけ。DDTの終了はg0[Enter]みたい)
save 1 FTST16.COM
とやると、0x0100から1ブロックだけC:に保存してくれるはずです(確信ないけど)。
注意深く16進コードを打ち込んだ効果か、一発でDPBが表示されました!
(このあと、せっかく保存したFTST16.COMをPCGET.COMのテストで壊してしまい
再度入力したのですが、注意力散漫になったせいか正常動作しませんでした。。)
BuffaloのNASであるLS220Dの赤色LEDが点滅していました。。。 HDD故障だそうです。 元から入っていたのは、東芝の1TB(TOSHIBA DT01ACA1)でした。 手元にWDの2TB(WD20EARS)、4TB(WD40EZRX)、6TB(WD60EZAZ)、SeaGateの4TB(ST4000DM000)、8TB(ST8000AS0002)が あったので、後日容量アップができるのでは、と思い入れてみました。 RAID再構築をクリックしてみたら・・・ WD 2TB:「指定したメソッドに対するパラメータが不正です。」 4TB:「指定したメソッドに対するパラメータが不正です。」 6TB:リビルド成功 SeaGate 4TB:「指定したメソッドに対するパラメータが不正です。」 8TB:「指定したメソッドに対するパラメータが不正です。」 という散々な結果でした。 何がダメなんだろう?と思い返してみると、WDの6TBだけは未使用の ものでした。 ほかのHDDは入れる前にパーティション情報をWindows上で消したけど、 もしかしてMBR領域(というかHDDの先頭セクタ0)になにか情報があると ダメなのかも。 ということで、Linux機にWD 4TB(/dev/sdb)をつないで、 sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1 sudo sgdisk -Z /dev/sdb を実行してからLS220に入れました。 「破損」という表示になってしまいしたが、RAID再構築を押すと 再構築が始まった、、、、ぽい。
コメント
コメントを投稿