summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/mame/drivers/ptcsol.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/mame/drivers/ptcsol.cpp b/src/mame/drivers/ptcsol.cpp
index 2c78dabb028..78d5e9a918e 100644
--- a/src/mame/drivers/ptcsol.cpp
+++ b/src/mame/drivers/ptcsol.cpp
@@ -148,6 +148,7 @@ public:
sol20_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
+ , m_screen(*this, "screen")
, m_cass1(*this, "cassette")
, m_cass2(*this, "cassette2")
, m_uart(*this, "uart")
@@ -201,6 +202,7 @@ private:
emu_timer *m_cassette_timer;
cassette_image_device *cassette_device_image();
required_device<cpu_device> m_maincpu;
+ required_device<screen_device> m_screen;
required_device<cassette_image_device> m_cass1;
required_device<cassette_image_device> m_cass2;
required_device<ay31015_device> m_uart;
@@ -542,6 +544,13 @@ static INPUT_PORTS_START( sol20 )
PORT_CONFNAME( 0x02, 0x00, "Character Rom")
PORT_CONFSETTING( 0x00, "6574")
PORT_CONFSETTING( 0x02, "6575")
+ PORT_CONFNAME( 0x04, 0x04, "Field Rate") // modification described on page III-40 of Sol Systems Manual
+ PORT_CONFSETTING( 0x00, "50 Hz")
+ PORT_CONFSETTING( 0x04, "60 Hz")
+ PORT_CONFNAME( 0x18, 0x18, "CPU Clock")
+ PORT_CONFSETTING( 0x18, "2.04 MHz (8080A)")
+ PORT_CONFSETTING( 0x10, "2.36 MHz (8080A-2)")
+ PORT_CONFSETTING( 0x08, "2.86 MHz (8080A-1)")
INPUT_PORTS_END
@@ -609,6 +618,13 @@ void sol20_state::machine_reset()
m_rs232->write_dtr(0);
m_rs232->write_rts(1);
+
+ int lines = BIT(m_iop_config->read(), 2) ? 260 : 312;
+ m_screen->configure(918, lines, m_screen->visible_area(), attotime::from_ticks(918 * lines, 14.318181_MHz_XTAL).as_attoseconds());
+
+ // set CPU speed (TODO: also present on bus pin 49)
+ double freq = (14.318181_MHz_XTAL / (4 + ((m_iop_config->read() >> 3) & 3))).dvalue();
+ m_maincpu->set_unscaled_clock(freq);
}
void sol20_state::init_sol20()
@@ -718,7 +734,7 @@ void sol20_state::kbd_put(u8 data)
MACHINE_CONFIG_START(sol20_state::sol20)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", I8080, 14.318181_MHz_XTAL / 7) // divider selectable as 5, 6 or 7 through jumpers
+ MCFG_DEVICE_ADD("maincpu", I8080A, 14.318181_MHz_XTAL / 7) // divider selectable as 5, 6 or 7 through jumpers
MCFG_DEVICE_PROGRAM_MAP(sol20_mem)
MCFG_DEVICE_IO_MAP(sol20_io)
MCFG_I8085A_INTE(WRITELINE("speaker", speaker_sound_device, level_w))