2019/05/09(木) [n年前の日記]
#2 [prog][mz] SP-5030のBASICリストの格納フォーマットを調べたり
MZ-80K/1200等で使われる BASIC、SP-5030 が、BASICのソースリストをどんなフォーマットでバイナリとして格納するのかが気になったので少し調べたり。
とりあえず、Windows10 1809 x64 + MZ700WIN 0.56 + SP-5030 上で、簡単なソースを打ち込んで、.mzt に保存。その .mzt をバイナリエディタで開いて確認。
なんだかうっすら見えてきた。こういう感じかな。
最初の1行目を眺めてみる。
マルチステートメントを使った場合はどうなるのだろう。
中間コードについては、以下のページが参考になりそう。
_mz-80K SP-5030 (旧バージョン) - Enri's Home PAGE (mz-80K)
とりあえず、Windows10 1809 x64 + MZ700WIN 0.56 + SP-5030 上で、簡単なソースを打ち込んで、.mzt に保存。その .mzt をバイナリエディタで開いて確認。
なんだかうっすら見えてきた。こういう感じかな。
- .mzt は、0x0000 - 0x007F がヘッダ情報。
- 0x0080 以降に、実データがある。
- BASICのソースリストの終了コードは、おそらく 0x0000、なのではあるまいか。たぶん。
最初の1行目を眺めてみる。
- 最初の 2 byte が、1行の長さ (byte数)。
- 次の 2 byte が、行番号。1 - 65535 の行番号が利用できるのだろう。たぶん。
- 5 byte目以降に、1行文の内容が書かれる。
- PRINT は、中間コード 0x85 に置き換えられる。
- 0x20 は、ASCII のスペース文字。
- 行の終わりには、終了コード 0x0D が入る。
マルチステートメントを使った場合はどうなるのだろう。
- マルチステートメントの区切り文字、":" は、ASCIIコードがそのまま格納される模様。
- = や * 等の演算子も、中間コードで置き換えられる模様。
中間コードについては、以下のページが参考になりそう。
_mz-80K SP-5030 (旧バージョン) - Enri's Home PAGE (mz-80K)
[ ツッコむ ]
以上です。