mirror of
https://github.com/holub/mame
synced 2025-04-18 22:49:58 +03:00
Added a skeleton for the Commodore 1526/MPS-802/4023 printer. [Curt Coder]
This commit is contained in:
parent
b198d89317
commit
83a750e6c0
@ -435,6 +435,8 @@ if (BUSES["CBMIEC"]~=null) then
|
||||
MAME_DIR .. "src/emu/bus/cbmiec/vic1515.h",
|
||||
MAME_DIR .. "src/emu/bus/cbmiec/vic1520.c",
|
||||
MAME_DIR .. "src/emu/bus/cbmiec/vic1520.h",
|
||||
MAME_DIR .. "src/emu/bus/cbmiec/c1526.c",
|
||||
MAME_DIR .. "src/emu/bus/cbmiec/c1526.h",
|
||||
}
|
||||
end
|
||||
|
||||
|
269
src/emu/bus/cbmiec/c1526.c
Normal file
269
src/emu/bus/cbmiec/c1526.c
Normal file
@ -0,0 +1,269 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/**********************************************************************
|
||||
|
||||
Commodore 1526/MPS-802/4023 Printer emulation
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "c1526.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MACROS / CONSTANTS
|
||||
//**************************************************************************
|
||||
|
||||
#define M6504_TAG "u7d"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
const device_type C1526 = &device_creator<c1526_t>;
|
||||
const device_type MPS802 = &device_creator<c1526_t>;
|
||||
const device_type C4023 = &device_creator<c4023_t>;
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( c1526 )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( c1526 )
|
||||
ROM_REGION( 0x2000, M6504_TAG, 0 )
|
||||
ROM_SYSTEM_BIOS( 0, "r05", "Revision 5" )
|
||||
ROMX_LOAD( "325341-05.u8d", 0x0000, 0x2000, CRC(3ef63c59) SHA1(a71be83a476d2777d33dddb0103c036a047975ba), ROM_BIOS(1) )
|
||||
ROM_SYSTEM_BIOS( 1, "r07c", "Revision 7c" )
|
||||
ROMX_LOAD( "325341-08.u8d", 0x0000, 0x2000, CRC(38f85b4a) SHA1(25880091979b21fdaf713b53ef2f1cb8063a3505), ROM_BIOS(2) )
|
||||
ROM_SYSTEM_BIOS( 2, "r07b", "Revision 7b (Swe/Fin)" )
|
||||
ROMX_LOAD( "cbm 1526 vers. 1.0 skand.gen.u8d", 0x0000, 0x2000, CRC(21051f69) SHA1(7e622fc39985ebe9333d2b546b3c85fd6ab17a53), ROM_BIOS(3) )
|
||||
ROM_SYSTEM_BIOS( 3, "grafik", "MPS802 GrafikROM II v60.12" )
|
||||
ROMX_LOAD( "mps802 grafikrom ii v60.12.u8d", 0x0000, 0x2000, CRC(9f5e6b18) SHA1(8b7f620a8f85e250b142d72b812a67fd0e292d68), ROM_BIOS(4) )
|
||||
ROM_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// rom_region - device-specific ROM region
|
||||
//-------------------------------------------------
|
||||
|
||||
const rom_entry *c1526_t::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( c1526 );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( c4023 )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( c4023 )
|
||||
ROM_REGION( 0x2000, M6504_TAG, 0 )
|
||||
ROM_LOAD( "325360-03.u8d", 0x0000, 0x2000, CRC(c6bb0977) SHA1(7a8c43d2e205f58d83709c04bc7795602a892ddd) )
|
||||
ROM_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// rom_region - device-specific ROM region
|
||||
//-------------------------------------------------
|
||||
|
||||
const rom_entry *c4023_t::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( c4023 );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ADDRESS_MAP( c1526_mem )
|
||||
//-------------------------------------------------
|
||||
|
||||
static ADDRESS_MAP_START( c1526_mem, AS_PROGRAM, 8, c1526_base_t )
|
||||
AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION(M6504_TAG, 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// MACHINE_DRIVER( c1526 )
|
||||
//-------------------------------------------------
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( c1526 )
|
||||
MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_4MHz/4)
|
||||
MCFG_CPU_PROGRAM_MAP(c1526_mem)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// machine_config_additions - device-specific
|
||||
// machine configurations
|
||||
//-------------------------------------------------
|
||||
|
||||
machine_config_constructor c1526_t::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( c1526 );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// MACHINE_DRIVER( c4023 )
|
||||
//-------------------------------------------------
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( c4023 )
|
||||
MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_4MHz/4)
|
||||
MCFG_CPU_PROGRAM_MAP(c1526_mem)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// machine_config_additions - device-specific
|
||||
// machine configurations
|
||||
//-------------------------------------------------
|
||||
|
||||
machine_config_constructor c4023_t::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( c4023 );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// INPUT_PORTS( c1526 )
|
||||
//-------------------------------------------------
|
||||
|
||||
static INPUT_PORTS_START( c1526 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// input_ports - device-specific input ports
|
||||
//-------------------------------------------------
|
||||
|
||||
ioport_constructor c1526_t::device_input_ports() const
|
||||
{
|
||||
return INPUT_PORTS_NAME( c1526 );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// INPUT_PORTS( c4023 )
|
||||
//-------------------------------------------------
|
||||
|
||||
static INPUT_PORTS_START( c4023 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// input_ports - device-specific input ports
|
||||
//-------------------------------------------------
|
||||
|
||||
ioport_constructor c4023_t::device_input_ports() const
|
||||
{
|
||||
return INPUT_PORTS_NAME( c4023 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// c1526_base_t - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
c1526_base_t:: c1526_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
|
||||
device_t(mconfig, type, name, tag, owner, clock, shortname, source)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// c1526_t - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
c1526_t::c1526_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
c1526_base_t(mconfig, C1526, "1526", tag, owner, clock, "c1526", __FILE__),
|
||||
device_cbm_iec_interface(mconfig, *this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// c4023_t - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
c4023_t::c4023_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
|
||||
c1526_base_t(mconfig, C4023, "4023", tag, owner, clock, "c4023", __FILE__),
|
||||
device_ieee488_interface(mconfig, *this)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void c1526_base_t::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void c1526_base_t::device_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm_iec_atn -
|
||||
//-------------------------------------------------
|
||||
|
||||
void c1526_t::cbm_iec_atn(int state)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm_iec_data -
|
||||
//-------------------------------------------------
|
||||
|
||||
void c1526_t::cbm_iec_data(int state)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// cbm_iec_reset -
|
||||
//-------------------------------------------------
|
||||
|
||||
void c1526_t::cbm_iec_reset(int state)
|
||||
{
|
||||
if (!state)
|
||||
{
|
||||
device_reset();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ieee488_atn_w -
|
||||
//-------------------------------------------------
|
||||
|
||||
void c4023_t::ieee488_atn(int state)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ieee488_ifc_w -
|
||||
//-------------------------------------------------
|
||||
|
||||
void c4023_t::ieee488_ifc(int state)
|
||||
{
|
||||
if (!state)
|
||||
{
|
||||
device_reset();
|
||||
}
|
||||
}
|
90
src/emu/bus/cbmiec/c1526.h
Normal file
90
src/emu/bus/cbmiec/c1526.h
Normal file
@ -0,0 +1,90 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/**********************************************************************
|
||||
|
||||
Commodore 1526/MPS-802/4023 Printer emulation
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __C1526__
|
||||
#define __C1526__
|
||||
|
||||
#include "emu.h"
|
||||
#include "cbmiec.h"
|
||||
#include "bus/ieee488/ieee488.h"
|
||||
#include "cpu/m6502/m6504.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> c1526_base_t
|
||||
|
||||
class c1526_base_t : public device_t
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
c1526_base_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
};
|
||||
|
||||
|
||||
// ======================> c1526_t
|
||||
|
||||
class c1526_t : public c1526_base_t,
|
||||
public device_cbm_iec_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
c1526_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// optional information overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
virtual ioport_constructor device_input_ports() const;
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
|
||||
protected:
|
||||
// device_cbm_iec_interface overrides
|
||||
void cbm_iec_atn(int state);
|
||||
void cbm_iec_data(int state);
|
||||
void cbm_iec_reset(int state);
|
||||
};
|
||||
|
||||
|
||||
// ======================> c4023_t
|
||||
|
||||
class c4023_t : public c1526_base_t,
|
||||
public device_ieee488_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
c4023_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
// optional information overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const;
|
||||
virtual ioport_constructor device_input_ports() const;
|
||||
virtual const rom_entry *device_rom_region() const;
|
||||
|
||||
protected:
|
||||
// device_ieee488_interface overrides
|
||||
virtual void ieee488_atn(int state);
|
||||
virtual void ieee488_ifc(int state);
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type C1526;
|
||||
extern const device_type MPS802;
|
||||
extern const device_type C4023;
|
||||
|
||||
|
||||
|
||||
#endif
|
@ -494,6 +494,7 @@ int cbm_iec_device::get_signal(int signal)
|
||||
#include "serialbox.h"
|
||||
#include "vic1515.h"
|
||||
#include "vic1520.h"
|
||||
#include "c1526.h"
|
||||
|
||||
SLOT_INTERFACE_START( cbm_iec_devices )
|
||||
SLOT_INTERFACE("c1540", C1540)
|
||||
@ -520,4 +521,6 @@ SLOT_INTERFACE_START( cbm_iec_devices )
|
||||
SLOT_INTERFACE("nl10", C64_NL10_INTERFACE)
|
||||
SLOT_INTERFACE("vic1515", VIC1515)
|
||||
SLOT_INTERFACE("vic1520", VIC1520)
|
||||
SLOT_INTERFACE("c1526", C1526)
|
||||
SLOT_INTERFACE("mps802", MPS802)
|
||||
SLOT_INTERFACE_END
|
||||
|
@ -368,6 +368,7 @@ UINT8 ieee488_device::get_data()
|
||||
//-------------------------------------------------
|
||||
|
||||
// slot devices
|
||||
#include "bus/cbmiec/c1526.h"
|
||||
#include "c2031.h"
|
||||
#include "c2040.h"
|
||||
#include "c8050.h"
|
||||
@ -391,4 +392,5 @@ SLOT_INTERFACE_START( cbm_ieee488_devices )
|
||||
SLOT_INTERFACE("softbox", SOFTBOX)
|
||||
SLOT_INTERFACE("hardbox", HARDBOX)
|
||||
SLOT_INTERFACE("shark", SHARK)
|
||||
SLOT_INTERFACE("c4023", C4023)
|
||||
SLOT_INTERFACE_END
|
||||
|
Loading…
Reference in New Issue
Block a user