trunk/src/mess/drivers/lviv.c
| r26775 | r26776 | |
| 402 | 402 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 403 | 403 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| 404 | 404 | PORT_START("RESET") /* CPU */ |
| 405 | | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) |
| 405 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Reset") PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(PGDN)) PORT_CHANGED_MEMBER(DEVICE_SELF, lviv_state, lviv_reset, 0) |
| 406 | 406 | PORT_START("JOY") /* Joystick */ |
| 407 | 407 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) |
| 408 | 408 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) |
trunk/src/mess/drivers/pmd85.c
| r26775 | r26776 | |
| 418 | 418 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 419 | 419 | |
| 420 | 420 | PORT_START("RESET") /* port 0x10 */ |
| 421 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RST") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) |
| 421 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RST") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) PORT_CHANGED_MEMBER(DEVICE_SELF, pmd85_state, pmd85_reset, 0) |
| 422 | 422 | |
| 423 | 423 | PORT_START("DSW0") /* port 0x11 */ |
| 424 | 424 | PORT_CONFNAME( 0x01, 0x00, "Basic ROM Module" ) |
| r26775 | r26776 | |
| 521 | 521 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Continue") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RCONTROL)) |
| 522 | 522 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 523 | 523 | PORT_START("RESET") /* port 0x09 */ |
| 524 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RST") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) |
| 524 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RST") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) PORT_CHANGED_MEMBER(DEVICE_SELF, pmd85_state, pmd85_reset, 0) |
| 525 | 525 | INPUT_PORTS_END |
| 526 | 526 | |
| 527 | 527 | |
trunk/src/mess/machine/lviv.c
| r26775 | r26776 | |
| 40 | 40 | } |
| 41 | 41 | } |
| 42 | 42 | |
| 43 | | void lviv_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) |
| 43 | INPUT_CHANGED_MEMBER(lviv_state::lviv_reset) |
| 44 | 44 | { |
| 45 | | switch (id) |
| 46 | | { |
| 47 | | case TIMER_RESET: |
| 48 | | machine().schedule_soft_reset(); |
| 49 | | break; |
| 50 | | default: |
| 51 | | assert_always(FALSE, "Unknown id in lviv_state::device_timer"); |
| 52 | | } |
| 45 | machine().schedule_soft_reset(); |
| 53 | 46 | } |
| 54 | 47 | |
| 55 | | DIRECT_UPDATE_MEMBER(lviv_state::lviv_directoverride) |
| 56 | | { |
| 57 | | if (ioport("RESET")->read() & 0x01) |
| 58 | | timer_set(attotime::from_usec(10), TIMER_RESET); |
| 59 | | return address; |
| 60 | | } |
| 61 | | |
| 62 | 48 | READ8_MEMBER(lviv_state::lviv_ppi_0_porta_r) |
| 63 | 49 | { |
| 64 | 50 | return 0xff; |
| r26775 | r26776 | |
| 231 | 217 | address_space &space = m_maincpu->space(AS_PROGRAM); |
| 232 | 218 | UINT8 *mem; |
| 233 | 219 | |
| 234 | | space.set_direct_update_handler(direct_update_delegate(FUNC(lviv_state::lviv_directoverride), this)); |
| 235 | | |
| 236 | 220 | m_video_ram = m_ram->pointer() + 0xc000; |
| 237 | 221 | |
| 238 | 222 | m_startup_mem_map = 1; |
trunk/src/mess/machine/pmd85.c
| r26775 | r26776 | |
| 759 | 759 | case TIMER_CASSETTE: |
| 760 | 760 | pmd85_cassette_timer_callback(ptr, param); |
| 761 | 761 | break; |
| 762 | | case TIMER_RESET: |
| 763 | | pmd_reset(ptr, param); |
| 764 | | break; |
| 765 | 762 | default: |
| 766 | 763 | assert_always(FALSE, "Unknown id in pmd85_state::device_timer"); |
| 767 | 764 | } |
| r26775 | r26776 | |
| 838 | 835 | } |
| 839 | 836 | } |
| 840 | 837 | |
| 841 | | TIMER_CALLBACK_MEMBER(pmd85_state::pmd_reset) |
| 838 | INPUT_CHANGED_MEMBER(pmd85_state::pmd85_reset) |
| 842 | 839 | { |
| 843 | 840 | machine().schedule_soft_reset(); |
| 844 | 841 | } |
| 845 | 842 | |
| 846 | | DIRECT_UPDATE_MEMBER(pmd85_state::pmd85_opbaseoverride) |
| 847 | | { |
| 848 | | if (m_io_reset->read() & 0x01) |
| 849 | | timer_set(attotime::from_usec(10), TIMER_RESET); |
| 850 | | return address; |
| 851 | | } |
| 852 | | |
| 853 | 843 | void pmd85_state::pmd85_common_driver_init() |
| 854 | 844 | { |
| 855 | 845 | static const char *const keynames[] = { |
| r26775 | r26776 | |
| 949 | 939 | m_pmd853_memory_mapping = 1; |
| 950 | 940 | m_startup_mem_map = 1; |
| 951 | 941 | (this->*update_memory)(); |
| 952 | | |
| 953 | | m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(pmd85_state::pmd85_opbaseoverride), this)); |
| 954 | 942 | } |
trunk/src/mess/includes/pmd85.h
| r26775 | r26776 | |
| 19 | 19 | public: |
| 20 | 20 | enum |
| 21 | 21 | { |
| 22 | | TIMER_CASSETTE, |
| 23 | | TIMER_RESET |
| 22 | TIMER_CASSETTE |
| 24 | 23 | }; |
| 25 | 24 | |
| 26 | 25 | pmd85_state(const machine_config &mconfig, device_type type, const char *tag) |
| r26775 | r26776 | |
| 51 | 50 | m_bank14(*this, "bank14"), |
| 52 | 51 | m_bank15(*this, "bank15"), |
| 53 | 52 | m_bank16(*this, "bank16"), |
| 54 | | m_io_reset(*this, "RESET"), |
| 55 | 53 | m_io_dsw0(*this, "DSW0") { } |
| 56 | 54 | |
| 57 | 55 | UINT8 m_rom_module_present; |
| r26775 | r26776 | |
| 68 | 66 | DECLARE_WRITE8_MEMBER(pmd85_io_w); |
| 69 | 67 | DECLARE_READ8_MEMBER(mato_io_r); |
| 70 | 68 | DECLARE_WRITE8_MEMBER(mato_io_w); |
| 71 | | DECLARE_DIRECT_UPDATE_MEMBER(pmd85_opbaseoverride); |
| 72 | 69 | DECLARE_DRIVER_INIT(mato); |
| 73 | 70 | DECLARE_DRIVER_INIT(pmd852a); |
| 74 | 71 | DECLARE_DRIVER_INIT(pmd851); |
| r26775 | r26776 | |
| 80 | 77 | virtual void palette_init(); |
| 81 | 78 | UINT32 screen_update_pmd85(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 82 | 79 | TIMER_CALLBACK_MEMBER(pmd85_cassette_timer_callback); |
| 83 | | TIMER_CALLBACK_MEMBER(pmd_reset); |
| 84 | 80 | DECLARE_WRITE_LINE_MEMBER(write_cas_tx); |
| 85 | 81 | DECLARE_READ8_MEMBER(pmd85_ppi_0_porta_r); |
| 86 | 82 | DECLARE_READ8_MEMBER(pmd85_ppi_0_portb_r); |
| r26775 | r26776 | |
| 109 | 105 | DECLARE_WRITE8_MEMBER(pmd85_ppi_3_porta_w); |
| 110 | 106 | DECLARE_WRITE8_MEMBER(pmd85_ppi_3_portb_w); |
| 111 | 107 | DECLARE_WRITE8_MEMBER(pmd85_ppi_3_portc_w); |
| 108 | DECLARE_INPUT_CHANGED_MEMBER(pmd85_reset); |
| 112 | 109 | |
| 113 | 110 | protected: |
| 114 | 111 | required_device<cpu_device> m_maincpu; |
| r26775 | r26776 | |
| 137 | 134 | optional_memory_bank m_bank14; |
| 138 | 135 | optional_memory_bank m_bank15; |
| 139 | 136 | optional_memory_bank m_bank16; |
| 140 | | required_ioport m_io_reset; |
| 141 | 137 | optional_ioport m_io_dsw0; |
| 142 | 138 | ioport_port *m_io_port[16]; |
| 143 | 139 | |
trunk/src/mess/includes/lviv.h
| r26775 | r26776 | |
| 16 | 16 | class lviv_state : public driver_device |
| 17 | 17 | { |
| 18 | 18 | public: |
| 19 | | enum |
| 20 | | { |
| 21 | | TIMER_RESET |
| 22 | | }; |
| 23 | | |
| 24 | 19 | lviv_state(const machine_config &mconfig, device_type type, const char *tag) |
| 25 | 20 | : driver_device(mconfig, type, tag), |
| 26 | 21 | m_maincpu(*this, "maincpu"), |
| r26775 | r26776 | |
| 34 | 29 | UINT8 m_startup_mem_map; |
| 35 | 30 | DECLARE_READ8_MEMBER(lviv_io_r); |
| 36 | 31 | DECLARE_WRITE8_MEMBER(lviv_io_w); |
| 37 | | DECLARE_DIRECT_UPDATE_MEMBER(lviv_directoverride); |
| 38 | 32 | virtual void machine_reset(); |
| 39 | 33 | virtual void video_start(); |
| 40 | 34 | virtual void palette_init(); |
| r26775 | r26776 | |
| 61 | 55 | void dump_registers(); |
| 62 | 56 | int lviv_verify_snapshot (UINT8 * data, UINT32 size); |
| 63 | 57 | DECLARE_SNAPSHOT_LOAD_MEMBER( lviv ); |
| 64 | | |
| 65 | | protected: |
| 66 | | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |
| 58 | DECLARE_INPUT_CHANGED_MEMBER(lviv_reset); |
| 67 | 59 | }; |
| 68 | 60 | |
| 69 | 61 | |