From dfa4cd3520741b8b3721f023873ffdb07e98562d Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 20 Jan 2018 13:09:58 -0500 Subject: vt220: Split into two sets and fix ROM loading for the earlier version - Add new comments about differences between earlier and later models (nw) - Remove many old comments based on the earlier schematics and faulty guesswork (nw) - Remove the undumped and possibly never released "from schematics" BIOS (nw) --- src/mame/drivers/vt220.cpp | 106 ++++++++++++++++++++++++++++++++------------- src/mame/mame.lst | 1 + 2 files changed, 76 insertions(+), 31 deletions(-) diff --git a/src/mame/drivers/vt220.cpp b/src/mame/drivers/vt220.cpp index 3308711e44c..f6d2ef1c33d 100644 --- a/src/mame/drivers/vt220.cpp +++ b/src/mame/drivers/vt220.cpp @@ -2,12 +2,32 @@ // copyright-holders:Miodrag Milanovic, Jonathan Gevaryahu /*************************************************************************** - DEC VT220 - - 30/06/2009 Skeleton driver. - - Schematics at www.bitsavers.org/pdf/dec/terminal/vt220/VT220_Schematic_Aug83.pdf - There is an X2212 NVRAM at E17 which needs hookup + DEC VT220 + + 30/06/2009 Skeleton driver. + + The VT220 exists in two major hardware revisions. The Pocket Service + Guide has separate lists of components for earlier and later models, + with the following being those that differ: + + A, B, and C D, E, and F + Terminal controller 70-20814-02 70-23363-01 + Power supply/monitor board 70-20624-02 70-23361-01 + Transformer 70-20772-02 70-23362-02 + CRT/bezel/yoke (white) 70-20662-04 70-23360-01 + (green) 70-20662-05 70-23360-02 + (amber) 70-20662-06 70-23360-03 + Danish keyboard LK201-AD LK201-ED + British keyboard LK201-AE LK201-EE + Norwegian keyboard LK201-AN LK201-EN + + The original VT220 Technical Manual (EK-VT220-TM) covers Models A, B, + and C only. Though it was later reprinted with an addendum for Models + D, E, and F, this has not been found. The available schematics are + inapplicable to later models, which have an altogether different memory + map. It might even be possible that later models substitute some generic + battery-backed CMOS SRAM for the X2212 and/or replace the CRT9007 with + a custom video gate array. ****************************************************************************/ @@ -34,11 +54,16 @@ public: required_device m_maincpu; required_device m_ram; void vt220(machine_config &config); + void vt220a(machine_config &config); }; static ADDRESS_MAP_START(vt220_mem, AS_PROGRAM, 8, vt220_state) - AM_RANGE(0x0000, 0x7fff) AM_ROM + AM_RANGE(0x0000, 0x7fff) AM_ROM AM_REGION("maincpu", 0) +ADDRESS_MAP_END + +static ADDRESS_MAP_START(vt220a_mem, AS_PROGRAM, 8, vt220_state) + AM_RANGE(0x0000, 0xffff) AM_ROM AM_REGION("maincpu", 0) ADDRESS_MAP_END static ADDRESS_MAP_START(vt220_io, AS_IO, 8, vt220_state) @@ -48,6 +73,10 @@ static ADDRESS_MAP_START(vt220_io, AS_IO, 8, vt220_state) AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READNOP ADDRESS_MAP_END +static ADDRESS_MAP_START(vt220a_io, AS_IO, 8, vt220_state) + ADDRESS_MAP_UNMAP_HIGH +ADDRESS_MAP_END + /* Input ports */ static INPUT_PORTS_START( vt220 ) INPUT_PORTS_END @@ -69,7 +98,7 @@ uint32_t vt220_state::screen_update_vt220(screen_device &screen, bitmap_ind16 &b MACHINE_CONFIG_START(vt220_state::vt220) /* basic machine hardware */ - MCFG_CPU_ADD("maincpu", I8051, XTAL_11_0592MHz) // from schematic + MCFG_CPU_ADD("maincpu", I8051, XTAL_11_0592MHz) // from schematic for earlier version MCFG_CPU_PROGRAM_MAP(vt220_mem) MCFG_CPU_IO_MAP(vt220_io) @@ -92,33 +121,48 @@ MACHINE_CONFIG_START(vt220_state::vt220) MCFG_RAM_DEFAULT_SIZE("16K") MACHINE_CONFIG_END -/* ROM definition */ -ROM_START( vt220 ) - ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) - ROM_DEFAULT_BIOS( "vt220" ) - ROM_SYSTEM_BIOS( 0, "vt220o", "VT220 from schematics" ) - ROMX_LOAD( "23-012e5.e3", 0x0000, 0x4000, NO_DUMP, ROM_BIOS(1)) // location e3 with jumper w7 present and w6 cut; the 8051 maps on top(?) of the first 0x1000 bytes of this rom, though this rom does seem to contain code there. - ROMX_LOAD( "23-012e5.e3", 0x4000, 0x4000, NO_DUMP, ROM_BIOS(1)) // the rom also maps to 4000-7fff as a14 is unconnected (do we have a ROMX_RELOAD I could use here instead of this?) - ROMX_LOAD( "23-248e4.e4", 0x8000, 0x2000, NO_DUMP, ROM_BIOS(1)) +MACHINE_CONFIG_DERIVED(vt220_state::vt220a, vt220) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(vt220a_mem) + MCFG_CPU_IO_MAP(vt220a_io) +MACHINE_CONFIG_END + +/* ROM definitions */ +ROM_START(vt220) + ROM_REGION(0x8000, "maincpu", ROMREGION_ERASEFF) + ROM_LOAD("23-178e6.bin", 0x0000, 0x8000, CRC(cce5088c) SHA1(4638304729d1213658a96bb22c5211322b74d8fc) ) + + ROM_REGION(0x4000, "chargen", ROMREGION_ERASEFF) + ROM_LOAD("23-348e4.e13", 0x0000, 0x2000, CRC(994f3e37) SHA1(fe72a9fe9adb3a24743a6288d88ae07570cfea9a) ) +ROM_END + +ROM_START(vt220a) + ROM_REGION(0x10000, "maincpu", ROMREGION_ERASEFF) +#if 0 + // these ROMs are listed in the schematics; it is unknown whether or not they were actually shipped + ROM_LOAD("23-012e5.e3", 0x0000, 0x4000, NO_DUMP) // location e3 with jumper w7 present and w6 cut + ROM_RELOAD(0x4000, 0x4000) // the rom also maps to 4000-7fff as a14 is unconnected + ROM_LOAD("23-248e4.e4", 0x8000, 0x2000, NO_DUMP) // a000-bfff may be open bus or may be a mirror of above depending on whether the rom uses PGM/A13 as a secondary enable or not - ROMX_LOAD( "23-248e4.e4", 0xc000, 0x2000, NO_DUMP, ROM_BIOS(1)) + ROM_RELOAD(0xc000, 0x2000) // e000-ffff may be open bus or may be a mirror of above depending on whether the rom uses PGM/A13 as a secondary enable or not - ROMX_LOAD( "23-011m1.e1", 0x0000, 0x1000, CRC(6c4930a9) SHA1(1200a5dbf431017a11a51b5c4c9b4e7952b0a2bb), ROM_BIOS(1)) // 8051 internal code, maps on top of the e3 rom at 0000-1000 - ROM_SYSTEM_BIOS( 1, "vt220v21", "VT220 Version 2.1" ) - ROMX_LOAD( "23-183e5.e3", 0x0000, 0x4000, CRC(2848db40) SHA1(b3b029ef964c86ede68ad1b2854cfad766f20af0), ROM_BIOS(2)) // location e3 with jumper w7 present and w6 cut; the 8051 maps on top(?) of the first 0x1000 bytes of this rom, though this rom does seem to contain code there. - ROMX_LOAD( "23-183e5.e3", 0x4000, 0x4000, CRC(2848db40) SHA1(b3b029ef964c86ede68ad1b2854cfad766f20af0), ROM_BIOS(2)) // the rom also maps to 4000-7fff as a14 is unconnected (do we have a ROMX_RELOAD I could use here instead of this?) - ROMX_LOAD( "23-182e5.e4", 0x8000, 0x4000, CRC(c759bf9f) SHA1(6fe21e8eb9576fbcda76d7909b07859db0793c4e), ROM_BIOS(2)) - ROMX_LOAD( "23-182e5.e4", 0xc000, 0x4000, CRC(c759bf9f) SHA1(6fe21e8eb9576fbcda76d7909b07859db0793c4e), ROM_BIOS(2)) // again a14 is unconnected here, so it maps at c000-ffff as well (do we have a ROMX_RELOAD I could use here instead of this?) - ROMX_LOAD( "23-011m1.e1", 0x0000, 0x1000, CRC(6c4930a9) SHA1(1200a5dbf431017a11a51b5c4c9b4e7952b0a2bb), ROM_BIOS(2)) // 8051 internal code, maps on top of the e3 rom at 0000-1000 - ROM_SYSTEM_BIOS( 2, "vt220", "VT220 Version 2.3" ) - ROMX_LOAD( "23-178e6.bin", 0x0000, 0x8000, CRC(cce5088c) SHA1(4638304729d1213658a96bb22c5211322b74d8fc), ROM_BIOS(3)) // probably location e3 with jumper w7 cut and w6 present, hence a14 connects to this rom. socket e4 would be empty so 8000-ffff is open bus - - ROM_REGION( 0x4000, "chargen", ROMREGION_ERASEFF ) - ROM_LOAD( "23-247e4.e13", 0x0000, 0x2000, NO_DUMP) // this is listed in the schematics - ROM_LOAD( "23-348e4.e13", 0x0000, 0x2000, CRC(994f3e37) SHA1(fe72a9fe9adb3a24743a6288d88ae07570cfea9a)) // this can maybe be read as well as a read/writable ram for custom characters which lives ?above? it in chargen address space by setting a bit in a config register. I haven't figured out where in 8051 address space it appears when readable nor where the ram appears. +#endif + ROM_LOAD("23-183e5.e3", 0x8000, 0x4000, CRC(2848db40) SHA1(b3b029ef964c86ede68ad1b2854cfad766f20af0)) + ROM_RELOAD(0xc000, 0x4000) + ROM_LOAD("23-182e5.e4", 0x0000, 0x4000, CRC(c759bf9f) SHA1(6fe21e8eb9576fbcda76d7909b07859db0793c4e)) + ROM_RELOAD(0x4000, 0x4000) + ROM_LOAD("23-011m1.e1", 0x0000, 0x1000, CRC(6c4930a9) SHA1(1200a5dbf431017a11a51b5c4c9b4e7952b0a2bb)) // 8051 internal code + + ROM_REGION(0x4000, "chargen", ROMREGION_ERASEFF) +#if 0 + // this ROM is listed in the schematics + ROM_LOAD("23-247e4.e13", 0x0000, 0x2000, NO_DUMP) +#endif + ROM_LOAD("23-348e4.e13", 0x0000, 0x2000, CRC(994f3e37) SHA1(fe72a9fe9adb3a24743a6288d88ae07570cfea9a)) // this can maybe be read as well as a read/writable ram for custom characters which lives ?above? it in chargen address space by setting a bit in a config register. I haven't figured out where in 8051 address space it appears when readable nor where the ram appears. ROM_END /* Driver */ /* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */ -COMP( 1983, vt220, 0, 0, vt220, vt220, vt220_state, 0, "Digital Equipment Corporation", "VT220", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) +COMP( 1983, vt220, 0, 0, vt220, vt220, vt220_state, 0, "Digital Equipment Corporation", "VT220 (Version 2.3)", MACHINE_IS_SKELETON ) +COMP( 1983, vt220a, vt220, 0, vt220a, vt220, vt220_state, 0, "Digital Equipment Corporation", "VT220 (Version 2.1)", MACHINE_IS_SKELETON ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 6136db5641d..c1d3dd5302f 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -37941,6 +37941,7 @@ vt180 // 1981 Digital Equipment Corporation @source:vt220.cpp vt220 // 1983 Digital Equipment Corporation +vt220a // 1983 Digital Equipment Corporation @source:vt240.cpp mc7105 // Elektronika MC7105 -- cgit v1.2.3