Previous 199869 Revisions Next

r25374 Thursday 19th September, 2013 at 20:41:53 UTC by Curt Coder
(MESS) Legacy removal. (nw)
[src/mess]mess.mak
[src/mess/drivers]c128.c c64.c c65.c pet.c plus4.c primo.c
[src/mess/includes]c128.h c64.h cbm.h cbm2.h pet.h plus4.h softbox.h vic10.h vic20.h
[src/mess/machine]c1541.h c1551.h c1571.h c1581.h c2031.c c2031.h c2040.h c65.c c8280.h cbm.c cbm2exp.c cbm2exp.h cbm2user.c cbm2user.h cbmiec.c cbmiec.h cbmipt.c cbmipt.h cmdhd.h d9060.h fd2000.h hardbox.h ieee488.c ieee488.h interpod.h petcass.c petcass.h petexp.c petexp.h petuser.c petuser.h plus4_sid.h plus4exp.c plus4exp.h plus4user.c plus4user.h serialbox.h shark.h softbox.h vic1010.h vic10exp.c vic10exp.h vic1112.h vic20exp.c vic20exp.h vic20user.c vic20user.h
[src/mess/machine/c64]exp.c exp.h ieee488.h magic_voice.h music64.h sfx_sound_expander.h supercpu.h tdos.h user.c user.h

