Previous 199869 Revisions Next

r23680 Thursday 13th June, 2013 at 19:07:00 UTC by Curt Coder
(MESS) imi5000h: Added CTC/PIO handlers. (nw)
[src/mess/machine]imi5000h.c imi5000h.h

trunk/src/mess/machine/imi5000h.c
r23679r23680
106106//  Z80CTC_INTERFACE( ctc_intf )
107107//-------------------------------------------------
108108
109WRITE_LINE_MEMBER( imi5000h_device::ctc_z0_w )
110{
111   m_ctc->trg1(state);
112}
113
114WRITE_LINE_MEMBER( imi5000h_device::ctc_z1_w )
115{
116   m_ctc->trg2(state);
117   m_ctc->trg3(state);
118}
119
120WRITE_LINE_MEMBER( imi5000h_device::ctc_z2_w )
121{
122   //m_memory_enable = state;
123   m_maincpu->set_input_line(INPUT_LINE_NMI, state);
124}
125
109126static Z80CTC_INTERFACE( ctc_intf )
110127{
111128   DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0),
112   DEVCB_NULL,
113   DEVCB_NULL,
114   DEVCB_NULL
129   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, ctc_z0_w),
130   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, ctc_z1_w),
131   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, ctc_z2_w)
115132};
116133
117134
r23679r23680
119136//  Z80PIO_INTERFACE( pio0_intf )
120137//-------------------------------------------------
121138
139READ8_MEMBER( imi5000h_device::pio0_pa_r )
140{
141   /*
142   
143       bit     description
144   
145       0       -SEEK COMPLETE
146       1       -SECTOR SIZE 2 (UB4:4)
147       2       -SECTOR SIZE 1 (UB4:1)
148       3       -SECTOR SEL
149       4       CRC ERROR
150       5       WRITE FAULT
151       6       -INDEX SEL
152       7       
153   
154   */
155
156   return 0;
157}
158
159WRITE8_MEMBER( imi5000h_device::pio0_pa_w )
160{
161   /*
162   
163       bit     description
164   
165       0       
166       1       
167       2       
168       3       
169       4       
170       5       
171       6       
172       7       ACTIVITY LED
173   
174   */
175}
176
177READ8_MEMBER( imi5000h_device::pio0_pb_r )
178{
179   /*
180   
181       bit     description
182   
183       0       -READY
184       1       
185       2       
186       3       
187       4       
188       5       
189       6       
190       7       
191   
192   */
193
194   return 0;
195}
196
197WRITE8_MEMBER( imi5000h_device::pio0_pb_w )
198{
199   /*
200   
201       bit     description
202   
203       0       
204       1       DIRECTION IN
205       2       -HSXSTB
206       3       STEP
207       4       HEAD SEL 2^0
208       5       HEAD SEL 2^1
209       6       HEAD SEL 2^2
210       7       REDUCE WR CURRENT
211   
212   */
213}
214
122215static Z80PIO_INTERFACE( pio0_intf )
123216{
124217   DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0),
125   DEVCB_NULL,
126   DEVCB_NULL,
127   DEVCB_NULL,
128   DEVCB_NULL,
129   DEVCB_NULL,
130   DEVCB_NULL
218   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio0_pa_r),
219   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio0_pa_w),
220   DEVCB_DEVICE_LINE_MEMBER(Z80PIO_0_TAG, z80pio_device, strobe_a),
221   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio0_pb_r),
222   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio0_pb_w),
223   DEVCB_DEVICE_LINE_MEMBER(Z80PIO_0_TAG, z80pio_device, strobe_b)
131224};
132225
133226
r23679r23680
135228//  Z80PIO_INTERFACE( pio2_intf )
136229//-------------------------------------------------
137230
231READ8_MEMBER( imi5000h_device::pio2_pa_r )
232{
233   /*
234   
235       bit     description
236   
237       0       
238       1       
239       2       
240       3       
241       4       
242       5       
243       6       -SYNC
244       7       -DRV.ACK
245   
246   */
247
248   return 0;
249}
250
251WRITE8_MEMBER( imi5000h_device::pio2_pa_w )
252{
253   /*
254   
255       bit     description
256   
257       0       BUS DIR
258       1       -DRV.ACK
259       2       -ALT SEL
260       3       -HSXFER
261       4       PIO RDY
262       5       -COMPL
263       6       
264       7       
265   
266   */
267}
268
269READ8_MEMBER( imi5000h_device::pio2_pb_r )
270{
271   // command bus
272   return 0;
273}
274
275WRITE8_MEMBER( imi5000h_device::pio2_pb_w )
276{
277   // command bus
278}
279
138280static Z80PIO_INTERFACE( pio2_intf )
139281{
140282   DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0),
141   DEVCB_NULL,
142   DEVCB_NULL,
143   DEVCB_NULL,
144   DEVCB_NULL,
145   DEVCB_NULL,
283   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio2_pa_r),
284   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio2_pa_w),
285   DEVCB_DEVICE_LINE_MEMBER(Z80PIO_2_TAG, z80pio_device, strobe_a),
286   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio2_pb_r),
287   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio2_pb_w),
146288   DEVCB_NULL
147289};
148290
r23679r23680
151293//  Z80PIO_INTERFACE( pio3_intf )
152294//-------------------------------------------------
153295
296READ8_MEMBER( imi5000h_device::pio3_pa_r )
297{
298   /*
299   
300       bit     description
301   
302       0       -TIMEOUT DISABLE (UB4:8)
303       1       -UNIT SELECT 1 (UB4:7)
304       2       -UNIT SELECT 2 (UB4:6)
305       3       SYSTEM/-DIAG (UB4:5)
306       4       -RXD
307       5       
308       6       -TRACK 00
309       7       
310   
311   */
312
313   return 0;
314}
315
316WRITE8_MEMBER( imi5000h_device::pio3_pa_w )
317{
318   /*
319   
320       bit     description
321   
322       0       
323       1       
324       2       
325       3       
326       4       
327       5       TXD
328       6       
329       7       -WRITE DISABLE
330   
331   */
332}
333
334READ8_MEMBER( imi5000h_device::pio3_pb_r )
335{
336   /*
337   
338       bit     description
339   
340       0       
341       1       
342       2       6MB1
343       3       -WRITE PROTECT (W2)
344       4       -FORMAT ENABLE
345       5       6MB2
346       6       12MB1
347       7       12MB2
348   
349   */
350
351   return 0;
352}
353
354WRITE8_MEMBER( imi5000h_device::pio3_pb_w )
355{
356   /*
357   
358       bit     description
359   
360       0       -DRV 1 SEL
361       1       -DRV 2 SEL
362       2       
363       3       
364       4       
365       5       
366       6       
367       7       
368   
369   */
370}
371
154372static Z80PIO_INTERFACE( pio3_intf )
155373{
156374   DEVCB_NULL,
157   DEVCB_NULL,
158   DEVCB_NULL,
159   DEVCB_NULL,
160   DEVCB_NULL,
161   DEVCB_NULL,
162   DEVCB_NULL
375   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio3_pa_r),
376   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio3_pa_w),
377   DEVCB_DEVICE_LINE_MEMBER(Z80PIO_3_TAG, z80pio_device, strobe_a),
378   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio3_pb_r),
379   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, imi5000h_device, pio3_pb_w),
380   DEVCB_DEVICE_LINE_MEMBER(Z80PIO_3_TAG, z80pio_device, strobe_b)
163381};
164382
165383
r23679r23680
168386//-------------------------------------------------
169387
170388static MACHINE_CONFIG_FRAGMENT( imi5000h )
171   MCFG_CPU_ADD(Z80_TAG, Z80, 4000000)
389   MCFG_CPU_ADD(Z80_TAG, Z80, XTAL_8MHz/2)
172390   MCFG_CPU_CONFIG(z80_daisy_chain)
173391   MCFG_CPU_PROGRAM_MAP(imi5000h_mem)
174392   MCFG_CPU_IO_MAP(imi5000h_io)
175393
176   MCFG_Z80CTC_ADD(Z80CTC_TAG, 4000000, ctc_intf)
177   MCFG_Z80PIO_ADD(Z80PIO_0_TAG, 4000000, pio0_intf)
178   MCFG_Z80PIO_ADD(Z80PIO_2_TAG, 4000000, pio2_intf)
179   MCFG_Z80PIO_ADD(Z80PIO_3_TAG, 4000000, pio3_intf)
394   MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_8MHz/2, ctc_intf)
395   MCFG_Z80PIO_ADD(Z80PIO_0_TAG, XTAL_8MHz/2, pio0_intf)
396   MCFG_Z80PIO_ADD(Z80PIO_2_TAG, XTAL_8MHz/2, pio2_intf)
397   MCFG_Z80PIO_ADD(Z80PIO_3_TAG, XTAL_8MHz/2, pio3_intf)
180398MACHINE_CONFIG_END
181399
182400
r23679r23680
196414//-------------------------------------------------
197415
198416static INPUT_PORTS_START( imi5000h )
417   PORT_START("LSI-11")
418   PORT_DIPNAME( 0x01, 0x00, "LSI-11" )
419   PORT_DIPSETTING(    0x01, "Normal" )
420   PORT_DIPSETTING(    0x00, "LSI-11" ) // emulate DEC RL01 and RL02
421
422   PORT_START("MUX")
423   PORT_DIPNAME( 0x01, 0x00, "MUX" )
424   PORT_DIPSETTING(    0x01, "Single" )
425   PORT_DIPSETTING(    0x00, "Multiplexer" ) // Corvus Multiplexer Network
426
427   PORT_START("FORMAT")
428   PORT_DIPNAME( 0x01, 0x00, "FORMAT" )
429   PORT_DIPSETTING(    0x01, "Normal" ) // read controller firmware from cylinders 0 and 1
430   PORT_DIPSETTING(    0x00, "Format" ) // drive ready after self-test, allow format
431
432   PORT_START("RESET")
433   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("RESET")
434
199435   PORT_START("UB4")
200436   PORT_DIPUNKNOWN_DIPLOC( 0x01, IP_ACTIVE_LOW, "UB4:1" )
201437   PORT_DIPUNKNOWN_DIPLOC( 0x02, IP_ACTIVE_LOW, "UB4:2" )
r23679r23680
230466imi5000h_device::imi5000h_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
231467   : device_t(mconfig, IMI5000H, "IMI 5000H", tag, owner, clock, "imi5000h", __FILE__),
232468      m_maincpu(*this, Z80_TAG),
469      m_ctc(*this, Z80CTC_TAG),
470      m_lsi11(*this, "LSI-11"),
471      m_mux(*this, "MUX"),
472      m_format(*this, "FORMAT"),
233473      m_ub4(*this, "UB4")
234474{
235475}
r23679r23680
242482void imi5000h_device::device_start()
243483{
244484}
485
486
487//-------------------------------------------------
488//  device_reset - device-specific reset
489//-------------------------------------------------
490
491void imi5000h_device::device_reset()
492{
493   m_maincpu->reset();
494   m_ctc->reset();
495}
trunk/src/mess/machine/imi5000h.h
r23679r23680
4848   virtual machine_config_constructor device_mconfig_additions() const;
4949   virtual ioport_constructor device_input_ports() const;
5050
51   DECLARE_WRITE_LINE_MEMBER( ctc_z0_w );
52   DECLARE_WRITE_LINE_MEMBER( ctc_z1_w );
53   DECLARE_WRITE_LINE_MEMBER( ctc_z2_w );
54
55   DECLARE_READ8_MEMBER( pio0_pa_r );
56   DECLARE_WRITE8_MEMBER( pio0_pa_w );
57   DECLARE_READ8_MEMBER( pio0_pb_r );
58   DECLARE_WRITE8_MEMBER( pio0_pb_w );
59
60   DECLARE_READ8_MEMBER( pio2_pa_r );
61   DECLARE_WRITE8_MEMBER( pio2_pa_w );
62   DECLARE_READ8_MEMBER( pio2_pb_r );
63   DECLARE_WRITE8_MEMBER( pio2_pb_w );
64
65   DECLARE_READ8_MEMBER( pio3_pa_r );
66   DECLARE_WRITE8_MEMBER( pio3_pa_w );
67   DECLARE_READ8_MEMBER( pio3_pb_r );
68   DECLARE_WRITE8_MEMBER( pio3_pb_w );
69
5170protected:
5271   // device-level overrides
5372   virtual void device_start();
73   virtual void device_reset();
5474
5575private:
76   enum
77   {
78      LED_FAULT,
79      LED_BUSY,
80      LED_READY
81   };
82
5683   required_device<cpu_device> m_maincpu;
84   required_device<z80ctc_device> m_ctc;
85   required_ioport m_lsi11;
86   required_ioport m_mux;
87   required_ioport m_format;
5788   required_ioport m_ub4;
5889};
5990

Previous 199869 Revisions Next


© 1997-2024 The MAME Team