trunk/src/mess/drivers/pc9801.c
| r19361 | r19362 | |
| 10 | 10 | - Check for mouse support |
| 11 | 11 | - kanji support; |
| 12 | 12 | - Write a PC80S31K device (also used on PC-8801 and PC-88VA, it's the FDC + Z80 sub-system); |
| 13 | - Finish DIP-Switches support |
| 13 | 14 | |
| 14 | 15 | TODO (PC-9801RS): |
| 15 | 16 | - extra features; |
| r19361 | r19362 | |
| 2501 | 2502 | PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) |
| 2502 | 2503 | PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) |
| 2503 | 2504 | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2504 | | PORT_DIPNAME( 0x0100, 0x0000, "DSWB" ) |
| 2505 | | PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) |
| 2506 | | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2507 | | PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) ) |
| 2508 | | PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) |
| 2509 | | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2510 | | PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) |
| 2511 | | PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) |
| 2512 | | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2513 | | PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) |
| 2514 | | PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) |
| 2515 | | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2516 | | PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) |
| 2517 | | PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) |
| 2518 | | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2519 | | PORT_DIPNAME( 0x2000, 0x0000, DEF_STR( Unknown ) ) //uhm, this attempts to DMA something if off ...? |
| 2520 | | PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) |
| 2521 | | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2522 | | PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) ) |
| 2523 | | PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) |
| 2524 | | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2525 | | PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Unknown ) ) |
| 2526 | | PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) |
| 2527 | | PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) |
| 2528 | 2505 | |
| 2506 | PORT_START("DSW5") |
| 2507 | PORT_DIPNAME( 0x01, 0x00, "DSW5" ) |
| 2508 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 2509 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2510 | PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) |
| 2511 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 2512 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2513 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) |
| 2514 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 2515 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2516 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) |
| 2517 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 2518 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2519 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) |
| 2520 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 2521 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2522 | PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) //uhm, this attempts to DMA something if off ...? |
| 2523 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 2524 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2525 | PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) |
| 2526 | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) |
| 2527 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2528 | PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) |
| 2529 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
| 2530 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2531 | |
| 2529 | 2532 | PORT_START("DSW2") |
| 2530 | 2533 | PORT_DIPNAME( 0x01, 0x01, "System Specification" ) PORT_DIPLOCATION("SW1:1") //jumps to daa00 if off, presumably some card booting |
| 2531 | 2534 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| r19361 | r19362 | |
| 2546 | 2549 | PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW1:7" ) |
| 2547 | 2550 | PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW1:8" ) |
| 2548 | 2551 | |
| 2552 | PORT_START("DSW3") |
| 2553 | PORT_DIPNAME( 0x01, 0x01, "DSW3" ) |
| 2554 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 2555 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2556 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) |
| 2557 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 2558 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2559 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) |
| 2560 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 2561 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2562 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) |
| 2563 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 2564 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2565 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) |
| 2566 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 2567 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2568 | PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) |
| 2569 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 2570 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2571 | PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) |
| 2572 | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) |
| 2573 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2574 | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) |
| 2575 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
| 2576 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2577 | |
| 2578 | PORT_START("DSW4") |
| 2579 | PORT_DIPNAME( 0x01, 0x01, "DSW4" ) |
| 2580 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 2581 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2582 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) |
| 2583 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 2584 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2585 | PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) |
| 2586 | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 2587 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2588 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) |
| 2589 | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 2590 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2591 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) |
| 2592 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 2593 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2594 | PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) |
| 2595 | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 2596 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2597 | PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) |
| 2598 | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) |
| 2599 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2600 | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) |
| 2601 | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
| 2602 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2603 | |
| 2549 | 2604 | PORT_START("OPN_PA1") |
| 2550 | 2605 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) |
| 2551 | 2606 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) |
| r19361 | r19362 | |
| 2593 | 2648 | PORT_DIPSETTING( 0x80, "2.5 MHz" ) |
| 2594 | 2649 | PORT_DIPSETTING( 0x00, "5 MHz" ) |
| 2595 | 2650 | |
| 2651 | PORT_MODIFY("DSW4") |
| 2652 | PORT_DIPNAME( 0x04, 0x00, "CPU Type" ) PORT_DIPLOCATION("SW4:8") |
| 2653 | PORT_DIPSETTING( 0x04, "V30" ) |
| 2654 | PORT_DIPSETTING( 0x00, "I386" ) |
| 2655 | |
| 2596 | 2656 | PORT_MODIFY("ROM_LOAD") |
| 2597 | 2657 | PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 2598 | 2658 | INPUT_PORTS_END |
| r19361 | r19362 | |
| 2861 | 2921 | ****************************************/ |
| 2862 | 2922 | |
| 2863 | 2923 | READ8_MEMBER(pc9801_state::ppi_sys_porta_r){ return machine().root_device().ioport("DSW2")->read(); } |
| 2864 | | READ8_MEMBER(pc9801_state::ppi_sys_portb_r){ return machine().root_device().ioport("DSW1")->read() & 0xff; } |
| 2865 | | READ8_MEMBER(pc9801_state::ppi_prn_portb_r){ return machine().root_device().ioport("DSW1")->read() >> 8; } |
| 2924 | READ8_MEMBER(pc9801_state::ppi_sys_portb_r){ return machine().root_device().ioport("DSW1")->read(); } |
| 2925 | READ8_MEMBER(pc9801_state::ppi_prn_portb_r){ return machine().root_device().ioport("DSW5")->read(); } |
| 2866 | 2926 | |
| 2867 | 2927 | WRITE8_MEMBER(pc9801_state::ppi_sys_portc_w) |
| 2868 | 2928 | { |
| r19361 | r19362 | |
| 2942 | 3002 | return res; |
| 2943 | 3003 | } |
| 2944 | 3004 | |
| 2945 | | READ8_MEMBER(pc9801_state::ppi_mouse_portb_r) |
| 2946 | | { |
| 2947 | | printf("B\n"); |
| 2948 | | return 0xff; |
| 2949 | | } |
| 3005 | READ8_MEMBER(pc9801_state::ppi_mouse_portb_r) { return machine().root_device().ioport("DSW3")->read(); } |
| 3006 | READ8_MEMBER(pc9801_state::ppi_mouse_portc_r) { return machine().root_device().ioport("DSW4")->read(); } |
| 2950 | 3007 | |
| 2951 | | READ8_MEMBER(pc9801_state::ppi_mouse_portc_r) |
| 2952 | | { |
| 2953 | | printf("C\n"); |
| 2954 | | return 0xff; |
| 2955 | | } |
| 2956 | | |
| 2957 | 3008 | WRITE8_MEMBER(pc9801_state::ppi_mouse_porta_w) |
| 2958 | 3009 | { |
| 2959 | 3010 | printf("A %02x\n",data); |