trunk/src/mess/includes/pc4.h
| r21100 | r21101 | |
| 16 | 16 | { |
| 17 | 17 | public: |
| 18 | 18 | pc4_state(const machine_config &mconfig, device_type type, const char *tag) |
| 19 | | : driver_device(mconfig, type, tag), |
| 20 | | m_maincpu(*this, "maincpu"), |
| 21 | | m_beep(*this, BEEPER_TAG) |
| 22 | | { } |
| 19 | : driver_device(mconfig, type, tag) |
| 20 | , m_maincpu(*this, "maincpu") |
| 21 | , m_beep(*this, BEEPER_TAG) |
| 22 | , m_region_charset(*this, "charset") |
| 23 | , m_rombank(*this, "rombank") |
| 24 | { } |
| 23 | 25 | |
| 24 | 26 | required_device<cpu_device> m_maincpu; |
| 25 | 27 | required_device<beep_device> m_beep; |
| r21100 | r21101 | |
| 63 | 65 | INT8 m_direction; |
| 64 | 66 | UINT8 m_blink; |
| 65 | 67 | virtual void palette_init(); |
| 68 | |
| 69 | protected: |
| 70 | required_memory_region m_region_charset; |
| 71 | required_memory_bank m_rombank; |
| 72 | ioport_port *io_port[8]; |
| 66 | 73 | }; |
| 67 | 74 | |
| 68 | 75 | #endif // _PC4_H_ |
trunk/src/mess/drivers/pc4.c
| r21100 | r21101 | |
| 31 | 31 | |
| 32 | 32 | READ8_MEMBER( pc4_state::kb_r ) |
| 33 | 33 | { |
| 34 | | static const char *const bitnames[] = {"LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7"}; |
| 35 | 34 | UINT8 data = 0xff; |
| 36 | 35 | |
| 37 | 36 | for (int line=0; line<8; line++) |
| 37 | { |
| 38 | 38 | if (!(offset & (1<<line))) |
| 39 | | data &= ioport(bitnames[line])->read(); |
| 39 | { |
| 40 | data &= io_port[line]->read(); |
| 41 | } |
| 42 | } |
| 40 | 43 | |
| 41 | 44 | return data; |
| 42 | 45 | } |
| r21100 | r21101 | |
| 44 | 47 | WRITE8_MEMBER( pc4_state::bank_w ) |
| 45 | 48 | { |
| 46 | 49 | //printf("set bank %x\n", data); |
| 47 | | membank("rombank")->set_entry(data&0x07); |
| 50 | m_rombank->set_entry(data&0x07); |
| 48 | 51 | } |
| 49 | 52 | |
| 50 | 53 | WRITE8_MEMBER( pc4_state::beep_w ) |
| r21100 | r21101 | |
| 179 | 182 | |
| 180 | 183 | void pc4_state::machine_start() |
| 181 | 184 | { |
| 182 | | UINT8* rom_base = (UINT8 *)machine().root_device().memregion("maincpu")->base(); |
| 185 | static const char *const bitnames[] = {"LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7"}; |
| 186 | UINT8* rom_base = (UINT8 *)memregion("maincpu")->base(); |
| 183 | 187 | |
| 184 | | membank("rombank")->configure_entries(0, 8, rom_base, 0x4000); |
| 185 | | membank("rombank")->set_entry(0); |
| 188 | m_rombank->configure_entries(0, 8, rom_base, 0x4000); |
| 189 | m_rombank->set_entry(0); |
| 186 | 190 | |
| 187 | 191 | m_busy_timer = timer_alloc(BUSY_TIMER); |
| 188 | 192 | m_blink_timer = timer_alloc(BLINKING_TIMER); |
| 189 | 193 | m_blink_timer->adjust(attotime::from_msec(409), 0, attotime::from_msec(409)); |
| 190 | 194 | |
| 195 | for (int i=0; i<8; i++) |
| 196 | { |
| 197 | io_port[i] = ioport(bitnames[i]); |
| 198 | } |
| 199 | |
| 191 | 200 | m_ac = 0; |
| 192 | 201 | m_ac_mode = 0; |
| 193 | 202 | m_data_bus_flag = 0; |