Previous 199869 Revisions Next

r30800 Tuesday 3rd June, 2014 at 11:42:56 UTC by Curt Coder
(MESS) ql: Expansion WIP. (nw)
[src/emu/bus/ql]exp.c sandy_superdisk.c sandy_superdisk.h sandy_superqboard.h trumpcard.c trumpcard.h

trunk/src/emu/bus/ql/trumpcard.c
r30799r30800
2626//**************************************************************************
2727
2828const device_type QL_TRUMP_CARD = &device_creator<ql_trump_card_t>;
29const device_type QL_TRUMP_CARD_256K = &device_creator<ql_trump_card_256k_t>;
30const device_type QL_TRUMP_CARD_512K = &device_creator<ql_trump_card_512k_t>;
31const device_type QL_TRUMP_CARD_768K = &device_creator<ql_trump_card_768k_t>;
2932
3033
3134//-------------------------------------------------
r30799r30800
7679
7780static MACHINE_CONFIG_FRAGMENT( ql_trump_card )
7881   MCFG_DEVICE_ADD(WD1772_TAG, WD1772x, 8000000)
79   //MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(ql_trump_card_t, fdc_intrq_w))
80   //MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(ql_trump_card_t, fdc_drq_w))
8182   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", ql_trump_card_floppies, "35dd", ql_trump_card_t::floppy_formats)
8283   MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":1", ql_trump_card_floppies, NULL, ql_trump_card_t::floppy_formats)
8384MACHINE_CONFIG_END
r30799r30800
104105//-------------------------------------------------
105106
106107ql_trump_card_t::ql_trump_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
107   device_t(mconfig, QL_TRUMP_CARD, "QL Trump Card", tag, owner, clock, "ql_trump_card", __FILE__),
108   device_t(mconfig, QL_TRUMP_CARD, "QL Trump Card", tag, owner, clock, "trump", __FILE__),
108109   device_ql_expansion_card_interface(mconfig, *this),
110   m_fdc(*this, WD1772_TAG),
111   m_floppy0(*this, WD1772_TAG":0"),
112   m_floppy1(*this, WD1772_TAG":1"),
109113   m_rom(*this, "rom"),
110   m_ram(*this, "ram")
114   m_ram(*this, "ram"),
115   m_ram_size(0)
111116{
112117}
113118
119ql_trump_card_t::ql_trump_card_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int ram_size) :
120   device_t(mconfig, QL_TRUMP_CARD, "QL Trump Card", tag, owner, clock, "trump", __FILE__),
121   device_ql_expansion_card_interface(mconfig, *this),
122   m_fdc(*this, WD1772_TAG),
123   m_floppy0(*this, WD1772_TAG":0"),
124   m_floppy1(*this, WD1772_TAG":1"),
125   m_rom(*this, "rom"),
126   m_ram(*this, "ram"),
127   m_ram_size(ram_size)
128{
129}
114130
131ql_trump_card_256k_t::ql_trump_card_256k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
132   : ql_trump_card_t(mconfig, QL_TRUMP_CARD_256K, "QL Trump Card 256K", tag, owner, clock, "trump256k", __FILE__, 256*1024) { }
133
134ql_trump_card_512k_t::ql_trump_card_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
135   : ql_trump_card_t(mconfig, QL_TRUMP_CARD_512K, "QL Trump Card 512K", tag, owner, clock, "trump512k", __FILE__, 512*1024) { }
136
137ql_trump_card_768k_t::ql_trump_card_768k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
138   : ql_trump_card_t(mconfig, QL_TRUMP_CARD_768K, "QL Trump Card 768K", tag, owner, clock, "trump768k", __FILE__, 768*1024) { }
139
140
115141//-------------------------------------------------
116142//  device_start - device-specific startup
117143//-------------------------------------------------
118144
119145void ql_trump_card_t::device_start()
120146{
147   m_ram.allocate(m_ram_size);
121148}
122149
123150
r30799r30800
127154
128155void ql_trump_card_t::device_reset()
129156{
157   m_fdc->set_floppy(NULL);
158   m_fdc->dden_w(0);
159
160   m_rom_en = false;
161   m_ram_en = false;
130162}
163
164
165//-------------------------------------------------
166//  read -
167//-------------------------------------------------
168
169UINT8 ql_trump_card_t::read(address_space &space, offs_t offset, UINT8 data)
170{
171   if (!m_rom_en && offset >= 0xc000 && offset < 0x10000)
172   {
173      m_rom_en = true;
174
175      data = m_rom->base()[offset & 0x3fff];
176   }
177
178   if (offset >= 0x10000 && offset < 0x18000)
179   {
180      if (m_ram_size == 768*1024)
181      {
182         m_ram_en = true;
183      }
184
185      data = m_rom->base()[offset & 0x7fff];
186   }
187
188   if (offset >= 0x1c000 && offset <= 0x1c003)
189   {
190      data = m_fdc->read(space, offset & 0x03);
191   }
192
193   if (offset >= 0x60000 && offset < 0xc0000)
194   {
195      if ((offset - 0x60000) < m_ram_size)
196      {
197         data = m_ram[offset - 0x60000];
198      }
199   }
200
201   if (offset >= 0xc0000)
202   {
203      if (m_rom_en && offset < 0xc8000)
204      {
205         data = m_rom->base()[offset & 0x7fff];
206      }
207
208      if (m_ram_en)
209      {
210         data = m_ram[offset - 0x60000];
211      }
212   }
213
214   return data;
215}
216
217
218//-------------------------------------------------
219//  write -
220//-------------------------------------------------
221
222void ql_trump_card_t::write(address_space &space, offs_t offset, UINT8 data)
223{
224   if (offset >= 0x1c000 && offset <= 0x1c003)
225   {
226      m_fdc->write(space, offset & 0x03, data);
227   }
228   
229   if (offset == 0x1e000)
230   {
231      /*
232
233         bit      description
234
235         0       DRIVE1
236         1       DRIVE0
237         2       MOTOR
238         3       SIDE
239         4       
240         5       
241         6       
242         7       
243
244      */
245
246      floppy_image_device *floppy = NULL;
247
248      if (BIT(data, 1))
249      {
250         floppy = m_floppy0->get_device();
251      }
252      else if (BIT(data, 0))
253      {
254         floppy = m_floppy1->get_device();
255      }
256
257      m_fdc->set_floppy(floppy);
258
259      if (floppy)
260      {
261         floppy->ss_w(BIT(data, 3));
262         floppy->mon_w(BIT(data, 2));
263      }
264   }
265
266   if (offset >= 0x60000 && offset < 0xc0000)
267   {
268      if ((offset - 0x60000) < m_ram_size)
269      {
270         m_ram[offset - 0x60000] = data;
271      }
272   }
273
274   if (offset >= 0xc0000)
275   {
276      if (m_ram_en)
277      {
278         m_ram[offset - 0x60000] = data;
279      }
280   }
281}
trunk/src/emu/bus/ql/trumpcard.h
r30799r30800
3232public:
3333   // construction/destruction
3434   ql_trump_card_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
35   ql_trump_card_t(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source, int ram_size);
3536
3637   // optional information overrides
3738   virtual const rom_entry *device_rom_region() const;
r30799r30800
4546   virtual void device_reset();
4647
4748   // device_ql_expansion_card_interface overrides
49   virtual UINT8 read(address_space &space, offs_t offset, UINT8 data);
50   virtual void write(address_space &space, offs_t offset, UINT8 data);
4851
4952private:
53   required_device<wd1772_t> m_fdc;
54   required_device<floppy_connector> m_floppy0;
55   required_device<floppy_connector> m_floppy1;
5056   required_memory_region m_rom;
5157   optional_shared_ptr<UINT8> m_ram;
58
59   int m_ram_size;
60   bool m_rom_en;
61   bool m_ram_en;
5262};
5363
5464
65// ======================> ql_trump_card_256k_t
66
67class ql_trump_card_256k_t :  public ql_trump_card_t
68{
69public:
70   // construction/destruction
71   ql_trump_card_256k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
72};
73
74
75// ======================> ql_trump_card_512k_t
76
77class ql_trump_card_512k_t :  public ql_trump_card_t
78{
79public:
80   // construction/destruction
81   ql_trump_card_512k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
82};
83
84
85// ======================> ql_trump_card_768k_t
86
87class ql_trump_card_768k_t :  public ql_trump_card_t
88{
89public:
90   // construction/destruction
91   ql_trump_card_768k_t(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
92};
93
94
95
5596// device type definition
5697extern const device_type QL_TRUMP_CARD;
98extern const device_type QL_TRUMP_CARD_256K;
99extern const device_type QL_TRUMP_CARD_512K;
100extern const device_type QL_TRUMP_CARD_768K;
57101
58102
103
59104#endif
trunk/src/emu/bus/ql/sandy_superdisk.c
r30799r30800
127127void sandy_super_disk_t::device_reset()
128128{
129129}
130
131
132//-------------------------------------------------
133//  read -
134//-------------------------------------------------
135
136UINT8 sandy_super_disk_t::read(address_space &space, offs_t offset, UINT8 data)
137{
138   return data;
139}
140
141
142//-------------------------------------------------
143//  write -
144//-------------------------------------------------
145
146void sandy_super_disk_t::write(address_space &space, offs_t offset, UINT8 data)
147{
148}
trunk/src/emu/bus/ql/sandy_superqboard.h
r30799r30800
4848   virtual void device_reset();
4949
5050   // device_ql_expansion_card_interface overrides
51    virtual UINT8 read(address_space &space, offs_t offset, UINT8 data);
52    virtual void write(address_space &space, offs_t offset, UINT8 data);
51   virtual UINT8 read(address_space &space, offs_t offset, UINT8 data);
52   virtual void write(address_space &space, offs_t offset, UINT8 data);
5353
5454private:
5555   void check_interrupt();
trunk/src/emu/bus/ql/exp.c
r30799r30800
8383#include "trumpcard.h"
8484
8585SLOT_INTERFACE_START( ql_expansion_cards )
86   SLOT_INTERFACE("superdisk", SANDY_SUPER_DISK)
87   SLOT_INTERFACE("superqboard", SANDY_SUPERQBOARD)
88   SLOT_INTERFACE("trumpcard", QL_TRUMP_CARD)
86   SLOT_INTERFACE("sdisk", SANDY_SUPER_DISK)
87   SLOT_INTERFACE("sqboard", SANDY_SUPERQBOARD)
88   SLOT_INTERFACE("trump", QL_TRUMP_CARD)
89   SLOT_INTERFACE("trump256k", QL_TRUMP_CARD_256K)
90   SLOT_INTERFACE("trump512k", QL_TRUMP_CARD_512K)
91   SLOT_INTERFACE("trump768k", QL_TRUMP_CARD_768K)
8992SLOT_INTERFACE_END
trunk/src/emu/bus/ql/sandy_superdisk.h
r30799r30800
4646   virtual void device_reset();
4747
4848   // device_ql_expansion_card_interface overrides
49   virtual UINT8 read(address_space &space, offs_t offset, UINT8 data);
50   virtual void write(address_space &space, offs_t offset, UINT8 data);
4951
5052private:
5153   required_memory_region m_rom;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team