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)
This commit is contained in:
AJR 2018-01-20 13:09:58 -05:00
parent 622f72e869
commit dfa4cd3520
2 changed files with 75 additions and 30 deletions

View File

@ -2,12 +2,32 @@
// copyright-holders:Miodrag Milanovic, Jonathan Gevaryahu
/***************************************************************************
DEC VT220
DEC VT220
30/06/2009 Skeleton driver.
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
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))
// 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))
// 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
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_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.
/* 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
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
#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 )

View File

@ -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