Previous 15994 Revisions Next

r15097 Sunday 6th May, 2012 at 08:27:11 UTC by Wilbert Pol
[PC Drivers] Updated remaining PC/XT and AT drivers to use the keyboard slot implementation.
Removed legacy device implementation for the Keytronic keyboard. Removed an
unneeded include from drivers/amstr_pc.c. [Wilbert Pol]
[src/mess/drivers]amstr_pc.c at.c pc.c
[src/mess/includes]at.h pc.h
[src/mess/machine]kb_keytro.c kb_keytro.h pc.c pc_keyboards.c pc_keyboards.h

src/mess/machine/pc_keyboards.c
r15096r15097
88SLOT_INTERFACE_END
99
1010
11SLOT_INTERFACE_START(pc_at_keyboards)
12   SLOT_INTERFACE(STR_KBD_KEYTRONIC_PC3270, PC_KBD_KEYTRONIC_PC3270_AT)
13SLOT_INTERFACE_END
14
src/mess/machine/pc_keyboards.h
r15096r15097
1515
1616// PC AT protocol keyboards
1717
18// TODO
18SLOT_INTERFACE_EXTERN(pc_at_keyboards);
1919
2020#endif   /* __KB_KEYBOARDS_H__ */
2121
src/mess/machine/pc.c
r15096r15097
3838
3939#include "machine/8237dma.h"
4040
41#include "machine/kb_keytro.h"
4241#include "machine/ram.h"
4342
4443#include "memconv.h"
r15096r15097
618617 *
619618 **********************************************************/
620619
621
622WRITE8_MEMBER(pc_state::ibm5150_kb_set_clock_signal)
620WRITE_LINE_MEMBER( pc_state::keyboard_clock_w )
623621{
624   device_t *keyboard = machine().device("keyboard");
625
626   if ( m_ppi_clock_signal != data )
622   if ( m_ppi_clock_signal != state )
627623   {
628624      if ( m_ppi_keyb_clock && m_ppi_shift_enable )
629625      {
630         m_ppi_clock_signal = data;
626         m_ppi_clock_signal = state;
631627         if ( ! m_ppi_keyboard_clear )
632628         {
633629            /* Data is clocked in on a high->low transition */
634            if ( ! data )
630            if ( ! state )
635631            {
636               UINT8   trigger_irq = m_ppi_shift_register & 0x01;
632               UINT8   trigger_irq = m_ppi_shift_register & 0x01;
637633
638634               m_ppi_shift_register = ( m_ppi_shift_register >> 1 ) | ( m_ppi_data_signal << 7 );
639635               if ( trigger_irq )
r15096r15097
641637                  pic8259_ir1_w(m_pic8259, 1);
642638                  m_ppi_shift_enable = 0;
643639                  m_ppi_clock_signal = 0;
644                  kb_keytronic_clock_w(keyboard, m_ppi_clock_signal);
640                  m_pc_kbdc->clock_write_from_mb(m_ppi_clock_signal);
645641               }
646642            }
647643         }
648644      }
649645   }
650
651   kb_keytronic_clock_w(keyboard, m_ppi_clock_signal);
652646}
653647
654648
655WRITE8_MEMBER(pc_state::ibm5150_kb_set_data_signal)
649WRITE_LINE_MEMBER( pc_state::keyboard_data_w )
656650{
657   device_t *keyboard = machine().device("keyboard");
658
659   m_ppi_data_signal = data;
660
661   kb_keytronic_data_w(keyboard, m_ppi_data_signal);
651   m_ppi_data_signal = state;
662652}
663653
654
664655static READ8_DEVICE_HANDLER (ibm5160_ppi_porta_r)
665656{
666657   int data = 0xFF;
r15096r15097
727718static WRITE8_DEVICE_HANDLER( ibm5160_ppi_portb_w )
728719{
729720   pc_state *st = device->machine().driver_data<pc_state>();
730   device_t *keyboard = device->machine().device("keyboard");
731721
732722   /* PPI controller port B*/
733723   st->m_ppi_portb = data;
r15096r15097
738728   pc_speaker_set_spkrdata( device->machine(), data & 0x02 );
739729
740730   st->m_ppi_clock_signal = ( st->m_ppi_keyb_clock ) ? 1 : 0;
741   kb_keytronic_clock_w(keyboard, st->m_ppi_clock_signal);
731   st->m_pc_kbdc->clock_write_from_mb(st->m_ppi_clock_signal);
742732
743733   /* If PB7 is set clear the shift register and reset the IRQ line */
744734   if ( st->m_ppi_keyboard_clear )
src/mess/machine/kb_keytro.c
r15096r15097
103103
104104
105105/*****************************************************************************
106    INLINE FUNCTIONS
107*****************************************************************************/
108
109INLINE kb_keytr_state *get_safe_token(device_t *device)
110{
111   assert(device != NULL);
112   assert(device->type() == KB_KEYTRONIC);
113
114   return (kb_keytr_state *)downcast<legacy_device_base *>(device)->token();
115}
116
117
118/*****************************************************************************
119106    INPUT PORTS
120107*****************************************************************************/
121108
r15096r15097
303290INPUT_PORTS_END
304291
305292
306INPUT_PORTS_START( kb_keytronic_pc )
293static INPUT_PORTS_START( kb_keytronic_pc )
307294   PORT_INCLUDE( kb_keytronic_common )
308295
309296   PORT_START( "kb_keytronic_0b" )
r15096r15097
329316INPUT_PORTS_END
330317
331318
332INPUT_PORTS_START( kb_keytronic_at )
319static INPUT_PORTS_START( kb_keytronic_at )
333320
334321   PORT_INCLUDE( kb_keytronic_common )
335322
r15096r15097
357344
358345
359346/***************************************************************************
360    EXTERNAL INTERFACE
361***************************************************************************/
362
363/* Write handler which is called when the clock signal may have changed */
364WRITE_LINE_DEVICE_HANDLER( kb_keytronic_clock_w )
365{
366   kb_keytr_state *keytronic = get_safe_token(device);
367
368   keytronic->clock_signal = state;
369   device_set_input_line(keytronic->cpu, MCS51_INT0_LINE, keytronic->clock_signal);
370}
371
372/* Write handler which is called when the data signal may have changed */
373WRITE_LINE_DEVICE_HANDLER( kb_keytronic_data_w )
374{
375   kb_keytr_state *keytronic = get_safe_token(device);
376
377   keytronic->data_signal = state;
378   device_set_input_line(keytronic->cpu, MCS51_T0_LINE, keytronic->data_signal);
379}
380
381
382/***************************************************************************
383    IMPLEMENTATION
384***************************************************************************/
385
386static READ8_HANDLER( kb_keytronic_p1_r )
387{
388   kb_keytr_state *keytronic = get_safe_token(space->device().owner());
389   return keytronic->p1 & keytronic->p1_data;
390}
391
392static WRITE8_HANDLER( kb_keytronic_p1_w )
393{
394   kb_keytr_state *keytronic = get_safe_token(space->device().owner());
395
396   if (LOG)
397      logerror("kb_keytronic_p1_w(): write %02x\n", data);
398
399   keytronic->p1 = data;
400}
401
402static READ8_HANDLER( kb_keytronic_p2_r )
403{
404   kb_keytr_state *keytronic = get_safe_token(space->device().owner());
405   return keytronic->p2;
406}
407
408static WRITE8_HANDLER( kb_keytronic_p2_w )
409{
410   kb_keytr_state *keytronic = get_safe_token(space->device().owner());
411
412   if (LOG)
413      logerror("kb_keytronic_p2_w(): write %02x\n", data);
414
415   keytronic->p2 = data;
416}
417
418static READ8_HANDLER( kb_keytronic_p3_r )
419{
420   kb_keytr_state *keytronic = get_safe_token(space->device().owner());
421   UINT8 data = keytronic->p3;
422
423   data &= ~0x14;
424
425   /* -INT0 signal */
426   data |= (keytronic->clock_signal ? 0x04 : 0x00);
427
428   /* T0 signal */
429   data |= (keytronic->data_signal ? 0x00 : 0x10);
430
431   return data;
432}
433
434static WRITE8_HANDLER( kb_keytronic_p3_w )
435{
436   kb_keytr_state *keytronic = get_safe_token(space->device().owner());
437
438   if (LOG)
439      logerror("kb_keytronic_p3_w(): write %02x\n", data);
440
441   keytronic->p3 = data;
442}
443
444static READ8_HANDLER( kb_keytronic_internal_data_r )
445{
446   kb_keytr_state *keytronic = get_safe_token(space->device().owner());
447
448   if (LOG)
449      logerror("kb_keytronic_internal_data_r(): read from %04x\n", offset);
450
451   keytronic->data_signal = BIT(offset, 8);
452   keytronic->clock_signal = BIT(offset, 9);
453
454   keytronic->out_data_func(keytronic->data_signal);
455   keytronic->out_clock_func(keytronic->clock_signal);
456
457   return 0xff;
458}
459
460static WRITE8_HANDLER( kb_keytronic_internal_data_w )
461{
462   kb_keytr_state *keytronic = get_safe_token(space->device().owner());
463
464   if (LOG)
465      logerror("kb_keytronic_internal_data_w(): write to offset %04x\n", offset);
466
467   /* Check for low->high transition on AD8 */
468   if ( ! ( keytronic->last_write_addr & 0x0100 ) && ( offset & 0x0100 ) )
469   {
470      switch (keytronic->p1)
471      {
472      case 0x0e:
473         break;
474      case 0x0f:
475         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_0f")->read();
476         break;
477      case 0x30:
478         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_30_0")->read();
479         break;
480      case 0x31:
481         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_31_0")->read();
482         break;
483      case 0x32:
484         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_32_0")->read();
485         break;
486      case 0x33:
487         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_33_0")->read();
488         break;
489      case 0x34:
490         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_34_0")->read();
491         break;
492      case 0x35:
493         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_35_0")->read();
494         break;
495      case 0x36:
496         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_36_0")->read();
497         break;
498      case 0x37:
499         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_37_0")->read() | (space->machine().root_device().ioport("kb_keytronic_36_0")->read() & 0x01);
500         break;
501      case 0x38:
502         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_38_0")->read();
503         break;
504      case 0x39:
505         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_39_0")->read();
506         break;
507      case 0x3a:
508         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_3a_0")->read();
509         break;
510      case 0x3b:
511         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_3b_0")->read();
512         break;
513      }
514   }
515
516   /* Check for low->high transition on AD9 */
517   if ( ! ( keytronic->last_write_addr & 0x0200 ) && ( offset & 0x0200 ) )
518   {
519      switch (keytronic->p1)
520      {
521      case 0x0b:
522         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_0b")->read();
523         break;
524      case 0x30:
525         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_30_1")->read();
526         break;
527      case 0x31:
528         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_31_1")->read();
529         break;
530      case 0x32:
531         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_32_1")->read();
532         break;
533      case 0x33:
534         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_33_1")->read();
535         break;
536      case 0x34:
537         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_34_1")->read();
538         break;
539      case 0x35:
540         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_35_1")->read();
541         break;
542      case 0x36:
543         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_36_1")->read();
544         break;
545      case 0x37:
546         keytronic->p1_data = space->machine().root_device().ioport("kb_keytronic_37_1")->read();
547         break;
548      case 0x38:
549         keytronic->p1_data = 0xff;
550         break;
551      case 0x39:
552         keytronic->p1_data = 0xff;
553         break;
554      case 0x3a:
555         keytronic->p1_data = 0xff;
556         break;
557      }
558   }
559
560   keytronic->last_write_addr = offset;
561}
562
563
564/*****************************************************************************
565    ADDRESS MAPS
566*****************************************************************************/
567
568static ADDRESS_MAP_START( keytronic_program, AS_PROGRAM, 8, kb_keytr_device )
569   AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("kb_keytr", 0)
570ADDRESS_MAP_END
571
572static ADDRESS_MAP_START( keytronic_io, AS_IO, 8, kb_keytr_device )
573   AM_RANGE(0x0000, 0xffff) AM_READWRITE_LEGACY(kb_keytronic_internal_data_r, kb_keytronic_internal_data_w)
574   AM_RANGE(MCS51_PORT_P1, MCS51_PORT_P1) AM_READWRITE_LEGACY(kb_keytronic_p1_r, kb_keytronic_p1_w)
575   AM_RANGE(MCS51_PORT_P2, MCS51_PORT_P2) AM_READWRITE_LEGACY(kb_keytronic_p2_r, kb_keytronic_p2_w)
576   AM_RANGE(MCS51_PORT_P3, MCS51_PORT_P3) AM_READWRITE_LEGACY(kb_keytronic_p3_r, kb_keytronic_p3_w)
577ADDRESS_MAP_END
578
579
580/*****************************************************************************
581    MACHINE CONFIG
582*****************************************************************************/
583
584MACHINE_CONFIG_FRAGMENT( kb_keytr )
585   MCFG_CPU_ADD("kb_keytr", I8051, 11060250)
586   MCFG_CPU_PROGRAM_MAP(keytronic_program)
587   MCFG_CPU_IO_MAP(keytronic_io)
588MACHINE_CONFIG_END
589
590
591/***************************************************************************
592347    ROM DEFINITIONS
593348***************************************************************************/
594349
r15096r15097
598353ROM_END
599354
600355
601/*****************************************************************************
602    DEVICE INTERFACE
603*****************************************************************************/
604
605static DEVICE_START( kb_keytr )
606{
607   kb_keytr_state *keytronic = get_safe_token(device);
608   const kb_keytronic_interface *intf = (const kb_keytronic_interface *)device->static_config();
609
610   /* find our cpu */
611   keytronic->cpu = device->subdevice("kb_keytr");
612
613   /* some basic checks */
614   assert(keytronic->cpu != NULL);
615   assert(intf != NULL);
616
617   /* resolve callbacks */
618   keytronic->out_clock_func.resolve(intf->out_clock_func, *device);
619   keytronic->out_data_func.resolve(intf->out_data_func, *device);
620
621   /* set default values */
622   keytronic->p3 = 0xff;
623
624   /* setup savestates */
625   device->save_item(NAME(keytronic->clock_signal));
626   device->save_item(NAME(keytronic->data_signal));
627   device->save_item(NAME(keytronic->p1));
628   device->save_item(NAME(keytronic->p1_data));
629   device->save_item(NAME(keytronic->p2));
630   device->save_item(NAME(keytronic->p3));
631   device->save_item(NAME(keytronic->last_write_addr));
632}
633
634
635/***************************************************************************
636    DEVICE GETINFO
637***************************************************************************/
638
639static const char DEVTEMPLATE_SOURCE[] = __FILE__;
640
641#define DEVTEMPLATE_ID(p,s)            p##kb_keytr##s
642#define DEVTEMPLATE_FEATURES         DT_HAS_START | DT_HAS_ROM_REGION | DT_HAS_MACHINE_CONFIG
643#define DEVTEMPLATE_NAME            "Keytronic Keyboard"
644#define DEVTEMPLATE_SHORTNAME         "kb_keytro"
645#define DEVTEMPLATE_FAMILY            "PC Keyboard"
646#define DEVTEMPLATE_CLASS            DEVICE_CLASS_PERIPHERAL
647#define DEVTEMPLATE_VERSION            "1.0"
648#define DEVTEMPLATE_CREDITS            "Copyright MESS Team"
649#include "devtempl.h"
650
651DEFINE_LEGACY_DEVICE(KB_KEYTRONIC, kb_keytr);
652
653
654356//**************************************************************************
655357//  GLOBAL VARIABLES
656358//**************************************************************************
657359
658const device_type PC_KBD_KEYTRONIC_PC3270 = &device_creator<pc_kbd_keytronic_pc3270_device>;
360const device_type PC_KBD_KEYTRONIC_PC3270      = &device_creator<pc_kbd_keytronic_pc3270_device>;
361const device_type PC_KBD_KEYTRONIC_PC3270_AT   = &device_creator<pc_kbd_keytronic_pc3270_at_device>;
659362
660363
661364/*****************************************************************************
r15096r15097
747450}
748451
749452
453ioport_constructor pc_kbd_keytronic_pc3270_at_device::device_input_ports() const
454{
455   return INPUT_PORTS_NAME( kb_keytronic_at );
456}
457
458
750459//-------------------------------------------------
751460//  rom_region - device-specific ROM region
752461//-------------------------------------------------
src/mess/machine/kb_keytro.h
r15096r15097
88#define __KB_KEYTRO_H__
99
1010#include "devcb.h"
11
12
13/***************************************************************************
14    TYPE DEFINITIONS
15***************************************************************************/
16
17typedef struct _kb_keytronic_interface kb_keytronic_interface;
18struct _kb_keytronic_interface
19{
20   devcb_write_line out_clock_func;
21   devcb_write_line out_data_func;
22};
23
24
25/***************************************************************************
26    FUNCTION PROTOTYPES
27***************************************************************************/
28WRITE_LINE_DEVICE_HANDLER( kb_keytronic_clock_w );
29WRITE_LINE_DEVICE_HANDLER( kb_keytronic_data_w );
30
31
32/***************************************************************************
33    INPUT PORTS
34***************************************************************************/
35
36INPUT_PORTS_EXTERN( kb_keytronic_pc );
37INPUT_PORTS_EXTERN( kb_keytronic_at );
38
39
40/***************************************************************************
41    DEVICE CONFIGURATION MACROS
42***************************************************************************/
43
44DECLARE_LEGACY_DEVICE(KB_KEYTRONIC, kb_keytr);
45
46#define MCFG_KB_KEYTRONIC_ADD(_tag, _interface) \
47   MCFG_DEVICE_ADD(_tag, KB_KEYTRONIC, 0) \
48   MCFG_DEVICE_CONFIG(_interface)
49
50
5111#include "machine/pc_kbdc.h"
5212
5313//**************************************************************************
r15096r15097
9555};
9656
9757
58class pc_kbd_keytronic_pc3270_at_device : public pc_kbd_keytronic_pc3270_device
59{
60public:
61   // construction/destruction
62   pc_kbd_keytronic_pc3270_at_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
63      : pc_kbd_keytronic_pc3270_device(mconfig, tag, owner, clock)
64   {
65   }
66
67   virtual ioport_constructor device_input_ports() const;
68};
69
70
9871// device type definition
9972extern const device_type PC_KBD_KEYTRONIC_PC3270;
73extern const device_type PC_KBD_KEYTRONIC_PC3270_AT;
10074
10175#endif  /* __KB_KEYTRO_H__ */
src/mess/includes/at.h
r15096r15097
6565#include "machine/isa_ide_cd.h"
6666
6767#include "machine/pc_lpt.h"
68#include "machine/pc_kbdc.h"
6869
6970
7071class at_state : public driver_device
r15096r15097
8586   m_isabus(*this, "isabus"),
8687   m_speaker(*this, SPEAKER_TAG),
8788   m_ram(*this, RAM_TAG),
88   m_mc146818(*this, "rtc")
89   m_mc146818(*this, "rtc"),
90   m_pc_kbdc(*this, "pc_kbdc")
8991   { }
9092
9193   required_device<cpu_device> m_maincpu;
r15096r15097
102104   required_device<device_t> m_speaker;
103105   optional_device<device_t> m_ram;
104106   optional_device<mc146818_device> m_mc146818;
107   optional_device<pc_kbdc_device> m_pc_kbdc;
105108   DECLARE_READ8_MEMBER(at_page8_r);
106109   DECLARE_WRITE8_MEMBER(at_page8_w);
107110   DECLARE_READ8_MEMBER(at_portb_r);
src/mess/includes/pc.h
r15096r15097
1212#include "machine/8237dma.h"
1313#include "machine/serial.h"
1414#include "machine/ser_mouse.h"
15#include "machine/pc_kbdc.h"
1516
1617class pc_state : public driver_device
1718{
1819public:
1920   pc_state(const machine_config &mconfig, device_type type, const char *tag)
20      : driver_device(mconfig, type, tag) { }
21      : driver_device(mconfig, type, tag)
22      , m_pc_kbdc(*this, "pc_kbdc")
23   {
24   }
2125
2226   device_t *m_maincpu;
2327   device_t *m_pic8259;
2428   device_t *m_dma8237;
2529   device_t *m_pit8253;
30   optional_device<pc_kbdc_device>  m_pc_kbdc;
31
2632   /* U73 is an LS74 - dual flip flop */
2733   /* Q2 is set by OUT1 from the 8253 and goes to DRQ1 on the 8237 */
2834   UINT8   m_u73_q2;
r15096r15097
4147   UINT8               m_ppi_data_signal;
4248   UINT8               m_ppi_shift_register;
4349   UINT8               m_ppi_shift_enable;
50
51   // interface to the keyboard
52   DECLARE_WRITE_LINE_MEMBER( keyboard_clock_w );
53   DECLARE_WRITE_LINE_MEMBER( keyboard_data_w );
54
4455   DECLARE_READ8_MEMBER(pc_page_r);
4556   DECLARE_WRITE8_MEMBER(pc_page_w);
4657   DECLARE_READ8_MEMBER(pc_dma_read_byte);
4758   DECLARE_WRITE8_MEMBER(pc_dma_write_byte);
4859   DECLARE_WRITE8_MEMBER(pc_nmi_enable_w);
4960   DECLARE_READ8_MEMBER(pcjr_nmi_enable_r);
50   DECLARE_WRITE8_MEMBER(ibm5150_kb_set_clock_signal);
51   DECLARE_WRITE8_MEMBER(ibm5150_kb_set_data_signal);
5261   DECLARE_READ8_MEMBER(input_port_0_r);
5362   DECLARE_READ8_MEMBER(pc_rtc_r);
5463   DECLARE_WRITE8_MEMBER(pc_rtc_w);
src/mess/drivers/at.c
r15096r15097
1111
1212
1313#include "includes/at.h"
14#include "machine/pc_keyboards.h"
1415
16
1517static ADDRESS_MAP_START( at16_map, AS_PROGRAM, 16, at_state )
1618   AM_RANGE(0x000000, 0x09ffff) AM_MIRROR(0xff000000) AM_RAMBANK("bank10")
1719   AM_RANGE(0x0c0000, 0x0c7fff) AM_ROM
r15096r15097
257259   PORT_DIPSETTING(   0x00, DEF_STR( No ) )
258260   PORT_DIPSETTING(   0x01, DEF_STR( Yes ) )
259261
260   PORT_INCLUDE( kb_keytronic_at )      /* IN4 - IN11 */
261262   PORT_INCLUDE( pcvideo_cga )
262263INPUT_PORTS_END
263264
r15096r15097
298299   PORT_DIPNAME( 0x01, 0x01, "Floppy installed")
299300   PORT_DIPSETTING(   0x00, DEF_STR( No ) )
300301   PORT_DIPSETTING(   0x01, DEF_STR( Yes ) )
301
302   PORT_INCLUDE( kb_keytronic_at )
303302INPUT_PORTS_END
304303
305304static const unsigned i286_address_mask = 0x00ffffff;
r15096r15097
310309   DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_A20),
311310   DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir1_w),
312311   DEVCB_NULL,
313   DEVCB_DEVICE_LINE("keyboard", kb_keytronic_clock_w),
314   DEVCB_DEVICE_LINE("keyboard", kb_keytronic_data_w)
312   DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, clock_write_from_mb),
313   DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, data_write_from_mb)
315314};
316315
317static const kb_keytronic_interface at_keytronic_intf =
316static const pc_kbdc_interface pc_kbdc_intf =
318317{
319318   DEVCB_DEVICE_LINE_MEMBER("keybc", at_keyboard_controller_device, keyboard_clock_w),
320319   DEVCB_DEVICE_LINE_MEMBER("keybc", at_keyboard_controller_device, keyboard_data_w)
r15096r15097
400399   MCFG_PIC8259_ADD( "pic8259_slave", at_pic8259_slave_config )
401400
402401   MCFG_AT_KEYBOARD_CONTROLLER_ADD("keybc", XTAL_12MHz, keyboard_controller_intf)
403   MCFG_KB_KEYTRONIC_ADD("keyboard", at_keytronic_intf)
402   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
403   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_at_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
404404
405405   MCFG_MC146818_IRQ_ADD( "rtc", MC146818_STANDARD, at_mc146818_config )
406406
src/mess/drivers/amstr_pc.c
r15096r15097
5959#include "machine/8237dma.h"
6060#include "sound/sn76496.h"
6161
62#include "machine/kb_keytro.h"
6362#include "machine/ram.h"
6463
6564static ADDRESS_MAP_START( ppc512_map, AS_PROGRAM, 16, pc_state )
src/mess/drivers/pc.c
r15096r15097
9595#include "machine/8237dma.h"
9696#include "sound/sn76496.h"
9797
98#include "machine/kb_keytro.h"
9998#include "machine/ram.h"
99#include "machine/pc_keyboards.h"
100100
101
101102static ADDRESS_MAP_START( pc8_map, AS_PROGRAM, 8, pc_state )
102103   ADDRESS_MAP_UNMAP_HIGH
103104   AM_RANGE(0x00000, 0x9ffff) AM_RAMBANK("bank10")
r15096r15097
462463   PORT_BIT( 0x02, 0x02,   IPT_UNUSED ) /* no turbo switch */
463464   PORT_BIT( 0x01, 0x01,   IPT_UNUSED )
464465
465   PORT_INCLUDE( kb_keytronic_pc )
466466   PORT_INCLUDE( pc_joystick )         /* IN15 - IN19 */
467467   PORT_INCLUDE( pcvideo_cga )
468468INPUT_PORTS_END
r15096r15097
532532   PORT_BIT( 0x02, 0x02,   IPT_UNUSED ) /* no turbo switch */
533533   PORT_BIT( 0x01, 0x01,   IPT_UNUSED )
534534
535   PORT_INCLUDE( kb_keytronic_pc )
536535   PORT_INCLUDE( pc_joystick )         /* IN15 - IN19 */
537536   PORT_INCLUDE( pcvideo_cga )
538537INPUT_PORTS_END
r15096r15097
656655   PORT_BIT( 0x01, 0x01,   IPT_UNUSED )
657656
658657//  PORT_INCLUDE( at_keyboard )     /* IN4 - IN11 */
659    PORT_INCLUDE( kb_keytronic_pc )
660658   PORT_INCLUDE( pc_joystick )         /* IN15 - IN19 */
661659   PORT_INCLUDE( pcvideo_cga )
662660INPUT_PORTS_END
r15096r15097
726724   SLOT_INTERFACE("mouse_systems_mouse", MSYSTEM_SERIAL_MOUSE)
727725SLOT_INTERFACE_END
728726
729static const kb_keytronic_interface pc_keytronic_intf =
730{
731   DEVCB_DRIVER_MEMBER(pc_state, ibm5150_kb_set_clock_signal),
732   DEVCB_DRIVER_MEMBER(pc_state, ibm5150_kb_set_data_signal),
733};
734
735
736727#define MCFG_CPU_PC(mem, port, type, clock, vblankfunc)   \
737728   MCFG_CPU_ADD("maincpu", type, clock)            \
738729   MCFG_CPU_PROGRAM_MAP(mem##_map)   \
r15096r15097
787778GFXDECODE_END
788779
789780
781static const pc_kbdc_interface pc_kbdc_intf =
782{
783   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, pc_state, keyboard_clock_w),
784   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, pc_state, keyboard_data_w)
785};
786
787
790788static MACHINE_CONFIG_START( pccga, pc_state )
791789   /* basic machine hardware */
792790   MCFG_CPU_PC(pc8, pc8, I8088, 4772720, pc_frame_interrupt)   /* 4,77 MHz */
r15096r15097
823821   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
824822
825823   /* keyboard */
826   MCFG_KB_KEYTRONIC_ADD("keyboard", pc_keytronic_intf)
824   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
825   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
827826
828827   /* printer */
829828   MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
r15096r15097
875874   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
876875
877876   /* keyboard */
878   MCFG_KB_KEYTRONIC_ADD("keyboard", pc_keytronic_intf)
877   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
878   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
879879
880880   /* printer */
881881   MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
r15096r15097
12441244   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
12451245
12461246   /* keyboard */
1247   MCFG_KB_KEYTRONIC_ADD("keyboard", pc_keytronic_intf)
1247   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
1248   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
12481249
12491250   /* printer */
12501251   MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
r15096r15097
12961297   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
12971298
12981299   /* keyboard */
1299   MCFG_KB_KEYTRONIC_ADD("keyboard", pc_keytronic_intf)
1300   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
1301   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
13001302
13011303   /* printer */
13021304   MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
r15096r15097
13491351   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
13501352
13511353   /* keyboard */
1352   MCFG_KB_KEYTRONIC_ADD("keyboard", pc_keytronic_intf)
1354   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
1355   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
13531356
13541357   /* printer */
13551358   MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
r15096r15097
14011404   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
14021405
14031406   /* keyboard */
1404   MCFG_KB_KEYTRONIC_ADD("keyboard", pc_keytronic_intf)
1407   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
1408   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
14051409
14061410   /* printer */
14071411   MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
r15096r15097
14531457   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
14541458
14551459   /* keyboard */
1456   MCFG_KB_KEYTRONIC_ADD("keyboard", pc_keytronic_intf)
1460   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
1461   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
14571462
14581463   /* printer */
14591464   MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)
r15096r15097
15051510   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
15061511
15071512   /* keyboard */
1508   MCFG_KB_KEYTRONIC_ADD("keyboard", pc_keytronic_intf)
1513   MCFG_PC_KBDC_ADD("pc_kbdc", pc_kbdc_intf)
1514   MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270, NULL)
15091515
15101516   /* printer */
15111517   MCFG_PC_LPT_ADD("lpt_0", pc_lpt_config)

Previous 15994 Revisions Next


© 1998-2018 The MESS Team