summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/machine/mos6526.c110
-rw-r--r--src/emu/machine/mos6526.h36
-rw-r--r--src/mess/drivers/c128.c394
-rw-r--r--src/mess/machine/c1571.c475
-rw-r--r--src/mess/machine/c1571.h64
5 files changed, 672 insertions, 407 deletions
diff --git a/src/emu/machine/mos6526.c b/src/emu/machine/mos6526.c
index 4f04016f7b7..03875ccb796 100644
--- a/src/emu/machine/mos6526.c
+++ b/src/emu/machine/mos6526.c
@@ -54,20 +54,20 @@ enum
// interrupt control register
-#define ICR_TA 0x01
-#define ICR_TB 0x02
-#define ICR_ALARM 0x04
-#define ICR_SP 0x08
-#define ICR_FLAG 0x10
+#define ICR_TA 0x01
+#define ICR_TB 0x02
+#define ICR_ALARM 0x04
+#define ICR_SP 0x08
+#define ICR_FLAG 0x10
// interrupt mask register
-#define IMR_TA BIT(m_imr, 0)
-#define IMR_TB BIT(m_imr, 1)
-#define IMR_ALARM BIT(m_imr, 2)
-#define IMR_SP BIT(m_imr, 3)
-#define IMR_FLAG BIT(m_imr, 4)
-#define IMR_SET BIT(data, 7)
+#define IMR_TA BIT(m_imr, 0)
+#define IMR_TB BIT(m_imr, 1)
+#define IMR_ALARM BIT(m_imr, 2)
+#define IMR_SP BIT(m_imr, 3)
+#define IMR_FLAG BIT(m_imr, 4)
+#define IMR_SET BIT(data, 7)
// control register A
@@ -77,15 +77,15 @@ enum
CRA_INMODE_CNT
};
-#define CRA_START 0x01
-#define CRA_STARTED BIT(m_cra, 0)
-#define CRA_PBON BIT(m_cra, 1)
-#define CRA_OUTMODE BIT(m_cra, 2)
-#define CRA_RUNMODE BIT(m_cra, 3)
-#define CRA_LOAD BIT(m_cra, 4)
-#define CRA_INMODE BIT(m_cra, 5)
-#define CRA_SPMODE BIT(m_cra, 6)
-#define CRA_TODIN BIT(m_cra, 7)
+#define CRA_START 0x01
+#define CRA_STARTED BIT(m_cra, 0)
+#define CRA_PBON BIT(m_cra, 1)
+#define CRA_OUTMODE BIT(m_cra, 2)
+#define CRA_RUNMODE BIT(m_cra, 3)
+#define CRA_LOAD BIT(m_cra, 4)
+#define CRA_INMODE BIT(m_cra, 5)
+#define CRA_SPMODE BIT(m_cra, 6)
+#define CRA_TODIN BIT(m_cra, 7)
// control register B
@@ -97,14 +97,14 @@ enum
CRB_INMODE_CNT_TA
};
-#define CRB_START 0x01
-#define CRB_STARTED BIT(m_crb, 0)
-#define CRB_PBON BIT(m_crb, 1)
-#define CRB_OUTMODE BIT(m_crb, 2)
-#define CRB_RUNMODE BIT(m_crb, 3)
-#define CRB_LOAD BIT(m_crb, 4)
-#define CRB_INMODE ((m_crb & 0x60) >> 5)
-#define CRB_ALARM BIT(m_crb, 7)
+#define CRB_START 0x01
+#define CRB_STARTED BIT(m_crb, 0)
+#define CRB_PBON BIT(m_crb, 1)
+#define CRB_OUTMODE BIT(m_crb, 2)
+#define CRB_RUNMODE BIT(m_crb, 3)
+#define CRB_LOAD BIT(m_crb, 4)
+#define CRB_INMODE ((m_crb & 0x60) >> 5)
+#define CRB_ALARM BIT(m_crb, 7)
@@ -146,14 +146,14 @@ void mos6526_device::device_config_complete()
// or initialize to defaults if none provided
else
{
- memset(&m_out_irq_cb, 0, sizeof(m_out_irq_cb));
- memset(&m_out_pc_cb, 0, sizeof(m_out_pc_cb));
- memset(&m_out_cnt_cb, 0, sizeof(m_out_cnt_cb));
- memset(&m_out_sp_cb, 0, sizeof(m_out_sp_cb));
- memset(&m_in_pa_cb, 0, sizeof(m_in_pa_cb));
- memset(&m_out_pa_cb, 0, sizeof(m_out_pa_cb));
- memset(&m_in_pb_cb, 0, sizeof(m_in_pb_cb));
- memset(&m_out_pb_cb, 0, sizeof(m_out_pb_cb));
+ memset(&m_out_irq_cb, 0, sizeof(m_out_irq_cb));
+ memset(&m_out_pc_cb, 0, sizeof(m_out_pc_cb));
+ memset(&m_out_cnt_cb, 0, sizeof(m_out_cnt_cb));
+ memset(&m_out_sp_cb, 0, sizeof(m_out_sp_cb));
+ memset(&m_in_pa_cb, 0, sizeof(m_in_pa_cb));
+ memset(&m_out_pa_cb, 0, sizeof(m_out_pa_cb));
+ memset(&m_in_pb_cb, 0, sizeof(m_in_pb_cb));
+ memset(&m_out_pb_cb, 0, sizeof(m_out_pb_cb));
}
}
@@ -264,10 +264,10 @@ inline UINT8 mos6526_device::bcd_increment(UINT8 value)
inline void mos6526_device::clock_tod()
{
- UINT8 subsecond = (UINT8) (m_tod >> 0);
- UINT8 second = (UINT8) (m_tod >> 8);
- UINT8 minute = (UINT8) (m_tod >> 16);
- UINT8 hour = (UINT8) (m_tod >> 24);
+ UINT8 subsecond = (UINT8) (m_tod >> 0);
+ UINT8 second = (UINT8) (m_tod >> 8);
+ UINT8 minute = (UINT8) (m_tod >> 16);
+ UINT8 hour = (UINT8) (m_tod >> 24);
m_tod_count++;
@@ -305,10 +305,10 @@ inline void mos6526_device::clock_tod()
}
}
- m_tod = (((UINT32) subsecond) << 0)
- | (((UINT32) second) << 8)
- | (((UINT32) minute) << 16)
- | (((UINT32) hour) << 24);
+ m_tod = (((UINT32) subsecond) << 0)
+ | (((UINT32) second) << 8)
+ | (((UINT32) minute) << 16)
+ | (((UINT32) hour) << 24);
}
@@ -631,28 +631,28 @@ inline void mos6526_device::synchronize()
//-------------------------------------------------
mos6526_device::mos6526_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant)
- : device_t(mconfig, type, name, tag, owner, clock),
- device_execute_interface(mconfig, *this),
- m_icount(0),
- m_variant(variant)
+ : device_t(mconfig, type, name, tag, owner, clock),
+ device_execute_interface(mconfig, *this),
+ m_icount(0),
+ m_variant(variant)
{
}
mos6526_device::mos6526_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, MOS6526, "MOS6526", tag, owner, clock),
- device_execute_interface(mconfig, *this),
- m_icount(0),
- m_variant(TYPE_6526)
+ : device_t(mconfig, MOS6526, "MOS6526", tag, owner, clock),
+ device_execute_interface(mconfig, *this),
+ m_icount(0),
+ m_variant(TYPE_6526)
{ }
mos6526a_device::mos6526a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : mos6526_device(mconfig, MOS6526A, "MOS6526A", tag, owner, clock, TYPE_6526A) { }
+ : mos6526_device(mconfig, MOS6526A, "MOS6526A", tag, owner, clock, TYPE_6526A) { }
mos8520_device::mos8520_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : mos6526_device(mconfig, MOS8520, "MOS8520", tag, owner, clock, TYPE_8520) { }
+ : mos6526_device(mconfig, MOS8520, "MOS8520", tag, owner, clock, TYPE_8520) { }
mos5710_device::mos5710_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : mos6526_device(mconfig, MOS5710, "MOS5710", tag, owner, clock, TYPE_5710) { }
+ : mos6526_device(mconfig, MOS5710, "MOS5710", tag, owner, clock, TYPE_5710) { }
//-------------------------------------------------
diff --git a/src/emu/machine/mos6526.h b/src/emu/machine/mos6526.h
index b31352f82c5..84188907ff8 100644
--- a/src/emu/machine/mos6526.h
+++ b/src/emu/machine/mos6526.h
@@ -28,6 +28,32 @@
TOD 19 | | 22 R/W
Vcc 20 |_____________| 21 _IRQ
+ _____ _____
+ FCO* 1 |* \_/ | 48 FDO*
+ TED 2 | | 47 FCI*
+ phi0 3 | | 46 FDI*
+ CLKIN 4 | | 45 IRQ
+ CTRLO 5 | | 44 RSET
+ CTRLI 6 | | 43
+ phi2 7 | | 42
+ D7 8 | | 41 INDEX*
+ D6 9 | | 40 WG2*
+ D5 10 | | 39 WPRT*
+ D4 11 | | 38 RPULSE
+ GND 12 | MOS5710 | 37 Q
+ Vcc 13 | | 36 Vcc
+ D3 14 | | 35 GND
+ D2 15 | | 34 CS3*
+ D1 16 | | 33 CS2*
+ D0 17 | | 32 CS1*
+ A15 18 | | 31 R/W*
+ A14 19 | | 30 OSC
+ A13 20 | | 29 XTL1
+ A12 21 | | 28 XTL2
+ A10 22 | | 27 A0
+ A4 23 | | 26 A1
+ A3 24 |_____________| 25 A2
+
**********************************************************************/
#pragma once
@@ -137,7 +163,7 @@ protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
virtual void execute_run();
- int m_icount;
+ int m_icount;
int m_variant;
int m_tod_clock;
@@ -157,10 +183,10 @@ protected:
inline void write_tod(int offset, UINT8 data);
inline void synchronize();
- devcb_resolved_write_line m_out_irq_func;
- devcb_resolved_write_line m_out_pc_func;
- devcb_resolved_write_line m_out_cnt_func;
- devcb_resolved_write_line m_out_sp_func;
+ devcb_resolved_write_line m_out_irq_func;
+ devcb_resolved_write_line m_out_pc_func;
+ devcb_resolved_write_line m_out_cnt_func;
+ devcb_resolved_write_line m_out_sp_func;
devcb_resolved_read8 m_in_pa_func;
devcb_resolved_write8 m_out_pa_func;
devcb_resolved_read8 m_in_pb_func;
diff --git a/src/mess/drivers/c128.c b/src/mess/drivers/c128.c
index d3b872d692e..b71eea53bd8 100644
--- a/src/mess/drivers/c128.c
+++ b/src/mess/drivers/c128.c
@@ -3,8 +3,6 @@
TODO:
- connect CAPS LOCK to charom A12 on international variants
- - DCR models won't boot with 1571CR drive
- - fix fast serial
- remove frame interrupt handler
- expansion DMA
@@ -502,33 +500,33 @@ static INPUT_PORTS_START( c128 )
PORT_INCLUDE( common_cbm_keyboard )
PORT_START( "K0" )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("TAB") PORT_CODE(KEYCODE_F6) PORT_CHAR('\t')
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_CHAR(UCHAR_MAMEKEY(1_PAD))
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) PORT_CHAR(UCHAR_MAMEKEY(7_PAD))
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_4_PAD) PORT_CHAR(UCHAR_MAMEKEY(4_PAD))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_CHAR(UCHAR_MAMEKEY(2_PAD))
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("TAB") PORT_CODE(KEYCODE_F6) PORT_CHAR('\t')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_CHAR(UCHAR_MAMEKEY(5_PAD))
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD) PORT_CHAR(UCHAR_MAMEKEY(8_PAD))
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("HELP") PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(PGUP))
PORT_START( "K1" )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_CHAR(UCHAR_MAMEKEY(3_PAD))
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR(UCHAR_MAMEKEY(9_PAD))
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_CHAR(UCHAR_MAMEKEY(6_PAD))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ENTER_PAD) PORT_CHAR(UCHAR_MAMEKEY(ENTER_PAD))
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("LINE FEED") PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(PGDN))
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(ESC))
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(MINUS_PAD))
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ESC") PORT_CODE(KEYCODE_F5) PORT_CHAR(UCHAR_MAMEKEY(ESC))
PORT_START( "K2" )
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("NO SCROLL") PORT_CODE(KEYCODE_F12) PORT_TOGGLE
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_RIGHT) PORT_CHAR(UCHAR_MAMEKEY(RIGHT))
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT))
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN))
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_UP) PORT_CHAR(UCHAR_MAMEKEY(UP))
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR(UCHAR_MAMEKEY(DEL_PAD))
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR(UCHAR_MAMEKEY(0_PAD))
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ALT") PORT_CODE(KEYCODE_F7) PORT_CHAR(UCHAR_MAMEKEY(LALT))
PORT_START( "SPECIAL" )
@@ -549,34 +547,34 @@ static INPUT_PORTS_START( c128ger )
PORT_INCLUDE( c128 )
PORT_MODIFY( "ROW1" )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z { Y }") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 # { 3 Paragraph }") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z { Y }") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 # { 3 Paragraph }") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
PORT_MODIFY( "ROW3" )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y { Z }") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 ' { 7 / }") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Y { Z }") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 ' { 7 / }") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
PORT_MODIFY( "ROW4" )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0 { = }") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0 { = }") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
PORT_MODIFY( "ROW5" )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", < { ; }") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", < { ; }") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Paragraph \xE2\x86\x91 { \xc3\xbc }") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(0x00A7) PORT_CHAR(0x2191)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": [ { \xc3\xa4 }") PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('[')
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". > { : }") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("- { ' ` }") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("+ { \xc3\x9f ? }") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('+')
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": [ { \xc3\xa4 }") PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('[')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". > { : }") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("- { ' ` }") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("+ { \xc3\x9f ? }") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('+')
PORT_MODIFY( "ROW6" )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ? { - _ }") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Sum Pi { ] \\ }") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x03A3) PORT_CHAR(0x03C0)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("= { # ' }") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('=')
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; ] { \xc3\xb6 }") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR(']')
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("* ` { + * }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('*') PORT_CHAR('`')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ { [ \xE2\x86\x91 }") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('\\')
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ? { - _ }") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Sum Pi { ] \\ }") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x03A3) PORT_CHAR(0x03C0)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("= { # ' }") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('=')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; ] { \xc3\xb6 }") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR(']')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("* ` { + * }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('*') PORT_CHAR('`')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ { [ \xE2\x86\x91 }") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('\\')
PORT_MODIFY( "ROW7" )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_ { < > }") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('_')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_ { < > }") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('_')
PORT_MODIFY( "SPECIAL" )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("ASCII/DIN") PORT_CODE(KEYCODE_F8) PORT_TOGGLE PORT_CHANGED_MEMBER(DEVICE_SELF, c128_state, caps_lock, 0)
@@ -591,47 +589,47 @@ static INPUT_PORTS_START( c128fra )
PORT_INCLUDE( c128 )
PORT_MODIFY( "ROW1" )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z { W }") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 $ { ' 4 }") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A { Q }") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W { Z }") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 # { \" 3 }") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z { W }") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 $ { ' 4 }") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("A { Q }") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W { Z }") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 # { \" 3 }") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
PORT_MODIFY( "ROW2" )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 & { Paragraph 6 }") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5 % { ( 5 }") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 & { Paragraph 6 }") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5 % { ( 5 }") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
PORT_MODIFY( "ROW3" )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 ( { ! 8 }") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 ' { \xc3\xa8 7 }") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 ( { ! 8 }") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 ' { \xc3\xa8 7 }") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
PORT_MODIFY( "ROW4" )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("K Large- { \\ }") PORT_CODE(KEYCODE_K) PORT_CHAR('K')
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M Large-/ { , ? }") PORT_CODE(KEYCODE_M) PORT_CHAR('M')
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0 { \xc3\xa0 0 }") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 ) { \xc3\xa7 9 }") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("K Large- { \\ }") PORT_CODE(KEYCODE_K) PORT_CHAR('K')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M Large-/ { , ? }") PORT_CODE(KEYCODE_M) PORT_CHAR('M')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0 { \xc3\xa0 0 }") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 ) { \xc3\xa7 9 }") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
PORT_MODIFY( "ROW5" )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", < { ; . }") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@ \xc3\xbb { ^ \xc2\xa8 }") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@') PORT_CHAR(0x00FB)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": [ { \xc3\xb9 % }") PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('[')
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". > { : / }") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("- \xc2\xb0 { - _ }") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('\xB0')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("+ \xc3\xab { ) \xc2\xb0 }") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('+') PORT_CHAR(0x00EB)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", < { ; . }") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@ \xc3\xbb { ^ \xc2\xa8 }") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@') PORT_CHAR(0x00FB)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": [ { \xc3\xb9 % }") PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('[')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". > { : / }") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("- \xc2\xb0 { - _ }") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('\xB0')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("+ \xc3\xab { ) \xc2\xb0 }") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('+') PORT_CHAR(0x00EB)
PORT_MODIFY( "ROW6" )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ? { = + }") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91 Pi { * ] }") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x2191) PORT_CHAR(0x03C0)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("= {\xE2\x86\x91 \\ }") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('=')
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; ] { M Large-/ }") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR(']')
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("* ` { $ [ }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('*') PORT_CHAR('`')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ { @ # }") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\')
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ? { = + }") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91 Pi { * ] }") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x2191) PORT_CHAR(0x03C0)
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("= {\xE2\x86\x91 \\ }") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('=')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; ] { M Large-/ }") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR(']')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("* ` { $ [ }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('*') PORT_CHAR('`')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ { @ # }") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\')
PORT_MODIFY( "ROW7" )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q { A }") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 \" { \xc3\xa9 2 }") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_ { < > }") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('_')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 ! { & 1 }") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Q { A }") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 \" { \xc3\xa9 2 }") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_ { < > }") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('_')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 ! { & 1 }") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
PORT_MODIFY( "SPECIAL" )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("CAPS LOCK ASCII/CC") PORT_CODE(KEYCODE_F8) PORT_TOGGLE PORT_CHANGED_MEMBER(DEVICE_SELF, c128_state, caps_lock, 0)
@@ -646,44 +644,44 @@ static INPUT_PORTS_START( c128ita )
PORT_INCLUDE( c128 )
PORT_MODIFY( "ROW1" )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z { W }") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 $ { ' 4 }") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W { Z }") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 # { \" 3 }") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Z { W }") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("4 $ { ' 4 }") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("W { Z }") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 # { \" 3 }") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
PORT_MODIFY( "ROW2" )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 & { _ 6 }") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5 % { ( 5 }") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("6 & { _ 6 }") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("5 % { ( 5 }") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
PORT_MODIFY( "ROW3" )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 ( { & 8 }") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 ' { \xc3\xa8 7 }") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("8 ( { & 8 }") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 ' { \xc3\xa8 7 }") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
PORT_MODIFY( "ROW4" )
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M Large-/ { , ? }") PORT_CODE(KEYCODE_M) PORT_CHAR('M')
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0 { \xc3\xa0 0 }") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 ) { \xc3\xa7 9 }") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("M Large-/ { , ? }") PORT_CODE(KEYCODE_M) PORT_CHAR('M')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("0 { \xc3\xa0 0 }") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("9 ) { \xc3\xa7 9 }") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
PORT_MODIFY( "ROW5" )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", < { ; . }") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(", < { ; . }") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@ \xc3\xbb { \xc3\xac = }") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('@') PORT_CHAR(0x00FB)
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": [ { \xc3\xb9 % }") PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('[')
- PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". > { : / }") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("- \xc2\xb0 { - + }") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('\xb0')
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": [ { \xc3\xb9 % }") PORT_CODE(KEYCODE_COLON) PORT_CHAR(':') PORT_CHAR('[')
+ PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(". > { : / }") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("- \xc2\xb0 { - + }") PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('-') PORT_CHAR('\xb0')
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("+ \xc3\xab { ) \xc2\xb0 }") PORT_CODE(KEYCODE_MINUS) PORT_CHAR('+') PORT_CHAR(0x00EB)
PORT_MODIFY( "ROW6" )
- PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ? { \xc3\xb2 ! }") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91 Pi { * ] }") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x2191) PORT_CHAR(0x03C0)
+ PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("/ ? { \xc3\xb2 ! }") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xE2\x86\x91 Pi { * ] }") PORT_CODE(KEYCODE_DEL) PORT_CHAR(0x2191) PORT_CHAR(0x03C0)
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("= { \xE2\x86\x91 \\ }") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('=')
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; ] { M }") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR(']')
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("* ` { $ [ }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('*') PORT_CHAR('`')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ { @ # }") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('\\')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; ] { M }") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR(';') PORT_CHAR(']')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("* ` { $ [ }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('*') PORT_CHAR('`')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\\ { @ # }") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR('\\')
PORT_MODIFY( "ROW7" )
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 \" { \xc3\xa9 2 }") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_ { < > }") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('_')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 ! { \xc2\xa3 1 }") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("2 \" { \xc3\xa9 2 }") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_ { < > }") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('_')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("1 ! { \xc2\xa3 1 }") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
INPUT_PORTS_END
#endif
@@ -695,25 +693,25 @@ static INPUT_PORTS_START( c128swe )
PORT_INCLUDE( c128 )
PORT_MODIFY( "ROW1" )
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 # { 3 Paragraph }") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("3 # { 3 Paragraph }") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
PORT_MODIFY( "ROW3" )
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 ' { 7 / }") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("7 ' { 7 / }") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
PORT_MODIFY( "ROW5" )
- PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("] { \xc3\xa2 }") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(']')
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("[ { \xc3\xa4 }") PORT_CODE(KEYCODE_COLON) PORT_CHAR('[')
- PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
+ PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("] { \xc3\xa2 }") PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR(']')
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("[ { \xc3\xa4 }") PORT_CODE(KEYCODE_COLON) PORT_CHAR('[')
+ PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-')
PORT_MODIFY( "ROW6" )
- PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; +") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(';') PORT_CHAR('+')
- PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xc2\xa3 { \xc3\xb6 }") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\xA3')
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('@')
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": *") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR(':') PORT_CHAR('*')
+ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("; +") PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR(';') PORT_CHAR('+')
+ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("\xc2\xa3 { \xc3\xb6 }") PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\xA3')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("@") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR('@')
+ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME(": *") PORT_CODE(KEYCODE_BACKSLASH2) PORT_CHAR(':') PORT_CHAR('*')
PORT_MODIFY( "ROW7" )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_ { < > }") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('_')
+ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("_ { < > }") PORT_CODE(KEYCODE_TILDE) PORT_CHAR('_')
PORT_MODIFY( "SPECIAL" )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("CAPS LOCK ASCII/CC") PORT_CODE(KEYCODE_F8) PORT_TOGGLE PORT_CHANGED_MEMBER(DEVICE_SELF, c128_state, caps_lock, 0)
@@ -893,18 +891,18 @@ READ8_MEMBER( c128_state::cia1_pa_r )
{
/*
- bit description
+ bit description
- PA0 COL0, JOY B0
- PA1 COL1, JOY B1
- PA2 COL2, JOY B2
- PA3 COL3, JOY B3
- PA4 COL4, BTNB
- PA5 COL5
- PA6 COL6
- PA7 COL7
+ PA0 COL0, JOY B0
+ PA1 COL1, JOY B1
+ PA2 COL2, JOY B2
+ PA3 COL3, JOY B3
+ PA4 COL4, BTNB
+ PA5 COL5
+ PA6 COL6
+ PA7 COL7
- */
+ */
UINT8 cia0portb = m_cia1->pb_r();
@@ -915,27 +913,27 @@ READ8_MEMBER( c128_state::cia1_pb_r )
{
/*
- bit description
+ bit description
- PB0 JOY A0
- PB1 JOY A1
- PB2 JOY A2
- PB3 JOY A3
- PB4 BTNA/_LP
- PB5
- PB6
- PB7
+ PB0 JOY A0
+ PB1 JOY A1
+ PB2 JOY A2
+ PB3 JOY A3
+ PB4 BTNA/_LP
+ PB5
+ PB6
+ PB7
- */
+ */
UINT8 data = 0xff;
UINT8 cia0porta = m_cia1->pa_r();
data &= cbm_common_cia0_port_b_r(m_cia1, cia0porta);
- if (!BIT(m_vic_k, 0)) data &= ~ioport("K0")->read();
- if (!BIT(m_vic_k, 1)) data &= ~ioport("K1")->read();
- if (!BIT(m_vic_k, 2)) data &= ~ioport("K2")->read();
+ if (!BIT(m_vic_k, 0)) data &= ~ioport("K0")->read();
+ if (!BIT(m_vic_k, 1)) data &= ~ioport("K1")->read();
+ if (!BIT(m_vic_k, 2)) data &= ~ioport("K2")->read();
return data;
}
@@ -944,18 +942,18 @@ WRITE8_MEMBER( c128_state::cia1_pb_w )
{
/*
- bit description
+ bit description
- PB0 ROW0
- PB1 ROW1
- PB2 ROW2
- PB3 ROW3
- PB4 ROW4
- PB5 ROW5
- PB6 ROW6
- PB7 ROW7
+ PB0 ROW0
+ PB1 ROW1
+ PB2 ROW2
+ PB3 ROW3
+ PB4 ROW4
+ PB5 ROW5
+ PB6 ROW6
+ PB7 ROW7
- */
+ */
m_vic->lp_w(BIT(data, 4));
}
@@ -1002,18 +1000,18 @@ READ8_MEMBER( c128_state::cia2_pa_r )
{
/*
- bit description
+ bit description
- PA0
- PA1
- PA2 USER PORT
- PA3
- PA4
- PA5
- PA6 CLK
- PA7 DATA
+ PA0
+ PA1
+ PA2 USER PORT
+ PA3
+ PA4
+ PA5
+ PA6 CLK
+ PA7 DATA
- */
+ */
UINT8 data = 0;
@@ -1031,18 +1029,18 @@ WRITE8_MEMBER( c128_state::cia2_pa_w )
{
/*
- bit description
+ bit description
- PA0 _VA14
- PA1 _VA15
- PA2 USER PORT
- PA3 ATN OUT
- PA4 CLK OUT
- PA5 DATA OUT
- PA6
- PA7
+ PA0 _VA14
+ PA1 _VA15
+ PA2 USER PORT
+ PA3 ATN OUT
+ PA4 CLK OUT
+ PA5 DATA OUT
+ PA6
+ PA7
- */
+ */
// VIC banking
m_va14 = BIT(data, 0);
@@ -1080,17 +1078,17 @@ READ8_MEMBER( c128_state::cpu_r)
{
/*
- bit description
+ bit description
- P0 1
- P1 1
- P2 1
- P3
- P4 CASS SENSE
- P5
- P6 CAPS LOCK
+ P0 1
+ P1 1
+ P2 1
+ P3
+ P4 CASS SENSE
+ P5
+ P6 CAPS LOCK
- */
+ */
UINT8 data = 0x07;
@@ -1107,19 +1105,19 @@ WRITE8_MEMBER( c128_state::cpu_w )
{
/*
- bit description
+ bit description
- P0 LORAM
- P1 HIRAM
- P2 CHAREN
- P3 CASS WRT
- P4
- P5 CASS MOTOR
- P6
+ P0 LORAM
+ P1 HIRAM
+ P2 CHAREN
+ P3 CASS WRT
+ P4
+ P5 CASS MOTOR
+ P6
- */
+ */
- // memory banking
+ // memory banking
m_loram = BIT(data, 0);
m_hiram = BIT(data, 1);
m_charen = BIT(data, 2);
@@ -1448,7 +1446,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( c128dcr, ntsc )
MCFG_CBM_IEC_BUS_ADD(cbm_iec_intf)
MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL, NULL)
- MCFG_CBM_IEC_SLOT_ADD("iec8", 8, c128dcr_iec_devices, "c1571cr", NULL)
+ MCFG_CBM_IEC_SLOT_ADD("iec8", 8, c128dcr_iec_devices, "c1571", NULL) // TODO c1571cr
MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, NULL, NULL)
MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, NULL, NULL)
MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, NULL, NULL)
@@ -1554,7 +1552,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( c128dcrp, pal )
MCFG_CBM_IEC_BUS_ADD(cbm_iec_intf)
MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL, NULL)
- MCFG_CBM_IEC_SLOT_ADD("iec8", 8, c128dcr_iec_devices, "c1571cr", NULL)
+ MCFG_CBM_IEC_SLOT_ADD("iec8", 8, c128dcr_iec_devices, "c1571", NULL) // TODO c1571cr
MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, NULL, NULL)
MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, NULL, NULL)
MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, NULL, NULL)
@@ -1662,21 +1660,21 @@ ROM_END
// ROM( c128d )
//-------------------------------------------------
-#define rom_c128d rom_c128
+#define rom_c128d rom_c128
//-------------------------------------------------
// ROM( c128dp )
//-------------------------------------------------
-#define rom_c128dp rom_c128
+#define rom_c128dp rom_c128
//-------------------------------------------------
// ROM( c128dpr )
//-------------------------------------------------
-#define rom_c128dpr rom_c128d
+#define rom_c128dpr rom_c128d
//-------------------------------------------------
@@ -1685,12 +1683,12 @@ ROM_END
ROM_START( c128cr )
/* C128CR prototype, owned by Bo Zimmers
- PCB markings: "COMMODORE 128CR REV.3 // PCB NO.252270" and "PCB ASSY NO.250783"
- Sticker on rom cart shield: "C128CR No.2 // ENG. SAMPLE // Jun/9/'86 KNT"
- 3 ROMs (combined basic, combined c64/kernal, plain character rom)
- 6526A-1 CIAs
- ?prototype? 2568R1X VDC w/ 1186 datecode
- */
+ PCB markings: "COMMODORE 128CR REV.3 // PCB NO.252270" and "PCB ASSY NO.250783"
+ Sticker on rom cart shield: "C128CR No.2 // ENG. SAMPLE // Jun/9/'86 KNT"
+ 3 ROMs (combined basic, combined c64/kernal, plain character rom)
+ 6526A-1 CIAs
+ ?prototype? 2568R1X VDC w/ 1186 datecode
+ */
ROM_REGION( 0x10000, M8502_TAG, 0 )
ROM_LOAD( "252343-03.u34", 0x4000, 0x8000, CRC(bc07ed87) SHA1(0eec437994a3f2212343a712847213a8a39f4a7b) ) // "252343-03 // U34"
ROM_LOAD( "252343-04.u32", 0x0000, 0x4000, CRC(cc6bdb69) SHA1(36286b2e8bea79f7767639fd85e12c5447c7041b) ) // "252343-04 // US // U32"
@@ -1734,7 +1732,7 @@ ROM_END
// ROM( c128dcrp )
//-------------------------------------------------
-#define rom_c128dcrp rom_c128dcr
+#define rom_c128dcrp rom_c128dcr
//-------------------------------------------------
@@ -1794,21 +1792,21 @@ ROM_END
//**************************************************************************
// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1985, c128, 0, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (NTSC)", GAME_SUPPORTS_SAVE )
-COMP( 1985, c128p, 0, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (PAL)", GAME_SUPPORTS_SAVE )
-COMP( 1985, c128_de, c128, 0, c128pal, c128ger, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Germany)", GAME_SUPPORTS_SAVE )
+COMP( 1985, c128, 0, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (NTSC)", GAME_SUPPORTS_SAVE )
+COMP( 1985, c128p, 0, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128 (PAL)", GAME_SUPPORTS_SAVE )
+COMP( 1985, c128_de, c128, 0, c128pal, c128ger, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Germany)", GAME_SUPPORTS_SAVE )
//COMP( 1985, c128_fr, c128, 0, c128pal, c128fra, driver_device, 0, "Commodore Business Machines", "Commodore 128 (France)", GAME_SUPPORTS_SAVE )
//COMP( 1985, c128_no, c128, 0, c128pal, c128ita, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Norway)", GAME_SUPPORTS_SAVE )
-COMP( 1985, c128_se, c128, 0, c128pal, c128swe, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Sweden/Finland)", GAME_SUPPORTS_SAVE )
-COMP( 1986, c128d, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (NTSC, prototype)", GAME_SUPPORTS_SAVE )
-COMP( 1986, c128dp, c128, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (PAL)", GAME_SUPPORTS_SAVE )
+COMP( 1985, c128_se, c128, 0, c128pal, c128swe, driver_device, 0, "Commodore Business Machines", "Commodore 128 (Sweden/Finland)", GAME_SUPPORTS_SAVE )
+COMP( 1986, c128d, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (NTSC, prototype)", GAME_SUPPORTS_SAVE )
+COMP( 1986, c128dp, c128, 0, c128pal, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D (PAL)", GAME_SUPPORTS_SAVE )
-COMP( 1986, c128cr, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128CR (NTSC, prototype)", GAME_SUPPORTS_SAVE )
+COMP( 1986, c128cr, c128, 0, c128, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128CR (NTSC, prototype)", GAME_SUPPORTS_SAVE )
-COMP( 1987, c128dcr, c128, 0, c128dcr, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (NTSC)", GAME_SUPPORTS_SAVE )
-COMP( 1987, c128dcrp, c128, 0, c128dcrp, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (PAL)", GAME_SUPPORTS_SAVE )
-COMP( 1987, c128dcr_de, c128, 0, c128dcrp, c128ger, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Germany)", GAME_SUPPORTS_SAVE )
+COMP( 1987, c128dcr, c128, 0, c128dcr, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (NTSC)", GAME_SUPPORTS_SAVE )
+COMP( 1987, c128dcrp, c128, 0, c128dcrp, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (PAL)", GAME_SUPPORTS_SAVE )
+COMP( 1987, c128dcr_de, c128, 0, c128dcrp, c128ger, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Germany)", GAME_SUPPORTS_SAVE )
//COMP( 1986, c128dcr_it, c128, 0, c128dcrp, c128ita, driver_device, 0,"Commodore Business Machines", "Commodore 128DCR (Italy)", GAME_SUPPORTS_SAVE )
-COMP( 1987, c128dcr_se, c128, 0, c128dcrp, c128swe, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Sweden/Finland)", GAME_SUPPORTS_SAVE )
+COMP( 1987, c128dcr_se, c128, 0, c128dcrp, c128swe, driver_device, 0, "Commodore Business Machines", "Commodore 128DCR (Sweden/Finland)", GAME_SUPPORTS_SAVE )
-COMP( 1986, c128d81, c128, 0, c128d81, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D/81 (NTSC, prototype)", GAME_SUPPORTS_SAVE )
+COMP( 1986, c128d81, c128, 0, c128d81, c128, driver_device, 0, "Commodore Business Machines", "Commodore 128D/81 (NTSC, prototype)", GAME_SUPPORTS_SAVE )
diff --git a/src/mess/machine/c1571.c b/src/mess/machine/c1571.c
index 27da5cd9f3d..1a21efebb5f 100644
--- a/src/mess/machine/c1571.c
+++ b/src/mess/machine/c1571.c
@@ -11,7 +11,15 @@
TODO:
- - refactor to use wd_fdc and modern floppy
+ - modernize floppy
+ - add wpt callback to floppy.c
+ - refactor d64/g64
+ - refactor 64H156
+ - 1571CR
+ - MOS5710
+ - ICT Mini Chief MC-20
+ - WD1002A-WX1 ISA controller card
+ - Seagate ST225 (-chs 615,4,17 -ss 512)
*/
@@ -24,13 +32,15 @@
// MACROS / CONSTANTS
//**************************************************************************
-#define M6502_TAG "u1"
-#define M6522_0_TAG "u9"
-#define M6522_1_TAG "u4"
-#define M6526_TAG "u20"
-#define WD1770_TAG "u11"
-#define C64H156_TAG "u6"
-#define C64H157_TAG "u5"
+#define M6502_TAG "u1"
+#define M6522_0_TAG "u9"
+#define M6522_1_TAG "u4"
+#define M6526_TAG "u20"
+#define M5710_TAG "u107"
+#define WD1770_TAG "u11"
+#define C64H156_TAG "u6"
+#define C64H157_TAG "u5"
+#define ISA_BUS_TAG "isabus"
enum
@@ -97,8 +107,8 @@ ROM_END
ROM_START( c1571 )
ROM_REGION( 0x8000, M6502_TAG, 0 )
- ROM_DEFAULT_BIOS("r5")
- ROM_SYSTEM_BIOS( 0, "r3", "Revision 3" )
+ ROM_DEFAULT_BIOS("r5")
+ ROM_SYSTEM_BIOS( 0, "r3", "Revision 3" )
ROMX_LOAD( "310654-03.u2", 0x0000, 0x8000, CRC(3889b8b8) SHA1(e649ef4419d65829d2afd65e07d31f3ce147d6eb), ROM_BIOS(1) )
ROM_SYSTEM_BIOS( 1, "r5", "Revision 5" )
ROMX_LOAD( "310654-05.u2", 0x0000, 0x8000, CRC(5755bae3) SHA1(f1be619c106641a685f6609e4d43d6fc9eac1e70), ROM_BIOS(2) )
@@ -114,7 +124,7 @@ ROM_END
ROM_START( c1571cr )
ROM_REGION( 0x8000, M6502_TAG, 0 )
ROM_DEFAULT_BIOS("cbm")
- ROM_SYSTEM_BIOS( 0, "cbm", "Commodore" )
+ ROM_SYSTEM_BIOS( 0, "cbm", "Commodore" )
ROMX_LOAD( "318047-01.u102", 0x0000, 0x8000, CRC(f24efcc4) SHA1(14ee7a0fb7e1c59c51fbf781f944387037daa3ee), ROM_BIOS(1) )
ROM_SYSTEM_BIOS( 1, "jiffydos", "JiffyDOS v6.01" )
ROMX_LOAD( "jiffydos 1571d.u102", 0x0000, 0x8000, CRC(9cba146d) SHA1(823b178561302b403e6bfd8dd741d757efef3958), ROM_BIOS(2) )
@@ -163,13 +173,29 @@ static ADDRESS_MAP_START( c1571_mem, AS_PROGRAM, 8, base_c1571_device )
AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x03f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x03f0) AM_READWRITE(via1_r, via1_w)
- AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE_LEGACY(WD1770_TAG, wd17xx_r, wd17xx_w)
+ AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE(WD1770_TAG, wd1770_t, read, write)
AM_RANGE(0x4000, 0x400f) AM_MIRROR(0x3ff0) AM_DEVREADWRITE(M6526_TAG, mos6526_device, read, write)
AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0)
ADDRESS_MAP_END
//-------------------------------------------------
+// ADDRESS_MAP( mini_chief_mem )
+//-------------------------------------------------
+
+static ADDRESS_MAP_START( mini_chief_mem, AS_PROGRAM, 8, mini_chief_device )
+ AM_RANGE(0x0000, 0x07ff) AM_RAM
+ AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x03f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
+ AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x03f0) AM_READWRITE(via1_r, via1_w)
+ AM_RANGE(0x2000, 0x2003) AM_MIRROR(0x1ffc) AM_DEVREADWRITE(WD1770_TAG, wd1770_t, read, write)
+ AM_RANGE(0x4000, 0x400f) AM_MIRROR(0xff0) AM_DEVREADWRITE(M6526_TAG, mos6526_device, read, write)
+ AM_RANGE(0x5000, 0x5fff) AM_MIRROR(0x2000) AM_RAM
+ AM_RANGE(0x6000, 0x6fff) AM_RAM
+ AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0)
+ADDRESS_MAP_END
+
+
+//-------------------------------------------------
// via6522_interface via0_intf
//-------------------------------------------------
@@ -184,18 +210,18 @@ READ8_MEMBER( base_c1571_device::via0_pa_r )
{
/*
- bit description
+ bit description
- PA0 TRK0 SNS
- PA1
- PA2
- PA3
- PA4
- PA5
- PA6
- PA7 BYTE RDY
+ PA0 TRK0 SNS
+ PA1
+ PA2
+ PA3
+ PA4
+ PA5
+ PA6
+ PA7 BYTE RDY
- */
+ */
UINT8 data = 0;
@@ -212,18 +238,18 @@ WRITE8_MEMBER( base_c1571_device::via0_pa_w )
{
/*
- bit description
+ bit description
- PA0
- PA1 SER DIR
- PA2 SIDE
- PA3
- PA4
- PA5 _1/2 MHZ
- PA6 ATN OUT
- PA7
+ PA0
+ PA1 SER DIR
+ PA2 SIDE
+ PA3
+ PA4
+ PA5 _1/2 MHZ
+ PA6 ATN OUT
+ PA7
- */
+ */
// fast serial direction
m_ser_dir = BIT(data, 1);
@@ -253,22 +279,59 @@ WRITE8_MEMBER( base_c1571_device::via0_pa_w )
update_iec();
}
+WRITE8_MEMBER( c1571cr_device::via0_pa_w )
+{
+ /*
+
+ bit description
+
+ PA0
+ PA1
+ PA2 SIDE
+ PA3
+ PA4
+ PA5 _1/2 MHZ
+ PA6
+ PA7
+
+ */
+
+ // side select
+ m_ga->set_side(BIT(data, 2));
+
+ // 1/2 MHz
+ int clock_1_2 = BIT(data, 5);
+
+ if (m_1_2mhz != clock_1_2)
+ {
+ UINT32 clock = clock_1_2 ? XTAL_16MHz/8 : XTAL_16MHz/16;
+
+ m_maincpu->set_unscaled_clock(clock);
+ m_cia->set_unscaled_clock(clock);
+ m_via0->set_unscaled_clock(clock);
+ m_via1->set_unscaled_clock(clock);
+ m_ga->accl_w(clock_1_2);
+
+ m_1_2mhz = clock_1_2;
+ }
+}
+
READ8_MEMBER( base_c1571_device::via0_pb_r )
{
/*
- bit description
+ bit description
- PB0 DATA IN
- PB1
- PB2 CLK IN
- PB3
- PB4
- PB5 DEV# SEL
- PB6 DEV# SEL
- PB7 ATN IN
+ PB0 DATA IN
+ PB1
+ PB2 CLK IN
+ PB3
+ PB4
+ PB5 DEV# SEL
+ PB6 DEV# SEL
+ PB7 ATN IN
- */
+ */
UINT8 data = 0;
@@ -291,18 +354,18 @@ WRITE8_MEMBER( base_c1571_device::via0_pb_w )
{
/*
- bit description
+ bit description
- PB0
- PB1 DATA OUT
- PB2
- PB3 CLK OUT
- PB4 ATN ACK
- PB5
- PB6
- PB7
+ PB0
+ PB1 DATA OUT
+ PB2
+ PB3 CLK OUT
+ PB4 ATN ACK
+ PB5
+ PB6
+ PB7
- */
+ */
// data out
m_data_out = BIT(data, 1);
@@ -316,6 +379,35 @@ WRITE8_MEMBER( base_c1571_device::via0_pb_w )
update_iec();
}
+WRITE8_MEMBER( c1571cr_device::via0_pb_w )
+{
+ /*
+
+ bit description
+
+ PB0
+ PB1 DATA OUT
+ PB2
+ PB3 CLK OUT
+ PB4 ATNI
+ PB5
+ PB6
+ PB7
+
+ */
+
+ // data out
+ m_data_out = BIT(data, 1);
+
+ // clock out
+ m_bus->clk_w(this, !BIT(data, 3));
+
+ // attention in
+ m_ga->atni_w(BIT(data, 4));
+
+ update_iec();
+}
+
READ_LINE_MEMBER( base_c1571_device::atn_in_r )
{
return !m_bus->atn_r();
@@ -345,6 +437,25 @@ static const via6522_interface via0_intf =
DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, via0_irq_w)
};
+static const via6522_interface c1571cr_via0_intf =
+{
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, via0_pa_r),
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, via0_pb_r),
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, atn_in_r),
+ DEVCB_NULL,
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, wprt_r),
+ DEVCB_NULL,
+
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571cr_device, via0_pa_w),
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1571cr_device, via0_pb_w),
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, via0_irq_w)
+};
+
//-------------------------------------------------
// via6522_interface via1_intf
@@ -353,7 +464,7 @@ static const via6522_interface via0_intf =
READ8_MEMBER( base_c1571_device::via1_r )
{
UINT8 data = m_via1->read(space, offset);
-
+
m_ga->ted_w(!m_1_2mhz);
m_ga->ted_w(1);
@@ -379,18 +490,18 @@ READ8_MEMBER( base_c1571_device::via1_pb_r )
{
/*
- bit signal description
+ bit signal description
- PB0
- PB1
- PB2
- PB3
- PB4 _WPRT write protect sense
- PB5
- PB6
- PB7 _SYNC SYNC detect line
+ PB0
+ PB1
+ PB2
+ PB3
+ PB4 _WPRT write protect sense
+ PB5
+ PB6
+ PB7 _SYNC SYNC detect line
- */
+ */
UINT8 data = 0;
@@ -407,18 +518,18 @@ WRITE8_MEMBER( base_c1571_device::via1_pb_w )
{
/*
- bit signal description
+ bit signal description
- PB0 STP0 stepping motor bit 0
- PB1 STP1 stepping motor bit 1
- PB2 MTR motor ON/OFF
- PB3 ACT drive 0 LED
- PB4
- PB5 DS0 density select 0
- PB6 DS1 density select 1
- PB7
+ PB0 STP0 stepping motor bit 0
+ PB1 STP1 stepping motor bit 1
+ PB2 MTR motor ON/OFF
+ PB3 ACT drive 0 LED
+ PB4
+ PB5 DS0 density select 0
+ PB6 DS1 density select 1
+ PB7
- */
+ */
// spindle motor
m_ga->mtr_w(BIT(data, 2));
@@ -467,9 +578,9 @@ WRITE_LINE_MEMBER( base_c1571_device::cia_irq_w )
WRITE_LINE_MEMBER( base_c1571_device::cia_pc_w )
{
if (m_other != NULL)
- {
- m_other->parallel_strobe_w(state);
- }
+ {
+ m_other->parallel_strobe_w(state);
+ }
}
WRITE_LINE_MEMBER( base_c1571_device::cia_cnt_w )
@@ -492,7 +603,7 @@ READ8_MEMBER( base_c1571_device::cia_pb_r )
WRITE8_MEMBER( base_c1571_device::cia_pb_w )
{
if (m_other != NULL)
- {
+ {
m_other->parallel_data_w(data);
}
}
@@ -509,6 +620,52 @@ static MOS6526_INTERFACE( cia_intf )
DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, cia_pb_w)
};
+//-------------------------------------------------
+// MOS6526_INTERFACE( mini_chief_cia_intf )
+//-------------------------------------------------
+
+READ8_MEMBER( mini_chief_device::cia_pa_r )
+{
+ // TODO read from ISA bus @ 0x320 | A2 A1 A0
+
+ return 0;
+}
+
+WRITE8_MEMBER( mini_chief_device::cia_pa_w )
+{
+ // TODO write to ISA bus @ 0x320 | A2 A1 A0
+}
+
+WRITE8_MEMBER( mini_chief_device::cia_pb_w )
+{
+ /*
+
+ bit description
+
+ 0 ISA A0
+ 1 ISA A1
+ 2 ISA A2
+ 3 ISA /SMEMR
+ 4 ISA /SMEMW
+ 5 ISA RESET
+ 6
+ 7
+
+ */
+}
+
+static MOS6526_INTERFACE( mini_chief_cia_intf )
+{
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, cia_irq_w),
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, cia_pc_w),
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, cia_cnt_w),
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, base_c1571_device, cia_sp_w),
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, mini_chief_device, cia_pa_r),
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, mini_chief_device, cia_pa_w),
+ DEVCB_NULL,
+ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, mini_chief_device, cia_pb_w)
+};
+
//-------------------------------------------------
// C64H156_INTERFACE( ga_intf )
@@ -529,17 +686,22 @@ static C64H156_INTERFACE( ga_intf )
//-------------------------------------------------
-// wd17xx_interface fdc_intf
+// SLOT_INTERFACE( c1570_floppies )
//-------------------------------------------------
+/*
+static SLOT_INTERFACE_START( c1570_floppies )
+ SLOT_INTERFACE( "525ssdd", FLOPPY_525_SSDD )
+SLOT_INTERFACE_END
+*/
-static const wd17xx_interface fdc_intf =
-{
- DEVCB_LINE_GND,
- DEVCB_NULL,
- DEVCB_NULL,
- { FLOPPY_0, NULL, NULL, NULL }
-};
-
+//-------------------------------------------------
+// SLOT_INTERFACE( c1571_floppies )
+//-------------------------------------------------
+/*
+static SLOT_INTERFACE_START( c1571_floppies )
+ SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
+SLOT_INTERFACE_END
+*/
//-------------------------------------------------
// LEGACY_FLOPPY_OPTIONS( c1571 )
@@ -594,6 +756,31 @@ static const floppy_interface c1570_floppy_interface =
//-------------------------------------------------
+// isa8bus_interface isabus_intf
+//-------------------------------------------------
+
+static SLOT_INTERFACE_START( mini_chief_isa8_cards )
+ //SLOT_INTERFACE("wd1002a_wx1", WD1002A_WX1)
+SLOT_INTERFACE_END
+
+static const isa8bus_interface isabus_intf =
+{
+ // interrupts
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL,
+
+ // dma request
+ DEVCB_NULL,
+ DEVCB_NULL,
+ DEVCB_NULL
+};
+
+
+//-------------------------------------------------
// MACHINE_DRIVER( c1570 )
//-------------------------------------------------
@@ -605,9 +792,10 @@ static MACHINE_CONFIG_FRAGMENT( c1570 )
MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf)
MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf)
MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, cia_intf)
- MCFG_WD1770_ADD(WD1770_TAG, /* XTAL_16MHz/2, */ fdc_intf)
+ MCFG_WD1770x_ADD(WD1770_TAG, XTAL_16MHz/2)
MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1570_floppy_interface)
+ //MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1570_floppies, "525ssdd", 0, base_c1571_device::floppy_formats)
MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
MACHINE_CONFIG_END
@@ -624,9 +812,10 @@ static MACHINE_CONFIG_FRAGMENT( c1571 )
MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf)
MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf)
MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, cia_intf)
- MCFG_WD1770_ADD(WD1770_TAG, /* XTAL_16MHz/2, */ fdc_intf)
+ MCFG_WD1770x_ADD(WD1770_TAG, XTAL_16MHz/2)
MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1571_floppy_interface)
+ //MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1571_floppies, "525dd", 0, base_c1571_device::floppy_formats)
MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
MACHINE_CONFIG_END
@@ -640,13 +829,37 @@ static MACHINE_CONFIG_FRAGMENT( c1571cr )
MCFG_CPU_PROGRAM_MAP(c1571_mem)
MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
+ MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, c1571cr_via0_intf)
+ MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf)
+ MCFG_MOS5710_ADD(M5710_TAG, XTAL_16MHz/16, 0, cia_intf)
+ MCFG_WD1770x_ADD(WD1770_TAG, XTAL_16MHz/2)
+
+ MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1571_floppy_interface)
+ //MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1571_floppies, "525dd", 0, base_c1571_device::floppy_formats)
+ MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
+MACHINE_CONFIG_END
+
+
+//-------------------------------------------------
+// MACHINE_DRIVER( mini_chief )
+//-------------------------------------------------
+
+static MACHINE_CONFIG_FRAGMENT( mini_chief )
+ MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
+ MCFG_CPU_PROGRAM_MAP(mini_chief_mem)
+ MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
+
MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, via0_intf)
MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, via1_intf)
- MCFG_MOS5710_ADD(M6526_TAG, XTAL_16MHz/16, 0, cia_intf)
- MCFG_WD1770_ADD(WD1770_TAG, /* XTAL_16MHz/2, */ fdc_intf)
+ MCFG_MOS6526_ADD(M6526_TAG, XTAL_16MHz/16, 0, mini_chief_cia_intf)
+ MCFG_WD1770x_ADD(WD1770_TAG, XTAL_16MHz/2)
MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1571_floppy_interface)
+ //MCFG_FLOPPY_DRIVE_ADD(WD1770_TAG":0", c1571_floppies, "525dd", 0, base_c1571_device::floppy_formats)
MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
+
+ MCFG_ISA8_BUS_ADD(ISA_BUS_TAG, M6502_TAG, isabus_intf)
+ MCFG_ISA8_SLOT_ADD(ISA_BUS_TAG, "isa1", mini_chief_isa8_cards, NULL/*"wd1002a_wx1"*/, NULL, false)
MACHINE_CONFIG_END
@@ -668,6 +881,9 @@ machine_config_constructor base_c1571_device::device_mconfig_additions() const
case TYPE_1571CR:
return MACHINE_CONFIG_NAME( c1571cr );
+
+ case TYPE_MINI_CHIEF:
+ return MACHINE_CONFIG_NAME( mini_chief );
}
}
@@ -682,25 +898,25 @@ machine_config_constructor base_c1571_device::device_mconfig_additions() const
//-------------------------------------------------
base_c1571_device::base_c1571_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant)
- : device_t(mconfig, type, name, tag, owner, clock),
- device_cbm_iec_interface(mconfig, *this),
- device_c64_floppy_parallel_interface(mconfig, *this),
- m_maincpu(*this, M6502_TAG),
- m_via0(*this, M6522_0_TAG),
- m_via1(*this, M6522_1_TAG),
- m_cia(*this, M6526_TAG),
- m_fdc(*this, WD1770_TAG),
- m_ga(*this, C64H156_TAG),
- m_image(*this, FLOPPY_0),
- m_1_2mhz(0),
- m_data_out(1),
- m_ser_dir(0),
- m_sp_out(1),
- m_cnt_out(1),
- m_via0_irq(CLEAR_LINE),
- m_via1_irq(CLEAR_LINE),
- m_cia_irq(CLEAR_LINE),
- m_variant(variant)
+ : device_t(mconfig, type, name, tag, owner, clock),
+ device_cbm_iec_interface(mconfig, *this),
+ device_c64_floppy_parallel_interface(mconfig, *this),
+ m_maincpu(*this, M6502_TAG),
+ m_via0(*this, M6522_0_TAG),
+ m_via1(*this, M6522_1_TAG),
+ m_cia(*this, M6526_TAG),
+ m_fdc(*this, WD1770_TAG),
+ m_ga(*this, C64H156_TAG),
+ m_image(*this, FLOPPY_0),
+ m_1_2mhz(0),
+ m_data_out(1),
+ m_ser_dir(0),
+ m_sp_out(1),
+ m_cnt_out(1),
+ m_via0_irq(CLEAR_LINE),
+ m_via1_irq(CLEAR_LINE),
+ m_cia_irq(CLEAR_LINE),
+ m_variant(variant)
{
}
@@ -710,7 +926,10 @@ base_c1571_device::base_c1571_device(const machine_config &mconfig, device_type
//-------------------------------------------------
c1570_device::c1570_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : base_c1571_device(mconfig, C1570, "C1570", tag, owner, clock, TYPE_1570) { }
+ : base_c1571_device(mconfig, C1570, "C1570", tag, owner, clock, TYPE_1570)
+ //m_floppy(*this, WD1770_TAG":0:525ssdd")
+{
+}
//-------------------------------------------------
@@ -718,7 +937,10 @@ c1570_device::c1570_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
c1571_device::c1571_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : base_c1571_device(mconfig, C1571, "C1571", tag, owner, clock, TYPE_1571) { }
+ : base_c1571_device(mconfig, C1571, "C1571", tag, owner, clock, TYPE_1571)
+ //m_floppy(*this, WD1770_TAG":0:525dd")
+{
+}
//-------------------------------------------------
@@ -726,7 +948,10 @@ c1571_device::c1571_device(const machine_config &mconfig, const char *tag, devic
//-------------------------------------------------
c1571cr_device::c1571cr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : base_c1571_device(mconfig, C1571CR, "C1571CR", tag, owner, clock, TYPE_1571CR) { }
+ : base_c1571_device(mconfig, C1571CR, "C1571CR", tag, owner, clock, TYPE_1571CR)
+ //m_floppy(*this, WD1770_TAG":0:525dd")
+{
+}
//-------------------------------------------------
@@ -734,7 +959,10 @@ c1571cr_device::c1571cr_device(const machine_config &mconfig, const char *tag, d
//-------------------------------------------------
mini_chief_device::mini_chief_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : base_c1571_device(mconfig, MINI_CHIEF, "ICT Mini Chief", tag, owner, clock, TYPE_MINI_CHIEF) { }
+ : base_c1571_device(mconfig, MINI_CHIEF, "ICT Mini Chief", tag, owner, clock, TYPE_MINI_CHIEF)
+ //m_floppy(*this, WD1770_TAG":0:525dd")
+{
+}
//-------------------------------------------------
@@ -765,14 +993,15 @@ void base_c1571_device::device_start()
void base_c1571_device::device_reset()
{
- m_maincpu->reset();
+ m_maincpu->reset();
- m_via0->reset();
- m_via1->reset();
- m_cia->reset();
+ m_via0->reset();
+ m_via1->reset();
+ m_cia->reset();
+ m_fdc->reset();
- wd17xx_mr_w(m_fdc, 0);
- wd17xx_mr_w(m_fdc, 1);
+ //m_fdc->set_floppy(m_floppy);
+ m_fdc->dden_w(0);
m_sp_out = 1;
m_cnt_out = 1;
@@ -830,7 +1059,7 @@ void base_c1571_device::cbm_iec_reset(int state)
void base_c1571_device::parallel_data_w(UINT8 data)
{
- m_parallel_data = data;
+ m_parallel_data = data;
}
@@ -840,7 +1069,7 @@ void base_c1571_device::parallel_data_w(UINT8 data)
void base_c1571_device::parallel_strobe_w(int state)
{
- m_cia->flag_w(state);
+ m_cia->flag_w(state);
}
@@ -850,9 +1079,9 @@ void base_c1571_device::parallel_strobe_w(int state)
void base_c1571_device::on_disk_change(device_image_interface &image)
{
- base_c1571_device *c1571 = static_cast<base_c1571_device *>(image.device().owner());
+ base_c1571_device *c1571 = static_cast<base_c1571_device *>(image.device().owner());
- int wp = floppy_wpt_r(image);
+ int wp = floppy_wpt_r(image);
c1571->m_ga->on_disk_changed(wp);
}
diff --git a/src/mess/machine/c1571.h b/src/mess/machine/c1571.h
index cf8df9d42b5..40b7f99e1c2 100644
--- a/src/mess/machine/c1571.h
+++ b/src/mess/machine/c1571.h
@@ -12,7 +12,6 @@
#ifndef __C1571__
#define __C1571__
-
#include "emu.h"
#include "cpu/m6502/m6502.h"
#include "imagedev/flopdrv.h"
@@ -22,8 +21,9 @@
#include "machine/6522via.h"
#include "machine/c64_bn1541.h"
#include "machine/cbmiec.h"
+#include "machine/isa.h"
#include "machine/mos6526.h"
-#include "machine/wd17xx.h"
+#include "machine/wd_fdc.h"
@@ -31,7 +31,7 @@
// MACROS / CONSTANTS
//**************************************************************************
-#define C1571_TAG "c1571"
+#define C1571_TAG "c1571"
@@ -42,8 +42,8 @@
// ======================> c1571_device
class base_c1571_device : public device_t,
- public device_cbm_iec_interface,
- public device_c64_floppy_parallel_interface
+ public device_cbm_iec_interface,
+ public device_c64_floppy_parallel_interface
{
public:
enum
@@ -54,8 +54,8 @@ public:
TYPE_MINI_CHIEF
};
- // construction/destruction
- base_c1571_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant);
+ // construction/destruction
+ base_c1571_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant);
// optional information overrides
virtual const rom_entry *device_rom_region() const;
@@ -71,24 +71,28 @@ public:
DECLARE_WRITE8_MEMBER( via0_pb_w );
DECLARE_READ_LINE_MEMBER( atn_in_r );
DECLARE_READ_LINE_MEMBER( wprt_r );
+
DECLARE_READ8_MEMBER( via1_r );
DECLARE_WRITE8_MEMBER( via1_w );
DECLARE_WRITE_LINE_MEMBER( via1_irq_w );
DECLARE_READ8_MEMBER( via1_pb_r );
DECLARE_WRITE8_MEMBER( via1_pb_w );
+
DECLARE_WRITE_LINE_MEMBER( cia_irq_w );
DECLARE_WRITE_LINE_MEMBER( cia_pc_w );
DECLARE_WRITE_LINE_MEMBER( cia_cnt_w );
DECLARE_WRITE_LINE_MEMBER( cia_sp_w );
DECLARE_READ8_MEMBER( cia_pb_r );
DECLARE_WRITE8_MEMBER( cia_pb_w );
+
DECLARE_WRITE_LINE_MEMBER( byte_w );
+
DECLARE_WRITE_LINE_MEMBER( wpt_w );
protected:
- // device-level overrides
+ // device-level overrides
virtual void device_config_complete();
- virtual void device_start();
+ virtual void device_start();
virtual void device_reset();
// device_cbm_iec_interface overrides
@@ -107,23 +111,24 @@ protected:
required_device<via6522_device> m_via0;
required_device<via6522_device> m_via1;
required_device<mos6526_device> m_cia;
- required_device<wd1770_device> m_fdc;
+ required_device<wd1770_t> m_fdc;
required_device<c64h156_device> m_ga;
required_device<legacy_floppy_image_device> m_image;
+ //required_device<floppy_image_device> m_floppy;
// signals
- int m_1_2mhz; // clock speed
+ int m_1_2mhz; // clock speed
// IEC bus
- int m_data_out; // serial data out
- int m_ser_dir; // fast serial direction
- int m_sp_out; // fast serial data out
- int m_cnt_out; // fast serial clock out
+ int m_data_out; // serial data out
+ int m_ser_dir; // fast serial direction
+ int m_sp_out; // fast serial data out
+ int m_cnt_out; // fast serial clock out
// interrupts
- int m_via0_irq; // VIA #0 interrupt request
- int m_via1_irq; // VIA #1 interrupt request
- int m_cia_irq; // CIA interrupt request
+ int m_via0_irq; // VIA #0 interrupt request
+ int m_via1_irq; // VIA #1 interrupt request
+ int m_cia_irq; // CIA interrupt request
int m_variant;
};
@@ -134,8 +139,8 @@ protected:
class c1570_device : public base_c1571_device
{
public:
- // construction/destruction
- c1570_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ // construction/destruction
+ c1570_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
@@ -144,8 +149,8 @@ public:
class c1571_device : public base_c1571_device
{
public:
- // construction/destruction
- c1571_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ // construction/destruction
+ c1571_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
};
@@ -154,8 +159,11 @@ public:
class c1571cr_device : public base_c1571_device
{
public:
- // construction/destruction
- c1571cr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ // construction/destruction
+ c1571cr_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ DECLARE_WRITE8_MEMBER( via0_pa_w );
+ DECLARE_WRITE8_MEMBER( via0_pb_w );
};
@@ -164,8 +172,12 @@ public:
class mini_chief_device : public base_c1571_device
{
public:
- // construction/destruction
- mini_chief_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ // construction/destruction
+ mini_chief_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+
+ DECLARE_READ8_MEMBER( cia_pa_r );
+ DECLARE_WRITE8_MEMBER( cia_pa_w );
+ DECLARE_WRITE8_MEMBER( cia_pb_w );
};