void multibus_put_mbyte(uint16 addr, uint8 val) { SET_XACK(0); /* set no XACK */ // sim_printf("multibus_put_mbyte: Cleared XACK for %04X\n", addr); isbc064_put_mbyte(addr, val); // sim_printf("multibus_put_mbyte: Done XACK=%dX\n", XACK); }
uint8 nulldev(t_bool flag, uint8 data, uint8 devnum) { SET_XACK(0); /* set no XACK */ if (flag == 0) /* if we got here, no valid I/O device */ return (0xFF); return 0; }
uint8 isbc064_get_mbyte(uint16 addr) { uint32 val, org, len; if ((isbc064_dev.flags & DEV_DIS) == 0) { org = isbc064_unit.u3; len = isbc064_unit.capac; sim_debug (DEBUG_read, &isbc064_dev, "isbc064_get_mbyte: addr=%04X", addr); sim_debug (DEBUG_read, &isbc064_dev, "isbc064_get_mbyte: org=%04X, len=%04X\n", org, len); if ((addr >= org) && (addr < (org + len))) { SET_XACK(1); /* good memory address */ sim_debug (DEBUG_xack, &isbc064_dev, "isbc064_get_mbyte: Set XACK for %04X\n", addr); val = *((uint8 *)isbc064_unit.filebuf + (addr - org)); sim_debug (DEBUG_read, &isbc064_dev, " val=%04X\n", val); // sim_printf ("isbc064_get_mbyte: addr=%04X, val=%02X\n", addr, val); return (val & 0xFF); } else { sim_debug (DEBUG_read, &isbc064_dev, "isbc064_get_mbyte: Out of range\n"); return 0; /* multibus has active high pullups and inversion */ } } sim_debug (DEBUG_read, &isbc064_dev, "isbc064_get_mbyte: Disabled\n"); // sim_printf ("isbc064_get_mbyte: Disabled\n"); return 0; /* multibus has active high pullups and inversion */ }
int32 EPROM_get_mbyte(uint32 addr) { int32 val; if (i8255_unit.u5 & 0x01) { /* EPROM enabled */ sim_debug (DEBUG_read, &EPROM_dev, "EPROM_get_mbyte: addr=%04X\n", addr); if (addr < EPROM_unit.capac) { SET_XACK(1); /* good memory address */ sim_debug (DEBUG_xack, &EPROM_dev, "EPROM_get_mbyte: Set XACK for %04X\n", addr); val = *((uint8 *)EPROM_unit.filebuf + addr); sim_debug (DEBUG_read, &EPROM_dev, " val=%04X\n", val); return (val & 0xFF); } sim_debug (DEBUG_read, &EPROM_dev, " Out of range\n"); return 0xFF; } sim_debug (DEBUG_read, &EPROM_dev, " EPROM Disabled\n"); return 0xFF; }
void isbc064_put_mbyte(uint16 addr, uint8 val) { uint32 org, len; if ((isbc064_dev.flags & DEV_DIS) == 0) { org = isbc064_unit.u3; len = isbc064_unit.capac; // sim_printf ("isbc064_put_mbyte: addr=%04X, val=%02X\n", addr, val); sim_debug (DEBUG_write, &isbc064_dev, "isbc064_put_mbyte: addr=%04X, val=%02X\n", addr, val); sim_debug (DEBUG_write, &isbc064_dev, "isbc064_put_mbyte: org=%04X, len=%04X\n", org, len); if ((addr >= org) && (addr < (org + len))) { SET_XACK(1); /* good memory address */ sim_debug (DEBUG_write, &isbc064_dev, "isbc064_put_mbyte: Set XACK for %04X\n", addr); *((uint8 *)isbc064_unit.filebuf + (addr - org)) = val & 0xFF; sim_debug (DEBUG_write, &isbc064_dev, "isbc064_put_mbyte: Return\n"); return; } else { sim_debug (DEBUG_write, &isbc064_dev, "isbc064_put_mbyte: Out of range\n"); return; } } sim_debug (DEBUG_write, &isbc064_dev, "isbc064_put_mbyte: Disabled\n"); // sim_printf ("isbc064_put_mbyte: Disabled\n"); }
uint8 multibus_get_mbyte(uint16 addr) { SET_XACK(0); /* set no XACK */ // sim_printf("multibus_get_mbyte: Cleared XACK for %04X\n", addr); return isbc064_get_mbyte(addr); }