src/mess/drivers/pcw.c
| r8966 | r8967 | |
| 94 | 94 | ******************************************************************************/ |
| 95 | 95 | #include "emu.h" |
| 96 | 96 | #include "cpu/z80/z80.h" |
| 97 | #include "cpu/mcs48/mcs48.h" |
| 98 | #include "machine/i8243.h" |
| 97 | 99 | // upd765 interface |
| 98 | 100 | #include "machine/upd765.h" |
| 99 | 101 | #include "devices/flopdrv.h" |
| r8966 | r8967 | |
| 125 | 127 | static UINT8 pcw_timer_irq_flag; |
| 126 | 128 | static UINT8 pcw_nmi_flag; |
| 127 | 129 | |
| 130 | static UINT8 pcw_printer_command; |
| 131 | static UINT8 pcw_printer_data; |
| 132 | static UINT8 pcw_printer_status; |
| 128 | 133 | |
| 134 | static UINT16 pcw_kb_scan_row; |
| 129 | 135 | |
| 136 | static UINT8* mcu_shared_ram; |
| 137 | |
| 130 | 138 | static void pcw_update_interrupt_counter(void) |
| 131 | 139 | { |
| 132 | 140 | /* never increments past 15! */ |
| r8966 | r8967 | |
| 219 | 227 | ADDRESS_MAP_END |
| 220 | 228 | |
| 221 | 229 | |
| 222 | | /* PCW keyboard is mapped into memory */ |
| 230 | /* Keyboard is read by the MCU and passed onto an area of RAM */ |
| 223 | 231 | static READ8_HANDLER(pcw_keyboard_r) |
| 224 | 232 | { |
| 225 | 233 | static const char *const keynames[] = { |
| r8966 | r8967 | |
| 227 | 235 | "LINE8", "LINE9", "LINE10", "LINE11", "LINE12", "LINE13", "LINE14", "LINE15" |
| 228 | 236 | }; |
| 229 | 237 | |
| 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); |
| 230 | 240 | return input_port_read(space->machine, keynames[offset]); |
| 231 | 241 | } |
| 232 | 242 | |
| 243 | static READ8_HANDLER(pcw_mcu_shared_r) |
| 244 | { |
| 245 | return mcu_shared_ram[offset]; |
| 246 | } |
| 233 | 247 | |
| 234 | 248 | /* ----------------------------------------------------------------------- |
| 235 | 249 | * PCW Banking |
| r8966 | r8967 | |
| 248 | 262 | handler */ |
| 249 | 263 | memory_install_read8_handler(space, |
| 250 | 264 | block * 0x04000 + 0x3ff0, block * 0x04000 + 0x3fff, 0, 0, |
| 251 | | pcw_keyboard_r); |
| 265 | pcw_mcu_shared_r); |
| 252 | 266 | // LOG(("MEM: read block %i -> bank %i\n",block,bank)); |
| 253 | 267 | } |
| 254 | 268 | else |
| r8966 | r8967 | |
| 342 | 356 | } |
| 343 | 357 | |
| 344 | 358 | /* if boot is active, page in fake ROM */ |
| 345 | | if ((pcw_boot) && (block==0)) |
| 359 | /* if ((pcw_boot) && (block==0)) |
| 346 | 360 | { |
| 347 | 361 | unsigned char *FakeROM; |
| 348 | 362 | |
| 349 | 363 | FakeROM = &memory_region(machine, "maincpu")[0x010000]; |
| 350 | 364 | |
| 351 | 365 | memory_set_bankptr(machine, "bank1", FakeROM); |
| 352 | | } |
| 366 | }*/ |
| 353 | 367 | } |
| 354 | 368 | |
| 355 | 369 | /* from Jacob Nevins docs */ |
| r8966 | r8967 | |
| 575 | 589 | /* from Jacob Nevins docs */ |
| 576 | 590 | UINT8 ret = pcw_get_sys_status(space->machine); |
| 577 | 591 | |
| 578 | | // LOG(("SYS: Status port returning %02x\n",ret)); |
| 592 | LOG(("SYS: Status port returning %02x\n",ret)); |
| 579 | 593 | return ret; |
| 580 | 594 | } |
| 581 | 595 | |
| r8966 | r8967 | |
| 662 | 676 | /* TODO: Implement the printer for PCW8256, PCW8512,PCW9256*/ |
| 663 | 677 | static WRITE8_HANDLER(pcw_printer_data_w) |
| 664 | 678 | { |
| 679 | pcw_printer_data = data; |
| 680 | upi41_master_w(space->machine->device("printer_mcu"),0,data); |
| 681 | logerror("PRN: Sent data %02x\n",data); |
| 665 | 682 | } |
| 666 | 683 | |
| 667 | 684 | static WRITE8_HANDLER(pcw_printer_command_w) |
| 668 | 685 | { |
| 686 | pcw_printer_command = data; |
| 687 | upi41_master_w(space->machine->device("printer_mcu"),1,data); |
| 688 | logerror("PRN: Sent command %02x\n",data); |
| 669 | 689 | } |
| 670 | 690 | |
| 671 | 691 | static READ8_HANDLER(pcw_printer_data_r) |
| 672 | 692 | { |
| 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; |
| 674 | 696 | } |
| 675 | 697 | |
| 676 | 698 | static READ8_HANDLER(pcw_printer_status_r) |
| 677 | 699 | { |
| 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 | |
| 710 | static WRITE8_HANDLER(mcu_printer_data_w) |
| 711 | { |
| 712 | pcw_printer_data = data; |
| 713 | }*/ |
| 714 | |
| 715 | static READ8_HANDLER(mcu_printer_command_r) |
| 716 | { |
| 717 | return pcw_printer_command; |
| 718 | } |
| 719 | |
| 720 | static READ8_HANDLER(mcu_kb_scan_r) |
| 721 | { |
| 722 | return pcw_kb_scan_row & 0xff; |
| 723 | } |
| 724 | |
| 725 | static WRITE8_HANDLER(mcu_kb_scan_w) |
| 726 | { |
| 727 | pcw_kb_scan_row = (pcw_kb_scan_row & 0xff00) | data; |
| 728 | } |
| 729 | |
| 730 | static READ8_HANDLER(mcu_kb_scan_high_r) |
| 731 | { |
| 732 | return (pcw_kb_scan_row & 0xff00) >> 8; |
| 733 | } |
| 734 | |
| 735 | static WRITE8_HANDLER(mcu_kb_scan_high_w) |
| 736 | { |
| 737 | pcw_kb_scan_row = (pcw_kb_scan_row & 0x00ff) | ((data & 0xff) << 8); |
| 738 | } |
| 739 | |
| 740 | static 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 | } |
| 678 | 752 | return 0xff; |
| 679 | 753 | } |
| 680 | 754 | |
| 755 | static READ8_HANDLER(mcu_kb_t1_r) |
| 756 | { |
| 757 | return 1; |
| 758 | } |
| 759 | |
| 760 | static READ8_HANDLER(mcu_kb_t0_r) |
| 761 | { |
| 762 | return 0; |
| 763 | } |
| 764 | |
| 681 | 765 | /* TODO: Implement parallel port! */ |
| 682 | 766 | static READ8_HANDLER(pcw9512_parallel_r) |
| 683 | 767 | { |
| r8966 | r8967 | |
| 696 | 780 | logerror("pcw9512 parallel w: offs: %04x data: %02x\n",offset,data); |
| 697 | 781 | } |
| 698 | 782 | |
| 783 | static 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 | } |
| 699 | 788 | |
| 700 | 789 | static ADDRESS_MAP_START(pcw_io, ADDRESS_SPACE_IO, 8) |
| 701 | 790 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| r8966 | r8967 | |
| 726 | 815 | AM_RANGE(0x0fc, 0x0fd) AM_READWRITE(pcw9512_parallel_r, pcw9512_parallel_w) |
| 727 | 816 | ADDRESS_MAP_END |
| 728 | 817 | |
| 818 | /* i8041 MCU */ |
| 819 | static 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) |
| 824 | ADDRESS_MAP_END |
| 729 | 825 | |
| 826 | static 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) |
| 832 | ADDRESS_MAP_END |
| 730 | 833 | |
| 834 | static ADDRESS_MAP_START(pcw_keyboard_data, ADDRESS_SPACE_DATA, 8) |
| 835 | AM_RANGE(0x30, 0x3f) AM_RAM AM_BASE(&mcu_shared_ram) |
| 836 | ADDRESS_MAP_END |
| 837 | |
| 838 | |
| 731 | 839 | static TIMER_CALLBACK(setup_beep) |
| 732 | 840 | { |
| 733 | 841 | running_device *speaker = machine->device("beep"); |
| r8966 | r8967 | |
| 746 | 854 | UINT8* code = memory_region(machine,"printer_mcu"); |
| 747 | 855 | int x; |
| 748 | 856 | /* ram paging is actually undefined at power-on */ |
| 857 | |
| 749 | 858 | pcw_bank_force = 0x00; |
| 750 | 859 | |
| 751 | 860 | pcw_banks[0] = 0x80; |
| r8966 | r8967 | |
| 758 | 867 | pcw_update_mem(machine, 2, pcw_banks[2]); |
| 759 | 868 | pcw_update_mem(machine, 3, pcw_banks[3]); |
| 760 | 869 | |
| 870 | pcw_boot = 0; // System starts up in bootstrap mode, disabled until it's possible to emulate it. |
| 871 | |
| 761 | 872 | /* copy boot code into RAM - yes, it's skipping a step */ |
| 762 | 873 | |
| 763 | 874 | memset(messram_get_ptr(machine->device("messram")),0x00,messram_get_size(machine->device("messram"))); |
| 764 | 875 | for(x=0;x<256;x++) |
| 765 | 876 | messram_get_ptr(machine->device("messram"))[x+2] = code[x+0x300]; |
| 766 | 877 | |
| 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; |
| 767 | 884 | } |
| 768 | 885 | |
| 769 | 886 | static DRIVER_INIT(pcw) |
| 770 | 887 | { |
| 771 | | pcw_boot = 0; |
| 772 | | |
| 773 | 888 | cpu_set_input_line_vector(machine->device("maincpu"), 0, 0x0ff); |
| 774 | 889 | |
| 775 | | |
| 776 | 890 | /* lower 4 bits are interrupt counter */ |
| 777 | 891 | pcw_system_status = 0x000; |
| 778 | 892 | pcw_system_status &= ~((1<<6) | (1<<5) | (1<<4)); |
| r8966 | r8967 | |
| 817 | 931 | /* keyboard "ports". These are poked automatically into the PCW address space */ |
| 818 | 932 | |
| 819 | 933 | 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)) |
| 828 | 942 | |
| 829 | 943 | 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)) |
| 838 | 952 | |
| 839 | 953 | 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' |
| 848 | 962 | |
| 849 | 963 | 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('.') |
| 858 | 972 | |
| 859 | 973 | 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(',') |
| 868 | 982 | |
| 869 | 983 | 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(' ') |
| 878 | 992 | |
| 879 | 993 | 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') |
| 888 | 1002 | |
| 889 | 1003 | 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') |
| 898 | 1012 | |
| 899 | 1013 | 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') |
| 908 | 1022 | |
| 909 | 1023 | 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) |
| 912 | 1032 | |
| 913 | 1033 | 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)) |
| 922 | 1036 | |
| 923 | 1037 | /* at this point the following reflect the above key combinations but in a incomplete |
| 924 | 1038 | way. No details available at this time */ |
| 925 | 1039 | PORT_START("LINE11") /* 0x03ffb */ |
| 926 | | PORT_BIT(0xff, 0x00, IPT_UNUSED) |
| 1040 | PORT_BIT(0xff, 0xff, IPT_UNUSED) |
| 927 | 1041 | |
| 928 | 1042 | PORT_START("LINE12") /* 0x03ffc */ |
| 929 | | PORT_BIT(0xff, 0x00, IPT_UNUSED) |
| 1043 | PORT_BIT(0xff, 0xff, IPT_UNUSED) |
| 930 | 1044 | |
| 931 | 1045 | /* 2008-05 FP: not sure if this key is correct, "Caps Lock" is already mapped above. |
| 932 | 1046 | For now, I let it with no default mapping. */ |
| 933 | 1047 | 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) |
| 937 | 1051 | |
| 938 | 1052 | PORT_START("LINE14") /* 0x03ffe */ |
| 939 | | PORT_BIT ( 0xff, 0x00, IPT_UNUSED ) |
| 1053 | PORT_BIT ( 0xff, 0xff, IPT_UNUSED ) |
| 940 | 1054 | |
| 941 | 1055 | PORT_START("LINE15") /* 0x03fff */ |
| 942 | | PORT_BIT ( 0xff, 0x00, IPT_UNUSED ) |
| 1056 | PORT_BIT ( 0xff, 0xff, IPT_UNUSED ) |
| 943 | 1057 | |
| 944 | 1058 | /* from here on are the pretend dipswitches for machine config etc */ |
| 945 | 1059 | PORT_START("EXTRA") |
| r8966 | r8967 | |
| 1000 | 1114 | MDRV_CPU_IO_MAP(pcw_io) |
| 1001 | 1115 | MDRV_QUANTUM_TIME(HZ(50)) |
| 1002 | 1116 | |
| 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 | |
| 1003 | 1126 | MDRV_MACHINE_START(pcw) |
| 1004 | 1127 | MDRV_MACHINE_RESET(pcw) |
| 1005 | 1128 | |