summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2018-01-20 13:09:58 -0500
committer AJR <ajrhacker@users.noreply.github.com>2018-01-20 13:16:38 -0500
commitdfa4cd3520741b8b3721f023873ffdb07e98562d (patch)
tree7d1fe2bfe58823628412f6791be263b39f306edf
parent622f72e86911b9a5493527c7e60095b183636a32 (diff)
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)
-rw-r--r--src/mame/drivers/vt220.cpp106
-rw-r--r--src/mame/mame.lst1
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<cpu_device> m_maincpu;
required_device<ram_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