Previous 15994 Revisions Next

r8967 Tuesday 31st August, 2010 at 01:25:21 UTC by Barry Rodewald
[PCW] Hooked up printer and keyboard MCUs, keyboard input is now read from by the MCU (still needs some work however).
[src/mess/drivers]pcw.c

src/mess/drivers/pcw.c
r8966r8967
9494 ******************************************************************************/
9595#include "emu.h"
9696#include "cpu/z80/z80.h"
97#include "cpu/mcs48/mcs48.h"
98#include "machine/i8243.h"
9799// upd765 interface
98100#include "machine/upd765.h"
99101#include "devices/flopdrv.h"
r8966r8967
125127static UINT8 pcw_timer_irq_flag;
126128static UINT8 pcw_nmi_flag;
127129
130static UINT8 pcw_printer_command;
131static UINT8 pcw_printer_data;
132static UINT8 pcw_printer_status;
128133
134static UINT16 pcw_kb_scan_row;
129135
136static UINT8* mcu_shared_ram;
137
130138static void pcw_update_interrupt_counter(void)
131139{
132140   /* never increments past 15! */
r8966r8967
219227ADDRESS_MAP_END
220228
221229
222/* PCW keyboard is mapped into memory */
230/* Keyboard is read by the MCU and passed onto an area of RAM */
223231static  READ8_HANDLER(pcw_keyboard_r)
224232{
225233   static const char *const keynames[] = {
r8966r8967
227235      "LINE8", "LINE9", "LINE10", "LINE11", "LINE12", "LINE13", "LINE14", "LINE15"
228236   };
229237
238   if(offset == 10)  // the MCU swaps the low 7 bits read from scan row 9, and places them in 0x3A.  This should fix any issue until we know just how the MCU transmits the RAM contents.
239      return (input_port_read(space->machine, keynames[offset]) & 0x80) | (input_port_read(space->machine, keynames[offset-1]) & 0x7f);
230240   return input_port_read(space->machine, keynames[offset]);
231241}
232242
243static READ8_HANDLER(pcw_mcu_shared_r)
244{
245   return mcu_shared_ram[offset];
246}
233247
234248/* -----------------------------------------------------------------------
235249 * PCW Banking
r8966r8967
248262           handler */
249263      memory_install_read8_handler(space,
250264         block * 0x04000 + 0x3ff0, block * 0x04000 + 0x3fff, 0, 0,
251         pcw_keyboard_r);
265         pcw_mcu_shared_r);
252266//      LOG(("MEM: read block %i -> bank %i\n",block,bank));
253267   }
254268   else
r8966r8967
342356   }
343357
344358   /* if boot is active, page in fake ROM */
345   if ((pcw_boot) && (block==0))
359/*   if ((pcw_boot) && (block==0))
346360   {
347361      unsigned char *FakeROM;
348362
349363      FakeROM = &memory_region(machine, "maincpu")[0x010000];
350364
351365      memory_set_bankptr(machine, "bank1", FakeROM);
352   }
366   }*/
353367}
354368
355369/* from Jacob Nevins docs */
r8966r8967
575589   /* from Jacob Nevins docs */
576590   UINT8 ret = pcw_get_sys_status(space->machine);
577591
578//  LOG(("SYS: Status port returning %02x\n",ret));
592  LOG(("SYS: Status port returning %02x\n",ret));
579593   return ret;
580594}
581595
r8966r8967
662676/* TODO: Implement the printer for PCW8256, PCW8512,PCW9256*/
663677static WRITE8_HANDLER(pcw_printer_data_w)
664678{
679   pcw_printer_data = data;
680   upi41_master_w(space->machine->device("printer_mcu"),0,data);
681   logerror("PRN: Sent data %02x\n",data);
665682}
666683
667684static WRITE8_HANDLER(pcw_printer_command_w)
668685{
686   pcw_printer_command = data;
687   upi41_master_w(space->machine->device("printer_mcu"),1,data);
688   logerror("PRN: Sent command %02x\n",data);
669689}
670690
671691static  READ8_HANDLER(pcw_printer_data_r)
672692{
673   return 0x0ff;
693//   pcw_printer_data = 0xf8;
694   pcw_printer_data = upi41_master_r(space->machine->device("printer_mcu"),0);
695   return pcw_printer_data;
674696}
675697
676698static  READ8_HANDLER(pcw_printer_status_r)
677699{
700   pcw_printer_status = upi41_master_r(space->machine->device("printer_mcu"),1);
701   return pcw_printer_status;
702}
703
704/* MCU handlers */
705/*static READ8_HANDLER(mcu_printer_data_r)
706{
707   return pcw_printer_data;
708}
709
710static WRITE8_HANDLER(mcu_printer_data_w)
711{
712   pcw_printer_data = data;
713}*/
714
715static READ8_HANDLER(mcu_printer_command_r)
716{
717   return pcw_printer_command;
718}
719
720static READ8_HANDLER(mcu_kb_scan_r)
721{
722   return pcw_kb_scan_row & 0xff;
723}
724
725static WRITE8_HANDLER(mcu_kb_scan_w)
726{
727   pcw_kb_scan_row = (pcw_kb_scan_row & 0xff00) | data;
728}
729
730static READ8_HANDLER(mcu_kb_scan_high_r)
731{
732   return (pcw_kb_scan_row & 0xff00) >> 8;
733}
734
735static WRITE8_HANDLER(mcu_kb_scan_high_w)
736{
737   pcw_kb_scan_row = (pcw_kb_scan_row & 0x00ff) | ((data & 0xff) << 8);
738}
739
740static READ8_HANDLER(mcu_kb_data_r)
741{
742   UINT16 scan_bits = ((pcw_kb_scan_row & 0xf000) >> 4) | (pcw_kb_scan_row & 0xff);
743   int x;
744
745   for(x=0;x<12;x++)
746   {
747      if(!(scan_bits & 1))
748         return pcw_keyboard_r(space,x);
749      else
750         scan_bits >>= 1;
751   }
678752   return 0xff;
679753}
680754
755static READ8_HANDLER(mcu_kb_t1_r)
756{
757   return 1;
758}
759
760static READ8_HANDLER(mcu_kb_t0_r)
761{
762   return 0;
763}
764
681765/* TODO: Implement parallel port! */
682766static  READ8_HANDLER(pcw9512_parallel_r)
683767{
r8966r8967
696780   logerror("pcw9512 parallel w: offs: %04x data: %02x\n",offset,data);
697781}
698782
783static WRITE8_DEVICE_HANDLER(pcw_printer_output_w)
784{
785   // TODO: figure out the outputs and how it sends the initial Z80 code to the data bus.
786   logerror("PRN: MCU write to P7: offset %i, data %02x\n",offset,data);
787}
699788
700789static ADDRESS_MAP_START(pcw_io, ADDRESS_SPACE_IO, 8)
701790   ADDRESS_MAP_GLOBAL_MASK(0xff)
r8966r8967
726815   AM_RANGE(0x0fc, 0x0fd) AM_READWRITE(pcw9512_parallel_r,         pcw9512_parallel_w)
727816ADDRESS_MAP_END
728817
818/* i8041 MCU */
819static ADDRESS_MAP_START(pcw_printer_io, ADDRESS_SPACE_IO, 8)
820   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(mcu_printer_command_r)
821//   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu_printer_data_r, mcu_printer_data_w)
822//   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(mcu_printer_p2_r)
823   AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("printer_8243",i8243_prog_w)
824ADDRESS_MAP_END
729825
826static ADDRESS_MAP_START(pcw_keyboard_io, ADDRESS_SPACE_IO, 8)
827   AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu_kb_scan_r,mcu_kb_scan_w)
828   AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_kb_scan_high_r,mcu_kb_scan_high_w)
829   AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(mcu_kb_t1_r)
830   AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(mcu_kb_t0_r)
831   AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(mcu_kb_data_r)
832ADDRESS_MAP_END
730833
834static ADDRESS_MAP_START(pcw_keyboard_data, ADDRESS_SPACE_DATA, 8)
835   AM_RANGE(0x30, 0x3f) AM_RAM AM_BASE(&mcu_shared_ram)
836ADDRESS_MAP_END
837
838
731839static TIMER_CALLBACK(setup_beep)
732840{
733841   running_device *speaker = machine->device("beep");
r8966r8967
746854   UINT8* code = memory_region(machine,"printer_mcu");
747855   int x;
748856   /* ram paging is actually undefined at power-on */
857
749858   pcw_bank_force = 0x00;
750859
751860   pcw_banks[0] = 0x80;
r8966r8967
758867   pcw_update_mem(machine, 2, pcw_banks[2]);
759868   pcw_update_mem(machine, 3, pcw_banks[3]);
760869
870   pcw_boot = 0;   // System starts up in bootstrap mode, disabled until it's possible to emulate it.
871
761872   /* copy boot code into RAM - yes, it's skipping a step */
762873
763874   memset(messram_get_ptr(machine->device("messram")),0x00,messram_get_size(machine->device("messram")));
764875   for(x=0;x<256;x++)
765876      messram_get_ptr(machine->device("messram"))[x+2] = code[x+0x300];
766877
878   /* and hack our way past the MCU side of the boot process */
879   code[0x01] = 0x40;
880
881   pcw_printer_status = 0xff;
882   pcw_printer_command = 0xff;
883   pcw_printer_data = 0x00;
767884}
768885
769886static DRIVER_INIT(pcw)
770887{
771   pcw_boot = 0;
772
773888   cpu_set_input_line_vector(machine->device("maincpu"), 0, 0x0ff);
774889
775
776890   /* lower 4 bits are interrupt counter */
777891   pcw_system_status = 0x000;
778892   pcw_system_status &= ~((1<<6) | (1<<5) | (1<<4));
r8966r8967
817931   /* keyboard "ports". These are poked automatically into the PCW address space */
818932
819933   PORT_START("LINE0")      /* 0x03ff0 */
820   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F3  F4") PORT_CODE(KEYCODE_F3)      PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_CHAR(UCHAR_MAMEKEY(F4))
821   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
822   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F1  F2") PORT_CODE(KEYCODE_F1)      PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_CHAR(UCHAR_MAMEKEY(F2))
823   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Paste") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(F9))
824   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
825   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
826   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
827   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
934   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F3  F4") PORT_CODE(KEYCODE_F3)      PORT_CHAR(UCHAR_MAMEKEY(F3)) PORT_CHAR(UCHAR_MAMEKEY(F4))
935   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
936   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F1  F2") PORT_CODE(KEYCODE_F1)      PORT_CHAR(UCHAR_MAMEKEY(F1)) PORT_CHAR(UCHAR_MAMEKEY(F2))
937   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Paste") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(F9))
938   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
939   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
940   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(3_PAD)) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
941   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
828942
829943   PORT_START("LINE1")      /* 0x03ff1 */
830   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Exit") PORT_CODE(KEYCODE_PGDN)      PORT_CHAR(UCHAR_MAMEKEY(F10))
831   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Ptr") PORT_CODE(KEYCODE_END)      PORT_CHAR(UCHAR_MAMEKEY(PRTSCR))
832   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Cut") PORT_CODE(KEYCODE_SLASH_PAD)   PORT_CHAR(UCHAR_MAMEKEY(F11))
833   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Copy") PORT_CODE(KEYCODE_ASTERISK)   PORT_CHAR(UCHAR_MAMEKEY(F12))
834   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
835   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
836   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) PORT_CHAR(UCHAR_MAMEKEY(UP))
837   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
944   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Exit") PORT_CODE(KEYCODE_PGDN)      PORT_CHAR(UCHAR_MAMEKEY(F10))
945   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ptr") PORT_CODE(KEYCODE_END)      PORT_CHAR(UCHAR_MAMEKEY(PRTSCR))
946   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Cut") PORT_CODE(KEYCODE_SLASH_PAD)   PORT_CHAR(UCHAR_MAMEKEY(F11))
947   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Copy") PORT_CODE(KEYCODE_ASTERISK)   PORT_CHAR(UCHAR_MAMEKEY(F12))
948   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
949   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
950   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(5_PAD)) PORT_CHAR(UCHAR_MAMEKEY(UP))
951   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(1_PAD)) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
838952
839953   PORT_START("LINE2")      /* 0x03ff2 */
840   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DEL>") PORT_CODE(KEYCODE_DEL)      PORT_CHAR(UCHAR_MAMEKEY(DEL))
841   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE)               PORT_CHAR(']') PORT_CHAR('}')
842   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER)   PORT_CHAR(13)
843   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE)                  PORT_CHAR('#') PORT_CHAR('>')
844   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
845   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
846   PORT_BIT(0x40, 0x000, IPT_UNUSED)
847   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("[+]") PORT_CODE(KEYCODE_F2)         PORT_CHAR(UCHAR_MAMEKEY(PGUP))   // 1st key on the left from 'Spacebar'
954   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DEL>") PORT_CODE(KEYCODE_DEL)      PORT_CHAR(UCHAR_MAMEKEY(DEL))
955   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE)               PORT_CHAR(']') PORT_CHAR('}')
956   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER)   PORT_CHAR(13)
957   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE)                  PORT_CHAR('#') PORT_CHAR('>')
958   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7_PAD)                  PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
959   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
960   PORT_BIT(0x40, 0xff, IPT_UNUSED)
961   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[+]") PORT_CODE(KEYCODE_F2)         PORT_CHAR(UCHAR_MAMEKEY(PGUP))   // 1st key on the left from 'Spacebar'
848962
849963   PORT_START("LINE3")      /* 0x03ff3 */
850   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS)                  PORT_CHAR('=') PORT_CHAR('+')
851   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)                  PORT_CHAR('-') PORT_CHAR('_')
852   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)               PORT_CHAR('[') PORT_CHAR('{')
853   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P)                     PORT_CHAR('p') PORT_CHAR('P')
854   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)                  PORT_CHAR('\xA7') PORT_CHAR('<')
855   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)                  PORT_CHAR(';') PORT_CHAR(':')
856   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)                  PORT_CHAR('/') PORT_CHAR('?')
857   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)                  PORT_CHAR('.')
964   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS)                  PORT_CHAR('=') PORT_CHAR('+')
965   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS)                  PORT_CHAR('-') PORT_CHAR('_')
966   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE)               PORT_CHAR('[') PORT_CHAR('{')
967   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_P)                     PORT_CHAR('p') PORT_CHAR('P')
968   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE)                  PORT_CHAR('\xA7') PORT_CHAR('<')
969   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON)                  PORT_CHAR(';') PORT_CHAR(':')
970   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH)                  PORT_CHAR('/') PORT_CHAR('?')
971   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP)                  PORT_CHAR('.')
858972
859973   PORT_START("LINE4")      /* 0x03ff4 */
860   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0)                     PORT_CHAR('0') PORT_CHAR(')')
861   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)                     PORT_CHAR('9') PORT_CHAR('(')
862   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O)                     PORT_CHAR('o') PORT_CHAR('O')
863   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I)                     PORT_CHAR('i') PORT_CHAR('I')
864   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L)                     PORT_CHAR('l') PORT_CHAR('L')
865   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K)                     PORT_CHAR('k') PORT_CHAR('K')
866   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M)                     PORT_CHAR('m') PORT_CHAR('M')
867   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)                  PORT_CHAR(',')
974   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_0)                     PORT_CHAR('0') PORT_CHAR(')')
975   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_9)                     PORT_CHAR('9') PORT_CHAR('(')
976   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_O)                     PORT_CHAR('o') PORT_CHAR('O')
977   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_I)                     PORT_CHAR('i') PORT_CHAR('I')
978   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_L)                     PORT_CHAR('l') PORT_CHAR('L')
979   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_K)                     PORT_CHAR('k') PORT_CHAR('K')
980   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_M)                     PORT_CHAR('m') PORT_CHAR('M')
981   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA)                  PORT_CHAR(',')
868982
869983   PORT_START("LINE5")      /* 0x03ff5 */
870   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)                     PORT_CHAR('8') PORT_CHAR('*')
871   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7)                     PORT_CHAR('7') PORT_CHAR('&')
872   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U)                     PORT_CHAR('u') PORT_CHAR('U')
873   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y)                     PORT_CHAR('y') PORT_CHAR('Y')
874   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H)                     PORT_CHAR('h') PORT_CHAR('H')
875   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J)                     PORT_CHAR('j') PORT_CHAR('J')
876   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N)                     PORT_CHAR('n') PORT_CHAR('N')
877   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE)                  PORT_CHAR(' ')
984   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_8)                     PORT_CHAR('8') PORT_CHAR('*')
985   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_7)                     PORT_CHAR('7') PORT_CHAR('&')
986   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_U)                     PORT_CHAR('u') PORT_CHAR('U')
987   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y)                     PORT_CHAR('y') PORT_CHAR('Y')
988   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_H)                     PORT_CHAR('h') PORT_CHAR('H')
989   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_J)                     PORT_CHAR('j') PORT_CHAR('J')
990   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_N)                     PORT_CHAR('n') PORT_CHAR('N')
991   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE)                  PORT_CHAR(' ')
878992
879993   PORT_START("LINE6")      /* 0x03ff6 */
880   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6)                     PORT_CHAR('6') PORT_CHAR('\'')
881   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5)                     PORT_CHAR('5') PORT_CHAR('%')
882   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)                     PORT_CHAR('r') PORT_CHAR('R')
883   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T)                     PORT_CHAR('t') PORT_CHAR('T')
884   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G)                     PORT_CHAR('g') PORT_CHAR('G')
885   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F)                     PORT_CHAR('f') PORT_CHAR('F')
886   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)                     PORT_CHAR('b') PORT_CHAR('B')
887   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V)                     PORT_CHAR('v') PORT_CHAR('V')
994   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_6)                     PORT_CHAR('6') PORT_CHAR('\'')
995   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_5)                     PORT_CHAR('5') PORT_CHAR('%')
996   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_R)                     PORT_CHAR('r') PORT_CHAR('R')
997   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_T)                     PORT_CHAR('t') PORT_CHAR('T')
998   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_G)                     PORT_CHAR('g') PORT_CHAR('G')
999   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_F)                     PORT_CHAR('f') PORT_CHAR('F')
1000   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_B)                     PORT_CHAR('b') PORT_CHAR('B')
1001   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_V)                     PORT_CHAR('v') PORT_CHAR('V')
8881002
8891003   PORT_START("LINE7")      /* 0x03ff7 */
890   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4)                     PORT_CHAR('4') PORT_CHAR('$')
891   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)                     PORT_CHAR('3') PORT_CHAR('\xA3')
892   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)                     PORT_CHAR('e') PORT_CHAR('E')
893   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)                     PORT_CHAR('w') PORT_CHAR('W')
894   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)                     PORT_CHAR('s') PORT_CHAR('S')
895   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)                     PORT_CHAR('d') PORT_CHAR('D')
896   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C)                     PORT_CHAR('c') PORT_CHAR('C')
897   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X)                     PORT_CHAR('x') PORT_CHAR('X')
1004   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_4)                     PORT_CHAR('4') PORT_CHAR('$')
1005   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_3)                     PORT_CHAR('3') PORT_CHAR('\xA3')
1006   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_E)                     PORT_CHAR('e') PORT_CHAR('E')
1007   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_W)                     PORT_CHAR('w') PORT_CHAR('W')
1008   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_S)                     PORT_CHAR('s') PORT_CHAR('S')
1009   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_D)                     PORT_CHAR('d') PORT_CHAR('D')
1010   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_C)                     PORT_CHAR('c') PORT_CHAR('C')
1011   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_X)                     PORT_CHAR('x') PORT_CHAR('X')
8981012
8991013   PORT_START("LINE8")      /* 0x03ff8 */
900   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)                     PORT_CHAR('1') PORT_CHAR('!')
901   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)                     PORT_CHAR('2') PORT_CHAR('"')
902   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Stop") PORT_CODE(KEYCODE_ESC)      PORT_CHAR(UCHAR_MAMEKEY(ESC))
903   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)                     PORT_CHAR('q') PORT_CHAR('Q')
904   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB)                   PORT_CHAR('\t')
905   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)                     PORT_CHAR('a') PORT_CHAR('A')
906   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Shift Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
907   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)                     PORT_CHAR('z') PORT_CHAR('Z')
1014   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_1)                     PORT_CHAR('1') PORT_CHAR('!')
1015   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_2)                     PORT_CHAR('2') PORT_CHAR('"')
1016   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Stop") PORT_CODE(KEYCODE_ESC)      PORT_CHAR(UCHAR_MAMEKEY(ESC))
1017   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q)                     PORT_CHAR('q') PORT_CHAR('Q')
1018   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_TAB)                   PORT_CHAR('\t')
1019   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_A)                     PORT_CHAR('a') PORT_CHAR('A')
1020   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK))
1021   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z)                     PORT_CHAR('z') PORT_CHAR('Z')
9081022
9091023   PORT_START("LINE9")      /* 0x03ff9 */
910   PORT_BIT(0x07f,0x00, IPT_UNUSED)
911   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("DEL<") PORT_CODE(KEYCODE_BACKSPACE)   PORT_CHAR(8)
1024   PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F5  F6") PORT_CODE(KEYCODE_F5)      PORT_CHAR(UCHAR_MAMEKEY(F5)) PORT_CHAR(UCHAR_MAMEKEY(F6))
1025   PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Extra") PORT_CODE(KEYCODE_LCONTROL)   PORT_CHAR(UCHAR_MAMEKEY(HOME))
1026   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Can") PORT_CODE(KEYCODE_PGUP)      PORT_CHAR(UCHAR_MAMEKEY(INSERT))
1027   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[-]") PORT_CODE(KEYCODE_F4)         PORT_CHAR(UCHAR_MAMEKEY(PGDN))   // 1st key on the right from 'Spacebar'
1028   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F7  F8") PORT_CODE(KEYCODE_F7)      PORT_CHAR(UCHAR_MAMEKEY(F7)) PORT_CHAR(UCHAR_MAMEKEY(F8))
1029   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD)               PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
1030   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL_PAD)                PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
1031   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DEL<") PORT_CODE(KEYCODE_BACKSPACE)   PORT_CHAR(8)
9121032
9131033   PORT_START("LINE10")   /* 0x03ffa */
914   PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F5  F6") PORT_CODE(KEYCODE_F5)      PORT_CHAR(UCHAR_MAMEKEY(F5)) PORT_CHAR(UCHAR_MAMEKEY(F6))
915   PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Extra") PORT_CODE(KEYCODE_LCONTROL)   PORT_CHAR(UCHAR_MAMEKEY(HOME))
916   PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Can") PORT_CODE(KEYCODE_PGUP)      PORT_CHAR(UCHAR_MAMEKEY(INSERT))
917   PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("[-]") PORT_CODE(KEYCODE_F4)         PORT_CHAR(UCHAR_MAMEKEY(PGDN))   // 1st key on the right from 'Spacebar'
918   PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F7  F8") PORT_CODE(KEYCODE_F7)      PORT_CHAR(UCHAR_MAMEKEY(F7)) PORT_CHAR(UCHAR_MAMEKEY(F8))
919   PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_ENTER_PAD)               PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
920   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_DEL_PAD)                PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD)) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
921   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_LALT)      PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_CHAR(UCHAR_MAMEKEY(RALT))
1034   PORT_BIT(0x07f,0x7f, IPT_UNUSED)
1035   PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_LALT)      PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) PORT_CHAR(UCHAR_MAMEKEY(RALT))
9221036
9231037   /* at this point the following reflect the above key combinations but in a incomplete
9241038    way. No details available at this time */
9251039   PORT_START("LINE11")   /* 0x03ffb */
926   PORT_BIT(0xff, 0x00,    IPT_UNUSED)
1040   PORT_BIT(0xff, 0xff,    IPT_UNUSED)
9271041
9281042   PORT_START("LINE12")   /* 0x03ffc */
929   PORT_BIT(0xff, 0x00,    IPT_UNUSED)
1043   PORT_BIT(0xff, 0xff,    IPT_UNUSED)
9301044
9311045   /* 2008-05  FP: not sure if this key is correct, "Caps Lock" is already mapped above.
9321046    For now, I let it with no default mapping. */
9331047   PORT_START("LINE13")   /* 0x03ffd */
934   PORT_BIT(0x3f, 0x000, IPT_UNUSED)
935   PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("SHIFT LOCK") //PORT_CODE(KEYCODE_CAPSLOCK)
936   PORT_BIT(0x80, 0x000, IPT_UNUSED)
1048   PORT_BIT(0x3f, 0xff, IPT_UNUSED)
1049   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("SHIFT LOCK") //PORT_CODE(KEYCODE_CAPSLOCK)
1050   PORT_BIT(0x80, 0xff, IPT_UNUSED)
9371051
9381052   PORT_START("LINE14")   /* 0x03ffe */
939   PORT_BIT ( 0xff, 0x00,    IPT_UNUSED )
1053   PORT_BIT ( 0xff, 0xff,    IPT_UNUSED )
9401054
9411055   PORT_START("LINE15")   /* 0x03fff */
942   PORT_BIT ( 0xff, 0x00,    IPT_UNUSED )
1056   PORT_BIT ( 0xff, 0xff,    IPT_UNUSED )
9431057
9441058   /* from here on are the pretend dipswitches for machine config etc */
9451059   PORT_START("EXTRA")
r8966r8967
10001114   MDRV_CPU_IO_MAP(pcw_io)
10011115   MDRV_QUANTUM_TIME(HZ(50))
10021116
1117   MDRV_CPU_ADD("printer_mcu", I8041, 1000000)  // clock is a guess for now
1118   MDRV_CPU_IO_MAP(pcw_printer_io)
1119
1120   MDRV_CPU_ADD("keyboard_mcu", I8048, 1000000) // clock is a guess for now
1121   MDRV_CPU_IO_MAP(pcw_keyboard_io)
1122   MDRV_CPU_DATA_MAP(pcw_keyboard_data)
1123
1124   MDRV_I8243_ADD("printer_8243", NULL, pcw_printer_output_w)
1125
10031126   MDRV_MACHINE_START(pcw)
10041127   MDRV_MACHINE_RESET(pcw)
10051128

Previous 15994 Revisions Next


© 1998-2018 The MESS Team