trunk/src/mess/drivers/vt100.c
| r19642 | r19643 | |
| 20 | 20 | #include "emu.h" |
| 21 | 21 | #include "cpu/i8085/i8085.h" |
| 22 | 22 | #include "cpu/z80/z80.h" |
| 23 | #include "machine/i8251.h" |
| 23 | 24 | #include "sound/beep.h" |
| 24 | 25 | #include "video/vtvideo.h" |
| 25 | 26 | #include "vt100.lh" |
| r19642 | r19643 | |
| 30 | 31 | public: |
| 31 | 32 | vt100_state(const machine_config &mconfig, device_type type, const char *tag) |
| 32 | 33 | : driver_device(mconfig, type, tag), |
| 33 | | m_maincpu(*this, "maincpu"), |
| 34 | | m_crtc(*this, "vt100_video"), |
| 35 | | m_speaker(*this, BEEPER_TAG) |
| 36 | | , |
| 37 | | m_p_ram(*this, "p_ram"){ } |
| 34 | m_maincpu(*this, "maincpu"), |
| 35 | m_crtc(*this, "vt100_video"), |
| 36 | m_speaker(*this, BEEPER_TAG), |
| 37 | m_uart(*this, "i8251"), |
| 38 | m_p_ram(*this, "p_ram") |
| 39 | { } |
| 38 | 40 | |
| 39 | 41 | required_device<cpu_device> m_maincpu; |
| 40 | 42 | required_device<vt100_video_device> m_crtc; |
| 41 | 43 | required_device<beep_device> m_speaker; |
| 44 | required_device<i8251_device> m_uart; |
| 42 | 45 | DECLARE_READ8_MEMBER(vt100_flags_r); |
| 43 | 46 | DECLARE_WRITE8_MEMBER(vt100_keyboard_w); |
| 44 | 47 | DECLARE_READ8_MEMBER(vt100_keyboard_r); |
| r19642 | r19643 | |
| 177 | 180 | ADDRESS_MAP_UNMAP_HIGH |
| 178 | 181 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 179 | 182 | // 0x00, 0x01 PUSART (Intel 8251) |
| 180 | | // AM_RANGE (0x00, 0x01) |
| 183 | AM_RANGE (0x00, 0x00) AM_DEVREADWRITE("i8251", i8251_device, data_r, data_w) |
| 184 | AM_RANGE (0x01, 0x01) AM_DEVREADWRITE("i8251", i8251_device, status_r, control_w) |
| 181 | 185 | // 0x02 Baud rate generator |
| 182 | 186 | AM_RANGE (0x02, 0x02) AM_WRITE(vt100_baud_rate_w) |
| 183 | 187 | // 0x22 Modem buffer |
| r19642 | r19643 | |
| 404 | 408 | GFXDECODE_ENTRY( "chargen", 0x0000, vt100_charlayout, 0, 1 ) |
| 405 | 409 | GFXDECODE_END |
| 406 | 410 | |
| 411 | /* TODO: i8251: connect me up! */ |
| 412 | static const i8251_interface i8251_intf = |
| 413 | { |
| 414 | DEVCB_NULL, // in_rxd_cb |
| 415 | DEVCB_NULL, // out_txd_cb |
| 416 | DEVCB_NULL, // in_dsr_cb |
| 417 | DEVCB_NULL, // out_dtr_cb |
| 418 | DEVCB_NULL, // out_rts_cb |
| 419 | DEVCB_NULL, // out_rxrdy_cb |
| 420 | DEVCB_NULL, // out_txrdy_cb |
| 421 | DEVCB_NULL, // out_txempty_cb |
| 422 | DEVCB_NULL // out_syndet_cb |
| 423 | }; |
| 407 | 424 | |
| 408 | | #define XTAL_24_8832MHz 24883200 |
| 409 | | |
| 410 | 425 | static MACHINE_CONFIG_START( vt100, vt100_state ) |
| 411 | 426 | /* basic machine hardware */ |
| 412 | 427 | MCFG_CPU_ADD("maincpu",I8080, XTAL_24_8832MHz / 9) |
| r19642 | r19643 | |
| 431 | 446 | |
| 432 | 447 | MCFG_VT100_VIDEO_ADD("vt100_video", vt100_video_interface) |
| 433 | 448 | |
| 449 | |
| 450 | /* i8251 uart */ |
| 451 | MCFG_I8251_ADD("i8251", i8251_intf) |
| 452 | |
| 453 | |
| 434 | 454 | /* audio hardware */ |
| 435 | 455 | MCFG_SPEAKER_STANDARD_MONO("mono") |
| 436 | 456 | MCFG_SOUND_ADD(BEEPER_TAG, BEEP, 0) |
| r19642 | r19643 | |
| 748 | 768 | // does not have integrated STP or AVO populated |
| 749 | 769 | // 8085 based instead of I8080 |
| 750 | 770 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 751 | | ROM_LOAD( "23-???e4-00.e71", 0x0000, 0x2000, NO_DUMP) |
| 752 | | ROM_LOAD( "23-???e4-00.e69", 0x8000, 0x2000, NO_DUMP) |
| 771 | ROM_LOAD( "23-???e4-00.e71", 0x0000, 0x2000, NO_DUMP) // rom is unique to vt101 |
| 772 | //e69 socket is empty/unpopulated on vt101? |
| 773 | //e67 socket is empty/unpopulated on vt101? |
| 753 | 774 | |
| 754 | 775 | ROM_REGION(0x1000, "chargen", 0) |
| 755 | 776 | ROM_LOAD( "23-018e2-00.e3", 0x0000, 0x0800, CRC(6958458b) SHA1(103429674fc01c215bbc2c91962ae99231f8ae53)) |
| r19642 | r19643 | |
| 761 | 782 | // ROMS have the set up page C in them |
| 762 | 783 | // 8085 based instead of I8080 |
| 763 | 784 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 764 | | ROM_LOAD( "23-226e4-00.e71", 0x0000, 0x2000, BAD_DUMP CRC(339d4e4e) SHA1(f1b08f2c6bbc2b234f3f43bd800a2615f6dd18d3)) // is this right for vt102? A11 stuck high |
| 765 | | ROM_LOAD( "23-225e4-00.e69", 0x8000, 0x2000, CRC(3567c760) SHA1(672473162e9c92cd237e4dbf92c2700a31C5374b)) |
| 785 | ROM_LOAD( "23-226e4-00.e71", 0x0000, 0x2000, BAD_DUMP CRC(85c9279a) SHA1(3283D27E9C45D9E384227A7E6E98EE8D54B92BCB)) // shared with vt131; dump may be bad, assembled from quarters two bad dumps |
| 786 | ROM_LOAD( "23-225e4-00.e69", 0x8000, 0x2000, CRC(3567c760) SHA1(672473162e9c92cd237e4dbf92c2700a31C5374b)) // shared with vt131 |
| 787 | //e67 socket is empty but populated on vt102 |
| 766 | 788 | |
| 767 | 789 | ROM_REGION(0x1000, "chargen", 0) |
| 768 | 790 | ROM_LOAD( "23-018e2-00.e3", 0x0000, 0x0800, CRC(6958458b) SHA1(103429674fc01c215bbc2c91962ae99231f8ae53)) |
| r19642 | r19643 | |
| 774 | 796 | // ROMS have the set up page C in them |
| 775 | 797 | // 8085 based instead of I8080 |
| 776 | 798 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 777 | | ROM_LOAD( "23-226e4-00.e71", 0x0000, 0x2000, BAD_DUMP CRC(339d4e4e) SHA1(f1b08f2c6bbc2b234f3f43bd800a2615f6dd18d3)) // A11 stuck high |
| 778 | | ROM_LOAD( "23-225e4-00.e69", 0x8000, 0x2000, CRC(3567c760) SHA1(672473162e9c92cd237e4dbf92c2700a31C5374b)) |
| 799 | ROM_LOAD( "23-226e4-00.e71", 0x0000, 0x2000, BAD_DUMP CRC(85c9279a) SHA1(3283D27E9C45D9E384227A7E6E98EE8D54B92BCB)) // shared with vt102; dump may be bad, assembled from quarters two bad dumps |
| 800 | ROM_LOAD( "23-225e4-00.e69", 0x8000, 0x2000, CRC(3567c760) SHA1(672473162e9c92cd237e4dbf92c2700a31C5374b)) // shared with vt102 |
| 779 | 801 | ROM_LOAD( "23-280e2-00.e67", 0xA000, 0x0800, CRC(71b4172e) SHA1(5a82c7dc313bb92b9829eb8350840e072825a797)) // called "VT131 ROM" in the vt101 quick reference guide |
| 780 | 802 | |
| 781 | 803 | ROM_REGION(0x1000, "chargen", 0) |