トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Appendix A.2 ワークエリア

※
※ このページは書きかけです。以下の可能性があります。
※ ・誤字、脱字等のチェックをおこなっていません。
※ ・テキスト、表などフォーマットがされていない。
※ ・画像が抜けている。
※

■ディスクドライブ用(ディスクがあるときのみ有効)

アドレスラベル長さ初期値内容
F323DISKVE2ディスクエラー処理ルーチンへのポインタへのポインタ
F325BREAKV2CTRL+C処理ルーチンへのポインタへのポインタ
F341RAMAD01ページ0のRAMのスロットアドレス
F342RAMAD11ページ1のRAMのスロットアドレス
F343RAMAD21ページ2のRAMのスロットアドレス
F344RAMAD31ページ3のRAMのスロットアドレス
F348MASTERS1マスターカートリッジのスロットアドレス

■インタースロットコール用サブルーチン

アドレスラベル長さ初期値内容
F380RDPRIM5基本スロットから読み込み
F385WRPRIM7基本スロットへ書き込み
F38CCLPRIM14基本スロットコール

■USR関数のマシン語プログラムの開始番地、テキスト画面
 (MSX2、MSX2+の場合、テキスト画面用のワークエリアの初期値は変化する)

アドレスラベル長さ初期値内容
F39AUSRTAB20475AHUSR関数(0〜9)のマシン語プログラムの開始番地。定義前はエラールーチン(FCERR)を指す
F3AELINL40139SCREEN0のときの1行の幅、WIDTH文で設定
F3AFLINL32129SCREEN1のときの1行の幅、WIDTH文で設定
F3B0LINLEN129現在の画面の1行の幅
F3B1CRTCNT124現在の画面の行数
F3B2CLMLST114PRINT文の制御に使用、LINLEN-(LINLEN MOD 14)-14

■VRAMの各テーブルの番地、その他の画面設定

アドレスラベル長さ初期値内容
F3B3TXTNAM20000HSCREEN 0のパターンネームテーブル
F3B5TXTCOL20800HSCREEN 0のカラーテーブル(MSX2、MSX2+のみ)
F3B7TXTCGP20800HSCREEN 0のパターンジェネレータテーブル
F3B9TXTATR2未使用
F3BBTXTPAT2未使用
F3BDT32NAM21800HSCREEN 1のパターンネームテーブル
F3BFT32COL22000HSCREEN 1のカラーテーブル
F3C1T32CGP20000HSCREEN 1のパターンジェネレータテーブル
F3C3T32ATR21B00HSCREEN 1のスプライトアトリビュートテーブル
F3C5T32PAT23800HSCREEN 1のスプライトジェネレータテーブル
F3C7GRPNAM21800HSCREEN 2のパターンネームテーブル
F3C9GRPCOL22000HSCREEN 2のカラーテーブル
F3CBGRPCGP20000HSCREEN 2のパターンジェネレータテーブル
F3CDGRPATR21B00HSCREEN 2のスプライトアトリビュートテーブル
F3CFGRPPAT23800HSCREEN 2のスプライトジェネレータテーブル
F3D1MLTNAM20800HSCREEN 3のパターンネームテーブル
F3D3MLTCOL2未使用
F3D5MLTCGP20000HSCREEN 3のパターンジェネレータテーブル
F3D7MLTATR21B00HSCREEN 3のスプライトアトリビュートテーブル
F3D9MLTPAT23800HSCREEN 3のスプライトジェネレータテーブル
F3DBCLIKSW1FFHキークリックスイッチ(0 = OFF、NZ = ON)
F3DCCSRY1カーソルのY座標
F3DDCSRX1カーソルのX座標
F3DECNSDFG1FFHファンクションキー表示スイッチ(0 = 非表示、NZ = 表示)

■VDPレジスタのセーブエリアなど