trunk/src/mess/mess.mak
r25373r25374
747747   $(MESS_MACHINE)/hd63450.o   \
748748   $(MESS_MACHINE)/i8271.o     \
749749   $(MESS_MACHINE)/ieee488.o   \
750   $(MESS_MACHINE)/c2031.o     \
751   $(MESS_MACHINE)/c2040.o     \
752   $(MESS_MACHINE)/c8280.o     \
753   $(MESS_MACHINE)/d9060.o     \
754   $(MESS_MACHINE)/d9060hd.o   \
755   $(MESS_MACHINE)/softbox.o   \
756   $(MESS_MACHINE)/hardbox.o   \
757   $(MESS_MACHINE)/shark.o     \
750758   $(MESS_MACHINE)/imi5000h.o  \
751759   $(MESS_MACHINE)/kb3600.o    \
752760   $(MESS_MACHINE)/keyboard.o  \
r25373r25374
10741082   $(MESS_MACHINE)/pet_64k.o   \
10751083   $(MESS_MACHINE)/superpet.o  \
10761084   $(MESS_MACHINE)/mos6702.o   \
1077   $(MESS_MACHINE)/shark.o     \
10781085   $(MESS_DRIVERS)/c64.o       \
10791086   $(MESS_DRIVERS)/c64dtv.o    \
10801087   $(MESS_MACHINE)/c64/exp.o   \
r25373r25374
11871194   $(MESS_MACHINE)/c1551.o     \
11881195   $(MESS_MACHINE)/c1571.o     \
11891196   $(MESS_MACHINE)/c1581.o     \
1190   $(MESS_MACHINE)/c2031.o     \
1191   $(MESS_MACHINE)/c2040.o     \
1192   $(MESS_MACHINE)/c8280.o     \
1193   $(MESS_MACHINE)/d9060.o     \
1194   $(MESS_MACHINE)/d9060hd.o   \
11951197   $(MESS_MACHINE)/serialbox.o \
11961198   $(MESS_MACHINE)/c64_nl10.o \
1197   $(MESS_MACHINE)/softbox.o   \
1198   $(MESS_MACHINE)/hardbox.o   \
11991199   $(MESS_MACHINE)/cmdhd.o     \
12001200   $(MESS_MACHINE)/fd2000.o    \
12011201   $(MESS_DRIVERS)/clcd.o      \
1202   $(MESS_MACHINE)/cbm.o       \
1203   $(MESS_MACHINE)/cbmipt.o    \
12041202   $(MESS_MACHINE)/64h156.o    \
12051203   $(MESS_MACHINE)/mos8722.o   \
12061204   $(MESS_MACHINE)/mos8726.o   \
trunk/src/mess/drivers/c64.c
r25373r25374
984984}
985985
986986
987//-------------------------------------------------
988//  SLOT_INTERFACE( sx1541_iec_devices )
989//-------------------------------------------------
987990
991SLOT_INTERFACE_START( sx1541_iec_devices )
992   SLOT_INTERFACE("sx1541", SX1541)
993SLOT_INTERFACE_END
994
995
996
988997//**************************************************************************
989998//  MACHINE INITIALIZATION
990999//**************************************************************************
trunk/src/mess/drivers/c65.c
r25373r25374
5454#include "cpu/m6502/m4510.h"
5555#include "sound/mos6581.h"
5656#include "machine/mos6526.h"
57#include "machine/cbmipt.h"
5857#include "video/vic4567.h"
59#include "includes/cbm.h"
6058#include "machine/cbm_snqk.h"
6159#include "includes/c65.h"
6260#include "machine/cbmiec.h"
r25373r25374
119117 *************************************/
120118
121119static INPUT_PORTS_START( c65 )
122   PORT_INCLUDE( common_cbm_keyboard )     /* ROW0 -> ROW7 */
120   PORT_START( "ROW0" )
121   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Crsr Down Up") PORT_CODE(KEYCODE_RALT)        PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CHAR(UCHAR_MAMEKEY(UP))
122   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3)                                    PORT_CHAR(UCHAR_MAMEKEY(F5))
123   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2)                                    PORT_CHAR(UCHAR_MAMEKEY(F3))
124   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1)                                    PORT_CHAR(UCHAR_MAMEKEY(F1))
125   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4)                                    PORT_CHAR(UCHAR_MAMEKEY(F7))
126   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Crsr Right Left") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
127   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER)             PORT_CHAR(13)
128   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("INST DEL") PORT_CODE(KEYCODE_BACKSPACE)       PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
123129
130   PORT_START( "ROW1" )
131   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift (Left)") PORT_CODE(KEYCODE_LSHIFT)      PORT_CHAR(UCHAR_SHIFT_1)
132   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E)         PORT_CHAR('E')
133   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S)         PORT_CHAR('S')
134   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z)         PORT_CHAR('Z')
135   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4)         PORT_CHAR('4') PORT_CHAR('$')
136   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A)         PORT_CHAR('A')
137   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W)         PORT_CHAR('W')
138   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3)         PORT_CHAR('3') PORT_CHAR('#')
139
140   PORT_START( "ROW2" )
141   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X)         PORT_CHAR('X')
142   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T)         PORT_CHAR('T')
143   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F)         PORT_CHAR('F')
144   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C)         PORT_CHAR('C')
145   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6)         PORT_CHAR('6') PORT_CHAR('&')
146   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D)         PORT_CHAR('D')
147   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R)         PORT_CHAR('R')
148   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5)         PORT_CHAR('5') PORT_CHAR('%')
149
150   PORT_START( "ROW3" )
151   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V)         PORT_CHAR('V')
152   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U)         PORT_CHAR('U')
153   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H)         PORT_CHAR('H')
154   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B)         PORT_CHAR('B')
155   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8)         PORT_CHAR('8') PORT_CHAR('(')
156   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G)         PORT_CHAR('G')
157   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y)         PORT_CHAR('Y')
158   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7)         PORT_CHAR('7') PORT_CHAR('\'')
159
160   PORT_START( "ROW4" )
161   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N)         PORT_CHAR('N')
162   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O)         PORT_CHAR('O')
163   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K)         PORT_CHAR('K')
164   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M)         PORT_CHAR('M')
165   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0)         PORT_CHAR('0')
166   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J)         PORT_CHAR('J')
167   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I)         PORT_CHAR('I')
168   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9)         PORT_CHAR('9') PORT_CHAR(')')
169
170   PORT_START( "ROW5" )
171   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA)     PORT_CHAR(',') PORT_CHAR('<')
172   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@')
173   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON)     PORT_CHAR(':') PORT_CHAR('[')
174   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP)      PORT_CHAR('.') PORT_CHAR('>')
175   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS)    PORT_CHAR('-')
176   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L)         PORT_CHAR('L')
177   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P)         PORT_CHAR('P')
178   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS)     PORT_CHAR('+')
179
180   PORT_START( "ROW6" )
181   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH)                             PORT_CHAR('/') PORT_CHAR('?')
182   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91  Pi") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x2191) PORT_CHAR(0x03C0)
183   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH)                         PORT_CHAR('=')
184   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift (Right)") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
185   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("CLR HOME") PORT_CODE(KEYCODE_INSERT)      PORT_CHAR(UCHAR_MAMEKEY(HOME))
186   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE)                             PORT_CHAR(';') PORT_CHAR(']')
187   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE)                        PORT_CHAR('*')
188   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH2)                        PORT_CHAR('\xA3')
189
190   PORT_START( "ROW7" )
191   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RUN STOP") PORT_CODE(KEYCODE_HOME)
192   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q)                                 PORT_CHAR('Q')
193   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("CBM") PORT_CODE(KEYCODE_LALT)
194   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE)                             PORT_CHAR(' ')
195   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2)                                 PORT_CHAR('2') PORT_CHAR('"')
196   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB)                               PORT_CHAR(UCHAR_SHIFT_2)
197   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x90") PORT_CODE(KEYCODE_TILDE)   PORT_CHAR(0x2190)
198   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1)                                 PORT_CHAR('1') PORT_CHAR('!')
124199   PORT_START("FUNCT")
125200   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_F1)
126201   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F13 F14") PORT_CODE(KEYCODE_F11)
r25373r25374
131206   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB)
132207   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("NO SCRL") PORT_CODE(KEYCODE_F4)
133208
134   PORT_INCLUDE( c65_special )             /* SPECIAL */
209   PORT_START( "SPECIAL" )  /* special keys */
210   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Restore") PORT_CODE(KEYCODE_PRTSCR)
211   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift Lock (switch)") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
212   PORT_CONFNAME( 0x20, 0x00, "(C65) Caps Lock (switch)") PORT_CODE(KEYCODE_F3)
213   PORT_CONFSETTING(   0x00, DEF_STR( Off ) )
214   PORT_CONFSETTING(   0x20, DEF_STR( On ) )
215   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
135216
136   PORT_INCLUDE( c64_controls )            /* CTRLSEL, JOY0, JOY1, PADDLE0 -> PADDLE3, TRACKX, TRACKY, LIGHTX, LIGHTY, OTHER */
137INPUT_PORTS_END
217   PORT_START("CTRLSEL")   /* Controller selection */
218   PORT_CONFNAME( 0x07, 0x00, "Gameport A" )
219   PORT_CONFSETTING( 0x00, DEF_STR( Joystick ) )
220   PORT_CONFSETTING( 0x01, "Paddles 1 & 2" )
221   PORT_CONFSETTING( 0x02, "Mouse 1351" )
222   PORT_CONFSETTING( 0x03, "Mouse (Non Proportional) 1350" )
223   PORT_CONFSETTING( 0x04, "Lightpen" )
224//  PORT_CONFSETTING( 0x05, "Koala Pad" )
225   PORT_CONFSETTING( 0x06, "Lightgun" )
226   PORT_CONFSETTING( 0x07, "No Device Connected" )
227   PORT_CONFNAME( 0x70, 0x00, "Gameport B" )
228   PORT_CONFSETTING( 0x00, DEF_STR( Joystick ) )
229   PORT_CONFSETTING( 0x10, "Paddles 3 & 4" )
230//  PORT_CONFSETTING( 0x20, "Mouse 1351" )
231//  PORT_CONFSETTING( 0x30, "Mouse (Non Proportional) 1350" )
232   PORT_CONFSETTING( 0x70, "No Device Connected" )
233   PORT_CONFNAME( 0x80, 0x00, "Swap Gameport A and B") PORT_CODE(KEYCODE_F1) PORT_TOGGLE
234   PORT_CONFSETTING(   0x00, DEF_STR( No ) )
235   PORT_CONFSETTING(   0x80, DEF_STR( Yes ) )
138236
237   PORT_START("JOY1_1B")
238   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
239   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
240   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
241   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
242   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
243   PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
139244
245   PORT_START("JOY2_1B")
246   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_HOME) PORT_CODE(JOYCODE_Y_UP_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
247   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_END) PORT_CODE(JOYCODE_Y_DOWN_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
248   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_DEL) PORT_CODE(JOYCODE_X_LEFT_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
249   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_PGDN) PORT_CODE(JOYCODE_X_RIGHT_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
250   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_INSERT) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
251   PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
252
253   /* Mouse Commodore 1350 was basically working as a Joystick */
254   PORT_START("JOY1_2B")
255   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("Mouse 1350 Up") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
256   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("Mouse 1350 Down") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
257   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("Mouse 1350 Left") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
258   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("Mouse 1350 Right") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
259   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Mouse 1350 Button 1") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
260   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Mouse 1350 Button 2") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
261   PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
262
263   /* Still to verify how many mices you were able to plug into a c64 */
264   /* Only one, for now */
265   PORT_START("JOY2_2B")
266   PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
267/*  PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_HOME) PORT_CODE(JOYCODE_Y_UP_SWITCH)
268    PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_END) PORT_CODE(JOYCODE_Y_DOWN_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
269    PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_DEL) PORT_CODE(JOYCODE_X_LEFT_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
270    PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_PGDN) PORT_CODE(JOYCODE_X_RIGHT_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
271    PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_INSERT) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
272    PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_PGUP) PORT_CODE(JOYCODE_BUTTON2) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
273    PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
274*/
275   PORT_START("PADDLE1")
276   PORT_BIT( 0xff, 128, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_MINMAX(0,255) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_LEFT) PORT_CODE_INC(KEYCODE_RIGHT) PORT_CODE_DEC(JOYCODE_X_LEFT_SWITCH) PORT_CODE_INC(JOYCODE_X_RIGHT_SWITCH) PORT_PLAYER(1) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x01)
277
278   PORT_START("PADDLE2")
279   PORT_BIT( 0xff, 128, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_MINMAX(0,255) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_DOWN) PORT_CODE_INC(KEYCODE_UP) PORT_CODE_DEC(JOYCODE_Y_UP_SWITCH) PORT_CODE_INC(JOYCODE_Y_DOWN_SWITCH) PORT_PLAYER(2) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x01)
280
281   PORT_START("PADDLE3")
282   PORT_BIT( 0xff, 128, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_MINMAX(0,255) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_HOME) PORT_CODE_INC(KEYCODE_PGUP) PORT_PLAYER(3) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x10)
283
284   PORT_START("PADDLE4")
285   PORT_BIT( 0xff, 128, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_MINMAX(0,255) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_END) PORT_CODE_INC(KEYCODE_PGDN) PORT_PLAYER(4) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x10)
286
287   PORT_START("TRACKX")
288   PORT_BIT( 0x7e, 0x00, IPT_TRACKBALL_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x02)
289
290   PORT_START("TRACKY")
291   PORT_BIT( 0x7e, 0x00, IPT_TRACKBALL_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x02)
292
293   PORT_START("LIGHTX")
294   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X) PORT_NAME("Lightpen X Axis") PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x04)
295
296   PORT_START("LIGHTY")
297   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y) PORT_NAME("Lightpen Y Axis") PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x04)
298
299   PORT_START("OTHER")
300   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Paddle 1 Button") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x01)
301   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Paddle 2 Button") PORT_CODE(KEYCODE_LALT) PORT_CODE(JOYCODE_BUTTON2) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x01)
302   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Paddle 3 Button") PORT_CODE(KEYCODE_INSERT) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x10)
303   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_NAME("Paddle 4 Button") PORT_CODE(KEYCODE_DEL) PORT_CODE(JOYCODE_BUTTON2) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x10)
304   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Lightpen Signal") PORT_CODE(KEYCODE_LCONTROL) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x04)
305   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Mouse Button Left") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x02)
306   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Mouse Button Right") PORT_CODE(KEYCODE_LALT) PORT_CODE(JOYCODE_BUTTON2) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x02)INPUT_PORTS_END
307
308
140309static INPUT_PORTS_START( c65ger )
141310   PORT_INCLUDE( c65 )
142311
trunk/src/mess/drivers/plus4.c
r25373r25374
654654}
655655
656656
657//-------------------------------------------------
658//  SLOT_INTERFACE( cbm_datassette_devices )
659//-------------------------------------------------
657660
661SLOT_INTERFACE_START( plus4_datassette_devices )
662   SLOT_INTERFACE("c1531", C1531)
663   SLOT_INTERFACE("diag264", DIAG264_CASSETTE_LOOPBACK)
664SLOT_INTERFACE_END
665
666
667
658668//**************************************************************************
659669//  MACHINE INITIALIZATION
660670//**************************************************************************
trunk/src/mess/drivers/c128.c
r25373r25374
13271327}
13281328
13291329
1330//-------------------------------------------------
1331//  SLOT_INTERFACE( c128dcr_iec_devices )
1332//-------------------------------------------------
13301333
1334SLOT_INTERFACE_START( c128dcr_iec_devices )
1335   SLOT_INTERFACE("c1571", C1571)
1336   SLOT_INTERFACE("c1571cr", C1571CR)
1337SLOT_INTERFACE_END
1338
1339
1340//-------------------------------------------------
1341//  SLOT_INTERFACE( c128d81_iec_devices )
1342//-------------------------------------------------
1343
1344SLOT_INTERFACE_START( c128d81_iec_devices )
1345   SLOT_INTERFACE("c1563", C1563)
1346SLOT_INTERFACE_END
1347
1348
1349
13311350//**************************************************************************
13321351//  MACHINE INITIALIZATION
13331352//**************************************************************************
trunk/src/mess/drivers/pet.c
r25373r25374
12691269};
12701270
12711271
1272//-------------------------------------------------
1273//  SLOT_INTERFACE( cbm8296d_ieee488_devices )
1274//-------------------------------------------------
12721275
1276SLOT_INTERFACE_START( cbm8296d_ieee488_devices )
1277   SLOT_INTERFACE("c8250lp", C8250LP)
1278SLOT_INTERFACE_END
1279
1280
1281
12731282//**************************************************************************
12741283//  MACHINE INITIALIZATION
12751284//**************************************************************************
trunk/src/mess/drivers/primo.c
r25373r25374
114114#include "imagedev/cartslot.h"
115115#include "formats/primoptp.h"
116116#include "machine/cbmiec.h"
117#include "machine/cbmipt.h"
118117
119118static ADDRESS_MAP_START( primoa_port, AS_IO, 8, primo_state )
120119   ADDRESS_MAP_GLOBAL_MASK(0xff)
trunk/src/mess/machine/cbmipt.c
r25373r25374
1/**********************************************************************************
2 *
3 *      machine/cbmipt.c
4 *
5 *              Input port macros shared by various CBM computers
6 *
7 *
8 *      TO DO:
9 *
10 *      - investigate C128 input problem with Left Shift / Shift Lock
11 *      - investigate superpet different reading of Caps Lock (check machine/pet.c)
12 *      - move here lightpen inputs from vc20.c, eventually
13 *      - clean up the "SPECIAL" and "CFG" input ports (e.g. there a quite a lot
14 *        of settings that are not checked anymore! we have either to implement
15 *        the features properly or, if they're hacks, to remove them)
16 *
17 *********************************************************************************/
18
19#include "emu.h"
20#include "machine/cbmipt.h"
21
22
23/***************************** Commodore 64 ****************************************
24 *
25 *  - common_cbm_keyboard: C64 keyboard; used by C16, C65 and C128 as well
26 *  - c64_special: input port for the Restore key and the Shift Lock Switch
27 *  - c64_controls: joypads, paddles and lightpen; shared with C65, C128
28 *          and CBMB
29 *
30 **********************************************************************************/
31
32/*
33
34C64 Keyboard Layout
35-------------------
36
37                                                                           CLR    INST
38    <-   1!   2"   3#   4$   5%   6&   7'   8(   9)   0     +    -    ?    HOME   DEL           f 1
39
40
41    CTRL   Q    W    E    R    T     Y    U    I    O    P    @    *     UP    RESTORE          f 3
42
43RUN   SHIFT
44STOP  LOCK   A    S    D    F     G     H    J    K    L   :[   ;]    =      RETURN             f 5
45
46                                                                           CRSR  CRSR
47C=    SHIFT     Z    X    C    V    B     N    M    ,<   .>   /?   SHIFT   U/D    L/R           f 7
48
49
50                                 SPACEBAR
51
52
53Notes: "C=" is a key with the Commodore logo, "UP" is an arrow pointing up, the "CRSR" keys at the
54bottom-right corner are used to move the cursor on screen (Up/Down and Left/Right resp.).
55*/
56
57
58INPUT_PORTS_START( common_cbm_keyboard )
59   PORT_START( "ROW0" )
60   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Crsr Down Up") PORT_CODE(KEYCODE_RALT)        PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CHAR(UCHAR_MAMEKEY(UP))
61   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3)                                    PORT_CHAR(UCHAR_MAMEKEY(F5))
62   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2)                                    PORT_CHAR(UCHAR_MAMEKEY(F3))
63   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1)                                    PORT_CHAR(UCHAR_MAMEKEY(F1))
64   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4)                                    PORT_CHAR(UCHAR_MAMEKEY(F7))
65   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Crsr Right Left") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
66   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER)             PORT_CHAR(13)
67   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("INST DEL") PORT_CODE(KEYCODE_BACKSPACE)       PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
68
69   PORT_START( "ROW1" )
70   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift (Left)") PORT_CODE(KEYCODE_LSHIFT)      PORT_CHAR(UCHAR_SHIFT_1)
71   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E)         PORT_CHAR('E')
72   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S)         PORT_CHAR('S')
73   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z)         PORT_CHAR('Z')
74   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4)         PORT_CHAR('4') PORT_CHAR('$')
75   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A)         PORT_CHAR('A')
76   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W)         PORT_CHAR('W')
77   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3)         PORT_CHAR('3') PORT_CHAR('#')
78
79   PORT_START( "ROW2" )
80   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X)         PORT_CHAR('X')
81   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T)         PORT_CHAR('T')
82   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F)         PORT_CHAR('F')
83   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C)         PORT_CHAR('C')
84   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6)         PORT_CHAR('6') PORT_CHAR('&')
85   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D)         PORT_CHAR('D')
86   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R)         PORT_CHAR('R')
87   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5)         PORT_CHAR('5') PORT_CHAR('%')
88
89   PORT_START( "ROW3" )
90   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V)         PORT_CHAR('V')
91   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U)         PORT_CHAR('U')
92   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H)         PORT_CHAR('H')
93   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B)         PORT_CHAR('B')
94   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8)         PORT_CHAR('8') PORT_CHAR('(')
95   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G)         PORT_CHAR('G')
96   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y)         PORT_CHAR('Y')
97   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7)         PORT_CHAR('7') PORT_CHAR('\'')
98
99   PORT_START( "ROW4" )
100   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N)         PORT_CHAR('N')
101   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O)         PORT_CHAR('O')
102   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K)         PORT_CHAR('K')
103   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M)         PORT_CHAR('M')
104   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0)         PORT_CHAR('0')
105   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J)         PORT_CHAR('J')
106   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I)         PORT_CHAR('I')
107   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9)         PORT_CHAR('9') PORT_CHAR(')')
108
109   PORT_START( "ROW5" )
110   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA)     PORT_CHAR(',') PORT_CHAR('<')
111   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@')
112   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON)     PORT_CHAR(':') PORT_CHAR('[')
113   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP)      PORT_CHAR('.') PORT_CHAR('>')
114   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS)    PORT_CHAR('-')
115   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L)         PORT_CHAR('L')
116   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P)         PORT_CHAR('P')
117   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS)     PORT_CHAR('+')
118
119   PORT_START( "ROW6" )
120   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH)                             PORT_CHAR('/') PORT_CHAR('?')
121   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91  Pi") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x2191) PORT_CHAR(0x03C0)
122   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH)                         PORT_CHAR('=')
123   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift (Right)") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
124   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("CLR HOME") PORT_CODE(KEYCODE_INSERT)      PORT_CHAR(UCHAR_MAMEKEY(HOME))
125   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE)                             PORT_CHAR(';') PORT_CHAR(']')
126   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE)                        PORT_CHAR('*')
127   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH2)                        PORT_CHAR('\xA3')
128
129   PORT_START( "ROW7" )
130   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RUN STOP") PORT_CODE(KEYCODE_HOME)
131   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q)                                 PORT_CHAR('Q')
132   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("CBM") PORT_CODE(KEYCODE_LALT)
133   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE)                             PORT_CHAR(' ')
134   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2)                                 PORT_CHAR('2') PORT_CHAR('"')
135   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB)                               PORT_CHAR(UCHAR_SHIFT_2)
136   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x90") PORT_CODE(KEYCODE_TILDE)   PORT_CHAR(0x2190)
137   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1)                                 PORT_CHAR('1') PORT_CHAR('!')
138INPUT_PORTS_END
139
140
141INPUT_PORTS_START( c64_special )
142   PORT_START( "SPECIAL" )  /* special keys */
143   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RESTORE") PORT_CODE(KEYCODE_PRTSCR)
144   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("SHIFT LOCK") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
145   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
146   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
147INPUT_PORTS_END
148
149
150INPUT_PORTS_START( c64_controls )
151   PORT_START("CTRLSEL")   /* Controller selection */
152   PORT_CONFNAME( 0x07, 0x00, "Gameport A" )
153   PORT_CONFSETTING( 0x00, DEF_STR( Joystick ) )
154   PORT_CONFSETTING( 0x01, "Paddles 1 & 2" )
155   PORT_CONFSETTING( 0x02, "Mouse 1351" )
156   PORT_CONFSETTING( 0x03, "Mouse (Non Proportional) 1350" )
157   PORT_CONFSETTING( 0x04, "Lightpen" )
158//  PORT_CONFSETTING( 0x05, "Koala Pad" )
159   PORT_CONFSETTING( 0x06, "Lightgun" )
160   PORT_CONFSETTING( 0x07, "No Device Connected" )
161   PORT_CONFNAME( 0x70, 0x00, "Gameport B" )
162   PORT_CONFSETTING( 0x00, DEF_STR( Joystick ) )
163   PORT_CONFSETTING( 0x10, "Paddles 3 & 4" )
164//  PORT_CONFSETTING( 0x20, "Mouse 1351" )
165//  PORT_CONFSETTING( 0x30, "Mouse (Non Proportional) 1350" )
166   PORT_CONFSETTING( 0x70, "No Device Connected" )
167   PORT_CONFNAME( 0x80, 0x00, "Swap Gameport A and B") PORT_CODE(KEYCODE_F1) PORT_TOGGLE
168   PORT_CONFSETTING(   0x00, DEF_STR( No ) )
169   PORT_CONFSETTING(   0x80, DEF_STR( Yes ) )
170
171   PORT_START("JOY1_1B")
172   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
173   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
174   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
175   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
176   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
177   PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
178
179   PORT_START("JOY2_1B")
180   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_HOME) PORT_CODE(JOYCODE_Y_UP_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
181   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_END) PORT_CODE(JOYCODE_Y_DOWN_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
182   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_DEL) PORT_CODE(JOYCODE_X_LEFT_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
183   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_PGDN) PORT_CODE(JOYCODE_X_RIGHT_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
184   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_INSERT) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
185   PORT_BIT( 0xe0, IP_ACTIVE_HIGH, IPT_UNUSED )
186
187   /* Mouse Commodore 1350 was basically working as a Joystick */
188   PORT_START("JOY1_2B")
189   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("Mouse 1350 Up") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
190   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("Mouse 1350 Down") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
191   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("Mouse 1350 Left") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
192   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) PORT_NAME("Mouse 1350 Right") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
193   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Mouse 1350 Button 1") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
194   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Mouse 1350 Button 2") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x03)
195   PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
196
197   /* Still to verify how many mices you were able to plug into a c64 */
198   /* Only one, for now */
199   PORT_START("JOY2_2B")
200   PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
201/*  PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_HOME) PORT_CODE(JOYCODE_Y_UP_SWITCH)
202    PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_END) PORT_CODE(JOYCODE_Y_DOWN_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
203    PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_DEL) PORT_CODE(JOYCODE_X_LEFT_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
204    PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) PORT_CODE(KEYCODE_PGDN) PORT_CODE(JOYCODE_X_RIGHT_SWITCH) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
205    PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_INSERT) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
206    PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2) PORT_CODE(KEYCODE_PGUP) PORT_CODE(JOYCODE_BUTTON2) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x30)
207    PORT_BIT( 0xc0, IP_ACTIVE_HIGH, IPT_UNUSED )
208*/
209   PORT_START("PADDLE1")
210   PORT_BIT( 0xff, 128, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_MINMAX(0,255) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_LEFT) PORT_CODE_INC(KEYCODE_RIGHT) PORT_CODE_DEC(JOYCODE_X_LEFT_SWITCH) PORT_CODE_INC(JOYCODE_X_RIGHT_SWITCH) PORT_PLAYER(1) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x01)
211
212   PORT_START("PADDLE2")
213   PORT_BIT( 0xff, 128, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_MINMAX(0,255) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_DOWN) PORT_CODE_INC(KEYCODE_UP) PORT_CODE_DEC(JOYCODE_Y_UP_SWITCH) PORT_CODE_INC(JOYCODE_Y_DOWN_SWITCH) PORT_PLAYER(2) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x01)
214
215   PORT_START("PADDLE3")
216   PORT_BIT( 0xff, 128, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_MINMAX(0,255) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_HOME) PORT_CODE_INC(KEYCODE_PGUP) PORT_PLAYER(3) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x10)
217
218   PORT_START("PADDLE4")
219   PORT_BIT( 0xff, 128, IPT_PADDLE) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_MINMAX(0,255) PORT_CENTERDELTA(0) PORT_CODE_DEC(KEYCODE_END) PORT_CODE_INC(KEYCODE_PGDN) PORT_PLAYER(4) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x10)
220
221   PORT_START("TRACKX")
222   PORT_BIT( 0x7e, 0x00, IPT_TRACKBALL_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x02)
223
224   PORT_START("TRACKY")
225   PORT_BIT( 0x7e, 0x00, IPT_TRACKBALL_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(0) PORT_PLAYER(1) PORT_REVERSE PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x02)
226
227   PORT_START("LIGHTX")
228   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X) PORT_NAME("Lightpen X Axis") PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x04)
229
230   PORT_START("LIGHTY")
231   PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y) PORT_NAME("Lightpen Y Axis") PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(30) PORT_KEYDELTA(20) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x04)
232
233   PORT_START("OTHER")
234   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Paddle 1 Button") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x01)
235   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Paddle 2 Button") PORT_CODE(KEYCODE_LALT) PORT_CODE(JOYCODE_BUTTON2) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x01)
236   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Paddle 3 Button") PORT_CODE(KEYCODE_INSERT) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x10)
237   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON4) PORT_NAME("Paddle 4 Button") PORT_CODE(KEYCODE_DEL) PORT_CODE(JOYCODE_BUTTON2) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x10)
238   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Lightpen Signal") PORT_CODE(KEYCODE_LCONTROL) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x04)
239   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("Mouse Button Left") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(JOYCODE_BUTTON1) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x02)
240   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_NAME("Mouse Button Right") PORT_CODE(KEYCODE_LALT) PORT_CODE(JOYCODE_BUTTON2) PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x02)
241INPUT_PORTS_END
242
243
244/***************************** Commodore 16 ****************************************
245 *
246 *  - C16 shares Keyboard with C64 (only few changes, see c16.c)
247 *  - c16_special: input port for the Shift Lock Switch
248 *  - c16_controls: control inputs
249 *
250 **********************************************************************************/
251
252/*
253
254C16 Keyboard Layout
255-------------------
256
257                                                                                   INST
258     ESC   1!   2"   3#   4$   5%   6&   7'   8(   9)   0^  LEFT RIGHT  UP  DOWN    DEL           f 1
259
260                                                                                  CLEAR
261      CTRL   Q    W    E    R    T     Y    U    I    O    P    @    +     -      HOME            f 3
262
263  RUN   SHIFT
264  STOP  LOCK   A    S    D    F     G     H    J    K    L   :[   ;]    *      RETURN             f 5
265
266
267  C=    SHIFT     Z    X    C    V    B     N    M    ,<   .>   /?   SHIFT     ?     =            HELP
268
269
270                                 SPACEBAR
271
272
273Notes: "C=" is a key with the Commodore logo, Shift+0 produces an arrow pointing up (''^'' above).
274
275C116 Keyboard Layout
276--------------------
277
278           F1/F4      F2/F5     F3/F6    HELP/F7     HOME/CLEAR   DEL/INST
279
280
281     ESC   1!   2"   3#   4$   5%   6&   7'   8(   9)   0^   +    -     *
282
283
284   CONTROL   Q    W    E    R    T     Y    U    I    O    P    @   RETURN
285
286  RUN
287  STOP    ??    A    S    D    F     G     H    J    K    L   :[   ;]    =
288
289
290  C=    SHIFT     Z    X    C    V    B     N    M    ,<   .>   /?   SHIFT
291                                                                                    UP
292                                                                             LEFT       RIGHT
293                                 SPACEBAR                                          DOWN
294
295
296Plus/4 (also 232/264/364 proto)
297-----------------------------------
298
299           F1/F4      F2/F5     F3/F6    HELP/F7
300
301                                                                            CLEAR   INST
302     ESC   1!   2"   3#   4$   5%   6&   7'   8(   9)   0^   +    -     =    HOME    DEL        ||      @  +  -  =
303                                                                                                ||
304                                                                                                ||
305   CONTROL   Q    W    E    R    T     Y    U    I    O    P    @    ?     *    CONTROL         ||      7  8  9  *
306                                                                                                ||
307  RUN   SHIFT                                                                                   ||
308  STOP  LOCK   A    S    D    F     G     H    J    K    L   :[   ;]    RETURN                  ||      4  5  6  /
309                                                                                                ||
310                                                                                                ||               E
311  C=    SHIFT     Z    X    C    V    B     N    M    ,<   .>   /?   SHIFT                      ||      1  2  3  n
312                                                                                UP              ||               t
313                                                                          LEFT       RIGHT      ||               e
314                                 SPACEBAR                                      DOWN             ||      0  .  :  r
315
316The 19-keys keypad on the left was present only in the 364 prototype (but probably those
317keys were simply wired to the lines of regular number keys of the keyboard).
318
319*/
320
321INPUT_PORTS_START( c16_special )
322   PORT_START("SPECIAL")
323   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift Lock (switch)") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
324   PORT_CONFNAME( 0x40, 0x00, "Swap Gameport 1 and 2") PORT_CODE(KEYCODE_F1) PORT_TOGGLE
325   PORT_CONFSETTING(   0x00, DEF_STR( No ) )
326   PORT_CONFSETTING(   0x40, DEF_STR( Yes ) )
327INPUT_PORTS_END
328
329
330INPUT_PORTS_START( c16_controls )
331   PORT_START("CTRLSEL")   /* Controller selection */
332   PORT_CONFNAME( 0x01, 0x00, "Gameport 1" )
333   PORT_CONFSETTING( 0x00, DEF_STR( Joystick ) )
334   PORT_CONFSETTING( 0x01, "No Device Connected" )
335   PORT_CONFNAME( 0x10, 0x00, "Gameport 2" )
336   PORT_CONFSETTING( 0x00, DEF_STR( Joystick ) )
337   PORT_CONFSETTING( 0x10, "No Device Connected" )
338
339   PORT_START("JOY0")
340   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_NAME("P1 Up") PORT_8WAY PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
341   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_NAME("P1 Down") PORT_8WAY PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
342   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_NAME("P1 Left") PORT_8WAY PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
343   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_NAME("P1 Right") PORT_8WAY PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
344   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("P1 Button") PORT_CONDITION("CTRLSEL", 0x0f, EQUALS, 0x00)
345
346   PORT_START("JOY1")
347   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_NAME("P2 Up") PORT_CODE(KEYCODE_HOME) PORT_CODE(JOYCODE_Y_UP_SWITCH) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
348   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_NAME("P2 Down") PORT_CODE(KEYCODE_END) PORT_CODE(JOYCODE_Y_DOWN_SWITCH) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
349   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT) PORT_NAME("P2 Left") PORT_CODE(KEYCODE_DEL) PORT_CODE(JOYCODE_X_LEFT_SWITCH) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
350   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_NAME("P2 Right") PORT_CODE(KEYCODE_PGDN) PORT_CODE(JOYCODE_X_RIGHT_SWITCH) PORT_8WAY PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
351   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("P2 Button") PORT_CODE(KEYCODE_LALT) PORT_CODE(JOYCODE_BUTTON1) PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0xf0, EQUALS, 0x00)
352INPUT_PORTS_END
353
354
355/***************************** Commodore 128 ***************************************
356 *
357 *  - C128 shares Controls and Keyboard with C64 (+ a keypad, see c128.c)
358 *  - c128_special: input port for the Restore key and the Shift Lock,
359 *          TV/RGBI and 40/80 columns switches
360 *
361 **********************************************************************************/
362
363/*
364
365C128 Keyboard Layout
366--------------------
367
368
369                    CAPS                 LINE   40/80    NO
370     ESC  TAB  ALT  LOCK           HELP  FEED  DISPLAY SCROLL      UP  DOWN  LEFT  RIGHT          F1  F3  F5  F7
371
372                                                                             CLR    INST
373      <-   1!   2"   3#   4$   5%   6&   7'   8(   9)   0     +    -    ?    HOME   DEL           7   8   9   +
374
375
376   CONTROL   Q    W    E    R    T     Y    U    I    O    P    @    *     UP    RESTORE          4   5   6   -
377
378  RUN   SHIFT                                                                                                 E
379  STOP  LOCK   A    S    D    F     G     H    J    K    L   :[   ;]    =      RETURN             1   2   3   n
380                                                                                                              t
381                                                                             CRSR  CRSR                       e
382  C=    SHIFT     Z    X    C    V    B     N    M    ,<   .>   /?   SHIFT   U/D    L/R             0     .   r
383
384
385                                   SPACEBAR
386
387Notes: "C=" is a key with the Commodore logo, "UP" is an arrow pointing up, the "CRSR" keys at the bottom-right
388corner are used to move the cursor on screen (Up/Down and Left/Right resp.).
389
390*/
391
392
393
394/***************************** Commodore 65 ****************************************
395 *
396 *  - C65 shares Keyboard and Inputs with C64 (+ some function keys, see c65.c)
397 *  - c65_special: input port for the Restore key and the Shift Lock and DIN
398 *          switches
399 *
400 **********************************************************************************/
401
402/*
403
404C65 Keyboard Layout
405-------------------
406
407    RUN                  CAPS    NO
408    STOP       ESC  ALT  LOCK  SCROLL    F1   F3   F5   F7        F9    F11   F13   HELP
409
410                                                                             CLR    INST
411      <-   1!   2"   3#   4$   5%   6&   7'   8(   9)   0     +    -    ??    HOME   DEL
412
413
414   TAB       Q    W    E    R    T     Y    U    I    O    P    @    *     UP    RESTORE
415
416        SHIFT
417  CTRL  LOCK   A    S    D    F     G     H    J    K    L   :[   ;]    =      RETURN
418
419
420  C=    SHIFT     Z    X    C    V    B     N    M    ,<   .>   /?   SHIFT   UP
421
422
423                                   SPACEBAR                           LEFT  DOWN  RIGHT
424
425Notes: "C=" is a key with the Commodore logo, "UP" is an arrow pointing up.
426
427*/
428INPUT_PORTS_START( c65_special )
429   PORT_START( "SPECIAL" )  /* special keys */
430   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Restore") PORT_CODE(KEYCODE_PRTSCR)
431   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Shift Lock (switch)") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
432   PORT_CONFNAME( 0x20, 0x00, "(C65) Caps Lock (switch)") PORT_CODE(KEYCODE_F3)
433   PORT_CONFSETTING(   0x00, DEF_STR( Off ) )
434   PORT_CONFSETTING(   0x20, DEF_STR( On ) )
435   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
436INPUT_PORTS_END
437
438
439/***************************** Commodore Pet ***************************************
440 *
441 *  - pet_keyboard: original keyboard used by PET2001
442 *  - pet_business_keyboard: business keyboard is used by the other computers
443 *          in pet.c
444 *  - pet_special: input port for the Shift Lock Switch
445 *  - pet_config: memory and serial port configurations
446 *
447 **********************************************************************************/
448
449/*
450
451PET Keyboard Layout
452-------------------
453
454                                                                                CLR CRSR CRSR INST
455  @    !    "    #    $    %    '    &    \    (    )    <-    [    ]          HOME  U/D  L/R  DEL
456
457 RVS
458 OFF     Q    W    E    R    T     Y    U    I    O    P    UP   <    >          7    8    9    /
459
460  SHIFT                                                      STOP
461  LOCK     A    S    D    F     G     H    J    K    L   :   RUN  RETURN         4    5    6    *
462
463
464   SHIFT     Z    X    C    V    B     N    M     ,    ;   ?    SHIFT            1    2    3    +
465
466
467                                 SPACEBAR                                        0    .    -    =
468
469
470The PET Keypad has 16 keys, making impossible to map it in a satisfactory way to a PC keypad.
471Therefore, default settings for these keys in Full Emulation are currently based on the effect
472of the key and not on their real position
473
474
475PET Business Keyboard Layout
476----------------------------
477
478                                                                           CRSR  STOP
479    <-   1!   2"   3#   4$   5%   6&   7'   8(   9)   0     :*   -=   UP    L/R   RUN           7   8   9
480
481                                                                        CRSR    DEL
482    TAB    Q    W    E    R    T     Y    U    I    O    P    [    \    U/D    INST             4   5   6
483
484     SHIFT
485ESC   LOCK   A    S    D    F     G     H    J    K    L   ;+    @     ]      RETURN            1   2   3
486
487RVS                                                                                HOME
488OFF   SHIFT     Z    X    C    V    B     N    M    ,<   .>   /?   SHIFT   REPEAT   CLR           0     .
489
490
491                                   SPACEBAR
492
493*/
494
495INPUT_PORTS_START( pet_keyboard )
496   PORT_START( "ROW0" )
497   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Crsr Right Left") PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
498   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Home  Clr Screen") PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
499   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x90") PORT_CODE(KEYCODE_MINUS) PORT_CHAR(0x2190)
500   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9)          PORT_CHAR('(')
501   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7)          PORT_CHAR('&')
502   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5)          PORT_CHAR('%')
503   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3)          PORT_CHAR('#')
504   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1)          PORT_CHAR('!')
505
506   PORT_START( "ROW1" )
507   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Del  Inst") PORT_CODE(KEYCODE_DEL) PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
508   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Crsr Down Up") PORT_CODE(KEYCODE_PGUP) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CHAR(UCHAR_MAMEKEY(UP))
509   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
510   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0)          PORT_CHAR(')')
511   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8)          PORT_CHAR('\\')
512   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6)          PORT_CHAR('\'')
513   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4)          PORT_CHAR('$')
514   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2)          PORT_CHAR('"')
515
516   PORT_START( "ROW2" )
517   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9_PAD)      PORT_CHAR('9')
518   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD)      PORT_CHAR('7')
519   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91 Pi") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(0x2191) PORT_CHAR(0x03C0)
520   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O)          PORT_CHAR('O')
521   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U)          PORT_CHAR('U')
522   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T)          PORT_CHAR('T')
523   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E)          PORT_CHAR('E')
524   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q)          PORT_CHAR('Q')
525
526   PORT_START( "ROW3" )
527   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD)  PORT_CHAR('/')
528   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD)      PORT_CHAR('8')
529   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
530   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P)          PORT_CHAR('P')
531   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I)          PORT_CHAR('I')
532   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y)          PORT_CHAR('Y')
533   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R)          PORT_CHAR('R')
534   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W)          PORT_CHAR('W')
535
536   PORT_START( "ROW4" )
537   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD)      PORT_CHAR('6')
538   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD)      PORT_CHAR('4')
539   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
540   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L)          PORT_CHAR('L')
541   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J)          PORT_CHAR('J')
542   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G)          PORT_CHAR('G')
543   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D)          PORT_CHAR('D')
544   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A)          PORT_CHAR('A')
545
546   PORT_START( "ROW5" )
547   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK)   PORT_CHAR('*')
548   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD)      PORT_CHAR('5')
549   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
550   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON)      PORT_CHAR(':')
551   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K)          PORT_CHAR('K')
552   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H)          PORT_CHAR('H')
553   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F)          PORT_CHAR('F')
554   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S)          PORT_CHAR('S')
555
556   PORT_START( "ROW6" )
557   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD)      PORT_CHAR('3')
558   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD)      PORT_CHAR('1')
559   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
560   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP)       PORT_CHAR(';')
561   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M)          PORT_CHAR('M')
562   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B)          PORT_CHAR('B')
563   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C)          PORT_CHAR('C')
564   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z)          PORT_CHAR('Z')
565
566   PORT_START( "ROW7" )
567   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD)   PORT_CHAR('+')
568   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD)      PORT_CHAR('2')
569   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
570   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH)      PORT_CHAR('?')
571   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA)      PORT_CHAR(',')
572   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N)          PORT_CHAR('N')
573   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V)          PORT_CHAR('V')
574   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X)          PORT_CHAR('X')
575
576   PORT_START( "ROW8" )
577   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD)  PORT_CHAR('-')
578   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD)      PORT_CHAR('0')
579   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Shift (Right)") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
580   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH)  PORT_CHAR('>')
581   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
582   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSPACE)  PORT_CHAR(']')
583   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TILDE)      PORT_CHAR('@')
584   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Shift (Left)") PORT_CODE(KEYCODE_LSHIFT)
585
586   PORT_START( "ROW9" )
587   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad =") PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR('=')
588   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL_PAD)    PORT_CHAR('.')
589   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
590   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Stop Run") PORT_CODE(KEYCODE_QUOTE)
591   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('<')
592   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE)      PORT_CHAR(' ')
593   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS)     PORT_CHAR('[')
594   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Rvs Off") PORT_CODE(KEYCODE_TAB)
595INPUT_PORTS_END
596
597
598INPUT_PORTS_START( pet_business_keyboard )
599   PORT_START( "ROW0" )
600   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
601   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
602   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Crsr Right Left") PORT_CODE(KEYCODE_PGUP) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
603   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD)      PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
604   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS)     PORT_CHAR('-') PORT_CHAR('=')
605   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8)          PORT_CHAR('8') PORT_CHAR('\\')
606   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5)          PORT_CHAR('5') PORT_CHAR('%')
607   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2)          PORT_CHAR('2') PORT_CHAR('"')
608
609   PORT_START( "ROW1" )
610   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9_PAD)      PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
611   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
612   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(0x2191)
613   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD)      PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
614   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD)      PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
615   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7)          PORT_CHAR('7') PORT_CHAR('&')
616   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4)          PORT_CHAR('4') PORT_CHAR('$')
617   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1)          PORT_CHAR('1') PORT_CHAR('!')
618
619   PORT_START( "ROW2" )
620   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD)      PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
621   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON)      PORT_CHAR(';') PORT_CHAR('+')
622   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K)          PORT_CHAR('K')
623   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH)  PORT_CHAR(']')
624   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H)          PORT_CHAR('H')
625   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F)          PORT_CHAR('F')
626   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S)          PORT_CHAR('S')
627   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ESC)        PORT_CHAR(UCHAR_MAMEKEY(ESC))
628
629   PORT_START( "ROW3" )
630   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD)      PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
631   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE)      PORT_CHAR('@')
632   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L)          PORT_CHAR('L')
633   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
634   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J)          PORT_CHAR('J')
635   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G)          PORT_CHAR('G')
636   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D)          PORT_CHAR('D')
637   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A)          PORT_CHAR('A')
638
639   PORT_START( "ROW4" )
640   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Del  Inst") PORT_CODE(KEYCODE_DEL) PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
641   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P)          PORT_CHAR('P')
642   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I)          PORT_CHAR('I')
643   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('\\')
644   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y)          PORT_CHAR('Y')
645   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R)          PORT_CHAR('R')
646   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W)          PORT_CHAR('W')
647   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB)        PORT_CHAR('\t')
648
649   PORT_START( "ROW5" )
650   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD)      PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
651   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE)  PORT_CHAR('[')
652   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O)          PORT_CHAR('O')
653   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Crsr Down Up") PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CHAR(UCHAR_MAMEKEY(UP))
654   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U)          PORT_CHAR('U')
655   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T)          PORT_CHAR('T')
656   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E)          PORT_CHAR('E')
657   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q)          PORT_CHAR('Q')
658
659   PORT_START( "ROW6" )
660   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD)      PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
661   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Shift (Right)") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
662   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
663   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL_PAD)    PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
664   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP)       PORT_CHAR('.') PORT_CHAR('>')
665   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B)          PORT_CHAR('B')
666   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C)          PORT_CHAR('C')
667   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Shift (Left)") PORT_CODE(KEYCODE_LSHIFT)
668
669   PORT_START( "ROW7" )
670   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD)      PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
671   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Repeat") PORT_CODE(KEYCODE_LALT)
672   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
673   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0)          PORT_CHAR('0') PORT_CHAR(')')
674   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA)      PORT_CHAR(',') PORT_CHAR('<')
675   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N)          PORT_CHAR('N')
676   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V)          PORT_CHAR('V')
677   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z)          PORT_CHAR('Z')
678
679   PORT_START( "ROW8" )
680   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD)      PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
681   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH)      PORT_CHAR('/') PORT_CHAR('?')
682   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNUSED )
683   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Home  Clr Screen") PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
684   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M)          PORT_CHAR('M')
685   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE)      PORT_CHAR(' ')
686   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X)          PORT_CHAR('X')
687   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Rvs Off") PORT_CODE(KEYCODE_INSERT)
688
689   PORT_START( "ROW9" )
690   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED )
691   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
692   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS)      PORT_CHAR(':') PORT_CHAR('*')
693   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Stop Run") PORT_CODE(KEYCODE_END)
694   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9)          PORT_CHAR('9') PORT_CHAR('(')
695   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6)          PORT_CHAR('6') PORT_CHAR('\'')
696   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3)          PORT_CHAR('3') PORT_CHAR('#')
697   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x90") PORT_CODE(KEYCODE_TILDE) PORT_CHAR(0x2190)
698INPUT_PORTS_END
699
700
701INPUT_PORTS_START( pet_special )
702   PORT_START( "SPECIAL" )     /* Special keys */
703   PORT_CONFNAME( 0x80, 0x00, "Shift Lock (switch)") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
704   PORT_CONFSETTING(0x00, DEF_STR( Off ) )
705   PORT_CONFSETTING(0x80, DEF_STR( On ) )
706INPUT_PORTS_END
707
708
709INPUT_PORTS_START( pet_config )
710   PORT_START("CFG")
711   PORT_CONFNAME( 0x180, 0x180, "Memory")
712   PORT_CONFSETTING(   0x000, "4 KByte" )
713   PORT_CONFSETTING(   0x080, "8 KByte" )
714   PORT_CONFSETTING(   0x100, "16 KByte" )
715   PORT_CONFSETTING(   0x180, "32 KByte" )
716   PORT_BIT( 0x08, 0x00, IPT_UNUSED ) /* no 8096 hardware */
717   PORT_BIT( 0x04, 0x00, IPT_UNUSED ) /* no superpet switch */
718   PORT_CONFNAME( 0x02, 0x02, "IEEE488 Bus/Dev 8/Floppy Sim")
719   PORT_CONFSETTING(   0x00, DEF_STR( No ) )
720   PORT_CONFSETTING(   0x02, DEF_STR( Yes ) )
721   PORT_CONFNAME( 0x01, 0x00, "IEEE488 Bus/Dev 9/Floppy Sim")
722   PORT_CONFSETTING(   0x00, DEF_STR( No ) )
723   PORT_CONFSETTING(   0x01, DEF_STR( Yes ) )
724INPUT_PORTS_END
725
726
727
728/***************************** Commodore CBMB **************************************
729 *
730 *  - CBMB machines share Controls (in particular Lightpen) with C64
731 *  - cbmb_keyboard: Keyboard used by all the models of this series
732 *  - cbmb_special: input port for the Shift Lock Switch
733 *
734 **********************************************************************************/
735
736/*
737
738CBMB Series Keyboard Layout (based on a CBM 610 keyboard)
739---------------------------------------------------------
740
741     F1    F2   F3   F4   F5   F6   F7   F8   F9  F10      DOWN  UP  LEFT  RIGHT     HOME/CLEAR   DEL/INST
742
743                                                                            INS
744     ESC   1!   2"   3#   4$   5%   6^   7&   8*   9(   0)   -   =+   <-?   DEL          ?   CE    .    /
745
746                                                                         ________
747     TAB     Q    W    E    R    T     Y    U    I    O    P    [    ]  | RETURN |       7    8    9    -
748                                                                        |__      |
749      SHIFT                                                                |     |
750      LOCK     A    S    D    F     G     H    J    K    L   ;:   '"   Pi  |     |       4    5    6    +
751                                                                           |_____|
752                                                                                                        E
753        SHIFT     Z    X    C    V    B     N    M    ,<   .>   /?   SHIFT   C=          1    2    3    n
754                                                                                                        t
755                                                                                                        e
756              CTRL               SPACEBAR                                              0      .    00   r
757
758
759Notes: "C=" is a key with the Commodore logo, Shift+6 produces an arrow pointing up ("^" above).
760
761
762*/
763
764INPUT_PORTS_START( cbmb_keyboard )
765   PORT_START("ROW0")
766   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Stop  Run") PORT_CODE(KEYCODE_DEL)
767   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("RVS Off") PORT_CODE(KEYCODE_HOME)
768   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Graph  Norm") PORT_CODE(KEYCODE_PGUP)
769   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Home  Clr") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(HOME))
770   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP)            PORT_CHAR(UCHAR_MAMEKEY(UP))
771   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN)          PORT_CHAR(UCHAR_MAMEKEY(DOWN))
772   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F10)           PORT_CHAR(UCHAR_MAMEKEY(F10))
773   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F9)            PORT_CHAR(UCHAR_MAMEKEY(F9))
774
775   PORT_START("ROW1")
776   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F8)            PORT_CHAR(UCHAR_MAMEKEY(F8))
777   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F7)            PORT_CHAR(UCHAR_MAMEKEY(F7))
778   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F6)            PORT_CHAR(UCHAR_MAMEKEY(F6))
779   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F5)            PORT_CHAR(UCHAR_MAMEKEY(F5))
780   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4)            PORT_CHAR(UCHAR_MAMEKEY(F4))
781   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3)            PORT_CHAR(UCHAR_MAMEKEY(F3))
782   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2)            PORT_CHAR(UCHAR_MAMEKEY(F2))
783   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1)            PORT_CHAR(UCHAR_MAMEKEY(F1))
784
785   PORT_START("ROW2")
786   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK)      PORT_CHAR(UCHAR_MAMEKEY(SLASH_PAD))
787   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH_PAD)     PORT_CHAR(UCHAR_MAMEKEY(ASTERISK))
788   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad CE") PORT_CODE(KEYCODE_NUMLOCK)
789   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad ?") PORT_CODE(KEYCODE_END)
790   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT)          PORT_CHAR(UCHAR_MAMEKEY(LEFT))
791   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS)        PORT_CHAR('=') PORT_CHAR('+')
792   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0)             PORT_CHAR('0') PORT_CHAR(')')
793   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9)             PORT_CHAR('9') PORT_CHAR('(')
794
795   PORT_START("ROW3")
796   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8)             PORT_CHAR('8') PORT_CHAR('*')
797   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7)             PORT_CHAR('7') PORT_CHAR('&')
798   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5)             PORT_CHAR('5') PORT_CHAR('%')
799   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4)             PORT_CHAR('4') PORT_CHAR('$')
800   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3)             PORT_CHAR('3') PORT_CHAR('#')
801   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2)             PORT_CHAR('2') PORT_CHAR('@')
802   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1)             PORT_CHAR('1') PORT_CHAR('!')
803   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ESC)           PORT_CHAR(UCHAR_MAMEKEY(ESC))
804
805   PORT_START("ROW4")
806   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD)     PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
807   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9_PAD)         PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
808   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD)         PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
809   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD)         PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
810   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT)         PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
811   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x90  \xC2\xA3") PORT_CODE(KEYCODE_TILDE) PORT_CHAR(0x2190) PORT_CHAR('\xA3')
812   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS)         PORT_CHAR('-')
813   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O)             PORT_CHAR('o') PORT_CHAR('O')
814
815   PORT_START("ROW5")
816   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I)             PORT_CHAR('i') PORT_CHAR('I')
817   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U)             PORT_CHAR('u') PORT_CHAR('U')
818   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6  \xE2\x86\x91") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR(0x2191)
819   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R)             PORT_CHAR('r') PORT_CHAR('R')
820   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E)             PORT_CHAR('e') PORT_CHAR('E')
821   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W)             PORT_CHAR('w') PORT_CHAR('W')
822   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q)             PORT_CHAR('q') PORT_CHAR('Q')
823   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB)           PORT_CHAR('\t')
824
825   PORT_START("ROW6")
826   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD)      PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
827   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD)         PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
828   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD)         PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
829   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD)         PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
830   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Del  Ins") PORT_CODE(KEYCODE_BACKSPACE)   PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
831   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE)    PORT_CHAR(']')
832   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P)             PORT_CHAR('p') PORT_CHAR('P')
833   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L)             PORT_CHAR('l') PORT_CHAR('L')
834
835   PORT_START("ROW7")
836   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K)             PORT_CHAR('k') PORT_CHAR('K')
837   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J)             PORT_CHAR('j') PORT_CHAR('J')
838   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y)             PORT_CHAR('y') PORT_CHAR('Y')
839   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T)             PORT_CHAR('t') PORT_CHAR('T')
840   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D)             PORT_CHAR('d') PORT_CHAR('D')
841   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S)             PORT_CHAR('s') PORT_CHAR('S')
842   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A)             PORT_CHAR('a') PORT_CHAR('A')
843   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
844
845   PORT_START("ROW8")
846   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER_PAD)     PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
847   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD)         PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
848   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD)         PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
849   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD)         PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
850   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("CBM") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(RALT))
851   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
852   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE)     PORT_CHAR('[')
853   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON)         PORT_CHAR(';') PORT_CHAR(':')
854
855   PORT_START("ROW9")
856   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA)         PORT_CHAR(',') PORT_CHAR('<')
857   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M)             PORT_CHAR('m') PORT_CHAR('M')
858   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H)             PORT_CHAR('h') PORT_CHAR('H')
859   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G)             PORT_CHAR('g') PORT_CHAR('G')
860   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F)             PORT_CHAR('f') PORT_CHAR('F')
861   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X)             PORT_CHAR('x') PORT_CHAR('X')
862   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z)             PORT_CHAR('z') PORT_CHAR('Z')
863   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
864
865   PORT_START("ROW10")
866   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED )
867   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Keypad 00") PORT_CODE(KEYCODE_PGDN)
868   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL_PAD)       PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
869   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD)         PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
870   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED )
871   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Pi") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(0x03C0)
872   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE)         PORT_CHAR('\'') PORT_CHAR('"')
873   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH)         PORT_CHAR('/') PORT_CHAR('?')
874
875   PORT_START("ROW11")
876   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP)          PORT_CHAR('.') PORT_CHAR('>')
877   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE)         PORT_CHAR(' ')
878   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N)             PORT_CHAR('n') PORT_CHAR('N')
879   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B)             PORT_CHAR('b') PORT_CHAR('B')
880   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V)             PORT_CHAR('v') PORT_CHAR('V')
881   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C)             PORT_CHAR('c') PORT_CHAR('C')
882   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED )
883   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2)
884INPUT_PORTS_END
885
886
887INPUT_PORTS_START( cbmb_special )
888   PORT_START("SPECIAL")
889   PORT_BIT( 0x200, 0x200, IPT_UNUSED ) /* ntsc */
890   PORT_BIT( 0x100, 0x000, IPT_UNUSED ) /* cbm600 */
891   PORT_CONFNAME( 0x04, 0x00, "Shift Lock (switch)") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
892   PORT_CONFSETTING(   0x00, DEF_STR( Off ) )
893   PORT_CONFSETTING(   0x04, DEF_STR( On ) )
894INPUT_PORTS_END
895
896
897   /***************************** Commodore Vic 20 ***********************************
898   *
899   *  - vic_keyboard: basic Vic 20 keyboard
900   *  - vic_special: input port for the Shift Lock Switch
901   *  - vic_controls: joypads and paddles
902   *  - VIC20 also has 2 lightpen ports, vic_lightpen_6560 & vic_lightpen_6561
903   *          currently in vic20.c (they need visible area parameters for centering)
904   *
905   **********************************************************************************/
906
907/*
908
909VIC20 Keyboard Layout
910---------------------
911
912                                                                           CLR    INST
913    <-   1!   2"   3#   4$   5%   6&   7'   8(   9)   0     +    -    ?    HOME   DEL           f 1
914
915
916    CTRL   Q    W    E    R    T     Y    U    I    O    P    @    *     UP    RESTORE          f 3
917
918RUN   SHIFT
919STOP  LOCK   A    S    D    F     G     H    J    K    L   :[   ;]    =      RETURN             f 5
920
921                                                                           CRSR  CRSR
922C=    SHIFT     Z    X    C    V    B     N    M    ,<   .>   /?   SHIFT   U/D    L/R           f 7
923
924
925                                 SPACEBAR
926
927
928Notes: "C=" is a key with the Commodore logo, "UP" is an arrow pointing up, the "CRSR" keys at the
929bottom-right corner are used to move the cursor on screen (Up/Down and Left/Right respectively).
930Notice that this is exactly the same layout of C64 keyboard.
931
932*/
933
934INPUT_PORTS_START( vic_keyboard )
935   PORT_START( "ROW0" )
936   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Del  Inst") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
937   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH2)     PORT_CHAR('\xA3')
938   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS)          PORT_CHAR('+')
939   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9)              PORT_CHAR('9') PORT_CHAR(')')
940   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7)              PORT_CHAR('7') PORT_CHAR('\'')
941   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5)              PORT_CHAR('5') PORT_CHAR('%')
942   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3)              PORT_CHAR('3') PORT_CHAR('#')
943   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1)              PORT_CHAR('1') PORT_CHAR('!')
944
945   PORT_START( "ROW1" )
946   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
947   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE)     PORT_CHAR('*')
948   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P)              PORT_CHAR('P')
949   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I)              PORT_CHAR('I')
950   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Y)              PORT_CHAR('Y')
951   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_R)              PORT_CHAR('R')
952   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W)              PORT_CHAR('W')
953   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x90") PORT_CODE(KEYCODE_TILDE) PORT_CHAR(0x2190)
954
955   PORT_START( "ROW2" )
956   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Crsr Right Left") PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
957   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE)          PORT_CHAR(';') PORT_CHAR(']')
958   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_L)              PORT_CHAR('L')
959   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J)              PORT_CHAR('J')
960   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_G)              PORT_CHAR('G')
961   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D)              PORT_CHAR('D')
962   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A)              PORT_CHAR('A')
963   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_TAB)            PORT_CHAR(UCHAR_SHIFT_2)
964
965   PORT_START( "ROW3" )
966   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Crsr Down Up") PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_CHAR(UCHAR_MAMEKEY(UP))
967   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SLASH)          PORT_CHAR('/') PORT_CHAR('?')
968   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA)          PORT_CHAR(',') PORT_CHAR('<')
969   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_N)              PORT_CHAR('N')
970   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_V)              PORT_CHAR('V')
971   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X)              PORT_CHAR('X')
972   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Shift (Left)") PORT_CODE(KEYCODE_LSHIFT)
973   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Stop Run") PORT_CODE(KEYCODE_HOME)
974
975   PORT_START( "ROW4" )
976   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F1)             PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_CHAR(UCHAR_MAMEKEY(F2))
977   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Shift (Right)") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
978   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP)           PORT_CHAR('.') PORT_CHAR('>')
979   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M)              PORT_CHAR('M')
980   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_B)              PORT_CHAR('B')
981   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C)              PORT_CHAR('C')
982   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z)              PORT_CHAR('Z')
983   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE)          PORT_CHAR(' ')
984
985   PORT_START( "ROW5" )
986   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F2)             PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_CHAR(UCHAR_MAMEKEY(F4))
987   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH)      PORT_CHAR('=')
988   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COLON)          PORT_CHAR(':') PORT_CHAR('[')
989   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K)              PORT_CHAR('K')
990   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_H)              PORT_CHAR('H')
991   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F)              PORT_CHAR('F')
992   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S)              PORT_CHAR('S')
993   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CBM") PORT_CODE(KEYCODE_LCONTROL)
994
995   PORT_START( "ROW6" )
996   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F3)             PORT_CHAR(UCHAR_MAMEKEY(F5)) PORT_CHAR(UCHAR_MAMEKEY(F6))
997   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91  Pi") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x2191) PORT_CHAR(0x03C0)
998   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE)      PORT_CHAR('@')
999   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O)              PORT_CHAR('O')
1000   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U)              PORT_CHAR('U')
1001   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_T)              PORT_CHAR('T')
1002   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E)              PORT_CHAR('E')
1003   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q)              PORT_CHAR('Q')
1004
1005   PORT_START( "ROW7" )
1006   PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F4)             PORT_CHAR(UCHAR_MAMEKEY(F7)) PORT_CHAR(UCHAR_MAMEKEY(F8))
1007   PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Home  Clr") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(HOME))
1008   PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS)         PORT_CHAR('-')
1009   PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0)              PORT_CHAR('0')
1010   PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8)              PORT_CHAR('8') PORT_CHAR('(')
1011   PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6)              PORT_CHAR('6') PORT_CHAR('&')
1012   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4)              PORT_CHAR('4') PORT_CHAR('$')
1013   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2)              PORT_CHAR('2') PORT_CHAR('"')
1014INPUT_PORTS_END
1015
1016
1017INPUT_PORTS_START( vic_special )
1018   PORT_START( "SPECIAL" )  /* special keys */
1019   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Restore") PORT_CODE(KEYCODE_PRTSCR)
1020   PORT_CONFNAME( 0x01, 0x00, "Shift Lock (switch)") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
1021   PORT_CONFSETTING(   0x00, DEF_STR( Off ) )
1022   PORT_CONFSETTING(   0x01, DEF_STR( On ) )
1023INPUT_PORTS_END
1024
1025SLOT_INTERFACE_START( pet_expansion_cards )
1026   SLOT_INTERFACE("64k", PET_64K)
1027   SLOT_INTERFACE("superpet", SUPERPET)
1028SLOT_INTERFACE_END
1029
1030SLOT_INTERFACE_START( pet_user_port_cards )
1031SLOT_INTERFACE_END
1032
1033SLOT_INTERFACE_START( cbm2_expansion_cards )
1034   SLOT_INTERFACE("24k", CBM2_24K)
1035   SLOT_INTERFACE_INTERNAL("standard", CBM2_STD)
1036   SLOT_INTERFACE_INTERNAL("graphic", CBM2_GRAPHIC)
1037SLOT_INTERFACE_END
1038
1039SLOT_INTERFACE_START( cbm2_user_port_cards )
1040SLOT_INTERFACE_END
1041
1042SLOT_INTERFACE_START( cbm_datassette_devices )
1043   SLOT_INTERFACE("c2n", C2N)
1044   SLOT_INTERFACE("c1530", C1530)
1045SLOT_INTERFACE_END
1046
1047SLOT_INTERFACE_START( cbm_iec_devices )
1048   SLOT_INTERFACE("c1540", C1540)
1049   SLOT_INTERFACE("c1541", C1541)
1050   SLOT_INTERFACE("c1541c", C1541C)
1051   SLOT_INTERFACE("c1541ii", C1541II)
1052   SLOT_INTERFACE("fsd2", FSD2)
1053   SLOT_INTERFACE("csd1", CSD1)
1054   SLOT_INTERFACE("c1541dd", C1541_DOLPHIN_DOS)
1055   SLOT_INTERFACE("c1541pd", C1541_PROFESSIONAL_DOS_V1)
1056   SLOT_INTERFACE("c1541pdc", C1541_PROLOGIC_DOS_CLASSIC)
1057   SLOT_INTERFACE("c1570", C1570)
1058   SLOT_INTERFACE("c1571", C1571)
1059   SLOT_INTERFACE("c1581", C1581)
1060   SLOT_INTERFACE("cmdhd", CMD_HD)
1061   SLOT_INTERFACE("fd2000", FD2000)
1062   SLOT_INTERFACE("fd4000", FD4000)
1063   SLOT_INTERFACE("interpod", INTERPOD)
1064   SLOT_INTERFACE("minichief", MINI_CHIEF)
1065   SLOT_INTERFACE("serialbox", SERIAL_BOX)
1066   SLOT_INTERFACE("diag264", DIAG264_SERIAL_LOOPBACK)
1067   SLOT_INTERFACE("nl10", C64_NL10_INTERFACE)
1068SLOT_INTERFACE_END
1069
1070SLOT_INTERFACE_START( sx1541_iec_devices )
1071   SLOT_INTERFACE("sx1541", SX1541)
1072SLOT_INTERFACE_END
1073
1074SLOT_INTERFACE_START( c128dcr_iec_devices )
1075   SLOT_INTERFACE("c1571", C1571)
1076   SLOT_INTERFACE("c1571cr", C1571CR)
1077SLOT_INTERFACE_END
1078
1079SLOT_INTERFACE_START( c128d81_iec_devices )
1080   SLOT_INTERFACE("c1563", C1563)
1081SLOT_INTERFACE_END
1082
1083SLOT_INTERFACE_START( cbm_ieee488_devices )
1084   SLOT_INTERFACE("c2040", C2040)
1085   SLOT_INTERFACE("c3040", C3040)
1086   SLOT_INTERFACE("c4040", C4040)
1087   SLOT_INTERFACE("c8050", C8050)
1088   SLOT_INTERFACE("c8250", C8250)
1089   SLOT_INTERFACE("sfd1001", SFD1001)
1090   SLOT_INTERFACE("c2031", C2031)
1091   SLOT_INTERFACE("c8280", C8280)
1092   SLOT_INTERFACE("d9060", D9060)
1093   SLOT_INTERFACE("d9090", D9090)
1094   SLOT_INTERFACE("softbox", SOFTBOX)
1095   SLOT_INTERFACE("hardbox", HARDBOX)
1096   SLOT_INTERFACE("shark", SHARK)
1097SLOT_INTERFACE_END
1098
1099SLOT_INTERFACE_START( cbm8296d_ieee488_devices )
1100   SLOT_INTERFACE("c8250lp", C8250LP)
1101SLOT_INTERFACE_END
1102
1103SLOT_INTERFACE_START( vic20_expansion_cards )
1104   SLOT_INTERFACE("exp", VIC1010)
1105   SLOT_INTERFACE("3k", VIC1210)
1106   SLOT_INTERFACE("8k", VIC1110)
1107   SLOT_INTERFACE("16k", VIC1111)
1108
1109   // the following need ROMs from the software list
1110   SLOT_INTERFACE_INTERNAL("standard", VIC20_STD)
1111   SLOT_INTERFACE_INTERNAL("ieee488", VIC1112)
1112   SLOT_INTERFACE_INTERNAL("megacart", VIC20_MEGACART)
1113SLOT_INTERFACE_END
1114
1115SLOT_INTERFACE_START( vic20_user_port_cards )
1116   SLOT_INTERFACE("rs232", VIC1011)
1117SLOT_INTERFACE_END
1118
1119SLOT_INTERFACE_START( vic10_expansion_cards )
1120   // the following need ROMs from the software list
1121   SLOT_INTERFACE_INTERNAL("standard", VIC10_STD)
1122SLOT_INTERFACE_END
1123
1124SLOT_INTERFACE_START( c64_expansion_cards )
1125   SLOT_INTERFACE("16k", C64_16KB)
1126   SLOT_INTERFACE("cpm", C64_CPM)
1127   SLOT_INTERFACE("dqbb", C64_DQBB)
1128   SLOT_INTERFACE("easyflash", C64_EASYFLASH)
1129   SLOT_INTERFACE("georam", C64_GEORAM)
1130   SLOT_INTERFACE("ide64", C64_IDE64)
1131   SLOT_INTERFACE("midimap", C64_MIDI_MAPLIN)
1132   SLOT_INTERFACE("midins", C64_MIDI_NAMESOFT)
1133   SLOT_INTERFACE("midipp", C64_MIDI_PASSPORT)
1134   SLOT_INTERFACE("midisci", C64_MIDI_SCI)
1135   SLOT_INTERFACE("midisiel", C64_MIDI_SIEL)
1136   SLOT_INTERFACE("music64", C64_MUSIC64)
1137   SLOT_INTERFACE("neoram", C64_NEORAM)
1138   SLOT_INTERFACE("reu1700", C64_REU1700)
1139   SLOT_INTERFACE("reu1750", C64_REU1750)
1140   SLOT_INTERFACE("reu1764", C64_REU1764)
1141   SLOT_INTERFACE("sfxse", C64_SFX_SOUND_EXPANDER)
1142   SLOT_INTERFACE("supercpu", C64_SUPERCPU)
1143   SLOT_INTERFACE("swiftlink", C64_SWIFTLINK)
1144   SLOT_INTERFACE("turbo232", C64_TURBO232)
1145
1146   // the following need ROMs from the software list
1147   SLOT_INTERFACE_INTERNAL("standard", C64_STD)
1148   SLOT_INTERFACE_INTERNAL("comal80", C64_COMAL80)
1149   SLOT_INTERFACE_INTERNAL("c128_comal80", C128_COMAL80)
1150   SLOT_INTERFACE_INTERNAL("cs64", C64_CURRAH_SPEECH)
1151   SLOT_INTERFACE_INTERNAL("dela_ep256", C64_DELA_EP256)
1152   SLOT_INTERFACE_INTERNAL("ep64", C64_DELA_EP64)
1153   SLOT_INTERFACE_INTERNAL("ep7x8", C64_DELA_EP7X8)
1154   SLOT_INTERFACE_INTERNAL("dinamic", C64_DINAMIC)
1155   SLOT_INTERFACE_INTERNAL("easycalcres", C64_EASY_CALC_RESULT)
1156   SLOT_INTERFACE_INTERNAL("epyxfastload", C64_EPYX_FAST_LOAD)
1157   SLOT_INTERFACE_INTERNAL("exos", C64_EXOS)
1158   SLOT_INTERFACE_INTERNAL("fcc", C64_FCC)
1159   SLOT_INTERFACE_INTERNAL("final", C64_FINAL)
1160   SLOT_INTERFACE_INTERNAL("final3", C64_FINAL3)
1161   SLOT_INTERFACE_INTERNAL("fun_play", C64_FUN_PLAY)
1162   SLOT_INTERFACE_INTERNAL("ieee488", C64_IEEE488)
1163   SLOT_INTERFACE_INTERNAL("kingsoft", C64_KINGSOFT)
1164   SLOT_INTERFACE_INTERNAL("mach5", C64_MACH5)
1165   SLOT_INTERFACE_INTERNAL("magic_desk", C64_MAGIC_DESK)
1166   SLOT_INTERFACE_INTERNAL("magic_formel", C64_MAGIC_FORMEL)
1167   SLOT_INTERFACE_INTERNAL("magic_voice", C64_MAGIC_VOICE)
1168   SLOT_INTERFACE_INTERNAL("mikroasm", C64_MIKRO_ASSEMBLER)
1169   SLOT_INTERFACE_INTERNAL("multiscreen", C64_MULTISCREEN)
1170   SLOT_INTERFACE_INTERNAL("ocean", C64_OCEAN)
1171   SLOT_INTERFACE_INTERNAL("pagefox", C64_PAGEFOX)
1172   SLOT_INTERFACE_INTERNAL("prophet64", C64_PROPHET64)
1173   SLOT_INTERFACE_INTERNAL("ps64", C64_PS64)
1174   SLOT_INTERFACE_INTERNAL("rex", C64_REX)
1175   SLOT_INTERFACE_INTERNAL("rex_ep256", C64_REX_EP256)
1176   SLOT_INTERFACE_INTERNAL("ross", C64_ROSS)
1177   SLOT_INTERFACE_INTERNAL("silverrock", C64_SILVERROCK)
1178   SLOT_INTERFACE_INTERNAL("simons_basic", C64_SIMONS_BASIC)
1179   SLOT_INTERFACE_INTERNAL("stardos", C64_STARDOS)
1180   SLOT_INTERFACE_INTERNAL("struct_basic", C64_STRUCTURED_BASIC)
1181   SLOT_INTERFACE_INTERNAL("super_explode", C64_SUPER_EXPLODE)
1182   SLOT_INTERFACE_INTERNAL("super_games", C64_SUPER_GAMES)
1183   SLOT_INTERFACE_INTERNAL("sw8k", C64_SW8K)
1184   SLOT_INTERFACE_INTERNAL("system3", C64_SYSTEM3)
1185   SLOT_INTERFACE_INTERNAL("tdos", C64_TDOS)
1186   SLOT_INTERFACE_INTERNAL("vizastar", C64_VIZASTAR)
1187   SLOT_INTERFACE_INTERNAL("vizawrite", C64_VW64)
1188   SLOT_INTERFACE_INTERNAL("warp_speed", C64_WARP_SPEED)
1189   SLOT_INTERFACE_INTERNAL("westermann", C64_WESTERMANN)
1190   SLOT_INTERFACE_INTERNAL("zaxxon", C64_ZAXXON)
1191   SLOT_INTERFACE_INTERNAL("xl80", C64_XL80)
1192SLOT_INTERFACE_END
1193
1194SLOT_INTERFACE_START( c64_user_port_cards )
1195   SLOT_INTERFACE("4cga", C64_4CGA)
1196   SLOT_INTERFACE("4dxh", C64_4DXH)
1197   SLOT_INTERFACE("4ksa", C64_4KSA)
1198   SLOT_INTERFACE("4tba", C64_4TBA)
1199   SLOT_INTERFACE("bn1541", C64_BN1541)
1200   SLOT_INTERFACE("geocable", C64_GEOCABLE)
1201   SLOT_INTERFACE("rs232", C64_VIC1011)
1202SLOT_INTERFACE_END
1203
1204SLOT_INTERFACE_START( plus4_datassette_devices )
1205   SLOT_INTERFACE("c1531", C1531)
1206   SLOT_INTERFACE("diag264", DIAG264_CASSETTE_LOOPBACK)
1207SLOT_INTERFACE_END
1208
1209SLOT_INTERFACE_START( plus4_expansion_cards )
1210   SLOT_INTERFACE("c1551", C1551)
1211   SLOT_INTERFACE("sid", PLUS4_SID)
1212
1213   // the following need ROMs from the software list
1214   SLOT_INTERFACE_INTERNAL("standard", PLUS4_STD)
1215SLOT_INTERFACE_END
1216
1217SLOT_INTERFACE_START( plus4_user_port_cards )
1218   SLOT_INTERFACE("diag264", DIAG264_USER_PORT_LOOPBACK)
1219SLOT_INTERFACE_END
trunk/src/mess/machine/cbmipt.h
r25373r25374
1#pragma once
2
3#ifndef CBMIPT_H_
4#define CBMIPT_H_
5
6#include "machine/c2n.h"
7#include "machine/c64/4cga.h"
8#include "machine/c64/4dxh.h"
9#include "machine/c64/4ksa.h"
10#include "machine/c64/4tba.h"
11#include "machine/c64/16kb.h"
12#include "machine/c64/bn1541.h"
13#include "machine/c64/comal80.h"
14#include "machine/c64/cpm.h"
15#include "machine/c64/currah_speech.h"
16#include "machine/c64/dela_ep256.h"
17#include "machine/c64/dela_ep64.h"
18#include "machine/c64/dela_ep7x8.h"
19#include "machine/c64/dinamic.h"
20#include "machine/c64/dqbb.h"
21#include "machine/c64/easy_calc_result.h"
22#include "machine/c64/easyflash.h"
23#include "machine/c64/epyx_fast_load.h"
24#include "machine/c64/exos.h"
25#include "machine/c64/fcc.h"
26#include "machine/c64/final.h"
27#include "machine/c64/final3.h"
28#include "machine/c64/fun_play.h"
29#include "machine/c64/geocable.h"
30#include "machine/c64/georam.h"
31#include "machine/c64/ide64.h"
32#include "machine/c64/ieee488.h"
33#include "machine/c64/kingsoft.h"
34#include "machine/c64/mach5.h"
35#include "machine/c64/magic_desk.h"
36#include "machine/c64/magic_formel.h"
37#include "machine/c64/magic_voice.h"
38#include "machine/c64/midi_maplin.h"
39#include "machine/c64/midi_namesoft.h"
40#include "machine/c64/midi_passport.h"
41#include "machine/c64/midi_sci.h"
42#include "machine/c64/midi_siel.h"
43#include "machine/c64/mikro_assembler.h"
44#include "machine/c64/multiscreen.h"
45#include "machine/c64/music64.h"
46#include "machine/c64/neoram.h"
47#include "machine/c64/ocean.h"
48#include "machine/c64/pagefox.h"
49#include "machine/c64/prophet64.h"
50#include "machine/c64/ps64.h"
51#include "machine/c64/reu.h"
52#include "machine/c64/rex.h"
53#include "machine/c64/rex_ep256.h"
54#include "machine/c64/ross.h"
55#include "machine/c64/sfx_sound_expander.h"
56#include "machine/c64/silverrock.h"
57#include "machine/c64/simons_basic.h"
58#include "machine/c64/stardos.h"
59#include "machine/c64/std.h"
60#include "machine/c64/structured_basic.h"
61#include "machine/c64/super_explode.h"
62#include "machine/c64/super_games.h"
63#include "machine/c64/supercpu.h"
64#include "machine/c64/sw8k.h"
65#include "machine/c64/swiftlink.h"
66#include "machine/c64/system3.h"
67#include "machine/c64/tdos.h"
68#include "machine/c64/turbo232.h"
69#include "machine/c64/vizastar.h"
70#include "machine/c64/vic1011.h"
71#include "machine/c64/vw64.h"
72#include "machine/c64/warp_speed.h"
73#include "machine/c64/westermann.h"
74#include "machine/c64/xl80.h"
75#include "machine/c64/zaxxon.h"
76#include "machine/c128_comal80.h"
77#include "machine/c64_nl10.h"
78#include "machine/cbm2_std.h"
79#include "machine/cbm2_24k.h"
80#include "machine/cbm2_graphic.h"
81#include "machine/c1541.h"
82#include "machine/c1551.h"
83#include "machine/c1571.h"
84#include "machine/c1581.h"
85#include "machine/c2031.h"
86#include "machine/c2040.h"
87#include "machine/c8280.h"
88#include "machine/d9060.h"
89#include "machine/cmdhd.h"
90#include "machine/diag264_lb_iec.h"
91#include "machine/diag264_lb_tape.h"
92#include "machine/diag264_lb_user.h"
93#include "machine/fd2000.h"
94#include "machine/hardbox.h"
95#include "machine/interpod.h"
96#include "machine/pet_64k.h"
97#include "machine/plus4_sid.h"
98#include "machine/plus4_std.h"
99#include "machine/serialbox.h"
100#include "machine/shark.h"
101#include "machine/softbox.h"
102#include "machine/superpet.h"
103#include "machine/vic1010.h"
104#include "machine/vic1011.h"
105#include "machine/vic1110.h"
106#include "machine/vic1111.h"
107#include "machine/vic1112.h"
108#include "machine/vic1210.h"
109#include "machine/vic10std.h"
110#include "machine/vic20std.h"
111#include "machine/vic20_megacart.h"
112
113
114#define MCFG_CBM_IEC_ADD(_default_drive) \
115   MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL) \
116   MCFG_CBM_IEC_SLOT_ADD("iec8", 8, cbm_iec_devices, _default_drive) \
117   MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, NULL) \
118   MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, NULL) \
119   MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, NULL) \
120   MCFG_CBM_IEC_BUS_ADD()
121
122
123#define MCFG_CBM_IEEE488_ADD(_default_drive) \
124   MCFG_IEEE488_SLOT_ADD("ieee4", 4, cbm_ieee488_devices, NULL) \
125   MCFG_IEEE488_SLOT_ADD("ieee8", 8, cbm_ieee488_devices, _default_drive) \
126   MCFG_IEEE488_SLOT_ADD("ieee9", 9, cbm_ieee488_devices, NULL) \
127   MCFG_IEEE488_SLOT_ADD("ieee10", 10, cbm_ieee488_devices, NULL) \
128   MCFG_IEEE488_SLOT_ADD("ieee11", 11, cbm_ieee488_devices, NULL) \
129   MCFG_IEEE488_SLOT_ADD("ieee12", 12, cbm_ieee488_devices, NULL) \
130   MCFG_IEEE488_SLOT_ADD("ieee13", 13, cbm_ieee488_devices, NULL) \
131   MCFG_IEEE488_SLOT_ADD("ieee14", 14, cbm_ieee488_devices, NULL) \
132   MCFG_IEEE488_SLOT_ADD("ieee15", 15, cbm_ieee488_devices, NULL) \
133   MCFG_IEEE488_BUS_ADD()
134
135
136/* Commodore 64 */
137
138INPUT_PORTS_EXTERN( common_cbm_keyboard );  /* shared with c16, c65, c128 */
139INPUT_PORTS_EXTERN( c64_special );
140INPUT_PORTS_EXTERN( c64_controls );         /* shared with c65, c128, cbmb */
141
142
143/* Commodore 16 */
144
145INPUT_PORTS_EXTERN( c16_special );
146INPUT_PORTS_EXTERN( c16_controls );
147
148
149/* Commodore 65 */
150
151INPUT_PORTS_EXTERN( c65_special );
152
153
154/* PET2001 */
155
156INPUT_PORTS_EXTERN( pet_keyboard );
157INPUT_PORTS_EXTERN( pet_business_keyboard );
158INPUT_PORTS_EXTERN( pet_special );
159INPUT_PORTS_EXTERN( pet_config );
160
161
162/* CBMB 500 / 600/ 700 */
163
164INPUT_PORTS_EXTERN( cbmb_keyboard );
165INPUT_PORTS_EXTERN( cbmb_special );
166
167
168/* Vic 20 */
169
170INPUT_PORTS_EXTERN( vic_keyboard );
171INPUT_PORTS_EXTERN( vic_special );
172
173
174
175SLOT_INTERFACE_EXTERN( pet_expansion_cards );
176SLOT_INTERFACE_EXTERN( pet_user_port_cards );
177SLOT_INTERFACE_EXTERN( cbm2_expansion_cards );
178SLOT_INTERFACE_EXTERN( cbm2_user_port_cards );
179SLOT_INTERFACE_EXTERN( cbm_datassette_devices );
180SLOT_INTERFACE_EXTERN( cbm_iec_devices );
181SLOT_INTERFACE_EXTERN( sx1541_iec_devices );
182SLOT_INTERFACE_EXTERN( c128dcr_iec_devices );
183SLOT_INTERFACE_EXTERN( c128d81_iec_devices );
184SLOT_INTERFACE_EXTERN( cbm_ieee488_devices );
185SLOT_INTERFACE_EXTERN( cbm8296d_ieee488_devices );
186SLOT_INTERFACE_EXTERN( vic20_control_port_devices );
187SLOT_INTERFACE_EXTERN( vic20_expansion_cards );
188SLOT_INTERFACE_EXTERN( vic20_user_port_cards );
189SLOT_INTERFACE_EXTERN( vic10_expansion_cards );
190SLOT_INTERFACE_EXTERN( c64_expansion_cards );
191SLOT_INTERFACE_EXTERN( c64_user_port_cards );
192SLOT_INTERFACE_EXTERN( plus4_datassette_devices );
193SLOT_INTERFACE_EXTERN( plus4_expansion_cards );
194SLOT_INTERFACE_EXTERN( plus4_user_port_cards );
195
196
197
198#endif /* CBMIPT_H_ */
trunk/src/mess/machine/cbm.c
r25373r25374
1#include "emu.h"
2#include "imagedev/cassette.h"
3#include "crsshair.h"
4#include "includes/cbm.h"
5#include "formats/cbm_tap.h"
6
7
8/***********************************************
9
10    Input Reading - Common Components
11
12***********************************************/
13
14/* These are needed by c64, c65 and c128, each machine has also additional specific
15components in its INTERRUPT_GEN */
16
17/* keyboard lines */
18UINT8 c64_keyline[10];
19
20void cbm_common_init(void)
21{
22   int i;
23
24   for (i = 0; i < ARRAY_LENGTH(c64_keyline); i++)
25      c64_keyline[i] = 0xff;
26}
27
28static TIMER_CALLBACK( lightpen_tick )
29{
30   if (((machine.root_device().ioport("CTRLSEL")->read() & 0x07) == 0x04) || ((machine.root_device().ioport("CTRLSEL")->read() & 0x07) == 0x06))
31   {
32      /* enable lightpen crosshair */
33      crosshair_set_screen(machine, 0, CROSSHAIR_SCREEN_ALL);
34   }
35   else
36   {
37      /* disable lightpen crosshair */
38      crosshair_set_screen(machine, 0, CROSSHAIR_SCREEN_NONE);
39   }
40}
41
42void cbm_common_interrupt( device_t *device )
43{
44   int value, i;
45   int controller1 = device->machine().root_device().ioport("CTRLSEL")->read() & 0x07;
46   int controller2 = device->machine().root_device().ioport("CTRLSEL")->read() & 0x70;
47   static const char *const c64ports[] = { "ROW0", "ROW1", "ROW2", "ROW3", "ROW4", "ROW5", "ROW6", "ROW7" };
48
49   /* Lines 0-7 : common keyboard */
50   for (i = 0; i < 8; i++)
51   {
52      value = 0xff;
53      value &= ~device->machine().root_device().ioport(c64ports[i])->read();
54
55      /* Shift Lock is mapped on Left Shift */
56      if ((i == 1) && (device->machine().root_device().ioport("SPECIAL")->read() & 0x40))
57         value &= ~0x80;
58
59      c64_keyline[i] = value;
60   }
61
62
63   value = 0xff;
64   switch(controller1)
65   {
66      case 0x00:
67         value &= ~device->machine().root_device().ioport("JOY1_1B")->read();            /* Joy1 Directions + Button 1 */
68         break;
69
70      case 0x01:
71         if (device->machine().root_device().ioport("OTHER")->read() & 0x40)         /* Paddle2 Button */
72            value &= ~0x08;
73         if (device->machine().root_device().ioport("OTHER")->read() & 0x80)         /* Paddle1 Button */
74            value &= ~0x04;
75         break;
76
77      case 0x02:
78         if (device->machine().root_device().ioport("OTHER")->read() & 0x02)         /* Mouse Button Left */
79            value &= ~0x10;
80         if (device->machine().root_device().ioport("OTHER")->read() & 0x01)         /* Mouse Button Right */
81            value &= ~0x01;
82         break;
83
84      case 0x03:
85         value &= ~(device->machine().root_device().ioport("JOY1_2B")->read() & 0x1f);   /* Joy1 Directions + Button 1 */
86         break;
87
88      case 0x04:
89/* was there any input on the lightpen? where is it mapped? */
90//          if (device->machine().root_device().ioport("OTHER")->read() & 0x04)           /* Lightpen Signal */
91//              value &= ?? ;
92         break;
93
94      case 0x07:
95         break;
96
97      default:
98         logerror("Invalid Controller 1 Setting %d\n", controller1);
99         break;
100   }
101
102   c64_keyline[8] = value;
103
104
105   value = 0xff;
106   switch(controller2)
107   {
108      case 0x00:
109         value &= ~device->machine().root_device().ioport("JOY2_1B")->read();            /* Joy2 Directions + Button 1 */
110         break;
111
112      case 0x10:
113         if (device->machine().root_device().ioport("OTHER")->read() & 0x10)         /* Paddle4 Button */
114            value &= ~0x08;
115         if (device->machine().root_device().ioport("OTHER")->read() & 0x20)         /* Paddle3 Button */
116            value &= ~0x04;
117         break;
118
119      case 0x20:
120         if (device->machine().root_device().ioport("OTHER")->read() & 0x02)         /* Mouse Button Left */
121            value &= ~0x10;
122         if (device->machine().root_device().ioport("OTHER")->read() & 0x01)         /* Mouse Button Right */
123            value &= ~0x01;
124         break;
125
126      case 0x30:
127         value &= ~(device->machine().root_device().ioport("JOY2_2B")->read() & 0x1f);   /* Joy2 Directions + Button 1 */
128         break;
129
130      case 0x40:
131/* was there any input on the lightpen? where is it mapped? */
132//          if (device->machine().root_device().ioport("OTHER")->read() & 0x04)           /* Lightpen Signal */
133//              value &= ?? ;
134         break;
135
136      case 0x70:
137         break;
138
139      default:
140         logerror("Invalid Controller 2 Setting %d\n", controller2);
141         break;
142   }
143
144   c64_keyline[9] = value;
145
146//  vic2_frame_interrupt does nothing so this is not necessary
147//  vic2_frame_interrupt (device);
148
149   /* check if lightpen has been chosen as input: if so, enable crosshair */
150   device->machine().scheduler().timer_set(attotime::zero, FUNC(lightpen_tick));
151
152   set_led_status (device->machine(), 1, device->machine().root_device().ioport("SPECIAL")->read() & 0x40 ? 1 : 0);        /* Shift Lock */
153   set_led_status (device->machine(), 0, device->machine().root_device().ioport("CTRLSEL")->read() & 0x80 ? 1 : 0);        /* Joystick Swap */
154}
155
156
157/***********************************************
158
159    CIA Common Handlers
160
161***********************************************/
162
163/* These are shared by c64, c65 and c128. c65 and c128 also have additional specific
164components (to select/read additional keyboard lines) */
165
166/*
167 *  CIA 0 - Port A
168 * bits 7-0 keyboard line select
169 * bits 7,6: paddle select( 01 port a, 10 port b)
170 * bit 4: joystick a fire button
171 * bits 3,2: Paddles port a fire button
172 * bits 3-0: joystick a direction
173 *
174 *  CIA 0 - Port B
175 * bits 7-0: keyboard raw values
176 * bit 4: joystick b fire button, lightpen select
177 * bits 3,2: paddle b fire buttons (left,right)
178 * bits 3-0: joystick b direction
179 *
180 * flag cassette read input, serial request in
181 * irq to irq connected
182 */
183
184UINT8 cbm_common_cia0_port_a_r( device_t *device, UINT8 output_b )
185{
186   UINT8 value = 0xff;
187
188   if (!(output_b & 0x80))
189   {
190      UINT8 t = 0xff;
191      if (!(c64_keyline[7] & 0x80)) t &= ~0x80;
192      if (!(c64_keyline[6] & 0x80)) t &= ~0x40;
193      if (!(c64_keyline[5] & 0x80)) t &= ~0x20;
194      if (!(c64_keyline[4] & 0x80)) t &= ~0x10;
195      if (!(c64_keyline[3] & 0x80)) t &= ~0x08;
196      if (!(c64_keyline[2] & 0x80)) t &= ~0x04;
197      if (!(c64_keyline[1] & 0x80)) t &= ~0x02;
198      if (!(c64_keyline[0] & 0x80)) t &= ~0x01;
199      value &= t;
200   }
201
202   if (!(output_b & 0x40))
203   {
204      UINT8 t = 0xff;
205      if (!(c64_keyline[7] & 0x40)) t &= ~0x80;
206      if (!(c64_keyline[6] & 0x40)) t &= ~0x40;
207      if (!(c64_keyline[5] & 0x40)) t &= ~0x20;
208      if (!(c64_keyline[4] & 0x40)) t &= ~0x10;
209      if (!(c64_keyline[3] & 0x40)) t &= ~0x08;
210      if (!(c64_keyline[2] & 0x40)) t &= ~0x04;
211      if (!(c64_keyline[1] & 0x40)) t &= ~0x02;
212      if (!(c64_keyline[0] & 0x40)) t &= ~0x01;
213      value &= t;
214   }
215
216   if (!(output_b & 0x20))
217   {
218      UINT8 t = 0xff;
219      if (!(c64_keyline[7] & 0x20)) t &= ~0x80;
220      if (!(c64_keyline[6] & 0x20)) t &= ~0x40;
221      if (!(c64_keyline[5] & 0x20)) t &= ~0x20;
222      if (!(c64_keyline[4] & 0x20)) t &= ~0x10;
223      if (!(c64_keyline[3] & 0x20)) t &= ~0x08;
224      if (!(c64_keyline[2] & 0x20)) t &= ~0x04;
225      if (!(c64_keyline[1] & 0x20)) t &= ~0x02;
226      if (!(c64_keyline[0] & 0x20)) t &= ~0x01;
227      value &= t;
228   }
229
230   if (!(output_b & 0x10))
231   {
232      UINT8 t = 0xff;
233      if (!(c64_keyline[7] & 0x10)) t &= ~0x80;
234      if (!(c64_keyline[6] & 0x10)) t &= ~0x40;
235      if (!(c64_keyline[5] & 0x10)) t &= ~0x20;
236      if (!(c64_keyline[4] & 0x10)) t &= ~0x10;
237      if (!(c64_keyline[3] & 0x10)) t &= ~0x08;
238      if (!(c64_keyline[2] & 0x10)) t &= ~0x04;
239      if (!(c64_keyline[1] & 0x10)) t &= ~0x02;
240      if (!(c64_keyline[0] & 0x10)) t &= ~0x01;
241      value &= t;
242   }
243
244   if (!(output_b & 0x08))
245   {
246      UINT8 t = 0xff;
247      if (!(c64_keyline[7] & 0x08)) t &= ~0x80;
248      if (!(c64_keyline[6] & 0x08)) t &= ~0x40;
249      if (!(c64_keyline[5] & 0x08)) t &= ~0x20;
250      if (!(c64_keyline[4] & 0x08)) t &= ~0x10;
251      if (!(c64_keyline[3] & 0x08)) t &= ~0x08;
252      if (!(c64_keyline[2] & 0x08)) t &= ~0x04;
253      if (!(c64_keyline[1] & 0x08)) t &= ~0x02;
254      if (!(c64_keyline[0] & 0x08)) t &= ~0x01;
255      value &= t;
256   }
257
258   if (!(output_b & 0x04))
259   {
260      UINT8 t = 0xff;
261      if (!(c64_keyline[7] & 0x04)) t &= ~0x80;
262      if (!(c64_keyline[6] & 0x04)) t &= ~0x40;
263      if (!(c64_keyline[5] & 0x04)) t &= ~0x20;
264      if (!(c64_keyline[4] & 0x04)) t &= ~0x10;
265      if (!(c64_keyline[3] & 0x04)) t &= ~0x08;
266      if (!(c64_keyline[2] & 0x04)) t &= ~0x04;
267      if (!(c64_keyline[1] & 0x04)) t &= ~0x02;
268      if (!(c64_keyline[0] & 0x04)) t &= ~0x01;
269      value &= t;
270   }
271
272   if (!(output_b & 0x02))
273   {
274      UINT8 t = 0xff;
275      if (!(c64_keyline[7] & 0x02)) t &= ~0x80;
276      if (!(c64_keyline[6] & 0x02)) t &= ~0x40;
277      if (!(c64_keyline[5] & 0x02)) t &= ~0x20;
278      if (!(c64_keyline[4] & 0x02)) t &= ~0x10;
279      if (!(c64_keyline[3] & 0x02)) t &= ~0x08;
280      if (!(c64_keyline[2] & 0x02)) t &= ~0x04;
281      if (!(c64_keyline[1] & 0x02)) t &= ~0x02;
282      if (!(c64_keyline[0] & 0x02)) t &= ~0x01;
283      value &= t;
284   }
285
286   if (!(output_b & 0x01))
287   {
288      UINT8 t = 0xff;
289      if (!(c64_keyline[7] & 0x01)) t &= ~0x80;
290      if (!(c64_keyline[6] & 0x01)) t &= ~0x40;
291      if (!(c64_keyline[5] & 0x01)) t &= ~0x20;
292      if (!(c64_keyline[4] & 0x01)) t &= ~0x10;
293      if (!(c64_keyline[3] & 0x01)) t &= ~0x08;
294      if (!(c64_keyline[2] & 0x01)) t &= ~0x04;
295      if (!(c64_keyline[1] & 0x01)) t &= ~0x02;
296      if (!(c64_keyline[0] & 0x01)) t &= ~0x01;
297      value &= t;
298   }
299
300   if ( device->machine().root_device().ioport("CTRLSEL")->read() & 0x80 )
301      value &= c64_keyline[8];
302   else
303      value &= c64_keyline[9];
304
305   return value;
306}
307
308UINT8 cbm_common_cia0_port_b_r( device_t *device, UINT8 output_a )
309{
310   UINT8 value = 0xff;
311
312   if (!(output_a & 0x80)) value &= c64_keyline[7];
313   if (!(output_a & 0x40)) value &= c64_keyline[6];
314   if (!(output_a & 0x20)) value &= c64_keyline[5];
315   if (!(output_a & 0x10)) value &= c64_keyline[4];
316   if (!(output_a & 0x08)) value &= c64_keyline[3];
317   if (!(output_a & 0x04)) value &= c64_keyline[2];
318   if (!(output_a & 0x02)) value &= c64_keyline[1];
319   if (!(output_a & 0x01)) value &= c64_keyline[0];
320
321   if ( device->machine().root_device().ioport("CTRLSEL")->read() & 0x80 )
322      value &= c64_keyline[9];
323   else
324      value &= c64_keyline[8];
325
326   return value;
327}
328
329
330/***********************************************
331
332    CBM Cartridges
333
334***********************************************/
335
336
337/*  All the cartridge specific code has been moved
338    to machine/ drivers. Once more informations
339    surface about the cart expansions for systems
340    in c65.c, c128.c, cbmb.c and pet.c, the shared
341    code could be refactored to have here the
342    common functions                                */
343
344
345
346/***********************************************
347
348    CBM Datasette Tapes
349
350***********************************************/
351
352const cassette_interface cbm_cassette_interface =
353{
354   cbm_cassette_formats,
355   NULL,
356   (cassette_state) (CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED),
357   NULL,
358   NULL
359};
trunk/src/mess/machine/c65.c
r25373r25374
77
88#include "emu.h"
99
10#include "includes/cbm.h"
1110#include "includes/c65.h"
1211#include "cpu/m6502/m4510.h"
1312#include "sound/mos6581.h"
r25373r25374
1514#include "machine/cbmiec.h"
1615#include "machine/ram.h"
1716#include "video/vic4567.h"
17#include "imagedev/cassette.h"
18#include "crsshair.h"
19#include "formats/cbm_tap.h"
1820
1921#define VERBOSE_LEVEL 0
2022#define DBG_LOG( MACHINE, N, M, A ) \
r25373r25374
2931
3032
3133
34/***********************************************
3235
36    Input Reading - Common Components
3337
38***********************************************/
39
40/* These are needed by c64, c65 and c128, each machine has also additional specific
41components in its INTERRUPT_GEN */
42
43/* keyboard lines */
44UINT8 c64_keyline[10];
45
46void cbm_common_init(void)
47{
48   int i;
49
50   for (i = 0; i < ARRAY_LENGTH(c64_keyline); i++)
51      c64_keyline[i] = 0xff;
52}
53
54static TIMER_CALLBACK( lightpen_tick )
55{
56   if (((machine.root_device().ioport("CTRLSEL")->read() & 0x07) == 0x04) || ((machine.root_device().ioport("CTRLSEL")->read() & 0x07) == 0x06))
57   {
58      /* enable lightpen crosshair */
59      crosshair_set_screen(machine, 0, CROSSHAIR_SCREEN_ALL);
60   }
61   else
62   {
63      /* disable lightpen crosshair */
64      crosshair_set_screen(machine, 0, CROSSHAIR_SCREEN_NONE);
65   }
66}
67
68void cbm_common_interrupt( device_t *device )
69{
70   int value, i;
71   int controller1 = device->machine().root_device().ioport("CTRLSEL")->read() & 0x07;
72   int controller2 = device->machine().root_device().ioport("CTRLSEL")->read() & 0x70;
73   static const char *const c64ports[] = { "ROW0", "ROW1", "ROW2", "ROW3", "ROW4", "ROW5", "ROW6", "ROW7" };
74
75   /* Lines 0-7 : common keyboard */
76   for (i = 0; i < 8; i++)
77   {
78      value = 0xff;
79      value &= ~device->machine().root_device().ioport(c64ports[i])->read();
80
81      /* Shift Lock is mapped on Left Shift */
82      if ((i == 1) && (device->machine().root_device().ioport("SPECIAL")->read() & 0x40))
83         value &= ~0x80;
84
85      c64_keyline[i] = value;
86   }
87
88
89   value = 0xff;
90   switch(controller1)
91   {
92      case 0x00:
93         value &= ~device->machine().root_device().ioport("JOY1_1B")->read();            /* Joy1 Directions + Button 1 */
94         break;
95
96      case 0x01:
97         if (device->machine().root_device().ioport("OTHER")->read() & 0x40)         /* Paddle2 Button */
98            value &= ~0x08;
99         if (device->machine().root_device().ioport("OTHER")->read() & 0x80)         /* Paddle1 Button */
100            value &= ~0x04;
101         break;
102
103      case 0x02:
104         if (device->machine().root_device().ioport("OTHER")->read() & 0x02)         /* Mouse Button Left */
105            value &= ~0x10;
106         if (device->machine().root_device().ioport("OTHER")->read() & 0x01)         /* Mouse Button Right */
107            value &= ~0x01;
108         break;
109
110      case 0x03:
111         value &= ~(device->machine().root_device().ioport("JOY1_2B")->read() & 0x1f);   /* Joy1 Directions + Button 1 */
112         break;
113
114      case 0x04:
115/* was there any input on the lightpen? where is it mapped? */
116//          if (device->machine().root_device().ioport("OTHER")->read() & 0x04)           /* Lightpen Signal */
117//              value &= ?? ;
118         break;
119
120      case 0x07:
121         break;
122
123      default:
124         logerror("Invalid Controller 1 Setting %d\n", controller1);
125         break;
126   }
127
128   c64_keyline[8] = value;
129
130
131   value = 0xff;
132   switch(controller2)
133   {
134      case 0x00:
135         value &= ~device->machine().root_device().ioport("JOY2_1B")->read();            /* Joy2 Directions + Button 1 */
136         break;
137
138      case 0x10:
139         if (device->machine().root_device().ioport("OTHER")->read() & 0x10)         /* Paddle4 Button */
140            value &= ~0x08;
141         if (device->machine().root_device().ioport("OTHER")->read() & 0x20)         /* Paddle3 Button */
142            value &= ~0x04;
143         break;
144
145      case 0x20:
146         if (device->machine().root_device().ioport("OTHER")->read() & 0x02)         /* Mouse Button Left */
147            value &= ~0x10;
148         if (device->machine().root_device().ioport("OTHER")->read() & 0x01)         /* Mouse Button Right */
149            value &= ~0x01;
150         break;
151
152      case 0x30:
153         value &= ~(device->machine().root_device().ioport("JOY2_2B")->read() & 0x1f);   /* Joy2 Directions + Button 1 */
154         break;
155
156      case 0x40:
157/* was there any input on the lightpen? where is it mapped? */
158//          if (device->machine().root_device().ioport("OTHER")->read() & 0x04)           /* Lightpen Signal */
159//              value &= ?? ;
160         break;
161
162      case 0x70:
163         break;
164
165      default:
166         logerror("Invalid Controller 2 Setting %d\n", controller2);
167         break;
168   }
169
170   c64_keyline[9] = value;
171
172//  vic2_frame_interrupt does nothing so this is not necessary
173//  vic2_frame_interrupt (device);
174
175   /* check if lightpen has been chosen as input: if so, enable crosshair */
176   device->machine().scheduler().timer_set(attotime::zero, FUNC(lightpen_tick));
177
178   set_led_status (device->machine(), 1, device->machine().root_device().ioport("SPECIAL")->read() & 0x40 ? 1 : 0);        /* Shift Lock */
179   set_led_status (device->machine(), 0, device->machine().root_device().ioport("CTRLSEL")->read() & 0x80 ? 1 : 0);        /* Joystick Swap */
180}
181
182
183/***********************************************
184
185    CIA Common Handlers
186
187***********************************************/
188
189/* These are shared by c64, c65 and c128. c65 and c128 also have additional specific
190components (to select/read additional keyboard lines) */
191
192/*
193 *  CIA 0 - Port A
194 * bits 7-0 keyboard line select
195 * bits 7,6: paddle select( 01 port a, 10 port b)
196 * bit 4: joystick a fire button
197 * bits 3,2: Paddles port a fire button
198 * bits 3-0: joystick a direction
199 *
200 *  CIA 0 - Port B
201 * bits 7-0: keyboard raw values
202 * bit 4: joystick b fire button, lightpen select
203 * bits 3,2: paddle b fire buttons (left,right)
204 * bits 3-0: joystick b direction
205 *
206 * flag cassette read input, serial request in
207 * irq to irq connected
208 */
209
210UINT8 cbm_common_cia0_port_a_r( device_t *device, UINT8 output_b )
211{
212   UINT8 value = 0xff;
213
214   if (!(output_b & 0x80))
215   {
216      UINT8 t = 0xff;
217      if (!(c64_keyline[7] & 0x80)) t &= ~0x80;
218      if (!(c64_keyline[6] & 0x80)) t &= ~0x40;
219      if (!(c64_keyline[5] & 0x80)) t &= ~0x20;
220      if (!(c64_keyline[4] & 0x80)) t &= ~0x10;
221      if (!(c64_keyline[3] & 0x80)) t &= ~0x08;
222      if (!(c64_keyline[2] & 0x80)) t &= ~0x04;
223      if (!(c64_keyline[1] & 0x80)) t &= ~0x02;
224      if (!(c64_keyline[0] & 0x80)) t &= ~0x01;
225      value &= t;
226   }
227
228   if (!(output_b & 0x40))
229   {
230      UINT8 t = 0xff;
231      if (!(c64_keyline[7] & 0x40)) t &= ~0x80;
232      if (!(c64_keyline[6] & 0x40)) t &= ~0x40;
233      if (!(c64_keyline[5] & 0x40)) t &= ~0x20;
234      if (!(c64_keyline[4] & 0x40)) t &= ~0x10;
235      if (!(c64_keyline[3] & 0x40)) t &= ~0x08;
236      if (!(c64_keyline[2] & 0x40)) t &= ~0x04;
237      if (!(c64_keyline[1] & 0x40)) t &= ~0x02;
238      if (!(c64_keyline[0] & 0x40)) t &= ~0x01;
239      value &= t;
240   }
241
242   if (!(output_b & 0x20))
243   {
244      UINT8 t = 0xff;
245      if (!(c64_keyline[7] & 0x20)) t &= ~0x80;
246      if (!(c64_keyline[6] & 0x20)) t &= ~0x40;
247      if (!(c64_keyline[5] & 0x20)) t &= ~0x20;
248      if (!(c64_keyline[4] & 0x20)) t &= ~0x10;
249      if (!(c64_keyline[3] & 0x20)) t &= ~0x08;
250      if (!(c64_keyline[2] & 0x20)) t &= ~0x04;
251      if (!(c64_keyline[1] & 0x20)) t &= ~0x02;
252      if (!(c64_keyline[0] & 0x20)) t &= ~0x01;
253      value &= t;
254   }
255
256   if (!(output_b & 0x10))
257   {
258      UINT8 t = 0xff;
259      if (!(c64_keyline[7] & 0x10)) t &= ~0x80;
260      if (!(c64_keyline[6] & 0x10)) t &= ~0x40;
261      if (!(c64_keyline[5] & 0x10)) t &= ~0x20;
262      if (!(c64_keyline[4] & 0x10)) t &= ~0x10;
263      if (!(c64_keyline[3] & 0x10)) t &= ~0x08;
264      if (!(c64_keyline[2] & 0x10)) t &= ~0x04;
265      if (!(c64_keyline[1] & 0x10)) t &= ~0x02;
266      if (!(c64_keyline[0] & 0x10)) t &= ~0x01;
267      value &= t;
268   }
269
270   if (!(output_b & 0x08))
271   {
272      UINT8 t = 0xff;
273      if (!(c64_keyline[7] & 0x08)) t &= ~0x80;
274      if (!(c64_keyline[6] & 0x08)) t &= ~0x40;
275      if (!(c64_keyline[5] & 0x08)) t &= ~0x20;
276      if (!(c64_keyline[4] & 0x08)) t &= ~0x10;
277      if (!(c64_keyline[3] & 0x08)) t &= ~0x08;
278      if (!(c64_keyline[2] & 0x08)) t &= ~0x04;
279      if (!(c64_keyline[1] & 0x08)) t &= ~0x02;
280      if (!(c64_keyline[0] & 0x08)) t &= ~0x01;
281      value &= t;
282   }
283
284   if (!(output_b & 0x04))
285   {
286      UINT8 t = 0xff;
287      if (!(c64_keyline[7] & 0x04)) t &= ~0x80;
288      if (!(c64_keyline[6] & 0x04)) t &= ~0x40;
289      if (!(c64_keyline[5] & 0x04)) t &= ~0x20;
290      if (!(c64_keyline[4] & 0x04)) t &= ~0x10;
291      if (!(c64_keyline[3] & 0x04)) t &= ~0x08;
292      if (!(c64_keyline[2] & 0x04)) t &= ~0x04;
293      if (!(c64_keyline[1] & 0x04)) t &= ~0x02;
294      if (!(c64_keyline[0] & 0x04)) t &= ~0x01;
295      value &= t;
296   }
297
298   if (!(output_b & 0x02))
299   {
300      UINT8 t = 0xff;
301      if (!(c64_keyline[7] & 0x02)) t &= ~0x80;
302      if (!(c64_keyline[6] & 0x02)) t &= ~0x40;
303      if (!(c64_keyline[5] & 0x02)) t &= ~0x20;
304      if (!(c64_keyline[4] & 0x02)) t &= ~0x10;
305      if (!(c64_keyline[3] & 0x02)) t &= ~0x08;
306      if (!(c64_keyline[2] & 0x02)) t &= ~0x04;
307      if (!(c64_keyline[1] & 0x02)) t &= ~0x02;
308      if (!(c64_keyline[0] & 0x02)) t &= ~0x01;
309      value &= t;
310   }
311
312   if (!(output_b & 0x01))
313   {
314      UINT8 t = 0xff;
315      if (!(c64_keyline[7] & 0x01)) t &= ~0x80;
316      if (!(c64_keyline[6] & 0x01)) t &= ~0x40;
317      if (!(c64_keyline[5] & 0x01)) t &= ~0x20;
318      if (!(c64_keyline[4] & 0x01)) t &= ~0x10;
319      if (!(c64_keyline[3] & 0x01)) t &= ~0x08;
320      if (!(c64_keyline[2] & 0x01)) t &= ~0x04;
321      if (!(c64_keyline[1] & 0x01)) t &= ~0x02;
322      if (!(c64_keyline[0] & 0x01)) t &= ~0x01;
323      value &= t;
324   }
325
326   if ( device->machine().root_device().ioport("CTRLSEL")->read() & 0x80 )
327      value &= c64_keyline[8];
328   else
329      value &= c64_keyline[9];
330
331   return value;
332}
333
334UINT8 cbm_common_cia0_port_b_r( device_t *device, UINT8 output_a )
335{
336   UINT8 value = 0xff;
337
338   if (!(output_a & 0x80)) value &= c64_keyline[7];
339   if (!(output_a & 0x40)) value &= c64_keyline[6];
340   if (!(output_a & 0x20)) value &= c64_keyline[5];
341   if (!(output_a & 0x10)) value &= c64_keyline[4];
342   if (!(output_a & 0x08)) value &= c64_keyline[3];
343   if (!(output_a & 0x04)) value &= c64_keyline[2];
344   if (!(output_a & 0x02)) value &= c64_keyline[1];
345   if (!(output_a & 0x01)) value &= c64_keyline[0];
346
347   if ( device->machine().root_device().ioport("CTRLSEL")->read() & 0x80 )
348      value &= c64_keyline[9];
349   else
350      value &= c64_keyline[8];
351
352   return value;
353}
354
355
356/***********************************************
357
358    CBM Cartridges
359
360***********************************************/
361
362
363/*  All the cartridge specific code has been moved
364    to machine/ drivers. Once more informations
365    surface about the cart expansions for systems
366    in c65.c, c128.c, cbmb.c and pet.c, the shared
367    code could be refactored to have here the
368    common functions                                */
369
370
371
372/***********************************************
373
374    CBM Datasette Tapes
375
376***********************************************/
377
378const cassette_interface cbm_cassette_interface =
379{
380   cbm_cassette_formats,
381   NULL,
382   (cassette_state) (CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED),
383   NULL,
384   NULL
385};
386
387
34388/*UINT8 *c65_basic; */
35389/*UINT8 *c65_kernal; */
36390/*UINT8 *c65_dos; */
trunk/src/mess/machine/shark.h
r25373r25374
1717#include "emu.h"
1818#include "cpu/i8085/i8085.h"
1919#include "imagedev/harddriv.h"
20#include "machine/cbmipt.h"
2120#include "machine/ieee488.h"
2221#include "machine/serial.h"
2322
trunk/src/mess/machine/vic20exp.c
r25373r25374
315315      m_card->vic20_cd_w(space, offset, data, ram1, ram2, ram3, blk1, blk2, blk3, blk5, io2, io3);
316316   }
317317}
318
319
320//-------------------------------------------------
321//  SLOT_INTERFACE( vic20_expansion_cards )
322//-------------------------------------------------
323
324SLOT_INTERFACE_START( vic20_expansion_cards )
325   SLOT_INTERFACE("exp", VIC1010)
326   SLOT_INTERFACE("3k", VIC1210)
327   SLOT_INTERFACE("8k", VIC1110)
328   SLOT_INTERFACE("16k", VIC1111)
329
330   // the following need ROMs from the software list
331   SLOT_INTERFACE_INTERNAL("standard", VIC20_STD)
332   SLOT_INTERFACE_INTERNAL("ieee488", VIC1112)
333   SLOT_INTERFACE_INTERNAL("megacart", VIC20_MEGACART)
334SLOT_INTERFACE_END
trunk/src/mess/machine/fd2000.h
r25373r25374
1717#include "formats/d81_dsk.h"
1818#include "machine/6522via.h"
1919#include "machine/cbmiec.h"
20#include "machine/cbmipt.h"
2120#include "machine/upd765.h"
2221
2322
trunk/src/mess/machine/vic20exp.h
r25373r25374
174174extern const device_type VIC20_EXPANSION_SLOT;
175175
176176
177// slot devices
178#include "machine/vic1010.h"
179#include "machine/vic1110.h"
180#include "machine/vic1111.h"
181#include "machine/vic1112.h"
182#include "machine/vic1210.h"
183#include "machine/vic20std.h"
184#include "machine/vic20_megacart.h"
177185
186SLOT_INTERFACE_EXTERN( vic20_expansion_cards );
187
188
189
178190#endif
trunk/src/mess/machine/cbm2user.c
r25373r25374
121121WRITE_LINE_MEMBER( cbm2_user_port_device::pc_w ) { if (m_card != NULL) m_card->cbm2_pc_w(state); }
122122WRITE_LINE_MEMBER( cbm2_user_port_device::cnt_w ) { if (m_card != NULL) m_card->cbm2_cnt_w(state); }
123123WRITE_LINE_MEMBER( cbm2_user_port_device::sp_w ) { if (m_card != NULL) m_card->cbm2_sp_w(state); }
124
125
126//-------------------------------------------------
127//  SLOT_INTERFACE( cbm2_user_port_cards )
128//-------------------------------------------------
129
130SLOT_INTERFACE_START( cbm2_user_port_cards )
131SLOT_INTERFACE_END
trunk/src/mess/machine/cbm2user.h
r25373r25374
136136extern const device_type CBM2_USER_PORT;
137137
138138
139// slot devices
140SLOT_INTERFACE_EXTERN( cbm2_user_port_cards );
139141
142
143
140144#endif
trunk/src/mess/machine/interpod.h
r25373r25374
1717#include "machine/6522via.h"
1818#include "machine/6532riot.h"
1919#include "machine/6850acia.h"
20#include "machine/c2031.h"
21#include "machine/c2040.h"
22#include "machine/c8280.h"
23#include "machine/d9060.h"
2420#include "machine/cbmiec.h"
25#include "machine/cbmipt.h"
2621#include "machine/ieee488.h"
2722
2823
trunk/src/mess/machine/vic1010.h
r25373r25374
1414
1515
1616#include "emu.h"
17#include "machine/cbmipt.h"
1817#include "machine/vic20exp.h"
1918
2019
trunk/src/mess/machine/d9060.h
r25373r25374
2828#include "cpu/m6502/m6502.h"
2929#include "machine/6522via.h"
3030#include "machine/6532riot.h"
31#include "machine/cbmipt.h"
3231#include "machine/ieee488.h"
3332#include "machine/scsicb.h"
3433
trunk/src/mess/machine/petuser.c
r25373r25374
112112WRITE_LINE_MEMBER( pet_user_port_device::ca1_w ) { if (m_card != NULL) m_card->pet_ca1_w(state); }
113113READ_LINE_MEMBER( pet_user_port_device::cb2_r ) { int state = 1; if (m_card != NULL) state = m_card->pet_cb2_r(); return state; }
114114WRITE_LINE_MEMBER( pet_user_port_device::cb2_w ) { if (m_card != NULL) m_card->pet_cb2_w(state); }
115
116
117//-------------------------------------------------
118//  SLOT_INTERFACE( pet_user_port_cards )
119//-------------------------------------------------
120
121SLOT_INTERFACE_START( pet_user_port_cards )
122SLOT_INTERFACE_END
trunk/src/mess/machine/petuser.h
r25373r25374
131131extern const device_type PET_USER_PORT;
132132
133133
134// slot devices
135SLOT_INTERFACE_EXTERN( pet_user_port_cards );
134136
137
138
135139#endif
trunk/src/mess/machine/ieee488.c
r25373r25374
362362
363363   return data;
364364}
365
366
367//-------------------------------------------------
368//  SLOT_INTERFACE( cbm_ieee488_devices )
369//-------------------------------------------------
370
371SLOT_INTERFACE_START( cbm_ieee488_devices )
372   SLOT_INTERFACE("c2040", C2040)
373   SLOT_INTERFACE("c3040", C3040)
374   SLOT_INTERFACE("c4040", C4040)
375   SLOT_INTERFACE("c8050", C8050)
376   SLOT_INTERFACE("c8250", C8250)
377   SLOT_INTERFACE("sfd1001", SFD1001)
378   SLOT_INTERFACE("c2031", C2031)
379   SLOT_INTERFACE("c8280", C8280)
380   SLOT_INTERFACE("d9060", D9060)
381   SLOT_INTERFACE("d9090", D9090)
382   SLOT_INTERFACE("softbox", SOFTBOX)
383   SLOT_INTERFACE("hardbox", HARDBOX)
384   SLOT_INTERFACE("shark", SHARK)
385SLOT_INTERFACE_END
trunk/src/mess/machine/ieee488.h
r25373r25374
6464   downcast<ieee488_slot_device *>(device)->set_address(_address);
6565
6666
67#define MCFG_CBM_IEEE488_ADD(_default_drive) \
68   MCFG_IEEE488_SLOT_ADD("ieee4", 4, cbm_ieee488_devices, NULL) \
69   MCFG_IEEE488_SLOT_ADD("ieee8", 8, cbm_ieee488_devices, _default_drive) \
70   MCFG_IEEE488_SLOT_ADD("ieee9", 9, cbm_ieee488_devices, NULL) \
71   MCFG_IEEE488_SLOT_ADD("ieee10", 10, cbm_ieee488_devices, NULL) \
72   MCFG_IEEE488_SLOT_ADD("ieee11", 11, cbm_ieee488_devices, NULL) \
73   MCFG_IEEE488_SLOT_ADD("ieee12", 12, cbm_ieee488_devices, NULL) \
74   MCFG_IEEE488_SLOT_ADD("ieee13", 13, cbm_ieee488_devices, NULL) \
75   MCFG_IEEE488_SLOT_ADD("ieee14", 14, cbm_ieee488_devices, NULL) \
76   MCFG_IEEE488_SLOT_ADD("ieee15", 15, cbm_ieee488_devices, NULL) \
77   MCFG_IEEE488_BUS_ADD()
6778
79
80
6881//**************************************************************************
6982//  TYPE DEFINITIONS
7083//**************************************************************************
r25373r25374
234247extern const device_type IEEE488_SLOT;
235248
236249
250// slot devices
251#include "machine/c2031.h"
252#include "machine/c2040.h"
253#include "machine/c8280.h"
254#include "machine/d9060.h"
255#include "machine/hardbox.h"
256#include "machine/shark.h"
257#include "machine/softbox.h"
237258
259SLOT_INTERFACE_EXTERN( cbm_ieee488_devices );
260
261
262
238263#endif
trunk/src/mess/machine/c1541.h
r25373r25374
2222#include "machine/6821pia.h"
2323#include "machine/c64/bn1541.h"
2424#include "machine/cbmiec.h"
25#include "machine/cbmipt.h"
2625#include "machine/ctronics.h"
2726
2827
trunk/src/mess/machine/plus4user.c
r25373r25374
9494WRITE_LINE_MEMBER( plus4_user_port_device::rts_w ) { if (m_cart != NULL) m_cart->plus4_rts_w(state); }
9595WRITE_LINE_MEMBER( plus4_user_port_device::rxc_w ) { if (m_cart != NULL) m_cart->plus4_rxc_w(state); }
9696WRITE_LINE_MEMBER( plus4_user_port_device::atn_w ) { if (m_cart != NULL) m_cart->plus4_atn_w(state); }
97
98
99//-------------------------------------------------
100//  SLOT_INTERFACE( plus4_user_port_cards )
101//-------------------------------------------------
102
103SLOT_INTERFACE_START( plus4_user_port_cards )
104   SLOT_INTERFACE("diag264", DIAG264_USER_PORT_LOOPBACK)
105SLOT_INTERFACE_END
trunk/src/mess/machine/plus4user.h
r25373r25374
117117extern const device_type PLUS4_USER_PORT;
118118
119119
120// slot devices
121#include "machine/diag264_lb_user.h"
120122
123SLOT_INTERFACE_EXTERN( plus4_user_port_cards );
124
125
126
121127#endif
trunk/src/mess/machine/c8280.h
r25373r25374
1616#include "emu.h"
1717#include "cpu/m6502/m6502.h"
1818#include "machine/6532riot.h"
19#include "machine/cbmipt.h"
2019#include "machine/ieee488.h"
2120#include "machine/wd_fdc.h"
2221
trunk/src/mess/machine/plus4_sid.h
r25373r25374
1717#include "machine/plus4exp.h"
1818#include "sound/dac.h"
1919#include "sound/mos6581.h"
20#include "machine/cbmipt.h"
2120#include "machine/vcsctrl.h"
2221
2322
trunk/src/mess/machine/c64/tdos.h
r25373r25374
1414
1515#include "emu.h"
1616#include "machine/c64/exp.h"
17#include "machine/cbmipt.h"
1817#include "machine/mc6852.h"
1918
2019
trunk/src/mess/machine/c64/exp.c
r25373r25374
375375
376376   return state;
377377}
378
379
380//-------------------------------------------------
381//  SLOT_INTERFACE( c64_expansion_cards )
382//-------------------------------------------------
383
384SLOT_INTERFACE_START( c64_expansion_cards )
385   SLOT_INTERFACE("16k", C64_16KB)
386   SLOT_INTERFACE("cpm", C64_CPM)
387   SLOT_INTERFACE("dqbb", C64_DQBB)
388   SLOT_INTERFACE("easyflash", C64_EASYFLASH)
389   SLOT_INTERFACE("georam", C64_GEORAM)
390   SLOT_INTERFACE("ide64", C64_IDE64)
391   SLOT_INTERFACE("midimap", C64_MIDI_MAPLIN)
392   SLOT_INTERFACE("midins", C64_MIDI_NAMESOFT)
393   SLOT_INTERFACE("midipp", C64_MIDI_PASSPORT)
394   SLOT_INTERFACE("midisci", C64_MIDI_SCI)
395   SLOT_INTERFACE("midisiel", C64_MIDI_SIEL)
396   SLOT_INTERFACE("music64", C64_MUSIC64)
397   SLOT_INTERFACE("neoram", C64_NEORAM)
398   SLOT_INTERFACE("reu1700", C64_REU1700)
399   SLOT_INTERFACE("reu1750", C64_REU1750)
400   SLOT_INTERFACE("reu1764", C64_REU1764)
401   SLOT_INTERFACE("sfxse", C64_SFX_SOUND_EXPANDER)
402   SLOT_INTERFACE("supercpu", C64_SUPERCPU)
403   SLOT_INTERFACE("swiftlink", C64_SWIFTLINK)
404   SLOT_INTERFACE("turbo232", C64_TURBO232)
405
406   // the following need ROMs from the software list
407   SLOT_INTERFACE_INTERNAL("standard", C64_STD)
408   SLOT_INTERFACE_INTERNAL("comal80", C64_COMAL80)
409   SLOT_INTERFACE_INTERNAL("c128_comal80", C128_COMAL80)
410   SLOT_INTERFACE_INTERNAL("cs64", C64_CURRAH_SPEECH)
411   SLOT_INTERFACE_INTERNAL("dela_ep256", C64_DELA_EP256)
412   SLOT_INTERFACE_INTERNAL("ep64", C64_DELA_EP64)
413   SLOT_INTERFACE_INTERNAL("ep7x8", C64_DELA_EP7X8)
414   SLOT_INTERFACE_INTERNAL("dinamic", C64_DINAMIC)
415   SLOT_INTERFACE_INTERNAL("easycalcres", C64_EASY_CALC_RESULT)
416   SLOT_INTERFACE_INTERNAL("epyxfastload", C64_EPYX_FAST_LOAD)
417   SLOT_INTERFACE_INTERNAL("exos", C64_EXOS)
418   SLOT_INTERFACE_INTERNAL("fcc", C64_FCC)
419   SLOT_INTERFACE_INTERNAL("final", C64_FINAL)
420   SLOT_INTERFACE_INTERNAL("final3", C64_FINAL3)
421   SLOT_INTERFACE_INTERNAL("fun_play", C64_FUN_PLAY)
422   SLOT_INTERFACE_INTERNAL("ieee488", C64_IEEE488)
423   SLOT_INTERFACE_INTERNAL("kingsoft", C64_KINGSOFT)
424   SLOT_INTERFACE_INTERNAL("mach5", C64_MACH5)
425   SLOT_INTERFACE_INTERNAL("magic_desk", C64_MAGIC_DESK)
426   SLOT_INTERFACE_INTERNAL("magic_formel", C64_MAGIC_FORMEL)
427   SLOT_INTERFACE_INTERNAL("magic_voice", C64_MAGIC_VOICE)
428   SLOT_INTERFACE_INTERNAL("mikroasm", C64_MIKRO_ASSEMBLER)
429   SLOT_INTERFACE_INTERNAL("multiscreen", C64_MULTISCREEN)
430   SLOT_INTERFACE_INTERNAL("ocean", C64_OCEAN)
431   SLOT_INTERFACE_INTERNAL("pagefox", C64_PAGEFOX)
432   SLOT_INTERFACE_INTERNAL("prophet64", C64_PROPHET64)
433   SLOT_INTERFACE_INTERNAL("ps64", C64_PS64)
434   SLOT_INTERFACE_INTERNAL("rex", C64_REX)
435   SLOT_INTERFACE_INTERNAL("rex_ep256", C64_REX_EP256)
436   SLOT_INTERFACE_INTERNAL("ross", C64_ROSS)
437   SLOT_INTERFACE_INTERNAL("silverrock", C64_SILVERROCK)
438   SLOT_INTERFACE_INTERNAL("simons_basic", C64_SIMONS_BASIC)
439   SLOT_INTERFACE_INTERNAL("stardos", C64_STARDOS)
440   SLOT_INTERFACE_INTERNAL("struct_basic", C64_STRUCTURED_BASIC)
441   SLOT_INTERFACE_INTERNAL("super_explode", C64_SUPER_EXPLODE)
442   SLOT_INTERFACE_INTERNAL("super_games", C64_SUPER_GAMES)
443   SLOT_INTERFACE_INTERNAL("sw8k", C64_SW8K)
444   SLOT_INTERFACE_INTERNAL("system3", C64_SYSTEM3)
445   SLOT_INTERFACE_INTERNAL("tdos", C64_TDOS)
446   SLOT_INTERFACE_INTERNAL("vizastar", C64_VIZASTAR)
447   SLOT_INTERFACE_INTERNAL("vizawrite", C64_VW64)
448   SLOT_INTERFACE_INTERNAL("warp_speed", C64_WARP_SPEED)
449   SLOT_INTERFACE_INTERNAL("westermann", C64_WESTERMANN)
450   SLOT_INTERFACE_INTERNAL("zaxxon", C64_ZAXXON)
451   SLOT_INTERFACE_INTERNAL("xl80", C64_XL80)
452SLOT_INTERFACE_END
trunk/src/mess/machine/c64/exp.h
r25373r25374
198198extern const device_type C64_EXPANSION_SLOT;
199199
200200
201// slot devices
202#include "machine/c64/16kb.h"
203#include "machine/c64/comal80.h"
204#include "machine/c64/cpm.h"
205#include "machine/c64/currah_speech.h"
206#include "machine/c64/dela_ep256.h"
207#include "machine/c64/dela_ep64.h"
208#include "machine/c64/dela_ep7x8.h"
209#include "machine/c64/dinamic.h"
210#include "machine/c64/dqbb.h"
211#include "machine/c64/easy_calc_result.h"
212#include "machine/c64/easyflash.h"
213#include "machine/c64/epyx_fast_load.h"
214#include "machine/c64/exos.h"
215#include "machine/c64/fcc.h"
216#include "machine/c64/final.h"
217#include "machine/c64/final3.h"
218#include "machine/c64/fun_play.h"
219#include "machine/c64/georam.h"
220#include "machine/c64/ide64.h"
221#include "machine/c64/ieee488.h"
222#include "machine/c64/kingsoft.h"
223#include "machine/c64/mach5.h"
224#include "machine/c64/magic_desk.h"
225#include "machine/c64/magic_formel.h"
226#include "machine/c64/magic_voice.h"
227#include "machine/c64/midi_maplin.h"
228#include "machine/c64/midi_namesoft.h"
229#include "machine/c64/midi_passport.h"
230#include "machine/c64/midi_sci.h"
231#include "machine/c64/midi_siel.h"
232#include "machine/c64/mikro_assembler.h"
233#include "machine/c64/multiscreen.h"
234#include "machine/c64/music64.h"
235#include "machine/c64/neoram.h"
236#include "machine/c64/ocean.h"
237#include "machine/c64/pagefox.h"
238#include "machine/c64/prophet64.h"
239#include "machine/c64/ps64.h"
240#include "machine/c64/reu.h"
241#include "machine/c64/rex.h"
242#include "machine/c64/rex_ep256.h"
243#include "machine/c64/ross.h"
244#include "machine/c64/sfx_sound_expander.h"
245#include "machine/c64/silverrock.h"
246#include "machine/c64/simons_basic.h"
247#include "machine/c64/stardos.h"
248#include "machine/c64/std.h"
249#include "machine/c64/structured_basic.h"
250#include "machine/c64/super_explode.h"
251#include "machine/c64/super_games.h"
252#include "machine/c64/supercpu.h"
253#include "machine/c64/sw8k.h"
254#include "machine/c64/swiftlink.h"
255#include "machine/c64/system3.h"
256#include "machine/c64/tdos.h"
257#include "machine/c64/turbo232.h"
258#include "machine/c64/vizastar.h"
259#include "machine/c64/vw64.h"
260#include "machine/c64/warp_speed.h"
261#include "machine/c64/westermann.h"
262#include "machine/c64/xl80.h"
263#include "machine/c64/zaxxon.h"
264#include "machine/c128_comal80.h"
201265
266SLOT_INTERFACE_EXTERN( c64_expansion_cards );
267
268
269
202270#endif
trunk/src/mess/machine/c64/sfx_sound_expander.h
r25373r25374
1414
1515#include "emu.h"
1616#include "machine/c64/exp.h"
17#include "machine/cbmipt.h"
1817#include "sound/3526intf.h"
1918
2019
trunk/src/mess/machine/c64/user.c
r25373r25374
106106WRITE_LINE_MEMBER( c64_user_port_device::sp1_w ) { if (m_card != NULL) m_card->c64_sp1_w(state); }
107107WRITE_LINE_MEMBER( c64_user_port_device::cnt2_w ) { if (m_card != NULL) m_card->c64_cnt2_w(state); }
108108WRITE_LINE_MEMBER( c64_user_port_device::sp2_w ) { if (m_card != NULL) m_card->c64_sp2_w(state); }
109
110
111//-------------------------------------------------
112//  SLOT_INTERFACE( c64_user_port_cards )
113//-------------------------------------------------
114
115SLOT_INTERFACE_START( c64_user_port_cards )
116   SLOT_INTERFACE("4cga", C64_4CGA)
117   SLOT_INTERFACE("4dxh", C64_4DXH)
118   SLOT_INTERFACE("4ksa", C64_4KSA)
119   SLOT_INTERFACE("4tba", C64_4TBA)
120   SLOT_INTERFACE("bn1541", C64_BN1541)
121   SLOT_INTERFACE("geocable", C64_GEOCABLE)
122   SLOT_INTERFACE("rs232", C64_VIC1011)
123SLOT_INTERFACE_END
trunk/src/mess/machine/c64/user.h
r25373r25374
152152extern const device_type C64_USER_PORT;
153153
154154
155// slot devices
156#include "machine/c64/4cga.h"
157#include "machine/c64/4dxh.h"
158#include "machine/c64/4ksa.h"
159#include "machine/c64/4tba.h"
160#include "machine/c64/bn1541.h"
161#include "machine/c64/geocable.h"
162#include "machine/c64/vic1011.h"
155163
164SLOT_INTERFACE_EXTERN( c64_user_port_cards );
165
166
167
156168#endif
trunk/src/mess/machine/c64/ieee488.h
r25373r25374
1616#include "emu.h"
1717#include "machine/6525tpi.h"
1818#include "machine/c64/exp.h"
19#include "machine/cbmipt.h"
2019#include "machine/ieee488.h"
2120#include "video/mc6845.h"
2221
trunk/src/mess/machine/c64/music64.h
r25373r25374
1414
1515#include "emu.h"
1616#include "machine/c64/exp.h"
17#include "machine/cbmipt.h"
1817
1918
2019
trunk/src/mess/machine/c64/magic_voice.h
r25373r25374
1616#include "machine/40105.h"
1717#include "machine/6525tpi.h"
1818#include "machine/c64/exp.h"
19#include "machine/cbmipt.h"
2019#include "sound/t6721a.h"
2120
2221
trunk/src/mess/machine/c64/supercpu.h
r25373r25374
1414
1515#include "emu.h"
1616#include "machine/c64/exp.h"
17#include "machine/cbmipt.h"
1817#include "cpu/g65816/g65816.h"
1918
2019
trunk/src/mess/machine/cbm2exp.c
r25373r25374
289289      m_card->cbm2_bd_w(space, offset, data, csbank1, csbank2, csbank3);
290290   }
291291}
292
293
294//-------------------------------------------------
295//  SLOT_INTERFACE( cbm2_expansion_cards )
296//-------------------------------------------------
297
298SLOT_INTERFACE_START( cbm2_expansion_cards )
299   SLOT_INTERFACE("24k", CBM2_24K)
300   SLOT_INTERFACE_INTERNAL("standard", CBM2_STD)
301   SLOT_INTERFACE_INTERNAL("graphic", CBM2_GRAPHIC)
302SLOT_INTERFACE_END
trunk/src/mess/machine/c1551.h
r25373r25374
2121#include "machine/64h156.h"
2222#include "machine/6525tpi.h"
2323#include "machine/c1541.h"
24#include "machine/cbmipt.h"
2524#include "machine/pla.h"
2625#include "machine/plus4exp.h"
2726
trunk/src/mess/machine/cbm2exp.h
r25373r25374
148148extern const device_type CBM2_EXPANSION_SLOT;
149149
150150
151// slot devices
152#include "machine/cbm2_std.h"
153#include "machine/cbm2_24k.h"
154#include "machine/cbm2_graphic.h"
151155
156SLOT_INTERFACE_EXTERN( cbm2_expansion_cards );
157
158
159
152160#endif
trunk/src/mess/machine/petexp.c
r25373r25374
186186{
187187   return clock();
188188}
189
190
191//-------------------------------------------------
192//  SLOT_INTERFACE( pet_expansion_cards )
193//-------------------------------------------------
194
195SLOT_INTERFACE_START( pet_expansion_cards )
196   SLOT_INTERFACE("64k", PET_64K)
197   SLOT_INTERFACE("superpet", SUPERPET)
198SLOT_INTERFACE_END
trunk/src/mess/machine/petexp.h
r25373r25374
133133extern const device_type PET_EXPANSION_SLOT;
134134
135135
136// slot devices
137#include "machine/pet_64k.h"
138#include "machine/superpet.h"
136139
140SLOT_INTERFACE_EXTERN( pet_expansion_cards );
141
142
143
137144#endif
trunk/src/mess/machine/vic1112.h
r25373r25374
1818#include "emu.h"
1919#include "cpu/m6502/m6502.h"
2020#include "machine/6522via.h"
21#include "machine/cbmipt.h"
2221#include "machine/ieee488.h"
2322#include "machine/vic20exp.h"
2423
trunk/src/mess/machine/hardbox.h
r25373r25374
1616#include "cpu/z80/z80.h"
1717#include "imagedev/harddriv.h"
1818#include "includes/corvushd.h"
19#include "machine/cbmipt.h"
2019#include "machine/i8255.h"
2120#include "machine/ieee488.h"
2221#include "machine/serial.h"
trunk/src/mess/machine/petcass.c
r25373r25374
8888WRITE_LINE_MEMBER( pet_datassette_port_device::motor_w ) { if (m_cart != NULL) m_cart->datassette_motor(state); }
8989
9090WRITE_LINE_MEMBER( pet_datassette_port_device::read_w ) { m_read_handler(state); }
91
92
93//-------------------------------------------------
94//  SLOT_INTERFACE( cbm_datassette_devices )
95//-------------------------------------------------
96
97SLOT_INTERFACE_START( cbm_datassette_devices )
98   SLOT_INTERFACE("c2n", C2N)
99   SLOT_INTERFACE("c1530", C1530)
100SLOT_INTERFACE_END
trunk/src/mess/machine/petcass.h
r25373r25374
107107extern const device_type PET_DATASSETTE_PORT;
108108
109109
110// slot devices
111#include "machine/c2n.h"
112#include "machine/diag264_lb_tape.h"
110113
114SLOT_INTERFACE_EXTERN( cbm_datassette_devices );
115
116
117
111118#endif
trunk/src/mess/machine/serialbox.h
r25373r25374
1515#include "emu.h"
1616#include "cpu/m6502/m65c02.h"
1717#include "machine/cbmiec.h"
18#include "machine/cbmipt.h"
1918
2019
2120
trunk/src/mess/machine/c1571.h
r25373r25374
2121#include "machine/6522via.h"
2222#include "machine/c64/bn1541.h"
2323#include "machine/cbmiec.h"
24#include "machine/cbmipt.h"
2524#include "machine/isa.h"
2625#include "machine/mos6526.h"
2726#include "machine/wd_fdc.h"
trunk/src/mess/machine/softbox.h
r25373r25374
1616#include "cpu/z80/z80.h"
1717#include "imagedev/harddriv.h"
1818#include "includes/corvushd.h"
19#include "machine/cbmipt.h"
2019#include "machine/com8116.h"
2120#include "machine/i8251.h"
2221#include "machine/i8255.h"
trunk/src/mess/machine/c1581.h
r25373r25374
1616#include "cpu/m6502/m6502.h"
1717#include "formats/d81_dsk.h"
1818#include "machine/cbmiec.h"
19#include "machine/cbmipt.h"
2019#include "machine/mos6526.h"
2120#include "machine/wd_fdc.h"
2221
trunk/src/mess/machine/c2031.c
r25373r25374
77
88**********************************************************************/
99
10
11#include "c1541.h"
1210#include "c2031.h"
1311
1412
trunk/src/mess/machine/c2031.h
r25373r25374
1212#ifndef __C2031__
1313#define __C2031__
1414
15
1615#include "emu.h"
1716#include "cpu/m6502/m6502.h"
1817#include "imagedev/flopdrv.h"
19#include "formats/d64_dsk.h"
20#include "formats/g64_dsk.h"
2118#include "machine/64h156.h"
2219#include "machine/6522via.h"
23#include "machine/cbmipt.h"
20#include "machine/c1541.h"
2421#include "machine/ieee488.h"
2522
2623
trunk/src/mess/machine/cbmiec.c
r25373r25374
477477
478478   return state;
479479}
480
481
482//-------------------------------------------------
483//  SLOT_INTERFACE( cbm_iec_devices )
484//-------------------------------------------------
485
486SLOT_INTERFACE_START( cbm_iec_devices )
487   SLOT_INTERFACE("c1540", C1540)
488   SLOT_INTERFACE("c1541", C1541)
489   SLOT_INTERFACE("c1541c", C1541C)
490   SLOT_INTERFACE("c1541ii", C1541II)
491   SLOT_INTERFACE("fsd2", FSD2)
492   SLOT_INTERFACE("csd1", CSD1)
493   SLOT_INTERFACE("c1541dd", C1541_DOLPHIN_DOS)
494   SLOT_INTERFACE("c1541pd", C1541_PROFESSIONAL_DOS_V1)
495   SLOT_INTERFACE("c1541pdc", C1541_PROLOGIC_DOS_CLASSIC)
496   SLOT_INTERFACE("c1570", C1570)
497   SLOT_INTERFACE("c1571", C1571)
498   SLOT_INTERFACE("c1581", C1581)
499   SLOT_INTERFACE("cmdhd", CMD_HD)
500   SLOT_INTERFACE("fd2000", FD2000)
501   SLOT_INTERFACE("fd4000", FD4000)
502   SLOT_INTERFACE("interpod", INTERPOD)
503   SLOT_INTERFACE("minichief", MINI_CHIEF)
504   SLOT_INTERFACE("serialbox", SERIAL_BOX)
505   SLOT_INTERFACE("diag264", DIAG264_SERIAL_LOOPBACK)
506   SLOT_INTERFACE("nl10", C64_NL10_INTERFACE)
507SLOT_INTERFACE_END
trunk/src/mess/machine/cbmiec.h
r25373r25374
5454   downcast<cbm_iec_slot_device *>(device)->set_address(_address);
5555
5656
57#define MCFG_CBM_IEC_ADD(_default_drive) \
58   MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL) \
59   MCFG_CBM_IEC_SLOT_ADD("iec8", 8, cbm_iec_devices, _default_drive) \
60   MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, NULL) \
61   MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, NULL) \
62   MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, NULL) \
63   MCFG_CBM_IEC_BUS_ADD()
5764
65
66
5867//**************************************************************************
5968//  TYPE DEFINITIONS
6069//**************************************************************************
r25373r25374
195204extern const device_type CBM_IEC_SLOT;
196205
197206
207// slot devices
208#include "machine/c1541.h"
209#include "machine/c1571.h"
210#include "machine/c1581.h"
211#include "machine/c64_nl10.h"
212#include "machine/cmdhd.h"
213#include "machine/diag264_lb_iec.h"
214#include "machine/fd2000.h"
215#include "machine/interpod.h"
216#include "machine/serialbox.h"
198217
218SLOT_INTERFACE_EXTERN( cbm_iec_devices );
219
220
221
199222#endif
trunk/src/mess/machine/c2040.h
r25373r25374
1212#ifndef __C2040__
1313#define __C2040__
1414
15
1615#include "emu.h"
1716#include "cpu/m6502/m6502.h"
1817#include "cpu/m6502/m6504.h"
r25373r25374
2120#include "formats/g64_dsk.h"
2221#include "machine/6522via.h"
2322#include "machine/6532riot.h"
24#include "machine/cbmipt.h"
25#include "machine/mos6530.h"
2623#include "machine/ieee488.h"
24#include "machine/mos6530.h"
2725
2826
2927
trunk/src/mess/machine/vic20user.c
r25373r25374
123123WRITE_LINE_MEMBER( vic20_user_port_device::cb1_w ) { if (m_card != NULL) m_card->vic20_cb1_w(state); }
124124WRITE_LINE_MEMBER( vic20_user_port_device::cb2_w ) { if (m_card != NULL) m_card->vic20_cb2_w(state); }
125125WRITE_LINE_MEMBER( vic20_user_port_device::atn_w ) { if (m_card != NULL) m_card->vic20_atn_w(state); }
126
127
128//-------------------------------------------------
129//  SLOT_INTERFACE( vic20_user_port_cards )
130//-------------------------------------------------
131
132SLOT_INTERFACE_START( vic20_user_port_cards )
133   SLOT_INTERFACE("rs232", VIC1011)
134SLOT_INTERFACE_END
trunk/src/mess/machine/vic20user.h
r25373r25374
146146extern const device_type VIC20_USER_PORT;
147147
148148
149// slot devices
150#include "machine/vic1011.h"
149151
152SLOT_INTERFACE_EXTERN( vic20_user_port_cards );
153
154
155
150156#endif
trunk/src/mess/machine/cmdhd.h
r25373r25374
1717#include "imagedev/harddriv.h"
1818#include "machine/6522via.h"
1919#include "machine/cbmiec.h"
20#include "machine/cbmipt.h"
2120#include "machine/i8255.h"
2221#include "machine/scsibus.h"
2322#include "machine/scsicb.h"
trunk/src/mess/machine/vic10exp.c
r25373r25374
275275
276276READ_LINE_MEMBER( vic10_expansion_slot_device::p0_r ) { int state = 0; if (m_card != NULL) state = m_card->vic10_p0_r(); return state; }
277277WRITE_LINE_MEMBER( vic10_expansion_slot_device::p0_w ) { if (m_card != NULL) m_card->vic10_p0_w(state); }
278
279
280//-------------------------------------------------
281//  SLOT_INTERFACE( vic10_expansion_cards )
282//-------------------------------------------------
283
284SLOT_INTERFACE_START( vic10_expansion_cards )
285   // the following need ROMs from the software list
286   SLOT_INTERFACE_INTERNAL("standard", VIC10_STD)
287SLOT_INTERFACE_END
trunk/src/mess/machine/vic10exp.h
r25373r25374
176176extern const device_type VIC10_EXPANSION_SLOT;
177177
178178
179// slot devices
180#include "machine/vic10std.h"
179181
182SLOT_INTERFACE_EXTERN( vic10_expansion_cards );
183
184
185
180186#endif
trunk/src/mess/machine/plus4exp.c
r25373r25374
312312      m_card->plus4_cd_w(space, offset, data, ba, cs0, c1l, c1h, cs1, c2l, c2h);
313313   }
314314}
315
316
317//-------------------------------------------------
318//  SLOT_INTERFACE( plus4_expansion_cards )
319//-------------------------------------------------
320
321SLOT_INTERFACE_START( plus4_expansion_cards )
322   SLOT_INTERFACE("c1551", C1551)
323   SLOT_INTERFACE("sid", PLUS4_SID)
324
325   // the following need ROMs from the software list
326   SLOT_INTERFACE_INTERNAL("standard", PLUS4_STD)
327SLOT_INTERFACE_END
trunk/src/mess/machine/plus4exp.h
r25373r25374
187187extern const device_type PLUS4_EXPANSION_SLOT;
188188
189189
190// slot devices
191#include "machine/c1551.h"
192#include "machine/plus4_sid.h"
193#include "machine/plus4_std.h"
190194
195SLOT_INTERFACE_EXTERN( plus4_expansion_cards );
196
197
198
191199#endif
trunk/src/mess/includes/cbm.h
r25373r25374
1/*****************************************************************************
2 *
3 * includes/cbm.h
4 *
5 ****************************************************************************/
6
7#ifndef CBM_H_
8#define CBM_H_
9
10#include "imagedev/cassette.h"
11
12
13/* global header file for c16, c64, c65, c128, vc20 */
14
15/*----------- defined in machine/cbm.c -----------*/
16
17/* keyboard lines */
18extern UINT8 c64_keyline[10];
19void cbm_common_init(void);
20void cbm_common_interrupt( device_t *device );
21
22UINT8 cbm_common_cia0_port_a_r( device_t *device, UINT8 output_b );
23UINT8 cbm_common_cia0_port_b_r( device_t *device, UINT8 output_a );
24
25/***********************************************
26
27    CBM Datasette Tapes
28
29***********************************************/
30
31extern const cassette_interface cbm_cassette_interface;
32
33
34#endif /* CBM_H_ */
trunk/src/mess/includes/softbox.h
r25373r25374
77#include "cpu/z80/z80.h"
88#include "imagedev/harddriv.h"
99#include "includes/corvushd.h"
10#include "machine/cbmipt.h"
1110#include "machine/com8116.h"
1211#include "machine/i8251.h"
1312#include "machine/i8255.h"
trunk/src/mess/includes/c128.h
r25373r25374
99#include "machine/c64/exp.h"
1010#include "machine/c64/user.h"
1111#include "machine/cbmiec.h"
12#include "machine/cbmipt.h"
1312#include "machine/mos6526.h"
1413#include "machine/mos8722.h"
1514#include "machine/petcass.h"
trunk/src/mess/includes/vic10.h
r25373r25374
55
66#include "emu.h"
77#include "cpu/m6502/m6510.h"
8#include "machine/cbmipt.h"
98#include "machine/mos6526.h"
109#include "machine/petcass.h"
1110#include "machine/ram.h"
11#include "machine/vic10exp.h"
1212#include "machine/vcsctrl.h"
1313#include "sound/dac.h"
1414#include "sound/mos6581.h"
trunk/src/mess/includes/pet.h
r25373r25374
55
66#include "emu.h"
77#include "cpu/m6502/m6502.h"
8#include "imagedev/cartslot.h"
89#include "machine/6522via.h"
910#include "machine/6821pia.h"
1011#include "machine/cbm_snqk.h"
11#include "machine/cbmipt.h"
1212#include "machine/ieee488.h"
1313#include "machine/petcass.h"
1414#include "machine/petexp.h"
trunk/src/mess/includes/cbm2.h
r25373r25374
77#include "cpu/m6502/m6509.h"
88#include "cpu/i86/i86.h"
99#include "machine/cbm_snqk.h"
10#include "includes/cbm.h"
1110#include "machine/6525tpi.h"
1211#include "machine/cbm2exp.h"
1312#include "machine/cbm2user.h"
14#include "machine/cbmipt.h"
1513#include "machine/ds75160a.h"
1614#include "machine/ds75161a.h"
1715#include "machine/ieee488.h"
trunk/src/mess/includes/vic20.h
r25373r25374
55
66
77#include "emu.h"
8#include "includes/cbm.h"
98#include "machine/cbm_snqk.h"
109#include "cpu/m6502/m6510.h"
1110#include "imagedev/cartslot.h"
1211#include "machine/6522via.h"
1312#include "machine/cbmiec.h"
14#include "machine/cbmipt.h"
1513#include "machine/ieee488.h"
1614#include "machine/petcass.h"
1715#include "machine/ram.h"
trunk/src/mess/includes/c64.h
r25373r25374
99#include "machine/c64/exp.h"
1010#include "machine/c64/user.h"
1111#include "machine/cbmiec.h"
12#include "machine/cbmipt.h"
1312#include "machine/mos6526.h"
1413#include "machine/petcass.h"
1514#include "machine/pla.h"
trunk/src/mess/includes/plus4.h
r25373r25374
77#include "cpu/m6502/m7501.h"
88#include "machine/cbm_snqk.h"
99#include "machine/cbmiec.h"
10#include "machine/cbmipt.h"
1110#include "machine/mos6529.h"
1211#include "machine/mos6551.h"
1312#include "machine/mos8706.h"

Previous 199869 Revisions Next


© 1997-2024 The MAME Team