ソースジェネレータ RING

毛内俊行
 
 RINGはREDAに完全対応したソースコードジェネレータです。出力されるソースコードは完全にZ80のザイログニーモニックで,スペースにタブコードを使用することができます。また,タブコードを使用せずにソースコードを出力できるので,ZEDAなどのアセンブラでも使用できます。
 

◆RINGのコマンド

L[*] adr1 adr2
L[/] adr1 adr2
 adr1とadr2で指定した範囲を逆アセンブルします。Lの直後に*をつけることによって,メモリ上にソースリストを生成します。また,/をつけるとソースの作成を行いながら,同時に画面に逆アセンブルしたリストを出力します。
N
 Lコマンドでソースリストの作成中に,メモリ不足でエラーが発生したり,BREAKキーで中断したときにこのコマンドを実行すると中断した直後から逆アセンブルを再開します。なお,ソースリスト作成中は,このコマンドを実行するとそれまで作成したソースリストを破壊するので,このコマンドを実行する前にSコマンドで途中まで作成されたソースリストをセーブしておきましょう。
X[adr]
 L,Nコマンドで作成するソースリストの格納アドレスを設定します。アドレス値を省略すると,現在格納されているソースの先頭,終了アドレスを表示します。
O adr
 L,M,D,Fコマンドでのオフセットアドレスを指定します。たとえば,3000Hで動作するプログラムを,A000Hから読み込んでいる場合は,
 O7000
 L3000
とすれば,3000Hから動作するプログラムとして逆アセンブルができます。
M[B][adr1 adr2]
M[W][adr1 adr2]
M[M][adr1 adr2]
M[S][adr1 adr2]
 指定エリアをデータエリアとして登録します。MB,MW,MM,MSの各コマンドで登録された部分はそれぞれ,DB,DW,DM,DSの形式でデータとして出力されます。アドレスを省略すると,現在登録されているデータエリアと形式を表示します。
&[adr]
 Mコマンドで定義していたデータエリアの登録を解除します。アドレスを省略すると,すべてのデータエリアの登録を解除します。
C[adr][CODE][SIZE]
 S-OSの#MPRINTのような,CALL文の直後にデータを置くサブルーチン(仮に特殊サブルーチンと呼ぶ)の指定/解除を行います。登録は,
 C adr SIZE (1)
 C adr 00 CODE (2)
のような形式で行います。(1)では,指定されたアドレスに続くSIZEバイト分のエリアをデータとみなし,(2)では後続のデータ数が不定であるサブルーチンに適応するもので,データ数を0としてCODEで,データのエンドコードを指定しています(データは16進2桁で指定)。たとえば,S-OSの#MPRINTを登録しようとしたら,
 C 1FE2 00 00
と入力すればいいことになり,同じくS-OSの#PAUSEを登録するときには,
 C 1FC7 02
と入力すればいいわけです(この2つは,あらかじめ登録されています)。また,アドレスだけを指定すると,それまでにCコマンドで登録されていたサブルーチンの解除を行います。
S filename
 作成したソースを,filenameでセーブします。
D adr1 [adr2]
 アドレスで指定した範囲のダンプリストを表示します。最終アドレスを省略すると,最初の128バイトだけ表示します。表示内様は,そのままカーソルエディットが可能です。
F adr1 adr2 DATA……
 指定範囲から,DATAをサーチし,アドレスとともに出力します。データは複数個指定可能で,16進数かダブルクォーテーションでくくった文字列で指定します。
J adr
 指定したアドレスにジャンプします。
#
 コマンド実行ごとにプリンタへ出力をON/OFFします。
!
 S-OSのホットスタートヘジャンプします。
T
 コマンド実行ごとに出力するソースリストにタブコードを使うか使わないかを切り換えます。
 
(C)1989 Toshiyuki Mounai(original)
(C)1997 Junji Okazaki(edited)
(C)2024 Oh!Ishi,Nibbles Lab.(formatted)