アドレスラベル長さ初期値内容
F3DFRG0SAV1VDPレジスタ#0のセーブエリア
F3E0RG1SAV1VDPレジスタ#1のセーブエリア
F3E1RG2SAV1VDPレジスタ#2のセーブエリア
F3E2RG3SAV1VDPレジスタ#3のセーブエリア
F3E3RG4SAV1VDPレジスタ#4のセーブエリア
F3E4RG5SAV1VDPレジスタ#5のセーブエリア
F3E5RG6SAV1VDPレジスタ#6のセーブエリア
F3E6RG7SAV1VDPレジスタ#7のセーブエリア
F3E7STATFL1VDPのSTATUS(MSX2、MSX2+ではSTATUSレジスタ0の値)
F3E8TRGFLG1FFHジョイスティックのトリガボタンの状態
F3E9FORCLR115前景色(フォアグラウンドカラー)省略値
F3EABAKCLR14背景色(バックグラウンドカラー)省略値
F3EBBDRCLR17周辺色(ボーダーカラー)省略値
F3ECMAXUPD3JMP0LINE文が内部で使用(C3H、00H、00H)
F3EFMINUPD3JMP0LINE文が内部で使用(C3H、00H、00H)
F3F2ATRBYT115グラフィック使用時の色、アトリビュートバイト
F3F3QUEUES2F959HPLAY文実行時のキューテーブルを指す
F3F5FRCNEW1FFHインタープリタが内部で使用
F3F6SCNCNT11キースキャンの時間感覚
F3F7REPCNT150キーのオートリピート開始までの時間感覚
F3F8PUTPNT2FBF0Hキーバッファへの書き込みを行う番地を指す
F3FAGETPNT2FBF0Hキーバッファからの読み込みを行う番地を指す

■カセット用パラメータなど

アドレスラベル長さ初期値内容
F3FCCS12010831200ボーのビット0を表すLOWの幅
921200ボーのビット0を表すHIGHの幅
381200ボーのビット1を表すLOWの幅
451200ボーのビット1を表すHIGHの幅
15ショートヘッダビットの長さ、HEADLEN(=2000)*2/256
372400ボーのビット0を表すLOWの幅
452400ボーのビット0を表すHIGHの幅
142400ボーのビット1を表すLOWの幅
222400ボーのビット1を表すHIGHの幅
31ショートヘッダビットの長さ、HEADLEN(=2000)*4/256
F406LOW283LOW01、HIGH01、デフォルト1200ボー、現在のボーレートのbit0を表すLOW、HIGHの幅。SCREEN文で設定
F408HIGH233LOW11、HIGH11、デフォルト1200ボー、現在のボーレートのbit1を表すLOW、HIGHの幅。SCREEN文で設定
F40AHEADER115HEADLEN*2/256、現在のボーレートのショートヘッダ用のヘッダビットHEADLEN(=2000)。SCREEN文で設定
F40BASPCT121256/アスペクト比、SCREEN文で設定しCIRCLE文で使用
F40DASPCT221256*アスペクト比、SCREEN文で設定しCIRCLE文で使用
F40FENDPRG5:RESUME NEXT文のための仮のプログラムの終わり

■BASICが内部で使うワーク

