ハードウェア情報-IOMap
I/Oエリア
| addr | レジスタ名 | R/W | Word/Byte | 備考 |
|---|---|---|---|---|
| 0000 | インタラプトリクエストレジスタ(マスタ) | R | B |
PIC (マスタ) |
| インタラプトサービスレジスタ(マスタ) | R | |||
| 動作コマンドワード2(マスタ) | W | |||
| 動作コマンドワード3(マスタ) | W | |||
| 初期化コマンドワード1(マスタ) | W | |||
| 0002 | インタラプトマスクレジスタ(マスタ) | R | B | |
| 動作コマンドワード1(マスタ) | W | |||
| 初期化コマンドワード2(マスタ) | W | |||
| 初期化コマンドワード3(マスタ) | W | |||
| 初期化コマンドワード4(マスタ) | W | |||
| 0010 | インタラプトリクエストレジスタ(スレーブ) | R | B |
PIC (スレーブ) |
| インタラプトサービスレジスタ(スレーブ) | R | |||
| 動作コマンドワード2(スレーブ) | W | |||
| 動作コマンドワード3(スレーブ) | W | |||
| 初期化コマンドワード1(スレーブ) | W | |||
|
0012 |
インタラプトマスクレジスタ(スレーブ) | R | B | |
| 動作コマンドワード1(スレーブ) | W | |||
| 初期化コマンドワード2(スレーブ) | W | |||
| 初期化コマンドワード3(スレーブ) | W | |||
| 初期化コマンドワード4(スレーブ) | W | |||
| 0020 | リセット要因レジスタ | R | B | |
| W | ||||
| 0022 | 電源制御レジスタ | W | B | |
| 0024 | CPU MISC3レジスタ | R | B | |
| 0025 | CPU MISC4レジスタ | R | B | |
| 0026 | フリーランタイマレジスタ(下位) | R | W | |
| 0027 | フリーランタイマレジスタ(上位) | R | W | |
| 0028 | NMIマスクレジスタ | R/W | B | |
| 0030 | CPU識別レジスタ | R | B/W | |
| 0031 | R | |||
| 0032 | シリアルROM制御レジスタ | R | B | |
| W | B | |||
| 0034 | SCSIモードステータスレジスタ | R | B | |
| 0040 | R/W | B | PIT1 | |
| 0042 | R/W | |||
| 0044 | R/W | |||
| 0046 | W | B | ||
| 0050 | R/W | B | PIT2 | |
| 0052 | R/W | |||
| 0054 | R/W | |||
| 0056 | W | B | ||
| 0060 | 割り込み要因レジスタ | R | B | |
| 割り込み制御レジスタ | W | |||
| 0068 | インターバルタイマII 制御レジスタ | R/W | B | |
| 006A | インターバルタイマII データレジスタ(下位) | R/W | B/W | |
| 006B | インターバルタイマII データレジスタ(上位) | R/W | B/W | |
| 006C | 1uWAITレジスタ | R/W | B | |
| 0070 | RTCデータレジスタ | R/W | B | RTC |
| 0080 | RTCコマンドレジスタ | W | B | |
| 00A0 | イニシャライズレジスタ | W | B | DMAC |
| 00A1 | チャネルレジスタ | R/W | ||
| 00A2 | カウントレジスタ(下位) | R/W | B/W | |
| 00A3 | カウントレジスタ(上位) | R/W | ||
| 00A4 | アドレスレジスタ(下位) | R/W | ||
| 00A5 | アドレスレジスタ(中位) | R/W | ||
| 00A6 | アドレスレジスタ(上位) | R/W | ||
| 00A7 | アドレスレジスタ(最上位) | R/W | ||
| 00A8 | デバイスコントロールレジスタ | R/W | W | |
| 00A9 | R/W | |||
| 00AA | モードコントロールレジスタ | R/W | B | |
| 00AB | ステータスレジスタ | R | ||
| 00AC | テンポラリレジスタ(下位) | R | ||
| 00AD | テンポラリレジスタ(上位) | R | ||
| 00AE | リクエストレジスタ | R/W | ||
| 00AF | マスクレジスタ | R/W | ||
| 00B0 | イニシャライズレジスタ | W | B | 拡張DMAC |
| 00B1 | チャネルレジスタ | R/W | ||
| 00B2 | カウントレジスタ(下位) | R/W | B/W | |
| 00B3 | カウントレジスタ(上位) | R/W | ||
| 0B4 | アドレスレジスタ(下位) | R/W | ||
| 00B5 | アドレスレジスタ(中位) | R/W | ||
| 00B6 | アドレスレジスタ(上位) | R/W | ||
| 00B7 | アドレスレジスタ(最上位) | R/W | ||
| 00B8 | デバイスコントロールレジスタ | R/W | W | |
| 00B9 | R/W | |||
| 00BA | モードコントロールレジスタ | R/W | B | |
| 00BB | ステータスレジスタ | R | ||
| 00BC | テンポラリレジスタ(下位) | R | ||
| 00BD | テンポラリレジスタ(上位) | R | ||
| 00BE | リクエストレジスタ | R/W | ||
| 00BF | マスクレジスタ | R/W | ||
| 00C0 | キャッシュ制御レジスタ | R/W | B | |
| 00C2 | キャッシュ診断レジスタ | R/W | B | |
| 0200 | ステータスレジスタ | R | B | FDC |
| コマンドレジスタ | W | |||
| 0202 | トラックレジスタ | R/W | ||
| 0204 | セクタレジスタ | R/W | ||
| 0206 | データレジスタ | R/W | ||
| 0208 | ドライブステータスレジスタ | R | B | FD I/F |
| ドライブコントロールレジスタ | W | |||
| 020C | ドライブセレクトレジスタ | W | ||
| 020D | FDドライブ識別レジスタ | R | ||
| 020E | ドライブスイッチレジスタ | R/W | ||
| 0400 | システムステータスレジスタ | R | B | |
| 0402 | 予約済み | |||
| 0404 | システムステータスレジスタ | R/W | B |
VRAM,RAM切替 |
| 0440 | アドレスレジスタ | W | B | CRTC |
| 0442 | データレジスタ(下位) | W | W/B | |
| 0443 | データレジスタ(上位) | W | ||
| 0448 | アドレスレジスタ | W | B |
ビデオ出力 コントローラ |
| 044A | データレジスタ | W | B | |
| 044C | R | B | FMR互換 | |
| 0450 | アドレスレジスタ | R/W | B |
スプライト コントローラ |
| 0452 | データレジスタ | R/W | ||
| 0458 | アドレスレジスタ | R/W | B |
VRAMアクセス コントローラ |
| 045A | データレジスタ(下位) | R/W | W/B | |
| 045B | データレジスタ(上位) | R/W | ||
| 0470 | 高解像度機能レジスタ | R | B | |
| 0471 | VRAM容量レジスタ | R | B | |
| 0472 | 画像出力制御アドレスレジスタ(下位) | R/W | W/B | |
| 0473 | 画像出力制御アドレスレジスタ(上位) | R/W | ||
| 0474 | 画像出力制御データレジスタ(最下位) | R/W | W/B | |
| 0475 | 画像出力制御データレジスタ(下位) | R/W | ||
| 0476 | 画像出力制御データレジスタ(上位) | R/W | ||
| 0477 | 画像出力制御データレジスタ(最上位) | R/W | ||
| 0480 | メモリ切替レジスタ | R/W | B | |
| 0484 | 辞書ROM | R/W | B | |
| 048A | メモリカードステータス | R | B | |
| 0490 | メモリカードバンクレジスタ | R/W | B | |
| 0491 | メモリカード属性レジスタ | R/W | B | |
| 04B0 | CD-ROM機能レジスタ | R | B | CDC |
| 04C0 | マスタステータスレジスタ | R | B | |
| マスタコントロールレジスタ | W | |||
| 04C2 | ステータスレジスタ | R | ||
| コマンドレジスタ | W | |||
| 04C4 | データレジスタ | R | ||
| パラメータレジスタ | W | |||
| 04C6 | 転送制御レジスタ | W | ||
| 04C8 | CD-ROMキャッシュ制御レジスタ | R/W | ||
| 04CC | CDサブコードステータスレジスタ | R | ||
| 04CD | CDサブコードデータレジスタ | R | ||
| 04D0 | パッド1入力レジスタ | R | B | パッドI/F |
| 04D2 | パッド2入力レジスタ | |||
| 04D5 | FM,PCMミュートレジスタ | R/W | B | ミュートレジスタ |
| 04D6 | パッド出力レジスタ | W | B | パッドI/F |
| 04D8 | ステータスレジスタ | R | B | FM音源 |
| アドレスレジスタ0 | W | |||
| 04DA | データレジスタ0 | W | B | |
| 04DC | アドレスレジスタ1 | W | B | |
| 04DE | データレジスタ1 | W | B | |
| 04E0 | ボリューム1 データレジスタ | R/W | B | 電子ボリューム |
| 04E1 | ボリューム1 COMレジスタ | R/W | B | |
| 04E2 | ボリューム2 データレジスタ | R/W | B | |
| 04E3 | ボリューム2 COMレジスタ | R/W | B | |
| 04E7 | AD サンプリングデータレジスタ | R | B | ADコンバータ |
| 04E8 | AD サンプリングフラグレジスタ | R/W | B | |
| 04E9 | INT13 割り込み要因レジスタ | R | B | |
| 04EA | PCM 割り込みマスクレジスタ | R/W | B | PCM音源 |
| 04EB | PCM 割り込みレジスタ | R | B | |
| 04EC | オーディオレジスタ | R/W | B | |
| 04F0 | ENV データレジスタ | W | B | PCM音源 |
| 04F1 | PAN データレジスタ | W | B | |
| 04F2 | FDL データレジスタ | W | B | |
| 04F3 | FDH データレジスタ | W | B | |
| 04F4 | LSL データレジスタ | W | B | |
| 04F5 | LSH データレジスタ | W | B | |
| 04F6 | ST データレジスタ | W | B | |
| 04F7 | コントロールレジスタ | W | B | |
| 04F8 | チャネル ON/OFFレジスタ | W | B | |
| 0510 | バンク切替レジスタ | R/W | B | 新PCM音源 |
| 0511 | DMAステータスレジスタ | R/W | B | |
| 0512 | DMAカウンタレジスタ(下位) | R/W | W/B | |
| 0513 | DMAカウンタレジスタ(上位) | R/W | ||
| 0514 | DMAアドレスレジスタ(最下位) | R/W | W/B | |
| 0515 | DMAアドレスレジスタ(下位) | R/W | ||
| 0516 | DMAアドレスレジスタ(上位) | R/W | ||
| 0517 | DMAアドレスレジスタ(最上位) | R/W | ||
| 0518 | クロック設定レジスタ | R/W | B | |
| 0519 | モード設定レジスタ | R/W | B | |
| 051A | システムコントロールレジスタ | R/W | B | |
| 051B | バッファコントロールレジスタ | R/W | B | |
| 051C | 録音/再生制御レジスタ | R/W | B | |
| 051D | 録音ピークモニタレジスタ | R | B | |
| トリガレベルレジスタ | W | B | ||
| 051E | R | W/B | ||
| 051F | R | |||
| 0520 | MIDIポートイネーブルレジスタ | W | B | undocumented |
| 05C0 | NMIマスクレジスタ | R/W | B | |
| 05C2 | NMIステータスレジスタ | R | B | |
| 05C8 | TVRAM書込レジスタ | R | B | |
| 05CA | VSYNC割り込み原因クリアレジスタ | W | B | |
| 05E0 | メインRAMウェイト制御レジスタ | R/W | B | undocumented |
| 05E2 | メインRAMウェイト制御レジスタ | R/W | B | undocumented |
| 05E4 | 用途不明 | R/W | B | undocumented |
| 05E6 | VRAMウェイト制御レジスタ | R/W | B | undocumented |
| 05E8 | メモリ容量レジスタ | R | B | |
| 05EA | 用途不明 | R/W | B | undocumented |
| 05EC | スピード制御レジスタ | R/W | B | |
| 05ED | 最高速クロックレジスタ | R | B | |
| 05EE | VRAMキャッシュ制御レジスタ | R/W | B | |
| 05F0 | 認識メモリ容量レジスタ | R | B | undocumented |
| 05F1 | 用途不明 | R/W | B | undocumented |
| 05F2 | 用途不明 | R/W | B | undocumented |
| 0600 | キーボードデータレジスタ | R | B | キーボードI/F |
| 8042データレジスタ | W | B | ||
| 0602 | ステータスレジスタ | R | B | |
| コマンドレジスタ | W | B | ||
| 0604 | 割り込み要因フラグレジスタ | R | B | |
| 割り込み制御レジスタ | W | B | ||
| 0606 | BUFFULレジスタ | R | B | チューナーカード |
| 0800 | ステータスレジスタ1 | R | B | プリンタI/F |
| データレジスタ | W | B | ||
| 0802 | ステータスレジスタ2 | R | B | |
| コントロールレジスタ | W | B | ||
| 0804 | 割り込み制御レジスタ | W | B | |
| 0A00 | 受信データレジスタ | R | B | USART |
| 送信データレジスタ | W | B | ||
| 0A02 | ステータスレジスタ1 | R | B | |
| モードレジスタ | W | B | ||
| コマンドレジスタ | W | B | ||
| 0A04 | ステータスレジスタ2 | R | B | RS-232C I/F |
| 0A06 | 割り込み要因レジスタ | R | B | |
| 0A08 | 割り込み制御/クロック切替レジスタ | W | B | |
| 0A0A | モデム制御レジスタ | R/W | B | |
| 0A0C | FIFOモードレジスタ | R/W | B | |
| 0A0D | FIFOステータスレジスタ | R/W | B | |
| 0A0E | FIFO制御レジスタ | R/W | B | |
| 0C30 | データレジスタ | R/W | B | SCSI I/F |
| 0C32 | ステータスレジスタ | R | B | |
| コントロールレジスタ | W | B | ||
| 4014 | PCカードステータス | R | B | PCカード |
| FD90 | アナログパレットコード | R/W | B | アナログパレット |
| FD92 | 青色のパレットコード | R/W | B | |
| FD94 | 赤色のパレットコード | R/W | B | |
| FD96 | 緑色のパレットコード | R/W | B | |
| FD98 | パレットデータ0 | R/W | B |
FMR互換 デジタルパレット |
| FD99 | パレットデータ1 | R/W | B | |
| FD9A | パレットデータ2 | R/W | B | |
| FD9B | パレットデータ3 | R/W | B | |
| FD9C | パレットデータ4 | R/W | B | |
| FD9D | パレットデータ5 | R/W | B | |
| FD9E | パレットデータ6 | R/W | B | |
| FD9F | パレットデータ7 | R/W | B | |
| FDA0 | SUBステータスレジスタ | R | B | FMR互換 |
| CRT出力コントロールレジスタ | W | B | ||
| FDA2 | CRT出力コントロールレジスタ | R | B | |
| FDA4 | リードコンパチブルレジスタ | R/W | B | |
メモリマップドI/O
| addr | レジスタ名 | R/W | Word/Byte | 備考 |
|---|---|---|---|---|
| 000C FF80 | MIXレジスタ | R/W | B | ダミー |
| 000C FF81 |
グラフィックVRAM 更新モードレジスタ |
R/W | B | FMR互換 |
| 000C FF82 |
グラフィックVRAM ディスプレイモードレジスタ |
R/W | B | |
| 000C FF83 |
グラフィックVRAM ページセレクトレジスタ |
R/W | B | |
| 000C FF84 | FIRQレジスタ | R | B | 予備 |
| 000C FF86 | STATUSレジスタ | R | B | FMR互換 |
| 000C FF88 |
グラフィックVRAM ディスプレイモードレジスタ |
R | B | |
| 000C FF94 | 漢字CG アクセスレジスタ | R/W | B | |
| 000C FF95 | W | B | ||
| 000C FF96 | R/W | B | ||
| 000C FF97 | R/W | B | ||
| 000C FF98 | ブザー制御レジスタ | R/W | B | |
| 000C FF99 | 漢字VRAMレジスタ | R/W | B | |
| 000C FF9C | 漢字CGアクセスレジスタ2(下位) | R | B | |
| 000C FF9D | 漢字CGアクセスレジスタ2(上位) | R | B | |
| 000C FF9E | CG ROWアドレスレジスタ | R/W | B | |
| 000C FFA0 | 論理演算レジスタ | R | B |

