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 未使用

※コメント欄が表示されない場合はdisqusについてJavascriptが有効であることを確認して下さい。コメントはスパム防止フィルターによる承認制のため、投稿してもすぐに反映されない場合があります。

管理人 : Akamaki (akm)

は、PCとVTuberに夢中になっている電気技術者です。

私はレトロコンピューティングの愛好家ですが、そのようなリグはもう収集していません。

私の活動はトップページで見ることができます。読んでくれてありがとう!