アドレスラベル長さ初期値内容
F414ERRFLG10エラーコードの保存
F415LPTPOS10プリンタのヘッド位置
F416PRTFLG10プリンタへ出力するかどうか
F417NTMSXP10MSX用プリンタなら0
F418RAWPRT10NZならRAW MODE(文字コード変換なし)でプリンタ出力
F419VLZADR20VAL関数で置き換えられる文字のアドレス
F41BVLZDAT10VAL関数で0に置き換わる文字
F41CCURLIN2FFFFHBASICが現在実行中の行番号
F41FKBUF318クランチバッファ、BUFから中間言語に変換されて入る
F55DBUFMIN1,INPUT文用のコンマ
F55EBUF258タイプした文字がアスキーコードで入るバッファ
F660ENDBUF10BUFの内容がオーバーフローするのを防ぐ
F661TTYPOS10BASICが内部で持つ仮想的なカーソル位置
F662DIMFLG10BASICが配列変数を単純変数と区別するためのフラグ
F663VALTYP10変数の型の識別に使用
F664OPRTYP10演算子保存、またはクランチできる語かどうかのフラグ
F665DONUM10クランチ用のフラグ
F666CONTXT20CHGETで使うテキストポインタの保存
F668CONSAV10CHGETが呼ばれた後で定数の内部形(トークン)を保存
F669CONTYP10保存した定数のタイプ
F66ACONLO80保存した定数の値
F672MEMSIZ2BASICが使用するメモリの最上位番地
F674STKTOP2スタックとしてつかえる最上位番地
F676TXTTAB2BASICのテキストエリアの先頭番地
F678TEMPPT2F67AHテンポラリディスクリプタの空きエリアの先頭番地
F67ATEMPST303*NUMTMP分使用される
F698DSCTMP3文字列関数の答えへのストリングディスクリプタ
F69BFRETOP2文字列領域の空きエリアの先頭番地
F69DTEMP320ガベージコレクション用
F69FTEMP820ガベージコレクション用
F6A1ENDFOR20FOR文の次の番地
F6A3DATLIN20READ分で読まれたDATA文の行番号
F6A5SUBFLG10USR関数などで配列を使うときのフラグ
F6A6FLGINP10INPUT文やREAD文で使われるフラグ
F6A7TEMP2ステートメントコード用の一時保存場所
F6A9PTRFLG10変換する行番号が無ければ0、あれば0以外
F6AAAUTFLG10AUTOコマンドが無効なら0、有効なら0以外
F6ABAUTLIN20AUTOで入力された最新の行番号
F6ADAUTINC20AUTOコマンドの行番号の増分
F6AFSAVTXT2RESUME文で復帰するためのテキストのアドレス
F6B1SAVSTK2エラーが起きたときの回復ルーチン用スタックの保存
F6B3ERRLIN20エラーが起きたときの行番号
F6B5DOT20現在行、LIST.などで使う
F6B7ERRTXT20エラーが起きた行番号、RESUME文用
F6B9ONELIN20エラーが起きたときの飛び先の行
F6BBONEFLG10エラーによる割り込みルーチン実行中は1、他の場合は0
F6BCTEMP220一時保存用
F6BEOLDLIN20CTRL+STOP、END、STOPで設定される旧行番号
F6C0OLDTXT20次に実行する文のテキストアドレス
F6C2VARTAB2単純変数の開始番地、NEW文で(TXTTAB)+2に設定される
F6C4ARYTAB2配列テーブルの開始番地
F6C6STREND2BASICがテキストや変数に使用中のメモリの最後の番地
F6C8DATPTR20READ文実行で読まれたデータのテキストアドレス
F6CADEFTBL268各英文字で始まる変数のデフォルトの型を保持する

■ユーザー関数のパラメータ用ワーク

アドレスラベル長さ初期値内容
F6E4PRMSTK20ガベージコレクション用スタック上の以前の定義ブロック
F6E6PRMLEN20処理対象のテーブルのバイト数
F6E8PARM11000PRMSIZで設定される処理パラメータ定義テーブル
F74CPRMPRV2PRMSTK以前のパラメータブロックのポインタ、ガベージコレクション用
F74EPRMLN220パラメータブロックの大きさ
F750PARM21000PRMSIZで設定されるパラメータの保存場所
F7B4PRMFLG10PARM1がサーチ済みかどうかのフラグ
F7B5ARYTA220サーチの終点
F7B7NOFUNS10処理対象関数がない場合は0
F7B8TEMP920ガベージコレクション用
F7BAFUNACT20処理対象関数の数
F7BCSWPTMP80SWAP文の最初の変数の値の一時保存場所
F7C4TRCFLG10トレースフラグ、0 = TRACE OFF、NZ = TRACE ON

■Math-pack用ワークエリア

アドレスラベル長さ初期値内容
F7C5FBUFFR43Math-packルーチンが一時保存場所として使用する
F7F0DECTMP210進数を浮動小数点数にするときに使用する
F7F2DECTM22除算ルーチンで使用する
F7F4DECCNT1除算ルーチンで使用する
F7F6DAC16演算の対象となる値を設定するエリア
F806HOLD84810進数の乗算のためのレジスタ保存エリア
F836HOLD28Math-Packルーチンが内部で使用する
F83EHOLD8Math-Packルーチンが内部で使用する
F847ARG16DACとの演算対称となる値を設定するエリア
F857RNDX8最初の乱数を倍精度実数で設定するエリア

