MSX関連
マシン語プログラム入力ツール

turboRBASIC上で動きます。
Z80ダンプリストを見てプログラムが理解できる必要があります。
※ 起動開始番地E45Ch(変更可能)を超えるプログラムは作成できません
BIOSCHPUTをコールしてA-Zまでの文字を表示します。
 
BASICの1行目で開始アドレス(表)・開始アドレス(裏)・格納アドレスを指定。
#a8bitラベルで、>aは相対アドレスの計算をします。
()で括った15文字まで指定できます。
 
で設定します。
 
※ _Cl0xCDと同じです
で設定されます。
 
※ _*bR800の掛け算命令(0xED.0xC1)です
※※ ランダムにアルファベットを32文字表示するプログラム
裏の値を参照できます。
別アドレスで動作するプログラムに使用できます。
 
※ は注釈で,(コンマ)で終了します
※※ 0〜15を16進表示するプログラム
,,(コンマ×2)で数値の下位・上位となります。
それ以外の場合は数値が00-FFhの時はそのままで、100h以上の時は上位の値になります。
 
を最初に付けると式全体の下位値、後ろに付けるとその値の下位値です。
 
(例)
1234,,99       → 0x34.0x12.0x99
1234,99        → 0x12.0x99
1234%,99       → 0x34.0x99
%1234+5678,,99 → 0xAC.0x00.0x99
””内の文字列を出力します。
 
(例)
”ABC”   → 0x41.0x42.0x43
”ABC”+1 → 0x42.0x43.0x44
”ABC”−1 → 0x40.0x41.0x42
”ABC”^1 → 0x40.0x43.0x42(XOR)
#a#pまでは8bitラベル
#q#xまでは16bitラベル
使い捨てで何度でも設定できます。
 
8bitラベルは範囲を超えるとReference errorになりますが、
16bitラベルを使うと解消される場合があります。
 
(例)
6,3,3E,20,#i_Cl 00A2,10,>i    → 0x06.0x03.0x3E.0x20.0xCD.0xA2.0x00.0x10.0xFB
E,3,3E,20,#x_Cl 00A2,D,_jnz>x → 0x0E.0x03.0x3E.0x20.0xCD.0xA2.0x00.0x0D.0x20.0xFA
_jz _jnz _jc _jnc _Jz _Jnz _Jc _Jnc が使えます。
相対(j小文字)、絶対(J大文字)を自動的に設定します。
但し16bitラベルを使う場合はのみ使用可能です。
 
コール命令は、_Cl _Cz _Cnz _Cc _Cnc が使えます。
で1バイト単位の繰り返しが使えます。
 
(例)
*4    → 0x00.0x00.0x00.0x00
*5/34 → 0x34.0x34.0x34.0x34.0x34
 
|数値[,]で範囲内の繰り返しが使えます。
※ 危険命令です。使用する際はセーブしてから行って下さい
※※ を付け忘れたり、範囲を超えたりすると暴走します
 
(例)
|2[,1A,2,13,3,] → 0x1A.0x02.0x13.0x03.0x1A.0x02.0x13.0x03
でアドレスの補整ができます。
 
(例)
|2[,1A,2,13,3,],!−2,C9 → 0x1A.0x02.0x13.0x03.0x1A.0x02.0xC9
 
は現アドレスを示しています。
※ を指定すると裏アドレスになります
_*b _*c _*d _*e _*h _*l _*(hl) _*a
_*bc _*de _*hl _*sp が使えます
_t _r _s (BIT・RES・SET)が使えます。
 
(例)
_t0.b    → 0xCB.0x40 (BIT)
_r1.d    → 0xCB.0x8A (RES)
_s7.(hl) → 0xCB.0xFE (SET)
このツールのソース自体もこのツールで書かれています。
 
ラベルb_cmの値がワークエリアのメモリバンク。
9900行のE45Chが起動開始番地です。
拡張等によりアドレスを変更する場合は1行目のDC79hと9900行目を書き換えて下さい。
コンパイル中に[取消]キーを押すとラベル表示が中断されます。
※ このプログラムの不具合により不利益を被る可能性がありますので御使用の際は十分注意して下さい
※ 当方は一切の責任を負いません



戻る

ツリー表示
トップページへ