mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
New working machines
-------------------- China Education Computer I [R. Belmont, Jorma Honkanen]
This commit is contained in:
parent
933cd0e966
commit
fac69ac66f
@ -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 // CEC
|
||||
{
|
||||
if (m_ramrd)
|
||||
{
|
||||
m_4000bank->set_bank(4); // read CEC bank, write normal RAM
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_2000bank->set_bank(ramwr);
|
||||
}
|
||||
|
||||
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
|
||||
else // CEC has only ROM here
|
||||
{
|
||||
m_c800bank->set_bank(0);
|
||||
}
|
||||
|
||||
if ((m_intcxrom) || (!m_slotc3rom) || (m_isiic))
|
||||
{
|
||||
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);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_romswitch)
|
||||
if (m_lcram)
|
||||
{
|
||||
m_lcbank->set_bank(2);
|
||||
m_lcbank->set_bank(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_lcbank->set_bank(0);
|
||||
cec_lcrom_update();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_lcram)
|
||||
{
|
||||
m_lcbank->set_bank(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
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 )
|
||||
|
@ -1271,6 +1271,7 @@ mprof3 // Microprofessor III
|
||||
prav8c // Pravetz 8C
|
||||
tk3000 // Microdigital TK3000
|
||||
spectred
|
||||
ceci // China Education Computer-I
|
||||
|
||||
@source:apple2gs.cpp
|
||||
apple2gs // Aug 1989 Apple IIgs ROM03
|
||||
|
Loading…
Reference in New Issue
Block a user