trunk/src/mess/machine/b2m.c
| r19510 | r19511 | |
| 200 | 200 | DEVCB_DRIVER_MEMBER(b2m_state,b2m_8255_portc_w) |
| 201 | 201 | }; |
| 202 | 202 | |
| 203 | void b2m_state::b2m_fdc_drq(bool state) |
| 204 | { |
| 205 | /* Clears HALT state of CPU when data is ready to read */ |
| 206 | if(state==1) { |
| 207 | m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); |
| 208 | } |
| 209 | } |
| 203 | 210 | |
| 204 | 211 | |
| 205 | 212 | WRITE8_MEMBER(b2m_state::b2m_ext_8255_portc_w) |
| r19510 | r19511 | |
| 215 | 222 | |
| 216 | 223 | floppy->mon_w(0); |
| 217 | 224 | m_fdc->set_floppy(floppy); |
| 225 | m_fdc->setup_drq_cb(fd1793_t::line_cb(FUNC(b2m_state::b2m_fdc_drq), this)); |
| 218 | 226 | if (m_b2m_drive!=drive) { |
| 219 | 227 | m_b2m_drive = drive; |
| 220 | 228 | } |
| r19510 | r19511 | |
| 222 | 230 | if (m_b2m_side!=side) { |
| 223 | 231 | m_b2m_side = side; |
| 224 | 232 | } |
| 233 | /* |
| 234 | When bit 5 is set CPU is in HALT state and stay there until |
| 235 | DRQ is triggered from floppy side |
| 236 | */ |
| 237 | if (BIT(data,5) && m_first_start==0 && m_cnt <=0) { |
| 238 | m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); |
| 239 | } |
| 240 | m_first_start = 0; |
| 241 | if (BIT(data,5)) m_cnt--; |
| 242 | |
| 225 | 243 | } |
| 226 | 244 | |
| 227 | 245 | I8255A_INTERFACE( b2m_ppi8255_interface_2 ) |
| r19510 | r19511 | |
| 312 | 330 | void b2m_state::machine_start() |
| 313 | 331 | { |
| 314 | 332 | m_pic = machine().device("pic8259"); |
| 315 | | m_fdc = machine().device<wd1773_t>("wd1793"); |
| 333 | m_fdc = machine().device<fd1793_t>("fd1793"); |
| 316 | 334 | m_speaker = machine().device(SPEAKER_TAG); |
| 317 | 335 | |
| 318 | 336 | /* register for state saving */ |
| r19510 | r19511 | |
| 358 | 376 | |
| 359 | 377 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(b2m_irq_callback); |
| 360 | 378 | b2m_set_bank(machine(), 7); |
| 379 | m_first_start = 1; |
| 380 | m_cnt = 2; |
| 361 | 381 | } |
trunk/src/mess/includes/b2m.h
| r19510 | r19511 | |
| 18 | 18 | { |
| 19 | 19 | public: |
| 20 | 20 | b2m_state(const machine_config &mconfig, device_type type, const char *tag) |
| 21 | | : driver_device(mconfig, type, tag) { } |
| 21 | : driver_device(mconfig, type, tag), |
| 22 | m_first_start(1), |
| 23 | m_cnt(3), |
| 24 | m_maincpu(*this, "maincpu") { } |
| 22 | 25 | |
| 23 | 26 | UINT8 m_b2m_8255_porta; |
| 24 | 27 | UINT8 m_b2m_video_scroll; |
| r19510 | r19511 | |
| 34 | 37 | UINT8 m_b2m_color[4]; |
| 35 | 38 | UINT8 m_b2m_localmachine; |
| 36 | 39 | UINT8 m_vblank_state; |
| 40 | int m_first_start; |
| 41 | int m_cnt; |
| 42 | required_device<cpu_device> m_maincpu; |
| 37 | 43 | |
| 38 | 44 | /* devices */ |
| 39 | | wd1773_t *m_fdc; |
| 45 | fd1793_t *m_fdc; |
| 40 | 46 | device_t *m_pic; |
| 41 | 47 | device_t *m_speaker; |
| 42 | 48 | DECLARE_READ8_MEMBER(b2m_keyboard_r); |
| r19510 | r19511 | |
| 61 | 67 | DECLARE_WRITE8_MEMBER(b2m_romdisk_portb_w); |
| 62 | 68 | DECLARE_WRITE8_MEMBER(b2m_romdisk_portc_w); |
| 63 | 69 | DECLARE_WRITE_LINE_MEMBER(b2m_pic_set_int_line); |
| 70 | void b2m_fdc_drq(bool state); |
| 64 | 71 | }; |
| 65 | 72 | |
| 66 | 73 | /*----------- defined in machine/b2m.c -----------*/ |
trunk/src/mess/drivers/b2m.c
| r19510 | r19511 | |
| 38 | 38 | AM_RANGE(0x14, 0x15) AM_DEVREADWRITE_LEGACY("pic8259", pic8259_r, pic8259_w ) |
| 39 | 39 | AM_RANGE(0x18, 0x18) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) |
| 40 | 40 | AM_RANGE(0x19, 0x19) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) |
| 41 | | AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("wd1793", wd1773_t, read, write) |
| 41 | AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("fd1793", fd1793_t, read, write) |
| 42 | 42 | ADDRESS_MAP_END |
| 43 | 43 | |
| 44 | 44 | static ADDRESS_MAP_START( b2m_rom_io, AS_IO, 8, b2m_state ) |
| r19510 | r19511 | |
| 224 | 224 | /* uart */ |
| 225 | 225 | MCFG_I8251_ADD("uart", default_i8251_interface) |
| 226 | 226 | |
| 227 | | MCFG_WD1773x_ADD("wd1793", XTAL_8MHz ) |
| 227 | MCFG_FD1793x_ADD("fd1793", XTAL_8MHz / 8) |
| 228 | 228 | |
| 229 | 229 | MCFG_FLOPPY_DRIVE_ADD("fd0", b2m_floppies, "525dd", 0, floppy_image_device::default_floppy_formats) |
| 230 | 230 | MCFG_FLOPPY_DRIVE_ADD("fd1", b2m_floppies, "525dd", 0, floppy_image_device::default_floppy_formats) |