diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/drivers/alphatpx.cpp | 199 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
2 files changed, 118 insertions, 82 deletions
diff --git a/src/mame/drivers/alphatpx.cpp b/src/mame/drivers/alphatpx.cpp index 67e8751628b..deaaed8b24b 100644 --- a/src/mame/drivers/alphatpx.cpp +++ b/src/mame/drivers/alphatpx.cpp @@ -4,56 +4,61 @@ /*************************************************************************** Triumph-Adler Alphatronic Px series - - TODO: Doesn't do much more than showing the initial boot message + =================================== The Px series was designed by SKS, like the ITT3030 and the SKS Nano, the boards are closely related. Keyboard and floppy stuff was copypasted from ITT3030 and adapted to the best of knowledge. -P1, P2 and P2S: no paging -Lower 16K for P1, P2 and P2 S - -0x0000 - 0x17ff ROM monitor (MOS) -0x1800 - 0x1bff 1K RAM -0x1c00 - 0x1fff reserved -0x2000 - 0x2fff reserved, belonging to the video card's memory space (video ROM?) -0x3000 - 0x3fff actual video memory - -P1 -Upper 32K -0x4000 - 0x400a reserved -0x4010 - 0xc000 32K RAM -1x 160K, single sided, 40 tracks, 16 sectors/track, 256 bytes/sector floppy disk drive - -P2, P2S -Upper 48K -0x4000 - 0x400a reserved -0x4010 - 0xfff 48K RAM -P2: 2x 160K, single sided, 40 tracks, 16 sectors/track, 256 bytes/sector floppy disk drives - -P2 U, paging via -An adapter with RAM at 0x0000 and 0x3fff and the banking logic (see above) is added to the the standard 48K memory card. -16K memory card -P2S, P2U: 2x 320K, double sided, 40 tracks, 16 sectors/track, 256 bytes/sector floppy disk drives - -P3, P4 -0x0000 - 0x0fff ROM monitor (MOS) -0x1000 - 0x17ff free -0x1800 - 0x1bff monitor stack (RAM) -0x1c00 - 0x2fff free -0x3000 - 0x3fff video memory -0x4000 - 0xffff RAM -P3: 2x785K, double sided, 80 tracks, 5 sectors/track, 1024 bytes/sector floppy disk drives -P4: 1x785K, double sided, 80 tracks, 5 sectors/track, 1024 bytes/sector floppy disk drive, 1x harddisk 360 tracks, 4 heads, 17 sectors/track, 512 bytes/sector - -P2 U and P3 support regular CP/M use with a full 64K RAM complement. -Still, the video RAM is at 0x3000 and 0x3ffff even for these machines, and from what I've read they also use the routine present in the ROM monitor, the MOS. -That means, that in order to update the video RAM and probably other I/O the lower 16K (page 0) are constantly paged in and paged out. -This is accomplished by writing 2FH to port 0x78 in order to switch in the ROM (and assorted, see below) area and by writing 63H to port 0x78 in order to swap the full 64K RAM back in. - -P30 and P40 were P3 and P4's with an additional 8088 card (some with an extra graphics extension) to support MS-DOS. + P1, P2 and P2S: no paging + Lower 16K for P1, P2 and P2 S: + + 0x0000 - 0x17ff ROM monitor (MOS) + 0x1800 - 0x1bff 1K RAM + 0x1c00 - 0x1fff reserved + 0x2000 - 0x2fff reserved, belonging to the video card's memory space (video ROM?) + 0x3000 - 0x3fff actual video memory + + P1 + == + Upper 32K: + 0x4000 - 0x400a reserved + 0x4010 - 0xc000 32K RAM + 1x 160K, single sided, 40 tracks, 16 sectors/track, 256 bytes/sector floppy disk drive + + P2, P2S + ======= + Upper 48K: + 0x4000 - 0x400a reserved + 0x4010 - 0xfff 48K RAM + P2: 2x 160K, single sided, 40 tracks, 16 sectors/track, 256 bytes/sector floppy disk drives + There is a non-standard CP/M for the P2 and P2S with the program origin at 0x4300 instead of 0x0100 + + P2U + === + For paging via port 0x78A, a 16K RAM card with RAM at 0x0000 and 0x3fff and the banking logic (see above) is added to the the standard 48K memory card. + P2S, P2U: 2x 320K, double sided, 40 tracks, 16 sectors/track, 256 bytes/sector floppy disk drives + + P3, P4 + ====== + 0x0000 - 0x0fff ROM monitor (MOS) + 0x1000 - 0x17ff free + 0x1800 - 0x1bff monitor stack (RAM) + 0x1c00 - 0x2fff free + 0x3000 - 0x3fff video memory + 0x4000 - 0xffff RAM + P3: 2x785K, double sided, 80 tracks, 5 sectors/track, 1024 bytes/sector floppy disk drives + P4: 1x785K, double sided, 80 tracks, 5 sectors/track, 1024 bytes/sector floppy disk drive, 1x harddisk 360 tracks, 4 heads, 17 sectors/track, 512 bytes/sector + + P2U and P3 support regular CP/M use with a full 64K RAM complement. + Still, the video RAM is at 0x3000 and 0x3ffff even for these machines, and from what I've read they also use the routine present in the ROM monitor, the MOS. + That means, that in order to update the video RAM and probably other I/O the lower 16K (page 0) are constantly paged in and paged out. + This is accomplished by writing 2FH to port 0x78 in order to switch in the ROM (and assorted, see below) area and by writing 63H to port 0x78 in order to swap the full 64K RAM back in. + + P30 and P40 + =========== + Those were P3 and P4's with an additional 8088 card (some with an extra graphics extension) to support MS-DOS. ***************************************************************************/ @@ -83,7 +88,8 @@ public: m_crtc(*this, "crtc"), m_fdc (*this, "fdc"), m_floppy0(*this, "fdc:0"), - m_floppy1(*this, "fdc:1"), + m_floppy1(*this, "fdc:1"), + m_beep(*this, "beeper"), m_keycols(*this, "COL.%u", 0), m_palette(*this, "palette"), m_vram(*this, "vram"), @@ -107,6 +113,7 @@ public: DECLARE_WRITE_LINE_MEMBER(fdcirq_w); DECLARE_WRITE_LINE_MEMBER(fdcdrq_w); DECLARE_WRITE_LINE_MEMBER(fdchld_w); + DECLARE_WRITE8_MEMBER(beep_w); DECLARE_WRITE8_MEMBER(bank_w); protected: @@ -118,6 +125,7 @@ protected: required_device<fd1791_device> m_fdc; required_device<floppy_connector> m_floppy0; required_device<floppy_connector> m_floppy1; + required_device<beep_device> m_beep; required_ioport_array<16> m_keycols; private: @@ -157,6 +165,7 @@ static ADDRESS_MAP_START( alphatp3_io, AS_IO, 8, alphatpx_state ) AM_RANGE(0x04, 0x04) AM_DEVREADWRITE("uart", i8251_device, data_r, data_w) AM_RANGE(0x05, 0x05) AM_DEVREADWRITE("uart", i8251_device, status_r, control_w) AM_RANGE(0x10, 0x11) AM_DEVREADWRITE("kbdmcu", i8041_device, upi41_master_r, upi41_master_w) + AM_RANGE(0x12, 0x12) AM_WRITE(beep_w) AM_RANGE(0x50, 0x53) AM_READWRITE(fdc_r, fdc_w) AM_RANGE(0x54, 0x54) AM_READWRITE(fdc_stat_r, fdc_cmd_w) AM_RANGE(0x78, 0x78) AM_WRITE(bank_w) @@ -326,18 +335,6 @@ INPUT_PORTS_END //************************************************************************** -// FLOPPY -//************************************************************************** - -static SLOT_INTERFACE_START( alphatp3_floppies ) // two BASF 2471 drives - SLOT_INTERFACE("525qd", FLOPPY_525_QD) -SLOT_INTERFACE_END - -static SLOT_INTERFACE_START( alphatp2_floppies ) // two BASF 6106 drives - SLOT_INTERFACE("525ssdd", FLOPPY_525_SSDD) -SLOT_INTERFACE_END - -//************************************************************************** // VIDEO //************************************************************************** @@ -390,9 +387,15 @@ uint32_t alphatpx_state::screen_update(screen_device &screen, bitmap_rgb32 &bitm // SOUND //************************************************************************** -// Beeper +WRITE8_MEMBER( alphatpx_state::beep_w ) +{ + m_beep->set_state(data&1); +} + +//************************************************************************** +// SOUND +//************************************************************************** -// FLOPPY WRITE_LINE_MEMBER(alphatpx_state::fdcirq_w) { m_fdc_irq = state; @@ -490,6 +493,18 @@ WRITE8_MEMBER(alphatpx_state::fdc_cmd_w) } } +static SLOT_INTERFACE_START( alphatp2_floppies ) // two BASF 6106 drives + SLOT_INTERFACE("525ssdd", FLOPPY_525_SSDD) +SLOT_INTERFACE_END + +static SLOT_INTERFACE_START( alphatp2su_floppies ) + SLOT_INTERFACE("525dd", FLOPPY_525_DD) +SLOT_INTERFACE_END + +static SLOT_INTERFACE_START( alphatp3_floppies ) // two BASF 2471 drives + SLOT_INTERFACE("525qd", FLOPPY_525_QD) +SLOT_INTERFACE_END + //************************************************************************** // MACHINE //************************************************************************** @@ -552,9 +567,9 @@ static MACHINE_CONFIG_START( alphatp3 ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", alphatp3) // sound hardware - MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("beeper", BEEP, 1000) // frequency unknown - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + MCFG_SPEAKER_STANDARD_MONO( "mono" ) + MCFG_SOUND_ADD( "beeper", BEEP, 1060 ) + MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 ) MCFG_DEVICE_ADD("uart", I8251, 0) // XTAL_4_9152MHz serial clock @@ -574,46 +589,65 @@ static MACHINE_CONFIG_DERIVED (alphatp2, alphatp3) MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatp2_floppies, "525ssdd", floppy_image_device::default_floppy_formats) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED (alphatp2u, alphatp3) + MCFG_DEVICE_REMOVE("fdc:0") + MCFG_DEVICE_REMOVE("fdc:1") + MCFG_FLOPPY_DRIVE_ADD("fdc:0", alphatp2su_floppies, "525dd", floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatp2su_floppies, "525dd", floppy_image_device::default_floppy_formats) +MACHINE_CONFIG_END + //************************************************************************** // ROM DEFINITIONS //************************************************************************** // Alphatronic P2 ROM_START( alphatp2 ) // P2 ROM space 0x1800 - ROM_REGION(0x1800, "boot", 0) ROM_SYSTEM_BIOS(0, "caap94-96", "caap94-96") ROM_SYSTEM_BIOS(1, "caap04-06", "caap04-06") ROM_SYSTEM_BIOS(2, "p2_es", "p2_es") ROM_SYSTEM_BIOS(3, "p2_sks", "p2_sks") - ROM_SYSTEM_BIOS(4, "p2_ta", "p2_ta") + ROM_REGION(0x1800, "boot", 0) ROMX_LOAD("caap_96_00_5a.bin", 0x0000, 0x0800, CRC(cb137796) SHA1(876bd0762faffc7b74093922d8fbf1c72ec70060), ROM_BIOS(1) ) // earlier P2, three 16K RAM boards ROMX_LOAD("caap_05_02_12.bin", 0x0800, 0x0800, CRC(14f19693) SHA1(7ecb66818a3e352fede1857a18cd12bf742603a9), ROM_BIOS(1) ) ROMX_LOAD("caap_94_01_50.bin", 0x1000, 0x0800, CRC(fda8d4a4) SHA1(fa91e6e8504e7f84cf69d86f72826ad5405fd82d), ROM_BIOS(1) ) - ROMX_LOAD("prom2p00.bin", 0x0000, 0x0800, CRC(c98d2982) SHA1(11e98ae441b7a9c8dfd22795f8208667959f1d1c), ROM_BIOS(2) ) // later P2, one 48K RAM board - ROMX_LOAD("prom2p01.bin", 0x0800, 0x0800, CRC(14f19693) SHA1(7ecb66818a3e352fede1857a18cd12bf742603a9), ROM_BIOS(2) ) - ROMX_LOAD("prom2p02.bin", 0x1000, 0x0800, CRC(f304c3aa) SHA1(92213e77e4e6de12a4eaee25a9c1ec0ab54e93d4), ROM_BIOS(2) ) + ROMX_LOAD("caap_06_00_17.bin", 0x0000, 0x0800, CRC(cb137796) SHA1(876bd0762faffc7b74093922d8fbf1c72ec70060), ROM_BIOS(2) ) // later P2, one 48K RAM board + ROMX_LOAD("caap_05_01_12.bin", 0x0800, 0x0800, CRC(98c5ec7a) SHA1(b170e9a73b0b64d4111fa1170af6e333793da479), ROM_BIOS(2) ) + ROMX_LOAD("caap_04_01_03.bin", 0x1000, 0x0800, CRC(f304c3aa) SHA1(92213e77e4e6de12a4eaee25a9c1ec0ab54e93d4), ROM_BIOS(2) ) - ROMX_LOAD("caap_p2_es.bin", 0x0000, 0x1800, CRC(FBA85CD3) SHA1(E82482AF6D39F892B88868677572898945E02581), ROM_BIOS(3) ) // P2 Spain + ROMX_LOAD("caap_p2_es_1.bin", 0x0000, 0x0800, CRC(91b58eb3) SHA1(a4467cf9a14366198ee5f676b9471734e820522d), ROM_BIOS(3) ) // P2 Spain + ROMX_LOAD("caap_p2_es_2.bin", 0x0800, 0x0800, CRC(f4dfac82) SHA1(266d1fdaef875515d9c68ae3e67ec88831bb55cb), ROM_BIOS(3) ) + ROMX_LOAD("caap_p2_es_3.bin", 0x1000, 0x0800, CRC(6f6918ba) SHA1(8dc9f5e337df8abf42e5b55f5f1a1a9d61c42d78), ROM_BIOS(3) ) + + ROMX_LOAD("mos3-p2_sks_1.bin", 0x0000, 0x0800, CRC(c98d2982) SHA1(11e98ae441b7a9c8dfd22795f8208667959f1d1c), ROM_BIOS(4) ) // P2 sks + ROMX_LOAD("mos3-p2_sks_2.bin", 0x0800, 0x0800, CRC(14f19693) SHA1(7ecb66818a3e352fede1857a18cd12bf742603a9), ROM_BIOS(4) ) + ROMX_LOAD("mos3-p2_sks_3.bin", 0x1000, 0x0800, CRC(f304c3aa) SHA1(92213e77e4e6de12a4eaee25a9c1ec0ab54e93d4), ROM_BIOS(4) ) - ROMX_LOAD("mos3-p2_sks.bin", 0x0000, 0x1800, CRC(C045AADB) SHA1(1478530894E1DA53CC96DDB765DD1E03FF3ADEF1), ROM_BIOS(4) ) // P2 sks + ROM_REGION(0x400, "kbdmcu", 0) // same across all dumped P2 and P3 machines so far + ROM_LOAD("p2_keyboard_ip8041a_8278.bin", 0x000, 0x400, CRC(5db00d85) SHA1(0dc8e274a5aece261ef60494901601c0d8b1eb51)) // needs to be checked with P2 sks and Spain - ROMX_LOAD("prom2p00.bin", 0x0000, 0x0800, CRC(c98d2982) SHA1(11e98ae441b7a9c8dfd22795f8208667959f1d1c), ROM_BIOS(5) ) // P2 TA - ROMX_LOAD("prom2p01.bin", 0x0800, 0x0800, CRC(14f19693) SHA1(7ecb66818a3e352fede1857a18cd12bf742603a9), ROM_BIOS(5) ) - ROMX_LOAD("prom2p02.bin", 0x1000, 0x0800, CRC(f304c3aa) SHA1(92213e77e4e6de12a4eaee25a9c1ec0ab54e93d4), ROM_BIOS(5) ) + ROM_REGION(0x800, "gfx", 0) + ROMX_LOAD("cajp_97_00_5a.bin", 0x000, 0x800, CRC(aa5eab85) SHA1(2718924f5520e7e9aad635786847e78e3096b285), ROM_BIOS(1)) // came with caap94-96 + ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(2)) // came with caap04-06 + ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(3)) // sks KISS chargen not dumped yet + ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(4)) // spanish P2 chargen not dumped yet +ROM_END - ROM_REGION(0x400, "kbdmcu", 0) - ROM_LOAD("p2_keyboard_ip8041a_8278.bin", 0x000, 0x400, CRC(5db00d85) SHA1(0dc8e274a5aece261ef60494901601c0d8b1eb51)) // same across all dumped P2 and P3 machines +// Alphatronic P2U +ROM_START (alphatp2u) + ROM_REGION(0x1800, "boot", 0) + ROM_LOAD("prom2p00.bin", 0x0000, 0x0800, CRC(c98d2982) SHA1(11e98ae441b7a9c8dfd22795f8208667959f1d1c) ) + ROM_LOAD("prom2p01.bin", 0x0800, 0x0800, CRC(14f19693) SHA1(7ecb66818a3e352fede1857a18cd12bf742603a9) ) + ROM_LOAD("prom2p02.bin", 0x1000, 0x0800, CRC(f304c3aa) SHA1(92213e77e4e6de12a4eaee25a9c1ec0ab54e93d4) ) + ROM_REGION(0x400, "kbdmcu", 0) // same across all dumped P2 and P3 machines so far + ROM_LOAD("p2_keyboard_ip8041a_8278.bin", 0x000, 0x400, CRC(5db00d85) SHA1(0dc8e274a5aece261ef60494901601c0d8b1eb51)) // needs to be checked for P2U + ROM_REGION(0x800, "gfx", 0) - ROMX_LOAD("cajp_97_00_5a.bin", 0x000, 0x800, CRC(aa5eab85) SHA1(2718924f5520e7e9aad635786847e78e3096b285), ROM_BIOS(1)) - ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(2)) - ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(3)) - ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(4)) - ROMX_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d), ROM_BIOS(5)) + ROM_LOAD("cajp_01_01_28.bin", 0x000, 0x800, CRC(d6248209) SHA1(21689703de7183ecffb410eb8a6d516efe27da9d)) // P2U chargen needs to be dumped ROM_END - + // Alphatronic P3 ROM_START( alphatp3 ) ROM_REGION(0x1800, "boot", 0) // P3 ROM space 0x1000 @@ -636,10 +670,10 @@ ROM_START( alphatp30 ) // P30 add-on card with 8088 needs to be emulated to boot ROM_LOAD("hasl17.07.84.bin", 0x0000, 0x1000, CRC(6A91701B) SHA1(8A4F925D0FABAB37852A54D04E06DEB2AEAA349C)) // netmercer Eprom P30 ...wait for INT6.5 or INT5.5 with RIM to write char in hsync or hsync GAP-time !! ROM_REGION(0x400, "kbdmcu", 0) - ROM_LOAD("p3_keyboard_8278.bin", 0x000, 0x400, CRC(5DB00D85) SHA1(0DC8E274A5AECE261EF60494901601C0D8B1EB51)) // borrowed from rfka01 machine #2 + ROM_LOAD("p3_keyboard_8278.bin", 0x000, 0x400, CRC(5DB00D85) SHA1(0DC8E274A5AECE261EF60494901601C0D8B1EB51)) // same across all dumped P2 and P3 machines so far ROM_REGION(0x800, "gfx", 0) - ROM_LOAD("cajp08_01_15.bin", 0x000, 0x800, CRC(4ed11dac) SHA1(9db9b8e0edf471faaddbb5521d6223121146bab8)) // borrowed from rfka01 machine #1 + ROM_LOAD("cajp08_01_15.bin", 0x000, 0x800, CRC(4ed11dac) SHA1(9db9b8e0edf471faaddbb5521d6223121146bab8)) // borrowed from P3 lb352 // ROM_LOAD("p30_8088.bin", 0x000, 0x4000, CRC(e6bf6dd5) SHA1(dc87210bbcd96f3c1370565174a45199e3c1bc70)) // P30 ROM from 8088 card ROM_END @@ -651,5 +685,6 @@ ROM_END // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 198?, alphatp2, alphatp3, 0, alphatp2, alphatp3, alphatpx_state, 0, "Triumph-Adler", "alphatronic P2", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 198?, alphatp2u, alphatp3, 0, alphatp2u,alphatp3, alphatpx_state, 0, "Triumph-Adler", "alphatronic P2U", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) COMP( 1982, alphatp3, 0, 0, alphatp3, alphatp3, alphatpx_state, 0, "Triumph-Adler", "alphatronic P3", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) COMP( 198?, alphatp30, alphatp3, 0, alphatp3, alphatp3, alphatpx_state, 0, "Triumph-Adler", "alphatronic P30",MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index bf4b4021d17..e015677f5af 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -1080,6 +1080,7 @@ asmapro // @source:alphatpx.cpp alphatp2 +alphatp2u alphatp3 // 1982 Triumph-Adler alphatp30 |