Tatara

付録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
表 K.1: インクルード・ファイル(この付録の順)

MSX-DOSのプログラムにはMSXDOS.INCが必要で、たいていはERRORS.INCも使います。カートリッジから動くプログラムや、BASICから読み込むプログラムには、代わりにBIOS.INCとWORKAREA.INCが必要で、MSX2で加わった機能にはSUBROM.INCも使います。残りのファイルは、ハードウェアを直接扱うプログラムのためのものです。

図K.1に、ファイルが名前を付けているアドレスが、Z80の 64 KBのどこにあるかを示します。

PIC

図 K.1: インクルード・ファイルが名前を付けているアドレスの位置

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です。