New working software list additions

-----------------------------------
dragon_cart: AMTOR/AX25 [David Linsley]
This commit is contained in:
Nigel Barnes 2019-07-16 21:47:01 +01:00
parent f1eb546264
commit 7e74ffcde1
5 changed files with 181 additions and 0 deletions

View File

@ -25,6 +25,19 @@ Compiled by K1W1 and Cowering (from GoodCoCo)
</part> </part>
</software> </software>
<software name="amtor" supported="no">
<description>AMTOR/AX25</description>
<year>1990</year>
<publisher>Grosvenor Software</publisher>
<info name="usage" value="EXEC 49152" />
<part name="cart" interface="coco_cart">
<feature name="slot" value="amtor" />
<dataarea name="rom" size="32768">
<rom name="ax25-amtor (1990) (grosvenor).rom" size="32768" crc="81ba0d4a" sha1="6ad86b5faa5ba07ad42256e96f1c798cd3f0ea5e"/>
</dataarea>
</part>
</software>
<software name="doodlbug"> <software name="doodlbug">
<description>Doodle Bug</description> <description>Doodle Bug</description>
<year>1982</year> <year>1982</year>

View File

@ -3019,6 +3019,8 @@ if (BUSES["COCO"]~=null) then
MAME_DIR .. "src/devices/bus/coco/coco_dwsock.h", MAME_DIR .. "src/devices/bus/coco/coco_dwsock.h",
MAME_DIR .. "src/devices/bus/coco/coco_t4426.cpp", MAME_DIR .. "src/devices/bus/coco/coco_t4426.cpp",
MAME_DIR .. "src/devices/bus/coco/coco_t4426.h", MAME_DIR .. "src/devices/bus/coco/coco_t4426.h",
MAME_DIR .. "src/devices/bus/coco/dragon_amtor.cpp",
MAME_DIR .. "src/devices/bus/coco/dragon_amtor.h",
MAME_DIR .. "src/devices/bus/coco/dragon_fdc.cpp", MAME_DIR .. "src/devices/bus/coco/dragon_fdc.cpp",
MAME_DIR .. "src/devices/bus/coco/dragon_fdc.h", MAME_DIR .. "src/devices/bus/coco/dragon_fdc.h",
MAME_DIR .. "src/devices/bus/coco/dragon_jcbsnd.cpp", MAME_DIR .. "src/devices/bus/coco/dragon_jcbsnd.cpp",

View File

