diff options
author | arbee <rb6502@users.noreply.github.com> | 2017-08-05 22:33:51 -0400 |
---|---|---|
committer | arbee <rb6502@users.noreply.github.com> | 2017-08-05 22:33:51 -0400 |
commit | fac69ac66f34344841c3c27bc968da5316ab6197 (patch) | |
tree | c2f196225ad72a0b0fa759eb9c24a3179401a6aa /src/mame/drivers/apple2e.cpp | |
parent | 933cd0e9661fa24942f4275164ccc17c182698eb (diff) |
New working machines
--------------------
China Education Computer I [R. Belmont, Jorma Honkanen]
Diffstat (limited to 'src/mame/drivers/apple2e.cpp')
-rw-r--r-- | src/mame/drivers/apple2e.cpp | 539 |
1 files changed, 452 insertions, 87 deletions
diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp index b9f32979eaa..ae77af25e47 100644 --- a/src/mame/drivers/apple2e.cpp +++ b/src/mame/drivers/apple2e.cpp @@ -203,6 +203,7 @@ public: m_maincpu(*this, A2_CPU_TAG), m_ram(*this, RAM_TAG), m_rom(*this, "maincpu"), + m_cecbanks(*this, "cecexp"), m_ay3600(*this, A2_KBDC_TAG), m_video(*this, A2_VIDEO_TAG), m_a2bus(*this, A2_BUS_TAG), @@ -241,6 +242,7 @@ public: required_device<cpu_device> m_maincpu; required_device<ram_device> m_ram; required_memory_region m_rom; + optional_memory_region m_cecbanks; required_device<ay3600_device> m_ay3600; required_device<a2_video_device> m_video; required_device<a2bus_device> m_a2bus; @@ -289,6 +291,8 @@ public: DECLARE_WRITE8_MEMBER(ram2000_w); DECLARE_READ8_MEMBER(ram4000_r); DECLARE_WRITE8_MEMBER(ram4000_w); + DECLARE_READ8_MEMBER(cec4000_r); + DECLARE_READ8_MEMBER(cec8000_r); DECLARE_READ8_MEMBER(auxram0000_r); DECLARE_WRITE8_MEMBER(auxram0000_w); DECLARE_READ8_MEMBER(auxram0200_r); @@ -310,17 +314,25 @@ public: DECLARE_READ8_MEMBER(c100_r); DECLARE_READ8_MEMBER(c100_int_r); DECLARE_READ8_MEMBER(c100_int_bank_r); + DECLARE_READ8_MEMBER(c100_cec_r); + DECLARE_READ8_MEMBER(c100_cec_bank_r); DECLARE_WRITE8_MEMBER(c100_w); DECLARE_READ8_MEMBER(c300_r); DECLARE_READ8_MEMBER(c300_int_r); DECLARE_READ8_MEMBER(c300_int_bank_r); + DECLARE_READ8_MEMBER(c300_cec_r); + DECLARE_READ8_MEMBER(c300_cec_bank_r); DECLARE_WRITE8_MEMBER(c300_w); DECLARE_READ8_MEMBER(c400_r); DECLARE_READ8_MEMBER(c400_int_r); DECLARE_READ8_MEMBER(c400_int_bank_r); + DECLARE_READ8_MEMBER(c400_cec_r); + DECLARE_READ8_MEMBER(c400_cec_bank_r); DECLARE_WRITE8_MEMBER(c400_w); DECLARE_READ8_MEMBER(c800_r); DECLARE_READ8_MEMBER(c800_int_r); + DECLARE_READ8_MEMBER(c800_cec_r); + DECLARE_READ8_MEMBER(c800_cec_bank_r); DECLARE_READ8_MEMBER(c800_b2_int_r); DECLARE_WRITE8_MEMBER(c800_w); DECLARE_READ8_MEMBER(inh_r); @@ -375,12 +387,14 @@ private: bool m_mockingboard4c; bool m_intc8rom; - bool m_isiic, m_isiicplus; + bool m_isiic, m_isiicplus, m_iscec; uint8_t m_iicplus_ce00[0x200]; - uint8_t *m_ram_ptr, *m_rom_ptr; + uint8_t *m_ram_ptr, *m_rom_ptr, *m_cec_ptr; int m_ram_size; + int m_cec_bank; + uint8_t *m_aux_ptr, *m_aux_bank_ptr; int m_inh_bank; @@ -406,9 +420,12 @@ private: void write_slot_rom(address_space &space, int slotbias, int offset, uint8_t data); uint8_t read_int_rom(address_space &space, int slotbias, int offset); void auxbank_update(); + void cec_lcrom_update(); void raise_irq(int irq); void lower_irq(int irq); void update_iic_mouse(); + + uint8_t m_cec_remap[0x40000]; }; /*************************************************************************** @@ -649,6 +666,52 @@ void apple2e_state::machine_start() m_cnxx_slot = CNXX_UNCLAIMED; m_mockingboard4c = false; + // remap CEC banking + if ((m_rom_ptr[0x7bb3] == 0x8d) || (m_rom_ptr[0x7bb3] == 0xea)) + { + m_lcbank->set_bank(3); + m_cec_ptr = m_cecbanks->base(); + + uint8_t *cecwlrom = m_cec_ptr; + uint8_t c, ch; + + for(int i=0; i<0x040000; i++) + { + ch = cecwlrom[((i&1)?0x020000:0) + (i>>1) ]; + c = 0; + + for(int j=0;j<7;j++) + { + if (ch&1) + { + c = c | 1; + } + + ch = ch>>1; + c = c<<1; + } + + if (ch&1) + { + c = c | 1; + } + m_cec_remap[i] = c; + } + + // remap cec gfx1 rom + // for ALTCHARSET + uint8_t *rom = m_video->m_char_ptr; + for(int i=0;i<0x1000;i++) + { + rom[i+0x1000] = rom[i]; + } + + for(int i=0x040*8;i<0x80*8;i++) + { + rom[i] = rom[i+0x1000-0x040*8]; + } + } + // setup save states save_item(NAME(m_speaker_state)); save_item(NAME(m_cassette_state)); @@ -705,6 +768,7 @@ void apple2e_state::machine_start() save_item(NAME(m_lcwriteenable)); save_item(NAME(m_mockingboard4c)); save_item(NAME(m_intc8rom)); + save_item(NAME(m_cec_bank)); } void apple2e_state::machine_reset() @@ -725,6 +789,13 @@ void apple2e_state::machine_reset() m_yirq = false; m_mockingboard4c = false; m_intc8rom = false; + m_iscec = false; + m_cec_bank = 0; + + if ((m_rom_ptr[0x7bb3] == 0x8d) || (m_rom_ptr[0x7bb3] == 0xea)) + { + m_iscec = true; + } // IIe prefers INTCXROM default to off, IIc has it always on if (m_rom_ptr[0x3bc0] == 0x00) @@ -914,99 +985,129 @@ void apple2e_state::auxbank_update() { int ramwr = (m_ramrd ? 1 : 0) | (m_ramwrt ? 2 : 0); - m_0000bank->set_bank(m_altzp ? 1 : 0); - m_0200bank->set_bank(ramwr); - - if (m_80store) + if (!m_iscec) // real Apple II { - if (m_page2) + m_0000bank->set_bank(m_altzp ? 1 : 0); + m_0200bank->set_bank(ramwr); + + if (m_80store) { - m_0400bank->set_bank(3); + if (m_page2) + { + m_0400bank->set_bank(3); + } + else + { + m_0400bank->set_bank(0); + } } else { - m_0400bank->set_bank(0); + m_0400bank->set_bank(ramwr); } - } - else - { - m_0400bank->set_bank(ramwr); - } - m_0800bank->set_bank(ramwr); + m_0800bank->set_bank(ramwr); - if ((m_80store) && (m_video->m_hires)) - { - if (m_page2) + if ((m_80store) && (m_video->m_hires)) { - m_2000bank->set_bank(3); + if (m_page2) + { + m_2000bank->set_bank(3); + } + else + { + m_2000bank->set_bank(0); + } } else { - m_2000bank->set_bank(0); + m_2000bank->set_bank(ramwr); } + + m_4000bank->set_bank(ramwr); } - else + else // CEC { - m_2000bank->set_bank(ramwr); + if (m_ramrd) + { + m_4000bank->set_bank(4); // read CEC bank, write normal RAM + } } - - m_4000bank->set_bank(ramwr); } void apple2e_state::update_slotrom_banks() { - int cxswitch = 0; - - // IIc and IIc+ have working (readable) INTCXROM/SLOTC3ROM switches, but - // internal ROM is always present in the slots. - if ((m_intcxrom) || (m_isiic)) + if (!m_iscec) { - if (m_romswitch) + int cxswitch = 0; + + // IIc and IIc+ have working (readable) INTCXROM/SLOTC3ROM switches, but + // internal ROM is always present in the slots. + if ((m_intcxrom) || (m_isiic)) { - cxswitch = 2; + if (m_romswitch) + { + cxswitch = 2; + } + else + { + cxswitch = 1; + } + } + + m_c100bank->set_bank(cxswitch); + m_c400bank->set_bank(cxswitch); + + //printf("intcxrom %d intc8rom %d cnxx_slot %d isiic %d romswitch %d\n", m_intcxrom, m_intc8rom, m_cnxx_slot, m_isiic, m_romswitch); + if ((m_intcxrom) || (m_intc8rom) || (m_isiic)) + { + if (m_romswitch) + { + m_c800bank->set_bank(2); + } + else + { + m_c800bank->set_bank(1); + } } else { - cxswitch = 1; + m_c800bank->set_bank(0); } - } - m_c100bank->set_bank(cxswitch); - m_c400bank->set_bank(cxswitch); - - //printf("intcxrom %d intc8rom %d cnxx_slot %d isiic %d romswitch %d\n", m_intcxrom, m_intc8rom, m_cnxx_slot, m_isiic, m_romswitch); - if ((m_intcxrom) || (m_intc8rom) || (m_isiic)) - { - if (m_romswitch) + if ((m_intcxrom) || (!m_slotc3rom) || (m_isiic)) { - m_c800bank->set_bank(2); + if (m_romswitch) + { + m_c300bank->set_bank(2); + } + else + { + m_c300bank->set_bank(1); + } } else { - m_c800bank->set_bank(1); + m_c300bank->set_bank(0); } } - else - { - m_c800bank->set_bank(0); - } - - if ((m_intcxrom) || (!m_slotc3rom) || (m_isiic)) + else // CEC has only ROM here { - if (m_romswitch) + if (!m_intcxrom) { - m_c300bank->set_bank(2); + m_c100bank->set_bank(3); + m_c300bank->set_bank(3); + m_c400bank->set_bank(3); + m_c800bank->set_bank(3); } else { - m_c300bank->set_bank(1); + m_c100bank->set_bank(4); + m_c300bank->set_bank(4); + m_c400bank->set_bank(4); + m_c800bank->set_bank(4); } } - else - { - m_c300bank->set_bank(0); - } } void apple2e_state::lc_update(int offset, bool writing) @@ -1065,19 +1166,33 @@ void apple2e_state::lc_update(int offset, bool writing) if (m_lcram != old_lcram) { - if (m_lcram) + if (m_iscec) { - m_lcbank->set_bank(1); + if (m_lcram) + { + m_lcbank->set_bank(1); + } + else + { + cec_lcrom_update(); + } } else { - if (m_romswitch) + if (m_lcram) { - m_lcbank->set_bank(2); + m_lcbank->set_bank(1); } else { - m_lcbank->set_bank(0); + if (m_romswitch) + { + m_lcbank->set_bank(2); + } + else + { + m_lcbank->set_bank(0); + } } } } @@ -1091,6 +1206,18 @@ void apple2e_state::lc_update(int offset, bool writing) #endif } +void apple2e_state::cec_lcrom_update() +{ + if (m_altzp) + { + m_lcbank->set_bank(5); + } + else + { + m_lcbank->set_bank(3); + } +} + // most softswitches don't care about read vs write, so handle them here void apple2e_state::do_io(address_space &space, int offset, bool is_iic) { @@ -1453,11 +1580,19 @@ WRITE8_MEMBER(apple2e_state::c000_w) case 0x08: // ALTZPOFF m_altzp = false; auxbank_update(); + if ((m_iscec) && (!m_lcram)) + { + cec_lcrom_update(); + } break; case 0x09: // ALTZPON m_altzp = true; auxbank_update(); + if ((m_iscec) && (!m_lcram)) + { + cec_lcrom_update(); + } break; case 0x0a: // SETINTC3ROM @@ -1883,6 +2018,13 @@ READ8_MEMBER(apple2e_state::c080_r) { return m_slotdevice[slot]->read_c0nx(space, offset % 0x10); } + else + { + if (m_iscec) + { + return m_cec_bank; + } + } } } @@ -1906,6 +2048,18 @@ WRITE8_MEMBER(apple2e_state::c080_w) { m_slotdevice[slot]->write_c0nx(space, offset % 0x10, data); } + else + { + if ((m_iscec) && (slot == 3)) + { + if (data != m_cec_bank) + { + m_cec_bank = data; + auxbank_update(); + update_slotrom_banks(); + } + } + } } } @@ -1952,12 +2106,15 @@ uint8_t apple2e_state::read_int_rom(address_space &space, int slotbias, int offs update_slotrom_banks(); } #endif + return m_rom_ptr[slotbias + offset]; } READ8_MEMBER(apple2e_state::c100_r) { return read_slot_rom(space, 1, offset); } READ8_MEMBER(apple2e_state::c100_int_r) { return read_int_rom(space, 0x100, offset); } READ8_MEMBER(apple2e_state::c100_int_bank_r) { return read_int_rom(space, 0x4100, offset); } +READ8_MEMBER(apple2e_state::c100_cec_r) { return m_rom_ptr[0xc100 + offset]; } +READ8_MEMBER(apple2e_state::c100_cec_bank_r) { return m_rom_ptr[0x4100 + offset]; } WRITE8_MEMBER(apple2e_state::c100_w) { write_slot_rom(space, 1, offset, data); } READ8_MEMBER(apple2e_state::c300_r) { return read_slot_rom(space, 3, offset); } @@ -1991,6 +2148,10 @@ WRITE8_MEMBER(apple2e_state::c300_w) write_slot_rom(space, 3, offset, data); } + +READ8_MEMBER(apple2e_state::c300_cec_r) { return m_rom_ptr[0xc300 + offset]; } +READ8_MEMBER(apple2e_state::c300_cec_bank_r) { return m_rom_ptr[0x4300 + offset]; } + READ8_MEMBER(apple2e_state::c400_r) { return read_slot_rom(space, 4, offset); } READ8_MEMBER(apple2e_state::c400_int_r) { @@ -2022,6 +2183,9 @@ WRITE8_MEMBER(apple2e_state::c400_w) write_slot_rom(space, 4, offset, data); } +READ8_MEMBER(apple2e_state::c400_cec_r) { return m_rom_ptr[0xc400 + offset]; } +READ8_MEMBER(apple2e_state::c400_cec_bank_r) { return m_rom_ptr[0x4400 + offset]; } + READ8_MEMBER(apple2e_state::c800_r) { if ((m_isiicplus) && (offset >= 0x600)) @@ -2062,6 +2226,11 @@ READ8_MEMBER(apple2e_state::c800_int_r) update_slotrom_banks(); } + if (m_iscec) + { + return m_rom_ptr[0x4800 + offset]; + } + return m_rom_ptr[0x800 + offset]; } @@ -2108,6 +2277,9 @@ WRITE8_MEMBER(apple2e_state::c800_w) } } +READ8_MEMBER(apple2e_state::c800_cec_r) { return m_rom_ptr[0xc800 + offset]; } +READ8_MEMBER(apple2e_state::c800_cec_bank_r) { return m_rom_ptr[0x4800 + offset]; } + READ8_MEMBER(apple2e_state::inh_r) { if (m_inh_slot != -1) @@ -2129,7 +2301,7 @@ WRITE8_MEMBER(apple2e_state::inh_w) READ8_MEMBER(apple2e_state::lc_r) { - if (m_altzp) + if ((m_altzp) && (!m_iscec)) { if (m_aux_bank_ptr) { @@ -2177,7 +2349,7 @@ WRITE8_MEMBER(apple2e_state::lc_w) return; } - if (m_altzp) + if ((m_altzp) && (!m_iscec)) { if (m_aux_bank_ptr) { @@ -2362,6 +2534,24 @@ READ8_MEMBER(apple2e_state::ram2000_r) { return m_ram_ptr[offset+0x2000]; } WRITE8_MEMBER(apple2e_state::ram2000_w) { m_ram_ptr[offset+0x2000] = data; } READ8_MEMBER(apple2e_state::ram4000_r) { return m_ram_ptr[offset+0x4000]; } WRITE8_MEMBER(apple2e_state::ram4000_w) { m_ram_ptr[offset+0x4000] = data; } +READ8_MEMBER(apple2e_state::cec4000_r) +{ + //printf("cec4000_r: ofs %x\n", offset); + return m_cec_remap[((m_cec_bank & 0xf) << 14) + offset]; +} + +READ8_MEMBER(apple2e_state::cec8000_r) +{ + //printf("cec8000_r: ofs %x\n", offset); + if (m_cec_bank & 0x20) + { + return m_rom_ptr[offset]; + } + else + { + return m_rom_ptr[offset + 0x8000]; + } +} READ8_MEMBER(apple2e_state::auxram0000_r) { if (m_aux_bank_ptr) { return m_aux_bank_ptr[offset]; } else { return read_floatingbus(); } } WRITE8_MEMBER(apple2e_state::auxram0000_w) { if (m_aux_bank_ptr) { m_aux_bank_ptr[offset] = data; } } @@ -2487,30 +2677,41 @@ static ADDRESS_MAP_START( r4000bank_map, AS_PROGRAM, 8, apple2e_state ) AM_RANGE(0x08000, 0x0ffff) AM_READWRITE(auxram4000_r, ram4000_w) AM_RANGE(0x10000, 0x17fff) AM_READWRITE(ram4000_r, auxram4000_w) AM_RANGE(0x18000, 0x1ffff) AM_READWRITE(auxram4000_r, auxram4000_w) + AM_RANGE(0x20000, 0x23fff) AM_READWRITE(cec4000_r, ram4000_w) + AM_RANGE(0x24000, 0x27fff) AM_READWRITE(cec8000_r, ram4000_w) ADDRESS_MAP_END static ADDRESS_MAP_START( c100bank_map, AS_PROGRAM, 8, apple2e_state ) AM_RANGE(0x0000, 0x01ff) AM_READWRITE(c100_r, c100_w) AM_RANGE(0x0200, 0x03ff) AM_READ(c100_int_r) AM_WRITENOP AM_RANGE(0x0400, 0x05ff) AM_READ(c100_int_bank_r) AM_WRITENOP + AM_RANGE(0x0600, 0x07ff) AM_READ(c100_cec_r) AM_WRITENOP + AM_RANGE(0x0800, 0x09ff) AM_READ(c100_cec_bank_r) AM_WRITENOP + ADDRESS_MAP_END static ADDRESS_MAP_START( c300bank_map, AS_PROGRAM, 8, apple2e_state ) AM_RANGE(0x0000, 0x00ff) AM_READWRITE(c300_r, c300_w) AM_RANGE(0x0100, 0x01ff) AM_READ(c300_int_r) AM_WRITENOP AM_RANGE(0x0200, 0x02ff) AM_READ(c300_int_bank_r) AM_WRITENOP + AM_RANGE(0x0300, 0x03ff) AM_READ(c300_cec_r) AM_WRITENOP + AM_RANGE(0x0400, 0x04ff) AM_READ(c300_cec_bank_r) AM_WRITENOP ADDRESS_MAP_END static ADDRESS_MAP_START( c400bank_map, AS_PROGRAM, 8, apple2e_state ) AM_RANGE(0x0000, 0x03ff) AM_READWRITE(c400_r, c400_w) AM_RANGE(0x0400, 0x07ff) AM_READWRITE(c400_int_r, c400_w) AM_RANGE(0x0800, 0x0bff) AM_READWRITE(c400_int_bank_r, c400_w) + AM_RANGE(0x0c00, 0x0fff) AM_READ(c400_cec_r) AM_WRITENOP + AM_RANGE(0x1000, 0x13ff) AM_READ(c400_cec_bank_r) AM_WRITENOP ADDRESS_MAP_END static ADDRESS_MAP_START( c800bank_map, AS_PROGRAM, 8, apple2e_state ) AM_RANGE(0x0000, 0x07ff) AM_READWRITE(c800_r, c800_w) AM_RANGE(0x0800, 0x0fff) AM_READWRITE(c800_int_r, c800_w) AM_RANGE(0x1000, 0x17ff) AM_READWRITE(c800_b2_int_r, c800_w) + AM_RANGE(0x1800, 0x1fff) AM_READ(c800_cec_r) AM_WRITENOP + AM_RANGE(0x2000, 0x27ff) AM_READ(c800_cec_bank_r) AM_WRITENOP ADDRESS_MAP_END static ADDRESS_MAP_START( inhbank_map, AS_PROGRAM, 8, apple2e_state ) @@ -2519,9 +2720,12 @@ static ADDRESS_MAP_START( inhbank_map, AS_PROGRAM, 8, apple2e_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( lcbank_map, AS_PROGRAM, 8, apple2e_state ) - AM_RANGE(0x0000, 0x2fff) AM_ROM AM_REGION("maincpu", 0x1000) AM_WRITE(lc_w) - AM_RANGE(0x3000, 0x5fff) AM_READWRITE(lc_r, lc_w) - AM_RANGE(0x6000, 0x8fff) AM_ROM AM_REGION("maincpu", 0x5000) AM_WRITE(lc_w) + AM_RANGE(0x00000, 0x02fff) AM_ROM AM_REGION("maincpu", 0x1000) AM_WRITE(lc_w) + AM_RANGE(0x03000, 0x05fff) AM_READWRITE(lc_r, lc_w) + AM_RANGE(0x06000, 0x08fff) AM_ROM AM_REGION("maincpu", 0x5000) AM_WRITE(lc_w) + AM_RANGE(0x09000, 0x0bfff) AM_ROM AM_REGION("maincpu", 0x5000) AM_WRITE(lc_w) + AM_RANGE(0x0c000, 0x0efff) AM_READWRITE(lc_r, lc_w) + AM_RANGE(0x0f000, 0x11fff) AM_ROM AM_REGION("maincpu", 0xd000) AM_WRITE(lc_w) ADDRESS_MAP_END static ADDRESS_MAP_START( spectred_keyb_map, AS_PROGRAM, 8, apple2e_state ) @@ -2566,8 +2770,16 @@ WRITE_LINE_MEMBER(apple2e_state::ay3600_data_ready_w) trans = m_lastchar & ~(0x1c0); // clear the 3600's control/shift stuff trans |= (m_lastchar & 0x100)>>2; // bring the 0x100 bit down to the 0x40 place trans <<= 2; // 4 entries per key - trans |= (m_kbspecial->read() & 0x06) ? 0x00 : 0x01; // shift is bit 1 (active low) - trans |= (m_kbspecial->read() & 0x08) ? 0x00 : 0x02; // control is bit 2 (active low) + if (m_iscec) + { + trans |= (m_kbspecial->read() & 0x06) ? 0x01 : 0x00; // shift is bit 1 (active high) + trans |= (m_kbspecial->read() & 0x08) ? 0x02 : 0x00; // control is bit 2 (active high) + } + else + { + trans |= (m_kbspecial->read() & 0x06) ? 0x00 : 0x01; // shift is bit 1 (active low) + trans |= (m_kbspecial->read() & 0x08) ? 0x00 : 0x02; // control is bit 2 (active low) + } trans |= (m_kbspecial->read() & 0x01) ? 0x0000 : 0x0200; // caps lock is bit 9 (active low) if (m_isiic) @@ -2851,6 +3063,110 @@ static INPUT_PORTS_START( apple2e_common ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RESET") PORT_CODE(KEYCODE_F12) INPUT_PORTS_END +static INPUT_PORTS_START( ceci ) + PORT_START("X0") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_0) PORT_CHAR('0') PORT_CHAR(')') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('\"') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_C) PORT_CHAR('C') PORT_CHAR('c') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('k') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_S) PORT_CHAR('S') PORT_CHAR('s') + PORT_BIT(0x2c0, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') + + PORT_START("X1") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_TILDE) PORT_CHAR('`') PORT_CHAR('~') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_D) PORT_CHAR('D') PORT_CHAR('d') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('l') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_T) PORT_CHAR('T') PORT_CHAR('t') + PORT_BIT(0x3c0, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') + + PORT_START("X2") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_MINUS) PORT_CHAR('-') PORT_CHAR('_') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_E) PORT_CHAR('E') PORT_CHAR('e') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR('m') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_U) PORT_CHAR('U') PORT_CHAR('u') + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Esc") PORT_CODE(KEYCODE_ESC) PORT_CHAR(27) + PORT_BIT(0x340, IP_ACTIVE_HIGH, IPT_KEYBOARD) + + PORT_START("X3") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_EQUALS) PORT_CHAR('=') PORT_CHAR('+') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_F) PORT_CHAR('F') PORT_CHAR('f') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('n') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_V) PORT_CHAR('V') PORT_CHAR('v') + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB) PORT_CHAR(9) + PORT_BIT(0x340, IP_ACTIVE_HIGH, IPT_KEYBOARD) + + PORT_START("X4") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_G) PORT_CHAR('G') PORT_CHAR('g') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('o') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_W) PORT_CHAR('W') PORT_CHAR('w') + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_LEFT) PORT_CODE(KEYCODE_LEFT) + PORT_BIT(0x2c0, IP_ACTIVE_HIGH, IPT_KEYBOARD) + + PORT_START("X5") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_H) PORT_CHAR('H') PORT_CHAR('h') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('p') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_X) PORT_CHAR('X') PORT_CHAR('x') + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_UP) PORT_CODE(KEYCODE_UP) + PORT_BIT(0x2c4, IP_ACTIVE_HIGH, IPT_KEYBOARD) + + PORT_START("X6") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_A) PORT_CHAR('A') PORT_CHAR('a') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_I) PORT_CHAR('I') PORT_CHAR('i') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Q) PORT_CHAR('Q') PORT_CHAR('q') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Y) PORT_CHAR('Y') PORT_CHAR('y') + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_DOWN) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(10) + PORT_BIT(0x2c0, IP_ACTIVE_HIGH, IPT_KEYBOARD) + + PORT_START("X7") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'') + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR(':') + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_B) PORT_CHAR('B') PORT_CHAR('b') + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_J) PORT_CHAR('J') PORT_CHAR('j') + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_R) PORT_CHAR('R') PORT_CHAR('r') + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_CODE(KEYCODE_Z) PORT_CHAR('Z') PORT_CHAR('z') + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13) + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME(UTF8_RIGHT) PORT_CODE(KEYCODE_RIGHT) + PORT_BIT(0x240, IP_ACTIVE_HIGH, IPT_KEYBOARD) + + PORT_START("X8") + PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_UNUSED) + + PORT_START("keyb_special") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Caps Lock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Left Shift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Right Shift") PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Control") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_SHIFT_2) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("RESET") PORT_CODE(KEYCODE_F12) + PORT_INCLUDE( apple2_gameport ) + PORT_INCLUDE( apple2_sysconfig ) +INPUT_PORTS_END + static INPUT_PORTS_START( apple2e ) PORT_INCLUDE( apple2e_common ) PORT_INCLUDE( apple2_gameport ) @@ -3752,6 +4068,25 @@ static MACHINE_CONFIG_DERIVED( laser128ex2, apple2c ) MCFG_RAM_EXTRA_OPTIONS("128K, 384K, 640K, 896K, 1152K") MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( ceci, apple2e ) + MCFG_A2BUS_SLOT_REMOVE("sl1") + MCFG_A2BUS_SLOT_REMOVE("sl2") + MCFG_A2BUS_SLOT_REMOVE("sl3") + MCFG_A2BUS_SLOT_REMOVE("sl4") + MCFG_A2BUS_SLOT_REMOVE("sl5") + MCFG_A2BUS_SLOT_REMOVE("sl6") + MCFG_A2BUS_SLOT_REMOVE("sl7") + + MCFG_A2BUS_ONBOARD_ADD("a2bus", "sl6", A2BUS_DISKIING, NOOP) + + // there is no aux slot, the "aux" side of the //e is used for additional ROM + MCFG_A2EAUXSLOT_SLOT_REMOVE("aux") + MCFG_DEVICE_REMOVE(A2_AUXSLOT_TAG) + + MCFG_RAM_MODIFY(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("64K") +MACHINE_CONFIG_END + /*************************************************************************** Game driver(s) @@ -3763,7 +4098,7 @@ ROM_START(apple2e) ROM_LOAD ( "342-0133-a.chr", 0x0000, 0x1000,CRC(b081df66) SHA1(7060de104046736529c1e8a687a0dd7b84f8c51b)) ROM_LOAD ( "342-0133-a.chr", 0x1000, 0x1000,CRC(b081df66) SHA1(7060de104046736529c1e8a687a0dd7b84f8c51b)) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ( "342-0135-b.64", 0x0000, 0x2000, CRC(e248835e) SHA1(523838c19c79f481fa02df56856da1ec3816d16e)) ROM_LOAD ( "342-0134-a.64", 0x2000, 0x2000, CRC(fc3d59d8) SHA1(8895a4b703f2184b673078f411f4089889b61c54)) @@ -3775,7 +4110,7 @@ ROM_START(apple2euk) ROM_REGION(0x2000,"gfx1",0) ROM_LOAD( "341-0160-a.chr", 0x0000, 0x2000, CRC(9be77112) SHA1(48aafa9a72002c495bc1f3d28150630ff89ca47e) ) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ( "342-0135-b.64", 0x0000, 0x2000, CRC(e248835e) SHA1(523838c19c79f481fa02df56856da1ec3816d16e)) ROM_LOAD ( "342-0134-a.64", 0x2000, 0x2000, CRC(fc3d59d8) SHA1(8895a4b703f2184b673078f411f4089889b61c54)) @@ -3787,7 +4122,7 @@ ROM_START(apple2ees) ROM_REGION(0x2000,"gfx1",0) ROM_LOAD( "341-0212-a.e9", 0x000000, 0x002000, CRC(bc5575ef) SHA1(aa20c257255ef552295d32a3f56ccbb52b8716c3) ) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ( "342-0135-b.64", 0x0000, 0x2000, CRC(e248835e) SHA1(523838c19c79f481fa02df56856da1ec3816d16e)) ROM_LOAD ( "342-0134-a.64", 0x2000, 0x2000, CRC(fc3d59d8) SHA1(8895a4b703f2184b673078f411f4089889b61c54)) @@ -3800,7 +4135,7 @@ ROM_START(mprof3) ROM_LOAD ( "mpf3.chr", 0x0000, 0x1000,CRC(2597bc19) SHA1(e114dcbb512ec24fb457248c1b53cbd78039ed20)) ROM_LOAD ( "mpf3.chr", 0x1000, 0x1000,CRC(2597bc19) SHA1(e114dcbb512ec24fb457248c1b53cbd78039ed20)) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ( "mpf3-cd.rom", 0x0000, 0x2000, CRC(5b662e06) SHA1(aa0db775ca78986480829fcc10f00e57629e1a7c)) ROM_LOAD ( "mpf3-ef.rom", 0x2000, 0x2000, CRC(2c5e8b92) SHA1(befeb03e04b7c3ef36ef5829948a53880df85e92)) @@ -3813,7 +4148,7 @@ ROM_START(apple2ee) ROM_LOAD ( "342-0265-a.chr", 0x0000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) ROM_LOAD ( "342-0265-a.chr", 0x1000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ( "342-0304-a.e10", 0x0000, 0x2000, CRC(443aa7c4) SHA1(3aecc56a26134df51e65e17f33ae80c1f1ac93e6)) /* PCB: "CD ROM // 342-0304", 2364 mask rom */ ROM_LOAD ( "342-0303-a.e8", 0x2000, 0x2000, CRC(95e10034) SHA1(afb09bb96038232dc757d40c0605623cae38088e)) /* PCB: "EF ROM // 342-0303", 2364 mask rom */ @@ -3825,7 +4160,7 @@ ROM_START(apple2eeuk) ROM_REGION(0x2000, "gfx1", 0) ROM_LOAD( "342-0273-a.chr", 0x0000, 0x2000, CRC(9157085a) SHA1(85479a509d6c8176949a5b20720567b7022aa631) ) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ( "342-0304-a.e10", 0x0000, 0x2000, CRC(443aa7c4) SHA1(3aecc56a26134df51e65e17f33ae80c1f1ac93e6)) /* PCB: "CD ROM // 342-0304", 2364 mask rom */ ROM_LOAD ( "342-0303-a.e8", 0x2000, 0x2000, CRC(95e10034) SHA1(afb09bb96038232dc757d40c0605623cae38088e)) /* PCB: "EF ROM // 342-0303", 2364 mask rom */ @@ -3837,7 +4172,7 @@ ROM_START(apple2eefr) ROM_REGION(0x2000,"gfx1",0) ROM_LOAD( "342-0274-a.e9", 0x0000, 0x2000, CRC(8f342081) SHA1(c81c1bbf237e70f8c3e5eef3c8fd5bd9b9f54d1e) ) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD( "342-0304-a.e3", 0x0000, 0x2000, CRC(443aa7c4) SHA1(3aecc56a26134df51e65e17f33ae80c1f1ac93e6) ) ROM_LOAD( "342-0303-a.e5", 0x2000, 0x2000, CRC(95e10034) SHA1(afb09bb96038232dc757d40c0605623cae38088e) ) @@ -3850,7 +4185,7 @@ ROM_START(apple2ep) ROM_LOAD ( "342-0265-a.chr", 0x0000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) ROM_LOAD ( "342-0265-a.chr", 0x1000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ("32-0349-b.128", 0x0000, 0x4000, CRC(1d70b193) SHA1(b8ea90abe135a0031065e01697c4a3a20d51198b)) /* should rom name be 342-0349-b? */ ROM_REGION( 0x800, "keyboard", 0 ) @@ -3863,19 +4198,18 @@ ROM_START(apple2c) ROM_LOAD ( "341-0265-a.chr", 0x0000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) ROM_LOAD ( "341-0265-a.chr", 0x1000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ( "a2c.128", 0x0000, 0x4000, CRC(f0edaa1b) SHA1(1a9b8aca5e32bb702ddb7791daddd60a89655729)) /* should be 342-0272-A? */ ROM_REGION( 0x800, "keyboard", ROMREGION_ERASE00 ) ROM_LOAD( "342-0132-c.e12", 0x000, 0x800, CRC(e47045f4) SHA1(12a2e718f5f4acd69b6c33a45a4a940b1440a481) ) // 1983 US-Dvorak ROM_END - ROM_START(spectred) ROM_REGION(0x8000,"gfx1",0) ROM_LOAD ( "spm-c_ed_06-08-85.u6", 0x0000, 0x8000, CRC(a1b9ffe4) SHA1(3cb281f19f91372e24685792b7bff778944f99ed) ) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ( "spm-c_ed_50-09-86.u50.H", 0x0000, 0x4000, CRC(1fccaf24) SHA1(1de1438ee8789f83cbc97f75c0485d1fd0f58a38)) ROM_LOAD ( "spm-c_ed_51-09-86.u51.H", 0x4000, 0x4000, CRC(fae8d36c) SHA1(69bed61513482ccb578b89c2fb8e7ba2258e82a5)) @@ -3891,7 +4225,7 @@ ROM_START(tk3000) ROM_REGION(0x2000,"gfx1",0) ROM_LOAD( "tk3000.f7", 0x000000, 0x002000, CRC(70157693) SHA1(a7922e2137f95271011042441d80466fba7bb828) ) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD( "tk3000.f4f6", 0x000000, 0x004000, CRC(5b1e8ab2) SHA1(f163e5753c18ff0e812a448e8da406f102600edf) ) ROM_REGION(0x2000, "kbdcpu", 0) @@ -3904,7 +4238,8 @@ ROM_END ROM_START(prav8c) ROM_REGION(0x2000,"gfx1",0) ROM_LOAD ( "charrom.d20", 0x0000, 0x2000,CRC(935212cc) SHA1(934603a441c631bd841ea0d2ff39525474461e47)) - ROM_REGION(0x8000,"maincpu",0) + + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD ( "prom_cd.d46", 0x0000, 0x2000, CRC(195d0b48) SHA1(f8c4f3722159081f6950207f03bc85da30980c08)) ROM_LOAD ( "prom_ef.d41", 0x2000, 0x2000, CRC(ec6aa2f6) SHA1(64bce893ebf0e22cd8f22436b97ef1bfeddf692f)) @@ -3921,7 +4256,7 @@ ROM_START(apple2c0) ROM_LOAD ( "341-0265-a.chr", 0x0000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) ROM_LOAD ( "341-0265-a.chr", 0x1000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD("3420033a.256", 0x0000, 0x8000, CRC(c8b979b3) SHA1(10767e96cc17bad0970afda3a4146564e6272ba1)) ROM_REGION( 0x800, "keyboard", ROMREGION_ERASE00 ) @@ -3933,7 +4268,7 @@ ROM_START(apple2c3) ROM_LOAD ( "341-0265-a.chr", 0x0000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) ROM_LOAD ( "341-0265-a.chr", 0x1000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD("342-0445-a.256", 0x0000, 0x8000, CRC(bc5a79ff) SHA1(5338d9baa7ae202457b6500fde5883dbdc86e5d3)) ROM_REGION( 0x800, "keyboard", ROMREGION_ERASE00 ) @@ -3945,7 +4280,7 @@ ROM_START(apple2c4) ROM_LOAD ( "341-0265-a.chr", 0x0000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) ROM_LOAD ( "341-0265-a.chr", 0x1000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD("3410445b.256", 0x0000, 0x8000, CRC(06f53328) SHA1(015061597c4cda7755aeb88b735994ffd2f235ca)) ROM_REGION( 0x800, "keyboard", ROMREGION_ERASE00 ) @@ -3957,7 +4292,7 @@ ROM_START(laser128) ROM_LOAD ( "341-0265-a.chr", 0x0000, 0x1000, BAD_DUMP CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) // need to dump real laser rom ROM_LOAD ( "341-0265-a.chr", 0x1000, 0x1000, BAD_DUMP CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) // need to dump real laser rom - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD("laser128.256", 0x0000, 0x8000, CRC(39e59ed3) SHA1(cbd2f45c923725bfd57f8548e65cc80b13bc18da)) ROM_REGION( 0x800, "keyboard", ROMREGION_ERASE00 ) @@ -3969,7 +4304,7 @@ ROM_START(las128ex) ROM_LOAD ( "341-0265-a.chr", 0x0000, 0x1000, BAD_DUMP CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) // need to dump real laser rom ROM_LOAD ( "341-0265-a.chr", 0x1000, 0x1000, BAD_DUMP CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) // need to dump real laser rom - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD("las128ex.256", 0x0000, 0x8000, CRC(b67c8ba1) SHA1(8bd5f82a501b1cf9d988c7207da81e514ca254b0)) ROM_REGION( 0x800, "keyboard", ROMREGION_ERASE00 ) @@ -3981,7 +4316,7 @@ ROM_START(las128e2) ROM_LOAD ( "341-0265-a.chr", 0x0000, 0x1000, BAD_DUMP CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) // need to dump real laser rom ROM_LOAD ( "341-0265-a.chr", 0x1000, 0x1000, BAD_DUMP CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) // need to dump real laser rom - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD( "laser 128ex2 rom version 6.1.bin", 0x000000, 0x008000, CRC(7f911c90) SHA1(125754c1bd777d4c510f5239b96178c6f2e3236b) ) ROM_REGION( 0x800, "keyboard", ROMREGION_ERASE00 ) @@ -3993,13 +4328,42 @@ ROM_START(apple2cp) ROM_LOAD ( "341-0265-a.chr", 0x0000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) ROM_LOAD ( "341-0265-a.chr", 0x1000, 0x1000,CRC(2651014d) SHA1(b2b5d87f52693817fc747df087a4aa1ddcdb1f10)) - ROM_REGION(0x8000,"maincpu",0) + ROM_REGION(0x10000,"maincpu",0) ROM_LOAD("341-0625-a.256", 0x0000, 0x8000, CRC(0b996420) SHA1(1a27ae26966bbafd825d08ad1a24742d3e33557c)) ROM_REGION( 0x800, "keyboard", ROMREGION_ERASE00 ) ROM_LOAD( "341-0132-d.e12", 0x000, 0x800, CRC(c506efb9) SHA1(8e14e85c645187504ec9d162b3ea614a0c421d32) ) ROM_END +ROM_START(ceci) + ROM_REGION(0x2000,"gfx1",0) + ROM_LOAD( "u13.9433c-0202.rcl-zh-32.bin", 0x000000, 0x001000, CRC(816a86f1) SHA1(58ad0008df72896a18601e090ee0d58155ffa5be) ) + ROM_LOAD( "u13.9433c-0202.rcl-zh-32.bin", 0x001000, 0x001000, CRC(816a86f1) SHA1(58ad0008df72896a18601e090ee0d58155ffa5be) ) + + ROM_REGION(0x10000,"maincpu",0) + ROM_SYSTEM_BIOS(0, "default", "ver 1.21") + ROMX_LOAD( "u7.alt", 0x000000, 0x008000, CRC(23c87b3b) SHA1(ff9673f628390e9b0fb60732acc72b580200b5ae), ROM_BIOS(1) ) + ROMX_LOAD( "u35.alt", 0x008000, 0x008000, CRC(a4f40181) SHA1(db1ed69b2ed3280b1c90f76dbd637370d5bc11b0), ROM_BIOS(1) ) + + ROM_SYSTEM_BIOS(1, "older", "ver 1.1") + ROMX_LOAD( "u7.tmm24256ap.bin", 0x000000, 0x008000, CRC(2e3f73b0) SHA1(a2967b3a9a040a1c47eb0fea9a632b833cd1c060), ROM_BIOS(2) ) + ROMX_LOAD( "u35.tmm24256ap.bin", 0x008000, 0x008000, CRC(7f3ee968) SHA1(f4fd7ceda4c9ab9bc626d6abb76b7fd2b5faf2da), ROM_BIOS(2) ) + + ROM_SYSTEM_BIOS(2, "diag", "self test") + ROMX_LOAD( "u7.selftest.bin", 0x000000, 0x008000, CRC(4b045a44) SHA1(d2c716d0eb9f1c70e108d16c6a88d44b894e39fd), ROM_BIOS(3) ) + ROMX_LOAD( "u35.alt", 0x008000, 0x008000, CRC(a4f40181) SHA1(db1ed69b2ed3280b1c90f76dbd637370d5bc11b0), ROM_BIOS(3) ) + + ROM_REGION(0x40000,"cecexp",0) + ROM_LOAD( "u33.mx231024-0059.bin", 0x000000, 0x020000, CRC(a2a59f35) SHA1(01c787e150bf1378088a9333ec9338387aae0f50) ) + ROM_LOAD( "u34.mx231024-0060.bin", 0x020000, 0x020000, CRC(f23470ce) SHA1(dc4cbe19e202d2afb56998ff04255b3171b58e14) ) + + ROM_REGION(0x800,"keyboard",0) + ROM_LOAD( "u26.9433c-0201.rcl-zh-16.bin", 0x000000, 0x000800, CRC(f3190603) SHA1(7efdf6f4ee0ed01ff06341c601496a43d06afd6b) ) + + ROM_REGION(0x100,"slot6",0) + ROM_LOAD( "u40.m2822.bin", 0x000000, 0x000100, CRC(b72a2c70) SHA1(bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4) ) +ROM_END + /* YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME */ COMP( 1983, apple2e, 0, apple2, apple2e, apple2e, apple2e_state, 0, "Apple Computer", "Apple //e", MACHINE_SUPPORTS_SAVE ) COMP( 1983, apple2euk,apple2e, 0, apple2e, apple2euk, apple2e_state, 0, "Apple Computer", "Apple //e (UK)", MACHINE_SUPPORTS_SAVE ) @@ -4019,4 +4383,5 @@ COMP( 1988, las128e2, apple2c, 0, laser128ex2, apple2e, apple2e_state, COMP( 1985, apple2c0, apple2c, 0, apple2c_iwm, apple2c, apple2e_state, 0, "Apple Computer", "Apple //c (UniDisk 3.5)", MACHINE_SUPPORTS_SAVE ) COMP( 1986, apple2c3, apple2c, 0, apple2c_mem, apple2c, apple2e_state, 0, "Apple Computer", "Apple //c (Original Memory Expansion)", MACHINE_SUPPORTS_SAVE ) COMP( 1986, apple2c4, apple2c, 0, apple2c_mem, apple2c, apple2e_state, 0, "Apple Computer", "Apple //c (rev 4)", MACHINE_SUPPORTS_SAVE ) +COMP( 1987, ceci, 0, apple2, ceci, ceci, apple2e_state, 0, "Shaanxi Province Computer Factory", "China Education Computer I", MACHINE_SUPPORTS_SAVE ) COMP( 1988, apple2cp, apple2c, 0, apple2cp, apple2c, apple2e_state, 0, "Apple Computer", "Apple //c Plus", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) |