Previous 199869 Revisions Next

r20197 Friday 11th January, 2013 at 15:19:16 UTC by Curt Coder
(MESS) Floppy fixes WIP. (nw)
[hash]c64_cart.xml
[src/emu/machine]wd_fdc.c
[src/mess/drivers]bullet.c trs80m2.c v1050.c
[src/mess/includes]bullet.h

trunk/hash/c64_cart.xml
r20196r20197
2121   RAM expansions:
2222   - CMD RAMLink
2323   - CMD RAMDrive
24   - CMD REU 1750XL
2425   - Commodore REU 1700/1750/1764
2526   - Rex RAM-Floppy 256K
2627   - Rex Goliath 1MB
2728   - RAM-Cart
29   - Silicon Disk System
2830
2931   Hard disks:
3032   - Lt. Kernal
trunk/src/emu/machine/wd_fdc.c
r20196r20197
9494   sub_state = IDLE;
9595   cur_live.state = IDLE;
9696   track = 0x00;
97   sector = 0x00;
97   sector = 0x01;
9898   status = 0x00;
9999   data = 0x00;
100100   cmd_buffer = track_buffer = sector_buffer = -1;
r20196r20197
106106   hld = false;
107107   intrq_cond = 0;
108108   live_abort();
109
110   // restore
111   cmd_w(0x03);
109112}
110113
111114void wd_fdc_t::set_floppy(floppy_image_device *_floppy)
trunk/src/mess/drivers/trs80m2.c
r20196r20197
1010
1111    TODO:
1212
13   - floppy broken
1314    - keyboard CPU ROM
1415    - graphics board
1516    - Tandy 6000 HD
r20196r20197
230231
231232   m_fdc->set_floppy(m_floppy);
232233
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));
235238
239      // motor
240      m_floppy->mon_w(0);
241   }
242
236243   // FM/MFM
237   m_fdc->dden_w(BIT(data, 7));
244   m_fdc->dden_w(!BIT(data, 7));
238245}
239246
240247READ8_MEMBER( trs80m2_state::keyboard_r )
r20196r20197
10031010   MCFG_MC6845_ADD(MC6845_TAG, MC6845, XTAL_12_48MHz/8, mc6845_intf)
10041011
10051012   // devices
1006   MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/8)
1013   MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/4)
10071014   MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_8MHz/2, ctc_intf)
10081015   MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(XTAL_8MHz/2/2))
10091016   MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_8MHz/2, dma_intf)
r20196r20197
10541061   MCFG_MC6845_ADD(MC6845_TAG, MC6845, XTAL_12_48MHz/8, mc6845_intf)
10551062
10561063   // devices
1057   MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/8)
1064   MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/4)
10581065   MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_8MHz/2, ctc_intf)
10591066   MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(XTAL_8MHz/2/2))
10601067   MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_8MHz/2, dma_intf)
r20196r20197
11561163//**************************************************************************
11571164
11581165//    YEAR  NAME        PARENT      COMPAT  MACHINE     INPUT   INIT     COMPANY             FULLNAME        FLAGS
1159COMP( 1979, trs80m2,    0,          0,      trs80m2,    trs80m2, driver_device,     0,      "Tandy Radio Shack",    "TRS-80 Model II",  GAME_NO_SOUND_HW | GAME_IMPERFECT_KEYBOARD )
1166COMP( 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 )
11601167COMP( 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 )
11611168//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 )
11621169//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
r20196r20197
4848
4949    TODO:
5050
51    - revision F boot ROM dump
52    - wmb_org.imd does not load
51   - floppy broken
5352    - z80dart wait/ready
54    - floppy type dips
5553    - Winchester hard disk
5654    - revision E model
5755
r20196r20197
201199
202200   */
203201
204   // drive select
205   m_floppy = NULL;
202   if (BIT(data, 2))
203   {
204      m_exdsk_sw = true;
205   }
206206
207   switch (data & 0x07)
207   if (m_exdsk_sw)
208208   {
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);
219227   }
220228
221   m_fdc->set_floppy(m_floppy);
222
223229   if (m_floppy)
224230   {
225231      // side select
r20196r20197
281287
282288   */
283289
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   }
286294
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   }
289303}
290304
291305
r20196r20197
317331
318332   // floppy
319333   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;
321335   data |= m_fdc->intrq_r() << 6;
322336   data |= m_fdc->drq_r() << 7;
323337
r20196r20197
667681   PORT_DIPNAME( 0xf0, 0x50, "Floppy Type" ) PORT_DIPLOCATION("SW1:5,6,7,8")
668682   PORT_DIPSETTING(    0xf0, "5.25\" SD" )
669683   PORT_DIPSETTING(    0x50, "5.25\" DD" )
670   PORT_DIPSETTING(    0x60, "8\" SD" )
684   PORT_DIPSETTING(    0x90, "8\" SD" )
671685   PORT_DIPSETTING(    0x00, "8\" DD" )
672686INPUT_PORTS_END
673687
r20196r20197
10291043static SLOT_INTERFACE_START( bullet_35_floppies )
10301044   SLOT_INTERFACE( "35dd", FLOPPY_35_DD )
10311045SLOT_INTERFACE_END
1046
10321047void bullet_state::fdc_intrq_w(bool state)
10331048{
10341049   z80dart_dcda_w(m_dart, state);
r20196r20197
10951110void bullet_state::machine_start()
10961111{
10971112   // 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));
11001115
11011116   // state saving
11021117   save_item(NAME(m_segst));
r20196r20197
11191134void bulletf_state::machine_start()
11201135{
11211136   // 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));
11241139
11251140   // state saving
11261141   save_item(NAME(m_fdrdy));
r20196r20197
11461161   m_exdma = 0;
11471162   m_buf = 0;
11481163   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   }
11491190}
11501191
11511192
r20196r20197
11671208}
11681209
11691210
1211
11701212//**************************************************************************
11711213//  MACHINE CONFIGURATION
11721214//**************************************************************************
r20196r20197
11881230   MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, dart_intf)
11891231   MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_16MHz/4, dma_intf)
11901232   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)
11921234   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":0", bullet_525_floppies, "525qd", NULL, floppy_image_device::default_floppy_formats)
11931235   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":1", bullet_525_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
11941236   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":2", bullet_525_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
r20196r20197
11981240   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":6", bullet_8_floppies, NULL, NULL, floppy_image_device::default_floppy_formats)
11991241   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":7", bullet_8_floppies, NULL, NULL, floppy_image_device::default_floppy_formats)
12001242   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)
12021244
12031245   // software lists
12041246   MCFG_SOFTWARE_LIST_ADD("flop_list", "wmbullet")
r20196r20197
12261268   MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, dart_intf)
12271269   MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_16MHz/4, dma_intf)
12281270   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)
12301272   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":0", bullet_525_floppies, "525qd", NULL, floppy_image_device::default_floppy_formats)
12311273   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":1", bullet_525_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
12321274   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":2", bullet_525_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
r20196r20197
12381280   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":8", bullet_35_floppies, NULL, NULL, floppy_image_device::default_floppy_formats)
12391281   MCFG_FLOPPY_DRIVE_ADD(MB8877_TAG":9", bullet_35_floppies, NULL, NULL, floppy_image_device::default_floppy_formats)
12401282   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)
12421284
12431285   MCFG_SCSIBUS_ADD(SCSIBUS_TAG)
12441286   MCFG_SCSIDEV_ADD(SCSIBUS_TAG ":harddisk0", SCSIHD, SCSI_ID_0)
trunk/src/mess/drivers/v1050.c
r20196r20197
9595
9696    TODO:
9797
98   - floppy broken
9899    - write to banked RAM at 0x0000-0x1fff when ROM is active
99100    - real keyboard w/i8049
100101    - keyboard beeper (NE555 wired in strange mix of astable/monostable modes)
r20196r20197
11311132// System Drivers
11321133
11331134//    YEAR  NAME    PARENT  COMPAT  MACHINE INPUT   INIT    COMPANY                     FULLNAME        FLAGS
1134COMP( 1983, v1050,  0,      0,      v1050,  v1050, driver_device,   0,      "Visual Technology Inc",    "Visual 1050",  GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE | GAME_NO_SOUND | GAME_IMPERFECT_KEYBOARD )
1135COMP( 1983, v1050,  0,      0,      v1050,  v1050, driver_device,   0,      "Visual Technology Inc",    "Visual 1050", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE | GAME_NO_SOUND | GAME_IMPERFECT_KEYBOARD )
trunk/src/mess/includes/bullet.h
r20196r20197
4949         m_floppy(NULL),
5050         m_terminal(*this, TERMINAL_TAG),
5151         m_centronics(*this, CENTRONICS_TAG),
52         m_fdrdy(0)
52         m_sw1(*this, "SW1"),
53         m_fdrdy(0),
54         m_exdsk_sw(false),
55         m_hdcon_sw(false)
5356   { }
5457
5558   required_device<cpu_device> m_maincpu;
r20196r20197
6972   floppy_image_device *m_floppy;
7073   required_device<serial_terminal_device> m_terminal;
7174   required_device<centronics_device> m_centronics;
75   required_ioport m_sw1;
7276
7377   virtual void machine_start();
7478   virtual void machine_reset();
r20196r20197
110114   int m_winrdy;
111115   int m_exrdy1;
112116   int m_exrdy2;
117   bool m_exdsk_sw;
118   bool m_hdcon_sw;
113119
114120   TIMER_DEVICE_CALLBACK_MEMBER(ctc_tick);
115121   DECLARE_WRITE_LINE_MEMBER(dart_rxtxca_w);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team