mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
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:
parent
622f72e869
commit
dfa4cd3520
@ -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 )
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user