mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
(MESS) p500: Rewrote the driver using the PLAs for address decoding. [Curt Coder]
This commit is contained in:
parent
f4d7dcb19a
commit
cd3e8d7955
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -5582,6 +5582,7 @@ src/mess/drivers/c900.c svneol=native#text/plain
|
||||
src/mess/drivers/camplynx.c svneol=native#text/plain
|
||||
src/mess/drivers/casloopy.c svneol=native#text/plain
|
||||
src/mess/drivers/cat.c svneol=native#text/plain
|
||||
src/mess/drivers/cbm2.c svneol=native#text/plain
|
||||
src/mess/drivers/cbmb.c svneol=native#text/plain
|
||||
src/mess/drivers/ccs2422.c svneol=native#text/plain
|
||||
src/mess/drivers/ccs2810.c svneol=native#text/plain
|
||||
@ -6060,6 +6061,7 @@ src/mess/includes/c64_legacy.h svneol=native#text/plain
|
||||
src/mess/includes/c65.h svneol=native#text/plain
|
||||
src/mess/includes/c80.h svneol=native#text/plain
|
||||
src/mess/includes/cbm.h svneol=native#text/plain
|
||||
src/mess/includes/cbm2.h svneol=native#text/plain
|
||||
src/mess/includes/cbmb.h svneol=native#text/plain
|
||||
src/mess/includes/cgc7900.h svneol=native#text/plain
|
||||
src/mess/includes/cgenie.h svneol=native#text/plain
|
||||
@ -6611,6 +6613,10 @@ src/mess/machine/c65.c svneol=native#text/plain
|
||||
src/mess/machine/c8280.c svneol=native#text/plain
|
||||
src/mess/machine/c8280.h svneol=native#text/plain
|
||||
src/mess/machine/cbm.c svneol=native#text/plain
|
||||
src/mess/machine/cbm2_std.c svneol=native#text/plain
|
||||
src/mess/machine/cbm2_std.h svneol=native#text/plain
|
||||
src/mess/machine/cbm2exp.c svneol=native#text/plain
|
||||
src/mess/machine/cbm2exp.h svneol=native#text/plain
|
||||
src/mess/machine/cbmb.c svneol=native#text/plain
|
||||
src/mess/machine/cbmiec.c svneol=native#text/plain
|
||||
src/mess/machine/cbmiec.h svneol=native#text/plain
|
||||
|
@ -9,11 +9,13 @@ NOTE: This list is here only to document available dumps and it's not used (yet)
|
||||
<description>Calc Result</description>
|
||||
<year>198?</year>
|
||||
<publisher>Handic Software</publisher>
|
||||
<part name="cart" interface="cbm700_cart">
|
||||
<dataarea name="rom" size="0x2000">
|
||||
|
||||
<part name="cart" interface="cbm2_cart">
|
||||
<dataarea name="bank1" size="0x2000">
|
||||
<rom name="calc_result-bx700.bin" size="0x2000" crc="4775ebb3" sha1="5c6928a9cd8a3ce6a1d11221292b832295d6543e" offset="0x0000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
|
||||
<part name="flop" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="1070662">
|
||||
<rom name="calc_result_700_bx_single_version_v1.0.d82" size="1070662" crc="244a2122" sha1="44661ed8e3307bb967f97ce1f5a247ca3cded0b3" offset="0" />
|
||||
|
@ -318,6 +318,12 @@ WRITE_LINE_DEVICE_HANDLER( tpi6525_i4_w )
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( tpi6525_device::i0_w ) { tpi6525_i0_w(this, state); }
|
||||
WRITE_LINE_MEMBER( tpi6525_device::i1_w ) { tpi6525_i1_w(this, state); }
|
||||
WRITE_LINE_MEMBER( tpi6525_device::i2_w ) { tpi6525_i2_w(this, state); }
|
||||
WRITE_LINE_MEMBER( tpi6525_device::i3_w ) { tpi6525_i3_w(this, state); }
|
||||
WRITE_LINE_MEMBER( tpi6525_device::i4_w ) { tpi6525_i4_w(this, state); }
|
||||
|
||||
|
||||
READ8_DEVICE_HANDLER( tpi6525_porta_r )
|
||||
{
|
||||
@ -500,6 +506,11 @@ READ8_DEVICE_HANDLER( tpi6525_r )
|
||||
return data;
|
||||
}
|
||||
|
||||
READ8_MEMBER( tpi6525_device::read )
|
||||
{
|
||||
return tpi6525_r(this, space, offset);
|
||||
}
|
||||
|
||||
|
||||
WRITE8_DEVICE_HANDLER( tpi6525_w )
|
||||
{
|
||||
@ -574,6 +585,11 @@ WRITE8_DEVICE_HANDLER( tpi6525_w )
|
||||
}
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( tpi6525_device::write )
|
||||
{
|
||||
tpi6525_w(this, space, offset, data);
|
||||
}
|
||||
|
||||
|
||||
/* this should probably be done better, needed for amigacd.c */
|
||||
|
||||
|
@ -64,6 +64,16 @@ public:
|
||||
|
||||
// access to legacy token
|
||||
void *token() const { assert(m_token != NULL); return m_token; }
|
||||
|
||||
DECLARE_READ8_MEMBER( read );
|
||||
DECLARE_WRITE8_MEMBER( write );
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( i0_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( i1_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( i2_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( i3_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( i4_w );
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
|
@ -64,7 +64,7 @@ inline void pla_device::parse_fusemap()
|
||||
// get_product -
|
||||
//-------------------------------------------------
|
||||
|
||||
inline int pla_device::get_product(int term)
|
||||
inline bool pla_device::get_product(int term)
|
||||
{
|
||||
UINT32 input_true = m_and_true[term] | m_i;
|
||||
UINT32 input_comp = m_and_comp[term] | ~m_i;
|
||||
|
@ -72,7 +72,7 @@ protected:
|
||||
virtual void device_start();
|
||||
|
||||
inline void parse_fusemap();
|
||||
inline int get_product(int term);
|
||||
inline bool get_product(int term);
|
||||
inline void update_outputs();
|
||||
|
||||
int m_inputs;
|
||||
|
1228
src/mess/drivers/cbm2.c
Normal file
1228
src/mess/drivers/cbm2.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -146,33 +146,6 @@ static ADDRESS_MAP_START(cbmb_mem , AS_PROGRAM, 8, cbmb_state )
|
||||
AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_SHARE("kernal")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(p500_mem , AS_PROGRAM, 8, cbmb_state )
|
||||
AM_RANGE(0x00000, 0x1ffff) AM_RAM
|
||||
AM_RANGE(0x20000, 0x2ffff) AM_READONLY AM_WRITENOP
|
||||
AM_RANGE(0x30000, 0x7ffff) AM_RAM
|
||||
AM_RANGE(0x80000, 0x8ffff) AM_READONLY AM_WRITENOP
|
||||
AM_RANGE(0x90000, 0xf07ff) AM_RAM
|
||||
#if 0
|
||||
AM_RANGE(0xf0800, 0xf0fff) AM_READ_LEGACY(SMH_ROM)
|
||||
#endif
|
||||
AM_RANGE(0xf1000, 0xf1fff) AM_ROM /* cartridges or ram */
|
||||
AM_RANGE(0xf2000, 0xf3fff) AM_ROM /* cartridges or ram */
|
||||
AM_RANGE(0xf4000, 0xf5fff) AM_ROM
|
||||
AM_RANGE(0xf6000, 0xf7fff) AM_ROM
|
||||
AM_RANGE(0xf8000, 0xfbfff) AM_ROM AM_SHARE("basic")
|
||||
AM_RANGE(0xfd000, 0xfd3ff) AM_RAM AM_SHARE("videoram") /* videoram */
|
||||
AM_RANGE(0xfd400, 0xfd7ff) AM_RAM_WRITE(cbmb_colorram_w) AM_SHARE("colorram") /* colorram */
|
||||
AM_RANGE(0xfd800, 0xfd8ff) AM_DEVREADWRITE("vic6567", mos6566_device, read, write)
|
||||
/* disk units */
|
||||
AM_RANGE(0xfda00, 0xfdaff) AM_DEVREADWRITE("sid6581", sid6581_device, read, write)
|
||||
/* db00 coprocessor */
|
||||
AM_RANGE(0xfdc00, 0xfdcff) AM_DEVREADWRITE_LEGACY("cia", mos6526_r, mos6526_w)
|
||||
/* dd00 acia */
|
||||
AM_RANGE(0xfde00, 0xfdeff) AM_DEVREADWRITE_LEGACY("tpi6525_0", tpi6525_r, tpi6525_w)
|
||||
AM_RANGE(0xfdf00, 0xfdfff) AM_DEVREADWRITE_LEGACY("tpi6525_1", tpi6525_r, tpi6525_w)
|
||||
AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_SHARE("kernal")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -311,61 +284,6 @@ static const mc6845_interface cbm700_crtc = {
|
||||
NULL
|
||||
};
|
||||
|
||||
/* p500 uses a VIC II chip */
|
||||
|
||||
READ8_MEMBER( cbmb_state::vic_lightpen_x_cb )
|
||||
{
|
||||
return ioport("LIGHTX")->read() & ~0x01;
|
||||
}
|
||||
|
||||
READ8_MEMBER( cbmb_state::vic_lightpen_y_cb )
|
||||
{
|
||||
return ioport("LIGHTY")->read() & ~0x01;
|
||||
}
|
||||
|
||||
READ8_MEMBER( cbmb_state::vic_lightpen_button_cb )
|
||||
{
|
||||
return ioport("OTHER")->read() & 0x04;
|
||||
}
|
||||
|
||||
READ8_MEMBER( cbmb_state::vic_dma_read )
|
||||
{
|
||||
if (offset >= 0x1000)
|
||||
return m_videoram[offset & 0x3ff];
|
||||
else
|
||||
return m_chargen[offset & 0xfff];
|
||||
}
|
||||
|
||||
READ8_MEMBER( cbmb_state::vic_dma_read_color )
|
||||
{
|
||||
return m_colorram[offset & 0x3ff];
|
||||
}
|
||||
|
||||
READ8_MEMBER( cbmb_state::vic_rdy_cb )
|
||||
{
|
||||
return ioport("CTRLSEL")->read() & 0x08;
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( vic_videoram_map, AS_0, 8, cbmb_state )
|
||||
AM_RANGE(0x0000, 0x3fff) AM_READ(vic_dma_read)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( vic_colorram_map, AS_1, 8, cbmb_state )
|
||||
AM_RANGE(0x000, 0x3ff) AM_READ(vic_dma_read_color)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static MOS6567_INTERFACE( vic_intf )
|
||||
{
|
||||
"screen",
|
||||
"maincpu",
|
||||
DEVCB_NULL,
|
||||
DEVCB_NULL,
|
||||
DEVCB_DRIVER_MEMBER(cbmb_state, vic_lightpen_x_cb),
|
||||
DEVCB_DRIVER_MEMBER(cbmb_state, vic_lightpen_y_cb),
|
||||
DEVCB_DRIVER_MEMBER(cbmb_state, vic_lightpen_button_cb),
|
||||
DEVCB_DRIVER_MEMBER(cbmb_state, vic_rdy_cb)
|
||||
};
|
||||
|
||||
static const sid6581_interface sid_intf =
|
||||
{
|
||||
DEVCB_NULL,
|
||||
@ -494,41 +412,6 @@ static MACHINE_CONFIG_DERIVED( bx256hp, cbm700 )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( p500, cbmb_state )
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M6509, VIC6567_CLOCK) /* 7.8336 MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(p500_mem)
|
||||
//MCFG_CPU_PERIODIC_INT_DRIVER(cbmb_state, vic2_raster_irq, VIC6567_HRETRACERATE)
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(cbmb_state, cbmb )
|
||||
|
||||
/* video hardware */
|
||||
MCFG_MOS6567_ADD("vic6567", "screen", VIC6567_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SOUND_ADD("sid6581", SID6581, 1000000)
|
||||
MCFG_SOUND_CONFIG(sid_intf)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
||||
|
||||
/* devices */
|
||||
MCFG_QUICKLOAD_ADD("quickload", p500, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS)
|
||||
|
||||
/* cia */
|
||||
MCFG_MOS6526R1_ADD("cia", VIC6567_CLOCK, 60, cbmb_cia)
|
||||
|
||||
/* tpi */
|
||||
MCFG_TPI6525_ADD("tpi6525_0", cbmb_tpi_0_intf)
|
||||
MCFG_TPI6525_ADD("tpi6525_1", cbmb_tpi_1_intf)
|
||||
|
||||
/* IEEE bus */
|
||||
MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8250")
|
||||
|
||||
MCFG_FRAGMENT_ADD(cbmb_cartslot)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* ROM definition(s)
|
||||
@ -678,26 +561,6 @@ ROM_START( cbm720se )
|
||||
ROM_LOAD( "906114-05.bin", 0x00, 0xf5, CRC(ff6ba6b6) SHA1(45808c570eb2eda7091c51591b3dbd2db1ac646a) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( p500 )
|
||||
ROM_REGION( 0x101000, "maincpu", 0 )
|
||||
ROM_SYSTEM_BIOS(0, "default", "BASIC 4.0 new" )
|
||||
ROMX_LOAD( "901236-02.bin", 0xf8000, 0x2000, CRC(c62ab16f) SHA1(f50240407bade901144f7e9f489fa9c607834eca), ROM_BIOS(1) )
|
||||
ROMX_LOAD( "901235-02.bin", 0xfa000, 0x2000, CRC(20b7df33) SHA1(1b9a55f12f8cf025754d8029cc5324b474c35841), ROM_BIOS(1) )
|
||||
ROMX_LOAD( "901234-02.bin", 0xfe000, 0x2000, CRC(f46bbd2b) SHA1(097197d4d08e0b82e0466a5f1fbd49a24f3d2523), ROM_BIOS(1) )
|
||||
ROM_SYSTEM_BIOS(1, "old", "BASIC 4.0 old" )
|
||||
ROMX_LOAD( "901236-01.bin", 0xf8000, 0x2000, CRC(33eb6aa2) SHA1(7e3497ae2edbb38c753bd31ed1bf3ae798c9a976), ROM_BIOS(2) )
|
||||
ROMX_LOAD( "901235-01.bin", 0xfa000, 0x2000, CRC(18a27feb) SHA1(951b5370dd7db762b8504a141f9f26de345069bb), ROM_BIOS(2) )
|
||||
ROMX_LOAD( "901234-01.bin", 0xfe000, 0x2000, CRC(67962025) SHA1(24b41b65c85bf30ab4e2911f677ce9843845b3b1), ROM_BIOS(2) )
|
||||
|
||||
ROM_LOAD( "901225-01.bin", 0x100000, 0x1000, CRC(ec4272ee) SHA1(adc7c31e18c7c7413d54802ef2f4193da14711aa) )
|
||||
|
||||
ROM_REGION( 0xf5, "pla1", 0 )
|
||||
ROM_LOAD( "906114-02.bin", 0x00, 0xf5, CRC(6436b20b) SHA1(57ebebe771791288051afd1abe9b7500bd2df847) )
|
||||
|
||||
ROM_REGION( 0xf5, "pla2", 0 )
|
||||
ROM_LOAD( "906114-03.bin", 0x00, 0xf5, CRC(668c073e) SHA1(1115858bb2dc91ea9e2016ba2e23ec94239358b4) )
|
||||
ROM_END
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
@ -720,5 +583,3 @@ COMP( 1983, cbm720, cbm610, 0, cbm700pal, cbm700, cbmb_state, cbm700,
|
||||
COMP( 1983, cbm720se, cbm610, 0, cbm700pal, cbm700, cbmb_state, cbm700, "Commodore Business Machines", "CBM 720 (Sweden/Finland, 50Hz)", GAME_NOT_WORKING )
|
||||
|
||||
COMP( 1983, bx256hp, cbm610, 0, bx256hp, cbm700, cbmb_state, cbm700, "Commodore Business Machines", "BX256-80HP (60Hz)", GAME_NOT_WORKING )
|
||||
|
||||
COMP( 1983, p500, 0, 0, p500, p500, cbmb_state, p500, "Commodore Business Machines", "P500 (proto, a.k.a. B128-40 or Pet-II)", GAME_NOT_WORKING )
|
||||
|
164
src/mess/includes/cbm2.h
Normal file
164
src/mess/includes/cbm2.h
Normal file
@ -0,0 +1,164 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef __P500__
|
||||
#define __P500__
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/m6502/m6509.h"
|
||||
#include "formats/cbm_snqk.h"
|
||||
#include "includes/cbm.h"
|
||||
#include "machine/6525tpi.h"
|
||||
#include "machine/6526cia.h"
|
||||
#include "machine/6551acia.h"
|
||||
#include "machine/cbm2exp.h"
|
||||
#include "machine/cbmipt.h"
|
||||
#include "machine/ieee488.h"
|
||||
#include "machine/petcass.h"
|
||||
#include "machine/pla.h"
|
||||
#include "machine/ram.h"
|
||||
#include "machine/vcsctrl.h"
|
||||
#include "sound/dac.h"
|
||||
#include "sound/sid6581.h"
|
||||
#include "video/mos6566.h"
|
||||
|
||||
#define M6509_TAG "u13"
|
||||
#define PLA1_TAG "u78"
|
||||
#define PLA2_TAG "u88"
|
||||
#define MOS6567_TAG "u23"
|
||||
#define MOS6569_TAG "u23"
|
||||
#define MOS6851_TAG "u4"
|
||||
#define MOS6525_1_TAG "u20"
|
||||
#define MOS6525_2_TAG "u102"
|
||||
#define MOS6551A_TAG "u19"
|
||||
#define MOS6526_TAG "u2"
|
||||
#define SCREEN_TAG "screen"
|
||||
#define CONTROL1_TAG "joy1"
|
||||
#define CONTROL2_TAG "joy2"
|
||||
|
||||
class p500_state : public driver_device
|
||||
{
|
||||
public:
|
||||
p500_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, M6509_TAG),
|
||||
m_pla1(*this, PLA1_TAG),
|
||||
m_pla2(*this, PLA2_TAG),
|
||||
m_vic(*this, MOS6569_TAG),
|
||||
m_sid(*this, MOS6851_TAG),
|
||||
m_tpi1(*this, MOS6525_1_TAG),
|
||||
m_tpi2(*this, MOS6525_2_TAG),
|
||||
m_acia(*this, MOS6551A_TAG),
|
||||
m_cia(*this, MOS6526_TAG),
|
||||
m_joy1(*this, CONTROL1_TAG),
|
||||
m_joy2(*this, CONTROL2_TAG),
|
||||
m_exp(*this, CBM2_EXPANSION_SLOT_TAG),
|
||||
m_ram(*this, RAM_TAG),
|
||||
m_cassette(*this, PET_DATASSETTE_PORT_TAG),
|
||||
m_ieee(*this, IEEE488_TAG),
|
||||
m_buffer_ram(*this, "buffer_ram"),
|
||||
m_dramon(1),
|
||||
m_video_ram(*this, "video_ram"),
|
||||
m_color_ram(*this, "color_ram"),
|
||||
m_statvid(1),
|
||||
m_vicdotsel(1),
|
||||
m_vicbnksel(0x03),
|
||||
m_todclk(0),
|
||||
m_vic_irq(CLEAR_LINE),
|
||||
m_tpi1_irq(CLEAR_LINE),
|
||||
m_cass_rd(1),
|
||||
m_user_flag(0),
|
||||
m_tpi2_pa(0),
|
||||
m_tpi2_pb(0)
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<pls100_device> m_pla1;
|
||||
required_device<pls100_device> m_pla2;
|
||||
required_device<mos6566_device> m_vic;
|
||||
required_device<sid6581_device> m_sid;
|
||||
required_device<tpi6525_device> m_tpi1;
|
||||
required_device<tpi6525_device> m_tpi2;
|
||||
required_device<acia6551_device> m_acia;
|
||||
required_device<mos6526_device> m_cia;
|
||||
required_device<vcs_control_port_device> m_joy1;
|
||||
required_device<vcs_control_port_device> m_joy2;
|
||||
required_device<cbm2_expansion_slot_device> m_exp;
|
||||
required_device<ram_device> m_ram;
|
||||
required_device<pet_datassette_port_device> m_cassette;
|
||||
required_device<ieee488_device> m_ieee;
|
||||
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
|
||||
virtual void machine_start();
|
||||
virtual void machine_reset();
|
||||
|
||||
void check_interrupts();
|
||||
void bankswitch(offs_t offset, offs_t va, int srw, int sphi0, int sphi1, int sphi2, int ba, int ae, int bras, int bcas, int busy2, int refen,
|
||||
int *datxen, int *dramxen, int *clrniben, int *_64kcasen, int *casenb, int *viddaten, int *viddat_tr,
|
||||
int *clrnibcs, int *extbufcs, int *discromcs, int *buframcs, int *charomcs, int *viccs, int *vidmatcs,
|
||||
int *csbank1, int *csbank2, int *csbank3, int *basiclocs, int *basichics, int *kernalcs,
|
||||
int *cs1, int *sidcs, int *extprtcs, int *ciacs, int *aciacs, int *tript1cs, int *tript2cs, int *aec, int *vsysaden);
|
||||
UINT8 read_memory(address_space &space, offs_t offset, offs_t va, int sphi0, int sphi1, int sphi2, int ba, int ae, int bras, int bcas);
|
||||
void write_memory(address_space &space, offs_t offset, UINT8 data, int sphi0, int sphi1, int sphi2, int ba, int ae, int bras, int bcas);
|
||||
|
||||
DECLARE_READ8_MEMBER( read );
|
||||
DECLARE_WRITE8_MEMBER( write );
|
||||
|
||||
DECLARE_READ8_MEMBER( vic_videoram_r );
|
||||
DECLARE_WRITE_LINE_MEMBER( vic_irq_w );
|
||||
|
||||
DECLARE_READ8_MEMBER( sid_potx_r );
|
||||
DECLARE_READ8_MEMBER( sid_poty_r );
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( tpi1_irq_w );
|
||||
DECLARE_READ8_MEMBER( tpi1_pa_r );
|
||||
DECLARE_WRITE8_MEMBER( tpi1_pa_w );
|
||||
DECLARE_READ8_MEMBER( tpi1_pb_r );
|
||||
DECLARE_WRITE8_MEMBER( tpi1_pb_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( tpi1_ca_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( tpi1_cb_w );
|
||||
|
||||
DECLARE_WRITE8_MEMBER( tpi2_pa_w );
|
||||
DECLARE_WRITE8_MEMBER( tpi2_pb_w );
|
||||
DECLARE_READ8_MEMBER( tpi2_pc_r );
|
||||
DECLARE_WRITE8_MEMBER( tpi2_pc_w );
|
||||
|
||||
DECLARE_READ8_MEMBER( cia_pa_r );
|
||||
DECLARE_WRITE8_MEMBER( cia_pa_w );
|
||||
DECLARE_READ8_MEMBER( cia_pb_r );
|
||||
DECLARE_WRITE8_MEMBER( cia_pb_w );
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( tape_read_w );
|
||||
|
||||
// memory state
|
||||
optional_shared_ptr<UINT8> m_buffer_ram;
|
||||
UINT8 *m_basic;
|
||||
UINT8 *m_kernal;
|
||||
UINT8 *m_charom;
|
||||
int m_dramon;
|
||||
|
||||
// video state
|
||||
optional_shared_ptr<UINT8> m_video_ram;
|
||||
optional_shared_ptr<UINT8> m_color_ram;
|
||||
int m_statvid;
|
||||
int m_vicdotsel;
|
||||
int m_vicbnksel;
|
||||
|
||||
// interrupt state
|
||||
int m_todclk;
|
||||
int m_vic_irq;
|
||||
int m_tpi1_irq;
|
||||
int m_cass_rd;
|
||||
int m_user_flag;
|
||||
|
||||
// keyboard state;
|
||||
UINT8 m_tpi2_pa;
|
||||
UINT8 m_tpi2_pb;
|
||||
UINT8 m_cia_pa;
|
||||
|
||||
// timers
|
||||
emu_timer *m_todclk_timer;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
66
src/mess/machine/cbm2_std.c
Normal file
66
src/mess/machine/cbm2_std.c
Normal file
@ -0,0 +1,66 @@
|
||||
/**********************************************************************
|
||||
|
||||
Commodore CBM-II Standard cartridge emulation
|
||||
|
||||
Copyright MESS Team.
|
||||
Visit http://mamedev.org for licensing and usage restrictions.
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "cbm2_std.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
const device_type CBM2_STD = &device_creator<cbm2_standard_cartridge_device>;
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm2_standard_cartridge_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
cbm2_standard_cartridge_device::cbm2_standard_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
device_t(mconfig, CBM2_STD, "CBM-II standard cartridge", tag, owner, clock),
|
||||
device_cbm2_expansion_card_interface(mconfig, *this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void cbm2_standard_cartridge_device::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm2_bd_r - cartridge data read
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8 cbm2_standard_cartridge_device::cbm2_bd_r(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
|
||||
{
|
||||
if (!csbank1 && m_bank1_mask)
|
||||
{
|
||||
data = m_bank1[offset & m_bank1_mask];
|
||||
}
|
||||
else if (!csbank2 && m_bank2_mask)
|
||||
{
|
||||
data = m_bank2[offset & m_bank2_mask];
|
||||
}
|
||||
else if (!csbank3 && m_bank3_mask)
|
||||
{
|
||||
data = m_bank3[offset & m_bank3_mask];
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
49
src/mess/machine/cbm2_std.h
Normal file
49
src/mess/machine/cbm2_std.h
Normal file
@ -0,0 +1,49 @@
|
||||
/**********************************************************************
|
||||
|
||||
Commodore CBM-II Standard cartridge emulation
|
||||
|
||||
Copyright MESS Team.
|
||||
Visit http://mamedev.org for licensing and usage restrictions.
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __CBM2_STANDARD_CARTRIDGE__
|
||||
#define __CBM2_STANDARD_CARTRIDGE__
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "imagedev/cartslot.h"
|
||||
#include "machine/cbm2exp.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> cbm2_standard_cartridge_device
|
||||
|
||||
class cbm2_standard_cartridge_device : public device_t,
|
||||
public device_cbm2_expansion_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
cbm2_standard_cartridge_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete() { m_shortname = "cbm2_standard"; }
|
||||
virtual void device_start();
|
||||
|
||||
// device_cbm2_expansion_card_interface overrides
|
||||
virtual UINT8 cbm2_bd_r(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3);
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type CBM2_STD;
|
||||
|
||||
|
||||
#endif
|
323
src/mess/machine/cbm2exp.c
Normal file
323
src/mess/machine/cbm2exp.c
Normal file
@ -0,0 +1,323 @@
|
||||
/**********************************************************************
|
||||
|
||||
Commodore CBM-II Expansion Port emulation
|
||||
|
||||
Copyright MESS Team.
|
||||
Visit http://mamedev.org for licensing and usage restrictions.
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "machine/cbm2exp.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACROS/CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define LOG 0
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
const device_type CBM2_EXPANSION_SLOT = &device_creator<cbm2_expansion_slot_device>;
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE CBM2_EXPANSION CARD INTERFACE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_cbm2_expansion_card_interface - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
device_cbm2_expansion_card_interface::device_cbm2_expansion_card_interface(const machine_config &mconfig, device_t &device)
|
||||
: device_slot_card_interface(mconfig, device),
|
||||
m_bank1(NULL),
|
||||
m_bank2(NULL),
|
||||
m_bank3(NULL),
|
||||
m_ram(NULL),
|
||||
m_nvram(NULL),
|
||||
m_nvram_size(0),
|
||||
m_bank1_mask(0),
|
||||
m_bank2_mask(0),
|
||||
m_bank3_mask(0),
|
||||
m_ram_mask(0)
|
||||
{
|
||||
m_slot = dynamic_cast<cbm2_expansion_slot_device *>(device.owner());
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ~device_cbm2_expansion_card_interface - destructor
|
||||
//-------------------------------------------------
|
||||
|
||||
device_cbm2_expansion_card_interface::~device_cbm2_expansion_card_interface()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm2_bank1_pointer - get bank 1 pointer
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8* device_cbm2_expansion_card_interface::cbm2_bank1_pointer(running_machine &machine, size_t size)
|
||||
{
|
||||
if (m_bank1 == NULL)
|
||||
{
|
||||
m_bank1 = auto_alloc_array(machine, UINT8, size);
|
||||
|
||||
m_bank1_mask = size - 1;
|
||||
}
|
||||
|
||||
return m_bank1;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm2_bank2_pointer - get bank 2 pointer
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8* device_cbm2_expansion_card_interface::cbm2_bank2_pointer(running_machine &machine, size_t size)
|
||||
{
|
||||
if (m_bank2 == NULL)
|
||||
{
|
||||
m_bank2 = auto_alloc_array(machine, UINT8, size);
|
||||
|
||||
m_bank2_mask = size - 1;
|
||||
}
|
||||
|
||||
return m_bank2;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm2_bank3_pointer - get bank 3 pointer
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8* device_cbm2_expansion_card_interface::cbm2_bank3_pointer(running_machine &machine, size_t size)
|
||||
{
|
||||
if (m_bank3 == NULL)
|
||||
{
|
||||
m_bank3 = auto_alloc_array(machine, UINT8, size);
|
||||
|
||||
m_bank3_mask = size - 1;
|
||||
}
|
||||
|
||||
return m_bank1;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm2_ram_pointer - get RAM pointer
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8* device_cbm2_expansion_card_interface::cbm2_ram_pointer(running_machine &machine, size_t size)
|
||||
{
|
||||
if (m_ram == NULL)
|
||||
{
|
||||
m_ram = auto_alloc_array(machine, UINT8, size);
|
||||
|
||||
m_ram_mask = size - 1;
|
||||
}
|
||||
|
||||
return m_ram;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm2_ram_pointer - get NVRAM pointer
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8* device_cbm2_expansion_card_interface::cbm2_nvram_pointer(running_machine &machine, size_t size)
|
||||
{
|
||||
if (m_nvram == NULL)
|
||||
{
|
||||
m_nvram = auto_alloc_array(machine, UINT8, size);
|
||||
|
||||
m_nvram_mask = size - 1;
|
||||
m_nvram_size = size;
|
||||
}
|
||||
|
||||
return m_nvram;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm2_expansion_slot_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
cbm2_expansion_slot_device::cbm2_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
device_t(mconfig, CBM2_EXPANSION_SLOT, "PET-II expansion port", tag, owner, clock),
|
||||
device_slot_interface(mconfig, *this),
|
||||
device_image_interface(mconfig, *this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm2_expansion_slot_device - destructor
|
||||
//-------------------------------------------------
|
||||
|
||||
cbm2_expansion_slot_device::~cbm2_expansion_slot_device()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void cbm2_expansion_slot_device::device_config_complete()
|
||||
{
|
||||
// set brief and instance name
|
||||
update_names();
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void cbm2_expansion_slot_device::device_start()
|
||||
{
|
||||
m_cart = dynamic_cast<device_cbm2_expansion_card_interface *>(get_card_device());
|
||||
|
||||
// inherit bus clock
|
||||
if (clock() == 0)
|
||||
{
|
||||
cbm2_expansion_slot_device *root = machine().device<cbm2_expansion_slot_device>(CBM2_EXPANSION_SLOT_TAG);
|
||||
assert(root);
|
||||
set_unscaled_clock(root->clock());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void cbm2_expansion_slot_device::device_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// call_load -
|
||||
//-------------------------------------------------
|
||||
|
||||
bool cbm2_expansion_slot_device::call_load()
|
||||
{
|
||||
size_t size = 0;
|
||||
|
||||
if (m_cart)
|
||||
{
|
||||
if (software_entry() == NULL)
|
||||
{
|
||||
size = length();
|
||||
|
||||
if (!mame_stricmp(filetype(), "20"))
|
||||
{
|
||||
fread(m_cart->cbm2_bank1_pointer(machine(), size), size);
|
||||
}
|
||||
else if (!mame_stricmp(filetype(), "40"))
|
||||
{
|
||||
fread(m_cart->cbm2_bank2_pointer(machine(), size), size);
|
||||
}
|
||||
else if (!mame_stricmp(filetype(), "60"))
|
||||
{
|
||||
fread(m_cart->cbm2_bank3_pointer(machine(), size), size);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
size = get_software_region_length("bank1");
|
||||
if (size) memcpy(m_cart->cbm2_bank1_pointer(machine(), size), get_software_region("bank1"), size);
|
||||
|
||||
size = get_software_region_length("bank2");
|
||||
if (size) memcpy(m_cart->cbm2_bank2_pointer(machine(), size), get_software_region("bank2"), size);
|
||||
|
||||
size = get_software_region_length("bank3");
|
||||
if (size) memcpy(m_cart->cbm2_bank3_pointer(machine(), size), get_software_region("bank3"), size);
|
||||
|
||||
size = get_software_region_length("ram");
|
||||
if (size) memset(m_cart->cbm2_ram_pointer(machine(), size), 0, size);
|
||||
|
||||
size = get_software_region_length("nvram");
|
||||
if (size) memset(m_cart->cbm2_nvram_pointer(machine(), size), 0, size);
|
||||
}
|
||||
}
|
||||
|
||||
return IMAGE_INIT_PASS;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// call_softlist_load -
|
||||
//-------------------------------------------------
|
||||
|
||||
bool cbm2_expansion_slot_device::call_softlist_load(char *swlist, char *swname, rom_entry *start_entry)
|
||||
{
|
||||
load_software_part_region(this, swlist, swname, start_entry);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// get_default_card_software -
|
||||
//-------------------------------------------------
|
||||
|
||||
const char * cbm2_expansion_slot_device::get_default_card_software(const machine_config &config, emu_options &options)
|
||||
{
|
||||
return software_get_default_slot(config, options, this, "standard");
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// read - cartridge data read
|
||||
//-------------------------------------------------
|
||||
|
||||
UINT8 cbm2_expansion_slot_device::read(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
|
||||
{
|
||||
if (m_cart != NULL)
|
||||
{
|
||||
data = m_cart->cbm2_bd_r(space, offset, data, csbank1, csbank2, csbank3);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// write - cartridge data write
|
||||
//-------------------------------------------------
|
||||
|
||||
void cbm2_expansion_slot_device::write(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3)
|
||||
{
|
||||
if (m_cart != NULL)
|
||||
{
|
||||
m_cart->cbm2_bd_w(space, offset, data, csbank1, csbank2, csbank3);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// phi2 - system clock frequency
|
||||
//-------------------------------------------------
|
||||
|
||||
int cbm2_expansion_slot_device::phi2()
|
||||
{
|
||||
return clock();
|
||||
}
|
157
src/mess/machine/cbm2exp.h
Normal file
157
src/mess/machine/cbm2exp.h
Normal file
@ -0,0 +1,157 @@
|
||||
/**********************************************************************
|
||||
|
||||
Commodore CBM-II Expansion Port emulation
|
||||
|
||||
Copyright MESS Team.
|
||||
Visit http://mamedev.org for licensing and usage restrictions.
|
||||
|
||||
**********************************************************************
|
||||
|
||||
A0 1 A BD0
|
||||
A1 2 B BD1
|
||||
A2 3 C BD2
|
||||
A3 4 D BD3
|
||||
A4 5 E BD4
|
||||
A5 6 F BD5
|
||||
A6 7 H BD6
|
||||
A7 8 J BD7
|
||||
A8 9 K GND
|
||||
A9 10 L GND
|
||||
A10 11 M SR/_W
|
||||
A11 12 N Sphi2
|
||||
A12 13 P _CSBANK1
|
||||
+5V 14 R _CSBANK2
|
||||
+5V 15 S _CSBANK2
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __CBM2_EXPANSION_SLOT__
|
||||
#define __CBM2_EXPANSION_SLOT__
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define CBM2_EXPANSION_SLOT_TAG "exp"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define CBM2_EXPANSION_INTERFACE(_name) \
|
||||
const pet_expansion_slot_interface (_name) =
|
||||
|
||||
|
||||
#define MCFG_CBM2_EXPANSION_SLOT_ADD(_tag, _clock, _slot_intf, _def_slot, _def_inp) \
|
||||
MCFG_DEVICE_ADD(_tag, CBM2_EXPANSION_SLOT, _clock) \
|
||||
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, _def_inp, false)
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> cbm2_expansion_slot_device
|
||||
|
||||
class device_cbm2_expansion_card_interface;
|
||||
|
||||
class cbm2_expansion_slot_device : public device_t,
|
||||
public device_slot_interface,
|
||||
public device_image_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
cbm2_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
virtual ~cbm2_expansion_slot_device();
|
||||
|
||||
// computer interface
|
||||
UINT8 read(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3);
|
||||
void write(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3);
|
||||
|
||||
// cartridge interface
|
||||
int phi2();
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
// image-level overrides
|
||||
virtual bool call_load();
|
||||
virtual bool call_softlist_load(char *swlist, char *swname, rom_entry *start_entry);
|
||||
|
||||
virtual iodevice_t image_type() const { return IO_CARTSLOT; }
|
||||
|
||||
virtual bool is_readable() const { return 1; }
|
||||
virtual bool is_writeable() const { return 0; }
|
||||
virtual bool is_creatable() const { return 0; }
|
||||
virtual bool must_be_loaded() const { return 0; }
|
||||
virtual bool is_reset_on_load() const { return 1; }
|
||||
virtual const char *image_interface() const { return "cbm2_cart"; }
|
||||
virtual const char *file_extensions() const { return "20,40,60"; }
|
||||
virtual const option_guide *create_option_guide() const { return NULL; }
|
||||
|
||||
// slot interface overrides
|
||||
virtual const char * get_default_card_software(const machine_config &config, emu_options &options);
|
||||
|
||||
device_cbm2_expansion_card_interface *m_cart;
|
||||
};
|
||||
|
||||
|
||||
// ======================> device_cbm2_expansion_card_interface
|
||||
|
||||
class device_cbm2_expansion_card_interface : public device_slot_card_interface
|
||||
{
|
||||
friend class cbm2_expansion_slot_device;
|
||||
|
||||
public:
|
||||
// construction/destruction
|
||||
device_cbm2_expansion_card_interface(const machine_config &mconfig, device_t &device);
|
||||
virtual ~device_cbm2_expansion_card_interface();
|
||||
|
||||
protected:
|
||||
// initialization
|
||||
virtual UINT8* cbm2_bank1_pointer(running_machine &machine, size_t size);
|
||||
virtual UINT8* cbm2_bank2_pointer(running_machine &machine, size_t size);
|
||||
virtual UINT8* cbm2_bank3_pointer(running_machine &machine, size_t size);
|
||||
virtual UINT8* cbm2_ram_pointer(running_machine &machine, size_t size);
|
||||
virtual UINT8* cbm2_nvram_pointer(running_machine &machine, size_t size);
|
||||
|
||||
// runtime
|
||||
virtual UINT8 cbm2_bd_r(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3) { return data; };
|
||||
virtual void cbm2_bd_w(address_space &space, offs_t offset, UINT8 data, int csbank1, int csbank2, int csbank3) { };
|
||||
|
||||
cbm2_expansion_slot_device *m_slot;
|
||||
|
||||
UINT8 *m_bank1;
|
||||
UINT8 *m_bank2;
|
||||
UINT8 *m_bank3;
|
||||
UINT8 *m_ram;
|
||||
UINT8 *m_nvram;
|
||||
|
||||
size_t m_nvram_size;
|
||||
|
||||
size_t m_bank1_mask;
|
||||
size_t m_bank2_mask;
|
||||
size_t m_bank3_mask;
|
||||
size_t m_ram_mask;
|
||||
size_t m_nvram_mask;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type CBM2_EXPANSION_SLOT;
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -1043,6 +1043,10 @@ INPUT_PORTS_START( vic_special )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
SLOT_INTERFACE_START( cbm2_expansion_cards )
|
||||
SLOT_INTERFACE_INTERNAL("standard", CBM2_STD)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
SLOT_INTERFACE_START( cbm_datassette_devices )
|
||||
SLOT_INTERFACE("c1530", C1530)
|
||||
SLOT_INTERFACE_END
|
||||
|
@ -60,6 +60,7 @@
|
||||
#include "machine/c64_xl80.h"
|
||||
#include "machine/c64_zaxxon.h"
|
||||
#include "machine/c128_comal80.h"
|
||||
#include "machine/cbm2_std.h"
|
||||
#include "machine/c1541.h"
|
||||
#include "machine/c1551.h"
|
||||
#include "machine/c1571.h"
|
||||
@ -149,6 +150,7 @@ INPUT_PORTS_EXTERN( vic_special );
|
||||
|
||||
|
||||
|
||||
SLOT_INTERFACE_EXTERN( cbm2_expansion_cards );
|
||||
SLOT_INTERFACE_EXTERN( cbm_datassette_devices );
|
||||
SLOT_INTERFACE_EXTERN( cbm_iec_devices );
|
||||
SLOT_INTERFACE_EXTERN( sx1541_iec_devices );
|
||||
|
@ -888,6 +888,9 @@ $(MESSOBJ)/cbm.a: \
|
||||
$(MESS_DRIVERS)/cbmb.o \
|
||||
$(MESS_MACHINE)/cbmb.o \
|
||||
$(MESS_VIDEO)/cbmb.o \
|
||||
$(MESS_DRIVERS)/cbm2.o \
|
||||
$(MESS_MACHINE)/cbm2exp.o \
|
||||
$(MESS_MACHINE)/cbm2_std.o \
|
||||
$(MESS_DRIVERS)/c65.o \
|
||||
$(MESS_MACHINE)/c65.o \
|
||||
$(MESS_DRIVERS)/c128.o \
|
||||
|
Loading…
Reference in New Issue
Block a user