Previous 199869 Revisions Next

r20579 Monday 28th January, 2013 at 10:50:33 UTC by Sandro Ronco
(MESS) alphasma: fixed keyboard, added nvram and removed runtime tagmap lookups. (nw)
[src/mess/drivers]alphasma.c

trunk/src/mess/drivers/alphasma.c
r20578r20579
55        driver by Sandro Ronco
66
77    TODO:
8    - finish keyboard mapping
98    - ADB and PS/2
109    - charset ROM is wrong
1110
r20578r20579
1312
1413#include "emu.h"
1514#include "cpu/mc68hc11/mc68hc11.h"
15#include "machine/nvram.h"
1616#include "video/hd44780.h"
1717#include "rendlay.h"
1818
r20578r20579
2424         m_maincpu(*this, "maincpu"),
2525         m_lcdc0(*this, "ks0066_0"),
2626         m_lcdc1(*this, "ks0066_1"),
27         m_rambank(*this, "rambank")
27         m_nvram(*this, "nvram"),
28         m_rambank(*this, "rambank"),
29         m_io_col0(*this, "COL0"),
30         m_io_col1(*this, "COL1"),
31         m_io_col2(*this, "COL2"),
32         m_io_col3(*this, "COL3"),
33         m_io_col4(*this, "COL4"),
34         m_io_col5(*this, "COL5"),
35         m_io_col6(*this, "COL6"),
36         m_io_col7(*this, "COL7"),
37         m_io_col8(*this, "COL8"),
38         m_io_col9(*this, "COL9"),
39         m_io_cola(*this, "COLA"),
40         m_io_colb(*this, "COLB"),
41         m_io_colc(*this, "COLC"),
42         m_io_cold(*this, "COLD"),
43         m_io_cole(*this, "COLE"),
44         m_io_colf(*this, "COLF"),
45         m_battery_status(*this, "BATTERY")
2846      { }
2947
3048   required_device<cpu_device> m_maincpu;
3149   required_device<hd44780_device> m_lcdc0;
3250   required_device<hd44780_device> m_lcdc1;
51   required_device<nvram_device> m_nvram;
3352   required_memory_bank m_rambank;
53   required_ioport m_io_col0;
54   required_ioport m_io_col1;
55   required_ioport m_io_col2;
56   required_ioport m_io_col3;
57   required_ioport m_io_col4;
58   required_ioport m_io_col5;
59   required_ioport m_io_col6;
60   required_ioport m_io_col7;
61   required_ioport m_io_col8;
62   required_ioport m_io_col9;
63   required_ioport m_io_cola;
64   required_ioport m_io_colb;
65   required_ioport m_io_colc;
66   required_ioport m_io_cold;
67   required_ioport m_io_cole;
68   required_ioport m_io_colf;
69   required_ioport m_battery_status;
3470
35   DECLARE_WRITE8_MEMBER(vram_w);
36
3771   virtual void machine_start();
3872   virtual void machine_reset();
3973   virtual void palette_init();
r20578r20579
6296
6397READ8_MEMBER(alphasmart_state::kb_r)
6498{
65   static const char *const portnames[] =
99   ioport_port* portnames[] =
66100   {
67      "COL0", "COL1", "COL2", "COL3", "COL4", "COL5", "COL6", "COL7",
68      "COL8", "COL9", "COLA", "COLB", "COLC", "COLD", "COLE", "COLF"
101      m_io_col0, m_io_col1, m_io_col2, m_io_col3, m_io_col4, m_io_col5, m_io_col6, m_io_col7,
102      m_io_col8, m_io_col9, m_io_cola, m_io_colb, m_io_colc, m_io_cold, m_io_cole, m_io_colf
69103   };
70104
71105   UINT16 matrix = (m_matrix[1]<<8) | m_matrix[0];
r20578r20579
73107
74108   for(int i=0; i<16; i++)
75109      if (!(matrix & (1<<i)))
76         data &= ioport(portnames[i])->read();
110         data &= portnames[i]->read();
77111
78112   return data;
79113}
r20578r20579
90124
91125READ8_MEMBER(alphasmart_state::port_a_r)
92126{
93   return (m_port_a & 0xfd) | (ioport("BATTERY")->read() << 1);
127   return (m_port_a & 0xfd) | (m_battery_status->read() << 1);
94128}
95129
96130WRITE8_MEMBER(alphasmart_state::port_a_w)
r20578r20579
135169
136170static ADDRESS_MAP_START(alphasmart_mem, AS_PROGRAM, 8, alphasmart_state)
137171   ADDRESS_MAP_UNMAP_HIGH
172   AM_RANGE( 0x0000, 0x003f ) AM_NOP   // internal registers
173   AM_RANGE( 0x0040, 0x00ff ) AM_RAM   // internal RAM
138174   AM_RANGE( 0x0000, 0x7fff ) AM_RAMBANK("rambank")
139175   AM_RANGE( 0x8000, 0x8000 ) AM_READWRITE(kb_r, kb_matrixh_w)
140176   AM_RANGE( 0xc000, 0xc000 ) AM_WRITE(kb_matrixl_w)
r20578r20579
150186static INPUT_PORTS_START( alphasmart )
151187   PORT_START("COL0")
152188   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F8)    PORT_CHAR(UCHAR_MAMEKEY(F1))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
153   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
189   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
154190   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F7)    PORT_CHAR(UCHAR_MAMEKEY(F7))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
155   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
191   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
156192   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L)     PORT_CHAR('l') PORT_CHAR('L')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
157193   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)     PORT_CHAR('9') PORT_CHAR('(')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
158194   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O)     PORT_CHAR('o') PORT_CHAR('O')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
r20578r20579
183219   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
184220   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0)     PORT_CHAR('0') PORT_CHAR(')')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
185221   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P)     PORT_CHAR('p') PORT_CHAR('P')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
186   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
222   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
187223   PORT_START("COL4")
188   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
189   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
190   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
224   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD) PORT_NAME("Enter") PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
225   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
226   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
191227   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
192   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
193   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
194   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
195   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
228   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
229   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
230   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
231   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
196232   PORT_START("COL5")
197   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
233   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
198234   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
199   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
235   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
200236   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
201   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
202   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
203   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
237   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
238   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
239   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
204240   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_END)  PORT_CHAR(UCHAR_MAMEKEY(END))    PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
205241   PORT_START("COL6")
206   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
242   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
207243   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LWIN) PORT_CODE(KEYCODE_PGUP)  PORT_NAME("Left Command") PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
208   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
244   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
209245   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RWIN) PORT_CODE(KEYCODE_PGDN) PORT_NAME("Right Command") PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)//
210   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
211   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL)  PORT_NAME("COLlear File") PORT_CHAR(UCHAR_MAMEKEY(F9)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
246   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
247   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL)  PORT_NAME("Clear File") PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
212248   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
213   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
249   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
214250   PORT_START("COL7")
215   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
216   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
217   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD)
251   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F12) PORT_NAME("Send") PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
252   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
253   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
218254   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_UP)   PORT_CHAR(UCHAR_MAMEKEY(UP))     PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
219   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD)
220   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
221   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
222   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD)
255   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
256   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
257   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
258   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_INSERT)   PORT_CHAR(UCHAR_MAMEKEY(INSERT)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
223259   PORT_START("COL8")
224   PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
260   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
261   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
262   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
263   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
264   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
265   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
266   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
267   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
225268   PORT_START("COL9")
226   PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_NAME("Left Alt/Option") PORT_CHAR(UCHAR_MAMEKEY(LALT))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
227   PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RALT) PORT_NAME("Right Alt/Option") PORT_CHAR(UCHAR_MAMEKEY(LALT))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
269   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LALT) PORT_NAME("Left Alt/Option") PORT_CHAR(UCHAR_MAMEKEY(LALT))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
270   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
271   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED)
272   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
273   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
274   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
275   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
276   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RALT) PORT_NAME("Right Alt/Option") PORT_CHAR(UCHAR_MAMEKEY(LALT))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
228277   PORT_START("COLA")
229278   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=')    PORT_CHAR('+') PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
230279   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F6)   PORT_CHAR(UCHAR_MAMEKEY(F6)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
231280   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']')    PORT_CHAR('}') PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
232   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
281   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
233282   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K)    PORT_CHAR('k')  PORT_CHAR('K')   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
234283   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)    PORT_CHAR('8')  PORT_CHAR('*')   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
235284   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I)    PORT_CHAR('i')  PORT_CHAR('I')   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
236285   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
237286   PORT_START("COLB")
238   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD)
287   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F9)   PORT_NAME("Pause") PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
239288   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F5)        PORT_CHAR(UCHAR_MAMEKEY(F5))     PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
240289   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSPACE) PORT_NAME("Backspace") PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
241290   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE)     PORT_CHAR(' ') PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
242291   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
243   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD)
244   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD)
292   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F10)  PORT_NAME("ScrLk") PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
293   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
245294   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER)   PORT_NAME("Return") PORT_CHAR(13) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
246295   PORT_START("COLC")
247296   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F2)   PORT_CHAR(UCHAR_MAMEKEY(F2))    PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
248297   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F4)   PORT_CHAR(UCHAR_MAMEKEY(F4))    PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
249298   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F3)   PORT_CHAR(UCHAR_MAMEKEY(F3))    PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
250   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
299   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
251300   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)    PORT_CHAR('d')  PORT_CHAR('D')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
252301   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)    PORT_CHAR('3')  PORT_CHAR('#')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
253302   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)    PORT_CHAR('e')  PORT_CHAR('E')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
254303   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C)    PORT_CHAR('c')  PORT_CHAR('C')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
255304   PORT_START("COLD")
256305   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F1)   PORT_CHAR(UCHAR_MAMEKEY(F1))    PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
257   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD)
306   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
258307   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
259   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
308   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
260309   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)    PORT_CHAR('s')  PORT_CHAR('S')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
261310   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)    PORT_CHAR('2')  PORT_CHAR('@')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
262311   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)    PORT_CHAR('w')  PORT_CHAR('W')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
r20578r20579
265314   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
266315   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ESC)  PORT_CHAR(UCHAR_MAMEKEY(ESC))   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
267316   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB)  PORT_CHAR('\t')   PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
268   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD)
317   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
269318   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)    PORT_CHAR('a')  PORT_CHAR('A')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
270319   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)    PORT_CHAR('1')  PORT_CHAR('!')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
271320   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)    PORT_CHAR('q')  PORT_CHAR('Q')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
272321   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)    PORT_CHAR('z')  PORT_CHAR('Z')  PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
273322   PORT_START("COLF")
274   PORT_BIT(0x0f, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
275   PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_MAMEKEY(RSHIFT)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
323   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
324   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
325   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
326   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
327   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_UNUSED)
328   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_UNUSED)
329   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNUSED)
330   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_MAMEKEY(RSHIFT)) PORT_CHANGED_MEMBER(DEVICE_SELF, alphasmart_state, kb_irq, NULL)
276331
277332   PORT_START("BATTERY")
278333   PORT_CONFNAME(0x01, 0x01, "Battery status")
r20578r20579
297352
298353void alphasmart_state::machine_start()
299354{
300   m_rambank->configure_entries(0, 4, (UINT8*)(*memregion("mainram")), 0x8000);
355   UINT8* ram = (UINT8*)(*memregion("mainram"));
356
357   m_rambank->configure_entries(0, 4, ram, 0x8000);
358   m_nvram->set_base(ram, 0x8000*4);
359
301360   m_tmp_bitmap = auto_bitmap_ind16_alloc(machine(), 6*40, 9*4);
302361}
303362
r20578r20579
311370
312371static const hc11_config alphasmart_hc11_config =
313372{
314   0,     //has extended internal I/O
315   192,   //internal RAM size
316   0x00   //registers are at 0-0x3f
373   0,     // has extended internal I/O
374   0,     // FIXME: should be 192, but the 68hc11 core doesn't handle internal RAM correctly
375   0x00   // registers are at 0-0x3f
317376};
318377
319378static MACHINE_CONFIG_START( alphasmart, alphasmart_state )
r20578r20579
337396   MCFG_SCREEN_VISIBLE_AREA(0, (6*40)-1, 0, (9*4)-1)
338397   MCFG_PALETTE_LENGTH(2)
339398   MCFG_DEFAULT_LAYOUT(layout_lcd)
399
400   MCFG_NVRAM_ADD_0FILL("nvram")
340401MACHINE_CONFIG_END
341402
342403/* ROM definition */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team