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) |