public void Reset() { _interrupts = new ConcurrentQueue<byte>(); _bus = new i8086BusInterfaceUnit(); _bus.LoadBIOS(File.ReadAllBytes("Chipset\\pcxtbios.bin")); //_bus.LoadROM(File.ReadAllBytes("Chipset\\ide_xt.bin"), 0xd0000); //_bus.LoadROM(File.ReadAllBytes("Chipset\\rombasic.bin"), 0xf6000); //_bus.LoadROM(File.ReadAllBytes("Chipset\\videorom.bin"), 0xc0000); _eu = new i8086ExecutionUnit(_bus); // 0x00 - 0x0f: DMA Chip 8237A-5 // 0x20 - 0x21: Interrupt 8259A Init8259(); // 0x40 - 0x43: Timer 8253 Init8253(); // 0x60 - 0x63: PPI 8255 (speaker) // 0x80 - 0x83: DMA page registers // 0xa0 - 0xaf: NMI Mask Register // 0x200 - 0x20f: Game Control // 0x210 - 0x207: Expansion Unit // 0x220 - 0x24f: Reserved // 0x3bc: IBM Monochrome Display & Printer Adapter // 0x378: Printer Adapter }
public void Boot(byte[] program) { // For now we will hard code the BIOS to start at a particular code segment. _bus = new i8086BusInterfaceUnit(0x0000, 0x0100, program); _eu = new i8086ExecutionUnit(_bus); }