※BASIC LEVELⅢBについてはEnriさんの解析された資料を参照させて頂きました。
(以下メモ)
格納アドレス
- BASIC LEVELⅢB:9800H~ (8160H,8161Hに先頭アドレスを格納)
- HOME BASIC:9B0AH~ (8602H,8603Hに先頭アドレスを格納)
構造
10 PRINT"SC-3000"
…と入力した場合
- BASIC LEVELⅢB
0A - プログラム長さ
0A 00 - 行番号
00 00
91 22 53 43 2D 33 30 30 30 22 - PRINT"SC-3000"
0D - 行の終わり
00 00 - エンドマーク
- HOME BASIC
0B - プログラム長さ
0A 00 - 行番号
00 00
01 91 22 53 43 2D 33 30 30 30 22 - PRINT"SC-3000"
0D - 行の終わり
00 00 - エンドマーク
中間言語について
BASIC LEVELⅢとHOME BASICの命令に差異があるが、両方に含まれるコマンド、ステートメント、演算子の中間言語は殆ど同一のようだが、関数については全く異なる。※余談だが、HOME BASICに『PLENISCOIN(中間言語6DH)』という命令があるが、何をするものだろう?
あとは数値の実数・整数型の際による表現方法も異なるはず。(未確認)
変換できそうな気もするが、 今の自分のレベルだと、変換方法を考えるより手打ちした方がまだ速そう…。
おわり
(追記)
HOME BASICのBASICプログラム格納アドレスについて、プログラムの有無にかかわらず『NEW』コマンドを入れる毎に開始アドレスが9B3EH,9B72H…とズレてしまう様子。
実機では未チェックだが、eSC-3000とMAMEの両方で同じ状態になる。
これを繰り返すことでオーバーフローするのかまで調べるつもりは無いが、バグなのか解析ミスなのか…。
(追記2)
HOME BASICのバグ(?)について、SC-3000実機でも同じ状況であることを確認した。
エミュレータ上でのチェック時は未確認だったが、
PRINT FRE
と入力した時の値も減少している。
フリーエリアはリセットボタン押下や、8602H,8603Hの値を書き直してみても回復せず、電源スイッチOFF-ONしなければならないようだ。
まあ、これで困るほどプログラム書き溜めていないんだけれど…。
PLIENISCOIN (PLEINSCOIN?) →"PLEASE INSERT COIN"?
返信削除