コメント
最新を表示する
たけがみりうさんの公開されている情報に基づき、undocumentな物を追加
中身はこれから
貴重な情報を有り難うございます。
>>たけがみりうさん
ああ、そうですね。どうもFM-11と言うとAD,AD2という概念が頭にありました。
取り立てて使いにくい訳ではなく、良い他にマップ方法も無さそうなので実績と互換性を重視したのでしょう。
>WINDYさん
あの…FM-11の8088機(EX/BS)はTOWNS同様にx86アーキテクチャ採用(※メインシステムのみ)なのですが…
たけがみりうさん、有り難うございます。
そんな歴史的経緯が有ったとは・・・ TOWNSはFMR-50をベースにしていますのでそれ由来程度と思っていましたが、FM-11から引きずる理由が有ったのかどうか不明ですね。CPUからして全く異なるので単純にI/Oだけ互換性を持たせてもソフトの移植の際に楽になる事は無いでしょうに。
すっきりしました。
>> 返信元
また、メモリマップドI/Oポート $000CFF80~$000CFFBFに関してはFM-16βのサブシステムのダイレクトパスを前提としたアドレスに配置されており、FM-16βのサブCPUであるMC68B09E(MBL68B09E)がBig Endianだったために$000CFF94~$000CFF95もBig Endianとなっていますし、TOWNSで予約済となっている一部のレジスタはFM-16βのサブシステムの名残です。恐らくこれらのI/OポートがI/O空間 $FF80~$FFBFにもあるのはFMR-50、あるいはTOWNSからの仕様だと思われます。
>> 返信元
I/Oポート $FD98~$FDA0に関してはFM-11のメインシステム由来のポートで、FM-11の6809機(ST/AD/EX/AD2/AD2+)ではMC68B09E(MBL68B09E)のメモリマップドI/Oとなり、8088機(EX/BS)ではi8088(MBL8088)のI/O空間に置かれるようになっていました。そのため、8088機の設計がほぼそのままFM-16β以降に引き継がれたと考えられます。(続きます)
>> 返信元
X TOWNSのソースをざっと目を通してみました。
0472H,0473Hの画像出力制御アドレスレジスタ,及び0474H~0477Hの画像出力制御データレジスタがソース上ではCRTC2となっており、ハイレゾの場合はそちらにアクセスしていますね。
>> 返信元
MA/MX以降のハイレゾ&フルカラー 及びHA/HB/HC等のWindowsアクセラレータに関しては具体的な情報は残念ながら持ち合わせていません。
Linuxは上記画面モード全てを対応していますので、Linuxのソースを読むことが唯一の情報源だと思われます。
多分、memory mapped I/Oが出っぱなしだと使いやすいと思うのですが、メモリバンクを切り替えなくてはならなかったりするのでちょっと使いにくかったかもしれません。
気になっているのがFDxxはCFDxxに出ているのだろうか?ということですが、今のところCFDxxでI/Oをパレットをいじってるようなソフトには出くわしてないですね。
あと、MA MXで増えたハイレゾモードのCRTCレジスタの意味とか情報無いですよね。一応、津軽の目標はMX相当の再現なのですが、ハイレゾモードをどうしたもんかと思ってます。
有り難うございます。 そう言えば忘れていましたが、各I/Oポートに対応機種を明記します。
メモリマップドI/O(CFFxx)がI/OのFFxxに出ているとは気づきませんでした。そちらも明記しておくべきでしょう。
私としてはメモリマップドI/Oの方が使いやすいのですが、インテル系を使用して来られた方はIN/OUT命令の方が使いやすいのだろうか。
赤本だと新しく追加されたI/OがAppendixに別に載っててやや見づらかったので、まとまっていると非常に見やすくて良いですね。
そういえば、メモリマップI/Oの CFFxx ですが、すべて通常I/Oの FFxx にも出ているようです。結構多くのタイトルでI/O FFxxをアクセスしていました。
赤本に載っている物は一通り書きました。
赤本はHA/HB/HCシリーズについての記載が無いため、これらの機種で追加されたポートや
赤本に未記載の情報については判明すれば記載する方向
NG表示方式
NGID一覧