trunk/src/mess/includes/micronic.h
| r20513 | r20514 | |
| 22 | 22 | { |
| 23 | 23 | public: |
| 24 | 24 | micronic_state(const machine_config &mconfig, device_type type, const char *tag) |
| 25 | | : driver_device(mconfig, type, tag), |
| 26 | | m_maincpu(*this, Z80_TAG), |
| 27 | | m_lcdc(*this, HD61830_TAG), |
| 28 | | m_beep(*this, BEEPER_TAG), |
| 29 | | m_rtc(*this, MC146818_TAG), |
| 30 | | m_ram(*this, RAM_TAG) |
| 31 | | , |
| 32 | | m_ram_base(*this, "ram_base"){ } |
| 25 | : driver_device(mconfig, type, tag) |
| 26 | , m_maincpu(*this, Z80_TAG) |
| 27 | , m_lcdc(*this, HD61830_TAG) |
| 28 | , m_beep(*this, BEEPER_TAG) |
| 29 | , m_rtc(*this, MC146818_TAG) |
| 30 | , m_ram(*this, RAM_TAG) |
| 31 | , m_ram_base(*this, "ram_base") |
| 32 | , m_bank1(*this, "bank1") |
| 33 | , m_bit0(*this, "BIT0") |
| 34 | , m_bit1(*this, "BIT1") |
| 35 | , m_bit2(*this, "BIT2") |
| 36 | , m_bit3(*this, "BIT3") |
| 37 | , m_bit4(*this, "BIT4") |
| 38 | , m_bit5(*this, "BIT5") |
| 39 | , m_backbattery(*this, "BACKBATTERY") |
| 40 | , m_mainbattery(*this, "MAINBATTERY") |
| 41 | { } |
| 33 | 42 | |
| 34 | 43 | required_device<cpu_device> m_maincpu; |
| 35 | 44 | required_device<hd61830_device> m_lcdc; |
| r20513 | r20514 | |
| 61 | 70 | bool m_lcd_backlight; |
| 62 | 71 | UINT8 m_status_flag; |
| 63 | 72 | virtual void palette_init(); |
| 73 | |
| 74 | protected: |
| 75 | required_memory_bank m_bank1; |
| 76 | required_ioport m_bit0; |
| 77 | required_ioport m_bit1; |
| 78 | required_ioport m_bit2; |
| 79 | required_ioport m_bit3; |
| 80 | required_ioport m_bit4; |
| 81 | required_ioport m_bit5; |
| 82 | required_ioport m_backbattery; |
| 83 | required_ioport m_mainbattery; |
| 64 | 84 | }; |
| 65 | 85 | |
| 66 | 86 | #endif |
trunk/src/mess/drivers/micronic.c
| r20513 | r20514 | |
| 117 | 117 | |
| 118 | 118 | READ8_MEMBER( micronic_state::keypad_r ) |
| 119 | 119 | { |
| 120 | | static const char *const bitnames[] = {"BIT0", "BIT1", "BIT2", "BIT3", "BIT4", "BIT5"}; |
| 121 | | UINT8 port, bit, data = 0; |
| 120 | UINT8 data = 0; |
| 122 | 121 | |
| 123 | | for (bit = 0; bit < 8; bit++) |
| 122 | for (UINT8 bit = 0; bit < 8; bit++) |
| 123 | { |
| 124 | 124 | if (m_kp_matrix & (1 << bit)) |
| 125 | | for (port = 0; port < 6; port++) |
| 126 | | data |= ioport(bitnames[port])->read() & (0x01 << bit) ? 0x01 << port : 0x00; |
| 125 | { |
| 126 | data |= m_bit0->read() & (0x01 << bit) ? 0x01 : 0x00; |
| 127 | data |= m_bit1->read() & (0x01 << bit) ? 0x02 : 0x00; |
| 128 | data |= m_bit2->read() & (0x01 << bit) ? 0x04 : 0x00; |
| 129 | data |= m_bit3->read() & (0x01 << bit) ? 0x08 : 0x00; |
| 130 | data |= m_bit4->read() & (0x01 << bit) ? 0x10 : 0x00; |
| 131 | data |= m_bit5->read() & (0x01 << bit) ? 0x20 : 0x00; |
| 132 | } |
| 133 | } |
| 127 | 134 | return data; |
| 128 | 135 | } |
| 129 | 136 | |
| r20513 | r20514 | |
| 156 | 163 | |
| 157 | 164 | READ8_MEMBER( micronic_state::irq_flag_r ) |
| 158 | 165 | { |
| 159 | | return (ioport("BACKBATTERY")->read()<<4) | (ioport("MAINBATTERY")->read()<<3) | (keypad_r(space, offset) ? 0 : 1); |
| 166 | return (m_backbattery->read()<<4) | (m_mainbattery->read()<<3) | (keypad_r(space, offset) ? 0 : 1); |
| 160 | 167 | } |
| 161 | 168 | |
| 162 | 169 | WRITE8_MEMBER( micronic_state::bank_select_w ) |
| 163 | 170 | { |
| 164 | 171 | if (data < 2) |
| 165 | 172 | { |
| 166 | | membank("bank1")->set_entry(data); |
| 173 | m_bank1->set_entry(data); |
| 167 | 174 | m_maincpu->space(AS_PROGRAM).unmap_write(0x0000, 0x7fff); |
| 168 | 175 | } |
| 169 | 176 | else |
| 170 | 177 | { |
| 171 | | membank("bank1")->set_entry((data <= m_banks_num) ? data : m_banks_num); |
| 178 | m_bank1->set_entry((data <= m_banks_num) ? data : m_banks_num); |
| 172 | 179 | m_maincpu->space(AS_PROGRAM).install_write_bank(0x0000, 0x7fff, "bank1"); |
| 173 | 180 | } |
| 174 | 181 | } |
| r20513 | r20514 | |
| 329 | 336 | void micronic_state::machine_start() |
| 330 | 337 | { |
| 331 | 338 | /* ROM banks */ |
| 332 | | membank("bank1")->configure_entries(0x00, 0x02, memregion(Z80_TAG)->base(), 0x10000); |
| 339 | m_bank1->configure_entries(0x00, 0x02, memregion(Z80_TAG)->base(), 0x10000); |
| 333 | 340 | |
| 334 | 341 | /* RAM banks */ |
| 335 | 342 | m_banks_num = (m_ram->size()>>15) + 1; |
| 336 | | membank("bank1")->configure_entries(0x02, m_banks_num - 1, m_ram->pointer(), 0x8000); |
| 343 | m_bank1->configure_entries(0x02, m_banks_num - 1, m_ram->pointer(), 0x8000); |
| 337 | 344 | |
| 338 | 345 | /* register for state saving */ |
| 339 | 346 | // save_item(NAME(state->)); |
| r20513 | r20514 | |
| 341 | 348 | |
| 342 | 349 | void micronic_state::machine_reset() |
| 343 | 350 | { |
| 344 | | membank("bank1")->set_entry(0); |
| 351 | m_bank1->set_entry(0); |
| 345 | 352 | m_maincpu->space(AS_PROGRAM).unmap_write(0x0000, 0x7fff); |
| 346 | 353 | } |
| 347 | 354 | |