trunk/src/mess/drivers/tvc.c
| r32230 | r32231 | |
| 13 | 13 | ****************************************************************************/ |
| 14 | 14 | |
| 15 | 15 | #include "emu.h" |
| 16 | | #include "includes/tvc.h" |
| 16 | #include "cpu/z80/z80.h" |
| 17 | #include "video/mc6845.h" |
| 18 | #include "machine/ram.h" |
| 19 | #include "audio/tvc_snd.h" |
| 20 | #include "bus/centronics/ctronics.h" |
| 21 | #include "imagedev/cassette.h" |
| 22 | #include "imagedev/snapquik.h" |
| 23 | #include "formats/tvc_cas.h" |
| 17 | 24 | |
| 25 | #include "bus/tvc/tvc.h" |
| 26 | #include "bus/tvc/hbf.h" |
| 27 | #include "bus/generic/slot.h" |
| 28 | #include "bus/generic/carts.h" |
| 18 | 29 | |
| 30 | #define TVC_RAM_BANK 1 |
| 31 | #define TVC_ROM_BANK 2 |
| 19 | 32 | |
| 33 | #define CENTRONICS_TAG "centronics" |
| 34 | |
| 35 | |
| 36 | class tvc_state : public driver_device |
| 37 | { |
| 38 | public: |
| 39 | tvc_state(const machine_config &mconfig, device_type type, const char *tag) |
| 40 | : driver_device(mconfig, type, tag), |
| 41 | m_maincpu(*this, "maincpu"), |
| 42 | m_ram(*this, RAM_TAG), |
| 43 | m_sound(*this, "custom"), |
| 44 | m_cassette(*this, "cassette"), |
| 45 | m_cart(*this, "cartslot"), |
| 46 | m_centronics(*this, CENTRONICS_TAG), |
| 47 | m_palette(*this, "palette"), |
| 48 | m_keyboard(*this, "LINE") |
| 49 | { } |
| 50 | |
| 51 | required_device<cpu_device> m_maincpu; |
| 52 | required_device<ram_device> m_ram; |
| 53 | required_device<tvc_sound_device> m_sound; |
| 54 | required_device<cassette_image_device> m_cassette; |
| 55 | required_device<generic_slot_device> m_cart; |
| 56 | required_device<centronics_device> m_centronics; |
| 57 | required_device<palette_device> m_palette; |
| 58 | required_ioport_array<16> m_keyboard; |
| 59 | |
| 60 | tvcexp_slot_device *m_expansions[4]; |
| 61 | memory_region *m_bios_rom; |
| 62 | memory_region *m_cart_rom; |
| 63 | memory_region *m_ext; |
| 64 | memory_region *m_vram; |
| 65 | |
| 66 | void machine_start(); |
| 67 | void machine_reset(); |
| 68 | |
| 69 | void set_mem_page(UINT8 data); |
| 70 | DECLARE_WRITE8_MEMBER(bank_w); |
| 71 | DECLARE_WRITE8_MEMBER(vram_bank_w); |
| 72 | DECLARE_WRITE8_MEMBER(palette_w); |
| 73 | DECLARE_WRITE8_MEMBER(keyboard_w); |
| 74 | DECLARE_READ8_MEMBER(keyboard_r); |
| 75 | DECLARE_READ8_MEMBER(int_state_r); |
| 76 | DECLARE_WRITE8_MEMBER(flipflop_w); |
| 77 | DECLARE_WRITE8_MEMBER(border_color_w); |
| 78 | DECLARE_WRITE8_MEMBER(sound_w); |
| 79 | DECLARE_WRITE8_MEMBER(cassette_w); |
| 80 | DECLARE_READ8_MEMBER(_5b_r); |
| 81 | DECLARE_WRITE_LINE_MEMBER(int_ff_set); |
| 82 | DECLARE_WRITE_LINE_MEMBER(centronics_ack); |
| 83 | |
| 84 | // expansions |
| 85 | DECLARE_WRITE8_MEMBER(expansion_w); |
| 86 | DECLARE_READ8_MEMBER(expansion_r); |
| 87 | DECLARE_READ8_MEMBER(exp_id_r); |
| 88 | DECLARE_WRITE8_MEMBER(expint_ack_w); |
| 89 | |
| 90 | DECLARE_QUICKLOAD_LOAD_MEMBER( tvc64); |
| 91 | |
| 92 | MC6845_UPDATE_ROW(crtc_update_row); |
| 93 | |
| 94 | UINT8 m_video_mode; |
| 95 | UINT8 m_keyline; |
| 96 | UINT8 m_active_slot; |
| 97 | UINT8 m_int_flipflop; |
| 98 | UINT8 m_col[4]; |
| 99 | UINT8 m_bank_type[4]; |
| 100 | UINT8 m_bank; |
| 101 | UINT8 m_vram_bank; |
| 102 | UINT8 m_cassette_ff; |
| 103 | UINT8 m_centronics_ff; |
| 104 | DECLARE_PALETTE_INIT(tvc); |
| 105 | }; |
| 106 | |
| 107 | |
| 108 | |
| 20 | 109 | #define TVC_INSTALL_ROM_BANK(_bank,_tag,_start,_end) \ |
| 21 | 110 | if (m_bank_type[_bank] != TVC_ROM_BANK) \ |
| 22 | 111 | { \ |
| r32230 | r32231 | |
| 30 | 119 | space.install_readwrite_bank(_start, _end, _tag); \ |
| 31 | 120 | m_bank_type[_bank] = TVC_RAM_BANK; \ |
| 32 | 121 | } |
| 33 | | void tvc_state::tvc_set_mem_page(UINT8 data) |
| 122 | |
| 123 | void tvc_state::set_mem_page(UINT8 data) |
| 34 | 124 | { |
| 35 | 125 | address_space &space = m_maincpu->space(AS_PROGRAM); |
| 36 | | switch(data & 0x18) |
| 126 | switch (data & 0x18) |
| 37 | 127 | { |
| 38 | 128 | case 0x00 : // system ROM selected |
| 39 | 129 | TVC_INSTALL_ROM_BANK(0, "bank1", 0x0000, 0x3fff); |
| 40 | | membank("bank1")->set_base(memregion("sys")->base()); |
| 130 | membank("bank1")->set_base(m_bios_rom->base()); |
| 41 | 131 | break; |
| 42 | 132 | case 0x08 : // Cart ROM selected |
| 43 | | TVC_INSTALL_ROM_BANK(0, "bank1", 0x0000, 0x3fff); |
| 44 | | membank("bank1")->set_base(memregion("cart")->base()); |
| 133 | if (m_cart_rom) |
| 134 | { |
| 135 | TVC_INSTALL_ROM_BANK(0, "bank1", 0x0000, 0x3fff); |
| 136 | membank("bank1")->set_base(m_cart_rom->base()); |
| 137 | } |
| 45 | 138 | break; |
| 46 | 139 | case 0x10 : // RAM selected |
| 47 | 140 | TVC_INSTALL_RAM_BANK(0, "bank1", 0x0000, 0x3fff); |
| 48 | 141 | membank("bank1")->set_base(m_ram->pointer()); |
| 49 | 142 | break; |
| 50 | 143 | case 0x18 : // Video RAM |
| 51 | | if (memregion("vram")->bytes() > 0x4000) |
| 144 | if (m_vram->bytes() > 0x4000) |
| 52 | 145 | { |
| 53 | 146 | // TVC 64+ only |
| 54 | 147 | TVC_INSTALL_RAM_BANK(0, "bank1", 0x0000, 0x3fff); |
| 55 | | membank("bank1")->set_base(memregion("vram")->base() + ((m_vram_bank & 0x03)<<14)); |
| 148 | membank("bank1")->set_base(m_vram->base() + ((m_vram_bank & 0x03)<<14)); |
| 56 | 149 | } |
| 57 | 150 | else |
| 58 | 151 | { |
| r32230 | r32231 | |
| 65 | 158 | if ((data & 0x20)==0) // Video RAM |
| 66 | 159 | { |
| 67 | 160 | TVC_INSTALL_RAM_BANK(2, "bank3", 0x8000, 0xbfff); |
| 68 | | membank("bank3")->set_base(memregion("vram")->base() + ((m_vram_bank & 0x0c)<<12)); |
| 161 | membank("bank3")->set_base(m_vram->base() + ((m_vram_bank & 0x0c)<<12)); |
| 69 | 162 | } |
| 70 | 163 | else // System RAM page 3 |
| 71 | 164 | { |
| r32230 | r32231 | |
| 84 | 177 | switch(data & 0xc0) |
| 85 | 178 | { |
| 86 | 179 | case 0x00 : // Cart ROM selected |
| 87 | | TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff); |
| 88 | | membank("bank4")->set_base(memregion("cart")->base()); |
| 180 | if (m_cart_rom) |
| 181 | { |
| 182 | TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff); |
| 183 | membank("bank4")->set_base(m_cart_rom->base()); |
| 184 | } |
| 89 | 185 | break; |
| 90 | 186 | case 0x40 : // System ROM selected |
| 91 | 187 | TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff); |
| 92 | | membank("bank4")->set_base(memregion("sys")->base()); |
| 188 | membank("bank4")->set_base(m_bios_rom->base()); |
| 93 | 189 | break; |
| 94 | 190 | case 0x80 : // RAM selected |
| 95 | 191 | if (m_ram->size() > 0x8000) |
| r32230 | r32231 | |
| 105 | 201 | break; |
| 106 | 202 | case 0xc0 : // External ROM selected |
| 107 | 203 | TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff); |
| 108 | | membank("bank4")->set_base(memregion("ext")->base()); |
| 109 | | space.install_readwrite_handler (0xc000, 0xdfff, 0, 0, read8_delegate(FUNC(tvc_state::tvc_expansion_r), this), write8_delegate(FUNC(tvc_state::tvc_expansion_w), this), 0); |
| 204 | membank("bank4")->set_base(m_ext->base()); |
| 205 | space.install_readwrite_handler (0xc000, 0xdfff, 0, 0, read8_delegate(FUNC(tvc_state::expansion_r), this), write8_delegate(FUNC(tvc_state::expansion_w), this), 0); |
| 110 | 206 | m_bank_type[3] = -1; |
| 111 | 207 | break; |
| 112 | 208 | } |
| 113 | 209 | } |
| 114 | 210 | |
| 115 | 211 | |
| 116 | | WRITE8_MEMBER(tvc_state::tvc_expansion_w) |
| 212 | WRITE8_MEMBER(tvc_state::expansion_w) |
| 117 | 213 | { |
| 118 | 214 | m_expansions[m_active_slot & 3]->write(space, offset, data); |
| 119 | 215 | } |
| 120 | 216 | |
| 121 | 217 | |
| 122 | | READ8_MEMBER(tvc_state::tvc_expansion_r) |
| 218 | READ8_MEMBER(tvc_state::expansion_r) |
| 123 | 219 | { |
| 124 | 220 | return m_expansions[m_active_slot & 3]->read(space, offset); |
| 125 | 221 | } |
| 126 | 222 | |
| 127 | | WRITE8_MEMBER(tvc_state::tvc_bank_w) |
| 223 | WRITE8_MEMBER(tvc_state::bank_w) |
| 128 | 224 | { |
| 129 | 225 | m_bank = data; |
| 130 | | tvc_set_mem_page(data); |
| 226 | set_mem_page(data); |
| 131 | 227 | } |
| 132 | 228 | |
| 133 | | WRITE8_MEMBER(tvc_state::tvc_vram_bank_w) |
| 229 | WRITE8_MEMBER(tvc_state::vram_bank_w) |
| 134 | 230 | { |
| 135 | 231 | // TVC 64+ only |
| 136 | | if (memregion("vram")->bytes() > 0x4000) |
| 232 | if (m_vram->bytes() > 0x4000) |
| 137 | 233 | { |
| 138 | 234 | // bit 4-5 - screen video RAM |
| 139 | 235 | // bit 2-3 - video RAM active in bank 3 |
| 140 | 236 | // bit 0-1 - video RAM active in bank 1 |
| 141 | 237 | |
| 142 | 238 | m_vram_bank = data; |
| 143 | | tvc_set_mem_page(m_bank); |
| 239 | set_mem_page(m_bank); |
| 144 | 240 | } |
| 145 | 241 | } |
| 146 | 242 | |
| 147 | | WRITE8_MEMBER(tvc_state::tvc_palette_w) |
| 243 | WRITE8_MEMBER(tvc_state::palette_w) |
| 148 | 244 | { |
| 149 | 245 | // 0 I 0 G | 0 R 0 B |
| 150 | 246 | // 0 0 0 0 | I G R B |
| r32230 | r32231 | |
| 153 | 249 | m_col[offset] = i; |
| 154 | 250 | } |
| 155 | 251 | |
| 156 | | WRITE8_MEMBER(tvc_state::tvc_keyboard_w) |
| 252 | WRITE8_MEMBER(tvc_state::keyboard_w) |
| 157 | 253 | { |
| 158 | 254 | // bit 6-7 - expansion select |
| 159 | 255 | // bit 0-3 - keyboard scan |
| r32230 | r32231 | |
| 162 | 258 | m_active_slot = (data>>6) & 0x03; |
| 163 | 259 | } |
| 164 | 260 | |
| 165 | | READ8_MEMBER(tvc_state::tvc_keyboard_r) |
| 261 | READ8_MEMBER(tvc_state::keyboard_r) |
| 166 | 262 | { |
| 167 | | static const char *const keynames[] = { |
| 168 | | "LINE0", "LINE1", "LINE2", "LINE3", "LINE4", "LINE5", "LINE6", "LINE7", |
| 169 | | "LINE8", "LINE9", "LINEA", "LINEB", "LINEC", "LINED", "LINEE", "LINEF" |
| 170 | | }; |
| 171 | | return ioport(keynames[m_keyline & 0x0f])->read(); |
| 263 | return m_keyboard[m_keyline & 0x0f]->read(); |
| 172 | 264 | } |
| 173 | 265 | |
| 174 | | READ8_MEMBER(tvc_state::tvc_int_state_r) |
| 266 | READ8_MEMBER(tvc_state::int_state_r) |
| 175 | 267 | { |
| 176 | 268 | /* |
| 177 | 269 | x--- ---- centronics ACK flipflop |
| r32230 | r32231 | |
| 189 | 281 | return 0x40 | (m_int_flipflop << 4) | (level > 0.01 ? 0x20 : 0x00) | (m_centronics_ff << 7) | (expint & 0x0f); |
| 190 | 282 | } |
| 191 | 283 | |
| 192 | | WRITE8_MEMBER(tvc_state::tvc_flipflop_w) |
| 284 | WRITE8_MEMBER(tvc_state::flipflop_w) |
| 193 | 285 | { |
| 194 | 286 | // every write here clears the vblank flipflop |
| 195 | 287 | m_int_flipflop = 1; |
| 196 | 288 | m_maincpu->set_input_line(0, CLEAR_LINE); |
| 197 | 289 | } |
| 198 | 290 | |
| 199 | | READ8_MEMBER(tvc_state::tvc_exp_id_r) |
| 291 | READ8_MEMBER(tvc_state::exp_id_r) |
| 200 | 292 | { |
| 201 | 293 | // expansion slots ID |
| 202 | 294 | return (m_expansions[0]->id_r()<<0) | (m_expansions[1]->id_r()<<2) | |
| 203 | 295 | (m_expansions[2]->id_r()<<4) | (m_expansions[3]->id_r()<<6); |
| 204 | 296 | } |
| 205 | 297 | |
| 206 | | WRITE8_MEMBER(tvc_state::tvc_expint_ack_w) |
| 298 | WRITE8_MEMBER(tvc_state::expint_ack_w) |
| 207 | 299 | { |
| 208 | 300 | m_expansions[offset & 3]->int_ack(); |
| 209 | 301 | } |
| 210 | 302 | |
| 211 | | WRITE8_MEMBER(tvc_state::tvc_border_color_w) |
| 303 | WRITE8_MEMBER(tvc_state::border_color_w) |
| 212 | 304 | { |
| 213 | 305 | // x-x- x-x- border color (I G R B) |
| 214 | 306 | } |
| 215 | 307 | |
| 216 | 308 | |
| 217 | | WRITE8_MEMBER(tvc_state::tvc_sound_w) |
| 309 | WRITE8_MEMBER(tvc_state::sound_w) |
| 218 | 310 | { |
| 219 | 311 | switch(offset) |
| 220 | 312 | { |
| r32230 | r32231 | |
| 238 | 330 | m_sound->write(space, offset, data); |
| 239 | 331 | } |
| 240 | 332 | |
| 241 | | READ8_MEMBER(tvc_state::tvc_5b_r) |
| 333 | READ8_MEMBER(tvc_state::_5b_r) |
| 242 | 334 | { |
| 243 | 335 | m_sound->reset_divider(); |
| 244 | 336 | return 0xff; |
| 245 | 337 | } |
| 246 | 338 | |
| 247 | | WRITE8_MEMBER(tvc_state::tvc_cassette_w) |
| 339 | WRITE8_MEMBER(tvc_state::cassette_w) |
| 248 | 340 | { |
| 249 | 341 | // writig here cause the toggle of the cassette flipflop |
| 250 | 342 | m_cassette_ff = !m_cassette_ff; |
| r32230 | r32231 | |
| 261 | 353 | static ADDRESS_MAP_START( tvc_io , AS_IO, 8, tvc_state ) |
| 262 | 354 | ADDRESS_MAP_UNMAP_HIGH |
| 263 | 355 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 264 | | AM_RANGE(0x00, 0x00) AM_WRITE(tvc_border_color_w) |
| 356 | AM_RANGE(0x00, 0x00) AM_WRITE(border_color_w) |
| 265 | 357 | AM_RANGE(0x01, 0x01) AM_DEVWRITE("cent_data_out", output_latch_device, write) |
| 266 | | AM_RANGE(0x02, 0x02) AM_WRITE(tvc_bank_w) |
| 267 | | AM_RANGE(0x03, 0x03) AM_WRITE(tvc_keyboard_w) |
| 268 | | AM_RANGE(0x04, 0x06) AM_WRITE(tvc_sound_w) |
| 269 | | AM_RANGE(0x07, 0x07) AM_WRITE(tvc_flipflop_w) |
| 270 | | AM_RANGE(0x0f, 0x0f) AM_WRITE(tvc_vram_bank_w) |
| 358 | AM_RANGE(0x02, 0x02) AM_WRITE(bank_w) |
| 359 | AM_RANGE(0x03, 0x03) AM_WRITE(keyboard_w) |
| 360 | AM_RANGE(0x04, 0x06) AM_WRITE(sound_w) |
| 361 | AM_RANGE(0x07, 0x07) AM_WRITE(flipflop_w) |
| 362 | AM_RANGE(0x0f, 0x0f) AM_WRITE(vram_bank_w) |
| 271 | 363 | AM_RANGE(0x10, 0x1f) AM_DEVREADWRITE("exp1", tvcexp_slot_device, io_read, io_write) |
| 272 | 364 | AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE("exp2", tvcexp_slot_device, io_read, io_write) |
| 273 | 365 | AM_RANGE(0x30, 0x3f) AM_DEVREADWRITE("exp3", tvcexp_slot_device, io_read, io_write) |
| 274 | 366 | AM_RANGE(0x40, 0x4f) AM_DEVREADWRITE("exp4", tvcexp_slot_device, io_read, io_write) |
| 275 | | AM_RANGE(0x50, 0x50) AM_WRITE(tvc_cassette_w) |
| 276 | | AM_RANGE(0x58, 0x58) AM_READ(tvc_keyboard_r) |
| 277 | | AM_RANGE(0x59, 0x59) AM_READ(tvc_int_state_r) |
| 278 | | AM_RANGE(0x5a, 0x5a) AM_READ(tvc_exp_id_r) |
| 279 | | AM_RANGE(0x5b, 0x5b) AM_READ(tvc_5b_r) |
| 280 | | AM_RANGE(0x58, 0x5b) AM_WRITE(tvc_expint_ack_w) |
| 281 | | AM_RANGE(0x60, 0x63) AM_WRITE(tvc_palette_w) |
| 367 | AM_RANGE(0x50, 0x50) AM_WRITE(cassette_w) |
| 368 | AM_RANGE(0x58, 0x58) AM_READ(keyboard_r) |
| 369 | AM_RANGE(0x59, 0x59) AM_READ(int_state_r) |
| 370 | AM_RANGE(0x5a, 0x5a) AM_READ(exp_id_r) |
| 371 | AM_RANGE(0x5b, 0x5b) AM_READ(_5b_r) |
| 372 | AM_RANGE(0x58, 0x5b) AM_WRITE(expint_ack_w) |
| 373 | AM_RANGE(0x60, 0x63) AM_WRITE(palette_w) |
| 282 | 374 | AM_RANGE(0x70, 0x70) AM_DEVWRITE("crtc", mc6845_device, address_w) |
| 283 | 375 | AM_RANGE(0x71, 0x71) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) |
| 284 | 376 | ADDRESS_MAP_END |
| 285 | 377 | |
| 286 | 378 | /* Input ports */ |
| 287 | 379 | static INPUT_PORTS_START( tvc ) |
| 288 | | PORT_START("LINE0") |
| 289 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') |
| 290 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('+') |
| 291 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"') |
| 292 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('&') |
| 293 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('/') |
| 294 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\x8d") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(0x00cd) |
| 295 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('\'') |
| 296 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('!') |
| 297 | | PORT_START("LINE1") |
| 298 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR('^') |
| 299 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') |
| 300 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') |
| 301 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xbc") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(0x00fc) |
| 302 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*') |
| 303 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xb3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(0x00f3) |
| 304 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xb6") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(0x00f6) |
| 305 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('=') |
| 306 | | PORT_START("LINE2") |
| 307 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') |
| 308 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') |
| 309 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') |
| 310 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('$') |
| 311 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') |
| 312 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_HOME) PORT_CHAR('@') |
| 313 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') |
| 314 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') |
| 315 | | PORT_START("LINE3") |
| 316 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') |
| 317 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') |
| 318 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') |
| 319 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc5\x91") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(0x0151) |
| 320 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') |
| 321 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xba") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(0x00fa) |
| 322 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') |
| 323 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') |
| 324 | | PORT_START("LINE4") |
| 325 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') |
| 326 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') |
| 327 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') |
| 328 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') |
| 329 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') |
| 330 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("<") PORT_CODE(KEYCODE_END) PORT_CHAR('<') |
| 331 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') |
| 332 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') |
| 333 | | PORT_START("LINE5") |
| 334 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) |
| 335 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') |
| 336 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') |
| 337 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xa1") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(0x00e1) |
| 338 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
| 339 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc5\xb1") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(0x0171) |
| 340 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xa9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(0x00e9) |
| 341 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') |
| 342 | | PORT_START("LINE6") |
| 343 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') |
| 344 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') |
| 345 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') |
| 346 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) |
| 347 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') |
| 348 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) |
| 349 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') |
| 350 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') |
| 351 | | PORT_START("LINE7") |
| 352 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_RALT) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) |
| 353 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('?') |
| 354 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR(':') |
| 355 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) |
| 356 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) |
| 357 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') |
| 358 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') |
| 359 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') |
| 360 | | PORT_START("LINE8") |
| 361 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) |
| 362 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) |
| 363 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| 364 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Fire") PORT_CODE(KEYCODE_PGUP) //PORT_CHAR(UCHAR_MAMEKEY()) |
| 365 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Acc") PORT_CODE(KEYCODE_PGDN) //PORT_CHAR(UCHAR_MAMEKEY()) |
| 366 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) |
| 367 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 368 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) |
| 369 | | PORT_START("LINE9") |
| 370 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 371 | | PORT_START("LINEA") |
| 372 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 373 | | PORT_START("LINEB") |
| 374 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 375 | | PORT_START("LINEC") |
| 376 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 377 | | PORT_START("LINED") |
| 378 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 379 | | PORT_START("LINEE") |
| 380 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 381 | | PORT_START("LINEF") |
| 382 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 380 | PORT_START("LINE.0") |
| 381 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') |
| 382 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('+') |
| 383 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"') |
| 384 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('&') |
| 385 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('/') |
| 386 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\x8d") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(0x00cd) |
| 387 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('\'') |
| 388 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('!') |
| 389 | |
| 390 | PORT_START("LINE.1") |
| 391 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR('^') |
| 392 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') |
| 393 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') |
| 394 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xbc") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(0x00fc) |
| 395 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*') |
| 396 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xb3") PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(0x00f3) |
| 397 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xb6") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(0x00f6) |
| 398 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('=') |
| 399 | |
| 400 | PORT_START("LINE.2") |
| 401 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') |
| 402 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') |
| 403 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') |
| 404 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('$') |
| 405 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') |
| 406 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_HOME) PORT_CHAR('@') |
| 407 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') |
| 408 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') |
| 409 | |
| 410 | PORT_START("LINE.3") |
| 411 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') |
| 412 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') |
| 413 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') |
| 414 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc5\x91") PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(0x0151) |
| 415 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') |
| 416 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xba") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(0x00fa) |
| 417 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') |
| 418 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') |
| 419 | |
| 420 | PORT_START("LINE.4") |
| 421 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') |
| 422 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') |
| 423 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') |
| 424 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') |
| 425 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') |
| 426 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("<") PORT_CODE(KEYCODE_END) PORT_CHAR('<') |
| 427 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') |
| 428 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') |
| 429 | |
| 430 | PORT_START("LINE.5") |
| 431 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) |
| 432 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') |
| 433 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') |
| 434 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xa1") PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(0x00e1) |
| 435 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
| 436 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc5\xb1") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(0x0171) |
| 437 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\xc3\xa9") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(0x00e9) |
| 438 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') |
| 439 | |
| 440 | PORT_START("LINE.6") |
| 441 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') |
| 442 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') |
| 443 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') |
| 444 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) |
| 445 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') |
| 446 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) |
| 447 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') |
| 448 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') |
| 449 | |
| 450 | PORT_START("LINE.7") |
| 451 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_RALT) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) |
| 452 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('?') |
| 453 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR(':') |
| 454 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) |
| 455 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) |
| 456 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') |
| 457 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') |
| 458 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') |
| 459 | |
| 460 | PORT_START("LINE.8") |
| 461 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) |
| 462 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) |
| 463 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| 464 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Fire") PORT_CODE(KEYCODE_PGUP) //PORT_CHAR(UCHAR_MAMEKEY()) |
| 465 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Acc") PORT_CODE(KEYCODE_PGDN) //PORT_CHAR(UCHAR_MAMEKEY()) |
| 466 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) |
| 467 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 468 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) |
| 469 | |
| 470 | PORT_START("LINE.9") |
| 471 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 472 | PORT_START("LINE.10") |
| 473 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 474 | PORT_START("LINE.11") |
| 475 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 476 | PORT_START("LINE.12") |
| 477 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 478 | PORT_START("LINE.13") |
| 479 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 480 | PORT_START("LINE.14") |
| 481 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 482 | PORT_START("LINE.15") |
| 483 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 383 | 484 | INPUT_PORTS_END |
| 384 | 485 | |
| 385 | 486 | static INPUT_PORTS_START( tvc64pru ) |
| 386 | | PORT_START("LINE0") |
| 387 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR(0x0436) |
| 388 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') |
| 389 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') |
| 390 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DL") PORT_CODE(KEYCODE_HOME) // delete line |
| 391 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') |
| 392 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DC") PORT_CODE(KEYCODE_7_PAD) |
| 393 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+') |
| 394 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') |
| 395 | | PORT_START("LINE1") |
| 396 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("IL") PORT_CODE(KEYCODE_END) // insert line |
| 397 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') |
| 398 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('{') |
| 399 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') |
| 400 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("_") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('_') |
| 401 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') |
| 402 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') |
| 403 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') |
| 404 | | PORT_START("LINE2") |
| 405 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') |
| 406 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') |
| 407 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') |
| 408 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| 409 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') |
| 410 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) |
| 411 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') |
| 412 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') |
| 413 | | PORT_START("LINE3") |
| 414 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL)) |
| 415 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') |
| 416 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') |
| 417 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') |
| 418 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') |
| 419 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(":") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') |
| 420 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') |
| 421 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') |
| 422 | | PORT_START("LINE4") |
| 423 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') |
| 424 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') |
| 425 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') |
| 426 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) |
| 427 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') |
| 428 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 429 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') |
| 430 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') |
| 431 | | PORT_START("LINE5") |
| 432 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) |
| 433 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') |
| 434 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') |
| 435 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') |
| 436 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
| 437 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') |
| 438 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') |
| 439 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') |
| 440 | | PORT_START("LINE6") |
| 441 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') |
| 442 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') |
| 443 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('^') |
| 444 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) |
| 445 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') |
| 446 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) |
| 447 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') |
| 448 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') |
| 449 | | PORT_START("LINE7") |
| 450 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_RALT) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) |
| 451 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') |
| 452 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('@') PORT_CHAR('\'') |
| 453 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) |
| 454 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) |
| 455 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') |
| 456 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') |
| 457 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') |
| 458 | | PORT_START("LINE8") |
| 459 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) |
| 460 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Up") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(UP)) |
| 461 | | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Down") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| 462 | | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Fire") PORT_CODE(KEYCODE_PGUP) //PORT_CHAR(UCHAR_MAMEKEY()) |
| 463 | | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Acc") PORT_CODE(KEYCODE_PGDN) //PORT_CHAR(UCHAR_MAMEKEY()) |
| 464 | | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Right") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) |
| 465 | | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Left") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 466 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) |
| 467 | | PORT_START("LINE9") |
| 468 | | PORT_BIT(0x7F, IP_ACTIVE_LOW, IPT_UNUSED) |
| 469 | | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*') |
| 470 | | PORT_START("LINEA") |
| 471 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 472 | | PORT_START("LINEB") |
| 473 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 474 | | PORT_START("LINEC") |
| 475 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 476 | | PORT_START("LINED") |
| 477 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 478 | | PORT_START("LINEE") |
| 479 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 480 | | PORT_START("LINEF") |
| 481 | | PORT_BIT(0xFF, IP_ACTIVE_LOW, IPT_UNUSED) |
| 487 | PORT_START("LINE.0") |
| 488 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR(0x0436) |
| 489 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') |
| 490 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') |
| 491 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DL") PORT_CODE(KEYCODE_HOME) // delete line |
| 492 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') |
| 493 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DC") PORT_CODE(KEYCODE_7_PAD) |
| 494 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+') |
| 495 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') |
| 496 | |
| 497 | PORT_START("LINE.1") |
| 498 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("IL") PORT_CODE(KEYCODE_END) // insert line |
| 499 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') |
| 500 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('{') |
| 501 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0") PORT_CODE(KEYCODE_0) PORT_CHAR('0') |
| 502 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("_") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('_') |
| 503 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') |
| 504 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') |
| 505 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') |
| 506 | |
| 507 | PORT_START("LINE.2") |
| 508 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E") PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E') |
| 509 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U") PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U') |
| 510 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C') |
| 511 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| 512 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('N') |
| 513 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) |
| 514 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J') |
| 515 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K') |
| 516 | |
| 517 | PORT_START("LINE.3") |
| 518 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL)) |
| 519 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') |
| 520 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("]") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') |
| 521 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h') PORT_CHAR('H') |
| 522 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(",") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') |
| 523 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(":") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(':') |
| 524 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z') |
| 525 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g') PORT_CHAR('G') |
| 526 | |
| 527 | PORT_START("LINE.4") |
| 528 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P') |
| 529 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W") PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W') |
| 530 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) PORT_CHAR('y') PORT_CHAR('Y') |
| 531 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Right") PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) |
| 532 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R") PORT_CODE(KEYCODE_R) PORT_CHAR('r') PORT_CHAR('R') |
| 533 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 534 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f') PORT_CHAR('F') |
| 535 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A') |
| 536 | |
| 537 | PORT_START("LINE.5") |
| 538 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Backspace") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHAR(UCHAR_MAMEKEY(BACKSPACE)) |
| 539 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('L') |
| 540 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D') |
| 541 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') |
| 542 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) |
| 543 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(".") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') |
| 544 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v') PORT_CHAR('V') |
| 545 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O') |
| 546 | |
| 547 | PORT_START("LINE.6") |
| 548 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I") PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I') |
| 549 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S') |
| 550 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("^") PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('^') |
| 551 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) |
| 552 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T") PORT_CODE(KEYCODE_T) PORT_CHAR('t') PORT_CHAR('T') |
| 553 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_CHAR(UCHAR_MAMEKEY(CAPSLOCK)) |
| 554 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q') |
| 555 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M') |
| 556 | |
| 557 | PORT_START("LINE.7") |
| 558 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Alt") PORT_CODE(KEYCODE_RALT) PORT_CODE(KEYCODE_LALT) PORT_CHAR(UCHAR_MAMEKEY(LALT)) |
| 559 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b') PORT_CHAR('B') |
| 560 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("@") PORT_CODE(KEYCODE_1_PAD) PORT_CHAR('@') PORT_CHAR('\'') |
| 561 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(UCHAR_MAMEKEY(ESC)) |
| 562 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL)) |
| 563 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') |
| 564 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("=") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') |
| 565 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X') |
| 566 | |
| 567 | PORT_START("LINE.8") |
| 568 | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Insert") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT)) |
| 569 | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Up") PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(UP)) |
| 570 | PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Down") PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| 571 | PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Fire") PORT_CODE(KEYCODE_PGUP) //PORT_CHAR(UCHAR_MAMEKEY()) |
| 572 | PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Acc") PORT_CODE(KEYCODE_PGDN) //PORT_CHAR(UCHAR_MAMEKEY()) |
| 573 | PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Right") PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(RIGHT)) |
| 574 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Joy Left") PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 575 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNUSED) |
| 576 | |
| 577 | PORT_START("LINE.9") |
| 578 | PORT_BIT(0x7f, IP_ACTIVE_LOW, IPT_UNUSED) |
| 579 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("*") PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR('*') |
| 580 | PORT_START("LINE.10") |
| 581 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 582 | PORT_START("LINE.11") |
| 583 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 584 | PORT_START("LINE.12") |
| 585 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 586 | PORT_START("LINE.13") |
| 587 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 588 | PORT_START("LINE.14") |
| 589 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 590 | PORT_START("LINE.15") |
| 591 | PORT_BIT(0xff, IP_ACTIVE_LOW, IPT_UNUSED) |
| 482 | 592 | INPUT_PORTS_END |
| 483 | 593 | |
| 484 | 594 | void tvc_state::machine_start() |
| 485 | 595 | { |
| 486 | | for (int i=0; i<4; i++) |
| 596 | for (int i = 0; i < 4; i++) |
| 487 | 597 | m_col[i] = i; |
| 488 | 598 | |
| 489 | 599 | m_int_flipflop = 0; |
| r32230 | r32231 | |
| 492 | 602 | m_expansions[1] = machine().device<tvcexp_slot_device>("exp2"); |
| 493 | 603 | m_expansions[2] = machine().device<tvcexp_slot_device>("exp3"); |
| 494 | 604 | m_expansions[3] = machine().device<tvcexp_slot_device>("exp4"); |
| 605 | |
| 606 | m_bios_rom = memregion("sys"); |
| 607 | m_ext = memregion("ext"); |
| 608 | m_vram = memregion("vram"); |
| 609 | |
| 610 | astring region_tag; |
| 611 | m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 495 | 612 | } |
| 496 | 613 | |
| 497 | 614 | void tvc_state::machine_reset() |
| 498 | 615 | { |
| 499 | 616 | memset(m_ram->pointer(), 0, m_ram->size()); |
| 500 | | tvc_set_mem_page(0); |
| 617 | set_mem_page(0); |
| 501 | 618 | m_video_mode = 0; |
| 502 | 619 | m_cassette_ff = 1; |
| 503 | 620 | m_centronics_ff = 1; |
| r32230 | r32231 | |
| 514 | 631 | { |
| 515 | 632 | const rgb_t *palette = m_palette->palette()->entry_list_raw(); |
| 516 | 633 | UINT32 *p = &bitmap.pix32(y); |
| 517 | | UINT8 *vram = memregion("vram")->base() + ((m_vram_bank & 0x30)<<10); |
| 634 | UINT8 *vram = m_vram->base() + ((m_vram_bank & 0x30)<<10); |
| 518 | 635 | UINT16 offset = ((ma*4 + ra*0x40) & 0x3fff); |
| 519 | 636 | int i; |
| 520 | 637 | |
| r32230 | r32231 | |
| 599 | 716 | palette.set_pen_color(i, tvc_palette[i][0], tvc_palette[i][1], tvc_palette[i][2]); |
| 600 | 717 | } |
| 601 | 718 | |
| 602 | | WRITE_LINE_MEMBER(tvc_state::tvc_int_ff_set) |
| 719 | WRITE_LINE_MEMBER(tvc_state::int_ff_set) |
| 603 | 720 | { |
| 604 | 721 | if (state) |
| 605 | 722 | { |
| r32230 | r32231 | |
| 608 | 725 | } |
| 609 | 726 | } |
| 610 | 727 | |
| 611 | | WRITE_LINE_MEMBER(tvc_state::tvc_centronics_ack) |
| 728 | WRITE_LINE_MEMBER(tvc_state::centronics_ack) |
| 612 | 729 | { |
| 613 | 730 | if (state) |
| 614 | 731 | m_centronics_ff = 1; |
| 615 | 732 | } |
| 616 | 733 | |
| 617 | | QUICKLOAD_LOAD_MEMBER( tvc_state,tvc64) |
| 734 | QUICKLOAD_LOAD_MEMBER( tvc_state, tvc64) |
| 618 | 735 | { |
| 619 | 736 | UINT8 first_byte; |
| 620 | 737 | |
| r32230 | r32231 | |
| 658 | 775 | MCFG_MC6845_SHOW_BORDER_AREA(false) |
| 659 | 776 | MCFG_MC6845_CHAR_WIDTH(8) /*?*/ |
| 660 | 777 | MCFG_MC6845_UPDATE_ROW_CB(tvc_state, crtc_update_row) |
| 661 | | MCFG_MC6845_OUT_CUR_CB(WRITELINE(tvc_state, tvc_int_ff_set)) |
| 778 | MCFG_MC6845_OUT_CUR_CB(WRITELINE(tvc_state, int_ff_set)) |
| 662 | 779 | |
| 663 | 780 | /* internal ram */ |
| 664 | 781 | MCFG_RAM_ADD(RAM_TAG) |
| r32230 | r32231 | |
| 668 | 785 | /* sound hardware */ |
| 669 | 786 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 670 | 787 | MCFG_SOUND_ADD("custom", TVC_SOUND, 0) |
| 671 | | MCFG_TVC_SOUND_SNDINT_CALLBACK(WRITELINE(tvc_state, tvc_int_ff_set)) |
| 788 | MCFG_TVC_SOUND_SNDINT_CALLBACK(WRITELINE(tvc_state, int_ff_set)) |
| 672 | 789 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.75) |
| 673 | 790 | |
| 674 | 791 | MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") |
| 675 | | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tvc_state, tvc_centronics_ack)) |
| 792 | MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(tvc_state, centronics_ack)) |
| 676 | 793 | |
| 677 | 794 | MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") |
| 678 | 795 | |
| 679 | 796 | /* cartridge */ |
| 680 | | MCFG_CARTSLOT_ADD("cart") |
| 681 | | MCFG_CARTSLOT_EXTENSION_LIST("crt,rom,bin") |
| 682 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 683 | | MCFG_CARTSLOT_INTERFACE("tvc_cart") |
| 797 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "tvc_cart") |
| 798 | MCFG_GENERIC_EXTENSIONS("bin,rom,crt") |
| 684 | 799 | |
| 685 | 800 | /* expansion interface */ |
| 686 | 801 | MCFG_DEVICE_ADD("exp1", TVCEXP_SLOT, 0) |
| r32230 | r32231 | |
| 718 | 833 | ROM_REGION( 0x4000, "sys", ROMREGION_ERASEFF ) |
| 719 | 834 | ROM_LOAD( "tvc12_d4.64k", 0x0000, 0x2000, CRC(834ca9be) SHA1(c333318c1c6185aae2d3dfb86d55e3a4a3071a73)) |
| 720 | 835 | ROM_LOAD( "tvc12_d3.64k", 0x2000, 0x2000, CRC(71753d02) SHA1(d9a1905cf55c532b3380c83158fb5254ee503829)) |
| 721 | | ROM_REGION( 0x4000, "cart", ROMREGION_ERASEFF ) |
| 722 | | ROM_CART_LOAD( "cart", 0, 0x4000, 0 ) |
| 836 | |
| 723 | 837 | ROM_REGION( 0x4000, "ext", ROMREGION_ERASEFF ) |
| 724 | 838 | ROM_LOAD( "tvc12_d7.64k", 0x2000, 0x2000, CRC(1cbbeac6) SHA1(54b29c9ca9942f04620fbf3edab3b8e3cd21c194)) |
| 725 | 839 | |
| r32230 | r32231 | |
| 735 | 849 | ROMX_LOAD( "tvc21_d6.64k", 0x0000, 0x2000, CRC(f197ffce) SHA1(7b27a91504dd864170451949ada5f938d6532cae), ROM_BIOS(2) ) |
| 736 | 850 | ROMX_LOAD( "tvc21_d4.64k", 0x2000, 0x2000, CRC(b054c0b2) SHA1(c8ca8d5a4d092604de01e2cafc2a2dabe94e6380), ROM_BIOS(2) ) |
| 737 | 851 | |
| 738 | | ROM_REGION( 0x4000, "cart", ROMREGION_ERASEFF ) |
| 739 | | ROM_CART_LOAD( "cart", 0, 0x4000, 0 ) |
| 740 | 852 | ROM_REGION( 0x4000, "ext", ROMREGION_ERASEFF ) |
| 741 | 853 | ROM_LOAD( "tvc22_d7.64k", 0x2000, 0x2000, CRC(05e1c3a8) SHA1(abf119cf947ea32defd08b29a8a25d75f6bd4987)) |
| 742 | 854 | |
| r32230 | r32231 | |
| 747 | 859 | ROM_REGION( 0x4000, "sys", ROMREGION_ERASEFF ) |
| 748 | 860 | ROM_LOAD( "tvcru_d6.bin", 0x0000, 0x2000, CRC(1e0fa0b8) SHA1(9bebb6c8f03f9641bd35c9fd45ffc13a48e5c572)) |
| 749 | 861 | ROM_LOAD( "tvcru_d4.bin", 0x2000, 0x2000, CRC(bac5dd4f) SHA1(665a1b8c80b6ad82090803621f0c73ef9243c7d4)) |
| 750 | | ROM_REGION( 0x4000, "cart", ROMREGION_ERASEFF ) |
| 751 | | ROM_CART_LOAD( "cart", 0, 0x4000, 0 ) |
| 862 | |
| 752 | 863 | ROM_REGION( 0x4000, "ext", ROMREGION_ERASEFF ) |
| 753 | 864 | ROM_LOAD( "tvcru_d7.bin", 0x2000, 0x2000, CRC(70cde756) SHA1(c49662af9f6653347ead641e85777c3463cc161b)) |
| 754 | 865 | |
| r32230 | r32231 | |
| 757 | 868 | |
| 758 | 869 | /* Driver */ |
| 759 | 870 | |
| 760 | | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 761 | | COMP( 1985, tvc64, 0, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 762 | | COMP( 1985, tvc64p, tvc64, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64+", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 763 | | COMP( 1985, tvc64pru,tvc64, 0, tvc, tvc64pru, driver_device, 0, "Videoton", "TVC 64+ (Russian)", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 871 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 872 | COMP( 1985, tvc64, 0, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 873 | COMP( 1985, tvc64p, tvc64, 0, tvc, tvc, driver_device, 0, "Videoton", "TVC 64+", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 874 | COMP( 1985, tvc64pru, tvc64, 0, tvc, tvc64pru, driver_device, 0, "Videoton", "TVC 64+ (Russian)", GAME_NOT_WORKING | GAME_NO_SOUND) |
trunk/src/mess/drivers/tutor.c
| r32230 | r32231 | |
| 170 | 170 | #include "cpu/tms9900/tms9995.h" |
| 171 | 171 | #include "sound/wave.h" |
| 172 | 172 | #include "video/tms9928a.h" |
| 173 | | #include "imagedev/cartslot.h" |
| 174 | 173 | #include "imagedev/cassette.h" |
| 175 | 174 | #include "sound/sn76496.h" |
| 176 | 175 | #include "bus/centronics/ctronics.h" |
| 176 | #include "bus/generic/slot.h" |
| 177 | #include "bus/generic/carts.h" |
| 177 | 178 | |
| 178 | 179 | |
| 179 | 180 | class tutor_state : public driver_device |
| r32230 | r32231 | |
| 182 | 183 | tutor_state(const machine_config &mconfig, device_type type, const char *tag) |
| 183 | 184 | : driver_device(mconfig, type, tag), |
| 184 | 185 | m_maincpu(*this, "maincpu"), |
| 186 | m_cart(*this, "cartslot"), |
| 185 | 187 | m_cass(*this, "cassette"), |
| 186 | 188 | m_centronics(*this, "centronics"), |
| 187 | | m_cent_data_out(*this, "cent_data_out") |
| 189 | m_cent_data_out(*this, "cent_data_out"), |
| 190 | m_bank1(*this, "bank1") |
| 188 | 191 | { |
| 189 | 192 | } |
| 190 | 193 | |
| 191 | 194 | required_device<tms9995_device> m_maincpu; |
| 195 | required_device<generic_slot_device> m_cart; |
| 192 | 196 | optional_device<cassette_image_device> m_cass; |
| 193 | 197 | optional_device<centronics_device> m_centronics; |
| 194 | 198 | optional_device<output_latch_device> m_cent_data_out; |
| 199 | required_memory_bank m_bank1; |
| 200 | memory_region *m_cart_rom; |
| 201 | |
| 195 | 202 | DECLARE_READ8_MEMBER(key_r); |
| 196 | 203 | DECLARE_READ8_MEMBER(tutor_mapper_r); |
| 197 | 204 | DECLARE_WRITE8_MEMBER(tutor_mapper_w); |
| r32230 | r32231 | |
| 201 | 208 | DECLARE_WRITE8_MEMBER(tutor_printer_w); |
| 202 | 209 | |
| 203 | 210 | DECLARE_READ8_MEMBER(tutor_highmem_r); |
| 204 | | char m_cartridge_enable; |
| 205 | | char m_tape_interrupt_enable; |
| 211 | int m_tape_interrupt_enable; |
| 206 | 212 | emu_timer *m_tape_interrupt_timer; |
| 207 | | UINT8 m_printer_data; |
| 208 | | char m_printer_strobe; |
| 209 | | DECLARE_DRIVER_INIT(tutor); |
| 210 | | DECLARE_DRIVER_INIT(pyuuta); |
| 211 | 213 | virtual void machine_start(); |
| 212 | 214 | virtual void machine_reset(); |
| 213 | 215 | TIMER_CALLBACK_MEMBER(tape_interrupt_handler); |
| 214 | | DECLARE_DEVICE_IMAGE_LOAD_MEMBER( tutor_cart ); |
| 215 | | DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER( tutor_cart ); |
| 216 | 216 | |
| 217 | 217 | int m_centronics_busy; |
| 218 | | DECLARE_WRITE_LINE_MEMBER( write_centronics_busy ); |
| 218 | DECLARE_WRITE_LINE_MEMBER(write_centronics_busy); |
| 219 | 219 | }; |
| 220 | 220 | |
| 221 | 221 | |
| 222 | | /* mapper state */ |
| 223 | | |
| 224 | | /* tape interface state */ |
| 225 | | |
| 226 | | |
| 227 | | |
| 228 | | /* parallel interface state */ |
| 229 | | |
| 230 | | enum |
| 222 | void tutor_state::machine_start() |
| 231 | 223 | { |
| 232 | | basic_base = 0x8000, |
| 233 | | cartridge_base = 0xe000 |
| 234 | | }; |
| 235 | | |
| 236 | | |
| 237 | | DRIVER_INIT_MEMBER(tutor_state,tutor) |
| 238 | | { |
| 224 | astring region_tag; |
| 225 | m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
| 226 | |
| 239 | 227 | m_tape_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tutor_state::tape_interrupt_handler),this)); |
| 228 | |
| 229 | m_bank1->configure_entry(0, memregion("maincpu")->base() + 0x8000); |
| 230 | m_bank1->set_entry(0); |
| 240 | 231 | |
| 241 | | membank("bank1")->configure_entry(0, memregion("maincpu")->base() + basic_base); |
| 242 | | membank("bank1")->configure_entry(1, memregion("maincpu")->base() + cartridge_base); |
| 243 | | membank("bank1")->set_entry(0); |
| 232 | if (m_cart_rom) |
| 233 | { |
| 234 | m_bank1->configure_entry(1, m_cart_rom->base()); |
| 235 | m_bank1->set_entry(1); |
| 236 | } |
| 244 | 237 | } |
| 245 | 238 | |
| 246 | | |
| 247 | | DRIVER_INIT_MEMBER(tutor_state,pyuuta) |
| 248 | | { |
| 249 | | DRIVER_INIT_CALL(tutor); |
| 250 | | membank("bank1")->set_entry(1); |
| 251 | | } |
| 252 | | |
| 253 | | void tutor_state::machine_start() |
| 254 | | { |
| 255 | | } |
| 256 | | |
| 257 | 239 | void tutor_state::machine_reset() |
| 258 | 240 | { |
| 259 | | m_cartridge_enable = 0; |
| 260 | | |
| 261 | 241 | m_tape_interrupt_enable = 0; |
| 242 | m_centronics_busy = 0; |
| 262 | 243 | |
| 263 | | m_printer_data = 0; |
| 264 | | m_printer_strobe = 0; |
| 265 | | |
| 266 | 244 | // Enable auto wait states by lowering READY during reset |
| 267 | 245 | m_maincpu->set_ready(CLEAR_LINE); |
| 268 | 246 | } |
| r32230 | r32231 | |
| 300 | 278 | } |
| 301 | 279 | |
| 302 | 280 | |
| 303 | | DEVICE_IMAGE_LOAD_MEMBER( tutor_state, tutor_cart ) |
| 304 | | { |
| 305 | | UINT32 size; |
| 306 | | UINT8 *ptr = memregion("maincpu")->base(); |
| 307 | | |
| 308 | | if (image.software_entry() == NULL) |
| 309 | | { |
| 310 | | size = image.length(); |
| 311 | | if (image.fread(ptr + cartridge_base, size) != size) |
| 312 | | return IMAGE_INIT_FAIL; |
| 313 | | } |
| 314 | | else |
| 315 | | { |
| 316 | | size = image.get_software_region_length("rom"); |
| 317 | | memcpy(ptr + cartridge_base, image.get_software_region("rom"), size); |
| 318 | | } |
| 319 | | |
| 320 | | return IMAGE_INIT_PASS; |
| 321 | | } |
| 322 | | |
| 323 | | DEVICE_IMAGE_UNLOAD_MEMBER( tutor_state, tutor_cart ) |
| 324 | | { |
| 325 | | memset(memregion("maincpu")->base() + cartridge_base, 0, 0x6000); |
| 326 | | } |
| 327 | | |
| 328 | 281 | /* |
| 329 | 282 | Cartridge mapping: |
| 330 | 283 | |
| r32230 | r32231 | |
| 346 | 299 | switch (offset) |
| 347 | 300 | { |
| 348 | 301 | case 0x10: |
| 349 | | /* return 0x42 if we have an cartridge with an alternate boot ROM */ |
| 302 | /* return 0x42 if we have a cartridge with an alternate boot ROM */ |
| 350 | 303 | reply = 0; |
| 351 | 304 | break; |
| 352 | 305 | |
| r32230 | r32231 | |
| 369 | 322 | |
| 370 | 323 | case 0x08: |
| 371 | 324 | /* disable cartridge ROM, enable BASIC ROM at base >8000 */ |
| 372 | | m_cartridge_enable = 0; |
| 373 | | membank("bank1")->set_entry(0); |
| 325 | m_bank1->set_entry(0); |
| 374 | 326 | break; |
| 375 | 327 | |
| 376 | 328 | case 0x0c: |
| 377 | 329 | /* enable cartridge ROM, disable BASIC ROM at base >8000 */ |
| 378 | | m_cartridge_enable = 1; |
| 379 | | membank("bank1")->set_entry(1); |
| 330 | if (m_cart_rom) |
| 331 | m_bank1->set_entry(1); |
| 380 | 332 | break; |
| 381 | 333 | |
| 382 | 334 | default: |
| 383 | | if (! (offset & 1)) |
| 335 | if (!(offset & 1)) |
| 384 | 336 | logerror("unknown port in %s %d\n", __FILE__, __LINE__); |
| 385 | 337 | break; |
| 386 | 338 | } |
| r32230 | r32231 | |
| 435 | 387 | |
| 436 | 388 | if ((offset & 0x1f) == 0) |
| 437 | 389 | { |
| 438 | | data = (offset & 0x20) != 0; |
| 390 | data = BIT(offset, 5); |
| 439 | 391 | |
| 440 | 392 | switch ((offset >> 6) & 3) |
| 441 | 393 | { |
| r32230 | r32231 | |
| 446 | 398 | case 1: |
| 447 | 399 | /* interrupt control??? */ |
| 448 | 400 | //logerror("ignoring write of %d to cassette port 1\n", data); |
| 449 | | if (m_tape_interrupt_enable != ! data) |
| 401 | if (m_tape_interrupt_enable != data) |
| 450 | 402 | { |
| 451 | | m_tape_interrupt_enable = ! data; |
| 452 | | if (m_tape_interrupt_enable) |
| 403 | m_tape_interrupt_enable = data; |
| 404 | if (!m_tape_interrupt_enable) |
| 453 | 405 | m_tape_interrupt_timer->adjust(/*attotime::from_hz(44100)*/attotime::zero, 0, attotime::from_hz(44100)); |
| 454 | 406 | else |
| 455 | 407 | { |
| r32230 | r32231 | |
| 618 | 570 | */ |
| 619 | 571 | |
| 620 | 572 | static INPUT_PORTS_START(tutor) |
| 621 | | PORT_START("LINE0") /* col 0 */ |
| 573 | PORT_START("LINE0") |
| 622 | 574 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') |
| 623 | 575 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"') |
| 624 | 576 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') |
| r32230 | r32231 | |
| 628 | 580 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') |
| 629 | 581 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('X') |
| 630 | 582 | |
| 631 | | PORT_START("LINE1") /* col 1 */ |
| 583 | PORT_START("LINE1") |
| 632 | 584 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') |
| 633 | 585 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') |
| 634 | 586 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('E') |
| r32230 | r32231 | |
| 638 | 590 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C') |
| 639 | 591 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V') |
| 640 | 592 | |
| 641 | | PORT_START("LINE2") /* col 2 */ |
| 593 | PORT_START("LINE2") |
| 642 | 594 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') |
| 643 | 595 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') |
| 644 | 596 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('T') |
| r32230 | r32231 | |
| 648 | 600 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B') |
| 649 | 601 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N') |
| 650 | 602 | |
| 651 | | PORT_START("LINE3") /* col 3 */ |
| 603 | PORT_START("LINE3") |
| 652 | 604 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') |
| 653 | 605 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') |
| 654 | 606 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') |
| r32230 | r32231 | |
| 658 | 610 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('K') |
| 659 | 611 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('M') |
| 660 | 612 | |
| 661 | | PORT_START("LINE4") /* col 4 */ |
| 613 | PORT_START("LINE4") |
| 662 | 614 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR('=') |
| 663 | 615 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("- b") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') |
| 664 | 616 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') |
| r32230 | r32231 | |
| 668 | 620 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') |
| 669 | 621 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') |
| 670 | 622 | |
| 671 | | PORT_START("LINE4_alt") /* col 4 */ |
| 623 | PORT_START("LINE4_alt") |
| 672 | 624 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(1) |
| 673 | 625 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(1) |
| 674 | 626 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_PLAYER(1) PORT_CODE(KEYCODE_2_PAD) |
| r32230 | r32231 | |
| 676 | 628 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_PLAYER(1) PORT_CODE(KEYCODE_8_PAD) |
| 677 | 629 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_PLAYER(1) PORT_CODE(KEYCODE_6_PAD) |
| 678 | 630 | |
| 679 | | PORT_START("LINE5") /* col 5 */ |
| 631 | PORT_START("LINE5") |
| 680 | 632 | /* Unused? */ |
| 681 | 633 | PORT_BIT(0x03, IP_ACTIVE_HIGH, IPT_UNUSED) |
| 682 | 634 | |
| r32230 | r32231 | |
| 687 | 639 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') |
| 688 | 640 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') // this one is 4th line, 4th key after 'M' |
| 689 | 641 | |
| 690 | | PORT_START("LINE5_alt") /* col 5 */ |
| 642 | PORT_START("LINE5_alt") |
| 691 | 643 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_PLAYER(2) |
| 692 | 644 | PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_PLAYER(2) |
| 693 | 645 | PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) |
| r32230 | r32231 | |
| 695 | 647 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP) PORT_PLAYER(2) |
| 696 | 648 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT) PORT_PLAYER(2) |
| 697 | 649 | |
| 698 | | PORT_START("LINE6") /* col 6 */ |
| 650 | PORT_START("LINE6") |
| 699 | 651 | /* Unused? */ |
| 700 | 652 | PORT_BIT(0x21, IP_ACTIVE_HIGH, IPT_UNUSED) |
| 701 | 653 | |
| r32230 | r32231 | |
| 708 | 660 | PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Mod") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2)) |
| 709 | 661 | PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') |
| 710 | 662 | |
| 711 | | PORT_START("LINE7") /* col 7 */ |
| 663 | PORT_START("LINE7") |
| 712 | 664 | PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) |
| 713 | 665 | PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP)) |
| 714 | 666 | PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Down") PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) |
| r32230 | r32231 | |
| 776 | 728 | MCFG_CASSETTE_ADD( "cassette" ) |
| 777 | 729 | |
| 778 | 730 | /* cartridge */ |
| 779 | | MCFG_CARTSLOT_ADD("cart") |
| 780 | | MCFG_CARTSLOT_NOT_MANDATORY |
| 781 | | MCFG_CARTSLOT_LOAD(tutor_state, tutor_cart) |
| 782 | | MCFG_CARTSLOT_UNLOAD(tutor_state, tutor_cart) |
| 783 | | MCFG_CARTSLOT_INTERFACE("tutor_cart") |
| 731 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_linear_slot, "tutor_cart") |
| 784 | 732 | |
| 785 | 733 | /* software lists */ |
| 786 | 734 | MCFG_SOFTWARE_LIST_ADD("cart_list","tutor") |
| r32230 | r32231 | |
| 796 | 744 | /* |
| 797 | 745 | ROM loading |
| 798 | 746 | */ |
| 747 | |
| 799 | 748 | ROM_START(tutor) |
| 800 | | /*CPU memory space*/ |
| 801 | | ROM_REGION(0x14000,"maincpu",0) |
| 749 | ROM_REGION(0x10000, "maincpu", 0) |
| 802 | 750 | ROM_LOAD("tutor1.bin", 0x0000, 0x8000, CRC(702c38ba) SHA1(ce60607c3038895e31915d41bb5cf71cb8522d7a)) /* system ROM */ |
| 803 | 751 | ROM_LOAD("tutor2.bin", 0x8000, 0x4000, CRC(05f228f5) SHA1(46a14a45f6f9e2c30663a2b87ce60c42768a78d0)) /* BASIC ROM */ |
| 804 | 752 | ROM_END |
| 805 | 753 | |
| 806 | 754 | |
| 807 | 755 | ROM_START(pyuuta) |
| 808 | | /*CPU memory space*/ |
| 809 | | ROM_REGION(0x14000,"maincpu",0) |
| 756 | ROM_REGION(0x10000, "maincpu", 0) |
| 810 | 757 | ROM_LOAD("tomy29.7", 0x0000, 0x8000, CRC(7553bb6a) SHA1(fa41c45cb6d3daf7435f2a82f77dfa286003255e)) /* system ROM */ |
| 811 | 758 | ROM_END |
| 812 | 759 | |
| 813 | 760 | ROM_START(pyuutajr) |
| 814 | | /*CPU memory space*/ |
| 815 | | ROM_REGION(0x14000,"maincpu",0) |
| 761 | ROM_REGION(0x10000, "maincpu", 0) |
| 816 | 762 | ROM_LOAD( "ipl.rom", 0x0000, 0x4000, CRC(2ca37e62) SHA1(eebdc5c37d3b532edd5e5ca65eb785269ebd1ac0)) /* system ROM */ |
| 817 | 763 | ROM_END |
| 818 | 764 | |
| 819 | | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
| 820 | | COMP(1983?, tutor, 0, 0, tutor, tutor, tutor_state, tutor, "Tomy", "Tomy Tutor" , 0) |
| 821 | | COMP(1982, pyuuta, tutor, 0, tutor, tutor, tutor_state, pyuuta, "Tomy", "Tomy Pyuuta" , 0) |
| 822 | | COMP(1983, pyuutajr, tutor, 0, pyuutajr, pyuutajr, tutor_state, pyuuta, "Tomy", "Tomy Pyuuta Jr." , 0) |
| 765 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME */ |
| 766 | COMP(1983?, tutor, 0, 0, tutor, tutor, driver_device, 0, "Tomy", "Tomy Tutor" , 0) |
| 767 | COMP(1982, pyuuta, tutor, 0, tutor, tutor, driver_device, 0, "Tomy", "Tomy Pyuuta" , 0) |
| 768 | COMP(1983, pyuutajr, tutor, 0, pyuutajr, pyuutajr, driver_device, 0, "Tomy", "Tomy Pyuuta Jr." , 0) |