Previous 199869 Revisions Next

r17427 Thursday 23rd August, 2012 at 18:56:52 UTC by Curt Coder
(MESS) c1541: Added ProLogic-DOS Classic kernal. (nw)
[src/mess/drivers]c64.c
[src/mess/machine]c1541.c c1541.h cbmipt.c

trunk/src/mess/machine/cbmipt.c
r17426r17427
11031103   SLOT_INTERFACE("fsd2", FSD2)
11041104   SLOT_INTERFACE("c1541dd", C1541_DOLPHIN_DOS)
11051105   SLOT_INTERFACE("c1541pd", C1541_PROFESSIONAL_DOS_V1)
1106   SLOT_INTERFACE("c1541pdc", C1541_PROLOGIC_DOS_CLASSIC)
11061107   SLOT_INTERFACE("c1570", C1570)
11071108   SLOT_INTERFACE("c1571", C1571)
11081109   SLOT_INTERFACE("c1581", C1581)
trunk/src/mess/machine/c1541.c
r17426r17427
150150#define M6522_1_TAG      "ucd4"
151151#define C64H156_TAG      "64h156"
152152
153#define MC6821_TAG      "pia"
154#define CENTRONICS_TAG  "centronics"
153155
156
154157enum
155158{
156159   LED_POWER = 0,
r17426r17427
171174const device_type FSD2 = &device_creator<fsd2_device>;
172175const device_type C1541_DOLPHIN_DOS = &device_creator<c1541_dolphin_dos_device>;
173176const device_type C1541_PROFESSIONAL_DOS_V1 = &device_creator<c1541_professional_dos_v1_device>;
177const device_type C1541_PROLOGIC_DOS_CLASSIC = &device_creator<c1541_prologic_dos_classic_device>;
174178
175179
176180//-------------------------------------------------
r17426r17427
215219    case TYPE_1541_PROFESSIONAL_DOS_V1:
216220        m_shortname = "c1541pd";
217221        break;
222
223    case TYPE_1541_PROLOGIC_DOS_CLASSIC:
224        m_shortname = "c1541pdc";
225        break;
218226   }
219227}
220228
r17426r17427
348356
349357
350358//-------------------------------------------------
359//  ROM( c1541pdc )
360//-------------------------------------------------
361
362ROM_START( c1541pdc )
363    ROM_REGION( 0x8000, M6502_TAG, 0 )
364    ROM_LOAD( "325302-01.uab4", 0x0000, 0x2000, CRC(29ae9752) SHA1(8e0547430135ba462525c224e76356bd3d430f11) )
365    ROM_LOAD( "901229-06 aa.uab5", 0x2000, 0x2000, CRC(3a235039) SHA1(c7f94f4f51d6de4cdc21ecbb7e57bb209f0530c0) )
366    ROM_LOAD( "kernal.bin", 0x4000, 0x4000, CRC(79032ed5) SHA1(0ca4d5ef41c7e3d18d8945476d1481573af3e27c) )
367
368    ROM_REGION( 0x2000, "mmu", 0 )
369    ROM_LOAD( "mmu.bin", 0x0000, 0x2000, CRC(4c41392c) SHA1(78846af2ee6a56fceee44f9246659685ab2cbb7e) )
370ROM_END
371
372
373//-------------------------------------------------
351374//  rom_region - device-specific ROM region
352375//-------------------------------------------------
353376
r17426r17427
379402
380403    case TYPE_1541_PROFESSIONAL_DOS_V1:
381404        return ROM_NAME( c1541pd );
405
406    case TYPE_1541_PROLOGIC_DOS_CLASSIC:
407        return ROM_NAME( c1541pdc );
382408   }
383409}
384410
r17426r17427
424450
425451
426452//-------------------------------------------------
453//  ADDRESS_MAP( c1541pdc_mem )
454//-------------------------------------------------
455
456static ADDRESS_MAP_START( c1541pdc_mem, AS_PROGRAM, 8, c1541_prologic_dos_classic_device )
457    AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("share1")
458    AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
459    AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
460    AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1")
461    AM_RANGE(0x8800, 0x9fff) AM_RAM
462    AM_RANGE(0xa000, 0xb7ff) AM_ROM AM_REGION(M6502_TAG, 0x0000)
463    AM_RANGE(0xb800, 0xb80f) AM_READWRITE(pia_r, pia_w)
464    AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0x2000)
465ADDRESS_MAP_END
466
467
468//-------------------------------------------------
427469//  via6522_interface via0_intf
428470//-------------------------------------------------
429471
r17426r17427
728770
729771
730772//-------------------------------------------------
773//  pia6821_interface pia0_intf
774//-------------------------------------------------
775
776READ8_MEMBER( c1541_prologic_dos_classic_device::pia_r )
777{
778    return m_pia->read(space, (offset >> 2) & 0x03);
779}
780
781WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_w )
782{
783    m_pia->write(space, (offset >> 2) & 0x03, data);
784}
785
786WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_pa_w )
787{
788    /*
789   
790        bit     description
791   
792        0       1/2 MHz
793        1       
794        2       
795        3       35/40 tracks
796        4       
797        5       
798        6       
799        7       Hi
800   
801    */
802}
803
804READ8_MEMBER( c1541_prologic_dos_classic_device::pia_pb_r )
805{
806    return m_parallel_data;
807}
808
809WRITE8_MEMBER( c1541_prologic_dos_classic_device::pia_pb_w )
810{
811    m_parallel_data = data;
812
813    m_centronics->write(space, 0, data);
814}
815
816static const pia6821_interface pia_intf =
817{
818    DEVCB_NULL,
819    DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1541_prologic_dos_classic_device, pia_pb_r),
820    DEVCB_DEVICE_LINE_MEMBER(CENTRONICS_TAG, centronics_device, ack_r),
821    DEVCB_NULL,
822    DEVCB_NULL,
823    DEVCB_NULL,
824
825    DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1541_prologic_dos_classic_device, pia_pa_w),
826    DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c1541_prologic_dos_classic_device, pia_pb_w),
827    DEVCB_DEVICE_LINE_MEMBER(CENTRONICS_TAG, centronics_device, strobe_w),
828    DEVCB_NULL,
829    DEVCB_NULL,
830    DEVCB_NULL
831};
832
833
834//-------------------------------------------------
731835//  MACHINE_DRIVER( c1541 )
732836//-------------------------------------------------
733837
r17426r17427
796900
797901
798902//-------------------------------------------------
903//  MACHINE_DRIVER( c1541pdc )
904//-------------------------------------------------
905
906static MACHINE_CONFIG_FRAGMENT( c1541pdc )
907    MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
908    MCFG_CPU_PROGRAM_MAP(c1541pdc_mem)
909    MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
910
911    MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, c1541_via0_intf)
912    MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, c1541_via1_intf)
913
914    MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1541_floppy_interface)
915    MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
916    MCFG_PIA6821_ADD(MC6821_TAG, pia_intf)
917    MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
918MACHINE_CONFIG_END
919
920
921//-------------------------------------------------
799922//  machine_config_additions - device-specific
800923//  machine configurations
801924//-------------------------------------------------
r17426r17427
815938
816939    case TYPE_1541_PROFESSIONAL_DOS_V1:
817940        return MACHINE_CONFIG_NAME( c1541pd );
941
942    case TYPE_1541_PROLOGIC_DOS_CLASSIC:
943        return MACHINE_CONFIG_NAME( c1541pdc );
818944   }
819945}
820946
r17426r17427
845971//  base_c1541_device - constructor
846972//-------------------------------------------------
847973
848base_c1541_device::base_c1541_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant)
974base_c1541_device:: base_c1541_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant)
849975    : device_t(mconfig, type, name, tag, owner, clock),
850976     device_cbm_iec_interface(mconfig, *this),
851977      device_c64_floppy_parallel_interface(mconfig, *this),
r17426r17427
867993//-------------------------------------------------
868994
869995c1540_device::c1540_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
870    :base_c1541_device(mconfig, C1540, "C1540", tag, owner, clock, TYPE_1540) { }
996    : base_c1541_device(mconfig, C1540, "C1540", tag, owner, clock, TYPE_1540) { }
871997
872998
873999//-------------------------------------------------
r17426r17427
8751001//-------------------------------------------------
8761002
8771003c1541_device::c1541_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
878    :base_c1541_device(mconfig, C1541, "C1541", tag, owner, clock, TYPE_1541) { }
1004    : base_c1541_device(mconfig, C1541, "C1541", tag, owner, clock, TYPE_1541) { }
8791005
8801006
8811007//-------------------------------------------------
r17426r17427
8831009//-------------------------------------------------
8841010
8851011c1541c_device::c1541c_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
886    :base_c1541_device(mconfig, C1541C, "C1541C", tag, owner, clock, TYPE_1541C) {  }
1012    : base_c1541_device(mconfig, C1541C, "C1541C", tag, owner, clock, TYPE_1541C) {  }
8871013
8881014
8891015//-------------------------------------------------
r17426r17427
8911017//-------------------------------------------------
8921018
8931019c1541ii_device::c1541ii_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
894    :base_c1541_device(mconfig, C1541II, "C1541-II", tag, owner, clock, TYPE_1541II) {  }
1020    : base_c1541_device(mconfig, C1541II, "C1541-II", tag, owner, clock, TYPE_1541II) {  }
8951021
8961022
8971023//-------------------------------------------------
r17426r17427
8991025//-------------------------------------------------
9001026
9011027sx1541_device::sx1541_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
902    :base_c1541_device(mconfig, SX1541, "SX1541", tag, owner, clock, TYPE_SX1541) { }
1028    : base_c1541_device(mconfig, SX1541, "SX1541", tag, owner, clock, TYPE_SX1541) { }
9031029
9041030
9051031//-------------------------------------------------
r17426r17427
9071033//-------------------------------------------------
9081034
9091035fsd2_device::fsd2_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
910    :base_c1541_device(mconfig, FSD2, "FSD-2", tag, owner, clock, TYPE_FSD2) { }
1036    : base_c1541_device(mconfig, FSD2, "FSD-2", tag, owner, clock, TYPE_FSD2) { }
9111037
9121038
9131039//-------------------------------------------------
r17426r17427
9151041//-------------------------------------------------
9161042
9171043c1541_dolphin_dos_device::c1541_dolphin_dos_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
918    :base_c1541_device(mconfig, C1541_DOLPHIN_DOS, "C1541 Dolphin-DOS 2.0", tag, owner, clock, TYPE_1541_DOLPHIN_DOS) {  }
1044    : base_c1541_device(mconfig, C1541_DOLPHIN_DOS, "C1541 Dolphin-DOS 2.0", tag, owner, clock, TYPE_1541_DOLPHIN_DOS) {  }
9191045
9201046
9211047//-------------------------------------------------
r17426r17427
9231049//-------------------------------------------------
9241050
9251051c1541_professional_dos_v1_device::c1541_professional_dos_v1_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
926    :base_c1541_device(mconfig, C1541_PROFESSIONAL_DOS_V1, "C1541 Professional-DOS v1", tag, owner, clock, TYPE_1541_PROFESSIONAL_DOS_V1) {  }
1052    : base_c1541_device(mconfig, C1541_PROFESSIONAL_DOS_V1, "C1541 Professional-DOS v1", tag, owner, clock, TYPE_1541_PROFESSIONAL_DOS_V1) {  }
9271053
9281054
9291055//-------------------------------------------------
1056//  c1541_prologic_dos_classic_device - constructor
1057//-------------------------------------------------
1058
1059c1541_prologic_dos_classic_device::c1541_prologic_dos_classic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
1060    : base_c1541_device(mconfig, C1541_PROLOGIC_DOS_CLASSIC, "C1541 ProLogic-DOS Classic", tag, owner, clock, TYPE_1541_PROLOGIC_DOS_CLASSIC),
1061      m_pia(*this, MC6821_TAG),
1062      m_centronics(*this, CENTRONICS_TAG)
1063{
1064}
1065
1066
1067//-------------------------------------------------
9301068//  device_start - device-specific startup
9311069//-------------------------------------------------
9321070
trunk/src/mess/machine/c1541.h
r17426r17427
2020#include "formats/g64_dsk.h"
2121#include "machine/64h156.h"
2222#include "machine/6522via.h"
23#include "machine/6821pia.h"
24#include "machine/c64_bn1541.h"
2325#include "machine/cbmiec.h"
24#include "machine/c64_bn1541.h"
26#include "machine/ctronics.h"
2527
2628
2729
r17426r17427
5860
5961      // extended hardware
6062      TYPE_1541_DOLPHIN_DOS,
61      TYPE_1541_PROFESSIONAL_DOS_V1
63      TYPE_1541_PROFESSIONAL_DOS_V1,
64      TYPE_1541_PROLOGIC_DOS_CLASSIC
6265   };
6366
6467   // not really public
r17426r17427
200203};
201204
202205
206// ======================> c1541_prologic_dos_classic_device
207
208class c1541_prologic_dos_classic_device :  public base_c1541_device
209{
210public:
211    // construction/destruction
212    c1541_prologic_dos_classic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
213
214    // not really public
215    DECLARE_READ8_MEMBER( pia_r );
216    DECLARE_WRITE8_MEMBER( pia_w );
217
218   DECLARE_WRITE8_MEMBER( pia_pa_w );
219   DECLARE_READ8_MEMBER( pia_pb_r );
220   DECLARE_WRITE8_MEMBER( pia_pb_w );
221
222protected:
223   required_device<pia6821_device> m_pia;
224   required_device<centronics_device> m_centronics;
225};
226
227
203228// device type definition
204229extern const device_type C1540;
205230extern const device_type C1541;
r17426r17427
209234extern const device_type FSD2;
210235extern const device_type C1541_DOLPHIN_DOS;
211236extern const device_type C1541_PROFESSIONAL_DOS_V1;
237extern const device_type C1541_PROLOGIC_DOS_CLASSIC;
212238
213239
214240// floppy interface
trunk/src/mess/drivers/c64.c
r17426r17427
15121512   ROM_REGION( 0x2000, "basic", 0 )
15131513   ROM_LOAD( "901226-01.u3", 0x0000, 0x2000, CRC(f833d117) SHA1(79015323128650c742a3694c9429aa91f355905e) )
15141514
1515   ROM_REGION( 0x2000, "kernal", 0 )
1515   ROM_REGION( 0x4000, "kernal", 0 )
15161516   ROM_DEFAULT_BIOS("r3")
15171517   ROM_SYSTEM_BIOS(0, "r1", "Kernal rev. 1" )
15181518   ROMX_LOAD( "901227-01.u4", 0x0000, 0x2000, CRC(dce782fa) SHA1(87cc04d61fc748b82df09856847bb5c2754a2033), ROM_BIOS(1) )
r17426r17427
15681568   ROMX_LOAD( "exos3.u4", 0x0000, 0x2000, CRC(4e54d020) SHA1(f8931b7c0b26807f4de0cc241f0b1e2c8f5271e9), ROM_BIOS(26) )
15691569   ROM_SYSTEM_BIOS(26, "exos4", "EXOS v4" )
15701570   ROMX_LOAD( "exos4.u4", 0x0000, 0x2000, CRC(d5cf83a9) SHA1(d5f03a5c0e9d00032d4751ecc6bcd6385879c9c7), ROM_BIOS(27) )
1571   ROM_SYSTEM_BIOS(27, "pdc", "ProLogic-DOS Classic" )
1572   ROMX_LOAD( "pdc.u4", 0x0000, 0x4000, CRC(6b653b9c) SHA1(0f44a9c62619424a0cd48a90e1b377b987b494e0), ROM_BIOS(28) )
15711573
15721574   ROM_REGION( 0x1000, "charom", 0 )
15731575   ROM_LOAD( "901225-01.u5", 0x0000, 0x1000, CRC(ec4272ee) SHA1(adc7c31e18c7c7413d54802ef2f4193da14711aa) )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team