■BASICインタープリタが使うデータエリア

アドレスラベル長さ初期値内容
F85FMAXFIL11MAXFILES文で設定されるファイル番号の最大値
F860FILTAB2ファイルデータの先頭番地
F862NULBUF2SAVE、LOADでBASICインタープリタが使うバッファ
F864PTRFIL20指定ファイルのファイルデータのある位置
F866RUNFLG00ロード後実行ならNZ
F866FILNAM11 ファイル名の保存エリア
F871FILNM211 ファイル名の保存エリア
F87CNLONLY10プログラムロード中はNZ
F87DSAVEND20セーブするマシン語プログラムの最終番地
F87FFNKSTR160ファンクションキーの文字列保存エリア、16×10
F91FCGPNT3ROM上の文字フォント格納スロットアドレスとアドレス
F922NAMBAS2現在のパターンネームテーブルのベース番地
F924CGPBAS2現在のパターンジェネレータテーブルのベース番地
F926PATBAS2現在のスプライトジェネレータテーブルのベース番地
F928ATRBAS2現在のスプライトアトリビュートテーブルのベース番地
F92ACLOC2グラフィックルーチンが内部で使用する
F92CCMASK1グラフィックルーチンが内部で使用する
F92DMINDEL2グラフィックルーチンが内部で使用する
F92FMAXDEL2グラフィックルーチンが内部で使用する

■CIRCLE、PAINT文で使うデータエリア

アドレスラベル長さ初期値内容
F931ASPECT2円の縦横比率。CIRCLE文の<比率>により設定される
F933CENCNT2CIRCLE文が内部で使用する

■PLAY文で使用するデータエリア

アドレスラベル長さ初期値内容
F956MCLTAB2PLAY文マクロ、DRAW文マクロのテーブルの先頭を指す
F958MCLFLG1PLAY・DRAWの指示
F959QUETAB24キューテーブル、4キュー×6バイト
F971QUEBAK4BCKQで使用
F975VOICAQnnはMUSQLN、音声1のキュー
F9F5VOICBQnnはMUSQLN、音声2のキュー
FA75VOICCQnnはMUSQLN、音声3のキュー

■MSX2で追加されたデータエリア

アドレスラベル長さ初期値内容
FAF5DPPAGE1ディスプレイページ番号
FAF6ACPAGE1アクティブページ番号
FAF7AVCSAV1AVコントロールポートの保存
FAF8EXBRSA1SUB ROMのスロットアドレス
FAF9CHRCNT1ローマ字カナ変換で使用、キャラクタカウンタで0〜2
FAFAROMA2ローマ字カナ変換で使用、バッファ中のキャラクタ
FAFCMODE1ローマ字カナ変換のモード、VRAMサイズなど
FAFDNORUSE1漢字ドライバが使用
FAFEXSAVE2IOOOOOOO XXXXXXXX
FB00YSAVE2XOOOOOOO YYYYYYYY

■RS-232Cで使うデータエリア

アドレスラベル長さ初期値内容

■PLAY文で使用するデータエリア(以下はMSX1と共通)

アドレスラベル長さ初期値内容

■データエリア

アドレスラベル長さ初期値内容

■割り込み処理、他のコンソール入出力装置使用、文字セットやキー配列の変更

アドレスラベル長さ初期値内容

■ディスク装置接続

アドレスラベル長さ初期値内容
FDEFH.DSKO5DSKO$(ディスク出力)の始め
FDF4H.SETS5SETS$(セットアトリビュート)の始め

■論理装置名の拡張

アドレスラベル長さ初期値内容
FEB2H.PARD5PARDEV(装置名の取り出し)
FEB7H.NODE5NODEVN(装置名なし)
FEBCH.POSD5POSDSK(ディスク装置)
FEC1H.DEVN5DEVNAM(装置名の処理)
FEC6H.GEND5GENDSP(装置割り当て)

■BASIC内部で使用

