付録K
インクルード・ファイル
A:\TATARA\INCLUDEにある9つのインクルード・ファイルには、903の名前と1つのマクロが入っています。これらはアドレスや数を手で書く手間を省くためのもので、その説明はしていません。この付録では、それぞれのファイルに何が入っているかと、その名前がどこで説明されているかを示します。使い方は14章で説明しています。
名前はMSX-Datapackから取ったもので、ファイルに断りがない限り、その綴りのままです。それぞれの名前にはファイルの中に1行のコメントがあり、それぞれのファイルの先頭には、中身の使い方を説明するコメントがあります。ルーチンがレジスターに何を必要とし、何を返すかは、K.10節に挙げた本に書かれています。
表K.1に、この付録の順、つまりプログラムが必要とすることの多い順に、ファイルを示します。
| ファイル | 中身 |
名前 | 範囲 |
| MSXDOS.INC | MSX-DOSのファンクション番号とsystemマクロ |
93 | 00h–70h |
| ERRORS.INC | MSX-DOSのエラー・コード |
76 | 0FFh–81h |
| BIOS.INC | メインROMのエントリー |
92 | 0000h–017Dh |
| WORKAREA.INC | システムのワーク・エリア |
311 | 0F323h–0FFFFh |
| SUBROM.INC | サブROMのエントリー | 36 | 0089h–01F9h |
| HOOKS.INC | フック | 117 | 0FD9Ah–0FFD4h |
| PORTS.INC | I/Oポート |
56 | 07Ch–0FCh |
| ASCII.INC | 制御コード |
37 | 0–127 |
| EXTBIO.INC | 拡張BIOSとFM BIOS |
85 |
MSX-DOSのプログラムにはMSXDOS.INCが必要で、たいていはERRORS.INCも使います。カートリッジから動くプログラムや、BASICから読み込むプログラムには、代わりにBIOS.INCとWORKAREA.INCが必要で、MSX2で加わった機能にはSUBROM.INCも使います。残りのファイルは、ハードウェアを直接扱うプログラムのためのものです。
図K.1に、ファイルが名前を付けているアドレスが、Z80の 64 KBのどこにあるかを示します。
K.1 MSXDOS.INC
MSX-DOSとMSX-DOS2のファンクション番号です。_TERM0(00h)から_REDIR(70h)までと、0005hのエントリーであるBDOS、そしてCに番号を入れてBDOSを呼ぶsystemマクロが入っています(14.3節)。名前はMSX-DOS2のソースで使われている公式のもので、先頭のアンダースコアも含みます。31hより小さい番号は MSX-DOS1にもあり、31h以上はMSX-DOS2だけのものです。
MSX-DOS2のファンクションの仕様書と、MSX-Datapackの第3巻で説明されています。
K.2 ERRORS.INC
MSX-DOSとMSX-DOS2のエラー・コードです。.NCOMP(0FFh)から.OVDEST(81h)まで、ディスクのエラー、ファンクションが返すエラー、プログラムを終わらせるエラー、コマンド・インタープリターのエラーの4つのグループに分かれています。名前は、マニュアルの表記どおりドットで始まります。コードは0FFhから下へ順に割り当てられたので、ファイルも下へ向かって並んでいます。
MSX-DOS2のファンクションの仕様書と、MSX-Datapackの第3巻で説明されています。
K.3 BIOS.INC
メインROMのエントリーです。CHKRAM(0000h)からWRRES (017Dh)まで、アドレス順に並んでいます。MSX2とMSX2+で加わったエントリーには、ファイルの中で印が付いています。MSX turbo Rで加わった、CPUの切り替えとPCMのためのエントリーは入っていません。
MSX-DOSから直接呼べるのは、このうちの5つだけです。ほかはスロット間コールが必要です(14.4節)。
MSX2テクニカル・ハンドブックと、MSX-Datapackの第2巻で説明されています。
K.4 WORKAREA.INC
システムのワーク・エリア、つまりBIOSとBASICがRAMに置く変数です。DISKVE(0F323h)からEXPSLT(0FFFFh)まであります。それぞれの名前のコメントはバイト単位の長さで始まります。ワーク・エリアは連続した 1つの領域ではなく、グループの間のすき間はシステムのもので、公開されていません。
MSX2テクニカル・ハンドブックと、MSX-Datapackの第2巻で説明されています。
K.5 SUBROM.INC
MSX2で加わったサブROMのエントリーです。SUBROM_GRPPRT(0089h)からSUBROM_WRTCLK(01F9h)まであります。サブROMは別のスロットにあるので、どれも直接は呼べず、BIOS.INCにあるEXTROMかSUBROMを通して呼びます。サブROMはメインROMの名前の一部を、別のアドレスの別のルーチンに使っているので、名前はすべてSUBROM_で始まります。
MSX2テクニカル・ハンドブックと、MSX-Datapackの第2巻で説明されています。
K.6 HOOKS.INC
フック、つまりシステムが決まったときに呼ぶRAMの中の5バイトのエントリーです。H.KEYI(0FD9Ah)からENAINT(0FFD4h)まであります。フックはワーク・エリアの中にあり、拡張BIOSのエントリーであるEXTBIOもその中にあります。2つのフックには、古い名前とMSX-MIDIが付けた名前の2つの名前があります。
MSX2テクニカル・ハンドブックと、MSX-Datapackの第2巻と第3巻で説明されています。
K.7 PORTS.INC
I/Oポートです。IO_MUSREG(07Ch)からIO_MAPSEG(0FCh)までと、MSX-MUSICやMSX-AUDIOのカートリッジのアドレスのように、ポートのように働くいくつかのメモリのアドレスが入っています。MSXにはポートの標準の名前がないので、これらの名前はTatara独自のものです。ポートはIO_と名前で、3桁の16進数で書きます。
ポートは、MSX2テクニカル・ハンドブック、MSX turbo Rテクニカル・ハンドブック、MSX-Datapackの第2巻と第3巻で説明されています。
K.8 ASCII.INC
CHR_NUL(0)からCHR_DEL(127)までの制御コードと、CHR_SPACE、テキスト・ファイルの終わりを示すCHR_EOF、2種類の引用符です。値はほかのファイルと違って10進数で、それぞれのコメントは、そのコードを表示したときにMSXが何をするかを示します。
MSX-Datapackの第2巻で説明されています。
K.9 EXTBIO.INC
拡張BIOSです。MSX-DOS2のマッパー・ルーチン、RS-232C、MSX-AUDIO、MSX-MIDI、MSX-JEのように、拡張BIOSを通して答えるデバイスの、デバイス番号、ファンクション番号、ジャンプ・テーブルの中のオフセットが入っています。名前はすべてEXTBIO_とデバイスの名前で始まります。ファイルの最後には MSX-MUSICのFM BIOSがあり、その名前はFMBIOS_で始まります。これらは別のスロットにあるMSX-MUSICのROMの中のアドレスです。
MSX-Datapackの第2巻と第3巻で説明されています。
K.10 参考文献
上の説明で挙げた本と資料です。MSX-DatapackとMSX turbo Rテクニカル・ハンドブックは、日本語でだけ出版されました。
- MSX2テクニカル・ハンドブック
-
(アスキー)。MSX2のBIOS、サブROM、ワーク・エリア、フック、VDP、I/Oポート。英語版も出版されました。
- MSX-Datapack
-
(アスキー)、全3巻。すべてをまとめた資料で、BIOSとサブROMは第2巻、MSX-DOS2は第3巻にあります。インクルード・ファイルはこれをもとに作りました。
- MSX turbo Rテクニカル・ハンドブック
-
(アスキー)。MSX turbo Rで加わったもの。R800、CPUの切り替え、PCM、MIDIです。
- MSX-DOS2のファンクションの仕様書
-
とプログラム・インターフェースの仕様書(アスキー)。ファンクション、そのレジスターとエラー・コード、MSX-DOS2でプログラムが動く仕組みです。英語の原題は MSX-DOS2 Function Specificationと MSX-DOS2 Program Interface Specificationです。