Previous 199869 Revisions Next

r33842 Friday 12th December, 2014 at 05:42:17 UTC by Robbbert
(MESS) excalibur : added rom banking. Fixed missing key in keyboard. (nw)
[src/mess/drivers]excali64.c

trunk/src/mess/drivers/excali64.c
r242353r242354
99
1010Chips: Z80A, 8251, 8253, 8255, 6845
1111We have Basic 1.1. Other known versions are 1.01, 2.1
12There are 2 versions of the colour prom, which have different palettes.
13We have the later version.
1214
1315Control W then Enter will switch between 40 and 80 characters per line.
1416
1517ToDo:
16- Some keys can be connected to more than one position in the matrix. Need to
17  determine the correct positions.
18- The position of the "Line Insert" key is unknown.
1918- Colours are approximate.
2019- Disk controller
21- ROM banking
20- Graphics commands such as LINE and CIRCLE produce a syntax error.
21- Some commands such as HGRCLS are missing from the rom. Perhaps we need a later version?
22- SET command produces random graphics instead of the expected lo-res dot.
2223- The schematic shows the audio counter connected to 2MHz, but this produces
2324  sounds that are too high. Connected to 1MHz for now.
2425- Serial
r242353r242354
103104ADDRESS_MAP_END
104105
105106
106// Keyboard matrix is not included in schematics, so some guesswork
107107static INPUT_PORTS_START( excali64 )
108108   PORT_START("KEY.0")    /* line 0 */
109109   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') PORT_CHAR(0x12)
r242353r242354
153153   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x7f) PORT_CHAR(0x7f) PORT_CHAR(0x1f)
154154   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(0x1b)
155155   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1 !") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
156   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) //1
156   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("INS") PORT_CODE(KEYCODE_INSERT)
157157
158158   PORT_START("KEY.5")    /* line 5 */
159159   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[ {") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') PORT_CHAR(0x1b)
r242353r242354
245245      membank("bankr1")->set_entry(0);
246246      membank("bankr2")->set_entry(0);
247247      membank("bankr3")->set_entry(0);
248      membank("bankr4")->set_entry(0);
249      membank("bankw1")->set_entry(0);
250248      membank("bankw2")->set_entry(0);
251249      membank("bankw3")->set_entry(0);
252250      membank("bankw4")->set_entry(0);
r242353r242354
258256      membank("bankr1")->set_entry(1);
259257      membank("bankr2")->set_entry(1);
260258      membank("bankr3")->set_entry(1);
261      membank("bankr4")->set_entry(0);
262      membank("bankw1")->set_entry(0);
263259      membank("bankw2")->set_entry(2);
264260      membank("bankw3")->set_entry(2);
265261      membank("bankw4")->set_entry(2);
r242353r242354
270266      membank("bankr1")->set_entry(1);
271267      membank("bankr2")->set_entry(1);
272268      membank("bankr3")->set_entry(1);
273      membank("bankr4")->set_entry(0);
274      membank("bankw1")->set_entry(0);
275269      membank("bankw2")->set_entry(2);
276270      membank("bankw3")->set_entry(2);
277271      membank("bankw4")->set_entry(0);
278272   }
273
274   // other half of ROM_1
275   if ((data & 0x22) == 0x20)
276      membank("bankr1")->set_entry(2);
279277}
280278
281279MACHINE_RESET_MEMBER( excali64_state, excali64 )
r242353r242354
342340   membank("bankw4")->configure_entry(0, &ram[0x4000]);//boot
343341   // rom_1
344342   membank("bankr1")->configure_entry(1, &main[0x0000]);//boot
343   membank("bankr1")->configure_entry(2, &main[0x2000]);
345344   // rom_2
346345   membank("bankr2")->configure_entry(1, &main[0x4000]);//boot
347346   membank("bankr3")->configure_entry(1, &main[0x5000]);//boot


Previous 199869 Revisions Next


© 1997-2024 The MAME Team