BASICのフリーエリアを減らすことなくMZ2000_SDからバイナリデータをロードできるようにする
■各BASICの書き換え方法
まずこちらから「mz2000sdPatch###.zip」をダウンロードします。(###はバージョン番号)
ソースファイルはこちら
・ MZ-80B対応 SB-5520 BASIC
(1) PatchGUI.exeを起動します。
(2) 設定jsonファイルに「sb-5520_minimum_patch.json」を選びます。
(3) 元になるmztファイルに「SB-5520」のMZTファイルを選びます。
(4) 作成するファイルのファイル名が「…(SD).mzt」となります。「…(MINSD).mzt」とでも変更してください。
(5) 実行するボタンを押します
ファイル名は作成するファイルで指定したファイルになります。
・ MZ-2000/2200対応 MZ-1Z001 BASIC
(1) PatchGUI.exeを起動します。
(2) 設定jsonファイルに「mz-1z001_minimum_patch.json」を選びます。
(3) 元になるmztファイルに「MZ-1Z001」のMZTファイルを選びます。
(4) 作成するファイルのファイル名が「…(SD).mzt」となります。「…(MINSD).mzt」とでも変更してください。
(5) 実行するボタンを押します
ファイル名は作成するファイルで指定したファイルになります。
・ MZ-2000/2200対応 MZ-1Z002 COLOR BASIC
(1) PatchGUI.exeを起動します。
(2) 設定jsonファイルに「mz-1z002_minimum_patch.json」を選びます。
(3) 元になるmztファイルに「MZ-1Z002」のMZTファイルを選びます。
(4) 作成するファイルのファイル名が「…(SD).mzt」となります。「…(MINSD).mzt」とでも変更してください。
(5) 実行するボタンを押します
ファイル名は作成するファイルで指定したファイルになります。
■バイナリデータロード方法
通常BASICでは
LOAD "FILENAME"
でバイナリファイルをロードできるがこの書き換え後MZ2000_SDから読み込む場合は以下のようになります。
・ MZ-80B対応 SB-5520 BASIC
 LIMIT$####:F$="FILENAME":USR($49EE, F$)
・ MZ-2000/2200対応 MZ-1Z001 BASIC
 LIMIT$####:F$="FILENAME":USR($4C62, F$)
・ MZ-2000/2200対応 MZ-1Z002 COLOR BASIC
 LIMIT$####:F$="FILENAME":USR($5D22, F$)
(注)
####は読み込むアドレス-1
例えば0B000h~に読み込むならLIMIT$AFFFにする
■改造後のメモリマップについて
	
		|  | SB-5520 | MZ-1Z001 | MZ-1Z002 | 備考 | 
	
		| モニタプログラム | 0000h~0129Fh | 0000h~0129Fh | 0000h~0129Fh |  | 
	
		| BASICインタプリタ | 012A0h~049EDh | 012A0h~04C61h | 012A0h~05D21h |  | 
	
		| MZ2000_SDからのロードプログラム格納 | 049EEh~? | 04C62h~04CFFh(?) | 05D22h~? | (使用可能サイズ調査中) | 
	
		| LIMIT値、LIMITMAX値 | ? | 04D08h~04D0Bh | 05E08h~ | (調査中) | 
	
		| キー入力バッファ | 04A0Dh~04AADh | 04D0Dh~04DADh | 05E0Dh~05EADh | 135Chへジャンプで入力結果が実行される | 
	
		| 36?、37?個の変数領域スタック? | 04F4Eh~? | 0524Eh~? | 0634Eh~? | (調査中) | 
	
		| BASICプログラム | 0515Ch~ | 0545Ch~ | 0655Ch~ |  | 
	
		| 変数領域スタックへのポインタ? | BASICプログラムの後~ | BASICプログラムの後~ | BASICプログラムの後~ | (調査中) | 
通常MZ-80B/2000/2200のBASICは0000h~129Fhまではモニタプログラム12A0h~はBASICインタプリタになります。
BASICプログラムはBASICインタプリタの後のアドレスにロードされますが実はBASICインタプリタとBASICプログラム隙間に140~160バイト程度の未使用領域があります。
詳しいサイズは分からないですが、その隙間にMZ2000_SDからのロードプログラムを入れたのが今回の改造になります。
未使用領域に入れたのでBASICのフリーエリアは全く減りません。
ただロードできるのはマシン語プログラムだけなので今の所何に使えるかと言われてもすぐには思いつきませんw
しかもMZ2000_SDから起動したのが前提になっているのでMZ2000_SDは初期化済みが前提のプログラムになっています。
やってみたらできた…ってだけです。
 
戻る