MSXのワークエリア

2025年4月16日 (水) 02:54時点におけるAdministrator (トーク | 投稿記録)による版 (→‎システム変数領域)

MSXは1980年代に主に日本で普及した8ビットコンピュータの規格で、そのメモリ空間には特定の目的のために予約された「ワークエリア」と呼ばれる領域が多数存在します。これらのワークエリアはシステム変数の保存、ハードウェア制御、ユーザープログラムの実行などに使用されます。

システム変数領域

システム変数領域はMSX BASICやBIOSが使用する重要なメモリ領域で、主にRAMの特定アドレスに配置されています。

MSXシステム変数領域
アドレス 名称 サイズ(バイト) 説明
F380H-F384H INTFLG 5 割り込みフラグ領域
F385H JIFFY 2 タイマー変数(VBLANKごとに更新。通常は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が使用する重要なメモリ領域です。

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)の制御に関するワークエリアです。

VDP関連ワークエリア
アドレス 名称 サイズ(バイト) 説明
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ポートアドレスです。

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(プログラマブルサウンドジェネレーター)関連のレジスタです。

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のメモリマップ全体の概要です。

MSXメモリマップ
アドレス範囲 用途 説明
0000H-3FFFH メインROM BIOS、BASIC
4000H-7FFFH 拡張ROM/RAM カートリッジROMまたはRAM
8000H-BFFFH カートリッジ領域 ROM/RAMカートリッジ
C000H-F37FH RAM ユーザーエリア
F380H-F3FFH システム変数 システム管理用
F400H-FFFFH システム領域 その他のシステム変数/ワークエリア

フック領域

MSXのシステム拡張に使用されるフック(ジャンプテーブル)領域です。

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の技術マニュアルや開発者ドキュメントを参照することをお勧めします。