Previous 199869 Revisions Next

r19070 Tuesday 20th November, 2012 at 16:34:13 UTC by Curt Coder
(MESS) super6: Refactored to modern floppy system. (nw)
(MESS) super6: Added original BIOS. [Al Kossow]
[src/mess/drivers]super6.c
[src/mess/includes]super6.h

trunk/src/mess/includes/super6.h
r19069r19070
33#ifndef __SUPER6__
44#define __SUPER6__
55
6
76#include "emu.h"
87#include "cpu/z80/z80.h"
98#include "cpu/z80/z80daisy.h"
10#include "formats/basicdsk.h"
9#include "formats/hxcmfm_dsk.h"
10#include "formats/imd_dsk.h"
11#include "formats/mfi_dsk.h"
1112#include "imagedev/flopdrv.h"
1213#include "machine/com8116.h"
1314#include "machine/z80ctc.h"
r19069r19070
1617#include "machine/z80pio.h"
1718#include "machine/ram.h"
1819#include "machine/terminal.h"
19#include "machine/wd17xx.h"
20#include "machine/wd1772.h"
2021
2122#define Z80_TAG         "u30"
2223#define Z80CTC_TAG      "u20"
r19069r19070
4142        m_fdc(*this, WD2793_TAG),
4243        m_brg(*this, BR1945_TAG),
4344        m_ram(*this, RAM_TAG),
44        m_floppy0(*this, FLOPPY_0),
45        m_floppy1(*this, FLOPPY_1),
45        m_floppy0(*this, WD2793_TAG":0"),
46        m_floppy1(*this, WD2793_TAG":1"),
4647        m_terminal(*this, TERMINAL_TAG)
4748   { }
4849
r19069r19070
5152   required_device<z80dart_device> m_dart;
5253   required_device<z80dma_device> m_dma;
5354   required_device<z80pio_device> m_pio;
54   required_device<device_t> m_fdc;
55   required_device<wd2793_t> m_fdc;
5556   required_device<com8116_device> m_brg;
5657   required_device<ram_device> m_ram;
57   required_device<device_t> m_floppy0;
58   required_device<device_t> m_floppy1;
58   required_device<floppy_connector> m_floppy0;
59   required_device<floppy_connector> m_floppy1;
5960   required_device<serial_terminal_device> m_terminal;
6061
6162   virtual void machine_start();
r19069r19070
6869   DECLARE_WRITE8_MEMBER( bank1_w );
6970   DECLARE_WRITE8_MEMBER( baud_w );
7071   DECLARE_WRITE_LINE_MEMBER( fr_w );
71   DECLARE_WRITE_LINE_MEMBER( intrq_w );
72   DECLARE_WRITE_LINE_MEMBER( drq_w );
72   void fdc_intrq_w(bool state);
73   void fdc_drq_w(bool state);
74   static const floppy_format_type floppy_formats[];
7375
7476   void bankswitch();
7577
trunk/src/mess/drivers/super6.c
r19069r19070
11/*
22
3    ADC Super Six SBC
4
5    Skeleton driver
6
7*/
8
9/*
10
113    TODO:
124
135    - floppy (cannot be implemented currently since this is another case of halting the cpu mid-instruction)
r19069r19070
199191
200192   m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, ASSERT_LINE);
201193
202   return !wd17xx_intrq_r(m_fdc) << 7;
194   return !m_fdc->intrq_r() << 7;
203195}
204196
205197
r19069r19070
225217    */
226218
227219   // disk drive select
228   wd17xx_set_drive(m_fdc, data & 0x03);
229   floppy_mon_w(m_floppy0, 0);
230   floppy_mon_w(m_floppy1, 0);
220   floppy_image_device *m_floppy = NULL;
231221
222   if (BIT(data, 0)) m_floppy = m_floppy0->get_device();
223   if (BIT(data, 1)) m_floppy = m_floppy1->get_device();
224
225   m_fdc->set_floppy(m_floppy);
226   if (m_floppy) m_floppy->mon_w(0);
227
232228   // head select
233   wd17xx_set_side(m_fdc, BIT(data, 2));
229   if (m_floppy) m_floppy->ss_w(BIT(data, 2));
234230
235231   // disk density
236   wd17xx_dden_w(m_fdc, !BIT(data, 3));
232   m_fdc->dden_w(!BIT(data, 3));
237233}
238234
239235
r19069r19070
285281   AM_RANGE(0x00, 0x03) AM_DEVREADWRITE_LEGACY(Z80DART_TAG, z80dart_ba_cd_r, z80dart_ba_cd_w)
286282   AM_RANGE(0x04, 0x07) AM_DEVREADWRITE(Z80PIO_TAG, z80pio_device, read, write)
287283   AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write)
288   AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE_LEGACY(WD2793_TAG, wd17xx_r, wd17xx_w)
284   AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(WD2793_TAG, wd2793_t, read, write)
289285   AM_RANGE(0x10, 0x10) AM_MIRROR(0x03) AM_DEVREADWRITE_LEGACY(Z80DMA_TAG, z80dma_r, z80dma_w)
290286   AM_RANGE(0x14, 0x14) AM_READWRITE(fdc_r, fdc_w)
291287   AM_RANGE(0x15, 0x15) AM_READ_PORT("J7") AM_WRITE(s100_w)
r19069r19070
349345//  Z80CTC_INTERFACE( ctc_intf )
350346//-------------------------------------------------
351347
352TIMER_DEVICE_CALLBACK_MEMBER(super6_state::ctc_tick)
348TIMER_DEVICE_CALLBACK_MEMBER( super6_state::ctc_tick )
353349{
354350   m_ctc->trg0(1);
355351   m_ctc->trg0(0);
r19069r19070
448444
449445
450446//-------------------------------------------------
451//  floppy_interface super6_floppy_interface
447//  floppy_format_type floppy_formats
452448//-------------------------------------------------
453449
454static const floppy_interface super6_floppy_interface =
455{
456    DEVCB_NULL,
457    DEVCB_NULL,
458    DEVCB_NULL,
459    DEVCB_NULL,
460    DEVCB_NULL,
461    FLOPPY_STANDARD_5_25_DSHD,
462    LEGACY_FLOPPY_OPTIONS_NAME(default),
463    "floppy_5_25",
450const floppy_format_type super6_state::floppy_formats[] = {
451   FLOPPY_IMD_FORMAT,
452   FLOPPY_MFM_FORMAT,
453   FLOPPY_MFI_FORMAT,
464454   NULL
465455};
466456
457static SLOT_INTERFACE_START( super6_floppies )
458   SLOT_INTERFACE( "525dd", FLOPPY_525_DD )
459SLOT_INTERFACE_END
467460
468//-------------------------------------------------
469//  wd17xx_interface fdc_intf
470//-------------------------------------------------
471
472WRITE_LINE_MEMBER( super6_state::intrq_w )
461void super6_state::fdc_intrq_w(bool state)
473462{
474463   if (state) m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, CLEAR_LINE);
475464
476465   m_ctc->trg3(!state);
477466}
478467
479WRITE_LINE_MEMBER( super6_state::drq_w )
468void super6_state::fdc_drq_w(bool state)
480469{
481470   if (state) m_maincpu->set_input_line(Z80_INPUT_LINE_WAIT, CLEAR_LINE);
482471
483472   m_dma->rdy_w(state);
484473}
485474
486static const wd17xx_interface fdc_intf =
487{
488   DEVCB_NULL,
489   DEVCB_DRIVER_LINE_MEMBER(super6_state, intrq_w),
490   DEVCB_DRIVER_LINE_MEMBER(super6_state, drq_w),
491   { FLOPPY_0, FLOPPY_1, NULL, NULL }
492};
493475
494
495476//-------------------------------------------------
496477//  z80_daisy_config super6_daisy_chain
497478//-------------------------------------------------
r19069r19070
509490//  GENERIC_TERMINAL_INTERFACE( terminal_intf )
510491//-------------------------------------------------
511492
512WRITE8_MEMBER(super6_state::dummy_w)
493WRITE8_MEMBER( super6_state::dummy_w )
513494{
514495   // handled in Z80DART_INTERFACE
515496}
516497
517498static GENERIC_TERMINAL_INTERFACE( terminal_intf )
518499{
519   DEVCB_DRIVER_MEMBER(super6_state,dummy_w)
500   DEVCB_DRIVER_MEMBER(super6_state, dummy_w)
520501};
521502
522503
r19069r19070
531512
532513void super6_state::machine_start()
533514{
515   // floppy callbacks
516   m_fdc->setup_intrq_cb(wd2793_t::line_cb(FUNC(super6_state::fdc_intrq_w), this));
517   m_fdc->setup_drq_cb(wd2793_t::line_cb(FUNC(super6_state::fdc_drq_w), this));
518
534519   // state saving
535520   save_item(NAME(m_s100));
536521   save_item(NAME(m_bank0));
r19069r19070
572557   MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_24MHz/4, dart_intf)
573558   MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_24MHz/6, dma_intf)
574559   MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_24MHz/4, pio_intf)
575   MCFG_WD2793_ADD(WD2793_TAG, fdc_intf)
560   MCFG_WD2793x_ADD(WD2793_TAG, 1000000)
576561   MCFG_COM8116_ADD(BR1945_TAG, XTAL_5_0688MHz, brg_intf)
577   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(super6_floppy_interface)
562   MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", super6_floppies, "525dd", NULL, super6_state::floppy_formats)
563   MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", super6_floppies, NULL,   NULL, super6_state::floppy_formats)
578564   MCFG_SERIAL_TERMINAL_ADD(TERMINAL_TAG, terminal_intf, 4800)
579565
580566   // internal ram
r19069r19070
597583
598584ROM_START( super6 )
599585   ROM_REGION( 0x800, Z80_TAG, 0 )
600   ROM_LOAD( "digitex monitor 1.2a 6oct1983.u29", 0x000, 0x800, CRC(a4c33ce4) SHA1(46dde43ea51d295f2b3202c2d0e1883bde1a8da7) )
586   ROM_DEFAULT_BIOS( "v36" )
587   ROM_SYSTEM_BIOS( 0, "v36", "ADC S6 v3.6" )
588   ROMX_LOAD( "adcs6_v3.6.u29", 0x000, 0x800, CRC(386fd22a) SHA1(9c177990aa180ab93be9c4641e92ae934627e661), ROM_BIOS(1) )
589   ROM_SYSTEM_BIOS( 1, "v12", "Digitex Monitor v1.2a" )
590   ROMX_LOAD( "digitex monitor 1.2a 6oct1983.u29", 0x000, 0x800, CRC(a4c33ce4) SHA1(46dde43ea51d295f2b3202c2d0e1883bde1a8da7), ROM_BIOS(2) )
601591
602592   ROM_REGION( 0x800, "plds", 0 )
603593   ROM_LOAD( "pal16l8.u16", 0x000, 0x800, NO_DUMP )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team