Previous 199869 Revisions Next

r19331 Wednesday 5th December, 2012 at 15:11:49 UTC by Curt Coder
(MESS) trs80m2: Floppy modernization. (nw)
[src/mess/drivers]trs80m2.c
[src/mess/includes]trs80m2.h

trunk/src/mess/includes/trs80m2.h
r19330r19331
1414#include "machine/pic8259.h"
1515#include "machine/ram.h"
1616#include "machine/trs80m2kb.h"
17#include "machine/wd17xx.h"
17#include "machine/wd_fdc.h"
1818#include "machine/z80ctc.h"
1919#include "machine/z80dma.h"
2020#include "machine/z80pio.h"
r19330r19331
4040      : driver_device(mconfig, type, tag),
4141        m_maincpu(*this, Z80_TAG),
4242        m_ctc(*this, Z80CTC_TAG),
43        m_dmac(*this, Z80DMA_TAG),
4344        m_pio(*this, Z80PIO_TAG),
4445        m_crtc(*this, MC6845_TAG),
4546        m_fdc(*this, FD1791_TAG),
4647        m_centronics(*this, CENTRONICS_TAG),
47        m_floppy(*this, FLOPPY_0),
48        m_floppy0(*this, FD1791_TAG":0"),
49        m_floppy1(*this, FD1791_TAG":1"),
50        m_floppy2(*this, FD1791_TAG":2"),
51        m_floppy3(*this, FD1791_TAG":3"),
52        m_floppy(NULL),
4853        m_ram(*this, RAM_TAG),
4954        m_kb(*this, TRS80M2_KEYBOARD_TAG)
5055   { }
5156
5257   required_device<cpu_device> m_maincpu;
53   required_device<z80ctc_device>m_ctc;
58   required_device<z80ctc_device> m_ctc;
59   required_device<z80dma_device> m_dmac;
5460   required_device<z80pio_device> m_pio;
5561   required_device<mc6845_device> m_crtc;
56   required_device<fd1791_device> m_fdc;
62   required_device<fd1791_t> m_fdc;
5763   required_device<centronics_device> m_centronics;
58   required_device<legacy_floppy_image_device> m_floppy;
64   required_device<floppy_connector> m_floppy0;
65   required_device<floppy_connector> m_floppy1;
66   required_device<floppy_connector> m_floppy2;
67   required_device<floppy_connector> m_floppy3;
68   floppy_image_device *m_floppy;
5969   required_device<ram_device> m_ram;
6070   required_device<trs80m2_keyboard_device> m_kb;
6171
r19330r19331
8494   DECLARE_READ8_MEMBER( pio_pa_r );
8595   DECLARE_WRITE8_MEMBER( pio_pa_w );
8696   DECLARE_WRITE_LINE_MEMBER( strobe_w );
87   DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w );
97   void fdc_intrq_w(bool state);
98   void fdc_drq_w(bool state);
8899   DECLARE_WRITE_LINE_MEMBER( kb_clock_w );
89100
90101   void scan_keyboard();
trunk/src/mess/drivers/trs80m2.c
r19330r19331
221221    */
222222
223223   // drive select
224   if (!BIT(data, 0)) wd17xx_set_drive(m_fdc, 0);
225   if (!BIT(data, 1)) wd17xx_set_drive(m_fdc, 1);
226   if (!BIT(data, 2)) wd17xx_set_drive(m_fdc, 2);
227   if (!BIT(data, 3)) wd17xx_set_drive(m_fdc, 3);
224   m_floppy = NULL;
228225
226   if (!BIT(data, 0)) m_floppy = m_floppy0->get_device();
227   if (!BIT(data, 1)) m_floppy = m_floppy1->get_device();
228   if (!BIT(data, 2)) m_floppy = m_floppy2->get_device();
229   if (!BIT(data, 3)) m_floppy = m_floppy3->get_device();
230
231   m_fdc->set_floppy(m_floppy);
232
229233   // side select
230   wd17xx_set_side(m_fdc, !BIT(data, 6));
234   if (m_floppy) m_floppy->ss_w(!BIT(data, 6));
231235
232236   // FM/MFM
233   wd17xx_dden_w(m_fdc, BIT(data, 7));
237   m_fdc->dden_w(BIT(data, 7));
234238}
235239
236240READ8_MEMBER( trs80m2_state::keyboard_r )
r19330r19331
332336
333337READ8_MEMBER( trs80m2_state::fdc_r )
334338{
335   return wd17xx_r(m_fdc, space, offset) ^ 0xff;
339   return m_fdc->gen_r(offset) ^ 0xff;
336340}
337341
338342WRITE8_MEMBER( trs80m2_state::fdc_w )
339343{
340   wd17xx_w(m_fdc, space, offset, data ^ 0xff);
344   m_fdc->gen_w(offset, data ^ 0xff);
341345}
342346
343347WRITE8_MEMBER( trs80m16_state::tcl_w )
r19330r19331
730734   UINT8 data = 0;
731735
732736   // floppy interrupt
733   data |= wd17xx_intrq_r(m_fdc);
737   data |= m_fdc->intrq_r();
734738
735739   // 2-sided diskette
736   data |= floppy_twosid_r(m_floppy) << 1;
740   data |= (m_floppy ? m_floppy->twosid_r() : 1) << 1;
737741
738742   // disk change
739   data |= floppy_dskchg_r(m_floppy) << 2;
743   data |= (m_floppy ? m_floppy->dskchg_r() : 1) << 2;
740744
741745   // printer fault
742746   data |= m_centronics->fault_r() << 4;
r19330r19331
855859//  wd17xx_interface fdc_intf
856860//-------------------------------------------------
857861
858static const floppy_interface trs80m2_floppy_interface =
859{
860   DEVCB_NULL,
861   DEVCB_NULL,
862   DEVCB_NULL,
863   DEVCB_NULL,
864   DEVCB_NULL,
865   FLOPPY_STANDARD_8_DSDD, // Shugart SA-800
866   LEGACY_FLOPPY_OPTIONS_NAME(default),
867   "floppy_8",
868   NULL
869};
862static SLOT_INTERFACE_START( trs80m2_floppies )
863   SLOT_INTERFACE( "8ssdd", FLOPPY_8_SSDD ) // Shugart SA-800
864   SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD ) // Shugart SA-850
865SLOT_INTERFACE_END
870866
871WRITE_LINE_MEMBER( trs80m2_state::fdc_intrq_w )
867void trs80m2_state::fdc_intrq_w(bool state)
872868{
873869   m_pio->port_a_write(state);
874870}
875871
876static const wd17xx_interface fdc_intf =
872void trs80m2_state::fdc_drq_w(bool state)
877873{
878   DEVCB_NULL,
879   DEVCB_DRIVER_LINE_MEMBER(trs80m2_state, fdc_intrq_w),
880   DEVCB_DEVICE_LINE(Z80DMA_TAG, z80dma_rdy_w),
881   { FLOPPY_0, NULL, NULL, NULL }
882};
874   m_dmac->rdy_w(state);
875}
883876
884877
885878//-------------------------------------------------
r19330r19331
926919
927920void trs80m2_state::machine_start()
928921{
929   // Shugart SA-800 motor spins constantly
930   floppy_mon_w(m_floppy, CLEAR_LINE);
922   // floppy callbacks
923   m_fdc->setup_intrq_cb(wd_fdc_t::line_cb(FUNC(trs80m2_state::fdc_intrq_w), this));
924   m_fdc->setup_drq_cb(wd_fdc_t::line_cb(FUNC(trs80m2_state::fdc_drq_w), this));
931925
932926   // register for state saving
933927   save_item(NAME(m_boot_rom));
r19330r19331
10091003   MCFG_MC6845_ADD(MC6845_TAG, MC6845, XTAL_12_48MHz/8, mc6845_intf)
10101004
10111005   // devices
1012   MCFG_FD1791_ADD(FD1791_TAG, fdc_intf)
1006   MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/8)
10131007   MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_8MHz/2, ctc_intf)
10141008   MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(XTAL_8MHz/2/2))
10151009   MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_8MHz/2, dma_intf)
10161010   MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_8MHz/2, pio_intf)
10171011   MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, sio_intf)
10181012   MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf)
1019   MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, trs80m2_floppy_interface)
1013   MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":0", trs80m2_floppies, "8dsdd", NULL, floppy_image_device::default_floppy_formats)
1014   MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":1", trs80m2_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
1015   MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":2", trs80m2_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
1016   MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":3", trs80m2_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
10201017   MCFG_TRS80M2_KEYBOARD_ADD(kb_intf)
10211018
10221019   MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", trs80m2_state, trs80m2_keyboard_tick, attotime::from_hz(60))
r19330r19331
10571054   MCFG_MC6845_ADD(MC6845_TAG, MC6845, XTAL_12_48MHz/8, mc6845_intf)
10581055
10591056   // devices
1060   MCFG_FD1791_ADD(FD1791_TAG, fdc_intf)
1057   MCFG_FD1791x_ADD(FD1791_TAG, XTAL_8MHz/8)
10611058   MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_8MHz/2, ctc_intf)
10621059   MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(XTAL_8MHz/2/2))
10631060   MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_8MHz/2, dma_intf)
10641061   MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_8MHz/2, pio_intf)
10651062   MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, sio_intf)
10661063   MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, centronics_intf)
1067   MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, trs80m2_floppy_interface)
1064   MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":0", trs80m2_floppies, "8ssdd", NULL, floppy_image_device::default_floppy_formats)
1065   MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":1", trs80m2_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
1066   MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":2", trs80m2_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
1067   MCFG_FLOPPY_DRIVE_ADD(FD1791_TAG":3", trs80m2_floppies, NULL,    NULL, floppy_image_device::default_floppy_formats)
10681068   MCFG_PIC8259_ADD(AM9519A_TAG, pic_intf)
10691069   MCFG_TRS80M2_KEYBOARD_ADD(kb_intf)
10701070
r19330r19331
10851085//  ROMS
10861086//**************************************************************************
10871087
1088//-------------------------------------------------
1089//  ROM( trs80m2 )
1090//-------------------------------------------------
1091
1092ROM_START( trs80m2 )
1093   ROM_REGION( 0x800, Z80_TAG, 0 )
1094   ROM_LOAD( "8043216.u11", 0x0000, 0x0800, CRC(7017a373) SHA1(1c7127fcc99fc351a40d3a3199ba478e783c452e) )
1095
1096   ROM_REGION( 0x800, MC6845_TAG, 0 )
1097   ROM_LOAD( "8043316.u9", 0x0000, 0x0800, CRC(04425b03) SHA1(32a29dc202b7fcf21838289cc3bffc51ef943dab) )
1098ROM_END
1099
1100
1101//-------------------------------------------------
1102//  ROM( trs80m16 )
1103//-------------------------------------------------
1104
11051088/*
11061089
11071090    TRS-80 Model II/16 Z80 CPU Board ROM
r19330r19331
11351118
11361119*/
11371120
1138ROM_START( trs80m16 )
1121//-------------------------------------------------
1122//  ROM( trs80m2 )
1123//-------------------------------------------------
1124
1125ROM_START( trs80m2 )
11391126   ROM_REGION( 0x800, Z80_TAG, 0 )
1140   ROM_SYSTEM_BIOS( 0, "v1", "Version 1 (S/N 120353)" )
1141   ROMX_LOAD( "cpu_c8ff.u11", 0x0000, 0x0800, CRC(7017a373) SHA1(1c7127fcc99fc351a40d3a3199ba478e783c452e), ROM_BIOS(1) )
1142   ROM_SYSTEM_BIOS( 1, "v2", "Version 2 (S/N 187173)" )
1143   ROMX_LOAD( "cpu_2bff.u11", 0x0000, 0x0800, CRC(c6c71d8b) SHA1(7107e2cbbe769851a4460680c2deff8e76a101b5), ROM_BIOS(2) )
1144   ROM_SYSTEM_BIOS( 2, "v3", "Version 3 (S/N 64014509)" )
1127   ROM_DEFAULT_BIOS( "9733" )
1128   ROM_SYSTEM_BIOS( 0, "c8ff", "Version 1" )
1129   ROMX_LOAD( "8043216.u11", 0x0000, 0x0800, CRC(7017a373) SHA1(1c7127fcc99fc351a40d3a3199ba478e783c452e), ROM_BIOS(1) )
1130   ROM_SYSTEM_BIOS( 1, "2bff", "Version 2 (1981-07-29)" )
1131   ROMX_LOAD( "8047316.u11", 0x0000, 0x0800, CRC(c6c71d8b) SHA1(7107e2cbbe769851a4460680c2deff8e76a101b5), ROM_BIOS(2) )
1132   ROM_SYSTEM_BIOS( 2, "2119", "Version 3 (1982-05-07)" )
11451133   ROMX_LOAD( "cpu_2119.u11", 0x0000, 0x0800, CRC(7a663049) SHA1(f308439ce266df717bfe79adcdad6024b4faa141), ROM_BIOS(3) )
1146   ROM_SYSTEM_BIOS( 3, "v4", "Version 4 (S/N ?)" )
1147   ROMX_LOAD( "cpu_fc86.u11", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(4) )
1148   ROM_SYSTEM_BIOS( 4, "v5", "Version 5 (S/N 161993)" )
1149   ROMX_LOAD( "cpu_9733.u11", 0x0000, 0x0800, CRC(823924b1) SHA1(aee0625bcbd8620b28ab705e15ad9bea804c8476), ROM_BIOS(5) )
1134   ROM_SYSTEM_BIOS( 3, "1bbe", "Version 3 (1982-05-07, Alt)" )
1135   ROMX_LOAD( "cpu_11be.u11", 0x0000, 0x0800, CRC(8edceea7) SHA1(3d797acedd8a71a82c695129ca764f85aa9022b2), ROM_BIOS(4) )
1136   ROM_SYSTEM_BIOS( 4, "fc86", "Version 4 (1982-11-18)" )
1137   ROMX_LOAD( "cpu_fc86.u11", 0x0000, 0x0800, NO_DUMP, ROM_BIOS(5) )
1138   ROM_SYSTEM_BIOS( 5, "9733", "Version 5 (1983-07-29)" )
1139   ROMX_LOAD( "u54.u11", 0x0000, 0x0800, CRC(823924b1) SHA1(aee0625bcbd8620b28ab705e15ad9bea804c8476), ROM_BIOS(6) )
11501140
11511141   ROM_REGION( 0x800, MC6845_TAG, 0 )
11521142   ROM_LOAD( "8043316.u9", 0x0000, 0x0800, CRC(04425b03) SHA1(32a29dc202b7fcf21838289cc3bffc51ef943dab) )
11531143ROM_END
11541144
11551145
1146//-------------------------------------------------
1147//  ROM( trs80m16 )
1148//-------------------------------------------------
11561149
1150#define rom_trs80m16 rom_trs80m2
1151
1152
1153
11571154//**************************************************************************
11581155//  SYSTEM DRIVERS
11591156//**************************************************************************

Previous 199869 Revisions Next


© 1997-2024 The MAME Team