DISKDEFマクロの使い方メモ

DISKDEFマクロでドライブ仕様の設定を簡素化する

CP/Mディスクイメージ作成手順メモで言及しているDISKDEFマクロライブラリは、煩雑なディスクパラメータの計算を自動化してくれるツールです。CP/Mの標準アセンブラASM.COMの上位互換マクロアセンブラであるMAC.COM専用のライブラリです。具体的な使い方を説明します。CP/M上でアセンブルするのでCP/MエミュレータなどCP/Mが動作する環境を用意してください。

CP/MサイトDigital Research Source Codeからcpm2-plm.zipをダウンロードし、MAC.COMとDISKDEF.LIBを取得します。下記のリストをコピー(MACLIB DISKDEFのところから最後まで)して4DRVDEF.ASMとしてファイルにしてCP/M環境にインポートします。このリストはCpmtoolsGUIに添付のAVRとZ80でCP/Mの改良用のドライブ設定で、ディレクトリエントリの数を256に、cksを0に変更したものです。

;****************** DISKDEFマクロのサンプル ***************************************************************
;
;DISKDEF	dn, fsc, lsc, skf, bls, dks, dir, cks, ofs
;
;dn	:ロジカルディスクNo. 0=A, 1=B,..., 15=P
;fsc	:最初のセクタNo. 0か1
;lsc	:最後のセクタNo.
;skf	:スキューファクタ。掛けない場合は省略
;bls	:ブロックサイズ(byte)
;dks	:システムトラックを除く全ディスク容量(bls単位)
;dir	:ディレクトリエントリの数
;cks	:交換可能な媒体の場合はdirと同じ値。交換しないものは0
;ofs	:システムトラックの本数。パーティションによる多ドライブ化の場合は前方のドライブの総トラック数の積算値
;
;例.[128バイト/セクタ]×[64セクタ/トラック]×[244トラック]×4ドライブ(パーティション)
;    (ofs=1, bls=2048byte, dir=256 とする)
;    (Aドライブ: dks=128*64*243/2048=972, ofs=1)
;    (Bドライブ: dks=128*64*244/2048=976, ofs=244)
;    (Cドライブ: dks=128*64*244/2048=976, ofs=244+244=488)
;    (Dドライブ: dks=128*64*244/2048=976, ofs=244+244+244=732)
;

MACLIB	DISKDEF

ORG	$	;マクロの展開先アドレス

DISKS	4	;ドライブ数

DISKDEF	0,1,64,,2048,972,256,0,1
DISKDEF	1,1,64,,2048,976,256,0,244
DISKDEF	2,1,64,,2048,976,256,0,488
DISKDEF	3,1,64,,2048,976,256,0,732

ORG	$	;スクラッチエリアの展開先アドレス

ENDEF

END

アセンブル。

A>MAC 4DRVDEF

生成された 4DRVDEF.PRN をTYPEコマンド等で参照してみてください。ディスクパラメータが展開されているのが確認できます。本来はBIOSソースのディスクパラメータの設定部分をこのマクロで置き換え簡素化するためのものです。但し、MAC.COM(8080アセンブラ)専用なので、avrcpmのZ80アセンブラソースには使うことができません。そこで、IPL.ASMとBIOS.ASMをMAC.COMでアセンブルできるように変換したものを置いておきます。

IPLとBIOSのダウンロード(351)

CP/M上でアセンブルし、できた.HEXファイルをPCに取り出してHex2bin等でバイナリ化すればCpmtoolsGUIで使用することができます。

関連リンク

CP/M非公式サイト
http://www.cpm.z80.de/index.html
HEXをバイナリに変換
http://sourceforge.jp/projects/sfnet_hex2bin/
当サイト内
AVRとZ80でCP/M
AVRとZ80でCP/Mの改良
mbed(ST Nucleo F401RE)版CP/Mエミュレータ
CpmtoolsGUI
CP/Mディスクイメージ作成手順メモ
DSK形式のディスクイメージからファイルを取り出す方法メモ


お名前: コメント:

トップ メニュー

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

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