@ -0,0 +1,119 @@
// license:BSD-3-Clause
// copyright-holders:Nigel Barnes
/***************************************************************************
BMKAX25/AMTOR for G6WHK
(c) 1990 Grosvenor Software
Left: AX25 EXEC 49152
Right: AMTOR EXEC 49152
Cartridge contains a single 32K ROM and a switch to select either AX25
or AMTOR, each taking 16K.
***************************************************************************/
#include "emu.h"
#include "dragon_amtor.h"
//-------------------------------------------------
// ROM( amtor )
//-------------------------------------------------
ROM_START( amtor )
ROM_REGION(0x8000, "eprom", ROMREGION_ERASE00)
// this region is filled by cococart_slot_device::call_load()
ROM_END
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
DEFINE_DEVICE_TYPE(DRAGON_AMTOR, dragon_amtor_device, "dragon_amtor", "Dragon Amtor Cartridge")
//-------------------------------------------------
// INPUT_PORTS( amtor )
//-------------------------------------------------
static INPUT_PORTS_START( amtor )
PORT_START("SWITCH")
PORT_CONFNAME( 0x01, 0x00, "Switch" )
PORT_CONFSETTING( 0x00, "AMTOR")
PORT_CONFSETTING( 0x01, "AX25")
INPUT_PORTS_END
//**************************************************************************
// LIVE DEVICE
//**************************************************************************
//-------------------------------------------------
// dragon_amtor_device - constructor
//-------------------------------------------------
dragon_amtor_device::dragon_amtor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, DRAGON_AMTOR, tag, owner, clock)
, device_cococart_interface(mconfig, *this)
, m_eprom(*this, "eprom")
, m_switch(*this, "SWITCH")
{
}
//-------------------------------------------------
// device_start - device-specific startup
//-------------------------------------------------
void dragon_amtor_device::device_start()
{
}
//-------------------------------------------------
// input_ports - device-specific input ports
//-------------------------------------------------
ioport_constructor dragon_amtor_device::device_input_ports() const
{
return INPUT_PORTS_NAME( amtor );
}
//-------------------------------------------------
// rom_region - device-specific ROM region
//-------------------------------------------------
const tiny_rom_entry *dragon_amtor_device::device_rom_region() const
{
return ROM_NAME( amtor );
}
//-------------------------------------------------
// dragon_amtor_device::get_cart_base
//-------------------------------------------------
uint8_t* dragon_amtor_device::get_cart_base()
{
return m_eprom->base();
}
//-------------------------------------------------
// dragon_amtor_device::get_cart_memregion
//-------------------------------------------------
memory_region* dragon_amtor_device::get_cart_memregion()
{
return m_eprom;
}
//-------------------------------------------------
// cts_read
//-------------------------------------------------
READ8_MEMBER(dragon_amtor_device::cts_read)
{
offset = bitswap<16>(offset, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 0, 1);
return bitswap<8>(m_eprom->base()[(m_switch->read() << 14) | offset], 3, 2, 1, 0, 7, 6, 5, 4 );
}

View File

@ -0,0 +1,45 @@
// license:BSD-3-Clause
// copyright-holders:Nigel Barnes
#ifndef MAME_BUS_COCO_DRAGON_AMTOR_H
#define MAME_BUS_COCO_DRAGON_AMTOR_H
#pragma once
#include "cococart.h"
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
// ======================> dragon_amtor_device
class dragon_amtor_device :
public device_t,
public device_cococart_interface
{
public:
// construction/destruction
dragon_amtor_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// optional information overrides
virtual const tiny_rom_entry *device_rom_region() const override;
virtual ioport_constructor device_input_ports() const override;
protected:
// device-level overrides
virtual void device_start() override;
virtual uint8_t* get_cart_base() override;
virtual memory_region* get_cart_memregion() override;
virtual DECLARE_READ8_MEMBER(cts_read) override;
private:
required_memory_region m_eprom;
required_ioport m_switch;
};
// device type definitions
DECLARE_DEVICE_TYPE(DRAGON_AMTOR, dragon_amtor_device)
#endif // MAME_BUS_COCO_DRAGON_AMTOR_H

View File

@ -20,6 +20,7 @@
#include "formats/sdf_dsk.h" #include "formats/sdf_dsk.h"
#include "imagedev/floppy.h" #include "imagedev/floppy.h"
#include "bus/coco/dragon_amtor.h"
#include "bus/coco/dragon_fdc.h" #include "bus/coco/dragon_fdc.h"
#include "bus/coco/dragon_jcbsnd.h" #include "bus/coco/dragon_jcbsnd.h"
#include "bus/coco/dragon_sprites.h" #include "bus/coco/dragon_sprites.h"
@ -176,6 +177,7 @@ void dragon_cart(device_slot_interface &device)
device.option_add("orch90", COCO_ORCH90); device.option_add("orch90", COCO_ORCH90);
device.option_add("gmc", COCO_PAK_GMC); device.option_add("gmc", COCO_PAK_GMC);
device.option_add("pak", COCO_PAK); device.option_add("pak", COCO_PAK);
device.option_add_internal("amtor", DRAGON_AMTOR);
} }
FLOPPY_FORMATS_MEMBER( dragon_alpha_state::dragon_formats ) FLOPPY_FORMATS_MEMBER( dragon_alpha_state::dragon_formats )