これまで、8インチ片面単密度の標準ディスクでのCP/Mのシステム起動ができましたが、ディスク容量があまりにも少なすぎるので、ディスクの物理パラメータを変えて、容量アップを行いたいと思います。
ディスクパラメータを変えるには、アセンブラMACのDISKDEFマクロ・ライブラリを使って、BIOSのディスクパラメータテーブルを作成するのが早道です。
今までの起動デスクには、MAC.COM、DISKDEF.LIB及びED.COMを含んでいるので、これらを使用して、新たなBIOSのディスクパラメータテーブルを作成していきたいと思います。
まずは、ED.COMでディスクパラメータファイルを作成しますが、ED.COMは現在主流のスクリーンエディタのように矢印キーでカーソルを動かして編集することはできません。
自分自身がカーソル位置を常に意識して編集するラインエディタです。
ということで、ここからは、ラインエディタEDについて習得していきたいと思います。
新規にファイルを作成します。
A>ed test.asm
NEW FILE
: *
文章を新規入力します。
インサートモード i を入力(Enter)して新規テキストを入力していきます。
1行の中ではBS(BackSpace)できますが、行をまたがることはできません。
インサートモードを抜けるには Ctrl+z(Ctrlキーとzキーを同時に押す)です。
一行目に 1234567890、 二行目にabcdefghij 3行目にCtrl+zで終了します。
NEW FILE
: *i
1: 1234567890
2: abcdefghij
3:
: *
CP(編集したい文字位置:キャラクタポインタ)を 文章の先頭にするには b 最後にするには -bです。
タイプ(表示)するにはtとします。CP位置から2行前は -2t CP位置から 後ろ2行は 2tです。
CPを先頭に戻して 2行表示するには、b2tとします。
: *b2t
1: 1234567890
2: abcdefghij
1: *
CPは一行目先頭になっています。
1行の中で文字位置を移動するには、C を使用します。
先頭のCP位置を1として、移動位置の相対値をCの前に与えます。また CP位置より前は、-(マイナス)を与えます。
例えば 数字の5の位置は 5cとなります。
行の先頭からCP位置までを表示するには 0tとします。
1: *5c
1: *0t
1: 12345*
今CPは1行目5文字目にあります(つまり数値の5の位置)
文字削除は dです。 削除する文字数をdの前に与えます。またCPより前方を削除する場合は -(マイナス)を付加します。
ここでは 数字の678を削除します。3dと入力したあと 行先頭からCPまで表示します。
1: 12345*3d
1: *0t
1: 12345*
これでは 数字の678が削除されたわからないので、行の先頭から行末まで表示させます。ここでは ラインNo.を指定して表示させます。
ラインNo を指定するには :とします :の前にラインNoを指定します。
CPは指定ラインの先頭に移動します。
ここでは、1行目を指定して 2行表示します。
1: 01234*1:
1: *2t
1: 1234590
2: abcdefghij
1: *
ちゃんと 数値の678が削除されているようです。
元通りに678を挿入してみます。
挿入は最初に使用した iですが、CPの後ろから挿入していきます。
ということで、数字の5以降に678と挿入すればいいことになります。
5cと入力した後、(確認のため)CPまで表示させてから、i678Ctrl+zと入力(Enter)します。そのあと 1行目から1行表示しています。 1:と入力 1tと入力
1: *5c
1: *0t
1: 12345*i678^Z
*
2: abcdefghij
2: *1:
1: *1t
1: 1234567890
1: *
今度は、1行目の5を削除してみます。
1: 5c -1d
1: 1t
1: *1:
1: *5c
1: *-1d
1: *1:
1: *1t
1: 123467890
1: *
再度 5を挿入
4c 0t i5Ctrl+z (Enter)
1: 1t
1: *4c
1: *0t
1: 1234*i5^Z
*1:
1: *1t
1: 1234567890
1: *
置換は S を使用。Sのまえに数値を入れるとその動作を数値分繰り返す。
最初に 置換したい文字列を指定し、Ctrl+zのあとに置換する文字列を指定してEnterする。
1行目の 456をabcに置換する場合は、
1: s456Ctrl+zabc Enter 1: 1t
1: *1:
1: *s456^Zabc
1: *1:
1: *1t
1: 123abc7890
1: *
行は相対的に移動することができます。
CPが1行目にいる場合、2:の代わりに1l(エル)で1行次の行に移りCPを先頭にします。
1: *1:
1: *1t
1: 123abc7890
1: *1l
2: *1t
2: abcdefghij
2: *
数値だけ指定すると、その数値行数次の行に移り、CPを先頭にし、1行表示します。
いま2行目にいるので 1行目に移り、1行表示するには
-1 とします。
2: *-1
1: 123abc7890
1: *
数値の 0のみの場合は、CPを行の先頭に移動し、1行表示します。
1: *0
1: 123abc7890
1: *
Enterのみ押すと、次の行に移りCPを先頭にし、1行表示します。
1: *
2: abcdefghij
2: *
行削除は k kの前に数値を指定するとその数値行数分削除します。
1行目を削除
1: *1k
1: *b
1: *2t
1: abcdefghij
1: *
セーブして 終了は e 起動したときに指定したファイル名にセーブします。
1: *e
A>dir
A: ASM COM : DDT COM : DISKDEF LIB : DUMP COM
A: ED COM : LOAD COM : MAC COM : PIP COM
A: STAT COM : SUBMIT COM : XSUB COM : Z80 LIB
A: TEST BAK : TEST ASM
A>type test.asm
abcdefghij
A>
編集したファイルを再度読み込み編集するには a を指定します。
ファイルから 指定行読むこむ場合は aの前に行数を指定します。
0aの場合、エディタバッファーの半分まで読み込むそうです。
0aを指定する前は、自動で読込されません。0aを指定すると読み込まれます
A>ed test.asm
: *2t
: *0a
1: *2t
1: abcdefghij
他にもいろいろとコマンドがありそうですが、これだけ覚えたら テキストを編集できそうです。