アドレスラベル長さ初期値内容
FECBH.RUNC5RUNC(RUNのためのクリア)
FED0H.CLEA5CLEARC(CLEARのためのクリア)
FED5H.LOPD5LOPDFT(繰り返しと省略値設定)
FEDAH.STKE5STKERR(スタックエラー)
FEDFH.ISFL5ISFLIO(ファイルの入出力かどうか)
FEE4H.OUTD5OUTDO(OUTを実行)
FEE9H.CRDO5CRDO(CRLFを実行)
FEEEH.DSKC5DSKCHI(ディスクの属性を入力)
FEF3H.DOGR5DOGRPH(グラフィックを実行)
FEF3H.PRGE5PRGEND(プログラム終了)
FEFDH.ERRP5ERRPRT(エラー表示)
FF02H.ERRF5
FF07H.READ5READY
FF0CH.MAIN5MAIN
FF11H.DIRD5DIRDO(ダイレクトステートメント実行)
FF16H.FINI5
FF1BH.FINE5
FF20H.CRUN5
FF25H.CRUS5
FF2AH.ISRE5
FF2FH.NTFN5
FF34H.NOTR5
FF39H.SNGF5
FF3EH.NEWS5
FF43H.GONE5
FF48H.CHRG5
FF4DH.RETU5
FF52H.PRTF5
FF57H.COMP5
FF5CH.FINP5
FF61H.TRNM5
FF66H.FRME5
FF6BH.NTPL5
FF70H.EVAL5
FF75H.ONKO5
FF7AH.FING5
FF7FH.ISMI5ISMID$(MID$かどうか)
FF84H.WIDT5WIDTHS(WIDTH)
FF89H.LIST5LIST
FF8EH.BUFL5BUFLIN(バッファーライン)
FF93H.FRQI5FRQINT
FF98H.SCNE5
FF9DH.FRQT5FRQTMP
FFA2H.PTRG5PTRGET(省略値以外の変数使用のポインタ)
FFA7H.PHYD5PHYDIO(物理ディスク入出力)
FFACH.FORM5FORMAT(ディスクのフォーマット)
FFB1H.ERRO5ERROR(アプリケーションのエラーを処理)
FFB6H.LPTO5LPTOUT(省略値以外のプリンタで出力)
FFBBH.LPTS5LPTSTT(省略値以外のプリンタで状態を知る)
FFC0H.SCRE5SCREEN
FFC5H.PLAY5PLAY

拡張BIOSが使用

アドレスラベル長さ初期値内容
FFCAFCALL5拡張BIOSが使用
FFCFDISINT5DOSが使用
FFD4ENAINT5DOSが使用

■データエリア

アドレスラベル長さ初期値内容
FFE7RG8SAV1VDPレジスタ#8のセーブエリア
FFE8RG9SAV1VDPレジスタ#9のセーブエリア
FFE9RG10SAV1VDPレジスタ#10のセーブエリア
FFEARG11SAV1VDPレジスタ#11のセーブエリア
FFEBRG12SAV1VDPレジスタ#12のセーブエリア
FFECRG13SAV1VDPレジスタ#13のセーブエリア
FFEDRG14SAV1VDPレジスタ#14のセーブエリア
FFEERG15SAV1VDPレジスタ#15のセーブエリア
FFEFRG16SAV1VDPレジスタ#16のセーブエリア
FFF0RG17SAV1VDPレジスタ#17のセーブエリア
FFF1RG18SAV1VDPレジスタ#18のセーブエリア
FFF2RG19SAV1VDPレジスタ#19のセーブエリア
FFF3RG20SAV1VDPレジスタ#20のセーブエリア
FFF4RG21SAV1VDPレジスタ#21のセーブエリア
FFF5RG22SAV1VDPレジスタ#22のセーブエリア
FFF6RG23SAV1VDPレジスタ#23のセーブエリア
FFF73システム予約
FFF8RG25SAV1VDPレジスタ#25のセーブエリア
FFF9RG26SAV1VDPレジスタ#26のセーブエリア
FFFARG27SAV1VDPレジスタ#27のセーブエリア
FFFB2システム予約
FFFC1拡張スロット選択レジスタ