IBM PC/ATのメモリーマップ・I/Oポート・割り込み [PC/AT +1]
IBM PC/ATの概要とハードウェア構成 [PC/AT +0] の続き。
○PC/AT(初期構成)のメモリマップ (<16MB)
アドレス | サイズ | 割り当て種別 | 説明 |
0x000000 - 0x0003FF | 1KB | RAM(使用済み) | IVT(リアルモード割り込みベクタテーブル) |
0x000400 - 0x0004FF | 256B | RAM(使用済み) | BDA(BIOSデータエリア) |
0x000500 - 0x07FFFF | 511KB | RAM | コンベンショナルメモリ |
0x080000 - 0x09FFFF | 128KB | RAM(予約) | コンベンショナルメモリ(拡張) |
0x0A0000 - 0x0BFFFF | 128KB | RAM(予約) | ビデオメモリ予約領域 |
0x0C0000 - 0x0DFFFF | 128KB | ROM(予約) | 拡張BIOS ROM予約領域 |
0x0E0000 - 0x0EFFFF | 64KB | ROM(予約) | システムROM予約領域 |
0x0F0000 - 0x0FFFFF | 64KB | ROM | システムROM(BIOSなど) |
0x100000 - 0xFDFFFF | 15MB | RAM(予約) | プロテクトメモリ(拡張) |
0xFE0000 - 0xFEFFFF | 64KB | ROM(予約) | 0x0E0000 - 0x0EFFFF のミラー |
0xFF0000 - 0xFFFFFF | 64KB | ROM | 0x0F0000 - 0x0FFFFF のミラー |
上記のうち自由に使えるメモリ領域は"コンベンショナルメモリ"と"プロテクトメモリ"の部分。
種別を"(予約)"とした領域はPC/ATの初期構成ではROMもRAMも存在しない。
ROM予約領域の割り当ては搭載する表示アダプターやインターフェイスアダプターなどのハードウェア構成によって異なるが、大抵の場合はいくらか未使用領域が残る。
この未使用領域にページフレームを設けてバンク切替方式で外部拡張メモリにアクセスする手法"EMS(Expanded Memory Specification)"がよく利用されていた。
また、80386以上のCPUを搭載する機種とDOS 5.0以降の組み合わせでは、この領域にプロテクトメモリの一部を割り当ててUMB(Upper Memory Block)として使用できた。
○I/Oポートマップ
I/Oアドレス | デバイス |
000 - 01Fh | DMAコントローラー(1)(8237) |
020 - 03Fh | 割り込みコントローラー(マスター)(8259) |
040 - 05Fh | システムタイマー(8254) |
060 - 06Fh | キーボードコントローラー(8042) |
070 - 07Fh | RT/CMOS(MC146818)、NMIマスク |
080 - 09Fh | DMAページレジスタ(74LS612) |
0A0 - 0BFh | 割り込みコントローラー(スレーブ)(8259) |
0C0 - 0DFh | DMAコントローラー(2)(8237) |
0F0h | 数値演算プロセッサー(Busyクリア) |
0F1h | 数値演算プロセッサー(リセット) |
0F8 - 0FFh | 数値演算プロセッサー |
- 以下拡張アダプター - | |
1F0 - 1F7h | ハードディスクドライブコントローラー |
200 - 207h | ゲームポートアダプター |
278 - 27Fh | パラレルプリンターポート(2) |
2F8 - 2FFh | 非同期通信アダプター(シリアルポート)(2) |
300 - 31Fh | 試作用アダプター |
360 - 36Fh | (予約) |
378 - 37Fh | パラレルプリンターポート(1) |
380 - 38Fh | SDLCアダプター、同期通信アダプター(2) |
3A0 - 3AFh | 同期通信アダプター(1) |
3B0 - 3BFh | MDA、パラレルプリンターポート(3) |
3C0 - 3CFh | EGA |
3D0 - 3DFh | CGA |
3F0 - 3F7h | ディスケットドライブコントローラー |
3F8 - 3FFh | 非同期通信アダプター(シリアルポート)(1) |
これらのうち、システム部分はほとんどが現在のPC/AT互換機にそのまま引き継がれている。
拡張アダプターについても一部は互換性維持のために引き継がれている。
ハードディスクコントローラー(1F0h-1F7h)はシリアルATAのAHCIモードでは使われていないが、IDE互換モードに設定すれば有効になる。
ゲームポートアダプター(200h-207h)はつい最近までSound BlasterのJOYSTICKポートとして使われていた。
非同期通信アダプター(シリアルポート)やパラレルポートも2000年前後まではよく使われていた。
MDA、EGA、CGA(3B0h-3DFh)は後にIBM PS/2のVGA(Video Graphics Array)となり、現在も使われ続けている。
○システム割り込み
デバイス | IRQ番号 | 用途 |
8259A マスター |
0 | システムタイマー |
1 | キーボード | |
2 | スレーブ(IRQ8-IRQ15) | |
3 | シリアルポート(2) | |
4 | シリアルポート(1) | |
5 | パラレルポート(2) | |
6 | ディスケットコントローラー | |
7 | パラレルポート(1) | |
8259A スレーブ |
8 | カレンダー時計(RTC) |
9 | INT 0Ah(IRQ 2) | |
10 | 予約 | |
11 | 予約 | |
12 | 予約 | |
13 | 数値演算プロセッサー | |
14 | ハードディスクコントローラー | |
15 | 予約 |
○ソフトウェア割り込みベクタ(リアルモード時)
INT番号 | 用途 |
00h | ゼロ除算エラー |
01h | シングルステップ |
02h | NMI |
03h | ブレークポイント |
04h | オーバーフロー |
05h | Print Screenキー |
06,07h | 予約 |
08h | IRQ 0 |
09h | IRQ 1 |
0Ah | IRQ 2 |
0Bh | IRQ 3 |
0Ch | IRQ 4 |
0Dh | IRQ 5 |
0Eh | IRQ 6 |
0Fh | IRQ 7 |
10h | ディスプレイ入出力 BIOS |
11h | ドライブ検出 |
12h | メモリ容量取得 |
13h | ディスケット BIOS |
14h | RS-232C BIOS |
15h | カセット BIOS |
16h | キーボード BIOS |
17h | プリンター BIOS |
18h | BASIC |
19h | ブートストラップ |
1Ah | カレンダー時計 BIOS |
1Bh | Breakキー |
1Ch | タイマーイベント |
1Dh | ディスプレイ初期化 |
1Eh | ディスケットパラメータ |
1Fh | ディスプレイグラフィック文字 |
20-27h | DOS使用 |
28-3Fh | DOS予約 |
40-5Fh | 予約 |
60-67h | ユーザー用 |
68-6Fh | 未使用 |
70h | IRQ 8 |
71h | IRQ 9 |
72h | IRQ 10 |
73h | IRQ 11 |
74h | IRQ 12 |
75h | IRQ 13 |
76h | IRQ 14 |
77h | IRQ 15 |
78-7Fh | 未使用 |
80-85h | BASIC予約 |
86-F0h | BASIC使用 |
F1-FFh | 未使用 |