trunk/src/mess/drivers/pc88va.c
| r19096 | r19097 | |
| 15 | 15 | - What is exactly supposed to be a "bus slot"? |
| 16 | 16 | - fdc "intelligent mode" has 0x7f as irq vector ... 0x7f is ld a,a and it IS NOT correctly |
| 17 | 17 | hooked up by the current z80 core |
| 18 | - PC-88VA has two bogus opcodes. One is at 0xf0b15, another at 0xf0b31. Making a patch |
| 19 | for the latter makes the system to jump into a "DIP-Switch" display. |
| 20 | - DMA almost certainly ISN'T i8237. What is it? |
| 18 | 21 | |
| 19 | 22 | ********************************************************************************************/ |
| 20 | 23 | |
| r19096 | r19097 | |
| 126 | 129 | DECLARE_WRITE8_MEMBER(r232_ctrl_portc_w); |
| 127 | 130 | DECLARE_WRITE_LINE_MEMBER(pc88va_pic_irq); |
| 128 | 131 | DECLARE_READ8_MEMBER(get_slave_ack); |
| 132 | DECLARE_READ8_MEMBER(pc88va_dma_r); |
| 133 | DECLARE_WRITE8_MEMBER(pc88va_dma_w); |
| 129 | 134 | DECLARE_WRITE_LINE_MEMBER(pc88va_pit_out0_changed); |
| 130 | 135 | DECLARE_WRITE_LINE_MEMBER(pc88va_upd765_interrupt); |
| 131 | 136 | UINT8 m_fdc_ctrl_2; |
| r19096 | r19097 | |
| 1120 | 1125 | } |
| 1121 | 1126 | #endif |
| 1122 | 1127 | |
| 1128 | /* TODO: identify or emulate this DMAC */ |
| 1129 | READ8_MEMBER(pc88va_state::pc88va_dma_r) |
| 1130 | { |
| 1131 | /* |
| 1132 | 0: undefined |
| 1133 | 1: ---x ---- mode |
| 1134 | ---- xxxx select channel (bit-wise) |
| 1135 | 2/3: xxxx xxxx count |
| 1136 | 4/5: xxxx xxxx address |
| 1137 | 6: ---- xxxx address |
| 1138 | 8: ???? ???? Device control Register |
| 1139 | A: ???? ???? Mode control Register |
| 1140 | B: ???? ???? Status Register (r/o) |
| 1141 | F: xxxx xxxx Mask Register |
| 1142 | */ |
| 1143 | |
| 1144 | return 0; |
| 1145 | } |
| 1146 | |
| 1147 | WRITE8_MEMBER(pc88va_state::pc88va_dma_w) |
| 1148 | { |
| 1149 | switch(offset) |
| 1150 | { |
| 1151 | case 0x00: printf("DMA reset %02x\n",data & 1); break; |
| 1152 | case 0x01: printf("DMA select channel %02x mode channel %02x\n",data & 3,(data & 4) >> 2); break; |
| 1153 | case 0x02: printf("DMA count 7-0 %02x\n",data); break; |
| 1154 | case 0x03: printf("DMA count 15-8 %02x\n",data); break; |
| 1155 | case 0x04: printf("DMA address 7-0 %02x\n",data); break; |
| 1156 | case 0x05: printf("DMA address 15-8 %02x\n",data); break; |
| 1157 | case 0x06: printf("DMA address 19-16 %02x\n",data); break; |
| 1158 | case 0x08: printf("DMA Device control register %02x\n",data); break; |
| 1159 | case 0x0a: printf("DMA Mode control register %02x\n",data); break; |
| 1160 | case 0x0f: printf("DMA Mask register %02x\n",data); break; |
| 1161 | } |
| 1162 | } |
| 1163 | |
| 1123 | 1164 | static ADDRESS_MAP_START( pc88va_io_map, AS_IO, 16, pc88va_state ) |
| 1124 | 1165 | AM_RANGE(0x0000, 0x000f) AM_READ8(key_r,0xffff) // Keyboard ROW reading |
| 1125 | 1166 | // AM_RANGE(0x0010, 0x0010) Printer / Calendar Clock Interface |
| r19096 | r19097 | |
| 1170 | 1211 | AM_RANGE(0x0156, 0x0157) AM_READ8(rom_bank_r,0x00ff) // ROM bank status |
| 1171 | 1212 | // AM_RANGE(0x0158, 0x0159) Interruption Mode Modification |
| 1172 | 1213 | // AM_RANGE(0x015c, 0x015f) NMI mask port (strobe port) |
| 1173 | | // AM_RANGE(0x0160, 0x016f) DMA Controller |
| 1214 | AM_RANGE(0x0160, 0x016f) AM_READWRITE8(pc88va_dma_r,pc88va_dma_w,0xffff) // DMA Controller |
| 1174 | 1215 | AM_RANGE(0x0184, 0x0187) AM_DEVREADWRITE8_LEGACY("pic8259_slave", pic8259_r, pic8259_w, 0x00ff) |
| 1175 | 1216 | AM_RANGE(0x0188, 0x018b) AM_DEVREADWRITE8_LEGACY("pic8259_master", pic8259_r, pic8259_w, 0x00ff) // ICU, also controls 8214 emulation |
| 1176 | 1217 | // AM_RANGE(0x0190, 0x0191) System Port 5 |