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