#include "../../bootpack.h"

void PIC::init() {
	IO8 io8(0x00000000);
	io8.out(PIC::PIC0_IMR,  0xff  ); // 割り込み禁止
	io8.out(PIC::PIC1_IMR,  0xff  ); // 割り込み禁止

	io8.out(PIC::PIC0_ICW1, 0x11  ); // エッジトリガモード
	io8.out(PIC::PIC0_ICW2, 0x20  ); // IRQ0-7 -> INT20-27
	io8.out(PIC::PIC0_ICW3, 1 << 2); // PIC1 -> IRQ2
	io8.out(PIC::PIC0_ICW4, 0x01  ); // ノンバッファモード

	io8.out(PIC::PIC1_ICW1, 0x11  );
	io8.out(PIC::PIC1_ICW2, 0x28  ); // IRQ8-15 -> INT28-2f
	io8.out(PIC::PIC1_ICW3, 2     ); // PIC1 -> IRQ2
	io8.out(PIC::PIC1_ICW4, 0x01  );

	io8.out(PIC::PIC0_IMR,  0xfb  ); // PIC1からの割り込み以外禁止
	io8.out(PIC::PIC1_IMR,  0xff  ); // 割り込み禁止
}
