src/mess/drivers/bmjr.c
| r8663 | r8664 | |
| 43 | 43 | |
| 44 | 44 | count++; |
| 45 | 45 | } |
| 46 | | |
| 47 | 46 | } |
| 48 | 47 | |
| 49 | 48 | return 0; |
| 50 | 49 | } |
| 51 | 50 | |
| 51 | static UINT8 key_mux; |
| 52 | |
| 53 | static READ8_HANDLER( key_r ) |
| 54 | { |
| 55 | static const char *const keynames[] = { "KEY0", "KEY1", "KEY2", "KEY3", |
| 56 | "KEY4", "KEY5", "KEY6", "KEY7", |
| 57 | "KEY8", "KEY9", "KEYA", "KEYB", |
| 58 | "KEYC", "KEYD", "UNUSED", "UNUSED" }; |
| 59 | |
| 60 | |
| 61 | return (input_port_read(space->machine, keynames[key_mux]) & 0xf) | ((input_port_read(space->machine, "KEYMOD") & 0xf) << 4); |
| 62 | } |
| 63 | |
| 64 | static WRITE8_HANDLER( key_w ) |
| 65 | { |
| 66 | key_mux = data & 0xf; |
| 67 | } |
| 68 | |
| 52 | 69 | static ADDRESS_MAP_START(bmjr_mem, ADDRESS_SPACE_PROGRAM, 8) |
| 53 | | ADDRESS_MAP_UNMAP_HIGH |
| 70 | // ADDRESS_MAP_UNMAP_HIGH |
| 54 | 71 | //0x0100, 0x03ff basic vram |
| 55 | 72 | //0x0900, 0x20ff vram, modes 0x40 / 0xc0 |
| 56 | 73 | //0x2100, 0x38ff vram, modes 0x44 / 0xcc |
| r8663 | r8664 | |
| 63 | 80 | // AM_RANGE(0xee20, 0xee20) R start tape |
| 64 | 81 | // AM_RANGE(0xee40, 0xee40) W Picture reverse (?) |
| 65 | 82 | // AM_RANGE(0xee80, 0xee80) RW tape input / output |
| 66 | | // AM_RANGE(0xeec0, 0xeec0) RW keyboard |
| 83 | AM_RANGE(0xeec0, 0xeec0) AM_READWRITE(key_r,key_w)//RW keyboard |
| 67 | 84 | // AM_RANGE(0xef00, 0xef00) R timer |
| 68 | 85 | // AM_RANGE(0xef40, 0xef40) R unknown |
| 69 | 86 | // AM_RANGE(0xef80, 0xef80) R unknown |
| r8663 | r8664 | |
| 73 | 90 | |
| 74 | 91 | /* Input ports */ |
| 75 | 92 | static INPUT_PORTS_START( bmjr ) |
| 93 | PORT_START("KEY0") |
| 94 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') |
| 95 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A') |
| 96 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') |
| 97 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') |
| 98 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 99 | |
| 100 | PORT_START("KEY1") |
| 101 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X') |
| 102 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S') |
| 103 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('W') |
| 104 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') |
| 105 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 106 | |
| 107 | PORT_START("KEY2") |
| 108 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C') |
| 109 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D') |
| 110 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('E') |
| 111 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') |
| 112 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 113 | |
| 114 | PORT_START("KEY3") |
| 115 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V') |
| 116 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F') |
| 117 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('R') |
| 118 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') |
| 119 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 120 | |
| 121 | PORT_START("KEY4") |
| 122 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B') |
| 123 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('G') |
| 124 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('T') |
| 125 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') |
| 126 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 127 | |
| 128 | PORT_START("KEY5") |
| 129 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('N') |
| 130 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('H') |
| 131 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') |
| 132 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') |
| 133 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 134 | |
| 135 | PORT_START("KEY6") |
| 136 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('M') |
| 137 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J') |
| 138 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('U') |
| 139 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') |
| 140 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 141 | |
| 142 | PORT_START("KEY7") |
| 143 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') |
| 144 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('K') |
| 145 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('I') |
| 146 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') |
| 147 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 148 | |
| 149 | PORT_START("KEY8") |
| 150 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') |
| 151 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('L') |
| 152 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('O') |
| 153 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') |
| 154 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 155 | |
| 156 | PORT_START("KEY9") |
| 157 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("/") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('/') |
| 158 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') |
| 159 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('P') |
| 160 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') |
| 161 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 162 | |
| 163 | PORT_START("KEYA") |
| 164 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 165 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(":") |
| 166 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("@ / Up") PORT_CODE(KEYCODE_8_PAD) |
| 167 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("- / =") PORT_CODE(KEYCODE_0_PAD) |
| 168 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 169 | |
| 170 | PORT_START("KEYB") |
| 171 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') |
| 172 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') |
| 173 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("[ / Down") PORT_CODE(KEYCODE_OPENBRACE) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR('[') |
| 174 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("^ / Right") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR('^') |
| 175 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 176 | |
| 177 | PORT_START("KEYC") |
| 178 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_UNUSED) |
| 179 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) |
| 180 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) |
| 181 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("\xC2\xA5 / Left") PORT_CODE(KEYCODE_4_PAD) |
| 182 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 183 | |
| 184 | PORT_START("KEYD") |
| 185 | PORT_DIPNAME( 0x01, 0x01, "D" ) |
| 186 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 187 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 188 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) |
| 189 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 190 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 191 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) |
| 192 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 193 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 194 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) |
| 195 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 196 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 197 | PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 198 | |
| 199 | PORT_START("UNUSED") |
| 200 | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 201 | |
| 202 | PORT_START("KEYMOD") /* Note: you should press Normal to return from a Kana state and vice-versa */ |
| 203 | PORT_BIT(0x01,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME(DEF_STR( Normal )) PORT_CODE(KEYCODE_LCONTROL) |
| 204 | PORT_BIT(0x02,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT) |
| 205 | PORT_BIT(0x04,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Kana Shift") PORT_CODE(KEYCODE_LALT) |
| 206 | PORT_BIT(0x08,IP_ACTIVE_LOW,IPT_KEYBOARD) PORT_NAME("Kana") PORT_CODE(KEYCODE_RCONTROL) |
| 207 | PORT_BIT(0xf0,IP_ACTIVE_LOW,IPT_UNUSED ) |
| 76 | 208 | INPUT_PORTS_END |
| 77 | 209 | |
| 78 | 210 | |
| r8663 | r8664 | |
| 105 | 237 | |
| 106 | 238 | static MACHINE_DRIVER_START( bmjr ) |
| 107 | 239 | /* basic machine hardware */ |
| 108 | | MDRV_CPU_ADD("maincpu",M6800, XTAL_4MHz) |
| 240 | MDRV_CPU_ADD("maincpu",M6800, XTAL_4MHz/4) //unknown clock / divider |
| 109 | 241 | MDRV_CPU_PROGRAM_MAP(bmjr_mem) |
| 110 | 242 | |
| 111 | 243 | MDRV_MACHINE_RESET(bmjr) |