Previous 15994 Revisions Next

r7451 Tuesday 23rd February, 2010 at 19:23:29 UTC by Curt Coder
[VICTOR9K] Hooked up devices.
[src/mess/drivers]victor9k.c
[src/mess/includes]victor9k.h

src/mess/includes/victor9k.h
r7450r7451
2121typedef struct _victor9k_state victor9k_state;
2222struct _victor9k_state
2323{
24   /* video state */
25   UINT8 *video_ram;
26 
27   /* interrupts */
28   int via1_irq;
29   int via2_irq;
30   int via3_irq;
31   int via4_irq;
32   int via5_irq;
33   int via6_irq;
34 
2435   /* devices */
36   running_device *pic;
2537   running_device *crt;
2638   running_device *ieee488;
2739};
src/mess/drivers/victor9k.c
r7450r7451
2626 
2727static ADDRESS_MAP_START( victor9k_mem, ADDRESS_SPACE_PROGRAM, 8 )
2828   AM_RANGE(0x00000, 0x1ffff) AM_RAM
29/*   AM_RANGE(0xe0000, 0xe0001) AM_DEVREADWRITE(I8259A_TAG, pic8259_r, pic8259_w)
29   AM_RANGE(0xe0000, 0xe0001) AM_DEVREADWRITE(I8259A_TAG, pic8259_r, pic8259_w)
3030   AM_RANGE(0xe0020, 0xe0023) AM_DEVREADWRITE(I8253_TAG, pit8253_r, pit8253_w)
31   AM_RANGE(0xe0040, 0xe0043) AM_DEVREADWRITE(UPD7201_TAG, upd7201_cd_ba_r, upd7201_cd_ba_w)*/
31   AM_RANGE(0xe0040, 0xe0043) AM_DEVREADWRITE(UPD7201_TAG, upd7201_cd_ba_r, upd7201_cd_ba_w)
3232   AM_RANGE(0xe8000, 0xe8000) AM_DEVREADWRITE(HD46505S_TAG, mc6845_register_r, mc6845_register_w)
3333   AM_RANGE(0xe8001, 0xe8001) AM_DEVREADWRITE(HD46505S_TAG, mc6845_status_r, mc6845_address_w)
34/*   AM_RANGE(0xe8020, 0xe802f) AM_DEVREADWRITE(M6522_1_TAG, via_r, via_w)
34   AM_RANGE(0xe8020, 0xe802f) AM_DEVREADWRITE(M6522_1_TAG, via_r, via_w)
3535   AM_RANGE(0xe8040, 0xe804f) AM_DEVREADWRITE(M6522_2_TAG, via_r, via_w)
36   AM_RANGE(0xe8060, 0xe806f) AM_DEVREADWRITE(M6852_TAG, m6852_r, m6852_w)
36//   AM_RANGE(0xe8060, 0xe806f) AM_DEVREADWRITE(M6852_TAG, m6852_r, m6852_w)
3737   AM_RANGE(0xe8080, 0xe808f) AM_DEVREADWRITE(M6522_3_TAG, via_r, via_w)
3838   AM_RANGE(0xe80a0, 0xe80af) AM_DEVREADWRITE(M6522_4_TAG, via_r, via_w)
3939   AM_RANGE(0xe80c0, 0xe80cf) AM_DEVREADWRITE(M6522_6_TAG, via_r, via_w)
40   AM_RANGE(0xe80e0, 0xe80ef) AM_DEVREADWRITE(M6522_5_TAG, via_r, via_w)*/
41   AM_RANGE(0xf0000, 0xf0fff) AM_RAM
40   AM_RANGE(0xe80e0, 0xe80ef) AM_DEVREADWRITE(M6522_5_TAG, via_r, via_w)
41   AM_RANGE(0xf0000, 0xf0fff) AM_RAM AM_BASE_MEMBER(victor9k_state, video_ram)
4242   AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION(I8088_TAG, 0)
4343ADDRESS_MAP_END
4444 
r7450r7451
5353{
5454}
5555 
56static WRITE_LINE_DEVICE_HANDLER( vsync_w )
57{
58   victor9k_state *driver_state = (victor9k_state *)device->machine->driver_data;
59 
60   pic8259_set_irq_line(driver_state->pic, 7, state);
61}
62 
5663static const mc6845_interface hd46505s_intf = 
5764{
5865   SCREEN_TAG,
59   8,
66   10,
6067   NULL,
6168   victor9k_update_row,
6269   NULL,
6370   DEVCB_NULL,
6471   DEVCB_NULL,
6572   DEVCB_NULL,
66   DEVCB_NULL,
73   DEVCB_LINE(vsync_w),
6774   NULL
6875};
6976 
r7450r7451
8491   return 0;
8592}
8693 
94/* Intel 8253 Interface */
95 
96static PIT8253_OUTPUT_CHANGED( mux_serial_b_w )
97{
98}
99 
100static PIT8253_OUTPUT_CHANGED( mux_serial_a_w )
101{
102}
103 
104static PIT8253_OUTPUT_CHANGED( timer_w )
105{
106   victor9k_state *driver_state = (victor9k_state *)device->machine->driver_data;
107 
108   pic8259_set_irq_line(driver_state->pic, 2, state);
109}
110 
111static const struct pit8253_config pit_intf =
112{
113   {
114      {
115         2500000,
116         mux_serial_b_w
117      }, {
118         2500000,
119         mux_serial_a_w
120      }, {
121         100000,
122         timer_w
123      }
124   }
125};
126 
127/* Intel 8259 Interfaces */
128 
129/*
130 
131   pin      signal      description
132 
133   IR0      SYN         sync detect
134   IR1      COMM      serial communications (7201)
135   IR2      TIMER      8253 timer
136   IR3      PARALLEL   all 6522 IRQ (including disk)
137   IR4      IR4         expansion IR4
138   IR5      IR5         expansion IR5
139   IR6      KBINT      keyboard data ready
140   IR7      VINT      vertical sync or nonspecific interrupt
141 
142*/
143 
144static WRITE_LINE_DEVICE_HANDLER( int0_w )
145{
146   cputag_set_input_line(device->machine, I8088_TAG, INPUT_LINE_IRQ0, state);
147}
148 
149static const struct pic8259_interface pic_intf =
150{
151   int0_w
152};
153 
154/* NEC uPD7201 Interface */
155 
156static WRITE_LINE_DEVICE_HANDLER( upd7201_int_w )
157{
158   victor9k_state *driver_state = (victor9k_state *)device->machine->driver_data;
159 
160   pic8259_set_irq_line(driver_state->pic, 1, state);
161}
162 
163static UPD7201_INTERFACE( mpsc_intf )
164{
165   DEVCB_LINE(upd7201_int_w),   /* interrupt */
166   {
167      {
168         0,               /* receive clock */
169         0,               /* transmit clock */
170         DEVCB_NULL,         /* receive DRQ */
171         DEVCB_NULL,         /* transmit DRQ */
172         DEVCB_NULL,         /* receive data */
173         DEVCB_NULL,         /* transmit data */
174         DEVCB_NULL,         /* clear to send */
175         DEVCB_NULL,         /* data carrier detect */
176         DEVCB_NULL,         /* ready to send */
177         DEVCB_NULL,         /* data terminal ready */
178         DEVCB_NULL,         /* wait */
179         DEVCB_NULL         /* sync output */
180      }, {
181         0,               /* receive clock */
182         0,               /* transmit clock */
183         DEVCB_NULL,         /* receive DRQ */
184         DEVCB_NULL,         /* transmit DRQ */
185         DEVCB_NULL,         /* receive data */
186         DEVCB_NULL,         /* transmit data */
187         DEVCB_NULL,         /* clear to send */
188         DEVCB_NULL,         /* data carrier detect */
189         DEVCB_NULL,         /* ready to send */
190         DEVCB_NULL,         /* data terminal ready */
191         DEVCB_NULL,         /* wait */
192         DEVCB_NULL         /* sync output */
193      }
194   }
195};
196 
197/* M6522 Interface */
198 
199static READ8_DEVICE_HANDLER( via1_pa_r )
200{
201   /*
202 
203        bit     description
204 
205        PA0     DIO1
206        PA1     DIO2
207        PA2     DIO3
208        PA3     DIO4
209        PA4     DIO5
210        PA5     DIO6
211        PA6     DIO7
212        PA7     DIO8
213 
214    */
215 
216   return 0;
217}
218 
219static WRITE8_DEVICE_HANDLER( via1_pa_w )
220{
221   /*
222 
223        bit     description
224 
225        PA0     DIO1
226        PA1     DIO2
227        PA2     DIO3
228        PA3     DIO4
229        PA4     DIO5
230        PA5     DIO6
231        PA6     DIO7
232        PA7     DIO8
233 
234    */
235}
236 
237static READ8_DEVICE_HANDLER( via1_pb_r )
238{
239   /*
240 
241        bit     description
242 
243        PB0     DAV
244        PB1     EOI
245        PB2     REN
246        PB3     ATN
247        PB4     IFC
248        PB5     SRQ
249        PB6     NRFD
250        PB7     NDAC
251 
252    */
253 
254   return 0;
255}
256 
257static WRITE8_DEVICE_HANDLER( via1_pb_w )
258{
259   /*
260 
261        bit     description
262 
263        PB0     DAV
264        PB1     EOI
265        PB2     REN
266        PB3     ATN
267        PB4     IFC
268        PB5     SRQ
269        PB6     NRFD
270        PB7     NDAC
271 
272    */
273}
274 
275static WRITE_LINE_DEVICE_HANDLER( via1_irq_w )
276{
277   victor9k_state *driver_state = (victor9k_state *)device->machine->driver_data;
278 
279   driver_state->via1_irq = state;
280 
281   pic8259_set_irq_line(driver_state->pic, 3, driver_state->via1_irq | driver_state->via2_irq | driver_state->via3_irq | driver_state->via4_irq | driver_state->via5_irq | driver_state->via6_irq );
282}
283 
284static const via6522_interface via1_intf =
285{
286   DEVCB_HANDLER(via1_pa_r),
287   DEVCB_HANDLER(via1_pb_r),
288   DEVCB_NULL, // NRFD
289   DEVCB_NULL,
290   DEVCB_NULL, // NDAC
291   DEVCB_NULL,
292 
293   DEVCB_HANDLER(via1_pa_w),
294   DEVCB_HANDLER(via1_pb_w),
295   DEVCB_NULL,
296   DEVCB_NULL,
297   DEVCB_NULL,
298   DEVCB_NULL, // CODEC VOL
299 
300   DEVCB_LINE(via1_irq_w)
301};
302 
303static READ8_DEVICE_HANDLER( via2_pa_r )
304{
305   /*
306 
307        bit     description
308 
309        PA0     INT/EXTA
310        PA1     INT/EXTB
311        PA2     RIA
312        PA3     DSRA
313        PA4     RIB
314        PA5     DSRB
315        PA6     KBDATA
316        PA7     VERT
317 
318    */
319 
320   return 0;
321}
322 
323static WRITE8_DEVICE_HANDLER( via2_pa_w )
324{
325   /*
326 
327        bit     description
328 
329        PA0     INT/EXTA
330        PA1     INT/EXTB
331        PA2     RIA
332        PA3     DSRA
333        PA4     RIB
334        PA5     DSRB
335        PA6     KBDATA
336        PA7     VERT
337 
338    */
339}
340 
341static WRITE8_DEVICE_HANDLER( via2_pb_w )
342{
343   /*
344 
345        bit     description
346 
347        PB0     TALK/LISTEN
348        PB1     KBACKCTL
349        PB2     BRT0
350        PB3     BRT1
351        PB4     BRT2
352        PB5     CONT0
353        PB6     CONT1
354        PB7     CONT2
355 
356    */
357}
358 
359static WRITE_LINE_DEVICE_HANDLER( via2_irq_w )
360{
361   victor9k_state *driver_state = (victor9k_state *)device->machine->driver_data;
362 
363   driver_state->via2_irq = state;
364 
365   pic8259_set_irq_line(driver_state->pic, 3, driver_state->via1_irq | driver_state->via2_irq | driver_state->via3_irq | driver_state->via4_irq | driver_state->via5_irq | driver_state->via6_irq );
366}
367 
368static const via6522_interface via2_intf =
369{
370   DEVCB_HANDLER(via2_pa_r),
371   DEVCB_NULL,
372   DEVCB_NULL,
373   DEVCB_NULL, // KBRDY
374   DEVCB_NULL, // SRQ/BUSY
375   DEVCB_NULL, // KBDATA
376 
377   DEVCB_HANDLER(via2_pa_w),
378   DEVCB_HANDLER(via2_pb_w),
379   DEVCB_NULL,
380   DEVCB_NULL,
381   DEVCB_NULL,
382   DEVCB_NULL,
383 
384   DEVCB_LINE(via2_irq_w)
385};
386 
387static READ8_DEVICE_HANDLER( via3_pa_r )
388{
389   /*
390 
391        bit     description
392 
393        PA0     J5-16
394        PA1     J5-18
395        PA2     J5-20
396        PA3     J5-22
397        PA4     J5-24
398        PA5     J5-26
399        PA6     J5-28
400        PA7     J5-30
401 
402    */
403 
404   return 0;
405}
406 
407static WRITE8_DEVICE_HANDLER( via3_pa_w )
408{
409   /*
410 
411        bit     description
412 
413        PA0     J5-16
414        PA1     J5-18
415        PA2     J5-20
416        PA3     J5-22
417        PA4     J5-24
418        PA5     J5-26
419        PA6     J5-28
420        PA7     J5-30
421 
422    */
423}
424 
425static READ8_DEVICE_HANDLER( via3_pb_r )
426{
427   /*
428 
429        bit     description
430 
431        PB0     J5-32
432        PB1     J5-34
433        PB2     J5-36
434        PB3     J5-38
435        PB4     J5-40
436        PB5     J5-42
437        PB6     J5-44
438        PB7     J5-46
439 
440    */
441 
442   return 0;
443}
444 
445static WRITE8_DEVICE_HANDLER( via3_pb_w )
446{
447   /*
448 
449        bit     description
450 
451        PB0     J5-32
452        PB1     J5-34
453        PB2     J5-36
454        PB3     J5-38
455        PB4     J5-40
456        PB5     J5-42
457        PB6     J5-44
458        PB7     J5-46
459 
460    */
461}
462 
463static WRITE_LINE_DEVICE_HANDLER( via3_irq_w )
464{
465   victor9k_state *driver_state = (victor9k_state *)device->machine->driver_data;
466 
467   driver_state->via3_irq = state;
468 
469   pic8259_set_irq_line(driver_state->pic, 3, driver_state->via1_irq | driver_state->via2_irq | driver_state->via3_irq | driver_state->via4_irq | driver_state->via5_irq | driver_state->via6_irq );
470}
471 
472static const via6522_interface via3_intf =
473{
474   DEVCB_HANDLER(via3_pa_r),
475   DEVCB_HANDLER(via3_pb_r),
476   DEVCB_NULL, // J5-12
477   DEVCB_NULL, // J5-48
478   DEVCB_NULL, // J5-14
479   DEVCB_NULL, // J5-50
480 
481   DEVCB_HANDLER(via3_pa_w),
482   DEVCB_HANDLER(via3_pb_w),
483   DEVCB_NULL,
484   DEVCB_NULL,
485   DEVCB_NULL,
486   DEVCB_NULL,
487 
488   DEVCB_LINE(via3_irq_w)
489};
490 
491static WRITE8_DEVICE_HANDLER( via4_pa_w )
492{
493   /*
494 
495        bit     description
496 
497        PA0     L0MS0
498        PA1     L0MS1
499        PA2     L0MS2
500        PA3     L0MS3
501        PA4     ST0A
502        PA5     ST0B
503        PA6     ST0C
504        PA7     ST0D
505 
506    */
507}
508 
509static WRITE8_DEVICE_HANDLER( via4_pb_w )
510{
511   /*
512 
513        bit     description
514 
515        PB0     L1MS0
516        PB1     L1MS1
517        PB2     L1MS2
518        PB3      L1MS3
519        PB4     ST1A
520        PB5     ST1B
521        PB6     ST1C
522        PB7     ST1D
523 
524    */
525}
526 
527static WRITE_LINE_DEVICE_HANDLER( via4_irq_w )
528{
529   victor9k_state *driver_state = (victor9k_state *)device->machine->driver_data;
530 
531   driver_state->via4_irq = state;
532 
533   pic8259_set_irq_line(driver_state->pic, 3, driver_state->via1_irq | driver_state->via2_irq | driver_state->via3_irq | driver_state->via4_irq | driver_state->via5_irq | driver_state->via6_irq );
534}
535 
536static const via6522_interface via4_intf =
537{
538   DEVCB_NULL,
539   DEVCB_NULL,
540   DEVCB_NULL, // DS0
541   DEVCB_NULL, // DS1
542   DEVCB_NULL,
543   DEVCB_NULL,
544 
545   DEVCB_HANDLER(via4_pa_w),
546   DEVCB_HANDLER(via4_pb_w),
547   DEVCB_NULL,
548   DEVCB_NULL,
549   DEVCB_NULL, // MODE
550   DEVCB_NULL,
551 
552   DEVCB_LINE(via4_irq_w)
553};
554 
555static READ8_DEVICE_HANDLER( via5_pa_r )
556{
557   /*
558 
559        bit     description
560 
561        PA0     E0
562        PA1     E1
563        PA2     I1
564        PA3     E2
565        PA4     E4
566        PA5     E5
567        PA6     I7
568        PA7     E6
569 
570    */
571 
572   return 0;
573}
574 
575static WRITE8_DEVICE_HANDLER( via5_pb_w )
576{
577   /*
578 
579        bit     description
580 
581        PB0     WD0
582        PB1     WD1
583        PB2     WD2
584        PB3     WD3
585        PB4     WD4
586        PB5     WD5
587        PB6     WD6
588        PB7     WD7
589 
590    */
591}
592 
593static WRITE_LINE_DEVICE_HANDLER( via5_irq_w )
594{
595   victor9k_state *driver_state = (victor9k_state *)device->machine->driver_data;
596 
597   driver_state->via5_irq = state;
598 
599   pic8259_set_irq_line(driver_state->pic, 3, driver_state->via1_irq | driver_state->via2_irq | driver_state->via3_irq | driver_state->via4_irq | driver_state->via5_irq | driver_state->via6_irq );
600}
601 
602static const via6522_interface via5_intf =
603{
604   DEVCB_HANDLER(via5_pa_r),
605   DEVCB_NULL,
606   DEVCB_NULL, // BRDY
607   DEVCB_NULL,
608   DEVCB_NULL, // RDY0
609   DEVCB_NULL, // RDY1
610 
611   DEVCB_NULL,
612   DEVCB_HANDLER(via5_pb_w),
613   DEVCB_NULL,
614   DEVCB_NULL,
615   DEVCB_NULL,
616   DEVCB_NULL,
617 
618   DEVCB_LINE(via5_irq_w)
619};
620 
621static READ8_DEVICE_HANDLER( via6_pa_r )
622{
623   /*
624 
625        bit     description
626 
627        PA0     LED0A
628        PA1     TRK0D0
629        PA2     LED1A
630        PA3     TRK0D1
631        PA4     SIDE SELECT
632        PA5     DRIVE SELECT
633        PA6     WPS
634        PA7     SYNC
635 
636    */
637 
638   return 0;
639}
640 
641static WRITE8_DEVICE_HANDLER( via6_pa_w )
642{
643   /*
644 
645        bit     description
646 
647        PA0     LED0A
648        PA1     TRK0D0
649        PA2     LED1A
650        PA3     TRK0D1
651        PA4     SIDE SELECT
652        PA5     DRIVE SELECT
653        PA6     WPS
654        PA7     SYNC
655 
656    */
657}
658 
659static READ8_DEVICE_HANDLER( via6_pb_r )
660{
661   /*
662 
663        bit     description
664 
665        PB0     RDY0
666        PB1     RDY1
667        PB2     SCRESET
668        PB3     DS1
669        PB4     DS0
670        PB5     SINGLE/_DOUBLE SIDED
671        PB6     stepper enable A
672        PB7     stepper enable B
673 
674    */
675 
676   return 0;
677}
678 
679static WRITE8_DEVICE_HANDLER( via6_pb_w )
680{
681   /*
682 
683        bit     description
684 
685        PB0     RDY0
686        PB1     RDY1
687        PB2     SCRESET
688        PB3     DS1
689        PB4     DS0
690        PB5     SINGLE/_DOUBLE SIDED
691        PB6     stepper enable A
692        PB7     stepper enable B
693 
694    */
695}
696 
697static WRITE_LINE_DEVICE_HANDLER( via6_irq_w )
698{
699   victor9k_state *driver_state = (victor9k_state *)device->machine->driver_data;
700 
701   driver_state->via6_irq = state;
702 
703   pic8259_set_irq_line(driver_state->pic, 3, driver_state->via1_irq | driver_state->via2_irq | driver_state->via3_irq | driver_state->via4_irq | driver_state->via5_irq | driver_state->via6_irq );
704}
705 
706static const via6522_interface via6_intf =
707{
708   DEVCB_HANDLER(via6_pa_r),
709   DEVCB_HANDLER(via6_pb_r),
710   DEVCB_NULL, // GCRERR
711   DEVCB_NULL,
712   DEVCB_NULL,
713   DEVCB_NULL,
714 
715   DEVCB_HANDLER(via6_pa_w),
716   DEVCB_HANDLER(via6_pb_w),
717   DEVCB_NULL,
718   DEVCB_NULL,
719   DEVCB_NULL, // DRW
720   DEVCB_NULL, // ERASE
721 
722   DEVCB_LINE(via6_irq_w)
723};
724 
87725/* Floppy Configuration */
88726 
89727static const floppy_config victor9k_floppy_config =
r7450r7451
114752 
115753   /* find devices */
116754   state->ieee488 = devtag_get_device(machine, IEEE488_TAG);
755   state->pic = devtag_get_device(machine, I8259A_TAG);
117756}
118757 
119758/* Machine Driver */
r7450r7451
150789 
151790   /* devices */
152791   MDRV_IEEE488_ADD(IEEE488_TAG, ieee488_daisy)
153//   MDRV_PIC8259_ADD(I8259A_TAG, i8259_intf)
154//   MDRV_PIT8253_ADD(I8253_TAG, i8253_intf)
155//   MDRV_UPD7201_ADD(UPD7201_TAG, 0, upd7201_intf)
156//   MDRV_VIA6522_ADD(M6522_1_TAG, 0, m6522_1_intf)
157//   MDRV_VIA6522_ADD(M6522_2_TAG, 0, m6522_2_intf)
158//   MDRV_VIA6522_ADD(M6522_3_TAG, 0, m6522_3_intf)
159//   MDRV_VIA6522_ADD(M6522_4_TAG, 0, m6522_4_intf)
160//   MDRV_VIA6522_ADD(M6522_5_TAG, 0, m6522_5_intf)
161//   MDRV_VIA6522_ADD(M6522_6_TAG, 0, m6522_6_intf)
792   MDRV_PIC8259_ADD(I8259A_TAG, pic_intf)
793   MDRV_PIT8253_ADD(I8253_TAG, pit_intf)
794   MDRV_UPD7201_ADD(UPD7201_TAG, 0, mpsc_intf)
795   MDRV_VIA6522_ADD(M6522_1_TAG, 0, via1_intf)
796   MDRV_VIA6522_ADD(M6522_2_TAG, 0, via2_intf)
797   MDRV_VIA6522_ADD(M6522_3_TAG, 0, via3_intf)
798   MDRV_VIA6522_ADD(M6522_4_TAG, 0, via4_intf)
799   MDRV_VIA6522_ADD(M6522_5_TAG, 0, via5_intf)
800   MDRV_VIA6522_ADD(M6522_6_TAG, 0, via6_intf)
162801   MDRV_FLOPPY_2_DRIVES_ADD(victor9k_floppy_config)
163802 
164803   /* internal ram */
165804   MDRV_RAM_ADD("messram")
166805   MDRV_RAM_DEFAULT_SIZE("128K")
167   MDRV_RAM_EXTRA_OPTIONS("512K")
806   MDRV_RAM_EXTRA_OPTIONS("256K,384K,512K,640K,768K,896K")
168807MACHINE_DRIVER_END
169808 
170809/* ROMs */

Previous 15994 Revisions Next


© 1998-2018 The MESS Team