MSXのワークエリア
MSXは1980年代に主に日本で普及した8ビットコンピュータの規格で、そのメモリ空間には特定の目的のために予約された「ワークエリア」と呼ばれる領域が多数存在します。これらのワークエリアはシステム変数の保存、ハードウェア制御、ユーザープログラムの実行などに使用されます。
システム変数領域
システム変数領域はMSX BASICやBIOSが使用する重要なメモリ領域で、主にRAMの特定アドレスに配置されています。
| アドレス | 名称 | サイズ(バイト) | 説明 |
|---|---|---|---|
| F380H-F384H | INTFLG | 5 | 割り込みフラグ領域 |
| F385H | JIFFY | 2 | タイマー変数(1/60秒ごとに更新) |
| F3AEH-F3AFH | GRPHED | 2 | GRAPHICコマンドのパラメータを保存 |
| F3B0H | KEYBUF | 40 | キーボード入力バッファ |
| F3DEH | LINLEN | 1 | 画面の1行あたりの文字数 |
| F3DFH | CRTCNT | 1 | 画面の行数 |
| F3E0H-F3E1H | CNSDFG | 2 | ファンクションキー表示フラグ |
| F3E2H-F3E3H | LPTPOS | 2 | プリンタのヘッド位置 |
| F3E9H | SCREEN | 1 | 現在の画面モード |
| F3EAH | OLDSCR | 1 | 以前の画面モード |
| F3EBH-F3ECH | CASPRV | 2 | カセットの読み込み/書き込みフック |
| F3F5H | FORCLR | 1 | 前景色 |
| F3F6H | BAKCLR | 1 | 背景色 |
| F3F7H | BDRCLR | 1 | 境界色 |
BIOS作業エリア
MSX BIOSが使用する重要なメモリ領域です。
| アドレス | 名称 | サイズ(バイト) | 説明 |
|---|---|---|---|
| F661H | INTVAL | 2 | USRコマンドの整数パラメータ |
| F663H-F664H | INTFLG | 2 | ON ERROR GOTO行番号 |
| F665H-F666H | SAVSTK | 2 | BASIC実行時のスタックポインタ保存領域 |
| F674H | PTRFIL | 2 | ファイルポインタのアドレス |
| F676H | FILNAM | 11 | 現在操作中のファイル名 |
| F6A1H | DRIVEL | 1 | 現在のドライブ |
| F6C5H | NLONLY | 1 | 0以外ならLOADコマンドで自動実行しない |
| F6C6H | SAVEND | 2 | BASIC保存領域の終了アドレス |
| F6E8H-F6E9H | MAXFIL | 2 | ファイル番号の最大値 |
| F7C5H-F7F4H | FNKSTR | 160 | ファンクションキー文字列(10個×16文字) |
VDP関連領域
VDP(Video Display Processor)の制御に関するワークエリアです。
| アドレス | 名称 | サイズ(バイト) | 説明 |
|---|---|---|---|
| F3B6H | SCRMOD | 1 | 現在の画面モード |
| F3B7H | OLDSCR | 1 | キー入力待ち時の画面モード |
| F3B8H | CASPRV | 2 | カセットの以前の値 |
| F3DCH | TXTNAM | 2 | パターンネームテーブルベースアドレス |
| F3DEH | TXTCGP | 2 | パターンジェネレータテーブルベースアドレス |
| F3E0H | TXTCOL | 2 | カラーテーブルベースアドレス |
| F3E2H | TXTATT | 2 | スプライトアトリビュートテーブルベースアドレス |
| F3E4H | TXTPAT | 2 | スプライトパターンジェネレータベースアドレス |
| F3E6H | T32NAM | 2 | スクリーン1のパターンネームテーブルベースアドレス |
| F3E8H | T32COL | 2 | スクリーン1のカラーテーブルベースアドレス |
| F3EAH | T32CGP | 2 | スクリーン1のパターンジェネレータテーブルベースアドレス |
| F3ECH | T32ATT | 2 | スクリーン1のスプライトアトリビュートテーブルベースアドレス |
| F3EEH | T32PAT | 2 | スクリーン1のスプライトパターンジェネレータベースアドレス |
I/Oポート領域
MSXのハードウェア制御に使用するI/Oポートアドレスです。
| ポートアドレス | 名称 | 説明 |
|---|---|---|
| 98H | VDP データポート | VDPへのデータ書き込み/読み取り |
| 99H | VDP コマンドポート | VDPへのコマンド/アドレス送信 |
| A0H | PSG レジスタ選択 | PSGレジスタ番号の指定 |
| A1H | PSG データ書き込み | PSGレジスタへのデータ書き込み |
| A2H | PSG データ読み取り | PSGレジスタからのデータ読み取り |
| A8H | PPI ポートA | プライマリスロット選択レジスタ |
| A9H | PPI ポートB | キーボードマトリクス行選択 |
| AAH | PPI ポートC | キーボード読み取り、カセットモーター制御 |
| ABH | PPI モード制御 | PPIモード設定 |
| FCH-FFH | メモリマッパー | メモリマッパー制御(MSX2以降) |
PSG(プログラマブルサウンドジェネレーター)関連領域
音声生成に使用するPSGレジスタです。
| レジスタ番号 | 名称 | 説明 |
|---|---|---|
| 0 | チャンネルA周波数(低) | チャンネルAの周波数下位8ビット |
| 1 | チャンネルA周波数(高) | チャンネルAの周波数上位4ビット |
| 2 | チャンネルB周波数(低) | チャンネルBの周波数下位8ビット |
| 3 | チャンネルB周波数(高) | チャンネルBの周波数上位4ビット |
| 4 | チャンネルC周波数(低) | チャンネルCの周波数下位8ビット |
| 5 | チャンネルC周波数(高) | チャンネルCの周波数上位4ビット |
| 6 | ノイズ周期 | ノイズジェネレータの周期 |
| 7 | ミキサー/IOイネーブル | チャンネルの有効/無効設定 |
| 8 | チャンネルA音量 | チャンネルAの音量(0-15) |
| 9 | チャンネルB音量 | チャンネルBの音量(0-15) |
| 10 | チャンネルC音量 | チャンネルCの音量(0-15) |
| 11-12 | エンベロープ周期 | エンベロープジェネレータの周期 |
| 13 | エンベロープシェイプ | エンベロープの形状 |
| 14-15 | I/Oポート | 汎用I/Oポート(MSXでは使用されない) |
メモリマップ
MSXのメモリマップ全体の概要です。
| アドレス範囲 | 用途 | 説明 |
|---|---|---|
| 0000H-3FFFH | メインROM | BIOS、BASIC |
| 4000H-7FFFH | 拡張ROM/RAM | カートリッジROMまたはRAM |
| 8000H-BFFFH | カートリッジ領域 | ROM/RAMカートリッジ |
| C000H-F37FH | RAM | ユーザーエリア |
| F380H-F3FFH | システム変数 | システム管理用 |
| F400H-FFFFH | システム領域 | その他のシステム変数/ワークエリア |
フック領域
MSXのシステム拡張に使用されるフック(ジャンプテーブル)領域です。
| アドレス | 名称 | 説明 |
|---|---|---|
| FD9AH | H.KEYI | 割り込みフック |
| FD9FH | H.TIMI | タイマー割り込みフック |
| FDA4H | H.CHPU | 文字表示フック |
| FDA9H | H.DSPC | 画面表示フック |
| FDAEH | H.ERAC | 画面消去フック |
| FDB3H | H.DSPF | 関数表示フック |
| FDB8H | H.ERAF | 関数消去フック |
| FDBDH | H.TOTE | グラフィック座標計算フック |
| FDC2H | H.CHGE | 文字属性変更フック |
| FDC7H | H.INIP | 入力デバイス初期化フック |
| FDCCH | H.KEYC | キー入力フック |
| FFE7H | H.LOPD | ディスクシステム読み込みフック |
| FFECH | H.SAVE | SAVEコマンドフック |
| FFF1H | H.LOAD | LOADコマンドフック |
備考
MSXは構造化されたメモリシステムを持ち、多くのワークエリアが様々な機能のために予約されています。これらのワークエリアを理解し活用することで、MSXのハードウェア機能を最大限に利用したプログラミングが可能になります。特にゲーム開発やデモプログラムでは、VDPやPSG関連のワークエリアを直接操作することで、高度なグラフィックやサウンド効果を実現することができます。
このリストは主要なワークエリアのみを示しており、MSXの全仕様を網羅しているわけではありません。詳細な技術情報についてはMSXの技術マニュアルや開発者ドキュメントを参照することをお勧めします。