trunk/src/mess/machine/ncr5380.c
| r17486 | r17487 | |
| 156 | 156 | //------------------------------------------------- |
| 157 | 157 | // Public API |
| 158 | 158 | //------------------------------------------------- |
| 159 | | READ8_DEVICE_HANDLER_TRAMPOLINE(ncr5380, ncr5380_read_reg) |
| 159 | UINT8 ncr5380_device::ncr5380_read_reg(UINT32 offset) |
| 160 | 160 | { |
| 161 | 161 | int reg = offset & 7; |
| 162 | 162 | UINT8 rv = 0; |
| r17486 | r17487 | |
| 240 | 240 | return rv; |
| 241 | 241 | } |
| 242 | 242 | |
| 243 | | WRITE8_DEVICE_HANDLER_TRAMPOLINE(ncr5380, ncr5380_write_reg) |
| 243 | void ncr5380_device::ncr5380_write_reg(UINT32 offset, UINT8 data) |
| 244 | 244 | { |
| 245 | 245 | int reg = offset & 7; |
| 246 | 246 | |
| r17486 | r17487 | |
| 472 | 472 | logerror("ncr5380: write to unknown device SCSI ID %d\n", m_last_id); |
| 473 | 473 | } |
| 474 | 474 | } |
| 475 | | |
| 476 | | void ncr5380_read_data(device_t *dev, UINT8 bytes, UINT8 *pData) |
| 477 | | { |
| 478 | | return downcast<ncr5380_device*>(dev)->ncr5380_read_data(bytes, pData); |
| 479 | | } |
| 480 | | |
| 481 | | void ncr5380_write_data(device_t *dev, UINT8 bytes, UINT8 *pData) |
| 482 | | { |
| 483 | | downcast<ncr5380_device*>(dev)->ncr5380_write_data(bytes, pData); |
| 484 | | } |
trunk/src/mess/machine/mac.c
| r17486 | r17487 | |
| 974 | 974 | READ16_MEMBER ( mac_state::macplus_scsi_r ) |
| 975 | 975 | { |
| 976 | 976 | int reg = (offset>>3) & 0xf; |
| 977 | | device_t *ncr = space.machine().device("ncr5380"); |
| 977 | ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380"); |
| 978 | 978 | |
| 979 | 979 | // logerror("macplus_scsi_r: offset %x mask %x\n", offset, mem_mask); |
| 980 | 980 | |
| r17486 | r17487 | |
| 983 | 983 | reg = R5380_CURDATA_DTACK; |
| 984 | 984 | } |
| 985 | 985 | |
| 986 | | return ncr5380_read_reg(ncr, reg)<<8; |
| 986 | return ncr->ncr5380_read_reg(reg)<<8; |
| 987 | 987 | } |
| 988 | 988 | |
| 989 | 989 | READ32_MEMBER (mac_state::macii_scsi_drq_r) |
| 990 | 990 | { |
| 991 | | device_t *ncr = space.machine().device("ncr5380"); |
| 991 | ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380"); |
| 992 | 992 | |
| 993 | 993 | switch (mem_mask) |
| 994 | 994 | { |
| 995 | 995 | case 0xff000000: |
| 996 | | return ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<24; |
| 996 | return ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<24; |
| 997 | 997 | |
| 998 | 998 | case 0xffff0000: |
| 999 | | return (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<24) | (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<16); |
| 999 | return (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<24) | (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<16); |
| 1000 | 1000 | |
| 1001 | 1001 | case 0xffffffff: |
| 1002 | | return (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<24) | (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<16) | (ncr5380_read_reg(ncr, R5380_CURDATA_DTACK)<<8) | ncr5380_read_reg(ncr, R5380_CURDATA_DTACK); |
| 1002 | return (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<24) | (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<16) | (ncr->ncr5380_read_reg(R5380_CURDATA_DTACK)<<8) | ncr->ncr5380_read_reg(R5380_CURDATA_DTACK); |
| 1003 | 1003 | |
| 1004 | 1004 | default: |
| 1005 | 1005 | logerror("macii_scsi_drq_r: unknown mem_mask %08x\n", mem_mask); |
| r17486 | r17487 | |
| 1010 | 1010 | |
| 1011 | 1011 | WRITE32_MEMBER (mac_state::macii_scsi_drq_w) |
| 1012 | 1012 | { |
| 1013 | | device_t *ncr = space.machine().device("ncr5380"); |
| 1013 | ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380"); |
| 1014 | 1014 | |
| 1015 | 1015 | switch (mem_mask) |
| 1016 | 1016 | { |
| 1017 | 1017 | case 0xff000000: |
| 1018 | | ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>24); |
| 1018 | ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>24); |
| 1019 | 1019 | break; |
| 1020 | 1020 | |
| 1021 | 1021 | case 0xffff0000: |
| 1022 | | ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>24); |
| 1023 | | ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>16); |
| 1022 | ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>24); |
| 1023 | ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>16); |
| 1024 | 1024 | break; |
| 1025 | 1025 | |
| 1026 | 1026 | case 0xffffffff: |
| 1027 | | ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>24); |
| 1028 | | ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>16); |
| 1029 | | ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data>>8); |
| 1030 | | ncr5380_write_reg(ncr, R5380_OUTDATA_DTACK, data&0xff); |
| 1027 | ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>24); |
| 1028 | ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>16); |
| 1029 | ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data>>8); |
| 1030 | ncr->ncr5380_write_reg(R5380_OUTDATA_DTACK, data&0xff); |
| 1031 | 1031 | break; |
| 1032 | 1032 | |
| 1033 | 1033 | default: |
| r17486 | r17487 | |
| 1039 | 1039 | WRITE16_MEMBER ( mac_state::macplus_scsi_w ) |
| 1040 | 1040 | { |
| 1041 | 1041 | int reg = (offset>>3) & 0xf; |
| 1042 | | device_t *ncr = space.machine().device("ncr5380"); |
| 1042 | ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380"); |
| 1043 | 1043 | |
| 1044 | 1044 | // logerror("macplus_scsi_w: data %x offset %x mask %x\n", data, offset, mem_mask); |
| 1045 | 1045 | |
| r17486 | r17487 | |
| 1048 | 1048 | reg = R5380_OUTDATA_DTACK; |
| 1049 | 1049 | } |
| 1050 | 1050 | |
| 1051 | | ncr5380_write_reg(ncr, reg, data); |
| 1051 | ncr->ncr5380_write_reg(reg, data); |
| 1052 | 1052 | } |
| 1053 | 1053 | |
| 1054 | 1054 | WRITE16_MEMBER ( mac_state::macii_scsi_w ) |
| 1055 | 1055 | { |
| 1056 | 1056 | int reg = (offset>>3) & 0xf; |
| 1057 | | device_t *ncr = space.machine().device("ncr5380"); |
| 1057 | ncr5380_device *ncr = space.machine().device<ncr5380_device>("ncr5380"); |
| 1058 | 1058 | |
| 1059 | 1059 | // logerror("macplus_scsi_w: data %x offset %x mask %x (PC=%x)\n", data, offset, mem_mask, cpu_get_pc(&space->device())); |
| 1060 | 1060 | |
| r17486 | r17487 | |
| 1063 | 1063 | reg = R5380_OUTDATA_DTACK; |
| 1064 | 1064 | } |
| 1065 | 1065 | |
| 1066 | | ncr5380_write_reg(ncr, reg, data>>8); |
| 1066 | ncr->ncr5380_write_reg(reg, data>>8); |
| 1067 | 1067 | } |
| 1068 | 1068 | |
| 1069 | 1069 | void mac_scsi_irq(running_machine &machine, int state) |