簡単な答えは、プロテクトモードでは、1番目のプログラマブル割り込みコントローラーによって使用される割り込みはプロテクトモードの例外であるということです。つまり、それらを再マッピングする必要があります。
嬉しい答えは、最初のものだけPIC
を再マッピングする必要があるということです(2番目の再マッピングはで始まるので便宜上ですint 70h
)。これは、元のATBIOSからの引用です。
INTA00 equ 020h ; 8259 port
INTA01 equ 021h ; 8259 port
INTB00 equ 0A0h ; 2nd 8259
INTB01 equ 0A1h
INT_TYPE equ 070h ; start of 8259 interrupt table location
;---------------------------------------------------------
; re-initialize the 8259 interrupt #1 controller chip :
;---------------------------------------------------------
mov al, 11h ; icw1 - edge, master, icw4
out INTA00,al
jmp $+2 ; wait state for i/o
mov al, 8 ; setup icw2 - int type 8 (8-f)
out INTA01, al
jmp $+2
mov al, 4 ; setup icw3 - master lv 2
out INTA01, al
jmp $+2
mov al, 1 ; setup icw4 - master, 8086 mode
out INTA01, al
jmp $+2
mov al, 0FFh ; mask all ints. off
out INTA01, al ; (video routine enables interrupts)
;---------------------------------------------------------
; re-initialize the 8259 interrupt #2 controller chip :
;---------------------------------------------------------
mov al, 11h ; icw1 - edge, slave icw4
out INTB00, al
jmp $+2
mov al, INT_TYPE ; setup icw2 - int type 70 (70-7f)
out INTB01, al
mov al, 2 ; setup icw3 - slave lv 2
jmp $+2
out INTB01, al
jmp $+2
mov al, 1 ; setup icw4 - 8086 mode, slave
out INTB01, al
jmp $+2
mov al, 0FFh ; mask all ints. off
out INTB01, al
;--------------------------------------------------------------------------------
テクニカルリファレンスATBIOS(c)1984 IBM
ノート:
現在のjmp $+2 ; wait state for i/o
PCでは必要ありません。
はicw1
、割り込みマスクレジスタをクリアします。これにより、そのPICでの割り込みが有効になります。
8259Aチップは古くからありますが、プログラミングインターフェイスはまだ使用されています。
8259Aプログラマブル割り込みコントローラー