Altair-SIMHでCpmtoolsGUIを使う

DSK形式のディスクイメージからファイルを取り出す方法メモで書いているAltairシミュレータ用のディスクイメージ(MITS-88 Disk)がCpmtoolsで読めない謎が解けました。

シミュレータ本体やBIOSのソースを読むと、なんとセクタ長が137バイトでした。Pertec FD-400というドライブをモデルにトラックを拡張した仕様だとか。

ということで理由が分かったので、CpmtoolsGUIに読み書きできる機能を実装しました。diskdefのseclenが137のとき、MITS-88 Diskと判断して処理するようにしました。

Altairシミュレータのドライブについて

シミュレータのおさらいです。知っている人は読み飛ばしてください。

sim> do <設定ファイル>

で起動します。設定ファイルに、使うドライブイメージの指定を記述します。CP/M2.2で使えるFDドライブ(dsk0-dsk7)のフォーマットは、A:〜G:がMITS2、H:がMITSで固定。I:〜P:はHDドライブ(hdsk0-hdsk7)で、フォーマットはデフォルトでHDSKですが、

format=<format>

で指定することで様々なフォーマットのイメージが使えます。

format seclen sec/trk track btrk cks skew geom
MITS 137 32 77 6 Z N
MITS2 137 32 254 6 Z N
HDSK 128 32 2048 6 Z N
EZ80FL 512 8 32 0 Z N 32/32/128
P112 512 18 160 2 Z N 160/72/128
SU720 512 9 160 2 NZ N
OSB1 512 5 40 3 Z N 40/20/128
OSB2 512 10 40 3 Z N 40/40/128
NSSS1 512 10 35 2 NZ N
NSSS2 512 10 35 2 NZ N
NSDS2 512 10 70 2 NZ N
VGSS 512 8 77 2 NZ N
VGDS 512 8 154 4 NZ N
DISK1A 512 16 77 2 NZ N
SSSD8 128 26 77 2 Z N
SSSD8S 128 26 77 2 Z Y
SSDD8 256 26 77 2 Z N 77/52/128
SSDD8S 256 26 77 2 Z Y
DSDD8 256 26 154 2 Z N 154/52/128
DSDD8S 256 26 154 2 Z Y
512SSDD8 512 15 77 2 Z N 77/60/128
512DSDD8 512 15 154 2 Z N 154/60/128
APPLE-DO 256 16 35 3 Z Y
APPLE-PO 256 16 35 3 Z Y
APPLE-D2 128 32 35 3 Z Y
APPLE-P2 128 32 35 3 Z Y
V1050 512 10 80 2 Z N 80/40/128

CP/M3ではこれら全て使うことができますが、2.2ではセクタ長が128バイトかつCKSがゼロのものしか使えないようです。しかし、イメージファイルであり物理媒体ではないので、セクタ長が128バイトでなくてもCKSがゼロかつスキューが掛かっていないものは、

geom=<Tracks>/<SecTrk>/<Seclen>

の設定でセクタ長を128にしてしまえば使えます。

設定例(ディスク設定部分)

attach hdsk1 P112.dsk
set hdsk1 format=P112
set hdsk1 geom=160/72/128

起動ディスクの作り方(CP/M 2.2)

シミュレータのSYSCOPYコマンドを使えば起動可能ディスクを作ることができますが、ここでは敢てCpmtoolsGUIで作ってみます。

まず、システムトラックのブートイメージを取得します。シミュレータのAドライブで、

A>SUBMIT SYSCPM2

を実行します。これはシステムを更新するスクリプトですが、実行するとシステムイメージ(CPMBOOT.COM)が作成されます。これをRコマンドで取り出します。

A>R CPMBOOT.COM

これをMkfsのブートブロックに設定すればよいわけですが、システムローダーのソース(DSKBOOT.MAC)を読むと最初の4セクタを読み飛ばし、かつ起動専用のスキューで読み込んでいることが分かります。また、SYSCPM2.SUBを読むと、CPMBOOT.COMは、MOVER.COMというシステムの再配置プログラムが頭に置かれており、その開始アドレスは0100hです。

以上から4セクタ分のダミーとMOVER.COMへのジャンプコードを書き込んだDUMMY.COMを作成します。シミュレータ上のDDTとSAVEコマンドを使って作成します。

I>DDT
DDT VERS 2.2
-F100,3FF,E5
-S300
0300 E5 C3
0301 E5 00
0302 E5 01
0303 E5 .
-^C
I>SAVE 3 DUMMY.COM
I>

DUMMY.COMをRコマンドで取り出します。

I>R DUMMY.COM

CpmtoolsGUIのMkfs画面[New]を開きブートブロックのファイルとしてDUMMY.COM、CPMBOOT.COMの順に設定し、起動ディスク専用のスキューを設定したdiskdef(MITS2-Mkfs)を指定して[Make]ボタンを押します。


関連リンク

http://www.moria.de/~michael/cpmtools/
http://www.schorn.ch/index.html
http://simh.trailing-edge.com/
当サイト内
CP/Mディスクイメージ作成手順メモ
CpmtoolsGUI


お名前: コメント:

トップ メニュー

This web page is described in Japanese, but you can read in English by translation site.

  • リンクに許可は不要です。
  • コメント欄は改行せず一行で入れてください。
  • スパム判定ではじかれた場合は、その後に「書込みました」旨のみのコメント等何らかの書き込み成功していただけると早く対応できます。
  • 非日本語対応ブラウザからは書き込みできません。