割り込み
2ch OS板より
irq と割り込みベクタ(int)の番号は別。 irq と割り込みベクタの対応は、割り込みコントローラに設定する。 Mona だと pic.cpp で設定していて irq0 を int 0x60 へ irq8 を int 0x28 へマップする。 irq0 を int 0x60 へマップすると順に irq1 は int 0x61 へ、irq 7 は int 0x67 へ。 irq8 を int 0x28 へマップすると順に irq9 は int 0x29 へ、irq f は int 0x2f へ。 int 0x00 〜 int 0x1f まではインテル予約なんで使っちゃ駄目。 /* master */ outp8(0x20, 0x11); /* ICW1 */ outp8(0x21, 0x60); /* ICW2 */ /* IRQ 0h = int 60h */ outp8(0x21, 0x04); /* ICW3 */ outp8(0x21, 0x01); /* ICW4 */ /* slave */ outp8(0xa0, 0x11); /* ICW1 */ outp8(0xa1, 0x28); /* ICW2 */ /* IRQ 8h = int 28h */ outp8(0xa1, 0x02); /* ICW3 */ outp8(0xa1, 0x01); /* ICW4 */