uint8 get_mbyte(uint16 addr) { if (addr >= 0xF800) { //monitor ROM - always there // sim_printf("get_mbyte: Monitor ROM ipc_cont=%02X\n", ipc_cont_unit.u3); return EPROM_get_mbyte(addr - 0xF000); } if ((addr < 0x1000) && ((ipc_cont_unit.u3 & 0x01) == 0)) { //startup // sim_printf("get_mbyte: Startup ROM ipc_cont=%02X\n", ipc_cont_unit.u3); return EPROM_get_mbyte(addr); } if ((addr >= 0xE800) && (addr < 0xF000) && ((ipc_cont_unit.u3 & 0x04) == 0)) { //diagnostic ROM // sim_printf("get_mbyte: Diagnostic ROM ipc_cont=%02X\n", ipc_cont_unit.u3); return EPROM_get_mbyte(addr - 0xE800); } return RAM_get_mbyte(addr); }
uint8 get_mbyte(uint16 addr) { /* if local EPROM handle it */ if ((ROM_DISABLE && (i8255_C[0] & 0x20)) || (ROM_DISABLE == 0)) { /* EPROM enabled */ if ((addr >= EPROM_unit.u3) && ((uint16)addr < (EPROM_unit.u3 + EPROM_unit.capac))) { return EPROM_get_mbyte(addr); } } /* if local RAM handle it */ if ((RAM_DISABLE && (i8255_C[0] & 0x10)) || (RAM_DISABLE == 0)) { /* RAM enabled */ if ((addr >= RAM_unit.u3) && ((uint16)addr < (RAM_unit.u3 + RAM_unit.capac))) { return RAM_get_mbyte(addr); } } /* otherwise, try the multibus */ return multibus_get_mbyte(addr); }
int32 get_mbyte(int32 addr) { /* if local EPROM handle it */ if (i8255_unit.u5 & 0x01) { if ((addr >= EPROM_unit.u3) && ((uint16)addr < (EPROM_unit.u3 + EPROM_unit.capac))) { return EPROM_get_mbyte(addr); } } /* if local RAM handle it */ if (i8255_unit.u5 & 0x02) { if ((addr >= RAM_unit.u3) && ((uint16)addr < (RAM_unit.u3 + RAM_unit.capac))) { return RAM_get_mbyte(addr); } } /* otherwise, try the multibus */ return multibus_get_mbyte(addr); }