JR2 フォーマットは JR-200 が MN1271 のレジスタ $C80D に書き込む値をそのまま記録するフォーマットです。ちなみに名前の由来は JR-200 Raw → JRR → JR^2 → JR2 というシャレです(意味不明)。
特徴
以上の点を考えてこのフォーマットにしました。使いたくない人は PRINT#, INPUT# 以外は CJR のみでも運用できるので問題ありませんし、今後 CJR のサポートを切るつもりもありません。CJR と JR2 の比較を表にしておきます。
特徴 | ファイルサイズ | サイズ上限 | 1ファイルに | PRINT# | |
---|---|---|---|---|---|
CJR | 実際のプログラム、データを記録 | 小さい | 64KB (VJR-200の制約) |
1プログラム、または1データのみ | 非対応 |
JR2 | 記録波形に相当する値を記録 | 大きい | 2GB | 複数のプログラム、データ格納可 | 対応 |
具体的なファイルフォーマットは以下の通りです。0~15 byte までがヘッダブロック、16 byte 以降がデータブロックです。
Offset | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
Value | 'J' (0x4a) | 'R'(0x52) | '2'(0x32) | '\0' (0) | 1 | 0 | 0x10 | 0 |
description | file type | major ver | minor Ver | pointer to data block | ||||
Offset | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Value | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
description | reserved | |||||||
Offset | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
description | data block |
データブロックの先頭を表す 6,7 バイトはリトルエンディアンで 2byte。今のところ変更する予定はありませんが、万一ヘッダが足りなくなった時のために保険をかけておきます。
また、デフォルトでは SAVE, MSAVE, PRINT# 時にリモート端子が停止になるたびに末尾に 500 バイトの0を付加しています。これは PRINT# したデータを INPUT# で読み込むときに、読み込みのタイミングでブランクがないと正常に読み込めなくなるためです。本当は SAVE, MSAVE 時には付加不要なものですが、エミュレータから両者を区別するのは困難なため、すべてのケースで付加します。
なので、自分は絶対に PRINT# なんか使わないという人は、オプション-エミュレータ の「CMT : 録音停止時、ブランクを付加する」のチェックを外すとファイルサイズを節約できます。ただしこの状態で PRINT# したデータは INPUT# 時にエラーが出て読み込めなくなるので注意してください。
[TOP PAGE]