trunk/src/mess/drivers/alphasma.c
| r20238 | r20239 | |
| 21 | 21 | public: |
| 22 | 22 | alphasmart_state(const machine_config &mconfig, device_type type, const char *tag) |
| 23 | 23 | : driver_device(mconfig, type, tag), |
| 24 | | m_maincpu(*this, "maincpu") |
| 24 | m_maincpu(*this, "maincpu"), |
| 25 | m_lcdc(*this, "hd44780"), |
| 26 | m_rambank(*this, "rambank") |
| 25 | 27 | { } |
| 26 | 28 | |
| 27 | 29 | required_device<cpu_device> m_maincpu; |
| 30 | required_device<hd44780_device> m_lcdc; |
| 31 | required_memory_bank m_rambank; |
| 28 | 32 | |
| 29 | 33 | DECLARE_WRITE8_MEMBER(vram_w); |
| 30 | 34 | |
| 31 | 35 | virtual void machine_start(); |
| 36 | virtual void machine_reset(); |
| 32 | 37 | virtual void palette_init(); |
| 33 | | // virtual UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 38 | |
| 39 | DECLARE_READ8_MEMBER(port_a_r); |
| 40 | DECLARE_WRITE8_MEMBER(port_a_w); |
| 41 | DECLARE_READ8_MEMBER(port_d_r); |
| 42 | DECLARE_WRITE8_MEMBER(port_d_w); |
| 43 | |
| 44 | private: |
| 45 | UINT8 m_port_a; |
| 34 | 46 | }; |
| 35 | 47 | |
| 48 | READ8_MEMBER(alphasmart_state::port_a_r) |
| 49 | { |
| 50 | return m_port_a; |
| 51 | } |
| 36 | 52 | |
| 53 | WRITE8_MEMBER(alphasmart_state::port_a_w) |
| 54 | { |
| 55 | m_rambank->set_entry(((data>>3) & 0x01) | ((data>>4) & 0x02)); |
| 56 | m_port_a = data; |
| 57 | } |
| 58 | |
| 59 | READ8_MEMBER(alphasmart_state::port_d_r) |
| 60 | { |
| 61 | return 0; |
| 62 | } |
| 63 | |
| 64 | WRITE8_MEMBER(alphasmart_state::port_d_w) |
| 65 | { |
| 66 | |
| 67 | } |
| 68 | |
| 69 | |
| 37 | 70 | static ADDRESS_MAP_START(alphasmart_mem, AS_PROGRAM, 8, alphasmart_state) |
| 38 | 71 | ADDRESS_MAP_UNMAP_HIGH |
| 39 | | AM_RANGE( 0x0000, 0x7fff ) AM_RAM |
| 72 | AM_RANGE( 0x0000, 0x7fff ) AM_RAMBANK("rambank") |
| 40 | 73 | AM_RANGE( 0x8000, 0xffff ) AM_ROM AM_REGION("maincpu", 0) |
| 41 | 74 | ADDRESS_MAP_END |
| 42 | 75 | |
| 43 | 76 | static ADDRESS_MAP_START(alphasmart_io, AS_IO, 8, alphasmart_state) |
| 44 | 77 | // AM_RANGE(MC68HC11_IO_PORTA, MC68HC11_IO_PORTA) AM_DEVREADWRITE("hd44780", hd44780_device, control_read, control_write) |
| 45 | 78 | // AM_RANGE(MC68HC11_IO_PORTD, MC68HC11_IO_PORTD) AM_DEVREADWRITE("hd44780", hd44780_device, data_read, data_write) |
| 79 | AM_RANGE( MC68HC11_IO_PORTA, MC68HC11_IO_PORTA ) AM_READWRITE(port_a_r, port_a_w) |
| 80 | AM_RANGE( MC68HC11_IO_PORTD, MC68HC11_IO_PORTD ) AM_READWRITE(port_d_r, port_d_w) |
| 46 | 81 | ADDRESS_MAP_END |
| 47 | 82 | |
| 48 | 83 | /* Input ports */ |
| r20238 | r20239 | |
| 57 | 92 | |
| 58 | 93 | void alphasmart_state::machine_start() |
| 59 | 94 | { |
| 95 | m_rambank->configure_entries(0, 4, (UINT8*)(*memregion("mainram")), 0x8000); |
| 60 | 96 | } |
| 61 | 97 | |
| 98 | void alphasmart_state::machine_reset() |
| 99 | { |
| 100 | m_rambank->set_entry(0); |
| 101 | } |
| 102 | |
| 62 | 103 | static const hc11_config alphasmart_hc11_config = |
| 63 | 104 | { |
| 64 | 105 | 0, //has extended internal I/O |
| r20238 | r20239 | |
| 99 | 140 | ROM_REGION( 0x8000, "maincpu", 0 ) |
| 100 | 141 | ROM_LOAD( "alphasmartpro212.rom", 0x0000, 0x8000, CRC(896ddf1c) SHA1(c3c6a421c9ced92db97431d04b4a3f09a39de716) ) // Checksum 8D24 on label |
| 101 | 142 | |
| 143 | ROM_REGION( 0x20000, "mainram", ROMREGION_ERASE ) |
| 144 | |
| 102 | 145 | ROM_REGION( 0x0860, "hd44780", ROMREGION_ERASE ) |
| 103 | 146 | ROM_LOAD( "44780a00.bin", 0x0000, 0x0860, BAD_DUMP CRC(3a89024c) SHA1(5a87b68422a916d1b37b5be1f7ad0b3fb3af5a8d)) |
| 104 | 147 | ROM_END |