summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/thomson.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/thomson.cpp')
-rw-r--r--src/mame/drivers/thomson.cpp624
1 files changed, 209 insertions, 415 deletions
diff --git a/src/mame/drivers/thomson.cpp b/src/mame/drivers/thomson.cpp
index 3603e491ff6..97c3519da09 100644
--- a/src/mame/drivers/thomson.cpp
+++ b/src/mame/drivers/thomson.cpp
@@ -81,6 +81,11 @@
#include "bus/centronics/ctronics.h"
#include "bus/rs232/rs232.h"
+#include "bus/thomson/cd90_015.h"
+#include "bus/thomson/cq90_028.h"
+#include "bus/thomson/cd90_351.h"
+#include "bus/thomson/cd90_640.h"
+#include "bus/thomson/nanoreseau.h"
#include "imagedev/flopdrv.h"
#include "machine/6821pia.h"
#include "machine/clock.h"
@@ -285,7 +290,7 @@ boot floppy.
. DD 90-352 3"1/2 floppy drives
- alternate QDD floppy drive extension
. CQ 90-028 floppy controller, based on a Motorola 6852 SSDA
- . QD 90-028 quickdrive 2"8 (QDD), only one drive, signe side
+ . QD 90-028 quickdrive 2"8 (QDD), only one drive, single side
- speech synthesis extension: based on a Philips / Signetics MEA 8000
(cannot be used with the MODEM)
- MIDIPAK MIDI extension, uses a EF 6850 ACIA
@@ -315,11 +320,9 @@ void thomson_state::to7_map(address_map &map)
map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to7_vram_w));
map(0x6000, 0x7fff).bankrw(THOM_BASE_BANK); /* 1 * 8 KB */
map(0x8000, 0xdfff).bankrw(THOM_RAM_BANK); /* 16 or 24 KB (for extension) */
- map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK);
map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xe7d0, 0xe7df).rw(FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w));
map(0xe7e0, 0xe7e3).rw("to7_io:pia_2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
map(0xe7f2, 0xe7f3).rw(FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
@@ -342,57 +345,6 @@ void thomson_state::to7_map(address_map &map)
/* ------------ ROMS ------------ */
-/* external floppy controllers */
-#define ROM_FLOPPY \
- /* no controller */ \
- ROM_REGION( 0x800, "floppy_none", 0 ) \
- ROM_FILL( 0, 0x800, 0x39 ) \
- /* CD 90-015 (5"1/4) */ \
- ROM_REGION( 0x800, "floppy_cd90_015", 0 ) \
- ROM_LOAD ( "cd90-015.rom", 0x000, 0x7c0, \
- CRC(821d34c1) \
- SHA1(31a6bb81baaeec5fc8de457c97264f9dfa92c18b) ) \
- /* CD 90-640 (5"1/4) */ \
- ROM_REGION( 0x800, "floppy_cd90_640", 0 ) \
- ROM_LOAD ( "cd90-640.rom", 0x000, 0x7c0, \
- CRC(5114c0a5) \
- SHA1(5c72566c22d8160ef0c75959e1863a1309bbbe49) ) \
- /* CD 90-351 (3"1/2) */ \
- ROM_REGION( 0x2000, "floppy_cd90_351", 0 ) \
- ROM_LOAD ( "cd-351-0.rom", 0x0000, 0x7c0, \
- CRC(2c0159fd) \
- SHA1(bab5395ed8bc7c06f9897897f836054e6546e8e8) ) \
- ROM_LOAD ( "cd-351-1.rom", 0x0800, 0x7c0, \
- CRC(8e58d159) \
- SHA1(dcf992c96e7556b2faee6bacd3f744e56998e6ea) ) \
- ROM_LOAD ( "cd-351-2.rom", 0x1000, 0x7c0, \
- CRC(c9228b60) \
- SHA1(179e10107d5be91e684069dee80f94847b83201f) ) \
- ROM_LOAD ( "cd-351-3.rom", 0x1800, 0x7c0, \
- CRC(3ca8e5dc) \
- SHA1(7118636fb5c597c78c2fce17b02aed5e4ba38635) ) \
- /* CQ 90-028 (2"8, aka QDD) */ \
- ROM_REGION( 0x800, "floppy_cq90_028", 0 ) \
- ROM_LOAD ( "cq90-028.rom", 0x000, 0x7c0, \
- CRC(ca4dba3d) \
- SHA1(949c1f777c892da62c242215d79757d61e71e62b) )
-
-/* external floppy / network controller: 9 banks */
-#define ROM_FLOPPY5 \
- ROM_FLOPPY \
- ROM_REGION( 0x800, "floppy_nano", 0 ) \
- ROM_LOAD ( "nano5.rom", 0x000, 0x7c0, \
- CRC(2f756868) \
- SHA1(b5b7cb6d12493d849330b6b5628efd1a83a4bbf5) )
-
-#define ROM_FLOPPY7 \
- ROM_FLOPPY \
- ROM_REGION( 0x800, "floppy_nano", 0 ) \
- ROM_LOAD ( "nano7.rom", 0x000, 0x7c0, \
- CRC(42a1d1a6) \
- SHA1(973209f4baa5e81bf7885c0602949e064bac7862) )
-
-
ROM_START ( to7 )
ROM_REGION ( 0x10000, "maincpu", 0 )
ROM_LOAD ( "to7.rom", 0xe800, 0x1800,
@@ -401,8 +353,6 @@ ROM_START ( to7 )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL ( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY7
ROM_END
ROM_START ( t9000 )
@@ -413,8 +363,6 @@ ROM_START ( t9000 )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL ( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY7
ROM_END
@@ -453,54 +401,6 @@ static INPUT_PORTS_START ( to7_mconfig )
INPUT_PORTS_END
-static INPUT_PORTS_START ( to7_fconfig )
- PORT_START ( "fconfig" )
-
- PORT_CONFNAME ( 0x07, 0x03, "Floppy (reset)" )
- PORT_CONFSETTING ( 0x00, DEF_STR ( None ) )
- PORT_CONFSETTING ( 0x01, "CD 90-015 (5\"1/4 SD)" )
- PORT_CONFSETTING ( 0x02, "CD 90-640 (5\"1/4 DD)" )
- PORT_CONFSETTING ( 0x03, "CD 90-351 (3\"1/2)" )
- PORT_CONFSETTING ( 0x04, "CQ 90-028 (2\"8 QDD)" )
- PORT_CONFSETTING ( 0x05, "Network" )
-
- PORT_CONFNAME ( 0xf8, 0x08, "Network ID" )
- PORT_CONFSETTING ( 0x00, "0 (Master)" )
- PORT_CONFSETTING ( 0x08, "1" )
- PORT_CONFSETTING ( 0x10, "2" )
- PORT_CONFSETTING ( 0x18, "3" )
- PORT_CONFSETTING ( 0x20, "4" )
- PORT_CONFSETTING ( 0x28, "5" )
- PORT_CONFSETTING ( 0x30, "6" )
- PORT_CONFSETTING ( 0x38, "7" )
- PORT_CONFSETTING ( 0x40, "8" )
- PORT_CONFSETTING ( 0x48, "9" )
- PORT_CONFSETTING ( 0x50, "10" )
- PORT_CONFSETTING ( 0x58, "11" )
- PORT_CONFSETTING ( 0x60, "12" )
- PORT_CONFSETTING ( 0x68, "13" )
- PORT_CONFSETTING ( 0x70, "14" )
- PORT_CONFSETTING ( 0x78, "15" )
- PORT_CONFSETTING ( 0x80, "16" )
- PORT_CONFSETTING ( 0x88, "17" )
- PORT_CONFSETTING ( 0x90, "18" )
- PORT_CONFSETTING ( 0x98, "19" )
- PORT_CONFSETTING ( 0xa0, "20" )
- PORT_CONFSETTING ( 0xa8, "21" )
- PORT_CONFSETTING ( 0xb0, "22" )
- PORT_CONFSETTING ( 0xb8, "23" )
- PORT_CONFSETTING ( 0xc0, "24" )
- PORT_CONFSETTING ( 0xc8, "25" )
- PORT_CONFSETTING ( 0xd0, "26" )
- PORT_CONFSETTING ( 0xd8, "27" )
- PORT_CONFSETTING ( 0xe0, "28" )
- PORT_CONFSETTING ( 0xe8, "29" )
- PORT_CONFSETTING ( 0xf0, "30" )
- PORT_CONFSETTING ( 0xf8, "31" )
-
-INPUT_PORTS_END
-
-
static INPUT_PORTS_START ( to7_keyboard )
PORT_START ( "keyboard.0" )
KEY ( 0, "Shift", LSHIFT ) PORT_CODE ( KEYCODE_RSHIFT ) PORT_CHAR(UCHAR_SHIFT_1)
@@ -580,7 +480,6 @@ static INPUT_PORTS_START ( to7 )
PORT_INCLUDE ( thom_game_port )
PORT_INCLUDE ( to7_keyboard )
PORT_INCLUDE ( to7_config )
- PORT_INCLUDE ( to7_fconfig )
PORT_INCLUDE ( to7_vconfig )
PORT_INCLUDE ( to7_mconfig )
INPUT_PORTS_END
@@ -589,51 +488,9 @@ static INPUT_PORTS_START ( t9000 )
PORT_INCLUDE ( to7 )
INPUT_PORTS_END
-WRITE_LINE_MEMBER( thomson_state::fdc_index_0_w )
-{
- thomson_index_callback(0, state);
-}
-
-WRITE_LINE_MEMBER( thomson_state::fdc_index_1_w )
-{
- thomson_index_callback(1, state);
-}
-
-WRITE_LINE_MEMBER( thomson_state::fdc_index_2_w )
-{
- thomson_index_callback(2, state);
-}
-
-WRITE_LINE_MEMBER( thomson_state::fdc_index_3_w )
-{
- thomson_index_callback(3, state);
-}
-
-static const floppy_interface thomson_floppy_interface =
-{
- FLOPPY_STANDARD_5_25_DSHD,
- LEGACY_FLOPPY_OPTIONS_NAME(thomson),
- "thom_flop"
-};
-
-void thomson_state::cd90_640_formats(format_registration &fr)
-{
- fr.add_mfm_containers();
- fr.add(FLOPPY_CD90_640_FORMAT);
-}
-
-static void cd90_640_floppies(device_slot_interface &device)
-{
- device.option_add("sssd", FLOPPY_525_SSSD);
- device.option_add("sd", FLOPPY_525_SD);
- device.option_add("ssdd", FLOPPY_525_SSDD);
- device.option_add("dd", FLOPPY_525_DD);
-}
-
-
/* ------------ driver ------------ */
-void thomson_state::to7_base(machine_config &config)
+void thomson_state::to7_base(machine_config &config, bool is_mo)
{
MCFG_MACHINE_START_OVERRIDE( thomson_state, to7 )
MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to7 )
@@ -671,33 +528,16 @@ void thomson_state::to7_base(machine_config &config)
m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
m_cassette->set_interface("to_cass");
-/* floppy */
- CQ90_028(config, m_to7qdd, 0);
-
- THMFC1(config, m_thmfc, 16_MHz_XTAL);
- m_thmfc->floppy_active_cb().set(FUNC(thomson_state::thom_floppy_active));
-
- MC6843(config, m_mc6843, 16_MHz_XTAL / 16 / 2);
- m_mc6843->set_floppy_drives(m_floppy_image[0], m_floppy_image[1], m_floppy_image[2], m_floppy_image[3]);
-
- LEGACY_FLOPPY(config, m_floppy_image[0], 0, &thomson_floppy_interface);
- m_floppy_image[0]->out_idx_cb().set(FUNC(thomson_state::fdc_index_0_w));
- LEGACY_FLOPPY(config, m_floppy_image[1], 0, &thomson_floppy_interface);
- m_floppy_image[1]->out_idx_cb().set(FUNC(thomson_state::fdc_index_1_w));
- LEGACY_FLOPPY(config, m_floppy_image[2], 0, &thomson_floppy_interface);
- m_floppy_image[2]->out_idx_cb().set(FUNC(thomson_state::fdc_index_2_w));
- LEGACY_FLOPPY(config, m_floppy_image[3], 0, &thomson_floppy_interface);
- m_floppy_image[3]->out_idx_cb().set(FUNC(thomson_state::fdc_index_3_w));
-
- WD2793(config, m_wd2793_fdc, 16_MHz_XTAL / 16);
- FLOPPY_CONNECTOR(config, "wd2793:0", cd90_640_floppies, "dd", thomson_state::cd90_640_formats);
- FLOPPY_CONNECTOR(config, "wd2793:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats);
-
-
-/* network */
- MC6854(config, m_mc6854);
- m_mc6854->set_out_frame_callback(FUNC(thomson_state::to7_network_got_frame));
-
+/* extension port */
+ THOMSON_EXTENSION(config, m_extension);
+ m_extension->option_add("cd90_015", CD90_015);
+ m_extension->option_add("cq90_028", CQ90_028);
+ m_extension->option_add("cd90_351", CD90_351);
+ m_extension->option_add("cd90_640", CD90_640);
+ if(is_mo)
+ m_extension->option_add("nanoreseau", NANORESEAU_MO);
+ else
+ m_extension->option_add("nanoreseau", NANORESEAU_TO);
/* pia */
PIA6821(config, m_pia_sys, 0);
@@ -759,7 +599,7 @@ void thomson_state::to7_base(machine_config &config)
void thomson_state::to7(machine_config &config)
{
- to7_base(config);
+ to7_base(config, false);
/* timer */
MC6846(config, m_mc6846, 16_MHz_XTAL / 16);
@@ -837,11 +677,9 @@ void thomson_state::to770_map(address_map &map)
map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
map(0x6000, 0x9fff).bankrw(THOM_BASE_BANK); /* 16 KB */
map(0xa000, 0xdfff).bankrw(THOM_RAM_BANK); /* 6 * 16 KB */
- map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK);
map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xe7d0, 0xe7df).rw(FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w));
map(0xe7e0, 0xe7e3).rw("to7_io:pia_2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
map(0xe7e4, 0xe7e7).rw(FUNC(thomson_state::to770_gatearray_r), FUNC(thomson_state::to770_gatearray_w));
map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
@@ -873,8 +711,6 @@ ROM_START ( to770 )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL ( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY7
ROM_END
ROM_START ( to770a )
@@ -885,8 +721,6 @@ ROM_START ( to770a )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL ( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY7
ROM_END
@@ -1034,22 +868,20 @@ Differences include:
**********************************************************************/
-void thomson_state::mo5_map(address_map &map)
+void mo5_state::mo5_map(address_map &map)
{
- map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
+ map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(FUNC(mo5_state::to770_vram_w));
map(0x2000, 0x9fff).bankrw(THOM_BASE_BANK);
- map(0xa000, 0xa7bf).bankr(THOM_FLOP_BANK);
map(0xa7c0, 0xa7c3).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xa7cb, 0xa7cb).w(FUNC(thomson_state::mo5_ext_w));
+ map(0xa7cb, 0xa7cb).w(FUNC(mo5_state::mo5_ext_w));
map(0xa7cc, 0xa7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xa7d0, 0xa7df).rw(FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w));
map(0xa7e0, 0xa7e3).rw("to7_io:pia_2", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xa7e4, 0xa7e7).rw(FUNC(thomson_state::mo5_gatearray_r), FUNC(thomson_state::mo5_gatearray_w));
+ map(0xa7e4, 0xa7e7).rw(FUNC(mo5_state::mo5_gatearray_r), FUNC(mo5_state::mo5_gatearray_w));
map(0xa7e8, 0xa7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
- map(0xa7f2, 0xa7f3).rw(FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+ map(0xa7f2, 0xa7f3).rw(FUNC(mo5_state::to7_midi_r), FUNC(mo5_state::to7_midi_w));
map(0xa7fe, 0xa7ff).rw(m_mea8000, FUNC(mea8000_device::read), FUNC(mea8000_device::write));
- map(0xb000, 0xefff).bankr(THOM_CART_BANK).w(FUNC(thomson_state::mo5_cartridge_w));
+ map(0xb000, 0xefff).bankr(THOM_CART_BANK).w(FUNC(mo5_state::mo5_cartridge_w));
map(0xf000, 0xffff).rom(); /* system bios */
/* 0x10000 - 0x1ffff: 16 KB integrated BASIC / 64 KB external cartridge */
@@ -1078,8 +910,6 @@ ROM_START ( mo5 )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY5
ROM_END
ROM_START ( mo5e )
@@ -1093,8 +923,6 @@ ROM_START ( mo5e )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY5
ROM_END
@@ -1138,28 +966,28 @@ INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::mo5(machine_config &config)
+void mo5_state::mo5(machine_config &config)
{
- to7_base(config);
- MCFG_MACHINE_START_OVERRIDE( thomson_state, mo5 )
- MCFG_MACHINE_RESET_OVERRIDE( thomson_state, mo5 )
+ to7_base(config, true);
+ MCFG_MACHINE_START_OVERRIDE( mo5_state, mo5 )
+ MCFG_MACHINE_RESET_OVERRIDE( mo5_state, mo5 )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::mo5_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mo5_state::mo5_map);
m_cassette->set_formats(mo5_cassette_formats);
m_cassette->set_interface("mo_cass");
- subdevice<palette_device>("palette")->set_init(FUNC(thomson_state::mo5_palette));
+ subdevice<palette_device>("palette")->set_init(FUNC(mo5_state::mo5_palette));
- m_pia_sys->readpa_handler().set(FUNC(thomson_state::mo5_sys_porta_in));
- m_pia_sys->readpb_handler().set(FUNC(thomson_state::mo5_sys_portb_in));
- m_pia_sys->writepa_handler().set(FUNC(thomson_state::mo5_sys_porta_out));
+ m_pia_sys->readpa_handler().set(FUNC(mo5_state::mo5_sys_porta_in));
+ m_pia_sys->readpb_handler().set(FUNC(mo5_state::mo5_sys_portb_in));
+ m_pia_sys->writepa_handler().set(FUNC(mo5_state::mo5_sys_porta_out));
m_pia_sys->writepb_handler().set("buzzer", FUNC(dac_bit_interface::data_w));
- m_pia_sys->ca2_handler().set(FUNC(thomson_state::mo5_set_cassette_motor));
+ m_pia_sys->ca2_handler().set(FUNC(mo5_state::mo5_set_cassette_motor));
m_pia_sys->cb2_handler().set_nop();
m_pia_sys->irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<1>)); // WARNING: differs from TO7 !
- GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(thomson_state::mo5_cartridge));
+ GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(mo5_state::mo5_cartridge));
config.device_remove("to7_cart_list");
config.device_remove("to7_cass_list");
@@ -1175,15 +1003,15 @@ void thomson_state::mo5(machine_config &config)
m_ram->set_default_size("112K");
}
-void thomson_state::mo5e(machine_config &config)
+void mo5_state::mo5e(machine_config &config)
{
mo5(config);
}
-COMP( 1984, mo5, 0, 0, mo5, mo5, thomson_state, empty_init, "Thomson", "MO5", 0 )
+COMP( 1984, mo5, 0, 0, mo5, mo5, mo5_state, empty_init, "Thomson", "MO5", 0 )
-COMP( 1986, mo5e, mo5, 0, mo5e, mo5e, thomson_state, empty_init, "Thomson", "MO5E", 0 )
+COMP( 1986, mo5e, mo5, 0, mo5e, mo5e, mo5_state, empty_init, "Thomson", "MO5E", 0 )
/********************************* TO9 *******************************
@@ -1258,26 +1086,24 @@ It was replaced quickly with the improved TO9+.
**********************************************************************/
-void thomson_state::to9_map(address_map &map)
+void to9_state::to9_map(address_map &map)
{
- map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(thomson_state::to9_cartridge_w));/* 4 * 16 KB */
- map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
+ map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(to9_state::to9_cartridge_w));/* 4 * 16 KB */
+ map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(FUNC(to9_state::to770_vram_w));
map(0x6000, 0x9fff).bankrw(THOM_BASE_BANK); /* 16 KB */
map(0xa000, 0xdfff).bankrw(THOM_RAM_BANK); /* 10 * 16 KB */
- map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK);
map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xe7d0, 0xe7d9).rw(FUNC(thomson_state::to9_floppy_r), FUNC(thomson_state::to9_floppy_w));
- map(0xe7da, 0xe7dd).rw(FUNC(thomson_state::to9_vreg_r), FUNC(thomson_state::to9_vreg_w));
- map(0xe7de, 0xe7df).rw(FUNC(thomson_state::to9_kbd_r), FUNC(thomson_state::to9_kbd_w));
- map(0xe7e4, 0xe7e7).rw(FUNC(thomson_state::to9_gatearray_r), FUNC(thomson_state::to9_gatearray_w));
+ map(0xe7da, 0xe7dd).rw(FUNC(to9_state::to9_vreg_r), FUNC(to9_state::to9_vreg_w));
+ map(0xe7de, 0xe7df).rw(FUNC(to9_state::to9_kbd_r), FUNC(to9_state::to9_kbd_w));
+ map(0xe7e4, 0xe7e7).rw(FUNC(to9_state::to9_gatearray_r), FUNC(to9_state::to9_gatearray_w));
map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
-/* map(0xe7f0, 0xe7f7).rw(FUNC(thomson_state::to9_ieee_r), FUNC(thomson_state::to9_ieee_w )); */
- map(0xe7f2, 0xe7f3).rw(FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+/* map(0xe7f0, 0xe7f7).rw(FUNC(to9_state::to9_ieee_r), FUNC(to9_state::to9_ieee_w )); */
+ map(0xe7f2, 0xe7f3).rw(FUNC(to9_state::to7_midi_r), FUNC(to9_state::to7_midi_w));
map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xe7fe, 0xe7ff).rw(FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w));
+ map(0xe7fe, 0xe7ff).rw(FUNC(to9_state::to7_modem_mea8000_r), FUNC(to9_state::to7_modem_mea8000_w));
map(0xe800, 0xffff).rom(); /* system bios */
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
@@ -1335,8 +1161,6 @@ ROM_START ( to9 )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY7
ROM_END
@@ -1435,92 +1259,44 @@ static INPUT_PORTS_START ( to9_keyboard )
KEY ( 7, "> <", BACKSLASH2 ) PORT_CHAR('>') PORT_CHAR('<')
INPUT_PORTS_END
-static INPUT_PORTS_START ( to9_fconfig )
- PORT_START ( "fconfig" )
-
- PORT_CONFNAME ( 0x07, 0x00, "External floppy (reset)" )
- PORT_CONFSETTING ( 0x00, "No external" )
- PORT_CONFSETTING ( 0x01, "CD 90-015 (5\"1/4 SD)" )
- PORT_CONFSETTING ( 0x02, "CD 90-640 (5\"1/4 DD)" )
- PORT_CONFSETTING ( 0x03, "CD 90-351 (3\"1/2)" )
- PORT_CONFSETTING ( 0x04, "CQ 90-028 (2\"8 QDD)" )
- PORT_CONFSETTING ( 0x05, "Network" )
-
- PORT_CONFNAME ( 0xf8, 0x08, "Network ID" )
- PORT_CONFSETTING ( 0x00, "0 (Master)" )
- PORT_CONFSETTING ( 0x08, "1" )
- PORT_CONFSETTING ( 0x10, "2" )
- PORT_CONFSETTING ( 0x18, "3" )
- PORT_CONFSETTING ( 0x20, "4" )
- PORT_CONFSETTING ( 0x28, "5" )
- PORT_CONFSETTING ( 0x30, "6" )
- PORT_CONFSETTING ( 0x38, "7" )
- PORT_CONFSETTING ( 0x40, "8" )
- PORT_CONFSETTING ( 0x48, "9" )
- PORT_CONFSETTING ( 0x50, "10" )
- PORT_CONFSETTING ( 0x58, "11" )
- PORT_CONFSETTING ( 0x60, "12" )
- PORT_CONFSETTING ( 0x68, "13" )
- PORT_CONFSETTING ( 0x70, "14" )
- PORT_CONFSETTING ( 0x78, "15" )
- PORT_CONFSETTING ( 0x80, "16" )
- PORT_CONFSETTING ( 0x88, "17" )
- PORT_CONFSETTING ( 0x90, "18" )
- PORT_CONFSETTING ( 0x98, "19" )
- PORT_CONFSETTING ( 0xa0, "20" )
- PORT_CONFSETTING ( 0xa8, "21" )
- PORT_CONFSETTING ( 0xb0, "22" )
- PORT_CONFSETTING ( 0xb8, "23" )
- PORT_CONFSETTING ( 0xc0, "24" )
- PORT_CONFSETTING ( 0xc8, "25" )
- PORT_CONFSETTING ( 0xd0, "26" )
- PORT_CONFSETTING ( 0xd8, "27" )
- PORT_CONFSETTING ( 0xe0, "28" )
- PORT_CONFSETTING ( 0xe8, "29" )
- PORT_CONFSETTING ( 0xf0, "30" )
- PORT_CONFSETTING ( 0xf8, "31" )
-
-INPUT_PORTS_END
-
static INPUT_PORTS_START ( to9 )
PORT_INCLUDE ( thom_lightpen )
PORT_INCLUDE ( thom_game_port )
PORT_INCLUDE ( to9_keyboard )
PORT_INCLUDE ( to7_config )
- PORT_INCLUDE ( to9_fconfig )
PORT_INCLUDE ( to7_vconfig )
PORT_INCLUDE ( to7_mconfig )
INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::to9(machine_config &config)
+void to9_state::to9(machine_config &config)
{
to7(config);
- MCFG_MACHINE_START_OVERRIDE( thomson_state, to9 )
- MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to9 )
+ MCFG_MACHINE_START_OVERRIDE( to9_state, to9 )
+ MCFG_MACHINE_RESET_OVERRIDE( to9_state, to9 )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::to9_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &to9_state::to9_map);
- m_pia_sys->readpa_handler().set(FUNC(thomson_state::to9_sys_porta_in));
+ m_pia_sys->readpa_handler().set(FUNC(to9_state::to9_sys_porta_in));
m_pia_sys->readpb_handler().set_constant(0);
- m_pia_sys->writepa_handler().set(FUNC(thomson_state::to9_sys_porta_out));
- m_pia_sys->writepb_handler().set(FUNC(thomson_state::to9_sys_portb_out));
+ m_pia_sys->writepa_handler().set(FUNC(to9_state::to9_sys_porta_out));
+ m_pia_sys->writepb_handler().set(FUNC(to9_state::to9_sys_portb_out));
m_pia_sys->cb2_handler().set_nop();
m_pia_sys->irqa_handler().set_nop();
- m_mc6846->out_port().set(FUNC(thomson_state::to9_timer_port_out));
+ m_mc6846->out_port().set(FUNC(to9_state::to9_timer_port_out));
CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy));
+ m_centronics->busy_handler().set(FUNC(to9_state::write_centronics_busy));
/* internal ram */
m_ram->set_default_size("192K").set_extra_options("128K");
}
-COMP( 1985, to9, 0, 0, to9, to9, thomson_state, empty_init, "Thomson", "TO9", MACHINE_IMPERFECT_COLORS )
+COMP( 1985, to9, 0, 0, to9, to9, to9_state, empty_init, "Thomson", "TO9", MACHINE_IMPERFECT_COLORS )
/******************************** TO8 ********************************
@@ -1586,27 +1362,25 @@ The TO8D is simply a TO8 with an integrated 3"1/2 floppy drive.
**********************************************************************/
-void thomson_state::to8_map(address_map &map)
+void to9_state::to8_map(address_map &map)
{
- map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(thomson_state::to8_cartridge_w)); /* 4 * 16 KB */
- map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
- map(0x6000, 0x7fff).bankr(TO8_SYS_LO).w(FUNC(thomson_state::to8_sys_lo_w));
- map(0x8000, 0x9fff).bankr(TO8_SYS_HI).w(FUNC(thomson_state::to8_sys_hi_w));
- map(0xa000, 0xbfff).bankr(TO8_DATA_LO).w(FUNC(thomson_state::to8_data_lo_w));
- map(0xc000, 0xdfff).bankr(TO8_DATA_HI).w(FUNC(thomson_state::to8_data_hi_w));
- map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK); /* 2 * 2 KB */
+ map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(to9_state::to8_cartridge_w)); /* 4 * 16 KB */
+ map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(FUNC(to9_state::to770_vram_w));
+ map(0x6000, 0x7fff).bankr(TO8_SYS_LO).w(FUNC(to9_state::to8_sys_lo_w));
+ map(0x8000, 0x9fff).bankr(TO8_SYS_HI).w(FUNC(to9_state::to8_sys_hi_w));
+ map(0xa000, 0xbfff).bankr(TO8_DATA_LO).w(FUNC(to9_state::to8_data_lo_w));
+ map(0xc000, 0xdfff).bankr(TO8_DATA_HI).w(FUNC(to9_state::to8_data_hi_w));
map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xe7d0, 0xe7d9).rw(FUNC(thomson_state::to8_floppy_r), FUNC(thomson_state::to8_floppy_w));
- map(0xe7da, 0xe7dd).rw(FUNC(thomson_state::to8_vreg_r), FUNC(thomson_state::to8_vreg_w));
- map(0xe7e4, 0xe7e7).rw(FUNC(thomson_state::to8_gatearray_r), FUNC(thomson_state::to8_gatearray_w));
+ map(0xe7da, 0xe7dd).rw(FUNC(to9_state::to8_vreg_r), FUNC(to9_state::to8_vreg_w));
+ map(0xe7e4, 0xe7e7).rw(FUNC(to9_state::to8_gatearray_r), FUNC(to9_state::to8_gatearray_w));
map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
-/* map(0xe7f0, 0xe7f7).rw(FUNC(thomson_state::to9_ieee_r), FUNC(thomson_state::to9_ieee_w )); */
- map(0xe7f2, 0xe7f3).rw(FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+/* map(0xe7f0, 0xe7f7).rw(FUNC(to9_state::to9_ieee_r), FUNC(to9_state::to9_ieee_w )); */
+ map(0xe7f2, 0xe7f3).rw(FUNC(to9_state::to7_midi_r), FUNC(to9_state::to7_midi_w));
map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xe7fe, 0xe7ff).rw(FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w));
+ map(0xe7fe, 0xe7ff).rw(FUNC(to9_state::to7_modem_mea8000_r), FUNC(to9_state::to7_modem_mea8000_w));
map(0xe800, 0xffff).bankr(TO8_BIOS_BANK); /* 2 * 6 KB */
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
@@ -1648,8 +1422,6 @@ ROM_START ( to8 )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY7
ROM_END
ROM_START ( to8d )
@@ -1679,8 +1451,6 @@ ROM_START ( to8d )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY7
ROM_END
@@ -1705,7 +1475,6 @@ static INPUT_PORTS_START ( to8 )
PORT_INCLUDE ( thom_game_port )
PORT_INCLUDE ( to9_keyboard )
PORT_INCLUDE ( to8_config )
- PORT_INCLUDE ( to9_fconfig )
PORT_INCLUDE ( to7_vconfig )
PORT_INCLUDE ( to7_mconfig )
INPUT_PORTS_END
@@ -1717,29 +1486,29 @@ INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::to8(machine_config &config)
+void to9_state::to8(machine_config &config)
{
to7(config);
- MCFG_MACHINE_START_OVERRIDE( thomson_state, to8 )
- MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to8 )
+ MCFG_MACHINE_START_OVERRIDE( to9_state, to8 )
+ MCFG_MACHINE_RESET_OVERRIDE( to9_state, to8 )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::to8_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &to9_state::to8_map);
//MC6804(config, "kbdmcu", 11_MHz_XTAL);
- m_pia_sys->readpa_handler().set(FUNC(thomson_state::to8_sys_porta_in));
+ m_pia_sys->readpa_handler().set(FUNC(to9_state::to8_sys_porta_in));
m_pia_sys->readpb_handler().set_constant(0);
- m_pia_sys->writepa_handler().set(FUNC(thomson_state::to9_sys_porta_out));
- m_pia_sys->writepb_handler().set(FUNC(thomson_state::to8_sys_portb_out));
+ m_pia_sys->writepa_handler().set(FUNC(to9_state::to9_sys_porta_out));
+ m_pia_sys->writepb_handler().set(FUNC(to9_state::to8_sys_portb_out));
m_pia_sys->cb2_handler().set_nop();
m_pia_sys->irqa_handler().set_nop();
CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy));
+ m_centronics->busy_handler().set(FUNC(to9_state::write_centronics_busy));
- m_mc6846->out_port().set(FUNC(thomson_state::to8_timer_port_out));
- m_mc6846->in_port().set(FUNC(thomson_state::to8_timer_port_in));
- m_mc6846->cp2().set(FUNC(thomson_state::to8_timer_cp2_out));
+ m_mc6846->out_port().set(FUNC(to9_state::to8_timer_port_out));
+ m_mc6846->in_port().set(FUNC(to9_state::to8_timer_port_in));
+ m_mc6846->cp2().set(FUNC(to9_state::to8_timer_cp2_out));
/* internal ram */
m_ram->set_default_size("512K").set_extra_options("256K");
@@ -1750,15 +1519,15 @@ void thomson_state::to8(machine_config &config)
SOFTWARE_LIST(config.replace(), "to7_qd_list").set_compatible("to7_qd");
}
-void thomson_state::to8d(machine_config &config)
+void to9_state::to8d(machine_config &config)
{
to8(config);
}
-COMP( 1986, to8, 0, 0, to8, to8, thomson_state, empty_init, "Thomson", "TO8", 0 )
+COMP( 1986, to8, 0, 0, to8, to8, to9_state, empty_init, "Thomson", "TO8", 0 )
-COMP( 1987, to8d, to8, 0, to8d, to8d, thomson_state, empty_init, "Thomson", "TO8D", 0 )
+COMP( 1987, to8d, to8, 0, to8d, to8d, to9_state, empty_init, "Thomson", "TO8D", 0 )
/******************************** TO9+ *******************************
@@ -1798,28 +1567,26 @@ The differences with the TO8 are:
**********************************************************************/
-void thomson_state::to9p_map(address_map &map)
+void to9_state::to9p_map(address_map &map)
{
- map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(thomson_state::to8_cartridge_w)); /* 4 * 16 KB */
- map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
- map(0x6000, 0x7fff).bankr(TO8_SYS_LO).w(FUNC(thomson_state::to8_sys_lo_w));
- map(0x8000, 0x9fff).bankr(TO8_SYS_HI).w(FUNC(thomson_state::to8_sys_hi_w));
- map(0xa000, 0xbfff).bankr(TO8_DATA_LO).w(FUNC(thomson_state::to8_data_lo_w));
- map(0xc000, 0xdfff).bankr(TO8_DATA_HI).w(FUNC(thomson_state::to8_data_hi_w));
- map(0xe000, 0xe7bf).bankr(THOM_FLOP_BANK); /* 2 * 2 KB */
+ map(0x0000, 0x3fff).bankr(THOM_CART_BANK).w(FUNC(to9_state::to8_cartridge_w)); /* 4 * 16 KB */
+ map(0x4000, 0x5fff).bankr(THOM_VRAM_BANK).w(FUNC(to9_state::to770_vram_w));
+ map(0x6000, 0x7fff).bankr(TO8_SYS_LO).w(FUNC(to9_state::to8_sys_lo_w));
+ map(0x8000, 0x9fff).bankr(TO8_SYS_HI).w(FUNC(to9_state::to8_sys_hi_w));
+ map(0xa000, 0xbfff).bankr(TO8_DATA_LO).w(FUNC(to9_state::to8_data_lo_w));
+ map(0xc000, 0xdfff).bankr(TO8_DATA_HI).w(FUNC(to9_state::to8_data_hi_w));
map(0xe7c0, 0xe7c7).rw(m_mc6846, FUNC(mc6846_device::read), FUNC(mc6846_device::write));
map(0xe7c8, 0xe7cb).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
map(0xe7cc, 0xe7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xe7d0, 0xe7d9).rw(FUNC(thomson_state::to8_floppy_r), FUNC(thomson_state::to8_floppy_w));
- map(0xe7da, 0xe7dd).rw(FUNC(thomson_state::to8_vreg_r), FUNC(thomson_state::to8_vreg_w));
- map(0xe7de, 0xe7df).rw(FUNC(thomson_state::to9_kbd_r), FUNC(thomson_state::to9_kbd_w));
- map(0xe7e4, 0xe7e7).rw(FUNC(thomson_state::to8_gatearray_r), FUNC(thomson_state::to8_gatearray_w));
+ map(0xe7da, 0xe7dd).rw(FUNC(to9_state::to8_vreg_r), FUNC(to9_state::to8_vreg_w));
+ map(0xe7de, 0xe7df).rw(FUNC(to9_state::to9_kbd_r), FUNC(to9_state::to9_kbd_w));
+ map(0xe7e4, 0xe7e7).rw(FUNC(to9_state::to8_gatearray_r), FUNC(to9_state::to8_gatearray_w));
map(0xe7e8, 0xe7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
-/* map(0xe7f0, 0xe7f7).rw(FUNC(thomson_state::to9_ieee_r), FUNC(thomson_state::to9_ieee_w )); */
- map(0xe7f2, 0xe7f3).rw(FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+/* map(0xe7f0, 0xe7f7).rw(FUNC(to9_state::to9_ieee_r), FUNC(to9_state::to9_ieee_w )); */
+ map(0xe7f2, 0xe7f3).rw(FUNC(to9_state::to7_midi_r), FUNC(to9_state::to7_midi_w));
map(0xe7f8, 0xe7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xe7fe, 0xe7ff).rw(FUNC(thomson_state::to7_modem_mea8000_r), FUNC(thomson_state::to7_modem_mea8000_w));
+ map(0xe7fe, 0xe7ff).rw(FUNC(to9_state::to7_modem_mea8000_r), FUNC(to9_state::to7_modem_mea8000_w));
map(0xe800, 0xffff).bankr(TO8_BIOS_BANK); /* 2 * 6 KB */
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
@@ -1861,8 +1628,6 @@ ROM_START ( to9p )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY7
ROM_END
@@ -1873,35 +1638,34 @@ static INPUT_PORTS_START ( to9p )
PORT_INCLUDE ( thom_game_port )
PORT_INCLUDE ( to9_keyboard )
PORT_INCLUDE ( to7_config )
- PORT_INCLUDE ( to9_fconfig )
PORT_INCLUDE ( to7_vconfig )
PORT_INCLUDE ( to7_mconfig )
INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::to9p(machine_config &config)
+void to9_state::to9p(machine_config &config)
{
to7(config);
- MCFG_MACHINE_START_OVERRIDE( thomson_state, to9p )
- MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to9p )
+ MCFG_MACHINE_START_OVERRIDE( to9_state, to9p )
+ MCFG_MACHINE_RESET_OVERRIDE( to9_state, to9p )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::to9p_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &to9_state::to9p_map);
- m_pia_sys->readpa_handler().set(FUNC(thomson_state::to8_sys_porta_in));
+ m_pia_sys->readpa_handler().set(FUNC(to9_state::to8_sys_porta_in));
m_pia_sys->readpb_handler().set_constant(0);
- m_pia_sys->writepa_handler().set(FUNC(thomson_state::to9_sys_porta_out));
- m_pia_sys->writepb_handler().set(FUNC(thomson_state::to8_sys_portb_out));
+ m_pia_sys->writepa_handler().set(FUNC(to9_state::to9_sys_porta_out));
+ m_pia_sys->writepb_handler().set(FUNC(to9_state::to8_sys_portb_out));
m_pia_sys->cb2_handler().set_nop();
m_pia_sys->irqa_handler().set_nop();
m_pia_sys->irqb_handler().set("mainfirq", FUNC(input_merger_device::in_w<1>));
CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy));
+ m_centronics->busy_handler().set(FUNC(to9_state::write_centronics_busy));
- m_mc6846->out_port().set(FUNC(thomson_state::to9p_timer_port_out));
- m_mc6846->in_port().set(FUNC(thomson_state::to9p_timer_port_in));
- m_mc6846->cp2().set(FUNC(thomson_state::to8_timer_cp2_out));
+ m_mc6846->out_port().set(FUNC(to9_state::to9p_timer_port_out));
+ m_mc6846->in_port().set(FUNC(to9_state::to9p_timer_port_in));
+ m_mc6846->cp2().set(FUNC(to9_state::to8_timer_cp2_out));
/* internal ram */
m_ram->set_default_size("512K");
@@ -1912,7 +1676,7 @@ void thomson_state::to9p(machine_config &config)
SOFTWARE_LIST(config.replace(), "to7_qd_list").set_compatible("to7_qd");
}
-COMP( 1986, to9p, 0, 0, to9p, to9p, thomson_state, empty_init, "Thomson", "TO9+", 0 )
+COMP( 1986, to9p, 0, 0, to9p, to9p, to9_state, empty_init, "Thomson", "TO9+", 0 )
@@ -1974,27 +1738,25 @@ a PC XT.
**********************************************************************/
-void thomson_state::mo6_map(address_map &map)
+void mo6_state::mo6_map(address_map &map)
{
- map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
- map(0x2000, 0x3fff).bankr(TO8_SYS_LO).w(FUNC(thomson_state::to8_sys_lo_w));
- map(0x4000, 0x5fff).bankr(TO8_SYS_HI).w(FUNC(thomson_state::to8_sys_hi_w));
- map(0x6000, 0x7fff).bankr(TO8_DATA_LO).w(FUNC(thomson_state::to8_data_lo_w));
- map(0x8000, 0x9fff).bankr(TO8_DATA_HI).w(FUNC(thomson_state::to8_data_hi_w));
- map(0xa000, 0xa7bf).bankr(THOM_FLOP_BANK);
+ map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(FUNC(mo6_state::to770_vram_w));
+ map(0x2000, 0x3fff).bankr(TO8_SYS_LO).w(FUNC(mo6_state::to8_sys_lo_w));
+ map(0x4000, 0x5fff).bankr(TO8_SYS_HI).w(FUNC(mo6_state::to8_sys_hi_w));
+ map(0x6000, 0x7fff).bankr(TO8_DATA_LO).w(FUNC(mo6_state::to8_data_lo_w));
+ map(0x8000, 0x9fff).bankr(TO8_DATA_HI).w(FUNC(mo6_state::to8_data_hi_w));
map(0xa7c0, 0xa7c3).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xa7cb, 0xa7cb).w(FUNC(thomson_state::mo6_ext_w));
+ map(0xa7cb, 0xa7cb).w(FUNC(mo6_state::mo6_ext_w));
map(0xa7cc, 0xa7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xa7d0, 0xa7d9).rw(FUNC(thomson_state::to7_floppy_r), FUNC(thomson_state::to7_floppy_w));
- map(0xa7da, 0xa7dd).rw(FUNC(thomson_state::mo6_vreg_r), FUNC(thomson_state::mo6_vreg_w));
- map(0xa7e4, 0xa7e7).rw(FUNC(thomson_state::mo6_gatearray_r), FUNC(thomson_state::mo6_gatearray_w));
+ map(0xa7da, 0xa7dd).rw(FUNC(mo6_state::mo6_vreg_r), FUNC(mo6_state::mo6_vreg_w));
+ map(0xa7e4, 0xa7e7).rw(FUNC(mo6_state::mo6_gatearray_r), FUNC(mo6_state::mo6_gatearray_w));
map(0xa7e8, 0xa7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
-/* map(0xa7f0, 0xa7f7).rw(FUNC(thomson_state::to9_ieee_r), FUNC(homson_state::to9_ieee_w));*/
- map(0xa7f2, 0xa7f3).rw(FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+/* map(0xa7f0, 0xa7f7).rw(FUNC(mo6_state::to9_ieee_r), FUNC(homson_state::to9_ieee_w));*/
+ map(0xa7f2, 0xa7f3).rw(FUNC(mo6_state::to7_midi_r), FUNC(mo6_state::to7_midi_w));
map(0xa7fe, 0xa7ff).rw(m_mea8000, FUNC(mea8000_device::read), FUNC(mea8000_device::write));
- map(0xb000, 0xbfff).bankr(MO6_CART_LO).w(FUNC(thomson_state::mo6_cartridge_w));
- map(0xc000, 0xefff).bankr(MO6_CART_HI).w(FUNC(thomson_state::mo6_cartridge_w));
+ map(0xb000, 0xbfff).bankr(MO6_CART_LO).w(FUNC(mo6_state::mo6_cartridge_w));
+ map(0xc000, 0xefff).bankr(MO6_CART_HI).w(FUNC(mo6_state::mo6_cartridge_w));
map(0xf000, 0xffff).bankr(TO8_BIOS_BANK);
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
@@ -2035,8 +1797,6 @@ ROM_START ( mo6 )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL ( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY5
ROM_END
ROM_START ( pro128 )
@@ -2066,8 +1826,6 @@ ROM_START ( pro128 )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL ( 0x00000, 0x10000, 0x39 )
-
- ROM_FLOPPY5
ROM_END
@@ -2211,7 +1969,6 @@ static INPUT_PORTS_START ( mo6 )
PORT_INCLUDE ( thom_game_port )
PORT_INCLUDE ( mo6_keyboard )
PORT_INCLUDE ( to7_config )
- PORT_INCLUDE ( to7_fconfig )
PORT_INCLUDE ( to7_vconfig )
INPUT_PORTS_END
@@ -2220,42 +1977,41 @@ static INPUT_PORTS_START ( pro128 )
PORT_INCLUDE ( thom_game_port )
PORT_INCLUDE ( pro128_keyboard )
PORT_INCLUDE ( to7_config )
- PORT_INCLUDE ( to7_fconfig )
PORT_INCLUDE ( to7_vconfig )
INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::mo6(machine_config &config)
+void mo6_state::mo6(machine_config &config)
{
- to7_base(config);
- MCFG_MACHINE_START_OVERRIDE( thomson_state, mo6 )
- MCFG_MACHINE_RESET_OVERRIDE( thomson_state, mo6 )
+ to7_base(config, true);
+ MCFG_MACHINE_START_OVERRIDE( mo6_state, mo6 )
+ MCFG_MACHINE_RESET_OVERRIDE( mo6_state, mo6 )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::mo6_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mo6_state::mo6_map);
m_cassette->set_formats(mo5_cassette_formats);
m_cassette->set_interface("mo_cass");
- m_pia_sys->readpa_handler().set(FUNC(thomson_state::mo6_sys_porta_in));
- m_pia_sys->readpb_handler().set(FUNC(thomson_state::mo6_sys_portb_in));
- m_pia_sys->writepa_handler().set(FUNC(thomson_state::mo6_sys_porta_out));
+ m_pia_sys->readpa_handler().set(FUNC(mo6_state::mo6_sys_porta_in));
+ m_pia_sys->readpb_handler().set(FUNC(mo6_state::mo6_sys_portb_in));
+ m_pia_sys->writepa_handler().set(FUNC(mo6_state::mo6_sys_porta_out));
m_pia_sys->writepb_handler().set("buzzer", FUNC(dac_bit_interface::data_w));
- m_pia_sys->ca2_handler().set(FUNC(thomson_state::mo5_set_cassette_motor));
- m_pia_sys->cb2_handler().set(FUNC(thomson_state::mo6_sys_cb2_out));
+ m_pia_sys->ca2_handler().set(FUNC(mo6_state::mo5_set_cassette_motor));
+ m_pia_sys->cb2_handler().set(FUNC(mo6_state::mo6_sys_cb2_out));
m_pia_sys->irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<1>)); // differs from TO
- m_pia_game->writepa_handler().set(FUNC(thomson_state::mo6_game_porta_out));
- m_pia_game->cb2_handler().set(FUNC(thomson_state::mo6_game_cb2_out));
+ m_pia_game->writepa_handler().set(FUNC(mo6_state::mo6_game_porta_out));
+ m_pia_game->cb2_handler().set(FUNC(mo6_state::mo6_game_cb2_out));
CENTRONICS(config, m_centronics, centronics_devices, "printer");
- m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy));
+ m_centronics->busy_handler().set(FUNC(mo6_state::write_centronics_busy));
OUTPUT_LATCH(config, m_cent_data_out);
m_centronics->set_output_latch(*m_cent_data_out);
- GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(thomson_state::mo5_cartridge));
+ GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(mo6_state::mo5_cartridge));
/* internal ram */
m_ram->set_default_size("128K");
@@ -2274,7 +2030,7 @@ void thomson_state::mo6(machine_config &config)
SOFTWARE_LIST(config, "mo5_qd_list").set_compatible("mo5_qd");
}
-void thomson_state::pro128(machine_config &config)
+void mo6_state::pro128(machine_config &config)
{
mo6(config);
config.device_remove("mo6_cass_list");
@@ -2290,9 +2046,9 @@ void thomson_state::pro128(machine_config &config)
SOFTWARE_LIST(config, "p128_flop_list").set_original("pro128_flop");
}
-COMP( 1986, mo6, 0, 0, mo6, mo6, thomson_state, empty_init, "Thomson", "MO6", 0 )
+COMP( 1986, mo6, 0, 0, mo6, mo6, mo6_state, empty_init, "Thomson", "MO6", 0 )
-COMP( 1986, pro128, mo6, 0, pro128, pro128, thomson_state, empty_init, "Olivetti / Thomson", "Prodest PC 128", 0 )
+COMP( 1986, pro128, mo6, 0, pro128, pro128, mo6_state, empty_init, "Olivetti / Thomson", "Prodest PC 128", 0 )
@@ -2325,31 +2081,31 @@ Here are the differences between the MO6 and MO5NR:
**********************************************************************/
-void thomson_state::mo5nr_map(address_map &map)
+void mo5nr_state::mo5nr_map(address_map &map)
{
- map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(FUNC(thomson_state::to770_vram_w));
- map(0x2000, 0x3fff).bankr(TO8_SYS_LO).w(FUNC(thomson_state::to8_sys_lo_w));
- map(0x4000, 0x5fff).bankr(TO8_SYS_HI).w(FUNC(thomson_state::to8_sys_hi_w));
- map(0x6000, 0x7fff).bankr(TO8_DATA_LO).w(FUNC(thomson_state::to8_data_lo_w));
- map(0x8000, 0x9fff).bankr(TO8_DATA_HI).w(FUNC(thomson_state::to8_data_hi_w));
- map(0xa000, 0xa7bf).bankr(THOM_FLOP_BANK);
+ map(0x0000, 0x1fff).bankr(THOM_VRAM_BANK).w(FUNC(mo5nr_state::to770_vram_w));
+ map(0x2000, 0x3fff).bankr(TO8_SYS_LO).w(FUNC(mo5nr_state::to8_sys_lo_w));
+ map(0x4000, 0x5fff).bankr(TO8_SYS_HI).w(FUNC(mo5nr_state::to8_sys_hi_w));
+ map(0x6000, 0x7fff).bankr(TO8_DATA_LO).w(FUNC(mo5nr_state::to8_data_lo_w));
+ map(0x8000, 0x9fff).bankr(TO8_DATA_HI).w(FUNC(mo5nr_state::to8_data_hi_w));
+ map(0xa000, 0xa7ff).view(m_extension_view);
map(0xa7c0, 0xa7c3).rw("pia_0", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xa7cb, 0xa7cb).w(FUNC(thomson_state::mo6_ext_w));
+ map(0xa7cb, 0xa7cb).w(FUNC(mo5nr_state::mo6_ext_w));
map(0xa7cc, 0xa7cf).rw("pia_1", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
- map(0xa7d0, 0xa7d9).rw(FUNC(thomson_state::mo5nr_net_r), FUNC(thomson_state::mo5nr_net_w));
- map(0xa7da, 0xa7dd).rw(FUNC(thomson_state::mo6_vreg_r), FUNC(thomson_state::mo6_vreg_w));
+ m_extension_view[1](0xa7d8, 0xa7d9).r(FUNC(mo5nr_state::id_r));
+ map(0xa7da, 0xa7dd).rw(FUNC(mo5nr_state::mo6_vreg_r), FUNC(mo5nr_state::mo6_vreg_w));
map(0xa7e1, 0xa7e1).r("cent_data_in", FUNC(input_buffer_device::read));
map(0xa7e1, 0xa7e1).w(m_cent_data_out, FUNC(output_latch_device::write));
- map(0xa7e3, 0xa7e3).rw(FUNC(thomson_state::mo5nr_prn_r), FUNC(thomson_state::mo5nr_prn_w));
- map(0xa7e4, 0xa7e7).rw(FUNC(thomson_state::mo6_gatearray_r), FUNC(thomson_state::mo6_gatearray_w));
+ map(0xa7e3, 0xa7e3).rw(FUNC(mo5nr_state::mo5nr_prn_r), FUNC(mo5nr_state::mo5nr_prn_w));
+ map(0xa7e4, 0xa7e7).rw(FUNC(mo5nr_state::mo6_gatearray_r), FUNC(mo5nr_state::mo6_gatearray_w));
map(0xa7e8, 0xa7eb).rw("acia", FUNC(mos6551_device::read), FUNC(mos6551_device::write));
-/* map(0xa7f0, 0xa7f7).rw(FUNC(thomson_state::to9_ieee_r), FUNC(homson_state::to9_ieee_w));*/
- map(0xa7f2, 0xa7f3).rw(FUNC(thomson_state::to7_midi_r), FUNC(thomson_state::to7_midi_w));
+/* map(0xa7f0, 0xa7f7).rw(FUNC(mo5nr_state::to9_ieee_r), FUNC(homson_state::to9_ieee_w));*/
+ map(0xa7f2, 0xa7f3).rw(FUNC(mo5nr_state::to7_midi_r), FUNC(mo5nr_state::to7_midi_w));
map(0xa7f8, 0xa7fb).rw("pia_3", FUNC(pia6821_device::read_alt), FUNC(pia6821_device::write_alt));
map(0xa7fe, 0xa7ff).rw(m_mea8000, FUNC(mea8000_device::read), FUNC(mea8000_device::write));
- map(0xb000, 0xbfff).bankr(MO6_CART_LO).w(FUNC(thomson_state::mo6_cartridge_w));
- map(0xc000, 0xefff).bankr(MO6_CART_HI).w(FUNC(thomson_state::mo6_cartridge_w));
+ map(0xb000, 0xbfff).bankr(MO6_CART_LO).w(FUNC(mo5nr_state::mo6_cartridge_w));
+ map(0xc000, 0xefff).bankr(MO6_CART_HI).w(FUNC(mo5nr_state::mo6_cartridge_w));
map(0xf000, 0xffff).bankr(TO8_BIOS_BANK);
/* 0x10000 - 0x1ffff: 64 KB external ROM cartridge */
@@ -2390,8 +2146,6 @@ ROM_START ( mo5nr )
ROM_REGION ( 0x10000, "cartridge", 0 )
ROM_FILL ( 0x00000, 0x10000, 0x39 ) /* TODO: network ROM */
-
- ROM_FLOPPY5
ROM_END
@@ -2485,44 +2239,84 @@ static INPUT_PORTS_START ( mo5nr )
PORT_INCLUDE ( thom_game_port )
PORT_INCLUDE ( mo5nr_keyboard )
PORT_INCLUDE ( to7_config )
- PORT_INCLUDE ( to7_fconfig )
PORT_INCLUDE ( to7_vconfig )
+
+ PORT_START ( "nanoreseau_config" )
+ PORT_DIPNAME(0x01, 0x01, "Extension selection") PORT_DIPLOCATION("SW03:1")
+ PORT_DIPSETTING(0x00, "Extension port")
+ PORT_DIPSETTING(0x01, "Internal networking")
+
+ PORT_DIPNAME(0x3e, 0x02, "Network ID") PORT_DIPLOCATION("SW03:2,3,4,5,6")
+ PORT_DIPSETTING(0x00, "0 (Master)")
+ PORT_DIPSETTING(0x02, "1")
+ PORT_DIPSETTING(0x04, "2")
+ PORT_DIPSETTING(0x06, "3")
+ PORT_DIPSETTING(0x08, "4")
+ PORT_DIPSETTING(0x0a, "5")
+ PORT_DIPSETTING(0x0c, "6")
+ PORT_DIPSETTING(0x0e, "7")
+ PORT_DIPSETTING(0x10, "8")
+ PORT_DIPSETTING(0x12, "9")
+ PORT_DIPSETTING(0x14, "10")
+ PORT_DIPSETTING(0x16, "11")
+ PORT_DIPSETTING(0x18, "12")
+ PORT_DIPSETTING(0x1a, "13")
+ PORT_DIPSETTING(0x1c, "14")
+ PORT_DIPSETTING(0x1e, "15")
+ PORT_DIPSETTING(0x20, "16")
+ PORT_DIPSETTING(0x22, "17")
+ PORT_DIPSETTING(0x24, "18")
+ PORT_DIPSETTING(0x26, "19")
+ PORT_DIPSETTING(0x28, "20")
+ PORT_DIPSETTING(0x2a, "21")
+ PORT_DIPSETTING(0x2c, "22")
+ PORT_DIPSETTING(0x2e, "23")
+ PORT_DIPSETTING(0x30, "24")
+ PORT_DIPSETTING(0x32, "25")
+ PORT_DIPSETTING(0x34, "26")
+ PORT_DIPSETTING(0x36, "27")
+ PORT_DIPSETTING(0x38, "28")
+ PORT_DIPSETTING(0x3a, "29")
+ PORT_DIPSETTING(0x3c, "30")
+ PORT_DIPSETTING(0x3e, "31")
INPUT_PORTS_END
/* ------------ driver ------------ */
-void thomson_state::mo5nr(machine_config &config)
+void mo5nr_state::mo5nr(machine_config &config)
{
- to7_base(config);
- MCFG_MACHINE_START_OVERRIDE( thomson_state, mo5nr )
- MCFG_MACHINE_RESET_OVERRIDE( thomson_state, mo5nr )
+ to7_base(config, true);
+ MCFG_MACHINE_START_OVERRIDE( mo5nr_state, mo5nr )
+ MCFG_MACHINE_RESET_OVERRIDE( mo5nr_state, mo5nr )
- m_maincpu->set_addrmap(AS_PROGRAM, &thomson_state::mo5nr_map);
+ m_maincpu->set_addrmap(AS_PROGRAM, &mo5nr_state::mo5nr_map);
m_cassette->set_formats(mo5_cassette_formats);
m_cassette->set_interface("mo_cass");
- m_pia_sys->readpa_handler().set(FUNC(thomson_state::mo6_sys_porta_in));
- m_pia_sys->readpb_handler().set(FUNC(thomson_state::mo5nr_sys_portb_in));
- m_pia_sys->writepa_handler().set(FUNC(thomson_state::mo5nr_sys_porta_out));
+ m_pia_sys->readpa_handler().set(FUNC(mo5nr_state::mo6_sys_porta_in));
+ m_pia_sys->readpb_handler().set(FUNC(mo5nr_state::mo5nr_sys_portb_in));
+ m_pia_sys->writepa_handler().set(FUNC(mo5nr_state::mo5nr_sys_porta_out));
m_pia_sys->writepb_handler().set("buzzer", FUNC(dac_bit_interface::data_w));
- m_pia_sys->ca2_handler().set(FUNC(thomson_state::mo5_set_cassette_motor));
- m_pia_sys->cb2_handler().set(FUNC(thomson_state::mo6_sys_cb2_out));
+ m_pia_sys->ca2_handler().set(FUNC(mo5nr_state::mo5_set_cassette_motor));
+ m_pia_sys->cb2_handler().set(FUNC(mo5nr_state::mo6_sys_cb2_out));
m_pia_sys->irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<1>)); // differs from TO
- m_pia_game->writepa_handler().set(FUNC(thomson_state::mo6_game_porta_out));
+ m_pia_game->writepa_handler().set(FUNC(mo5nr_state::mo6_game_porta_out));
CENTRONICS(config, m_centronics, centronics_devices, "printer");
m_centronics->set_data_input_buffer("cent_data_in");
- m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy));
+ m_centronics->busy_handler().set(FUNC(mo5nr_state::write_centronics_busy));
INPUT_BUFFER(config, "cent_data_in");
OUTPUT_LATCH(config, m_cent_data_out);
m_centronics->set_output_latch(*m_cent_data_out);
- GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(thomson_state::mo5_cartridge));
+ GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(mo5nr_state::mo5_cartridge));
+
+ NANORESEAU_MO(config, m_nanoreseau, 0, true);
/* internal ram */
m_ram->set_default_size("128K");
@@ -2541,4 +2335,4 @@ void thomson_state::mo5nr(machine_config &config)
SOFTWARE_LIST(config, "mo5_qd_list").set_compatible("mo5_qd");
}
-COMP( 1986, mo5nr, 0, 0, mo5nr, mo5nr, thomson_state, empty_init, "Thomson", "MO5 NR", 0 )
+COMP( 1986, mo5nr, 0, 0, mo5nr, mo5nr, mo5nr_state, empty_init, "Thomson", "MO5 NR", 0 )