Previous 15994 Revisions Next

r767 Tuesday 31st July, 2007 at 04:04:44 UTC by Dirk Best
[AIM65] Rewrote keyboard emulation, now behaves like the real hardware.
[docs]messnew.txt
[src/mess/drivers]aim65.c
[src/mess/includes]aim65.h
[src/mess/machine]aim65.c

src/mess/includes/aim65.h
r766r767
1818
1919TIMER_CALLBACK(aim65_printer_timer);
2020WRITE8_HANDLER( aim65_printer_on );
21
22
23#define KEY_1 (readinputport(0)&1)
24#define KEY_2 (readinputport(0)&2)
25#define KEY_3 (readinputport(0)&4)
26#define KEY_4 (readinputport(0)&8)
27#define KEY_5 (readinputport(0)&0x10)
28#define KEY_6 (readinputport(0)&0x20)
29#define KEY_7 (readinputport(0)&0x40)
30#define KEY_8 (readinputport(0)&0x80)
31#define KEY_9 (readinputport(0)&0x100)
32#define KEY_0 (readinputport(0)&0x200)
33#define KEY_COLON (readinputport(0)&0x400)
34#define KEY_F3 (readinputport(0)&0x800)
35#define KEY_PRINT (readinputport(0)&0x1000)
36#define KEY_ESC (readinputport(1)&1)
37#define KEY_Q (readinputport(1)&2)
38#define KEY_W (readinputport(1)&4)
39#define KEY_E (readinputport(1)&8)
40#define KEY_R (readinputport(1)&0x10)
41#define KEY_T (readinputport(1)&0x20)
42#define KEY_Y (readinputport(1)&0x40)
43#define KEY_U (readinputport(1)&0x80)
44#define KEY_I (readinputport(1)&0x100)
45#define KEY_O (readinputport(1)&0x200)
46#define KEY_P (readinputport(1)&0x400)
47#define KEY_MINUS (readinputport(1)&0x800)
48#define KEY_F2 (readinputport(1)&0x1000)
49#define KEY_RETURN (readinputport(1)&0x2000)
50#define KEY_CRTL (readinputport(2)&1)
51#define KEY_A (readinputport(2)&2)
52#define KEY_S (readinputport(2)&4)
53#define KEY_D (readinputport(2)&8)
54#define KEY_F (readinputport(2)&0x10)
55#define KEY_G (readinputport(2)&0x20)
56#define KEY_H (readinputport(2)&0x40)
57#define KEY_J (readinputport(2)&0x80)
58#define KEY_K (readinputport(2)&0x100)
59#define KEY_L (readinputport(2)&0x200)
60#define KEY_SEMICOLON (readinputport(2)&0x400)
61#define KEY_LF (readinputport(2)&0x800)
62#define KEY_F1 (readinputport(2)&0x1000)
63#define KEY_DEL (readinputport(2)&0x2000)
64#define KEY_LEFT_SHIFT (readinputport(3)&1)
65#define KEY_Z (readinputport(3)&2)
66#define KEY_X (readinputport(3)&4)
67#define KEY_C (readinputport(3)&8)
68#define KEY_V (readinputport(3)&0x10)
69#define KEY_B (readinputport(3)&0x20)
70#define KEY_N (readinputport(3)&0x40)
71#define KEY_M (readinputport(3)&0x80)
72#define KEY_COMMA (readinputport(3)&0x100)
73#define KEY_POINT (readinputport(3)&0x200)
74#define KEY_SLASH (readinputport(3)&0x400)
75#define KEY_RIGHT_SHIFT (readinputport(3)&0x800)
76#define KEY_SPACE (readinputport(3)&0x1000)
77
src/mess/machine/aim65.c
r766r767
149149
150150static READ8_HANDLER( aim65_riot_b_r )
151151{
152   int data = 0xff;
152   char portname[11];
153   int row, data = 0xff;
153154
154   if (!(riot_port_a & 0x01)) {
155      if (KEY_SPACE) data &= ~0x01;
156      //right?
157      if (KEY_POINT) data &= ~0x04;
158      if (KEY_M) data &= ~0x08;
159      if (KEY_B) data &= ~0x10;
160      if (KEY_C) data &= ~0x20;
161      if (KEY_Z) data &= ~0x40;
162      //right?
155   /* scan keyboard rows */
156   for (row = 0; row < 8; row++) {
157      sprintf(portname, "keyboard_%d", row);
158      if (!(riot_port_a & (1 << row)))
159         data &= readinputportbytag(portname);
163160   }
164161
165   if (!(riot_port_a & 0x02)) {
166      if (KEY_DEL) data &= ~0x01; //backspace 0x08
167      if (KEY_LF) data &= ~0x02; //0x60
168      if (KEY_L) data &= ~0x04;
169      if (KEY_J) data &= ~0x08;
170      if (KEY_G) data &= ~0x10;
171      if (KEY_D) data &= ~0x20;
172      if (KEY_A) data &= ~0x40;
173      //right?
174   }
175
176   if (!(riot_port_a & 0x04)) {
177      //right?
178      if (KEY_PRINT) data &= ~0x02; // backslash
179      if (KEY_P) data &= ~0x04;
180      if (KEY_I) data &= ~0x08;
181      if (KEY_Y) data &= ~0x10;
182      if (KEY_R) data &= ~0x20;
183      if (KEY_W) data &= ~0x40;
184      if (KEY_ESC) data &= ~0x80; //0x1b
185   }
186
187   if (!(riot_port_a & 0x08)) {
188      if (KEY_RETURN) data &= ~0x01;
189      //right?
190      if (KEY_MINUS) data &= ~0x04;
191      if (KEY_O) data &= ~0x08;
192      if (KEY_U) data &= ~0x10;
193      if (KEY_T) data &= ~0x20;
194      if (KEY_E) data &= ~0x40;
195      if (KEY_Q) data &= ~0x80;
196   }
197
198   if (!(riot_port_a & 0x10)) {
199      if (KEY_CRTL) data &= ~0x01;
200      //right?
201      if (KEY_COLON) data &= ~0x04;
202      if (KEY_9) data &= ~0x08;
203      if (KEY_7) data &= ~0x10;
204      if (KEY_5) data &= ~0x20;
205      if (KEY_3) data &= ~0x40;
206      if (KEY_1) data &= ~0x80;
207   }
208
209   if (!(riot_port_a & 0x20)) {
210      if (KEY_LEFT_SHIFT) data &= ~0x01;
211      //right?
212      if (KEY_0) data &= ~0x04;
213      if (KEY_8) data &= ~0x08;
214      if (KEY_6) data &= ~0x10;
215      if (KEY_4) data &= ~0x20;
216      if (KEY_2) data &= ~0x40;
217      if (KEY_F3) data &= ~0x80; //^ 0x5e
218   }
219
220   if (!(riot_port_a & 0x40)) {
221      if (KEY_RIGHT_SHIFT) data &= ~0x01;
222      if (KEY_DEL) data &= ~0x02; //backspace 0x08
223      if (KEY_SEMICOLON) data &= ~0x04;
224      if (KEY_K) data &= ~0x08;
225      if (KEY_H) data &= ~0x10;
226      if (KEY_F) data &= ~0x20;
227      if (KEY_S) data &= ~0x40;
228      if (KEY_F2) data &= ~0x80;
229   }
230
231   if (!(riot_port_a & 0x80)) {
232      if (KEY_SLASH) data &=~0x04;
233      if (KEY_COMMA) data &=~0x08;
234      if (KEY_N) data &= ~0x10;
235      if (KEY_V) data &= ~0x20;
236      if (KEY_X) data &= ~0x40;
237      if (KEY_F1) data &= ~0x80;
238   }
239
240162   return data;
241163}
242164
r766r767
247169}
248170
249171
172void aim65_riot_irq(int state)
173{
174   cpunum_set_input_line(0, M6502_IRQ_LINE, state ? HOLD_LINE : CLEAR_LINE);
175}
176
177
250178static const struct riot6532_interface r6532_interface =
251179{
252180   NULL,
253181   aim65_riot_b_r,
254182   aim65_riot_a_w,
255   NULL
183   NULL,
184   aim65_riot_irq
256185};
257186
258187
r766r767
276205
277206static READ8_HANDLER( aim65_via0_b_r )
278207{
279   return readinputport(4);
208   return readinputportbytag("switches");
280209}
281210
282211
src/mess/drivers/aim65.c
r766r767
11/******************************************************************************
22 PeT mess@utanet.at Nov 2000
33Updated by Dan Boris, 3/4/2007
4Rewrite in progress, Dirk Best, 2007-07-31
45
56ToDo:
67    - Printer. Tried to implement this but it was not working, currently disabled.
7    - Artwork.
88    - Tape interface
9    - User VIA (not really necessary since it only interfaces to external devices)
109
1110******************************************************************************/
1211
12
1313#include "driver.h"
1414#include "includes/aim65.h"
1515
r766r767
2626#include "aim65.lh"
2727
2828
29
30/******************************************************************************
31 Memory Maps
32******************************************************************************/
33
34
2935/* Note: RAM is mapped dynamically in machine/aim65.c */
3036static ADDRESS_MAP_START( aim65_mem , ADDRESS_SPACE_PROGRAM, 8 )
3137   AM_RANGE( 0x1000, 0x9fff ) AM_NOP /* User available expansions */
r766r767
4349ADDRESS_MAP_END
4450
4551
52
53/******************************************************************************
54 Input Ports
55******************************************************************************/
56
57
4658INPUT_PORTS_START( aim65 )
47   PORT_START
48   PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("1  !")   PORT_CODE(KEYCODE_1)          PORT_CHAR('1') PORT_CHAR('!')
49   PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("2  \"")  PORT_CODE(KEYCODE_2)          PORT_CHAR('2') PORT_CHAR('\"')
50   PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("3  #")   PORT_CODE(KEYCODE_3)          PORT_CHAR('3') PORT_CHAR('#')
51   PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("4  $")   PORT_CODE(KEYCODE_4)          PORT_CHAR('4') PORT_CHAR('$')
52   PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("5  %")   PORT_CODE(KEYCODE_5)          PORT_CHAR('5') PORT_CHAR('%')
53   PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("6  &")   PORT_CODE(KEYCODE_6)          PORT_CHAR('6') PORT_CHAR('&')
54   PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("7  '")   PORT_CODE(KEYCODE_7)          PORT_CHAR('7') PORT_CHAR('\'')
55   PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("8  (")   PORT_CODE(KEYCODE_8)          PORT_CHAR('8') PORT_CHAR('(')
56   PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("9  )")   PORT_CODE(KEYCODE_9)          PORT_CHAR('9') PORT_CHAR(')')
57   PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("0")      PORT_CODE(KEYCODE_0)          PORT_CHAR('0')
58   PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(":  *")   PORT_CODE(KEYCODE_MINUS)      PORT_CHAR(':') PORT_CHAR('*')
59   PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3")     PORT_CODE(KEYCODE_EQUALS)     PORT_CHAR(UCHAR_MAMEKEY(F3))
60   PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("PRINT")  PORT_CODE(KEYCODE_BACKSPACE)  PORT_CHAR(UCHAR_MAMEKEY(PRTSCR))
59   PORT_START_TAG("keyboard_0")
60   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SPACE")  PORT_CODE(KEYCODE_SPACE)      PORT_CHAR(' ')
61   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
62   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".  >")   PORT_CODE(KEYCODE_STOP)       PORT_CHAR('.') PORT_CHAR('>')
63   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M")      PORT_CODE(KEYCODE_M)          PORT_CHAR('M')
64   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B")      PORT_CODE(KEYCODE_B)          PORT_CHAR('B')
65   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C")      PORT_CODE(KEYCODE_C)          PORT_CHAR('C')
66   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z")      PORT_CODE(KEYCODE_Z)          PORT_CHAR('Z')
67   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
68   
69   PORT_START_TAG("keyboard_1")
70   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
71   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LF  @")  PORT_CODE(KEYCODE_QUOTE)      PORT_CHAR(10)  PORT_CHAR('@')
72   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L")      PORT_CODE(KEYCODE_L)          PORT_CHAR('L')
73   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J")      PORT_CODE(KEYCODE_J)          PORT_CHAR('J')
74   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G")      PORT_CODE(KEYCODE_G)          PORT_CHAR('G')
75   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D")      PORT_CODE(KEYCODE_D)          PORT_CHAR('D')
76   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A")      PORT_CODE(KEYCODE_A)          PORT_CHAR('A')
77   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED)
78   
79   PORT_START_TAG("keyboard_2")
80   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
81   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("PRINT")  PORT_CODE(KEYCODE_BACKSPACE)  PORT_CHAR(UCHAR_MAMEKEY(PRTSCR))
82   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P")      PORT_CODE(KEYCODE_P)          PORT_CHAR('P')
83   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I")      PORT_CODE(KEYCODE_I)          PORT_CHAR('I')
84   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y")      PORT_CODE(KEYCODE_Y)          PORT_CHAR('Y')
85   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R")      PORT_CODE(KEYCODE_R)          PORT_CHAR('R')
86   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W")      PORT_CODE(KEYCODE_W)          PORT_CHAR('W')
87   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ESC")    PORT_CODE(KEYCODE_TAB)        PORT_CHAR(UCHAR_MAMEKEY(ESC))
6188
62   PORT_START
63   PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ESC")    PORT_CODE(KEYCODE_TAB)        PORT_CHAR(UCHAR_MAMEKEY(ESC))
64   PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Q")      PORT_CODE(KEYCODE_Q)          PORT_CHAR('Q')
65   PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("W")      PORT_CODE(KEYCODE_W)          PORT_CHAR('W')
66   PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("E")      PORT_CODE(KEYCODE_E)          PORT_CHAR('E')
67   PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("R")      PORT_CODE(KEYCODE_R)          PORT_CHAR('R')
68   PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("T")      PORT_CODE(KEYCODE_T)          PORT_CHAR('T')
69   PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Y")      PORT_CODE(KEYCODE_Y)          PORT_CHAR('Y')
70   PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("U")      PORT_CODE(KEYCODE_U)          PORT_CHAR('U')
71   PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("I")      PORT_CODE(KEYCODE_I)          PORT_CHAR('I')
72   PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("O")      PORT_CODE(KEYCODE_O)          PORT_CHAR('O')
73   PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("P")      PORT_CODE(KEYCODE_P)          PORT_CHAR('P')
74   PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("-  =")   PORT_CODE(KEYCODE_OPENBRACE)  PORT_CHAR('-') PORT_CHAR('=')
75   PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F2")     PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(UCHAR_MAMEKEY(F2))
76   PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER)      PORT_CHAR(13)
89   PORT_START_TAG("keyboard_3")
90   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER)      PORT_CHAR(13)
91   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
92   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-  =")   PORT_CODE(KEYCODE_OPENBRACE)  PORT_CHAR('-') PORT_CHAR('=')
93   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O")      PORT_CODE(KEYCODE_O)          PORT_CHAR('O')
94   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U")      PORT_CODE(KEYCODE_U)          PORT_CHAR('U')
95   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T")      PORT_CODE(KEYCODE_T)          PORT_CHAR('T')
96   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E")      PORT_CODE(KEYCODE_E)          PORT_CHAR('E')
97   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q")      PORT_CODE(KEYCODE_Q)          PORT_CHAR('Q')
7798
78   PORT_START
79    PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("CRTL")   PORT_CODE(KEYCODE_LCONTROL)   PORT_CHAR(UCHAR_SHIFT_2)
80   PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("A")      PORT_CODE(KEYCODE_A)          PORT_CHAR('A')
81   PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("S")      PORT_CODE(KEYCODE_S)          PORT_CHAR('S')
82   PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("D")      PORT_CODE(KEYCODE_D)          PORT_CHAR('D')
83   PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F")      PORT_CODE(KEYCODE_F)          PORT_CHAR('F')
84   PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("G")      PORT_CODE(KEYCODE_G)          PORT_CHAR('G')
85   PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("H")      PORT_CODE(KEYCODE_H)          PORT_CHAR('H')
86   PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("J")      PORT_CODE(KEYCODE_J)          PORT_CHAR('J')
87   PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("K")      PORT_CODE(KEYCODE_K)          PORT_CHAR('K')
88   PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("L")      PORT_CODE(KEYCODE_L)          PORT_CHAR('L')
89   PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(";  +")   PORT_CODE(KEYCODE_COLON)      PORT_CHAR(';') PORT_CHAR('+')
90   PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LF  @")  PORT_CODE(KEYCODE_QUOTE)      PORT_CHAR(10)  PORT_CHAR('@')
91   PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F1")     PORT_CODE(KEYCODE_BACKSLASH)  PORT_CHAR(UCHAR_MAMEKEY(F1))
92   PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DEL")    PORT_CODE(KEYCODE_BACKSPACE)  PORT_CHAR(8)
99   PORT_START_TAG("keyboard_4")
100   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CTRL")   PORT_CODE(KEYCODE_LCONTROL)   PORT_CHAR(UCHAR_SHIFT_2)
101   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
102   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(":  *")   PORT_CODE(KEYCODE_MINUS)      PORT_CHAR(':') PORT_CHAR('*')
103   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9  )")   PORT_CODE(KEYCODE_9)          PORT_CHAR('9') PORT_CHAR(')')
104   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7  '")   PORT_CODE(KEYCODE_7)          PORT_CHAR('7') PORT_CHAR('\'')
105   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5  %")   PORT_CODE(KEYCODE_5)          PORT_CHAR('5') PORT_CHAR('%')
106   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3  #")   PORT_CODE(KEYCODE_3)          PORT_CHAR('3') PORT_CHAR('#')
107   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1  !")   PORT_CODE(KEYCODE_1)          PORT_CHAR('1') PORT_CHAR('!')
93108
94   PORT_START
95   PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("LSHIFT") PORT_CODE(KEYCODE_LSHIFT)     PORT_CHAR(UCHAR_SHIFT_1)
96   PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Z")      PORT_CODE(KEYCODE_Z)          PORT_CHAR('Z')
97   PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("X")      PORT_CODE(KEYCODE_X)          PORT_CHAR('X')
98   PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("C")      PORT_CODE(KEYCODE_C)          PORT_CHAR('C')
99   PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("V")      PORT_CODE(KEYCODE_V)          PORT_CHAR('V')
100   PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("B")      PORT_CODE(KEYCODE_B)          PORT_CHAR('B')
101   PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("N")      PORT_CODE(KEYCODE_N)          PORT_CHAR('N')
102   PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("M")      PORT_CODE(KEYCODE_M)          PORT_CHAR('M')
103   PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(",  <")   PORT_CODE(KEYCODE_COMMA)      PORT_CHAR(',') PORT_CHAR('<')
104   PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(".  >")   PORT_CODE(KEYCODE_STOP)       PORT_CHAR('.') PORT_CHAR('>')
105   PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("/  ?")   PORT_CODE(KEYCODE_SLASH)      PORT_CHAR('/') PORT_CHAR('?')
106   PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RSHIFT") PORT_CODE(KEYCODE_RSHIFT)     PORT_CHAR(UCHAR_SHIFT_1)
107   PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SPACE")  PORT_CODE(KEYCODE_SPACE)      PORT_CHAR(' ')
109   PORT_START_TAG("keyboard_5")
110   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LSHIFT") PORT_CODE(KEYCODE_LSHIFT)     PORT_CHAR(UCHAR_SHIFT_1)
111   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
112   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0")      PORT_CODE(KEYCODE_0)          PORT_CHAR('0')
113   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8  (")   PORT_CODE(KEYCODE_8)          PORT_CHAR('8') PORT_CHAR('(')
114   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6  &")   PORT_CODE(KEYCODE_6)          PORT_CHAR('6') PORT_CHAR('&')
115   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4  $")   PORT_CODE(KEYCODE_4)          PORT_CHAR('4') PORT_CHAR('$')
116   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2  \"")  PORT_CODE(KEYCODE_2)          PORT_CHAR('2') PORT_CHAR('\"')
117   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3")     PORT_CODE(KEYCODE_EQUALS)     PORT_CHAR(UCHAR_MAMEKEY(F3))
108118
109   PORT_START
119   PORT_START_TAG("keyboard_6")
120   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RSHIFT") PORT_CODE(KEYCODE_RSHIFT)     PORT_CHAR(UCHAR_SHIFT_1)
121   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DEL")    PORT_CODE(KEYCODE_BACKSPACE)  PORT_CHAR(8)
122   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";  +")   PORT_CODE(KEYCODE_COLON)      PORT_CHAR(';') PORT_CHAR('+')
123   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K")      PORT_CODE(KEYCODE_K)          PORT_CHAR('K')
124   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H")      PORT_CODE(KEYCODE_H)          PORT_CHAR('H')
125   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F")      PORT_CODE(KEYCODE_F)          PORT_CHAR('F')
126   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S")      PORT_CODE(KEYCODE_S)          PORT_CHAR('S')
127   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F2")     PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(UCHAR_MAMEKEY(F2))
128
129   PORT_START_TAG("keyboard_7")
130   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
131   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_UNUSED)
132   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/  ?")   PORT_CODE(KEYCODE_SLASH)      PORT_CHAR('/') PORT_CHAR('?')
133   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",  <")   PORT_CODE(KEYCODE_COMMA)      PORT_CHAR(',') PORT_CHAR('<')
134   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N")      PORT_CODE(KEYCODE_N)          PORT_CHAR('N')
135   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V")      PORT_CODE(KEYCODE_V)          PORT_CHAR('V')
136   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X")      PORT_CODE(KEYCODE_X)          PORT_CHAR('X')
137   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1")     PORT_CODE(KEYCODE_BACKSLASH)  PORT_CHAR(UCHAR_MAMEKEY(F1))
138
139   PORT_START_TAG("switches")
110140    PORT_DIPNAME(0x08, 0x08, "Terminal")
111141   PORT_DIPSETTING( 0x00, "TTY")
112142   PORT_DIPSETTING( 0x08, "Keyboard")
113143INPUT_PORTS_END
114144
115145
146
147/******************************************************************************
148 Machine Drivers
149******************************************************************************/
150
151
116152static MACHINE_DRIVER_START( aim65 )
117153   /* basic machine hardware */
118154   MDRV_CPU_ADD(M6502, 1000000)
r766r767
128164MACHINE_DRIVER_END
129165
130166
167
168/******************************************************************************
169 ROM Definitions
170******************************************************************************/
171
172
131173ROM_START(aim65)
132174   ROM_REGION(0x10000,REGION_CPU1, 0)
133175   ROM_LOAD_OPTIONAL ("aim65bas.z26", 0xb000, 0x1000, CRC(36a61f39) SHA1(f5ce0126cb594a565e730973fd140d03c298cefa) )
r766r767
138180ROM_END
139181
140182
183
184/******************************************************************************
185 System Config
186******************************************************************************/
187
188
141189SYSTEM_CONFIG_START(aim65)
142190   CONFIG_RAM_DEFAULT (4 * 1024) /* 4KB RAM */
143191   CONFIG_RAM         (3 * 1024) /* 3KB RAM */
r766r767
146194SYSTEM_CONFIG_END
147195
148196
149/*    YEAR  NAME    PARENT  COMPAT  MACHINE INPUT   INIT    CONFIG  COMPANY     FULLNAME */
197
198/******************************************************************************
199 Drivers
200******************************************************************************/
201
202
203/*    YEAR  NAME    PARENT  COMPAT  MACHINE INPUT   INIT    CONFIG  COMPANY     FULLNAME  FLAGS */
150204COMP(1977,   aim65,   0,      0,      aim65,   aim65,   aim65,   aim65,   "Rockwell",   "AIM 65", 0)
docs/messnew.txt
r766r767
2828  RAM sizes have been added and the system was converted to a screenless
2929  system.  [Dirk Best]
3030
31- [AIM65] Rewrote keyboard emulation, it now behaves like the real hardware
32  and the code is much cleaner.  [Dirk Best]
33
3134- [COCO] Fixed PIA regression that prevented OS-9 level 1 from working.  (bug
3235  #1314) [Nate Woods]
3336

Previous 15994 Revisions Next


© 1998-2018 The MESS Team