trunk/src/mess/drivers/dim68k.c
| r23817 | r23818 | |
| 35 | 35 | #include "cpu/m68000/m68000.h" |
| 36 | 36 | #include "sound/speaker.h" |
| 37 | 37 | #include "video/mc6845.h" |
| 38 | #include "machine/keyboard.h" |
| 39 | #include "machine/upd765.h" |
| 38 | 40 | |
| 39 | 41 | |
| 40 | 42 | class dim68k_state : public driver_device |
| r23817 | r23818 | |
| 42 | 44 | public: |
| 43 | 45 | dim68k_state(const machine_config &mconfig, device_type type, const char *tag) |
| 44 | 46 | : driver_device(mconfig, type, tag), |
| 45 | | m_maincpu(*this, "maincpu"), |
| 46 | | m_crtc(*this, "crtc"), |
| 47 | | m_speaker(*this, "speaker") |
| 48 | | , |
| 47 | m_maincpu(*this, "maincpu"), |
| 48 | m_crtc(*this, "crtc"), |
| 49 | m_speaker(*this, "speaker"), |
| 49 | 50 | m_ram(*this, "ram"){ } |
| 50 | 51 | |
| 51 | | required_device<cpu_device> m_maincpu; |
| 52 | | required_device<mc6845_device> m_crtc; |
| 53 | | required_device<speaker_sound_device> m_speaker; |
| 54 | 52 | DECLARE_READ16_MEMBER( dim68k_duart_r ); |
| 55 | 53 | DECLARE_READ16_MEMBER( dim68k_fdc_r ); |
| 56 | 54 | DECLARE_READ16_MEMBER( dim68k_game_switches_r ); |
| r23817 | r23818 | |
| 64 | 62 | DECLARE_WRITE16_MEMBER( dim68k_video_control_w ); |
| 65 | 63 | DECLARE_WRITE16_MEMBER( dim68k_video_high_w ); |
| 66 | 64 | DECLARE_WRITE16_MEMBER( dim68k_video_reset_w ); |
| 67 | | required_shared_ptr<UINT16> m_ram; |
| 65 | DECLARE_WRITE8_MEMBER(kbd_put); |
| 68 | 66 | const UINT8 *m_p_chargen; |
| 69 | 67 | bool m_speaker_bit; |
| 70 | 68 | UINT8 m_video_control; |
| 69 | UINT8 m_term_data; |
| 71 | 70 | virtual void machine_reset(); |
| 72 | 71 | virtual void video_start(); |
| 72 | required_device<cpu_device> m_maincpu; |
| 73 | required_device<mc6845_device> m_crtc; |
| 74 | required_device<speaker_sound_device> m_speaker; |
| 75 | required_shared_ptr<UINT16> m_ram; |
| 73 | 76 | }; |
| 74 | 77 | |
| 75 | 78 | READ16_MEMBER( dim68k_state::dim68k_duart_r ) |
| r23817 | r23818 | |
| 78 | 81 | // Device = SCN2681, not emulated. The keyboard is standard ASCII, so we can use the terminal |
| 79 | 82 | // keyboard for now. |
| 80 | 83 | { |
| 84 | if (offset==3) |
| 85 | return m_term_data; |
| 86 | else |
| 81 | 87 | return 0; |
| 82 | 88 | } |
| 83 | 89 | |
| r23817 | r23818 | |
| 187 | 193 | AM_RANGE(0x00ffc400, 0x00ffc41f) AM_READWRITE(dim68k_duart_r,dim68k_duart_w) // Signetics SCN2681AC1N40 Dual UART |
| 188 | 194 | AM_RANGE(0x00ffc800, 0x00ffc801) AM_READWRITE(dim68k_speaker_r,dim68k_speaker_w) |
| 189 | 195 | AM_RANGE(0x00ffcc00, 0x00ffcc1f) AM_READWRITE(dim68k_game_switches_r,dim68k_reset_timers_w) |
| 190 | | AM_RANGE(0x00ffd000, 0x00ffd005) AM_READWRITE(dim68k_fdc_r,dim68k_fdc_w) // NEC uPD765A |
| 196 | AM_RANGE(0x00ffd000, 0x00ffd003) AM_DEVICE8("fdc",upd765a_device,map,0x00ff) // NEC uPD765A |
| 197 | AM_RANGE(0x00ffd004, 0x00ffd005) AM_READWRITE(dim68k_fdc_r,dim68k_fdc_w) |
| 191 | 198 | //AM_RANGE(0x00ffd400, 0x00ffd403) emulation trap control |
| 192 | 199 | AM_RANGE(0x00ffd800, 0x00ffd801) AM_WRITE(dim68k_printer_strobe_w) |
| 193 | 200 | AM_RANGE(0x00ffdc00, 0x00ffdc01) AM_WRITE(dim68k_banksw_w) |
| r23817 | r23818 | |
| 298 | 305 | NULL |
| 299 | 306 | }; |
| 300 | 307 | |
| 308 | static SLOT_INTERFACE_START( dim68k_floppies ) |
| 309 | SLOT_INTERFACE( "525hd", FLOPPY_525_HD ) |
| 310 | SLOT_INTERFACE_END |
| 311 | |
| 312 | WRITE8_MEMBER( dim68k_state::kbd_put ) |
| 313 | { |
| 314 | m_term_data = data; |
| 315 | } |
| 316 | |
| 317 | static ASCII_KEYBOARD_INTERFACE( kb_intf ) |
| 318 | { |
| 319 | DEVCB_DRIVER_MEMBER(dim68k_state, kbd_put) |
| 320 | }; |
| 321 | |
| 301 | 322 | static MACHINE_CONFIG_START( dim68k, dim68k_state ) |
| 302 | 323 | /* basic machine hardware */ |
| 303 | 324 | MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz) |
| r23817 | r23818 | |
| 320 | 341 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 321 | 342 | |
| 322 | 343 | /* Devices */ |
| 344 | MCFG_UPD765A_ADD("fdc", true, true) // these options unknown |
| 345 | MCFG_FLOPPY_DRIVE_ADD("fdc:0", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats) |
| 346 | MCFG_FLOPPY_DRIVE_ADD("fdc:1", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats) |
| 323 | 347 | MCFG_MC6845_ADD("crtc", MC6845, 1790000, dim68k_crtc) |
| 348 | MCFG_ASCII_KEYBOARD_ADD("keyboard", kb_intf) |
| 324 | 349 | MACHINE_CONFIG_END |
| 325 | 350 | |
| 326 | 351 | /* |