diff options
author | 2015-09-30 17:21:14 +0200 | |
---|---|---|
committer | 2015-09-30 17:21:14 +0200 | |
commit | 1fc48ce120a376c288daeeed98daccecf1b60d7b (patch) | |
tree | 72cefcede17f3a27fa8256b43bfac9756db82312 /src/mess/machine/victor9kb.c | |
parent | 87a576c55501bd7125b51ca786a010229669df0e (diff) |
move mess into mame (nw)
Diffstat (limited to 'src/mess/machine/victor9kb.c')
-rw-r--r-- | src/mess/machine/victor9kb.c | 712 |
1 files changed, 0 insertions, 712 deletions
diff --git a/src/mess/machine/victor9kb.c b/src/mess/machine/victor9kb.c deleted file mode 100644 index a0cf21bfe36..00000000000 --- a/src/mess/machine/victor9kb.c +++ /dev/null @@ -1,712 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Curt Coder -/********************************************************************** - - Victor 9000 keyboard emulation - -*********************************************************************/ - -/* - -Keyboard PCB Layout ----------- - -Marking on PCB back: A65-02307-201D 007 - -|------------------------------------------------------------------------------------| -| 22-908-03 22-950-3B XTAL 8021 74LS14 [804x] [EPROM] [???] L CN1=___ -| X X X X X X X X X X X | -| X X X X X X X X X X X X X X X X X X X X X | -| X X X X X X X X X X X X X X X X X X X X X | -| X X X X X X X X X X X X X X X X X X X X X | -| X X X X X X X X X X X X X X X X X X X X | -| X X marking X X X X X X X X | -|----------------------------------------------------------------------------------------| - - -Notes: - All IC's shown. - XTAL - 3.579545Mhz Crystal, marked "48-300-010" (front of xtal) and "3.579545Mhz" (back of xtal) - 74LS14 - Z4 - 74LS14 Hex inverter with Schmitt-trigger inputs (0.8v hysteresis) - 8021 - Z3 - Intel 8021 MCU, marked: "P8021 2137 // 8227 // 20-8021-139 // (C) INTEL 77" - 22-908-03 - Z2 - Exar Semiconductor XR22-008-03 keyboard matrix capacitive readout latch - 22-950-3B - Z1 - Exar Semiconductor XR22-050-3B keyboard matrix row driver with 4 to 12 decoder/demultiplexer - CN1 or J1 - J1 - keyboard data connector (SIP, 7 pins, right angle) - L - L1 & L2 - mil-spec 22uH 10% inductors (double wide silver band(mil spec), red(2) red(2) black(x1uH) silver(10%)) - - [804x] - unpopulated space for a 40 pin 804x or 803x MCU - [EPROM] - unpopulated space for an EPROM, if a ROMless 803x MCU was used - [???] - unpopulated space for an unknown NDIP10 IC or DIP-switch array - X - capacitive sensor pad for one key - marking - PCB trace marking: "KTC // A65-02307-007 // PCB 201 D" - -74LS14 (Hex inverter with Schmitt-trigger inputs (0.8v hysteresis)) ------------------- - __ __ - 1A 1 |* \_/ | 14 VCC - /1Y 2 | | 13 6A - 2A 3 | | 12 /6Y - /2Y 4 | | 11 5A - 3A 5 | 74LS14| 10 /5Y - /3Y 6 | | 9 4A - GND 7 |_______| 8 /4Y - - -P8021 Pinout ------------------- - _____ _____ - P22 1 |* \_/ | 28 VCC - P23 2 | | 27 P21 - PROG 3 | | 26 P20 - P00 4 | | 25 P17 - P01 5 | P8021 | 24 P16 - P02 6 | | 23 P15 - P03 7 | | 22 P14 - P04 8 | | 21 P13 - P05 9 | | 20 P12 - P06 10 | | 19 P11 - P07 11 | | 18 P10 - ALE 12 | | 17 RESET - T1 13 | | 16 XTAL 2 - VSS 14 |_____________| 15 XTAL 1 - - -XR22-008-03 Pinout (AKA XR22-908-03) ------------------- - _____ _____ - D0 1 |* \_/ | 20 Vcc - D1 2 | | 19 _CLR - D2 3 | | 18 Q0 - D3 4 | | 17 Q1 - HYS 5 | 22-008-03 | 16 Q2 - D4 6 | | 15 Q3 - D5 7 | | 14 Q4 - D6 8 | | 13 Q5 - D7 9 | | 12 Q6 - GND 10 |_____________| 11 Q7 - - -XR22-050-3B Pinout (AKA XR22-950-3B) ------------------- - _____ _____ - Y8 1 |* \_/ | 20 Vcc - Y9 2 | | 19 Y7 - Y10 3 | | 18 Y6 - Y11 4 | | 17 Y5 - _STB 5 | 22-050-3B | 16 Y4 - A0 6 | | 15 Y3 - A1 7 | | 14 Y2 - A2 8 | | 13 Y1 - A3 9 | | 12 Y0 - GND 10 |_____________| 11 OE? - -i8021 to elsewhere connections ------------------------------- -8021 pin - 22-xxx pin - P22 1 - 74LS14 pin 5 (3A) AND (804x chip pin 37, P26) - P23 2 - 74LS14 pin 11 (5A) AND (804x chip pin 38, P27) - PROG 3 - (804x chip pin 25, PROG) - P00 4 - N/C - P01 5 - N/C - P02 6 - N/C - P03 7 - N/C - P04 8 - N/C - P05 9 - N/C - P06 10 - N/C - P07 11 - N/C - ALE 12 - N/C - T1 13 - 74LS14 pin 2 (/1Y) AND (804x chip pin 39, T1) - VSS 14 - GND -XTAL1 15 - XTAL -XTAL2 16 - XTAL -RESET 17 - 10uf capacitor - VCC - P10 18 - 22-908 pin 18 (Q0) AND 22-950 pin 6 (A0) AND (804x chip pin 27, P10) - P11 19 - 22-908 pin 17 (Q1) AND 22-950 pin 7 (A1) AND (804x chip pin 28, P11) - P12 20 - 22-908 pin 16 (Q2) AND 22-950 pin 8 (A2) AND (804x chip pin 29, P12) - P13 21 - 22-908 pin 15 (Q3) AND 22-950 pin 9 (A3) AND (804x chip pin 30, P13) - P14 22 - 22-908 pin 14 (Q4) AND (804x chip pin 31, P14) - P15 23 - 22-908 pin 13 (Q5) AND (804x chip pin 32, P15) - P16 24 - 22-908 pin 12 (Q6) AND (804x chip pin 33, P16) - P17 25 - 22-908 pin 11 (Q7) AND (804x chip pin 34, P17) - P20 26 - 22-908 pin 19 (/CLR) AND 22-950 pin 5 (/STB) AND (804x chip pin 35, P24) - P21 27 - 74LS14 pin 9 (4A) AND (804x chip pin 36, P25) - VCC 28 - VCC - -74LS14 to elsewhere connections -------------------------------- - 1A 1 - 100 Ohm resistor - J1 pin 4 - /1Y 2 - 8021 pin 13 (T1) - 2A 3 - 74LS14 pin 8 - /2Y 4 - 22uH 10% inductor 'L1' - J1 pin 5 - 3A 5 - 8021 pin 1 (P22) - /3Y 6 - many keyboard contact pads (!) - GND 7 - GND - /4Y 8 - 74LS14 pin 3 - 4A 9 - 8021 pin 27 (P21) - /5Y 10 - 74LS14 pin 13 - 5A 11 - 8021 pin 2 (P23) - /6Y 12 - 22uH 10% inductor 'L2' - J1 pin 6 - 6A 13 - 74LS14 pin 10 - VCC 14 - VCC - - -J1 (aka CN1) connections: -------------------------- -1 - VCC -2 - GND -3 - GND -4 - 100 Ohm 5% resistor -> 74LS14 pin 1 -> inverted 74LS14 pin 2 -> inverted 8021 pin 13 (T1) -5 - 22uH 10% inductor 'L1' <- 74LS14 pin 4 <- inverted 74LS14 pin 3 <- inverted 74LS14 pin 8 <- 74LS14 pin 9 <- 8021 pin 27 (P21) -6 - 22uH 10% inductor 'L2' <- 74LS14 pin 12 <- inverted 74LS14 pin 13 <- inverted 74LS14 pin 10 <- 74LS14 pin 11 <- 8021 pin 2 (P23) -7 - VCC - -Pins 5,and 6 also have a .0047uF capacitor to GND (forming some sort of LC filter) -There is another .0047uF capacitor to ground from the connection between 74LS14 pin 1 and the 100 Ohm 5% resistor which connects to pin 4 (forming some sort of RC filter) - -Exar Custom connections between each other: -------------------------------------------- -22-950 pin 11 (OE?) - 68KOhm 5% resistor - 22-908 pin 5 (HYS) - -Cable connecting J1/CN1 to the Victor: --------------------------------------- -RJ45 when looking at end of plug (not socket!) -.||||||||. -|87654321| -|__----__| - |__| - -RJ45 pins Wire Color Connection -1 White J1 pin 1 (VCC) -2 Yellow J1 pin 2 (GND) -3 Green J1 pin 3 (GND) -4 Orange J1 pin 4 (?KBACK?) -5 Blue J1 pin 5 (?KBRDY?) -6 Red J1 pin 6 (?KBDATA?) -7 Black J1 pin 7 (VCC) -8 shield/bare Keyboard Frame Ground - - -Key Layout (USA Variant): (the S0x markings appear on the back of the PCB) -|------------------------------------------------------------------------------------| -| 22-908-03 22-950-3B XTAL 8021 74LS14 [804x] [EPROM] [???] L CN1=___ -| 01 02 03 04 05 06 07 08 09 10 11 | -| 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | -| 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | -| 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | -| 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | -| 95 96 marking 97 98 99 100 101 102 103 104| -|----------------------------------------------------------------------------------------| - - key - Shifted(top)/Unshifted(bottom)/Alt(front) (if no slashes in description assume key has just one symbol on it) - S01 - [1] - S02 - [2] - S03 - [3] - S04 - [4] - S05 - [5] - S06 - [6] - S07 - [7] - S08 - [8] - S09 - UNUSED (under the [8] key, no metal contact on key) - S10 - [9] - S11 - [10] - - S12 - CLR/HOME - S13 - (Degree symbol U+00B0)/(+- symbol U+00B1)/(Pi symbol U+03C0) - S14 - !/1/| - S15 - @/2/< - S16 - #/3/> - S17 - $/4/(centered closed dot U+00B7) - S18 - %/5/(up arrow symbol U+2191) - S19 - (cent symbol U+00A2)/6/(logical not symbol U+00AC) - S20 - &/7/^ - S21 - * /8/` - S22 - (/9/{ - S23 - )/0/} - S24 - _/-/~ - S25 - +/=/\ - S26 - BACKSPACE - S27 - INS - S28 - DEL - S29 - MODE CALC/= (white keypad key) - S30 - % (white keypad key) - S31 - (division symbol U+00F7) (white keypad key) - S32 - (multiplication symbol U+00D7) (white keypad key) - - S33 - (up arrow, SCRL, down arrow)//VTAB - S34 - TAB//BACK - S35 - Q - S36 - W - S37 - E - S38 - R - S39 - T - S40 - Y - S41 - U - S42 - I - S43 - O - S44 - P - S45 - (1/4 symbol U+00BC)/(1/2 symbol U+00BD) - S46 - [/] - S47 - UNUSED (under the RETURN key, no metal contact on key) - S48 - ERASE/EOL - S49 - REQ/CAN - S50 - 7 (white keypad key) - S51 - 8 (white keypad key) - S52 - 9 (white keypad key) - S53 - - (white keypad key) - - S54 - (OFF,RVS,ON)//ESC - S55 - LOCK//CAPS LOCK - S56 - A - S57 - S - S58 - D - S59 - F - S60 - G - S61 - H - S62 - J - S63 - K - S64 - L - S65 - :/; - S66 - "/' - S67 - UNUSED (under the RETURN key, no metal contact on key) - S68 - RETURN - S69 - WORD/(left arrow U+2190)/(volume up U+1F508 plus U+25B4) (i.e. 'Previous Word') - S70 - WORD/(right arrow U+2192)/(volume down U+1F508 plus U+25BE) (i.e. 'Next Word') - S71 - 4 (white keypad key) - S72 - 5 (white keypad key) - S73 - 6 (white keypad key) - S74 - + (white keypad key) - - S75 - (OFF,UNDL,ON) - S76 - SHIFT (left shift) - S77 - UNUSED (under the left SHIFT key, no metal contact on key) - S78 - Z - S79 - X - S80 - C - S81 - V - S82 - B - S83 - N - S84 - M - S85 - ,/, (yes, both are comma) - S86 - ./. (yes, both are period/fullstop) - S87 - ?// (this is the actual / key) - S88 - SHIFT (right shift) - S89 - (up arrow U+2191)//(brightness up U+263C plus U+25B4) - S90 - (down arrow U+2193)//(brightness down U+263C plus U+25BE) - S91 - 1 (white keypad key) - S92 - 2 (white keypad key) - S93 - 3 (white keypad key) - S94 - ENTER (white keypad key) - - S95 - RPT - S96 - ALT - S97 - (spacebar) - S98 - PAUSE/CONT - S99 - (left arrow U+2190)//(contrast up U+25D0 plus U+25B4) (U+1F313 can be used in place of U+25D0) - S100 - (right arrow U+2192)//(contrast down U+25D0 plus U+25BE) '' - S101 - 0 (white keypad key) - S102 - 00 (white keypad key) ('double zero') - S103 - . (white keypad key) - S104 - UNUSED (under the ENTER (keypad) key, no metal contact on key) - - Note that the five unused key contacts: - S09, S47, S67, S77 and S104 - may be used on international variants of the Victor 9000/Sirius 1 Keyboard. - -Keyboard Matrix ---------------- -Row select -| Columns Sxxx by bit Columns Key by bit -| D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7 -V V V V V V V V V V V V V V V V V -Y0 12 13 33 34 54 55 75 76 CLRH DEGR SCRL TAB RVS LOCK UNDL LSHFT -Y1 14 15 35 36 56 57 77 78 1 2 Q W A S N/A Z -Y2 16 17 37 38 58 59 79 80 3 4 E R D F X C -Y3 18 19 39 40 60 61 81 82 5 6 T Y G H V B -Y4 20 21 41 42 62 63 83 84 7 8 U I J K N M -Y5 22 23 43 44 64 65 85 86 9 0 O P L ; , . -Y6 24 25 45 46 66 67 87 88 - = 1/2 [] ' N/A ? RSHFT -Y7 26 27 47 48 68 69 89 90 BKSP INS N/A ERSE RETN WRDL UP DOWN -Y8 28 29 49 50 70 71 91 92 DEL MODE REQ k7 WRDR k4 k1 k2 -Y9 30 31 51 52 72 73 93 94 k% kDIV k8 k9 k5 k6 k3 kENTR -Y10 32 11 53 10 74 09 07 06 kMUL [10] k- [9] k+ N/A [7] [6] -Y11 104 103 102 101 100 99 98 97 kN/A k. k00 k0 RGHT LEFT PAUS SPACE -/3Y 05 04 03 02 01 08 95 96 [5] [4] [3] [2] [1] [8] RPT ALT - -*/ - -#include "victor9kb.h" - - - -//************************************************************************** -// MACROS / CONSTANTS -//************************************************************************** - -#define I8021_TAG "z3" - -#define LOG 0 - - - -//************************************************************************** -// DEVICE DEFINITIONS -//************************************************************************** - -const device_type VICTOR9K_KEYBOARD = &device_creator<victor_9000_keyboard_t>; - - -//------------------------------------------------- -// ROM( victor9k_keyboard ) -//------------------------------------------------- - -ROM_START( victor9k_keyboard ) - ROM_REGION( 0x400, I8021_TAG, 0) - ROM_LOAD( "20-8021-139.z3", 0x000, 0x400, CRC(0fe9d53d) SHA1(61d92ba90f98f8978bbd9303c1ac3134cde8cdcb) ) -ROM_END - - -//------------------------------------------------- -// rom_region - device-specific ROM region -//------------------------------------------------- - -const rom_entry *victor_9000_keyboard_t::device_rom_region() const -{ - return ROM_NAME( victor9k_keyboard ); -} - - -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( victor9k_keyboard_io, AS_IO, 8, victor_9000_keyboard_t ) - // P0 is unconnected on pcb - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(kb_t1_r) -ADDRESS_MAP_END - - -//------------------------------------------------- -// MACHINE_DRIVER( victor9k_keyboard ) -//------------------------------------------------- - -static MACHINE_CONFIG_FRAGMENT( victor9k_keyboard ) - MCFG_CPU_ADD(I8021_TAG, I8021, XTAL_3_579545MHz) - MCFG_CPU_IO_MAP(victor9k_keyboard_io) -MACHINE_CONFIG_END - - -//------------------------------------------------- -// machine_config_additions - device-specific -// machine configurations -//------------------------------------------------- - -machine_config_constructor victor_9000_keyboard_t::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( victor9k_keyboard ); -} - - -//------------------------------------------------- -// INPUT_PORTS( victor9k_keyboard ) -//------------------------------------------------- - -INPUT_PORTS_START( victor9k_keyboard ) - PORT_START("Y0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("CLR/HOME") PORT_CODE(KEYCODE_HOME) // S12 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_PLUSMINUS" " UTF8_DEGREES" " UTF8_SMALL_PI) PORT_CODE(KEYCODE_TILDE) // +-, degree, pi // S13 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP" SCRL " UTF8_DOWN) PORT_CODE(KEYCODE_SCRLOCK) // unicode arrows // S33 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("TAB/BACK") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) // S34 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RVS On-Off/ESC") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) // S54 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("LOCK/CAPSLOCK") PORT_CODE(KEYCODE_CAPSLOCK) // S55 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNDL On-Off") PORT_CODE(KEYCODE_PRTSCR) // need better key code // S75 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // S76 - - PORT_START("Y1") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("1 ! |") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') PORT_CHAR('|') // S14 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("2 @ <") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('@') PORT_CHAR('<') // S15 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') // S35 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') // S36 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') // S56 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') // S57 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S75") // unused // S75 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') // S76 - - PORT_START("Y2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("3 # >") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') PORT_CHAR('>') // S16 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("4 $ \xc2\xb7") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') // centered closed dot U+00B7 // S17 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') // S37 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') // S38 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') // S58 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') // S59 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') // S79 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') // S80 - - PORT_START("Y3") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("5 % " UTF8_UP) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') // S18 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("6 \xc2\xa2 \xc2\xac") PORT_CODE(KEYCODE_6) PORT_CHAR('6') // cent U+00A2, logic not U+00AC // S19 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') // S39 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') // S40 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') // S60 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') // S61 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') // S81 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') // S82 - - PORT_START("Y4") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("7 & ^") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&') PORT_CHAR('^') // S20 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("8 * `") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('*') PORT_CHAR('`') // S21 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') // S41 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') // S42 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') // S62 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') // S63 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') // S83 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') // S84 - - PORT_START("Y5") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("9 ( {") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR('(') PORT_CHAR('{') // S22 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("0 ) }") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') PORT_CHAR('}') // S23 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') // S43 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') // S44 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') // S64 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("; :") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') // S65 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') // S85 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') // S86 - - PORT_START("Y6") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("- _ ~") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') PORT_CHAR('~') // S24 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("= + \\") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') PORT_CHAR('\\') // S25 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("\xc2\xbd \xc2\xbc") PORT_CODE(KEYCODE_OPENBRACE) // unicode half fraction U+00BD / quarter fraction U+00BC // S45 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("[ ]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('[') PORT_CHAR(']') // S46 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("' \"") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('\"') // S66 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S67") // unused // S67 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') // S87 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) // S88 - - PORT_START("Y7") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("BACKSPACE") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(8) // S26 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("INS") PORT_CODE(KEYCODE_INSERT) // S27 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S47") // unused // S47 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ERASE/EOL") PORT_CODE(KEYCODE_END) // should this be mapped to end or del? // S48 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) // S68 - //PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word " UTF8_LEFT"/Volume Up \xf0\x9f\x94\x88\xe2\x96\xb4") PORT_CODE(KEYCODE_PGUP) // unicode U+2190/U+1F508 + U+25B4 // S69 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word " UTF8_LEFT"/Volume Up") PORT_CODE(KEYCODE_PGUP) // unicode U+2190/U+1F508 + U+25B4 // S69 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_UP"/Brightness Up \xe2\x98\xbc\xe2\x96\xb4") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) // U+2191/U+263C + U+25B4 // S89 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_DOWN"/Brightness Down \xe2\x98\xbc\xe2\x96\xbe") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) // U+2193/U+263C + U+25BE // S90 - - PORT_START("Y8") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL) PORT_CHAR(127) // S28 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad MODE CALC/=") PORT_CODE(KEYCODE_NUMLOCK) // S29 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("REQ/CAN") PORT_CODE(KEYCODE_BACKSLASH) // is this a good key for this? does sysrq make more sense? // S49 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) // S50 - //PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word " UTF8_RIGHT"/Volume Down \xf0\x9f\x94\x88\xe2\x96\xbe") PORT_CODE(KEYCODE_PGDN) // unicode U+2192/U+1F508 + U+25B4 // S70 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Word " UTF8_RIGHT"/Volume Down") PORT_CODE(KEYCODE_PGDN) // unicode U+2192/U+1F508 + U+25B4 // S70 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) // S71 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) // S91 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) // S92 - - PORT_START("Y9") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad %") // find a good key for this // S30 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad " UTF8_DIVIDE) PORT_CODE(KEYCODE_SLASH_PAD) // unicode division sign U+00F7 // S31 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) // S51 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) // S52 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) // S72 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) // S73 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) // S93 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad Enter") PORT_CODE(KEYCODE_ENTER_PAD) // S94 - - PORT_START("YA") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad " UTF8_MULTIPLY) PORT_CODE(KEYCODE_ASTERISK) // unicode multiply sign U+00D7 // S32 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F10 [10]") PORT_CODE(KEYCODE_F10) // S11 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad -") PORT_CODE(KEYCODE_MINUS_PAD) // S53 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F9 [9]") PORT_CODE(KEYCODE_F9) // S10 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad +") PORT_CODE(KEYCODE_PLUS_PAD) // S74 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S09") // unused // S09 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F7 [7]") PORT_CODE(KEYCODE_F7) // S07 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F6 [6]") PORT_CODE(KEYCODE_F6) // S06 - - PORT_START("YB") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("UNUSED S04") // unused // S104 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad .") PORT_CODE(KEYCODE_DEL_PAD) // S103 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 00") // S102 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) // S101 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_RIGHT"/Contrast Down \xe2\x97\x90\xe2\x96\xbe") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) // U+2190/U+25D0 + U+25BE S100 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME(UTF8_LEFT"/Contrast Up \xe2\x97\x90\xe2\x96\xb4") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) // U+2190/U+25D0 + U+25B4 S99 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("PAUSE/CONT") PORT_CODE(KEYCODE_PAUSE) // S98 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("Spacebar") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') // S97 - - PORT_START("YC") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F5 [5]") PORT_CODE(KEYCODE_F5) // S05 - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F4 [4]") PORT_CODE(KEYCODE_F4) // S04 - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F3 [3]") PORT_CODE(KEYCODE_F3) // S03 - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F2 [2]") PORT_CODE(KEYCODE_F2) // S02 - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F1 [1]") PORT_CODE(KEYCODE_F1) // S01 - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("F8 [8]") PORT_CODE(KEYCODE_F8) // S11 - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("RPT") PORT_CODE(KEYCODE_LCONTROL) // S95 - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_KEYBOARD ) PORT_NAME("ALT") PORT_CODE(KEYCODE_LALT) PORT_CODE(KEYCODE_RALT) PORT_CHAR(UCHAR_SHIFT_2) // S96 -INPUT_PORTS_END - - -//------------------------------------------------- -// input_ports - device-specific input ports -//------------------------------------------------- - -ioport_constructor victor_9000_keyboard_t::device_input_ports() const -{ - return INPUT_PORTS_NAME( victor9k_keyboard ); -} - - - -//************************************************************************** -// LIVE DEVICE -//************************************************************************** - -//------------------------------------------------- -// victor_9000_keyboard_t - constructor -//------------------------------------------------- - -victor_9000_keyboard_t::victor_9000_keyboard_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : - device_t(mconfig, VICTOR9K_KEYBOARD, "Victor 9000 Keyboard", tag, owner, clock, "victor9kb", __FILE__), - m_maincpu(*this, I8021_TAG), - m_y0(*this, "Y0"), - m_y1(*this, "Y1"), - m_y2(*this, "Y2"), - m_y3(*this, "Y3"), - m_y4(*this, "Y4"), - m_y5(*this, "Y5"), - m_y6(*this, "Y6"), - m_y7(*this, "Y7"), - m_y8(*this, "Y8"), - m_y9(*this, "Y9"), - m_ya(*this, "YA"), - m_yb(*this, "YB"), - m_yc(*this, "YC"), - m_kbrdy_cb(*this), - m_kbdata_cb(*this), - m_y(0), - m_kbrdy(-1), - m_kbdata(-1), - m_kback(1) -{ -} - - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void victor_9000_keyboard_t::device_start() -{ - // resolve callbacks - m_kbrdy_cb.resolve_safe(); - m_kbdata_cb.resolve_safe(); - - // state saving - save_item(NAME(m_p1)); - save_item(NAME(m_y)); - save_item(NAME(m_stb)); - save_item(NAME(m_y12)); - save_item(NAME(m_kbrdy)); - save_item(NAME(m_kbdata)); - save_item(NAME(m_kback)); -} - - -//------------------------------------------------- -// kback_w - -//------------------------------------------------- - -WRITE_LINE_MEMBER( victor_9000_keyboard_t::kback_w ) -{ - if (LOG) logerror("KBACK %u\n", state); - - m_kback = !state; -} - - -//------------------------------------------------- -// kb_p1_r - -//------------------------------------------------- - -READ8_MEMBER( victor_9000_keyboard_t::kb_p1_r ) -{ - UINT8 data = 0xff; - - switch (m_y) - { - case 0: data &= m_y0->read(); break; - case 1: data &= m_y1->read(); break; - case 2: data &= m_y2->read(); break; - case 3: data &= m_y3->read(); break; - case 4: data &= m_y4->read(); break; - case 5: data &= m_y5->read(); break; - case 6: data &= m_y6->read(); break; - case 7: data &= m_y7->read(); break; - case 8: data &= m_y8->read(); break; - case 9: data &= m_y9->read(); break; - case 0xa: data &= m_ya->read(); break; - case 0xb: data &= m_yb->read(); break; - } - - if (!m_y12) - { - data &= m_yc->read(); - } - - return data; -} - - -//------------------------------------------------- -// kb_p1_w - -//------------------------------------------------- - -WRITE8_MEMBER( victor_9000_keyboard_t::kb_p1_w ) -{ - m_p1 = data; -} - - -//------------------------------------------------- -// kb_p2_w - -//------------------------------------------------- - -WRITE8_MEMBER( victor_9000_keyboard_t::kb_p2_w ) -{ - /* - - bit description - - P20 22-908 CLR, 22-950 STB - P21 KBRDY - P22 Y12 - P23 KBDATA - - */ - - // falling (?edge or level?), latch keyboard rows 0-11 - if (!BIT(data, 0)) - { - m_y = m_p1 & 0x0f; - } - - // keyboard row 12 - m_y12 = BIT(data, 2); - - // keyboard ready - m_kbrdy_cb(BIT(data, 1)); - - // keyboard data - m_kbdata_cb(BIT(data, 3)); -} - - -//------------------------------------------------- -// kb_t1_r - -//------------------------------------------------- - -READ8_MEMBER( victor_9000_keyboard_t::kb_t1_r ) -{ - return m_kback; -} |