mirror of
https://github.com/holub/mame
synced 2025-06-28 07:04:35 +03:00
gimix: added support for Flex DSK disk images, will now boot Gimix Flex 3.3.
This commit is contained in:
parent
d1056a540b
commit
eefb405ff1
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -3611,6 +3611,8 @@ src/lib/formats/esq8_dsk.h svneol=native#text/plain
|
|||||||
src/lib/formats/fc100_cas.c svneol=native#text/plain
|
src/lib/formats/fc100_cas.c svneol=native#text/plain
|
||||||
src/lib/formats/fc100_cas.h svneol=native#text/plain
|
src/lib/formats/fc100_cas.h svneol=native#text/plain
|
||||||
src/lib/formats/fdi_dsk.c svneol=native#text/plain
|
src/lib/formats/fdi_dsk.c svneol=native#text/plain
|
||||||
|
src/lib/formats/flex_dsk.c svneol=native#text/plain
|
||||||
|
src/lib/formats/flex_dsk.h svneol=native#text/plain
|
||||||
src/lib/formats/flopimg.c svneol=native#text/plain
|
src/lib/formats/flopimg.c svneol=native#text/plain
|
||||||
src/lib/formats/flopimg.h svneol=native#text/plain
|
src/lib/formats/flopimg.h svneol=native#text/plain
|
||||||
src/lib/formats/fm7_cas.c svneol=native#text/plain
|
src/lib/formats/fm7_cas.c svneol=native#text/plain
|
||||||
|
73
src/lib/formats/flex_dsk.c
Normal file
73
src/lib/formats/flex_dsk.c
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* flex_dsk.c - FLEX compatible disk images
|
||||||
|
*
|
||||||
|
* Created on: 24/06/2014
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "flex_dsk.h"
|
||||||
|
|
||||||
|
flex_format::flex_format() : wd177x_format(formats)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *flex_format::name() const
|
||||||
|
{
|
||||||
|
return "flex";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *flex_format::description() const
|
||||||
|
{
|
||||||
|
return "FLEX compatible disk image";
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *flex_format::extensions() const
|
||||||
|
{
|
||||||
|
return "dsk";
|
||||||
|
}
|
||||||
|
|
||||||
|
int flex_format::identify(io_generic *io, UINT32 form_factor)
|
||||||
|
{
|
||||||
|
io_generic_read(io, &info, 256 * 2, sizeof(struct sysinfo_sector));
|
||||||
|
|
||||||
|
if(((info.last_trk+1) * info.last_sec) * 256 == io_generic_size(io))
|
||||||
|
{
|
||||||
|
logerror("flex_dsk: %i tracks, %i sectors\n",info.last_trk+1,info.last_sec);
|
||||||
|
return 100;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool flex_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
|
||||||
|
{
|
||||||
|
int spt = info.last_sec;
|
||||||
|
int bps = 256;
|
||||||
|
int cell_count = 100000;
|
||||||
|
int offset = 0;
|
||||||
|
|
||||||
|
for(int track=0; track < info.last_trk+1; track++)
|
||||||
|
{
|
||||||
|
desc_pc_sector sects[80];
|
||||||
|
UINT8 sect_data[20000];
|
||||||
|
int sdatapos = 0;
|
||||||
|
for(int i=0; i<spt; i++)
|
||||||
|
{
|
||||||
|
sects[i].track = track;
|
||||||
|
sects[i].head = 0; // no side select?
|
||||||
|
sects[i].sector = i+1;
|
||||||
|
sects[i].size = 1;
|
||||||
|
sects[i].actual_size = bps;
|
||||||
|
sects[i].deleted = false;
|
||||||
|
sects[i].bad_crc = false;
|
||||||
|
sects[i].data = §_data[sdatapos];
|
||||||
|
io_generic_read(io, sects[i].data, offset, bps);
|
||||||
|
offset += bps;
|
||||||
|
sdatapos += bps;
|
||||||
|
}
|
||||||
|
// gap sizes unverified
|
||||||
|
build_wd_track_fm(track, 0, image, cell_count, spt, sects, 24, 16, 11);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const floppy_format_type FLOPPY_FLEX_FORMAT = &floppy_image_format_creator<flex_format>;
|
47
src/lib/formats/flex_dsk.h
Normal file
47
src/lib/formats/flex_dsk.h
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* flex_dsk.h
|
||||||
|
*
|
||||||
|
* Created on: 24/06/2014
|
||||||
|
* Author: bsr
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef FLEX_DSK_H_
|
||||||
|
#define FLEX_DSK_H_
|
||||||
|
|
||||||
|
#include "wd177x_dsk.h"
|
||||||
|
|
||||||
|
class flex_format : public wd177x_format {
|
||||||
|
public:
|
||||||
|
flex_format();
|
||||||
|
|
||||||
|
virtual const char *name() const;
|
||||||
|
virtual const char *description() const;
|
||||||
|
virtual const char *extensions() const;
|
||||||
|
virtual int identify(io_generic *io, UINT32 form_factor);
|
||||||
|
virtual bool load(io_generic *io, UINT32 form_factor, floppy_image *image);
|
||||||
|
private:
|
||||||
|
// static const format formats[];
|
||||||
|
|
||||||
|
struct sysinfo_sector
|
||||||
|
{
|
||||||
|
UINT8 unused1[16];
|
||||||
|
UINT8 disk_name[8];
|
||||||
|
UINT8 disk_ext[3];
|
||||||
|
UINT8 disk_number[2];
|
||||||
|
UINT8 fc_start_trk;
|
||||||
|
UINT8 fc_start_sec;
|
||||||
|
UINT8 fc_end_trk;
|
||||||
|
UINT8 fc_end_sec;
|
||||||
|
UINT8 free[2];
|
||||||
|
UINT8 month;
|
||||||
|
UINT8 day;
|
||||||
|
UINT8 year;
|
||||||
|
UINT8 last_trk;
|
||||||
|
UINT8 last_sec;
|
||||||
|
UINT8 unused2[216];
|
||||||
|
} info;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern const floppy_format_type FLOPPY_FLEX_FORMAT;
|
||||||
|
|
||||||
|
#endif /* FLEX_DSK_H_ */
|
@ -145,6 +145,7 @@ FORMATSOBJS = \
|
|||||||
$(LIBOBJ)/formats/esq16_dsk.o \
|
$(LIBOBJ)/formats/esq16_dsk.o \
|
||||||
$(LIBOBJ)/formats/fc100_cas.o \
|
$(LIBOBJ)/formats/fc100_cas.o \
|
||||||
$(LIBOBJ)/formats/fdi_dsk.o \
|
$(LIBOBJ)/formats/fdi_dsk.o \
|
||||||
|
$(LIBOBJ)/formats/flex_dsk.o \
|
||||||
$(LIBOBJ)/formats/fm7_cas.o \
|
$(LIBOBJ)/formats/fm7_cas.o \
|
||||||
$(LIBOBJ)/formats/fmsx_cas.o \
|
$(LIBOBJ)/formats/fmsx_cas.o \
|
||||||
$(LIBOBJ)/formats/fmtowns_dsk.o \
|
$(LIBOBJ)/formats/fmtowns_dsk.o \
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include "machine/terminal.h"
|
#include "machine/terminal.h"
|
||||||
#include "machine/bankdev.h"
|
#include "machine/bankdev.h"
|
||||||
#include "machine/ram.h"
|
#include "machine/ram.h"
|
||||||
#include "formats/pc_dsk.h"
|
#include "formats/flex_dsk.h"
|
||||||
|
|
||||||
#define DMA_DRQ (m_dma_status & 0x80)
|
#define DMA_DRQ (m_dma_status & 0x80)
|
||||||
#define DMA_INTRQ (m_dma_status & 0x40)
|
#define DMA_INTRQ (m_dma_status & 0x40)
|
||||||
@ -60,6 +60,8 @@ public:
|
|||||||
: driver_device(mconfig, type, tag)
|
: driver_device(mconfig, type, tag)
|
||||||
, m_maincpu(*this, "maincpu")
|
, m_maincpu(*this, "maincpu")
|
||||||
, m_fdc(*this, "fdc")
|
, m_fdc(*this, "fdc")
|
||||||
|
, m_floppy0(*this, "fdc:0")
|
||||||
|
, m_floppy1(*this, "fdc:1")
|
||||||
, m_ram(*this, RAM_TAG)
|
, m_ram(*this, RAM_TAG)
|
||||||
, m_rom(*this, "roms")
|
, m_rom(*this, "roms")
|
||||||
, m_acia1(*this, "acia1")
|
, m_acia1(*this, "acia1")
|
||||||
@ -116,6 +118,9 @@ private:
|
|||||||
UINT32 m_dma_current_addr;
|
UINT32 m_dma_current_addr;
|
||||||
UINT8 m_task;
|
UINT8 m_task;
|
||||||
UINT8 m_task_banks[16][16];
|
UINT8 m_task_banks[16][16];
|
||||||
|
UINT8 m_selected_drive;
|
||||||
|
bool m_floppy0_ready;
|
||||||
|
bool m_floppy1_ready;
|
||||||
|
|
||||||
UINT8 m_pia1_pa;
|
UINT8 m_pia1_pa;
|
||||||
UINT8 m_pia1_pb;
|
UINT8 m_pia1_pb;
|
||||||
@ -128,6 +133,8 @@ private:
|
|||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<fd1797_t> m_fdc;
|
required_device<fd1797_t> m_fdc;
|
||||||
|
required_device<floppy_connector> m_floppy0;
|
||||||
|
required_device<floppy_connector> m_floppy1;
|
||||||
required_device<ram_device> m_ram;
|
required_device<ram_device> m_ram;
|
||||||
required_memory_region m_rom;
|
required_memory_region m_rom;
|
||||||
required_device<acia6850_device> m_acia1;
|
required_device<acia6850_device> m_acia1;
|
||||||
@ -159,12 +166,12 @@ private:
|
|||||||
};
|
};
|
||||||
|
|
||||||
static ADDRESS_MAP_START( gimix_banked_mem, AS_PROGRAM, 8, gimix_state)
|
static ADDRESS_MAP_START( gimix_banked_mem, AS_PROGRAM, 8, gimix_state)
|
||||||
//AM_RANGE(0x00000, 0x0dfff) AM_RAM
|
AM_RANGE(0x00000, 0x0dfff) AM_RAMBANK("lower_ram")
|
||||||
AM_RANGE(0x0e000, 0x0e000) AM_DEVREADWRITE("acia1",acia6850_device,status_r,control_w)
|
AM_RANGE(0x0e000, 0x0e000) AM_DEVREADWRITE("acia1",acia6850_device,status_r,control_w)
|
||||||
AM_RANGE(0x0e001, 0x0e001) AM_DEVREADWRITE("acia1",acia6850_device,data_r,data_w)
|
AM_RANGE(0x0e001, 0x0e001) AM_DEVREADWRITE("acia1",acia6850_device,data_r,data_w)
|
||||||
AM_RANGE(0x0e004, 0x0e004) AM_DEVREADWRITE("acia2",acia6850_device,status_r,control_w)
|
AM_RANGE(0x0e004, 0x0e004) AM_DEVREADWRITE("acia2",acia6850_device,status_r,control_w)
|
||||||
AM_RANGE(0x0e005, 0x0e005) AM_DEVREADWRITE("acia2",acia6850_device,data_r,data_w)
|
AM_RANGE(0x0e005, 0x0e005) AM_DEVREADWRITE("acia2",acia6850_device,data_r,data_w)
|
||||||
AM_RANGE(0x0e018, 0x0e01b) AM_RAM // this area is used for "PROGRAMMED I/O BOOTSTRAP"
|
AM_RANGE(0x0e018, 0x0e01b) AM_READWRITE(fdc_r, fdc_w) // FD1797 FDC (PIO)
|
||||||
AM_RANGE(0x0e100, 0x0e1ff) AM_RAM
|
AM_RANGE(0x0e100, 0x0e1ff) AM_RAM
|
||||||
//AM_RANGE(0x0e200, 0x0e20f) // 9511A / 9512 Arithmetic Processor
|
//AM_RANGE(0x0e200, 0x0e20f) // 9511A / 9512 Arithmetic Processor
|
||||||
AM_RANGE(0x0e210, 0x0e21f) AM_DEVREADWRITE("timer",ptm6840_device,read,write)
|
AM_RANGE(0x0e210, 0x0e21f) AM_DEVREADWRITE("timer",ptm6840_device,read,write)
|
||||||
@ -294,15 +301,27 @@ WRITE8_MEMBER(gimix_state::dma_w)
|
|||||||
case 0:
|
case 0:
|
||||||
logerror("DMA: Drive select %02x\n",data);
|
logerror("DMA: Drive select %02x\n",data);
|
||||||
m_dma_drive_select = data;
|
m_dma_drive_select = data;
|
||||||
m_fdc->dden_w(DMA_DENSITY);
|
m_fdc->dden_w(DMA_DENSITY ? 1 : 0);
|
||||||
if(data & 0x40) // 8" / 5.25" connector select
|
if(data & 0x40) // 8" / 5.25" connector select
|
||||||
m_dma_status |= 0x04;
|
m_dma_status |= 0x04;
|
||||||
else
|
else
|
||||||
m_dma_status &= ~0x04;
|
m_dma_status &= ~0x04;
|
||||||
if(data & 0x01)
|
if(data & 0x01)
|
||||||
m_fdc->set_floppy(m_fdc->subdevice<floppy_connector>("0")->get_device());
|
{
|
||||||
|
m_fdc->set_floppy(m_floppy0->get_device());
|
||||||
|
m_selected_drive = 1;
|
||||||
|
m_floppy1->get_device()->mon_w(1); // switch off the motor of other drives...
|
||||||
|
m_floppy1_ready = false;
|
||||||
|
logerror("FDC: Floppy drive 1 motor off\n");
|
||||||
|
}
|
||||||
if(data & 0x02)
|
if(data & 0x02)
|
||||||
m_fdc->set_floppy(m_fdc->subdevice<floppy_connector>("1")->get_device());
|
{
|
||||||
|
m_fdc->set_floppy(m_floppy1->get_device());
|
||||||
|
m_selected_drive = 2;
|
||||||
|
m_floppy0->get_device()->mon_w(1); // switch off the motor of other drives...
|
||||||
|
m_floppy0_ready = false;
|
||||||
|
logerror("FDC: Floppy drive 0 motor off\n");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
logerror("DMA: DMA control %02x\n",data);
|
logerror("DMA: DMA control %02x\n",data);
|
||||||
@ -311,6 +330,20 @@ WRITE8_MEMBER(gimix_state::dma_w)
|
|||||||
m_dma_status |= 0x12;
|
m_dma_status |= 0x12;
|
||||||
else
|
else
|
||||||
m_dma_status &= ~0x12;
|
m_dma_status &= ~0x12;
|
||||||
|
if(data & 0x40)
|
||||||
|
{
|
||||||
|
if(m_selected_drive == 1)
|
||||||
|
m_floppy0->get_device()->ss_w(1);
|
||||||
|
if(m_selected_drive == 2)
|
||||||
|
m_floppy1->get_device()->ss_w(1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(m_selected_drive == 1)
|
||||||
|
m_floppy0->get_device()->ss_w(0);
|
||||||
|
if(m_selected_drive == 2)
|
||||||
|
m_floppy1->get_device()->ss_w(0);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
logerror("DMA: DMA start address MSB %02x\n",data);
|
logerror("DMA: DMA start address MSB %02x\n",data);
|
||||||
@ -330,16 +363,28 @@ WRITE8_MEMBER(gimix_state::dma_w)
|
|||||||
READ8_MEMBER(gimix_state::fdc_r)
|
READ8_MEMBER(gimix_state::fdc_r)
|
||||||
{
|
{
|
||||||
// motors are switched on on FDC access
|
// motors are switched on on FDC access
|
||||||
m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(0);
|
if(m_selected_drive == 1 && m_floppy0_ready == false)
|
||||||
m_fdc->subdevice<floppy_connector>("1")->get_device()->mon_w(0);
|
{
|
||||||
|
m_floppy0->get_device()->mon_w(0);
|
||||||
|
m_floppy0_ready = true;
|
||||||
|
logerror("FDC: Floppy drive 0 motor on\n");
|
||||||
|
}
|
||||||
|
if(m_selected_drive == 2 && m_floppy1_ready == false)
|
||||||
|
{
|
||||||
|
m_floppy1->get_device()->mon_w(0);
|
||||||
|
m_floppy1_ready = true;
|
||||||
|
logerror("FDC: Floppy drive 1 motor on\n");
|
||||||
|
}
|
||||||
return m_fdc->read(space,offset);
|
return m_fdc->read(space,offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(gimix_state::fdc_w)
|
WRITE8_MEMBER(gimix_state::fdc_w)
|
||||||
{
|
{
|
||||||
// motors are switched on on FDC access
|
// motors are switched on on FDC access
|
||||||
m_fdc->subdevice<floppy_connector>("0")->get_device()->mon_w(0);
|
if(m_selected_drive == 1)
|
||||||
m_fdc->subdevice<floppy_connector>("1")->get_device()->mon_w(0);
|
m_floppy0->get_device()->mon_w(0);
|
||||||
|
if(m_selected_drive == 2)
|
||||||
|
m_floppy1->get_device()->mon_w(0);
|
||||||
m_fdc->write(space,offset,data);
|
m_fdc->write(space,offset,data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,7 +426,7 @@ WRITE_LINE_MEMBER(gimix_state::fdc_irq_w)
|
|||||||
|
|
||||||
WRITE_LINE_MEMBER(gimix_state::fdc_drq_w)
|
WRITE_LINE_MEMBER(gimix_state::fdc_drq_w)
|
||||||
{
|
{
|
||||||
if(state)
|
if(state && DMA_ENABLED)
|
||||||
{
|
{
|
||||||
m_dma_status |= 0x80;
|
m_dma_status |= 0x80;
|
||||||
// do a DMA transfer
|
// do a DMA transfer
|
||||||
@ -389,19 +434,18 @@ WRITE_LINE_MEMBER(gimix_state::fdc_drq_w)
|
|||||||
{
|
{
|
||||||
// write to disk
|
// write to disk
|
||||||
m_fdc->data_w(m_ram->read(m_dma_current_addr));
|
m_fdc->data_w(m_ram->read(m_dma_current_addr));
|
||||||
logerror("DMA: read from RAM %05x\n",m_dma_current_addr);
|
// logerror("DMA: read from RAM %05x\n",m_dma_current_addr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// read from disk
|
// read from disk
|
||||||
m_ram->write(m_dma_current_addr,m_fdc->data_r());
|
m_ram->write(m_dma_current_addr,m_fdc->data_r());
|
||||||
logerror("DMA: write to RAM %05x\n",m_dma_current_addr);
|
// logerror("DMA: write to RAM %05x\n",m_dma_current_addr);
|
||||||
}
|
}
|
||||||
m_dma_current_addr++;
|
m_dma_current_addr++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_dma_status &= ~0x80;
|
m_dma_status &= ~0x80;
|
||||||
logerror("DMA: DRQ set to %i\n",state);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gimix_state::machine_reset()
|
void gimix_state::machine_reset()
|
||||||
@ -414,6 +458,11 @@ void gimix_state::machine_reset()
|
|||||||
m_dma_status = 0x00;
|
m_dma_status = 0x00;
|
||||||
m_dma_ctrl = 0x00;
|
m_dma_ctrl = 0x00;
|
||||||
m_task = 0x00;
|
m_task = 0x00;
|
||||||
|
m_selected_drive = 0;
|
||||||
|
m_floppy0_ready = false;
|
||||||
|
m_floppy1_ready = false;
|
||||||
|
membank("lower_ram")->set_base(m_ram->pointer());
|
||||||
|
membank("upper_ram")->set_base(m_ram->pointer()+0x10000);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gimix_state::machine_start()
|
void gimix_state::machine_start()
|
||||||
@ -427,43 +476,28 @@ void gimix_state::machine_start()
|
|||||||
m_rombank2->set_entry(1);
|
m_rombank2->set_entry(1);
|
||||||
m_rombank3->set_entry(2);
|
m_rombank3->set_entry(2);
|
||||||
m_fixedrombank->set_entry(0);
|
m_fixedrombank->set_entry(0);
|
||||||
// install first 56k RAM
|
|
||||||
m_bank1->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank2->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank3->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank4->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank5->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank6->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank7->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank8->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank9->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank10->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank11->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank12->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank13->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank14->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank15->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
m_bank16->space(AS_PROGRAM).install_ram(0x0000,0xe000,0xffff,0,NULL);
|
|
||||||
// install any extra RAM
|
// install any extra RAM
|
||||||
if(m_ram->size() > 65536)
|
if(m_ram->size() > 65536)
|
||||||
{
|
{
|
||||||
m_bank1->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank1->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank2->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank2->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank3->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank3->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank4->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank4->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank5->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank5->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank6->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank6->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank7->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank7->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank8->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank8->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank9->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank9->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank10->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank10->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank11->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank11->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank12->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank12->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank13->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank13->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank14->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank14->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank15->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank15->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
m_bank16->space(AS_PROGRAM).install_ram(0x10000,m_ram->size()-1,0xffff,0,NULL);
|
m_bank16->space(AS_PROGRAM).install_readwrite_bank(0x10000,m_ram->size()-1,0xffff,0,"upper_ram");
|
||||||
}
|
}
|
||||||
|
m_floppy0->get_device()->set_rpm(300);
|
||||||
|
m_floppy1->get_device()->set_rpm(300);
|
||||||
}
|
}
|
||||||
|
|
||||||
void gimix_state::driver_start()
|
void gimix_state::driver_start()
|
||||||
@ -479,7 +513,7 @@ WRITE_LINE_MEMBER(gimix_state::write_acia_clock)
|
|||||||
}
|
}
|
||||||
|
|
||||||
FLOPPY_FORMATS_MEMBER( gimix_state::floppy_formats )
|
FLOPPY_FORMATS_MEMBER( gimix_state::floppy_formats )
|
||||||
FLOPPY_PC_FORMAT
|
FLOPPY_FLEX_FORMAT
|
||||||
FLOPPY_FORMATS_END
|
FLOPPY_FORMATS_END
|
||||||
|
|
||||||
static SLOT_INTERFACE_START( gimix_floppies )
|
static SLOT_INTERFACE_START( gimix_floppies )
|
||||||
@ -508,9 +542,10 @@ static MACHINE_CONFIG_START( gimix, gimix_state )
|
|||||||
MCFG_PTM6840_IRQ_CB(WRITELINE(gimix_state,irq_w)) // PCB pictures show both the RTC and timer set to generate IRQs (are jumper configurable)
|
MCFG_PTM6840_IRQ_CB(WRITELINE(gimix_state,irq_w)) // PCB pictures show both the RTC and timer set to generate IRQs (are jumper configurable)
|
||||||
|
|
||||||
/* floppy disks */
|
/* floppy disks */
|
||||||
MCFG_FD1797x_ADD("fdc",XTAL_2MHz)
|
MCFG_FD1797x_ADD("fdc",XTAL_8MHz / 4)
|
||||||
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(gimix_state,fdc_irq_w))
|
MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(gimix_state,fdc_irq_w))
|
||||||
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(gimix_state,fdc_drq_w))
|
MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(gimix_state,fdc_drq_w))
|
||||||
|
MCFG_WD_FDC_FORCE_READY
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fdc:0", gimix_floppies, "525dd", gimix_state::floppy_formats)
|
MCFG_FLOPPY_DRIVE_ADD("fdc:0", gimix_floppies, "525dd", gimix_state::floppy_formats)
|
||||||
MCFG_FLOPPY_DRIVE_ADD("fdc:1", gimix_floppies, "525dd", gimix_state::floppy_formats)
|
MCFG_FLOPPY_DRIVE_ADD("fdc:1", gimix_floppies, "525dd", gimix_state::floppy_formats)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user