trunk/src/mess/drivers/pc9801.c
| r17681 | r17682 | |
| 16 | 16 | - clean-up duplicating code; |
| 17 | 17 | |
| 18 | 18 | TODO (PC-9821): |
| 19 | | - "set the software dip-switch" warning; |
| 20 | | - asserts with i386: Invalid REP/opcode 40 combination, this is because POR bit mustn't be |
| 21 | | setted to off |
| 22 | 19 | - fix CPU for some clones; |
| 20 | - PARITY ERROR, presumably it needs a far better emulation of the i8251 ports |
| 23 | 21 | |
| 24 | 22 | TODO: (PC-486MU) |
| 25 | 23 | - Tries to read port C of i8255_sys (-> 0x35) at boot without setting up the control |
| r17681 | r17682 | |
| 255 | 253 | public: |
| 256 | 254 | pc9801_state(const machine_config &mconfig, device_type type, const char *tag) |
| 257 | 255 | : driver_device(mconfig, type, tag), |
| 256 | m_maincpu(*this, "maincpu"), |
| 258 | 257 | m_rtc(*this, UPD1990A_TAG), |
| 259 | 258 | m_sio(*this, UPD8251_TAG), |
| 260 | 259 | m_hgdc1(*this, "upd7220_chr"), |
| r17681 | r17682 | |
| 263 | 262 | m_video_ram_1(*this, "video_ram_1"), |
| 264 | 263 | m_video_ram_2(*this, "video_ram_2"){ } |
| 265 | 264 | |
| 265 | required_device<cpu_device> m_maincpu; |
| 266 | 266 | required_device<upd1990a_device> m_rtc; |
| 267 | 267 | required_device<i8251_device> m_sio; |
| 268 | 268 | required_device<upd7220_device> m_hgdc1; |
| r17681 | r17682 | |
| 719 | 719 | printf("Read to undefined port [%02x]\n",offset+0x40); |
| 720 | 720 | else |
| 721 | 721 | { |
| 722 | | //printf("Read to 8251 kbd port [%02x]\n",offset+0x40); |
| 722 | //printf("Read to 8251 kbd port [%02x] %08x\n",offset+0x40,cpu_get_pc(m_maincpu)); |
| 723 | 723 | if(offset == 1) |
| 724 | 724 | { |
| 725 | 725 | UINT8 res; |
| r17681 | r17682 | |
| 729 | 729 | return res; |
| 730 | 730 | } |
| 731 | 731 | |
| 732 | | return 1; |
| 732 | return 1 | 4 | 2; |
| 733 | 733 | } |
| 734 | 734 | } |
| 735 | 735 | |
| r17681 | r17682 | |
| 746 | 746 | { |
| 747 | 747 | if(offset & 4) |
| 748 | 748 | printf("Write to undefined port [%02x] <- %02x\n",offset+0x40,data); |
| 749 | | //else |
| 750 | | //printf("Write to 8251 kbd port [%02x] <- %02x\n",offset+0x40,data); |
| 749 | else |
| 750 | printf("Write to 8251 kbd port [%02x] <- %02x\n",offset+0x40,data); |
| 751 | 751 | } |
| 752 | 752 | } |
| 753 | 753 | |
| r17681 | r17682 | |
| 2112 | 2112 | PORT_BIT( 0x03, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 2113 | 2113 | INPUT_PORTS_END |
| 2114 | 2114 | |
| 2115 | static INPUT_PORTS_START( pc9821 ) |
| 2116 | PORT_INCLUDE( pc9801rs ) |
| 2117 | |
| 2118 | PORT_MODIFY("DSW2") |
| 2119 | PORT_DIPNAME( 0x01, 0x00, "S-Dip SW Init" ) PORT_DIPLOCATION("SW1:1") |
| 2120 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 2121 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 2122 | INPUT_PORTS_END |
| 2123 | |
| 2115 | 2124 | static const gfx_layout charset_8x8 = |
| 2116 | 2125 | { |
| 2117 | 2126 | 8,8, |
| r17681 | r17682 | |
| 3176 | 3185 | COMP( 1985, pc9801vm, pc9801rs,0, pc9801rs, pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9801VM", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3177 | 3186 | COMP( 1987, pc9801ux, pc9801rs,0, pc9801ux, pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9801UX", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3178 | 3187 | COMP( 1988, pc9801rx, pc9801rs,0, pc9801ux, pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9801RX", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3179 | | COMP( 1994, pc9821, 0, 0, pc9821, pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) //TODO: not sure about the exact model |
| 3180 | | COMP( 1993, pc9821as, pc9821, 0, pc9821, pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE A)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3181 | | COMP( 1994, pc9821xs, pc9821, 0, pc9821, pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE Xs)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3182 | | COMP( 1994, pc9821ce2, pc9821, 0, pc9821, pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MULTi Ce2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3183 | | COMP( 1994, pc9821ne, pc9821, 0, pc9821, pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98NOTE)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3184 | | COMP( 1994, pc486mu, pc9821, 0, pc9821, pc9801rs, driver_device, 0, "Epson", "PC-486MU", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 3185 | | COMP( 1998, pc9821v13, pc9821, 0, pc9821, pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE VALUESTAR 13)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3186 | | COMP( 1998, pc9821v20, pc9821, 0, pc9821v20,pc9801rs, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE VALUESTAR 20)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3188 | COMP( 1994, pc9821, 0, 0, pc9821, pc9821, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) //TODO: not sure about the exact model |
| 3189 | COMP( 1993, pc9821as, pc9821, 0, pc9821, pc9821, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE A)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3190 | COMP( 1994, pc9821xs, pc9821, 0, pc9821, pc9821, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE Xs)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3191 | COMP( 1994, pc9821ce2, pc9821, 0, pc9821, pc9821, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MULTi Ce2)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3192 | COMP( 1994, pc9821ne, pc9821, 0, pc9821, pc9821, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98NOTE)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3193 | COMP( 1994, pc486mu, pc9821, 0, pc9821, pc9821, driver_device, 0, "Epson", "PC-486MU", GAME_NOT_WORKING | GAME_NO_SOUND) |
| 3194 | COMP( 1998, pc9821v13, pc9821, 0, pc9821, pc9821, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE VALUESTAR 13)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |
| 3195 | COMP( 1998, pc9821v20, pc9821, 0, pc9821v20,pc9821, driver_device, 0, "Nippon Electronic Company", "PC-9821 (98MATE VALUESTAR 20)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND) |