diff options
-rw-r--r-- | src/emu/machine/mos6526.c | 110 | ||||
-rw-r--r-- | src/emu/machine/mos6526.h | 36 | ||||
-rw-r--r-- | src/mess/drivers/c128.c | 394 | ||||
-rw-r--r-- | src/mess/machine/c1571.c | 475 | ||||
-rw-r--r-- | src/mess/machine/c1571.h | 64 |
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 ); }; |