gimix: added software list, fixed regression with booting Gimix Flex 3.6, added 8 inch floppy drive support.

This commit is contained in:
mahlemiut 2014-07-28 10:33:26 +00:00
parent fd4b755e04
commit f74bc6fd94
5 changed files with 74 additions and 3 deletions

1
.gitattributes vendored
View File

@ -117,6 +117,7 @@ hash/gamepock.xml svneol=native#text/xml
hash/gba.xml svneol=native#text/xml
hash/gbcolor.xml svneol=native#text/xml
hash/genius.xml svneol=native#text/xml
hash/gimix.xml svneol=native#text/xml
hash/gl2000.xml svneol=native#text/xml
hash/gl6000sl.xml svneol=native#text/xml
hash/glcolor.xml svneol=native#text/xml

51
hash/gimix.xml Normal file
View File

@ -0,0 +1,51 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<softwarelist name="gimix" description="Gimix 6809 System disks">
<software name="flex33">
<description>GMX Flex-09 3.3</description>
<year>1981</year>
<publisher>Technical System Consultants / Gimix Inc.</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="1265664">
<rom name="gfx33dma.dsk" size="102400" crc="5548dd85" sha1="0e0a94908478cbcf1d9ab7430189bdf43e12355b" offset="0" />
</dataarea>
</part>
</software>
<!-- 8 inch disk - to boot, you'll need to set DIP switch S2-9 on the DMA FDC board (5.25/8 inch drive select) to 8 inch.
You'll also need to set the first drive to be 8 inch also, (-fdc:0 8dd) -->
<software name="flex36">
<description>GMX Flex-09 3.6</description>
<year>1981</year>
<publisher>Technical System Consultants / Gimix Inc.</publisher>
<part name="flop1" interface="floppy_8">
<dataarea name="flop" size="1265664">
<rom name="gflx_36.dsk" size="161280" crc="6cdd4198" sha1="307b635a3abb487c1295d8ef75afeecec9e61c39" offset="0" />
</dataarea>
</part>
</software>
<software name="flex43">
<description>GMX Flex-09 4.3</description>
<year>1981</year>
<publisher>Technical System Consultants / Gimix Inc.</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="1265664">
<rom name="flex_v4.3.imd" size="103190" crc="2685ca76" sha1="b297f8e774cf4253a2d2259cb1959c74911ceda3" offset="0" />
</dataarea>
</part>
</software>
<software name="os9l1_12">
<description>OS-9 GMX I</description>
<year>1981</year>
<publisher>Microware Systems Corp. / Gimix Inc.</publisher>
<part name="flop1" interface="floppy_5_25">
<dataarea name="flop" size="1265664">
<rom name="os9_v1.2.imd" size="116070" crc="aa3791b9" sha1="29036b5a6d1e63801b7b9fe9b99f5a4b536f9f3d" offset="0" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -42,7 +42,7 @@ bool flex_format::load(io_generic *io, UINT32 form_factor, floppy_image *image)
{
int spt = info.last_sec;
int bps = 256;
int cell_count = 50000;
int cell_count = (form_factor == floppy_image::FF_525) ? 50000 : 100000;
int offset = 0;
int head_num = 1;
int total_tracks = info.last_trk+1;

View File

@ -2,7 +2,6 @@
* flex_dsk.h
*
* Created on: 24/06/2014
* Author: bsr
*/
#ifndef FLEX_DSK_H_

View File

@ -93,6 +93,7 @@ public:
, m_rombank1(*this, "rombank1")
, m_rombank2(*this, "rombank2")
, m_fixedrombank(*this, "fixedrombank")
, m_dma_dip(*this, "dma_s2")
{}
DECLARE_WRITE8_MEMBER(kbd_put);
@ -168,6 +169,7 @@ private:
required_memory_bank m_rombank2;
required_memory_bank m_fixedrombank;
required_ioport m_dma_dip;
};
static ADDRESS_MAP_START( gimix_banked_mem, AS_PROGRAM, 8, gimix_state)
@ -215,6 +217,11 @@ static ADDRESS_MAP_START( gimix_io, AS_IO, 8, gimix_state )
ADDRESS_MAP_END
static INPUT_PORTS_START( gimix )
PORT_START("dma_s2")
PORT_DIPNAME(0x00000100,0x00000000,"5.25\" / 8\" floppy drive 0") PORT_DIPLOCATION("S2:9")
PORT_DIPSETTING(0x00000000,"5.25\"")
PORT_DIPSETTING(0x00000100,"8\"")
INPUT_PORTS_END
READ8_MEMBER( gimix_state::keyin_r )
@ -284,6 +291,10 @@ READ8_MEMBER(gimix_state::dma_r)
switch(offset)
{
case 0:
if(m_dma_dip->read() & 0x00000100)
m_dma_status |= 0x01; // 8"
else
m_dma_status &= ~0x01; // 5.25"
return m_dma_status;
case 1:
return m_dma_ctrl;
@ -465,6 +476,12 @@ void gimix_state::machine_reset()
m_floppy1_ready = false;
membank("lower_ram")->set_base(m_ram->pointer());
membank("upper_ram")->set_base(m_ram->pointer()+0x10000);
// set FDC clock based on DIP Switch S2-9 (5.25"/8" drive select)
if(m_dma_dip->read() & 0x00000100)
m_fdc->set_unscaled_clock(XTAL_8MHz / 4); // 8 inch (2MHz)
else
m_fdc->set_unscaled_clock(XTAL_8MHz / 8); // 5.25 inch (1MHz)
}
void gimix_state::machine_start()
@ -533,6 +550,7 @@ FLOPPY_FORMATS_END
static SLOT_INTERFACE_START( gimix_floppies )
SLOT_INTERFACE( "525hd", FLOPPY_525_HD )
SLOT_INTERFACE( "8dd", FLOPPY_8_DSDD )
SLOT_INTERFACE_END
#define MCFG_ADDRESS_BANK(tag) \
@ -557,7 +575,7 @@ 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)
/* floppy disks */
MCFG_FD1797x_ADD("fdc",XTAL_8MHz / 8)
MCFG_FD1797x_ADD("fdc",XTAL_8MHz / 4)
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_FORCE_READY
@ -631,6 +649,8 @@ static MACHINE_CONFIG_START( gimix, gimix_state )
MCFG_RAM_DEFAULT_SIZE("128K")
MCFG_RAM_EXTRA_OPTIONS("56K,256K,512K")
MCFG_SOFTWARE_LIST_ADD("flop_list","gimix")
// uncomment this timer to use a hack that generates a regular IRQ, this will get OS-9 to boot
// for some unknown reason, OS-9 does not touch the 6840, and only clears/disables IRQs on the RTC
//MCFG_TIMER_DRIVER_ADD_PERIODIC("test_timer",gimix_state,test_timer_w,attotime::from_msec(100))