mirror of
https://github.com/holub/mame
synced 2025-07-04 09:28:51 +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
@ -6,8 +6,28 @@
|
|||||||
|
|
||||||
30/06/2009 Skeleton driver.
|
30/06/2009 Skeleton driver.
|
||||||
|
|
||||||
Schematics at www.bitsavers.org/pdf/dec/terminal/vt220/VT220_Schematic_Aug83.pdf
|
The VT220 exists in two major hardware revisions. The Pocket Service
|
||||||
There is an X2212 NVRAM at E17 which needs hookup
|
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<cpu_device> m_maincpu;
|
||||||
required_device<ram_device> m_ram;
|
required_device<ram_device> m_ram;
|
||||||
void vt220(machine_config &config);
|
void vt220(machine_config &config);
|
||||||
|
void vt220a(machine_config &config);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START(vt220_mem, AS_PROGRAM, 8, vt220_state)
|
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
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START(vt220_io, AS_IO, 8, vt220_state)
|
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
|
AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READNOP
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
static ADDRESS_MAP_START(vt220a_io, AS_IO, 8, vt220_state)
|
||||||
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
/* Input ports */
|
/* Input ports */
|
||||||
static INPUT_PORTS_START( vt220 )
|
static INPUT_PORTS_START( vt220 )
|
||||||
INPUT_PORTS_END
|
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)
|
MACHINE_CONFIG_START(vt220_state::vt220)
|
||||||
/* basic machine hardware */
|
/* 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_PROGRAM_MAP(vt220_mem)
|
||||||
MCFG_CPU_IO_MAP(vt220_io)
|
MCFG_CPU_IO_MAP(vt220_io)
|
||||||
|
|
||||||
@ -92,33 +121,48 @@ MACHINE_CONFIG_START(vt220_state::vt220)
|
|||||||
MCFG_RAM_DEFAULT_SIZE("16K")
|
MCFG_RAM_DEFAULT_SIZE("16K")
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
/* ROM definition */
|
MACHINE_CONFIG_DERIVED(vt220_state::vt220a, vt220)
|
||||||
ROM_START( vt220 )
|
MCFG_CPU_MODIFY("maincpu")
|
||||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
|
MCFG_CPU_PROGRAM_MAP(vt220a_mem)
|
||||||
ROM_DEFAULT_BIOS( "vt220" )
|
MCFG_CPU_IO_MAP(vt220a_io)
|
||||||
ROM_SYSTEM_BIOS( 0, "vt220o", "VT220 from schematics" )
|
MACHINE_CONFIG_END
|
||||||
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
|
|
||||||
|
|
||||||
ROM_REGION( 0x4000, "chargen", ROMREGION_ERASEFF )
|
/* ROM definitions */
|
||||||
ROM_LOAD( "23-247e4.e13", 0x0000, 0x2000, NO_DUMP) // this is listed in the schematics
|
ROM_START(vt220)
|
||||||
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_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
|
ROM_END
|
||||||
|
|
||||||
/* Driver */
|
/* Driver */
|
||||||
|
|
||||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS */
|
/* 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
|
@source:vt220.cpp
|
||||||
vt220 // 1983 Digital Equipment Corporation
|
vt220 // 1983 Digital Equipment Corporation
|
||||||
|
vt220a // 1983 Digital Equipment Corporation
|
||||||
|
|
||||||
@source:vt240.cpp
|
@source:vt240.cpp
|
||||||
mc7105 // Elektronika MC7105
|
mc7105 // Elektronika MC7105
|
||||||
|
Loading…
Reference in New Issue
Block a user