trunk/src/mess/drivers/trs80m2.c
r20196 | r20197 | |
10 | 10 | |
11 | 11 | TODO: |
12 | 12 | |
| 13 | - floppy broken |
13 | 14 | - keyboard CPU ROM |
14 | 15 | - graphics board |
15 | 16 | - Tandy 6000 HD |
r20196 | r20197 | |
230 | 231 | |
231 | 232 | m_fdc->set_floppy(m_floppy); |
232 | 233 | |
233 | | // side select |
234 | | if (m_floppy) m_floppy->ss_w(!BIT(data, 6)); |
| 234 | if (m_floppy) |
| 235 | { |
| 236 | // side select |
| 237 | m_floppy->ss_w(!BIT(data, 6)); |
235 | 238 | |
| 239 | // motor |
| 240 | m_floppy->mon_w(0); |
| 241 | } |
| 242 | |
236 | 243 | // FM/MFM |
237 | | m_fdc->dden_w(BIT(data, 7)); |
| 244 | m_fdc->dden_w(!BIT(data, 7)); |
238 | 245 | } |
239 | 246 | |
240 | 247 | READ8_MEMBER( trs80m2_state::keyboard_r ) |
r20196 | r20197 | |
1003 | 1010 | MCFG_MC6845_ADD(MC6845_TAG, MC6845, XTAL_12_48MHz/8, mc6845_intf) |
1004 | 1011 | |
1005 | 1012 | // devices |
1006 | | MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/8) |
| 1013 | MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/4) |
1007 | 1014 | MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_8MHz/2, ctc_intf) |
1008 | 1015 | MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(XTAL_8MHz/2/2)) |
1009 | 1016 | MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_8MHz/2, dma_intf) |
r20196 | r20197 | |
1054 | 1061 | MCFG_MC6845_ADD(MC6845_TAG, MC6845, XTAL_12_48MHz/8, mc6845_intf) |
1055 | 1062 | |
1056 | 1063 | // devices |
1057 | | MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/8) |
| 1064 | MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/4) |
1058 | 1065 | MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_8MHz/2, ctc_intf) |
1059 | 1066 | MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(XTAL_8MHz/2/2)) |
1060 | 1067 | MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_8MHz/2, dma_intf) |
r20196 | r20197 | |
1156 | 1163 | //************************************************************************** |
1157 | 1164 | |
1158 | 1165 | // YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS |
1159 | | COMP( 1979, trs80m2, 0, 0, trs80m2, trs80m2, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model II", GAME_NO_SOUND_HW | GAME_IMPERFECT_KEYBOARD ) |
| 1166 | COMP( 1979, trs80m2, 0, 0, trs80m2, trs80m2, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model II", GAME_NO_SOUND_HW | GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD ) |
1160 | 1167 | COMP( 1982, trs80m16, trs80m2, 0, trs80m16, trs80m2, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model 16", GAME_NO_SOUND_HW | GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD ) |
1161 | 1168 | //COMP( 1983, trs80m12, trs80m2, 0, trs80m16, trs80m2, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model 12", GAME_NO_SOUND_HW | GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD ) |
1162 | 1169 | //COMP( 1984, trs80m16b,trs80m2, 0, trs80m16, trs80m2, driver_device, 0, "Tandy Radio Shack", "TRS-80 Model 16B", GAME_NO_SOUND_HW | GAME_NOT_WORKING | GAME_IMPERFECT_KEYBOARD ) |
trunk/src/mess/drivers/bullet.c
r20196 | r20197 | |
48 | 48 | |
49 | 49 | TODO: |
50 | 50 | |
51 | | - revision F boot ROM dump |
52 | | - wmb_org.imd does not load |
| 51 | - floppy broken |
53 | 52 | - z80dart wait/ready |
54 | | - floppy type dips |
55 | 53 | - Winchester hard disk |
56 | 54 | - revision E model |
57 | 55 | |
r20196 | r20197 | |
201 | 199 | |
202 | 200 | */ |
203 | 201 | |
204 | | // drive select |
205 | | m_floppy = NULL; |
| 202 | if (BIT(data, 2)) |
| 203 | { |
| 204 | m_exdsk_sw = true; |
| 205 | } |
206 | 206 | |
207 | | switch (data & 0x07) |
| 207 | if (m_exdsk_sw) |
208 | 208 | { |
209 | | // 5.25" |
210 | | case 0: m_floppy = m_floppy0->get_device(); break; |
211 | | case 1: m_floppy = m_floppy1->get_device(); break; |
212 | | case 2: m_floppy = m_floppy2->get_device(); break; |
213 | | case 3: m_floppy = m_floppy3->get_device(); break; |
214 | | // 8" |
215 | | case 4: m_floppy = m_floppy4->get_device(); break; |
216 | | case 5: m_floppy = m_floppy5->get_device(); break; |
217 | | case 6: m_floppy = m_floppy6->get_device(); break; |
218 | | case 7: m_floppy = m_floppy7->get_device(); break; |
| 209 | // drive select |
| 210 | m_floppy = NULL; |
| 211 | |
| 212 | switch (data & 0x07) |
| 213 | { |
| 214 | // 5.25" |
| 215 | case 0: m_floppy = m_floppy0->get_device(); break; |
| 216 | case 1: m_floppy = m_floppy1->get_device(); break; |
| 217 | case 2: m_floppy = m_floppy2->get_device(); break; |
| 218 | case 3: m_floppy = m_floppy3->get_device(); break; |
| 219 | // 8" |
| 220 | case 4: m_floppy = m_floppy4->get_device(); break; |
| 221 | case 5: m_floppy = m_floppy5->get_device(); break; |
| 222 | case 6: m_floppy = m_floppy6->get_device(); break; |
| 223 | case 7: m_floppy = m_floppy7->get_device(); break; |
| 224 | } |
| 225 | |
| 226 | m_fdc->set_floppy(m_floppy); |
219 | 227 | } |
220 | 228 | |
221 | | m_fdc->set_floppy(m_floppy); |
222 | | |
223 | 229 | if (m_floppy) |
224 | 230 | { |
225 | 231 | // side select |
r20196 | r20197 | |
281 | 287 | |
282 | 288 | */ |
283 | 289 | |
284 | | // FDC clock |
285 | | m_fdc->set_unscaled_clock(BIT(data, 2) ? XTAL_16MHz/16 : XTAL_16MHz/8); |
| 290 | if (BIT(data, 4)) |
| 291 | { |
| 292 | m_hdcon_sw = true; |
| 293 | } |
286 | 294 | |
287 | | // density select |
288 | | m_fdc->dden_w(BIT(data, 3)); |
| 295 | if (m_hdcon_sw) |
| 296 | { |
| 297 | // FDC clock |
| 298 | m_fdc->set_unscaled_clock(BIT(data, 2) ? XTAL_16MHz/8 : XTAL_16MHz/16); |
| 299 | |
| 300 | // density select |
| 301 | m_fdc->dden_w(BIT(data, 3)); |
| 302 | } |
289 | 303 | } |
290 | 304 | |
291 | 305 | |
r20196 | r20197 | |
317 | 331 | |
318 | 332 | // floppy |
319 | 333 | data |= m_fdc->hld_r() << 4; |
320 | | data |= m_floppy ? m_floppy->dskchg_r() : 1; |
| 334 | data |= (m_floppy ? m_floppy->dskchg_r() : 1) << 5; |
321 | 335 | data |= m_fdc->intrq_r() << 6; |
322 | 336 | data |= m_fdc->drq_r() << 7; |
323 | 337 | |
r20196 | r20197 | |
667 | 681 | PORT_DIPNAME( 0xf0, 0x50, "Floppy Type" ) PORT_DIPLOCATION("SW1:5,6,7,8") |
668 | 682 | PORT_DIPSETTING( 0xf0, "5.25\" SD" ) |
669 | 683 | PORT_DIPSETTING( 0x50, "5.25\" DD" ) |
670 | | PORT_DIPSETTING( 0x60, "8\" SD" ) |
| 684 | PORT_DIPSETTING( 0x90, "8\" SD" ) |
671 | 685 | PORT_DIPSETTING( 0x00, "8\" DD" ) |
672 | 686 | INPUT_PORTS_END |
673 | 687 | |
r20196 | r20197 | |
1029 | 1043 | static SLOT_INTERFACE_START( bullet_35_floppies ) |
1030 | 1044 | SLOT_INTERFACE( "35dd", FLOPPY_35_DD ) |
1031 | 1045 | SLOT_INTERFACE_END |
| 1046 | |
1032 | 1047 | void bullet_state::fdc_intrq_w(bool state) |
1033 | 1048 | { |
1034 | 1049 | z80dart_dcda_w(m_dart, state); |
r20196 | r20197 | |
1095 | 1110 | void bullet_state::machine_start() |
1096 | 1111 | { |
1097 | 1112 | // floppy callbacks |
1098 | | m_fdc->setup_intrq_cb(mb8877_t::line_cb(FUNC(bullet_state::fdc_intrq_w), this)); |
1099 | | m_fdc->setup_drq_cb(mb8877_t::line_cb(FUNC(bullet_state::fdc_drq_w), this)); |
| 1113 | m_fdc->setup_intrq_cb(wd_fdc_t::line_cb(FUNC(bullet_state::fdc_intrq_w), this)); |
| 1114 | m_fdc->setup_drq_cb(wd_fdc_t::line_cb(FUNC(bullet_state::fdc_drq_w), this)); |
1100 | 1115 | |
1101 | 1116 | // state saving |
1102 | 1117 | save_item(NAME(m_segst)); |
r20196 | r20197 | |
1119 | 1134 | void bulletf_state::machine_start() |
1120 | 1135 | { |
1121 | 1136 | // floppy callbacks |
1122 | | m_fdc->setup_intrq_cb(mb8877_t::line_cb(FUNC(bulletf_state::fdc_intrq_w), this)); |
1123 | | m_fdc->setup_drq_cb(mb8877_t::line_cb(FUNC(bulletf_state::fdc_drq_w), this)); |
| 1137 | m_fdc->setup_intrq_cb(wd_fdc_t::line_cb(FUNC(bulletf_state::fdc_intrq_w), this)); |
| 1138 | m_fdc->setup_drq_cb(wd_fdc_t::line_cb(FUNC(bulletf_state::fdc_drq_w), this)); |
1124 | 1139 | |
1125 | 1140 | // state saving |
1126 | 1141 | save_item(NAME(m_fdrdy)); |
r20196 | r20197 | |
1146 | 1161 | m_exdma = 0; |
1147 | 1162 | m_buf = 0; |
1148 | 1163 | update_dma_rdy(); |
| 1164 | |
| 1165 | // disable software control |
| 1166 | m_exdsk_sw = false; |
| 1167 | m_hdcon_sw = false; |
| 1168 | |
| 1169 | UINT8 sw1 = m_sw1->read(); |
| 1170 | int mini = BIT(sw1, 6); |
| 1171 | m_fdc->set_unscaled_clock(mini ? XTAL_16MHz/16 : XTAL_16MHz/8); |
| 1172 | m_fdc->dden_w(BIT(sw1, 7)); |
| 1173 | |
| 1174 | if (mini) |
| 1175 | { |
| 1176 | m_floppy = m_floppy0->get_device(); |
| 1177 | } |
| 1178 | else |
| 1179 | { |
| 1180 | m_floppy = m_floppy4->get_device(); |
| 1181 | } |
| 1182 | |
| 1183 | m_fdc->set_floppy(m_floppy); |
| 1184 | |
| 1185 | if (m_floppy) |
| 1186 | { |
| 1187 | m_floppy->ss_w(0); |
| 1188 | m_floppy->mon_w(0); |
| 1189 | } |
1149 | 1190 | } |
1150 | 1191 | |
1151 | 1192 | |
r20196 | r20197 | |
1167 | 1208 | } |
1168 | 1209 | |
1169 | 1210 | |
| 1211 | |
1170 | 1212 | //************************************************************************** |
1171 | 1213 | // MACHINE CONFIGURATION |
1172 | 1214 | //************************************************************************** |
r20196 | r20197 | |
1188 | 1230 | MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, dart_intf) |
1189 | 1231 | MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_16MHz/4, dma_intf) |
1190 | 1232 | MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_16MHz/4, pio_intf) |
1191 | | MCFG_MB8877x_ADD(MB8877_TAG, XTAL_16MHz/8) |
| 1233 | MCFG_MB8877x_ADD(MB8877_TAG, XTAL_16MHz/16) |
1192 | 1234 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":0", bullet_525_floppies, "525qd", NULL, floppy_image_device::default_floppy_formats) |
1193 | 1235 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":1", bullet_525_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) |
1194 | 1236 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":2", bullet_525_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) |
r20196 | r20197 | |
1198 | 1240 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":6", bullet_8_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) |
1199 | 1241 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":7", bullet_8_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) |
1200 | 1242 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
1201 | | MCFG_SERIAL_TERMINAL_ADD(TERMINAL_TAG, terminal_intf, 4800) |
| 1243 | MCFG_SERIAL_TERMINAL_ADD(TERMINAL_TAG, terminal_intf, 9600) |
1202 | 1244 | |
1203 | 1245 | // software lists |
1204 | 1246 | MCFG_SOFTWARE_LIST_ADD("flop_list", "wmbullet") |
r20196 | r20197 | |
1226 | 1268 | MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, dart_intf) |
1227 | 1269 | MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_16MHz/4, dma_intf) |
1228 | 1270 | MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_16MHz/4, bulletf_pio_intf) |
1229 | | MCFG_MB8877x_ADD(MB8877_TAG, XTAL_16MHz/8) |
| 1271 | MCFG_MB8877x_ADD(MB8877_TAG, XTAL_16MHz/16) |
1230 | 1272 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":0", bullet_525_floppies, "525qd", NULL, floppy_image_device::default_floppy_formats) |
1231 | 1273 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":1", bullet_525_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) |
1232 | 1274 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":2", bullet_525_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) |
r20196 | r20197 | |
1238 | 1280 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":8", bullet_35_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) |
1239 | 1281 | MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":9", bullet_35_floppies, NULL, NULL, floppy_image_device::default_floppy_formats) |
1240 | 1282 | MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics) |
1241 | | MCFG_SERIAL_TERMINAL_ADD(TERMINAL_TAG, terminal_intf, 4800) |
| 1283 | MCFG_SERIAL_TERMINAL_ADD(TERMINAL_TAG, terminal_intf, 9600) |
1242 | 1284 | |
1243 | 1285 | MCFG_SCSIBUS_ADD(SCSIBUS_TAG) |
1244 | 1286 | MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0) |