今探索してみると、Windows の GUI で Z80 のアゼンブラも
いくつか存在しているのですが、多くは HEX ファイルでの出力で、
ダイレクトに MSX-DOS や MSX-BASIC へ持っていくものがありません。
その理由は MSX を知らないために
MSX に対応したファイル形式を生成できないからだろうと思っています。
そんなわけで、MSX に関連するファイル形式の解説です。
ついでにこれも、これも、……と記載してみました。
0100h | Z80(R800) コード(バイナリ) |
0101h | Z80(R800) コード(バイナリ) |
: |
MSX-DOS/2 では、0100h 番地を先頭に実行ファイルを読み込み、
0100h 番地から実行される仕組みです。ヘッダは含みません。
1バイト | FEh |
2バイト | 開始番地 |
2バイト | 終了番地 |
2バイト | 実行番地 |
1バイト | (開始番地)番地のデータ(バイナリ) |
1バイト | (開始番地)+1番地のデータ(バイナリ) |
: | |
1バイト | (終了番地)のデータ(バイナリ) |
MSX の RAM(メモリ)・VRAM(VDP関連メモリ)は
そのままバイナリーファイル化されます。
実行番地は BLOAD で ,R をつけた際に実行される番地です。
以下の SCREEN ● ファイルも BSAVE・BLOAD 互換のため、
上記の形式で記載されてます。
1バイト | FEh |
2バイト | 0000h |
2バイト | 769Fh |
2バイト | 0000h |
0000h |
上4ビット (0,0)の色(0~15) 下4ビット (0,1)の色(0~15) |
0001h |
上4ビット (0,2)の色(0~15) 下4ビット (0,3)の色(0~15) |
: | |
69FFh |
上4ビット (254,211)の色 下4ビット (255,211)の色 |
6A00h ~ 767Fh |
無視 |
7680h |
上 bit7 無視 bit6~4 COLOR 0 の R 輝度(0~7) bit3 無視 下 bit2~0 COLOR 0 の B 輝度(0~7) |
7681h |
上 bit7~3 無視 下 bit2~0 COLOR 0 の G 輝度(0~7) |
7682h |
上 bit7 無視 bit6~4 COLOR 1 の R 輝度(0~7) bit3 無視 下 bit2~0 COLOR 1 の B 輝度(0~7) |
7683h |
上 bit7~3 無視 下 bit2~0 COLOR 1 の G 輝度(0~7) |
: | |
769Eh |
上 bit7 無視 bit6~4 COLOR 15 の R 輝度(0~7) bit3 無視 下 bit2~0 COLOR 15 の B 輝度(0~7) |
769Fh |
上 bit7~3 無視 |
SCREEN 5 は 256x212 ドット。左上が (0,0)、右下が (511,211) です。
輝度は 0 であれば暗く、7 であれば明るくなります。
1バイト | FEh |
2バイト | 0000h |
2バイト | 69FFh |
2バイト | 0000h |
0000h |
上4ビット (0,0)の色(0~15) 下4ビット (0,1)の色(0~15) |
0001h |
上4ビット (0,2)の色(0~15) 下4ビット (0,3)の色(0~15) |
: | |
69FFh |
上4ビット (254,211)の色 下4ビット (255,211)の色 |
1バイト | FEh |
2バイト | 0000h |
2バイト | DA9Fh |
2バイト | 0000h |
0000h |
上4ビット (0,0)の色(0~15) 下4ビット (0,1)の色(0~15) |
0001h |
上4ビット (0,2)の色(0~15) 下4ビット (0,3)の色(0~15) |
: | |
D3FFh |
上4ビット (510,211)の色 下4ビット (511,211)の色 |
D400h~ FA7Fh |
無視 |
FA80h |
上 bit7 無視 bit6~4 COLOR 0 の R 輝度(0~7) bit3 無視 下 bit2~0 COLOR 0 の B 輝度(0~7) |
FA81h |
上 bit7~3 無視 下 bit2~0 COLOR 0 の G 輝度(0~7) |
FA82h |
上 bit7 無視 bit6~4 COLOR 1 の R 輝度(0~7) bit3 無視 下 bit2~0 COLOR 1 の B 輝度(0~7) |
FA83h |
上 bit7~3 無視 下 bit2~0 COLOR 1 の G 輝度(0~7) |
: | |
FA9Eh |
上 bit7 無視 bit6~4 COLOR 15 の R 輝度(0~7) bit3 無視 下 bit2~0 COLOR 15 の B 輝度(0~7) |
FA9Fh |
上 bit7~3 無視 下 bit2~0 COLOR 15 の G 輝度(0~7) |
※ SCREEN 7 は 512x212 ドット。左上が (0,0)、右下が (511,212) です。
SCREEN 5 に比べ横が 1/2 になります。
※ 輝度は 0 であれば暗く、7 であれば明るくなります。
1バイト | FEh |
2バイト | 0000h |
2バイト | D3FFh |
2バイト | 0000h |
0000h |
上4ビット (0,0)の色(0~15) 下4ビット (0,1)の色(0~15) |
0001h |
上4ビット (0,2)の色(0~15) 下4ビット (0,3)の色(0~15) |
: | |
D3FFh |
上4ビット (510,211)の色 下4ビット (511,211)の色 |
1バイト |
上 bit7 無視 bit6~4 PALETTE 0・COLOR 0 の R 輝度(0~7) bit3 無視 下 bit2~0 PALETTE 0・COLOR 0 の B 輝度(0~7) |
1バイト |
上 bit7~3 無視 下 bit2~0 PALETTE 0・COLOR 0 の G 輝度(0~7) |
1バイト |
上 bit7 無視 bit6~4 PALETTE 0・COLOR 1 の R 輝度(0~7) bit3 無視 下 bit2~0 PALETTE 0・COLOR 1 の B 輝度(0~7) |
1バイト |
上 bit7~3 無視 下 bit2~0 PALETTE 0・COLOR 1 の G 輝度(0~7) |
: | |
1バイト |
上 bit7 無視 bit6~4 PALETTE 7・COLOR 15 の R 輝度(0~7) bit3 無視 下 bit2~0 PALETTE 7・COLOR 15 の B 輝度(0~7) |
1バイト |
上 bit7~3 無視 下 bit2~0 PALETTE 7・COLOR 15 の G 輝度(0~7) |
グラフザウルスの SCREEN5・7 は 8 つパレットを持っているため、
パレット無ファイル(.SR5/.SR7) と共にパレットファイルが生成されます。
ヘッダがないので、BLOAD,S では読み込めません。
OPEN・FIELD で読み込む事ができます。
1バイト | FEh |
2バイト | 0000h |
2バイト | D3FFh |
2バイト | 0000h |
0000h |
上 bit7~5 (0,0) の G 輝度(0~7) bit4~2 (0,0) の R 輝度(0~7) 下 bit1・0 (0,0) の B 輝度(0~3) |
0001h |
上 bit7~5 (1,0) の G 輝度(0~7) bit4~2 (1,0) の R 輝度(0~7) 下 bit1・0 (1,0) の B 輝度(0~3) |
: | |
D3FFh |
上 bit7~5 (255,211) の G 輝度(0~7) bit4~2 (255,211) の R 輝度(0~7) 下 bit1・0 (255,211) の B 輝度(0~3) |
SCREEN 8 は 512×212 ドット。左上が (0,0)、右下が (255,211) です。
SCREEN 5・7 のようにパレットを使用せず、
直接座標の色データになっています。
赤・緑は 0~7 ですが、青だけが 0~3 ですのでご注意下さい。
SCREEN 7 のようにパレットを含んでいる場合もあります。
1バイト | FEh |
2バイト | 0000h |
2バイト | D3FFh(パレットなし)・Fa9Fh(パレットあり) |
2バイト | 0000h |
0000h |
上 bit7~4 (0,0) の Y 値 または 色(0~15) bit3 0=YJK・1=色 下 bit2~0 (0~3,0) の K 値 下3バイト(0~7) |
0001h |
上 bit7~4 (1,0) の Y 値 または 色(0~15) bit3 0=YJK・1=色 下 bit2~0 (0~3,0) の K 値 上3バイト(0~7) |
0002h |
上 bit7~4 (2,0) の Y 値 または 色(0~15)
bit3 0=YJK・1=色 |
0003h |
上 bit7~4 (3,0) の Y 値 または 色(0~15) bit3 0=YJK・1=色 下 bit2~0 (0~3,0) の J 値 上3バイト(0~7) |
0004h |
上 bit7~4 (4,0) の Y 値 または 色(0~15) bit3 0=YJK・1=色 下 bit2~0 (4~7,0) の K 値 下3バイト(0~7) |
: | |
D3FFh |
上 bit7~4 (255,211) の Y 値 または 糸(0~15)
bit3 0=YJK・1=色 |
D400h~ FA7Fh |
無視 |
FA80h |
上 bit7 無視 bit6~4 COLOR 0 の R 輝度(0~7) bit3 無視 下 bit2~0 COLOR 0 の B 輝度(0~7) |
FA81h |
上 bit7~3 無視 下 bit2~0 COLOR 0 の G 輝度(0~7) |
FA82h |
上 bit7 無視 bit6~4 COLOR 1 の R 輝度(0~7) bit3 無視 下 bit2~0 COLOR 1 の B 輝度(0~7) |
FA83h |
上 bit7~3 無視 下 bit2~0 COLOR 1 の G 輝度(0~7) |
: | |
FA9Eh |
上 bit7 無視 bit6~4 COLOR 15 の R 輝度(0~7) bit3 無視 下 bit2~0 COLOR 15 の B 輝度(0~7) |
FA9Fh |
上 bit7~3 無視 下 bit2~0 COLOR 15 の G 輝度(0~7) |
SCREEN 10 と SCREEN 11 はファイルとしてのデータは全く一緒です。
BASIC コマンドでの扱いが異なります。
(SCREEN 10 は COLOR 0~15 で RGB パレット使用、
SCREEN 11 は COLOR 0~255 で VPOKE 共通)
FA9Fh の代わりに D3FFh を受け取った場合、パレットデータは存在しません。
(255,211) までの参照で止めて下さい。
この場合の色はデフォルトパレットを期待します。
1バイト | FEh |
2バイト | 0000h |
2バイト | D3FFh |
2バイト | 0000h |
0000h |
上 bit7~3 (0,0) の Y 値(0~31) 下 bit2~0 (0~3,0) の K 値 下3バイト(0~7) |
0001h |
上 bit7~3 (1,0) の Y 値(0~31) 下 bit2~0 (0~3,0) の K 値 上3バイト(0~7) |
0002h |
上 bit7~3 (2,0) の Y 値(0~31) 下 bit2~0 (0~3,0) の J 値 下3バイト(0~7) |
0003h |
上 bit7~3 (3,0) の Y 値(0~31) 下 bit2~0 (0~3,0) の J 値 上3バイト(0~7) |
0004h |
上 bit7~3 (4,0) の Y 値(0~31) 下 bit2~0 (4~7,0) の K 値 下3バイト(0~7) |
: | |
D3FFh |
上 bit7~3 (255,211) の Y 値(0~31) 下 bit2~0 (252~255,211) の J 値 上3バイト(0~7) |
SCREEN 12 は SCREEN 8 から YJK 形式での出力へ変化させたものです。
従って、FA9Fh 以降にパレット情報を含めている場合がありますが、
これは画像表示の場合無視できます。
MS-DOS・Windows のメモ帳等で生成されるテキストファイルと同等です。
漢字を用いる場合の文字コードはシフトJIS、改行コードは CR+LF となります。
終了コード EOF(1Ah) は付いている場合があります。
その場合、後ろを無視する必要があります。
(CP/M のテキストファイルは必須)
ただし、必須ではありません。物理的なファイルの終了の場合もあります。
MSX-DOS テキストファイル同様、改行コードは CR+LF となります。
つまり、MSX-BASIC を Windows 等で記載して
一度 2DD フロッピーディスク等に保存すれば
MSX パソコンや MSXPLAYer 等から LOAD 命令や RUN 命令で読む事が可能です。
ひらがなと一部記号を除き、半角文字コードも一緒です。
漢字 BASIC の場合、漢字はシフト JIS となります。