mirror of
https://github.com/holub/mame
synced 2025-07-03 17:08:39 +03:00
(MESS) apf : more WIP
* Added -ram switch, the default is 8K, this allows most tapes to load * Fixed pasting of upper-case program listings * Added cart slot to apfimag, you must now load the BASIC cart yourself. * Any apfm1000 cart can be loaded into apfimag
This commit is contained in:
parent
6bd6dcdbed
commit
65df1ab85e
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
driver by ?
|
driver by ?
|
||||||
|
|
||||||
PeT mess@utanet.at around February 2008:
|
PeT around February 2008:
|
||||||
added apfm1000 cartridge loading
|
added apfm1000 cartridge loading
|
||||||
fixed apfm1000 pads
|
fixed apfm1000 pads
|
||||||
added apf video mode
|
added apf video mode
|
||||||
@ -33,17 +33,22 @@ text screen in the superior part of the graphical screen.
|
|||||||
|
|
||||||
6600, 6500-6503 wd179x disc controller? 6400, 6401
|
6600, 6500-6503 wd179x disc controller? 6400, 6401
|
||||||
|
|
||||||
Status 19-09-2011
|
|
||||||
=================
|
The M1000 contains the RAM, ROM, CPU, PIA0, joysticks, Video and cart slot, and thus was a TV Game computer.
|
||||||
- apfimag
|
The MPA-10 contains the main keyboard, cassette support, PIA1 and was a base unit.
|
||||||
-- Loads tapes but then the machine freezes
|
When the two were joined, and with the custom cassette player, they formed the Imagination Machine.
|
||||||
-- Some tapes load as garbage
|
Although the BASIC cart could be plugged into the M1000, it could not be used as it needs the main keyboard.
|
||||||
-- With wave-sound, the cassette sound is completely overdriven with lots of noise before the tape starts.
|
|
||||||
The problem is not evident when the wav is played with media player.
|
|
||||||
|
|
||||||
|
|
||||||
- apfm1000
|
|
||||||
-- About half of the carts have severe video problems.
|
ToDo:
|
||||||
|
-----
|
||||||
|
- When pasting a large program, characters can be lost
|
||||||
|
- Graphics are corrupted
|
||||||
|
- Tape loading is not very reliable
|
||||||
|
- Add back the disk support
|
||||||
|
- Need disk-based software
|
||||||
|
|
||||||
|
|
||||||
******************************************************************************************************************/
|
******************************************************************************************************************/
|
||||||
|
|
||||||
@ -59,6 +64,7 @@ Status 19-09-2011
|
|||||||
#include "imagedev/cassette.h"
|
#include "imagedev/cassette.h"
|
||||||
#include "imagedev/cartslot.h"
|
#include "imagedev/cartslot.h"
|
||||||
#include "formats/apf_apt.h"
|
#include "formats/apf_apt.h"
|
||||||
|
#include "machine/ram.h"
|
||||||
|
|
||||||
|
|
||||||
class apf_state : public driver_device
|
class apf_state : public driver_device
|
||||||
@ -68,12 +74,13 @@ public:
|
|||||||
: driver_device(mconfig, type, tag)
|
: driver_device(mconfig, type, tag)
|
||||||
, m_p_videoram(*this, "videoram")
|
, m_p_videoram(*this, "videoram")
|
||||||
, m_maincpu(*this, "maincpu")
|
, m_maincpu(*this, "maincpu")
|
||||||
|
, m_ram(*this, RAM_TAG)
|
||||||
, m_crtc(*this, "mc6847")
|
, m_crtc(*this, "mc6847")
|
||||||
, m_speaker(*this, "speaker")
|
, m_speaker(*this, "speaker")
|
||||||
, m_pia0(*this, "pia0")
|
, m_pia0(*this, "pia0")
|
||||||
, m_pia1(*this, "pia1")
|
, m_pia1(*this, "pia1")
|
||||||
, m_cass(*this, "cassette")
|
, m_cass(*this, "cassette")
|
||||||
, m_fdc(*this, "wd179x")
|
, m_fdc(*this, "fdc")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER(apf_mc6847_videoram_r);
|
DECLARE_READ8_MEMBER(apf_mc6847_videoram_r);
|
||||||
@ -103,6 +110,7 @@ private:
|
|||||||
virtual void machine_start();
|
virtual void machine_start();
|
||||||
required_shared_ptr<UINT8> m_p_videoram;
|
required_shared_ptr<UINT8> m_p_videoram;
|
||||||
required_device<m6800_cpu_device> m_maincpu;
|
required_device<m6800_cpu_device> m_maincpu;
|
||||||
|
required_device<ram_device> m_ram;
|
||||||
required_device<mc6847_base_device> m_crtc;
|
required_device<mc6847_base_device> m_crtc;
|
||||||
required_device<speaker_sound_device> m_speaker;
|
required_device<speaker_sound_device> m_speaker;
|
||||||
required_device<pia6821_device> m_pia0;
|
required_device<pia6821_device> m_pia0;
|
||||||
@ -200,6 +208,11 @@ void apf_state::machine_start()
|
|||||||
|
|
||||||
if (m_cass) // apfimag only
|
if (m_cass) // apfimag only
|
||||||
m_cass->change_state(CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
|
m_cass->change_state(CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
|
||||||
|
|
||||||
|
/* if we specified 8K of RAM, delete the extended RAM */
|
||||||
|
address_space &space = m_maincpu->space(AS_PROGRAM);
|
||||||
|
if (m_ram->size() == 8*1024)
|
||||||
|
space.unmap_readwrite(0xc000, 0xdfff);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( apf_state::apf_dischw_w)
|
WRITE8_MEMBER( apf_state::apf_dischw_w)
|
||||||
@ -409,57 +422,57 @@ static INPUT_PORTS_START( apfimag )
|
|||||||
|
|
||||||
/* keyboard line 0 */
|
/* keyboard line 0 */
|
||||||
PORT_START("key0")
|
PORT_START("key0")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('x')
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X") PORT_CODE(KEYCODE_X) PORT_CHAR('X')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('z')
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z") PORT_CODE(KEYCODE_Z) PORT_CHAR('Z')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q IF") PORT_CODE(KEYCODE_Q) PORT_CHAR('q')
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q IF") PORT_CODE(KEYCODE_Q) PORT_CHAR('Q')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2 \" LET") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("2 \" LET") PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('\"')
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('a')
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A") PORT_CODE(KEYCODE_A) PORT_CHAR('A')
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1 ! GOSUB") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("1 ! GOSUB") PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W STEP") PORT_CODE(KEYCODE_W) PORT_CHAR('w')
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W STEP") PORT_CODE(KEYCODE_W) PORT_CHAR('W')
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('s')
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S") PORT_CODE(KEYCODE_S) PORT_CHAR('S')
|
||||||
|
|
||||||
/* keyboard line 1 */
|
/* keyboard line 1 */
|
||||||
PORT_START("key1")
|
PORT_START("key1")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('c')
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C") PORT_CODE(KEYCODE_C) PORT_CHAR('C')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('v')
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V") PORT_CODE(KEYCODE_V) PORT_CHAR('V')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R READ") PORT_CODE(KEYCODE_R) PORT_CHAR('r')
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R READ") PORT_CODE(KEYCODE_R) PORT_CHAR('R')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3 # DATA") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("3 # DATA") PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('f')
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F") PORT_CODE(KEYCODE_F) PORT_CHAR('F')
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4 $ INPUT") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("4 $ INPUT") PORT_CODE(KEYCODE_4) PORT_CHAR('4') PORT_CHAR('$')
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E STOP") PORT_CODE(KEYCODE_E) PORT_CHAR('e')
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E STOP") PORT_CODE(KEYCODE_E) PORT_CHAR('E')
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('d')
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D") PORT_CODE(KEYCODE_D) PORT_CHAR('D')
|
||||||
|
|
||||||
/* keyboard line 2 */
|
/* keyboard line 2 */
|
||||||
PORT_START("key2")
|
PORT_START("key2")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N ^") PORT_CODE(KEYCODE_N) PORT_CHAR('n') PORT_CHAR('^')
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N ^") PORT_CODE(KEYCODE_N) PORT_CHAR('N') PORT_CHAR('^')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('b')
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B") PORT_CODE(KEYCODE_B) PORT_CHAR('B')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T NEXT") PORT_CODE(KEYCODE_T) PORT_CHAR('t')
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T NEXT") PORT_CODE(KEYCODE_T) PORT_CHAR('T')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6 & FOR") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("6 & FOR") PORT_CODE(KEYCODE_6) PORT_CHAR('6') PORT_CHAR('&')
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('g')
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G") PORT_CODE(KEYCODE_G) PORT_CHAR('G')
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5 % DIM") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("5 % DIM") PORT_CODE(KEYCODE_5) PORT_CHAR('5') PORT_CHAR('%')
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y PRINT") PORT_CODE(KEYCODE_Y) PORT_CHAR('y')
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y PRINT") PORT_CODE(KEYCODE_Y) PORT_CHAR('Y')
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('h')
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H") PORT_CODE(KEYCODE_H) PORT_CHAR('H')
|
||||||
|
|
||||||
/* keyboard line 3 */
|
/* keyboard line 3 */
|
||||||
PORT_START("key3")
|
PORT_START("key3")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M ]") PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR(']')
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M ]") PORT_CODE(KEYCODE_M) PORT_CHAR('M') PORT_CHAR(']')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I LIST") PORT_CODE(KEYCODE_I) PORT_CHAR('i')
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I LIST") PORT_CODE(KEYCODE_I) PORT_CHAR('I')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7 ' RETURN") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("7 ' RETURN") PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('\'')
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K [") PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('[')
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K [") PORT_CODE(KEYCODE_K) PORT_CHAR('K') PORT_CHAR('[')
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8 ( THEN") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("8 ( THEN") PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U END") PORT_CODE(KEYCODE_U) PORT_CHAR('u')
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U END") PORT_CODE(KEYCODE_U) PORT_CHAR('U')
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('j')
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J") PORT_CODE(KEYCODE_J) PORT_CHAR('J')
|
||||||
|
|
||||||
/* keyboard line 4 */
|
/* keyboard line 4 */
|
||||||
PORT_START("key4")
|
PORT_START("key4")
|
||||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHAR('/') PORT_CHAR('?')
|
||||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHAR('.') PORT_CHAR('>')
|
||||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O _ REM") PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('_')
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O _ REM") PORT_CODE(KEYCODE_O) PORT_CHAR('O') PORT_CHAR('_')
|
||||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0 GOTO") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("0 GOTO") PORT_CODE(KEYCODE_0) PORT_CHAR('0')
|
||||||
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L \\") PORT_CODE(KEYCODE_L) PORT_CHAR('l') PORT_CHAR('\\')
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L \\") PORT_CODE(KEYCODE_L) PORT_CHAR('L') PORT_CHAR('\\')
|
||||||
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9 ) ON") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("9 ) ON") PORT_CODE(KEYCODE_9) PORT_CHAR('9') PORT_CHAR(')')
|
||||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P @ USING") PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('@')
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P @ USING") PORT_CODE(KEYCODE_P) PORT_CHAR('P') PORT_CHAR('@')
|
||||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("; +") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("; +") PORT_CODE(KEYCODE_COLON) PORT_CHAR(';') PORT_CHAR('+')
|
||||||
|
|
||||||
/* keyboard line 5 */
|
/* keyboard line 5 */
|
||||||
@ -530,11 +543,11 @@ static const mc6847_interface apf_mc6847_intf =
|
|||||||
DEVCB_DRIVER_LINE_MEMBER(apf_state, apf_mc6847_fs_w)
|
DEVCB_DRIVER_LINE_MEMBER(apf_state, apf_mc6847_fs_w)
|
||||||
};
|
};
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( apfimag, apf_state )
|
static MACHINE_CONFIG_START( apfm1000, apf_state )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", M6800, XTAL_3_579545MHz / 4 ) // divided by 4 in external clock circuit
|
MCFG_CPU_ADD("maincpu", M6800, XTAL_3_579545MHz / 4 ) // divided by 4 in external clock circuit
|
||||||
MCFG_CPU_PROGRAM_MAP(apfimag_map)
|
MCFG_CPU_PROGRAM_MAP(apfm1000_map)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_MC6847_NTSC_ADD("screen", "mc6847")
|
MCFG_SCREEN_MC6847_NTSC_ADD("screen", "mc6847")
|
||||||
@ -542,8 +555,6 @@ static MACHINE_CONFIG_START( apfimag, apf_state )
|
|||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
|
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
|
||||||
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
|
||||||
|
|
||||||
@ -556,25 +567,10 @@ static MACHINE_CONFIG_START( apfimag, apf_state )
|
|||||||
MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
|
MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
|
||||||
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
|
MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
|
||||||
|
|
||||||
MCFG_DEVICE_ADD("pia1", PIA6821, 0)
|
/* internal ram */
|
||||||
MCFG_PIA_READPA_HANDLER(READ8(apf_state, pia1_porta_r))
|
MCFG_RAM_ADD(RAM_TAG)
|
||||||
MCFG_PIA_READPB_HANDLER(READ8(apf_state, pia1_portb_r))
|
MCFG_RAM_DEFAULT_SIZE("8K")
|
||||||
MCFG_PIA_WRITEPB_HANDLER(WRITE8(apf_state, pia1_portb_w))
|
MCFG_RAM_EXTRA_OPTIONS("16K")
|
||||||
|
|
||||||
MCFG_CASSETTE_ADD( "cassette", apf_cassette_interface )
|
|
||||||
//MCFG_FD1793_ADD("wd179x", default_wd17xx_interface ) // TODO confirm type
|
|
||||||
//MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(apfimag_floppy_interface)
|
|
||||||
MACHINE_CONFIG_END
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( apfm1000, apfimag )
|
|
||||||
MCFG_CPU_MODIFY( "maincpu" )
|
|
||||||
MCFG_CPU_PROGRAM_MAP( apfm1000_map)
|
|
||||||
|
|
||||||
MCFG_DEVICE_REMOVE( "pia1" )
|
|
||||||
|
|
||||||
MCFG_DEVICE_REMOVE( WAVE_TAG )
|
|
||||||
MCFG_DEVICE_REMOVE( "cassette" )
|
|
||||||
//MCFG_LEGACY_FLOPPY_2_DRIVES_REMOVE()
|
|
||||||
|
|
||||||
MCFG_CARTSLOT_ADD("cart")
|
MCFG_CARTSLOT_ADD("cart")
|
||||||
MCFG_CARTSLOT_INTERFACE("apfm1000_cart")
|
MCFG_CARTSLOT_INTERFACE("apfm1000_cart")
|
||||||
@ -583,6 +579,24 @@ static MACHINE_CONFIG_DERIVED( apfm1000, apfimag )
|
|||||||
MCFG_SOFTWARE_LIST_ADD("cart_list","apfm1000")
|
MCFG_SOFTWARE_LIST_ADD("cart_list","apfm1000")
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
static MACHINE_CONFIG_DERIVED( apfimag, apfm1000 )
|
||||||
|
MCFG_CPU_MODIFY( "maincpu" )
|
||||||
|
MCFG_CPU_PROGRAM_MAP( apfimag_map)
|
||||||
|
|
||||||
|
MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette")
|
||||||
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
||||||
|
|
||||||
|
MCFG_DEVICE_ADD("pia1", PIA6821, 0)
|
||||||
|
MCFG_PIA_READPA_HANDLER(READ8(apf_state, pia1_porta_r))
|
||||||
|
MCFG_PIA_READPB_HANDLER(READ8(apf_state, pia1_portb_r))
|
||||||
|
MCFG_PIA_WRITEPB_HANDLER(WRITE8(apf_state, pia1_portb_w))
|
||||||
|
|
||||||
|
//MCFG_CASSETTE_ADD( "cassette", apf_cassette_interface )
|
||||||
|
MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
|
||||||
|
//MCFG_FD1793_ADD("fdc", default_wd17xx_interface ) // TODO confirm type
|
||||||
|
//MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(apfimag_floppy_interface)
|
||||||
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
@ -594,10 +608,8 @@ ROM_START(apfimag)
|
|||||||
ROM_REGION(0x0800,"roms", 0)
|
ROM_REGION(0x0800,"roms", 0)
|
||||||
ROM_LOAD("apf_4000.rom", 0x0000, 0x0800, CRC(2a331a33) SHA1(387b90882cd0b66c192d9cbaa3bec250f897e4f1) )
|
ROM_LOAD("apf_4000.rom", 0x0000, 0x0800, CRC(2a331a33) SHA1(387b90882cd0b66c192d9cbaa3bec250f897e4f1) )
|
||||||
|
|
||||||
// need to split these off as a cart
|
|
||||||
ROM_REGION(0x3800,"cart", ROMREGION_ERASEFF)
|
ROM_REGION(0x3800,"cart", ROMREGION_ERASEFF)
|
||||||
ROM_LOAD("basic_80.rom", 0x0000, 0x2000, CRC(a4c69fae) SHA1(7f98aa482589bf7c5a26d338fec105e797ba43f6) )
|
ROM_CART_LOAD("cart", 0x0000, 0x3800, ROM_OPTIONAL)
|
||||||
ROM_LOAD("basic_68.rom", 0x2000, 0x1000, CRC(ef049ab8) SHA1(c4c12aade95dd89a4750fe7f89d57256c93da068) )
|
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
ROM_START(apfm1000)
|
ROM_START(apfm1000)
|
||||||
|
Loading…
Reference in New Issue
Block a user