trunk/src/mess/drivers/rainbow.c
| r29515 | r29516 | |
| 168 | 168 | W17 pulls J1 serial port pin 1 to GND when set (chassis to logical GND). |
| 169 | 169 | ****************************************************************************/ |
| 170 | 170 | |
| 171 | // Define standard and maximum RAM sizes (A, then B model): |
| 172 | //#define BOARD_RAM 0x10000 // 64 K base RAM (100-A) |
| 173 | //#define END_OF_RAM 0xcffff // very last byte (100-A) DO NOT CHANGE. |
| 174 | |
| 175 | // DEC-100-B probes until a 'flaky' area is found (BOOT ROM around F400:0E04). |
| 176 | // It is no longer possible to key in the RAM size from within the 100-B BIOS. |
| 177 | #define BOARD_RAM 0x20000 // 128 K base RAM (100-B) |
| 178 | #define END_OF_RAM 0xdffff // very last byte (100-B) DO NOT CHANGE. |
| 179 | |
| 180 | // TROUBLESHOOTING RAM |
| 181 | // Unexpected low RAM sizes are an indication of option RAM (at worst: 128 K on board) failure. |
| 182 | // While motherboard errors often render the system unbootable, bad option RAM (> 128 K) |
| 183 | // can be narrowed down with the Diagnostic Disk and codes from the 'Pocket Service Guide' |
| 184 | // EK-PC100-PS-002 (APPENDIX B.2.2); pc100ps2.pdf |
| 185 | |
| 186 | |
| 171 | 187 | // Workaround DOES NOT APPLY to the 190-B ROM. Only enable when compiling the 'rainbow' driver - |
| 172 | 188 | //#define FORCE_RAINBOW_100_LOGO |
| 173 | 189 | |
| r29515 | r29516 | |
| 203 | 219 | m_inp7(*this, "GRAPHICS OPTION"), |
| 204 | 220 | m_inp8(*this, "MEMORY PRESENT"), |
| 205 | 221 | m_inp9(*this, "MONITOR TYPE"), |
| 222 | m_inp10(*this, "J17"), |
| 206 | 223 | |
| 207 | 224 | m_crtc(*this, "vt100_video"), |
| 208 | 225 | m_i8088(*this, "maincpu"), |
| r29515 | r29516 | |
| 232 | 249 | DECLARE_READ8_MEMBER(share_z80_r); |
| 233 | 250 | DECLARE_WRITE8_MEMBER(share_z80_w); |
| 234 | 251 | |
| 235 | | DECLARE_READ8_MEMBER(floating_bus_r); |
| 236 | | DECLARE_WRITE8_MEMBER(floating_bus_w); |
| 237 | | |
| 238 | 252 | DECLARE_READ8_MEMBER(hd_status_68_r); |
| 239 | 253 | |
| 240 | 254 | DECLARE_READ8_MEMBER(i8088_latch_r); |
| r29515 | r29516 | |
| 285 | 299 | required_ioport m_inp7; |
| 286 | 300 | required_ioport m_inp8; |
| 287 | 301 | required_ioport m_inp9; |
| 302 | required_ioport m_inp10; |
| 288 | 303 | |
| 289 | 304 | required_device<rainbow_video_device> m_crtc; |
| 290 | 305 | required_device<cpu_device> m_i8088; |
| r29515 | r29516 | |
| 368 | 383 | static ADDRESS_MAP_START( rainbow8088_map, AS_PROGRAM, 8, rainbow_state) |
| 369 | 384 | ADDRESS_MAP_UNMAP_HIGH |
| 370 | 385 | AM_RANGE(0x00000, 0x0ffff) AM_RAM AM_SHARE("sh_ram") |
| 371 | | AM_RANGE(0x10000, 0x1ffff) AM_RAM |
| 386 | AM_RANGE(0x10000, END_OF_RAM) AM_RAM |
| 372 | 387 | |
| 373 | | // test at f4e00 - f4e1c |
| 374 | | AM_RANGE(0x20000, 0xdffff) AM_READWRITE(floating_bus_r,floating_bus_w) |
| 375 | | AM_RANGE(0x20000, 0xdffff) AM_RAM |
| 376 | | |
| 377 | 388 | // Documentation claims there is a 256 x 4 bit NVRAM from 0xed000 to 0xed040 (*) |
| 378 | 389 | // shadowed at $ec000 - $ecfff and from $ed040 - $edfff. |
| 379 | 390 | |
| r29515 | r29516 | |
| 475 | 486 | PORT_DIPSETTING( 0x02, "GREEN" ) |
| 476 | 487 | PORT_DIPSETTING( 0x03, "AMBER" ) |
| 477 | 488 | |
| 489 | // MEMORY, FLOPPY, BUNDLE, GRAPHICS affect 'system_parameter_r': |
| 478 | 490 | PORT_START("MEMORY PRESENT") |
| 479 | | PORT_DIPNAME( 0xF000, 0x2000, "MEMORY PRESENT") |
| 480 | | PORT_DIPSETTING( 0x2000, "128 K (BOARD DEFAULT)" ) // NOTE: 0x2000 hard coded in 'system_parameter_r' |
| 481 | | PORT_DIPSETTING( 0x3000, "192 K (MEMORY OPTION)" ) |
| 482 | | PORT_DIPSETTING( 0x4000, "256 K (MEMORY OPTION)" ) |
| 483 | | PORT_DIPSETTING( 0x5000, "320 K (MEMORY OPTION)" ) |
| 484 | | PORT_DIPSETTING( 0x6000, "384 K (MEMORY OPTION)" ) |
| 485 | | PORT_DIPSETTING( 0x7000, "448 K (MEMORY OPTION)" ) |
| 486 | | PORT_DIPSETTING( 0x8000, "512 K (MEMORY OPTION)" ) |
| 487 | | PORT_DIPSETTING( 0x9000, "576 K (MEMORY OPTION)" ) |
| 488 | | PORT_DIPSETTING( 0xA000, "640 K (MEMORY OPTION)" ) |
| 489 | | PORT_DIPSETTING( 0xB000, "704 K (MEMORY OPTION)" ) |
| 490 | | PORT_DIPSETTING( 0xC000, "768 K (MEMORY OPTION)" ) |
| 491 | | PORT_DIPSETTING( 0xD000, "832 K (MEMORY OPTION)" ) |
| 492 | | PORT_DIPSETTING( 0xE000, "896 K (MEMORY OPTION)" ) |
| 491 | PORT_DIPNAME( 0xF0000, 0x20000, "MEMORY PRESENT") |
| 492 | PORT_DIPSETTING( 0x10000, "64 K (MINIMUM ON 100-A)" ) // see BOARD_RAM |
| 493 | PORT_DIPSETTING( 0x20000, "128 K (MINIMUM ON 100-B)" ) |
| 494 | PORT_DIPSETTING( 0x30000, "192 K (MEMORY OPTION)" ) |
| 495 | PORT_DIPSETTING( 0x40000, "256 K (MEMORY OPTION)" ) |
| 496 | PORT_DIPSETTING( 0x50000, "320 K (MEMORY OPTION)" ) |
| 497 | PORT_DIPSETTING( 0x60000, "384 K (MEMORY OPTION)" ) |
| 498 | PORT_DIPSETTING( 0x70000, "448 K (MEMORY OPTION)" ) |
| 499 | PORT_DIPSETTING( 0x80000, "512 K (MEMORY OPTION)" ) |
| 500 | PORT_DIPSETTING( 0x90000, "576 K (MEMORY OPTION)" ) |
| 501 | PORT_DIPSETTING( 0xA0000, "640 K (MEMORY OPTION)" ) |
| 502 | PORT_DIPSETTING( 0xB0000, "704 K (MEMORY OPTION)" ) |
| 503 | PORT_DIPSETTING( 0xC0000, "768 K (MEMORY OPTION)" ) |
| 504 | PORT_DIPSETTING( 0xD0000, "832 K (MAX.MEM.ON -A)" ) // see END_OF_RAM |
| 505 | PORT_DIPSETTING( 0xE0000, "896 K (MAX.MEM.ON -B)" ) |
| 493 | 506 | |
| 494 | | PORT_START("GRAPHICS OPTION") |
| 495 | | PORT_DIPNAME( 0x00, 0x00, "GRAPHICS OPTION") PORT_TOGGLE |
| 496 | | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 497 | | PORT_DIPSETTING( 0x04, DEF_STR( On ) ) |
| 507 | // Floppy is always 'on', BUNDLE + GRAPHICS are not implemented yet: |
| 508 | PORT_START("FLOPPY CONTROLLER") |
| 509 | PORT_DIPNAME( 0x01, 0x01, "FLOPPY CONTROLLER") PORT_TOGGLE |
| 510 | PORT_DIPSETTING( 0x01, DEF_STR( On ) ) |
| 498 | 511 | |
| 499 | 512 | PORT_START("BUNDLE OPTION") |
| 500 | 513 | PORT_DIPNAME( 0x00, 0x00, "BUNDLE OPTION") PORT_TOGGLE |
| 501 | 514 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 502 | 515 | PORT_DIPSETTING( 0x01, DEF_STR( On ) ) |
| 503 | 516 | |
| 504 | | PORT_START("W13") // W13 - W18 affect 'system_parameter_r' |
| 517 | PORT_START("GRAPHICS OPTION") |
| 518 | PORT_DIPNAME( 0x00, 0x00, "GRAPHICS OPTION") PORT_TOGGLE |
| 519 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 520 | PORT_DIPSETTING( 0x01, DEF_STR( On ) ) |
| 521 | |
| 522 | // W13 - W18 are used for factory tests and affect the boot process - |
| 523 | PORT_START("W13") |
| 505 | 524 | PORT_DIPNAME( 0x02, 0x02, "W13 (FACTORY TEST A, LEAVE OFF)") PORT_TOGGLE |
| 506 | 525 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 507 | 526 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| r29515 | r29516 | |
| 522 | 541 | PORT_WRITE_LINE_DEVICE_MEMBER("kbdser", i8251_device, write_dsr) |
| 523 | 542 | |
| 524 | 543 | // J17 jumper on FDC controller board shifts drive select (experimental) - |
| 525 | | PORT_START("FLOPPY CONTROLLER") |
| 544 | PORT_START("J17") |
| 526 | 545 | PORT_DIPNAME( 0x02, 0x00, "J17 DRIVE SELECT (A => C and B => D)") PORT_TOGGLE |
| 527 | 546 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 528 | 547 | PORT_DIPSETTING( 0x02, DEF_STR( On ) ) |
| r29515 | r29516 | |
| 548 | 567 | |
| 549 | 568 | void rainbow_state::machine_reset() |
| 550 | 569 | { |
| 570 | /* configure RAM */ |
| 571 | address_space &program = m_maincpu->space(AS_PROGRAM); |
| 572 | if (m_inp8->read() < END_OF_RAM) |
| 573 | { program.unmap_readwrite(m_inp8->read(), END_OF_RAM); |
| 574 | } |
| 575 | |
| 551 | 576 | if (COLD_BOOT == 1) |
| 552 | 577 | { |
| 553 | 578 | COLD_BOOT = 2; |
| r29515 | r29516 | |
| 603 | 628 | return 0; |
| 604 | 629 | } |
| 605 | 630 | |
| 606 | | // It is no longer possible to key in the RAM size on the 100-B. |
| 607 | | // The DEC-100-B boot ROM probes until a 'flaky' area is found (around F400:0E04). |
| 608 | | |
| 609 | | // Unexpected low RAM sizes are an indication of option RAM (at worst: 128 K on board) failure. |
| 610 | | // While motherboard errors often render the system unbootable, bad option RAM (> 128 K) |
| 611 | | // can be narrowed down with the Diagnostic Disk and codes from the 'Pocket Service Guide' |
| 612 | | // EK-PC100-PS-002 (APPENDIX B.2.2); pc100ps2.pdf |
| 613 | | // ================================================================ |
| 614 | | // - Simulate floating bus for initial RAM detection - |
| 615 | | // FIXME: code valid ONLY within ROM section F4Exxx. |
| 616 | | // |
| 617 | | // NOTE: MS-DOS 2.x unfortunately probes RAM in a similar way. |
| 618 | | // => SET OPTION RAM to 896 K for unknown applications (and DOS) <= |
| 619 | | // ================================================================ |
| 620 | | READ8_MEMBER(rainbow_state::floating_bus_r) |
| 621 | | { |
| 622 | | int pc = space.device().safe_pc(); |
| 623 | | |
| 624 | | if ( ((pc & 0xFFF00) == 0xF4E00) && |
| 625 | | ( m_maincpu->state_int(I8086_DS) >= m_inp8->read() ) |
| 626 | | ) |
| 627 | | { |
| 628 | | return (offset>>16) + 2; |
| 629 | | } |
| 630 | | else |
| 631 | | return space.read_byte(offset); |
| 632 | | } |
| 633 | | |
| 634 | | WRITE8_MEMBER(rainbow_state::floating_bus_w) |
| 635 | | { |
| 636 | | space.write_byte(offset,data); |
| 637 | | } |
| 638 | | |
| 639 | 631 | // interrupt handling and arbitration. priorities currently unknown. |
| 640 | 632 | void rainbow_state::update_8088_irqs() |
| 641 | 633 | { |
| r29515 | r29516 | |
| 746 | 738 | B F G M |
| 747 | 739 | ( 1 means NOT present ) |
| 748 | 740 | */ |
| 749 | | // Hard coded value 0x2000 - see DIP switch setup! |
| 750 | | return 0x0f - m_inp5->read() |
| 751 | | - 0 // floppy is hard coded in emulator. |
| 752 | | - m_inp7->read() |
| 753 | | - ((m_inp8->read() > 0x2000) ? 8 : 0); |
| 741 | return (((m_inp5->read() == 1) ? 0 : 1) | |
| 742 | ((m_inp6->read() == 1) ? 0 : 2) | |
| 743 | ((m_inp7->read() == 1) ? 0 : 4) | |
| 744 | ((m_inp8->read() > BOARD_RAM) ? 0 : 8) |
| 745 | ); |
| 754 | 746 | } |
| 755 | 747 | |
| 756 | 748 | READ8_MEMBER(rainbow_state::comm_control_r) |
| r29515 | r29516 | |
| 951 | 943 | int force_ready = ( (data & 4) != 0 ) ? 0 : 1; |
| 952 | 944 | |
| 953 | 945 | int drive; |
| 954 | | if ( m_inp6->read() && ((data & 3) < 2) ) |
| 946 | if ( m_inp10->read() && ((data & 3) < 2) ) |
| 955 | 947 | drive = (data & 1) + 2; |
| 956 | 948 | else |
| 957 | 949 | drive = data & 3; |
| r29515 | r29516 | |
| 1236 | 1228 | // 'Rainbow 100-A' (introduced May 1982) is first-generation hardware with ROM 04.03.11 |
| 1237 | 1229 | // - 64 K base RAM on board (instead of 128 K on 'B' model). 832 K RAM max. |
| 1238 | 1230 | // - inability to boot from hard disc (mind the inadequate PSU) |
| 1239 | | // - cannot control bit 7 of IRQ vector (prevents DOS 2.0x from booting on unmodified hardware) |
| 1231 | // - cannot control bit 7 of IRQ vector (prevents DOS >= 2.05 from booting on unmodified hardware) |
| 1240 | 1232 | // - limited palette with color graphics option (4 instead of 16 colors) |
| 1241 | 1233 | // - smaller ROMs (3 x 2764) with fewer routines (no documented way to beep...) |
| 1242 | 1234 | |
trunk/src/mess/machine/dec_lk201.c
| r29515 | r29516 | |
| 226 | 226 | // INPUT_PORTS( lk201 ) |
| 227 | 227 | //------------------------------------------------- |
| 228 | 228 | |
| 229 | /* [Foreign language caps] are referenced in software titles. Please leave them in. |
| 230 | |
| 231 | DEC omitted terms like 'Interrupt', 'Break' and 'Data / Talk' on some keyboards, |
| 232 | so Fn numbers are definitely important for end users. |
| 233 | |
| 234 | === CURRENT SPECIAL KEYS === |
| 235 | [PC-AT] ......=> [DEC] |
| 236 | LEFT CONTROL..=> Control |
| 237 | LEFT ALT .....=> Compose |
| 238 | |
| 239 | RIGHT ALT ....=> Help |
| 240 | RIGHT CONTROL => Do |
| 241 | ============================================================================================== |
| 242 | === (PC - AT ) keys above cursor block === |
| 243 | * KEYCODE_INSERT * KEYCODE_HOME * KEYCODE_PGUP |
| 244 | * KEYCODE_DEL... * KEYCODE_END * KEYCODE_PGDN |
| 245 | |
| 246 | === (DEC LK 201 layout above cursor) === |
| 247 | * Find ........| Insert Here | Remove |
| 248 | * Select.........| Prev ..... | Next |
| 249 | ============================================================================================== |
| 250 | === CURRENT NUM PAD ASSIGNMENTS === |
| 251 | [PF1] to [PF4] are mapped to NUM LOCK, SLASH etc. (=> 4 keys on top on num pad). |
| 252 | Num pad '+' gives ',' on the DEC. |
| 253 | ',' translates to '.' (=> more or less the layout of model 'LK-201-AG') |
| 254 | |
| 255 | Switch between 'full' and 'partial keyboard emulation' with Scroll Lock. |
| 256 | */ |
| 257 | |
| 229 | 258 | INPUT_PORTS_START( lk201 ) |
| 230 | 259 | PORT_START("KBD0") |
| 231 | 260 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| r29515 | r29516 | |
| 245 | 274 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 246 | 275 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Compose") PORT_CODE(KEYCODE_LALT) |
| 247 | 276 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) |
| 248 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) |
| 277 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Ctrl") PORT_CODE(KEYCODE_LCONTROL) |
| 249 | 278 | |
| 250 | 279 | PORT_START("KBD2") |
| 251 | 280 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) |
| 252 | 281 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A") PORT_CODE(KEYCODE_A) |
| 253 | 282 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q") PORT_CODE(KEYCODE_Q) |
| 254 | 283 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1") PORT_CODE(KEYCODE_1) |
| 255 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Esc") PORT_CODE(KEYCODE_TILDE) |
| 284 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tilde") PORT_CODE(KEYCODE_TILDE) // E00 |
| 256 | 285 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 257 | 286 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 258 | 287 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 259 | 288 | |
| 260 | 289 | PORT_START("KBD3") |
| 261 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("<") |
| 290 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("<") PORT_CODE(KEYCODE_BACKSLASH2) // B00 |
| 262 | 291 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("X") PORT_CODE(KEYCODE_X) |
| 263 | 292 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("S") PORT_CODE(KEYCODE_S) |
| 264 | 293 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W") PORT_CODE(KEYCODE_W) |
| 265 | 294 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) |
| 266 | 295 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 267 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z") PORT_CODE(KEYCODE_2) |
| 268 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Hold Screen") PORT_CODE(KEYCODE_F1) |
| 296 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2") PORT_CODE(KEYCODE_2) |
| 297 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Hold Screen (F1)") PORT_CODE(KEYCODE_F1) |
| 269 | 298 | |
| 270 | 299 | PORT_START("KBD4") |
| 271 | 300 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("C") PORT_CODE(KEYCODE_C) |
| 272 | 301 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("D") PORT_CODE(KEYCODE_D) |
| 273 | 302 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("E") PORT_CODE(KEYCODE_E) |
| 274 | 303 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3") PORT_CODE(KEYCODE_3) |
| 275 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Setup") PORT_CODE(KEYCODE_F3) |
| 304 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Setup (F3)") PORT_CODE(KEYCODE_F3) |
| 276 | 305 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 277 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Print Screen") PORT_CODE(KEYCODE_F2) |
| 306 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Print Screen (F2)") PORT_CODE(KEYCODE_F2) |
| 278 | 307 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 279 | 308 | |
| 280 | 309 | PORT_START("KBD5") |
| r29515 | r29516 | |
| 284 | 313 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("R") PORT_CODE(KEYCODE_R) |
| 285 | 314 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4") PORT_CODE(KEYCODE_4) |
| 286 | 315 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 287 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Break") PORT_CODE(KEYCODE_F5) |
| 288 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) |
| 316 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Break (F5)") PORT_CODE(KEYCODE_F5) |
| 317 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Data / Talk (F4)") PORT_CODE(KEYCODE_F4) |
| 289 | 318 | |
| 290 | 319 | PORT_START("KBD6") |
| 291 | 320 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("B") PORT_CODE(KEYCODE_B) |
| 292 | 321 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("G") PORT_CODE(KEYCODE_G) |
| 293 | 322 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("T") PORT_CODE(KEYCODE_T) |
| 294 | 323 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5") PORT_CODE(KEYCODE_5) |
| 295 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Interrupt") PORT_CODE(KEYCODE_F6) |
| 324 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Interrupt (F6) [X]") PORT_CODE(KEYCODE_F6) |
| 296 | 325 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 297 | 326 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 298 | 327 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| r29515 | r29516 | |
| 302 | 331 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("H") PORT_CODE(KEYCODE_H) |
| 303 | 332 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y") PORT_CODE(KEYCODE_Y) |
| 304 | 333 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6") PORT_CODE(KEYCODE_6) |
| 305 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Resume") PORT_CODE(KEYCODE_F7) |
| 334 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Resume (F7) [Fortsetzen]") PORT_CODE(KEYCODE_F7) |
| 306 | 335 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 307 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Cancel") PORT_CODE(KEYCODE_F8) |
| 336 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Cancel (F8) [Zuruecknehmen]") PORT_CODE(KEYCODE_F8) |
| 308 | 337 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 309 | 338 | |
| 310 | 339 | PORT_START("KBD8") |
| r29515 | r29516 | |
| 312 | 341 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("J") PORT_CODE(KEYCODE_J) |
| 313 | 342 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("U") PORT_CODE(KEYCODE_U) |
| 314 | 343 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7") PORT_CODE(KEYCODE_7) |
| 315 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Exit") PORT_CODE(KEYCODE_F10) |
| 344 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Exit (F10) [Fertig]") PORT_CODE(KEYCODE_F10) |
| 316 | 345 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 317 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Main Screen") PORT_CODE(KEYCODE_F9) |
| 346 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Main Screen (F9) [Hauptbild]") PORT_CODE(KEYCODE_F9) |
| 318 | 347 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 319 | 348 | |
| 320 | 349 | PORT_START("KBD9") |
| r29515 | r29516 | |
| 324 | 353 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8") PORT_CODE(KEYCODE_8) |
| 325 | 354 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 326 | 355 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 327 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F11") PORT_CODE(KEYCODE_F11) |
| 356 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ESC (F11)") PORT_CODE(KEYCODE_F11) |
| 328 | 357 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 329 | 358 | |
| 330 | 359 | PORT_START("KBD10") |
| r29515 | r29516 | |
| 332 | 361 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("L") PORT_CODE(KEYCODE_L) |
| 333 | 362 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("O") PORT_CODE(KEYCODE_O) |
| 334 | 363 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9") PORT_CODE(KEYCODE_9) |
| 335 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F13") PORT_CODE(KEYCODE_PRTSCR) |
| 364 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("LF (F13)") PORT_CODE(KEYCODE_PRTSCR) |
| 336 | 365 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 337 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) |
| 366 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("BS (F12)") PORT_CODE(KEYCODE_F12) |
| 338 | 367 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 339 | 368 | |
| 340 | 369 | PORT_START("KBD11") |
| 341 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/") PORT_CODE(KEYCODE_SLASH) |
| 342 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) |
| 370 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/") PORT_CODE(KEYCODE_SLASH) |
| 371 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(";") PORT_CODE(KEYCODE_COLON) |
| 343 | 372 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) // FIXME - duplicate "Return" |
| 344 | 373 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("P") PORT_CODE(KEYCODE_P) |
| 345 | 374 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0") PORT_CODE(KEYCODE_0) |
| 346 | 375 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 347 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Delete") PORT_CODE(KEYCODE_BACKSPACE) |
| 348 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Additional Options (F14)") PORT_CODE(KEYCODE_SCRLOCK) |
| 376 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Delete <X") PORT_CODE(KEYCODE_BACKSPACE) |
| 377 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Additional Options (F14) [Zusaetze]") PORT_CODE(KEYCODE_PAUSE) |
| 349 | 378 | |
| 350 | 379 | PORT_START("KBD12") |
| 351 | 380 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\") PORT_CODE(KEYCODE_BACKSLASH) |
| r29515 | r29516 | |
| 362 | 391 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 363 | 392 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("'") PORT_CODE(KEYCODE_QUOTE) |
| 364 | 393 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("[") PORT_CODE(KEYCODE_OPENBRACE) |
| 365 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Previous") PORT_CODE(KEYCODE_END) |
| 366 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Do (F16)") |
| 394 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Previous [^]") PORT_CODE(KEYCODE_END) |
| 395 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Do (F16) [Ausfuehren]") PORT_CODE(KEYCODE_RCONTROL) |
| 367 | 396 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("-") PORT_CODE(KEYCODE_MINUS) |
| 368 | 397 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Insert Here") PORT_CODE(KEYCODE_HOME) |
| 369 | 398 | |
| r29515 | r29516 | |
| 374 | 403 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num 7") PORT_CODE(KEYCODE_7_PAD) |
| 375 | 404 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Up") PORT_CODE(KEYCODE_UP) |
| 376 | 405 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Remove") PORT_CODE(KEYCODE_PGUP) |
| 377 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Next") PORT_CODE(KEYCODE_PGDN) |
| 406 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Next [v]") PORT_CODE(KEYCODE_PGDN) |
| 378 | 407 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF1") PORT_CODE(KEYCODE_NUMLOCK) |
| 379 | 408 | |
| 380 | 409 | PORT_START("KBD15") |
| r29515 | r29516 | |
| 400 | 429 | PORT_START("KBD17") |
| 401 | 430 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER_PAD) |
| 402 | 431 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num ,") PORT_CODE(KEYCODE_PLUS_PAD) |
| 403 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num -") |
| 432 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Num -") // duplicate...see KBD13 |
| 404 | 433 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("PF4") PORT_CODE(KEYCODE_MINUS_PAD) |
| 405 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F20") PORT_CODE(KEYCODE_PAUSE) |
| 434 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F20") |
| 406 | 435 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 407 | 436 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F19") |
| 408 | 437 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| r29515 | r29516 | |
| 720 | 749 | |
| 721 | 750 | // printf("SPI %02x to %x (PC=%x)\n", data, offset, m_maincpu->pc()); |
| 722 | 751 | } |
| 752 | |