mirror of
https://github.com/holub/mame
synced 2025-05-03 21:13:18 +03:00
(MESS) abc800: Added support for raw 640KB disk images. [Curt Coder]
(MESS) abc800: Fixed fast controller Z80 daisy chain, formatting a disk works now except for a not ready status after the last track. (nw)
This commit is contained in:
parent
252fc882a8
commit
b63b1b54ae
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -2602,6 +2602,8 @@ src/lib/formats/a26_cas.c svneol=native#text/plain
|
||||
src/lib/formats/a26_cas.h svneol=native#text/plain
|
||||
src/lib/formats/a5105_dsk.c svneol=native#text/plain
|
||||
src/lib/formats/a5105_dsk.h svneol=native#text/plain
|
||||
src/lib/formats/abc800_dsk.c svneol=native#text/plain
|
||||
src/lib/formats/abc800_dsk.h svneol=native#text/plain
|
||||
src/lib/formats/ace_tap.c svneol=native#text/plain
|
||||
src/lib/formats/ace_tap.h svneol=native#text/plain
|
||||
src/lib/formats/adam_cas.c svneol=native#text/plain
|
||||
|
@ -151,14 +151,14 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( luxor_55_21046_io, AS_IO, 8, luxor_55_21046_device )
|
||||
ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x08, 0x08) AM_MIRROR(0xff07) AM_READ(out_r)
|
||||
AM_RANGE(0x18, 0x18) AM_MIRROR(0xff07) AM_WRITE(inp_w)
|
||||
AM_RANGE(0x28, 0x28) AM_MIRROR(0xff07) AM_WRITE(_4b_w)
|
||||
AM_RANGE(0x38, 0x38) AM_MIRROR(0xff07) AM_WRITE(_9b_w)
|
||||
AM_RANGE(0x48, 0x48) AM_MIRROR(0xff07) AM_WRITE(_8a_w)
|
||||
AM_RANGE(0x58, 0x58) AM_MIRROR(0xff07) AM_MASK(0xff00) AM_READ(_9a_r)
|
||||
AM_RANGE(0x68, 0x6b) AM_MIRROR(0xff04) AM_DEVREAD(SAB1793_TAG, fd1793_t, read)
|
||||
AM_RANGE(0x78, 0x7b) AM_MIRROR(0xff04) AM_DEVWRITE(SAB1793_TAG, fd1793_t, write)
|
||||
AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff03) AM_READ(out_r)
|
||||
AM_RANGE(0x1c, 0x1c) AM_MIRROR(0xff03) AM_WRITE(inp_w)
|
||||
AM_RANGE(0x2c, 0x2c) AM_MIRROR(0xff03) AM_WRITE(_4b_w)
|
||||
AM_RANGE(0x3c, 0x3c) AM_MIRROR(0xff03) AM_WRITE(_9b_w)
|
||||
AM_RANGE(0x4c, 0x4c) AM_MIRROR(0xff03) AM_WRITE(_8a_w)
|
||||
AM_RANGE(0x5c, 0x5c) AM_MIRROR(0xff07) AM_MASK(0xff00) AM_READ(_9a_r)
|
||||
AM_RANGE(0x68, 0x6b) AM_MIRROR(0xff00) AM_DEVREAD(SAB1793_TAG, fd1793_t, read)
|
||||
AM_RANGE(0x78, 0x7b) AM_MIRROR(0xff00) AM_DEVWRITE(SAB1793_TAG, fd1793_t, write)
|
||||
AM_RANGE(0x80, 0x80) AM_MIRROR(0xff77) AM_DEVREADWRITE(Z80DMA_TAG, z80dma_device, read, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -266,6 +266,10 @@ static Z80DMA_INTERFACE( dma_intf )
|
||||
// wd17xx_interface fdc_intf
|
||||
//-------------------------------------------------
|
||||
|
||||
FLOPPY_FORMATS_MEMBER( luxor_55_21046_device::floppy_formats )
|
||||
FLOPPY_ABC800_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
|
||||
static SLOT_INTERFACE_START( abc_floppies )
|
||||
SLOT_INTERFACE( "525sssd", FLOPPY_525_SSSD )
|
||||
SLOT_INTERFACE( "525sd", FLOPPY_525_SD )
|
||||
@ -288,20 +292,32 @@ void luxor_55_21046_device::fdc_drq_w(bool state)
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// z80_daisy_config z80_daisy_chain
|
||||
//-------------------------------------------------
|
||||
|
||||
static const z80_daisy_config z80_daisy_chain[] =
|
||||
{
|
||||
{ Z80DMA_TAG },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// MACHINE_CONFIG( luxor_55_21046 )
|
||||
//-------------------------------------------------
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( luxor_55_21046 )
|
||||
MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_16MHz/4)
|
||||
MCFG_CPU_CONFIG(z80_daisy_chain)
|
||||
MCFG_CPU_PROGRAM_MAP(luxor_55_21046_mem)
|
||||
MCFG_CPU_IO_MAP(luxor_55_21046_io)
|
||||
|
||||
MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_16MHz/4, dma_intf)
|
||||
MCFG_FD1793x_ADD(SAB1793_TAG, XTAL_16MHz/16)
|
||||
|
||||
MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "525dd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, "525dd", floppy_image_device::default_floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":0", abc_floppies, "525dd", luxor_55_21046_device::floppy_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD(SAB1793_TAG":1", abc_floppies, "525dd", luxor_55_21046_device::floppy_formats)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
@ -398,9 +414,9 @@ INPUT_PORTS_START( luxor_55_21046 )
|
||||
|
||||
PORT_START("SW3")
|
||||
PORT_DIPNAME( 0x7f, 0x2c, "Card Address" ) PORT_DIPLOCATION("SW3:1,2,3,4,5,6,7")
|
||||
PORT_DIPSETTING( 0x2c, "44 (ABC 832/834/850)" )
|
||||
PORT_DIPSETTING( 0x2d, "45 (ABC 830)" )
|
||||
PORT_DIPSETTING( 0x2e, "46 (ABC 838)" )
|
||||
PORT_DIPSETTING( 0x2c, "44 (ABC 832/834/850)" ) // MF0: MF1:
|
||||
PORT_DIPSETTING( 0x2d, "45 (ABC 830)" ) // MO0: MO1:
|
||||
PORT_DIPSETTING( 0x2e, "46 (ABC 838)" ) // SF0: SF1:
|
||||
|
||||
PORT_START("S1") // also S3,S5
|
||||
PORT_DIPNAME( 0x01, 0x01, "Interface Type" )
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include "abcbus.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "cpu/z80/z80daisy.h"
|
||||
#include "formats/abc800_dsk.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "machine/z80dma.h"
|
||||
|
||||
@ -81,6 +82,8 @@ public:
|
||||
void fdc_intrq_w(bool state);
|
||||
void fdc_drq_w(bool state);
|
||||
|
||||
DECLARE_FLOPPY_FORMATS( floppy_formats );
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
|
75
src/lib/formats/abc800_dsk.c
Normal file
75
src/lib/formats/abc800_dsk.c
Normal file
@ -0,0 +1,75 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/*********************************************************************
|
||||
|
||||
formats/abc800_dsk.c
|
||||
|
||||
Luxor ABC 830/832/838 disk image formats
|
||||
|
||||
*********************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "formats/abc800_dsk.h"
|
||||
|
||||
abc800_format::abc800_format() : wd177x_format(formats)
|
||||
{
|
||||
}
|
||||
|
||||
const char *abc800_format::name() const
|
||||
{
|
||||
return "abc800";
|
||||
}
|
||||
|
||||
const char *abc800_format::description() const
|
||||
{
|
||||
return "Luxor ABC 830/832/838 disk image";
|
||||
}
|
||||
|
||||
const char *abc800_format::extensions() const
|
||||
{
|
||||
return "dsk";
|
||||
}
|
||||
|
||||
const abc800_format::format abc800_format::formats[] = {
|
||||
/* { // 80K 5 1/4 inch single density double sided
|
||||
floppy_image::FF_525, floppy_image::DSSD, floppy_image::FM,
|
||||
2000, 8, 40, 2, 256, {}, 1, {}, 54, 22, 0
|
||||
},
|
||||
|
||||
{ // 160K 5 1/4 inch double density double sided
|
||||
floppy_image::FF_525, floppy_image::DSDD, floppy_image::MFM,
|
||||
2000, 8, 40, 2, 256, {}, 1, {}, 54, 22, 0
|
||||
},
|
||||
*/
|
||||
// track description
|
||||
// 55x4e 12x00 3xf5 fe 2x00 2x01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 02 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 03 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 04 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 05 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 06 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 07 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 08 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 09 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 0a 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 0b 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 0c 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 0d 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 0e 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 0f 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 54x4e 12x00 3xf5 fe 2x00 10 01 f7 22x4e 12x00 3xf5 fb 256xe5 f7
|
||||
// 298x4e
|
||||
{ // 640K 5 1/4 inch quad density
|
||||
floppy_image::FF_525, floppy_image::DSQD, floppy_image::MFM,
|
||||
2000, 16, 80, 2, 256, {}, 1, {}, 54, 22, 0
|
||||
},
|
||||
/*
|
||||
{ // 1M 8 inch double density
|
||||
floppy_image::FF_8, floppy_image::DSDD, floppy_image::MFM,
|
||||
2000, 16, 77, 2, 256, {}, 1, {}, 55, 22, 84
|
||||
},
|
||||
*/
|
||||
{}
|
||||
};
|
||||
|
||||
const floppy_format_type FLOPPY_ABC800_FORMAT = &floppy_image_format_creator<abc800_format>;
|
30
src/lib/formats/abc800_dsk.h
Normal file
30
src/lib/formats/abc800_dsk.h
Normal file
@ -0,0 +1,30 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Curt Coder
|
||||
/*********************************************************************
|
||||
|
||||
formats/abc800_dsk.h
|
||||
|
||||
Luxor ABC 830/832/838 disk image formats
|
||||
|
||||
*********************************************************************/
|
||||
|
||||
#ifndef ABC800_DSK_H_
|
||||
#define ABC800_DSK_H_
|
||||
|
||||
#include "wd177x_dsk.h"
|
||||
|
||||
class abc800_format : public wd177x_format {
|
||||
public:
|
||||
abc800_format();
|
||||
|
||||
virtual const char *name() const;
|
||||
virtual const char *description() const;
|
||||
virtual const char *extensions() const;
|
||||
|
||||
private:
|
||||
static const format formats[];
|
||||
};
|
||||
|
||||
extern const floppy_format_type FLOPPY_ABC800_FORMAT;
|
||||
|
||||
#endif
|
@ -97,6 +97,7 @@ FORMATSOBJS = \
|
||||
$(LIBOBJ)/formats/basicdsk.o \
|
||||
$(LIBOBJ)/formats/a26_cas.o \
|
||||
$(LIBOBJ)/formats/a5105_dsk.o \
|
||||
$(LIBOBJ)/formats/abc800_dsk.o \
|
||||
$(LIBOBJ)/formats/ace_tap.o \
|
||||
$(LIBOBJ)/formats/adam_cas.o \
|
||||
$(LIBOBJ)/formats/adam_dsk.o \
|
||||
|
Loading…
Reference in New Issue
Block a user