Previous 199869 Revisions Next

r29543 Friday 11th April, 2014 at 21:41:22 UTC by Nathan Woods
Merge branch 'master' of ssh://mess.org/mame into new_menus
[/branches/new_menus/hash]gameboy.xml
[/branches/new_menus/src/emu/bus/ecbbus]grip.c
[/branches/new_menus/src/emu/bus/isa]3c503.c ega.c ega.h gus.c gus.h ne1000.c ne2000.c wdxt_gen.c
[/branches/new_menus/src/emu/bus/nubus]nubus_asntmc3b.c
[/branches/new_menus/src/emu/bus/snes]event.c event.h upd.c upd.h
[/branches/new_menus/src/emu/bus/vip]vp620.c
[/branches/new_menus/src/emu/bus/x68k]x68k_neptunex.c
[/branches/new_menus/src/emu/cpu/arm]arm.c arm.h
[/branches/new_menus/src/emu/machine]aakart.c dp8390.c dp8390.h hd63450.c keyboard.c keyboard.h terminal.c terminal.h wd11c00_17.c wd11c00_17.h
[/branches/new_menus/src/emu/ui]viewgfx.c
[/branches/new_menus/src/emu/video]crtc_ega.c crtc_ega.h hd63484.c hd63484.h mb_vcu.c mb_vcu.h psx.c ramdac.c ramdac.h t6a04.c t6a04.h
[/branches/new_menus/src/lib/formats]td0_dsk.c
[/branches/new_menus/src/mame/audio]taitosnd.h
[/branches/new_menus/src/mame/drivers]blitz68k.c chsuper.c globalvr.c konamigx.c maygay1b.c maygayv1.c mazerbla.c mediagx.c namcos12.c namcos23.c pinball2k.c rltennis.c sfbonus.c shanghai.c sigmab52.c sliver.c taito_b.c wildpkr.c
[/branches/new_menus/src/mame/machine]inder_vid.c
[/branches/new_menus/src/mame/video]namcona1.c
[/branches/new_menus/src/mess/drivers]a310.c a6809.c abc80.c amust.c basic52.c besta.c bigbord2.c binbug.c c900.c ccs2810.c ccs300.c cd2650.c chaos.c cm1800.c codata.c cxhumax.c czk80.c d6809.c digel804.c dim68k.c dm7000.c dms86.c dsb46.c dual68.c ec65.c evmbug.c ft68m.c h19.c harriet.c hpz80unk.c ie15.c imds.c imsai.c ipc.c ipds.c jade.c jupiter.c k8915.c lft.c llc.c m20.c mcb216.c mccpm.c mice.c microdec.c mits680b.c mod8.c modellot.c ms9540.c msbc1.c mx2178.c okean240.c onyx.c p8k.c pdp11.c pes.c phunsy.c pimps.c pm68k.c poly.c ptcsol.c qtsbc.c ravens.c rm380z.c rvoice.c sacstate.c sapi1.c sbc6510.c seattle.c sun1.c swtpc.c systec.c tavernie.c ti85.c tk80bs.c tricep.c trs80m2.c ts802.c ts816.c tsispch.c v6809.c vax11.c vector4.c votrpss.c xerox820.c z9001.c zexall.c zorba.c zrt80.c zsbc3.c
[/branches/new_menus/src/mess/machine]teleprinter.c teleprinter.h

branches/new_menus/src/mess/drivers/sapi1.c
r29542r29543
491491   m_term_data = data;
492492}
493493
494static GENERIC_TERMINAL_INTERFACE( terminal_intf )
495{
496   DEVCB_DRIVER_MEMBER(sapi1_state, kbd_put)
497};
498
499
500
501494/**************************************
502495
503496    Machine
r29542r29543
584577   /* basic machine hardware */
585578   MCFG_CPU_MODIFY("maincpu")
586579   MCFG_CPU_PROGRAM_MAP(sapi2_mem)
587   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, terminal_intf)
580   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
581   MCFG_GENERIC_KEYBOARD_CB(WRITE8(sapi1_state, kbd_put))
588582MACHINE_CONFIG_END
589583
590584static MACHINE_CONFIG_DERIVED( sapi3, sapi2 )
r29542r29543
618612   MCFG_MACHINE_RESET_OVERRIDE(sapi1_state, sapizps3 )
619613
620614   /* video hardware */
621   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
615   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
616   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(sapi1_state, kbd_put))
622617
623618   /* internal ram */
624619   MCFG_RAM_ADD(RAM_TAG)
branches/new_menus/src/mess/drivers/mcb216.c
r29542r29543
104104   m_term_data = data;
105105}
106106
107static GENERIC_TERMINAL_INTERFACE( terminal_intf )
108{
109   DEVCB_DRIVER_MEMBER(mcb216_state, kbd_put)
110};
111
112107MACHINE_RESET_MEMBER( mcb216_state, mcb216 )
113108{
114109   m_term_data = 0;
r29542r29543
128123   MCFG_MACHINE_RESET_OVERRIDE(mcb216_state, mcb216)
129124
130125   /* video hardware */
131   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
126   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
127   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mcb216_state, kbd_put))
132128MACHINE_CONFIG_END
133129
134130static MACHINE_CONFIG_START( cb308, mcb216_state )
r29542r29543
139135   MCFG_MACHINE_RESET_OVERRIDE(mcb216_state, cb308)
140136
141137   /* video hardware */
142   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
138   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
139   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mcb216_state, kbd_put))
143140MACHINE_CONFIG_END
144141
145142/* ROM definition */
branches/new_menus/src/mess/drivers/mccpm.c
r29542r29543
124124   m_term_data = data;
125125}
126126
127static GENERIC_TERMINAL_INTERFACE( terminal_intf )
128{
129   DEVCB_DRIVER_MEMBER(mccpm_state, kbd_put)
130};
131
132127static MACHINE_CONFIG_START( mccpm, mccpm_state )
133128   /* basic machine hardware */
134129   MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz)
r29542r29543
136131   MCFG_CPU_IO_MAP(mccpm_io)
137132
138133   /* video hardware */
139   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
134   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
135   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mccpm_state, kbd_put))
140136MACHINE_CONFIG_END
141137
142138/* ROM definition */
branches/new_menus/src/mess/drivers/ec65.c
r29542r29543
101101   }
102102}
103103
104
105static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
106{
107   DEVCB_DRIVER_MEMBER(ec65_state, kbd_put)
108};
109
110104void ec65_state::machine_reset()
111105{
112106   m_via_1->write_pb0(1);
r29542r29543
221215   MCFG_DEVICE_ADD(ACIA6551_TAG, MOS6551, 0)
222216   MCFG_MOS6551_XTAL(XTAL_1_8432MHz)
223217
224   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
218   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
219   MCFG_GENERIC_KEYBOARD_CB(WRITE8(ec65_state, kbd_put))
225220MACHINE_CONFIG_END
226221
227222static MACHINE_CONFIG_START( ec65k, ec65k_state )
branches/new_menus/src/mess/drivers/pm68k.c
r29542r29543
7878   m_term_data = data;
7979}
8080
81static GENERIC_TERMINAL_INTERFACE( terminal_intf )
82{
83   DEVCB_DRIVER_MEMBER(pm68k_state, kbd_put)
84};
85
8681static MACHINE_CONFIG_START( pm68k, pm68k_state )
8782   /* basic machine hardware */
8883   MCFG_CPU_ADD("maincpu", M68000, 8000000)
8984   MCFG_CPU_PROGRAM_MAP(pm68k_mem)
9085
9186   /* video hardware */
92   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
87   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
88   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pm68k_state, kbd_put))
9389MACHINE_CONFIG_END
9490
9591/* ROM definition */
branches/new_menus/src/mess/drivers/k8915.c
r29542r29543
149149   m_term_data = data;
150150}
151151
152static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
153{
154   DEVCB_DRIVER_MEMBER(k8915_state, kbd_put)
155};
156
157152static MACHINE_CONFIG_START( k8915, k8915_state )
158153   /* basic machine hardware */
159154   MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4)
r29542r29543
171166
172167   MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
173168
174   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
169   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
170   MCFG_GENERIC_KEYBOARD_CB(WRITE8(k8915_state, kbd_put))
175171MACHINE_CONFIG_END
176172
177173
branches/new_menus/src/mess/drivers/cxhumax.c
r29542r29543
10481048   memset(m_gxa_cmd_regs,0,sizeof(m_gxa_cmd_regs));
10491049}
10501050
1051static GENERIC_TERMINAL_INTERFACE( terminal_intf )
1052{
1053   DEVCB_NULL
1054};
1055
10561051static MACHINE_CONFIG_START( cxhumax, cxhumax_state )
10571052   MCFG_CPU_ADD("maincpu", ARM920T, 180000000) // CX24175 (RevC up?)
10581053   MCFG_CPU_PROGRAM_MAP(cxhumax_map)
r29542r29543
10721067
10731068   MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
10741069
1075   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
1076
1070   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
10771071MACHINE_CONFIG_END
10781072
10791073ROM_START( hxhdci2k )
branches/new_menus/src/mess/drivers/lft.c
r29542r29543
6868   m_term_data = data;
6969}
7070
71static GENERIC_TERMINAL_INTERFACE( terminal_intf )
72{
73   DEVCB_DRIVER_MEMBER(lft_state, kbd_put)
74};
75
7671void lft_state::machine_reset()
7772{
7873   m_term_data = 0;
r29542r29543
8580   MCFG_CPU_IO_MAP(lft_io)
8681
8782   /* video hardware */
88   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
83   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
84   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(lft_state, kbd_put))
8985MACHINE_CONFIG_END
9086
9187/* ROM definition */
branches/new_menus/src/mess/drivers/basic52.c
r29542r29543
112112   m_term_data = data;
113113}
114114
115static GENERIC_TERMINAL_INTERFACE( terminal_intf )
116{
117   DEVCB_DRIVER_MEMBER(basic52_state, kbd_put)
118};
119
120115static I8255_INTERFACE( ppi8255_intf )
121116{
122117   DEVCB_NULL,                 /* Port A read */
r29542r29543
135130
136131
137132   /* video hardware */
138   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
133   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
134   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(basic52_state, kbd_put))
139135
140136   MCFG_I8255_ADD("ppi8255", ppi8255_intf )
141137MACHINE_CONFIG_END
branches/new_menus/src/mess/drivers/dms86.c
r29542r29543
105105   m_term_data = data;
106106}
107107
108static GENERIC_TERMINAL_INTERFACE( terminal_intf )
109{
110   DEVCB_DRIVER_MEMBER(dms86_state, kbd_put)
111};
112
113
114108static MACHINE_CONFIG_START( dms86, dms86_state )
115109   /* basic machine hardware */
116110   MCFG_CPU_ADD("maincpu",I8086, XTAL_9_8304MHz)
r29542r29543
118112   MCFG_CPU_IO_MAP(dms86_io)
119113
120114
121   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
115   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
116   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(dms86_state, kbd_put))
122117MACHINE_CONFIG_END
123118
124119/* ROM definition */
branches/new_menus/src/mess/drivers/vector4.c
r29542r29543
8484   m_term_data = data;
8585}
8686
87static GENERIC_TERMINAL_INTERFACE( terminal_intf )
88{
89   DEVCB_DRIVER_MEMBER(vector4_state, kbd_put)
90};
91
92
9387static MACHINE_CONFIG_START( vector4, vector4_state )
9488   /* basic machine hardware */
9589   MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz)
r29542r29543
9892
9993
10094   /* video hardware */
101   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
95   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
96   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(vector4_state, kbd_put))
10297MACHINE_CONFIG_END
10398
10499/* ROM definition */
branches/new_menus/src/mess/drivers/ccs300.c
r29542r29543
9393   m_term_data = data;
9494}
9595
96static GENERIC_TERMINAL_INTERFACE( terminal_intf )
97{
98   DEVCB_DRIVER_MEMBER(ccs300_state, kbd_put)
99};
100
10196//*************************************
10297//
10398//  Machine
r29542r29543
131126   MCFG_MACHINE_RESET_OVERRIDE(ccs300_state, ccs300)
132127
133128   /* video hardware */
134   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
129   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
130   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ccs300_state, kbd_put))
135131MACHINE_CONFIG_END
136132
137133/* ROM definition */
branches/new_menus/src/mess/drivers/sacstate.c
r29542r29543
120120   m_term_data = data;
121121}
122122
123static GENERIC_TERMINAL_INTERFACE( terminal_intf )
124{
125   DEVCB_DRIVER_MEMBER(sacstate_state, kbd_put)
126};
127
128123void sacstate_state::machine_reset()
129124{
130125   m_term_data = 0;
r29542r29543
138133   MCFG_CPU_IO_MAP(sacstate_io)
139134
140135   /* video hardware */
141   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
136   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
137   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(sacstate_state, kbd_put))
142138MACHINE_CONFIG_END
143139
144140/* ROM definition */
branches/new_menus/src/mess/drivers/zorba.c
r29542r29543
336336   m_term_data = data;
337337}
338338
339static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
340{
341   DEVCB_DRIVER_MEMBER(zorba_state, kbd_put)
342};
343
344339static MACHINE_CONFIG_START( zorba, zorba_state )
345340   // basic machine hardware
346341   MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz / 6)
r29542r29543
405400   MCFG_FLOPPY_DRIVE_ADD("fdc:1", zorba_floppies, "525dd", floppy_image_device::default_floppy_formats)
406401
407402   /* Keyboard */
408   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
403   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
404   MCFG_GENERIC_KEYBOARD_CB(WRITE8(zorba_state, kbd_put))
409405MACHINE_CONFIG_END
410406
411407ROM_START( zorba )
branches/new_menus/src/mess/drivers/modellot.c
r29542r29543
8080   m_term_data = data;
8181}
8282
83static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
84{
85   DEVCB_DRIVER_MEMBER(modellot_state, kbd_put)
86};
87
8883void modellot_state::machine_reset()
8984{
9085   m_term_data = 1;
r29542r29543
172167   MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
173168
174169   /* Devices */
175   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
170   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
171   MCFG_GENERIC_KEYBOARD_CB(WRITE8(modellot_state, kbd_put))
176172MACHINE_CONFIG_END
177173
178174/* ROM definition */
branches/new_menus/src/mess/drivers/evmbug.c
r29542r29543
8585   m_term_data = data;
8686}
8787
88static GENERIC_TERMINAL_INTERFACE( terminal_intf )
89{
90   DEVCB_DRIVER_MEMBER(evmbug_state, kbd_put)
91};
92
93
9488void evmbug_state::machine_reset()
9589{
9690   m_term_data = 0;
r29542r29543
10599   MCFG_TMS99xx_ADD("maincpu", TMS9995, 12000000, evmbug_mem, evmbug_io )
106100
107101   /* video hardware */
108   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
102   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
103   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(evmbug_state, kbd_put))
109104MACHINE_CONFIG_END
110105
111106/* ROM definition */
branches/new_menus/src/mess/drivers/pimps.c
r29542r29543
8989   m_term_data = data;
9090}
9191
92static GENERIC_TERMINAL_INTERFACE( terminal_intf )
93{
94   DEVCB_DRIVER_MEMBER(pimps_state, kbd_put)
95};
96
9792static MACHINE_CONFIG_START( pimps, pimps_state )
9893   /* basic machine hardware */
9994   MCFG_CPU_ADD("maincpu",I8085A, XTAL_2MHz)
r29542r29543
10196   MCFG_CPU_IO_MAP(pimps_io)
10297
10398   /* video hardware */
104   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
99   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
100   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pimps_state, kbd_put))
105101MACHINE_CONFIG_END
106102
107103/* ROM definition */
branches/new_menus/src/mess/drivers/seattle.c
r29542r29543
104104   m_key_available = 1;
105105}
106106
107static GENERIC_TERMINAL_INTERFACE( terminal_intf )
108{
109   DEVCB_DRIVER_MEMBER(seattle_comp_state, kbd_put)
110};
111
112107static MACHINE_CONFIG_START( seattle, seattle_comp_state )
113108   /* basic machine hardware */
114109   MCFG_CPU_ADD("maincpu", I8086, 4000000) // no idea
r29542r29543
116111   MCFG_CPU_IO_MAP(seattle_io)
117112
118113   /* video hardware */
119   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
114   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
115   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(seattle_comp_state, kbd_put))
120116MACHINE_CONFIG_END
121117
122118/* ROM definition */
branches/new_menus/src/mess/drivers/imsai.c
r29542r29543
101101   m_uart->write_rxc(state);
102102}
103103
104static GENERIC_TERMINAL_INTERFACE( terminal_intf )
105{
106   DEVCB_DRIVER_MEMBER(imsai_state, kbd_put)
107};
108
109104WRITE8_MEMBER( imsai_state::control_w )
110105{
111106}
r29542r29543
122117   MCFG_CPU_IO_MAP(imsai_io)
123118
124119   /* video hardware */
125   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
120   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
121   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(imsai_state, kbd_put))
126122
127123   /* Devices */
128124   MCFG_DEVICE_ADD("uart", I8251, 0)
branches/new_menus/src/mess/drivers/dual68.c
r29542r29543
7777   //m_term_data = data;
7878}
7979
80static GENERIC_TERMINAL_INTERFACE( terminal_intf )
81{
82   DEVCB_DRIVER_MEMBER(dual68_state, kbd_put)
83};
84
8580static MACHINE_CONFIG_START( dual68, dual68_state )
8681   /* basic machine hardware */
8782   MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz / 2)
r29542r29543
9388
9489
9590   /* video hardware */
96   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG,terminal_intf)
91   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
92   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(dual68_state, kbd_put))
9793MACHINE_CONFIG_END
9894
9995/* ROM definition */
branches/new_menus/src/mess/drivers/digel804.c
r29542r29543
567567   //m_acia->receive_character(data);
568568}
569569
570static GENERIC_TERMINAL_INTERFACE( digel804_terminal_intf )
571{
572   DEVCB_DRIVER_MEMBER(digel804_state,digel804_serial_put)
573};
574
575570WRITE_LINE_MEMBER( digel804_state::da_w )
576571{
577572   m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
r29542r29543
588583   MCFG_ROC10937_ADD("vfd",0) // RIGHT_TO_LEFT
589584
590585   /* video hardware */
591   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, digel804_terminal_intf)
586   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
587   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(digel804_state, digel804_serial_put))
592588
593589   MCFG_DEFAULT_LAYOUT(layout_digel804)
594590
branches/new_menus/src/mess/drivers/imds.c
r29542r29543
7474   m_term_data = data;
7575}
7676
77static GENERIC_TERMINAL_INTERFACE( terminal_intf )
78{
79   DEVCB_DRIVER_MEMBER(imds_state, kbd_put)
80};
81
8277void imds_state::machine_reset()
8378{
8479   m_term_data = 0;
r29542r29543
10297//  MCFG_INS8250_ADD( "ins8250", imds_com_interface )
10398
10499   /* video hardware */
105   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
100   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
101   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(imds_state, kbd_put))
106102MACHINE_CONFIG_END
107103
108104/* ROM definition */
branches/new_menus/src/mess/drivers/binbug.c
r29542r29543
474474   m_pio->strobe_a(1);
475475}
476476
477static ASCII_KEYBOARD_INTERFACE( dg680_keyboard_intf )
478{
479   DEVCB_DRIVER_MEMBER(dg680_state, kbd_put)
480};
481
482477READ8_MEMBER( dg680_state::porta_r )
483478{
484479   UINT8 data = m_term_data;
r29542r29543
566561   MCFG_PALETTE_ADD_MONOCHROME_AMBER("palette")
567562
568563   /* Keyboard */
569   MCFG_ASCII_KEYBOARD_ADD("keyb", dg680_keyboard_intf)
564   MCFG_DEVICE_ADD("keyb", GENERIC_KEYBOARD, 0)
565   MCFG_GENERIC_KEYBOARD_CB(WRITE8(dg680_state, kbd_put))
570566
571567   /* Cassette */
572568   MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
branches/new_menus/src/mess/drivers/ccs2810.c
r29542r29543
174174   m_term_data = data;
175175}
176176
177static GENERIC_TERMINAL_INTERFACE( terminal_intf )
178{
179   DEVCB_DRIVER_MEMBER(ccs_state, kbd_put)
180};
181
182177#if 0
183178static const ins8250_interface com_intf =
184179{
r29542r29543
340335   MCFG_MACHINE_RESET_OVERRIDE(ccs_state, ccs)
341336
342337   /* video hardware */
343   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
338   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
339   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ccs_state, kbd_put))
344340
345341   /* Devices */
346342   //MCFG_INS8250_ADD( "ins8250", com_intf, XTAL_1_8432MHz )
r29542r29543
354350   MCFG_MACHINE_RESET_OVERRIDE(ccs_state, ccs)
355351
356352   /* video hardware */
357   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
353   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
354   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ccs_state, kbd_put))
358355
359356   /* Devices */
360357   MCFG_MB8877x_ADD("fdc", XTAL_16MHz / 8) // UB1793 or MB8877
branches/new_menus/src/mess/drivers/systec.c
r29542r29543
7373   m_term_data = data;
7474}
7575
76static GENERIC_TERMINAL_INTERFACE( terminal_intf )
77{
78   DEVCB_DRIVER_MEMBER(systec_state, kbd_put)
79};
80
81
8276static ADDRESS_MAP_START(systec_mem, AS_PROGRAM, 8, systec_state)
8377   ADDRESS_MAP_UNMAP_HIGH
8478   AM_RANGE(0x0000, 0xffff) AM_RAM AM_REGION("maincpu", 0)
r29542r29543
109103
110104
111105   /* video hardware */
112   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
106   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
107   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(systec_state, kbd_put))
113108MACHINE_CONFIG_END
114109
115110
branches/new_menus/src/mess/drivers/tavernie.c
r29542r29543
316316   m_pia_ivg->cb1_w(1);
317317}
318318
319static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
320{
321   DEVCB_DRIVER_MEMBER(tavernie_state, kbd_put)
322};
323
324319WRITE_LINE_MEMBER( tavernie_state::write_acia_clock )
325320{
326321   m_acia->write_txc(state);
r29542r29543
384379   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
385380
386381   /* Devices */
387   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
382   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
383   MCFG_GENERIC_KEYBOARD_CB(WRITE8(tavernie_state, kbd_put))
388384   MCFG_MC6845_ADD("crtc", MC6845, "screen", 1008000, mc6845_intf) // unknown clock
389385
390386   MCFG_DEVICE_ADD("pia_ivg", PIA6821, 0)
branches/new_menus/src/mess/drivers/sbc6510.c
r29542r29543
216216   m_terminal->write(space, 0, data);
217217}
218218
219static GENERIC_TERMINAL_INTERFACE( terminal_intf )
220{
221   DEVCB_NULL
222};
223
224
225219void sbc6510_state::machine_start()
226220{
227221   char kbdrow[6];
r29542r29543
314308   MCFG_GFXDECODE_ADD("gfxdecode", TERMINAL_TAG":palette", sbc6510)
315309
316310   /* video hardware */
317   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
311   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
318312
319313   /* sound hardware */
320314   MCFG_SPEAKER_STANDARD_MONO("mono")
branches/new_menus/src/mess/drivers/tricep.c
r29542r29543
6868{
6969}
7070
71static GENERIC_TERMINAL_INTERFACE( terminal_intf )
72{
73   DEVCB_DRIVER_MEMBER(tricep_state, kbd_put)
74};
75
7671static MACHINE_CONFIG_START( tricep, tricep_state )
7772   /* basic machine hardware */
7873   MCFG_CPU_ADD("maincpu",M68000, XTAL_8MHz)
r29542r29543
8075
8176
8277   /* video hardware */
83   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
78   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
79   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(tricep_state, kbd_put))
8480MACHINE_CONFIG_END
8581
8682/* ROM definition */
branches/new_menus/src/mess/drivers/vax11.c
r29542r29543
135135   m_term_status = 0xffff;
136136}
137137
138static GENERIC_TERMINAL_INTERFACE( terminal_intf )
139{
140   DEVCB_DRIVER_MEMBER(vax11_state, kbd_put)
141};
142
143138static MACHINE_CONFIG_START( vax11, vax11_state )
144139   /* basic machine hardware */
145140   MCFG_CPU_ADD("maincpu",T11, XTAL_4MHz) // Need proper CPU here
r29542r29543
147142   MCFG_CPU_PROGRAM_MAP(vax11_mem)
148143
149144   /* video hardware */
150   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
145   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
146   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(vax11_state, kbd_put))
151147
152148   MCFG_RX01_ADD("rx01")
153149MACHINE_CONFIG_END
branches/new_menus/src/mess/drivers/cm1800.c
r29542r29543
9797{
9898}
9999
100static GENERIC_TERMINAL_INTERFACE( terminal_intf )
101{
102   DEVCB_DRIVER_MEMBER(cm1800_state, kbd_put)
103};
104
105100static MACHINE_CONFIG_START( cm1800, cm1800_state )
106101   /* basic machine hardware */
107102   MCFG_CPU_ADD("maincpu",I8080, XTAL_2MHz)
r29542r29543
110105
111106
112107   /* video hardware */
113   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
108   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
109   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(cm1800_state, kbd_put))
114110MACHINE_CONFIG_END
115111
116112/* ROM definition */
branches/new_menus/src/mess/drivers/okean240.c
r29542r29543
411411   m_term_data = data;
412412}
413413
414static GENERIC_TERMINAL_INTERFACE( terminal_intf )
415{
416   DEVCB_DRIVER_MEMBER(okean240_state, kbd_put)
417};
418
419414DRIVER_INIT_MEMBER(okean240_state,okean240)
420415{
421416   UINT8 *RAM = memregion("maincpu")->base();
r29542r29543
495490
496491   MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
497492
498   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
493   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
494   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(okean240_state, kbd_put))
499495MACHINE_CONFIG_END
500496
501497static MACHINE_CONFIG_DERIVED( okean240a, okean240t )
r29542r29543
503499   MCFG_CPU_IO_MAP(okean240a_io)
504500   MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240a)
505501   MCFG_DEVICE_REMOVE(TERMINAL_TAG)
506   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, terminal_intf)
502   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
503   MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put))
507504MACHINE_CONFIG_END
508505
509506static MACHINE_CONFIG_DERIVED( okean240, okean240t )
r29542r29543
511508   MCFG_CPU_IO_MAP(okean240_io)
512509   MCFG_GFXDECODE_ADD("gfxdecode", "palette", okean240)
513510   MCFG_DEVICE_REMOVE(TERMINAL_TAG)
514   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, terminal_intf)
511   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
512   MCFG_GENERIC_KEYBOARD_CB(WRITE8(okean240_state, kbd_put))
515513MACHINE_CONFIG_END
516514
517515/* ROM definition */
branches/new_menus/src/mess/drivers/microdec.c
r29542r29543
8989   m_term_data = data;
9090}
9191
92static GENERIC_TERMINAL_INTERFACE( terminal_intf )
93{
94   DEVCB_DRIVER_MEMBER(microdec_state, kbd_put)
95};
96
9792static SLOT_INTERFACE_START( microdec_floppies )
9893   SLOT_INTERFACE( "525hd", FLOPPY_525_HD )
9994SLOT_INTERFACE_END
r29542r29543
105100   MCFG_CPU_IO_MAP(microdec_io)
106101
107102   /* video hardware */
108   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
103   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
104   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(microdec_state, kbd_put))
109105
110106   MCFG_UPD765A_ADD("upd765", true, true)
111107   MCFG_FLOPPY_DRIVE_ADD("upd765:0", microdec_floppies, "525hd", floppy_image_device::default_floppy_formats)
branches/new_menus/src/mess/drivers/ti85.c
r29542r29543
537537MACHINE_CONFIG_END
538538
539539
540static const t6a04_interface ti82_display =
541{
542   64,                 // number of lines
543   96,                 // pixels for line
544};
545
546540static MACHINE_CONFIG_DERIVED( ti82, ti81 )
547541   MCFG_CPU_MODIFY("maincpu")
548542   MCFG_CPU_CLOCK( 6000000)        /* 6 MHz */
r29542r29543
557551   MCFG_PALETTE_ENTRIES(2)
558552   MCFG_PALETTE_INIT_OWNER(ti85_state, ti82 )
559553
560   MCFG_T6A04_ADD("t6a04", ti82_display)
554   MCFG_DEVICE_ADD("t6a04", T6A04, 0)
555   MCFG_T6A04_SIZE(96, 64)
561556
562557   MCFG_SPEAKER_STANDARD_MONO("mono")
563558   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
r29542r29543
587582   MCFG_PALETTE_ENTRIES(2)
588583   MCFG_PALETTE_INIT_OWNER(ti85_state, ti82 )
589584
590   MCFG_T6A04_ADD("t6a04", ti82_display)
585   MCFG_DEVICE_ADD("t6a04", T6A04, 0)
586   MCFG_T6A04_SIZE(96, 64)
591587MACHINE_CONFIG_END
592588
593589static MACHINE_CONFIG_DERIVED( ti86, ti85 )
r29542r29543
621617   MCFG_PALETTE_ENTRIES(2)
622618   MCFG_PALETTE_INIT_OWNER(ti85_state, ti82 )
623619
624   MCFG_T6A04_ADD("t6a04", ti82_display)
620   MCFG_DEVICE_ADD("t6a04", T6A04, 0)
621   MCFG_T6A04_SIZE(96, 64)
625622
626623   MCFG_DEVICE_REMOVE("nvram")
627624   MCFG_NVRAM_HANDLER(ti83p)
branches/new_menus/src/mess/drivers/amust.c
r29542r29543
202202   m_term_data = data;
203203}
204204
205static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
206{
207   DEVCB_DRIVER_MEMBER(amust_state, kbd_put)
208};
209
210
211205/* F4 Character Displayer */
212206static const gfx_layout amust_charlayout =
213207{
r29542r29543
311305
312306   /* Devices */
313307   MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_14_31818MHz / 8, amust_crtc)
314   MCFG_ASCII_KEYBOARD_ADD("keybd", keyboard_intf)
308   MCFG_DEVICE_ADD("keybd", GENERIC_KEYBOARD, 0)
309   MCFG_GENERIC_KEYBOARD_CB(WRITE8(amust_state, kbd_put))
315310   MCFG_UPD765A_ADD("fdc", false, true)
316311   MCFG_FLOPPY_DRIVE_ADD("fdc:0", amust_floppies, "525dd", floppy_image_device::default_floppy_formats)
317312   MCFG_FLOPPY_DRIVE_ADD("fdc:1", amust_floppies, "525dd", floppy_image_device::default_floppy_formats)
branches/new_menus/src/mess/drivers/harriet.c
r29542r29543
180180   m_teletype_status |= 0x80;
181181}
182182
183static GENERIC_TERMINAL_INTERFACE( terminal_intf )
184{
185   DEVCB_DRIVER_MEMBER(harriet_state, kbd_put)
186};
187
188183void harriet_state::machine_start()
189184{
190185}
r29542r29543
201196   MCFG_CPU_PROGRAM_MAP(harriet_map)
202197
203198   /* video hardware */
204   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
199   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
200   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(harriet_state, kbd_put))
205201
206202   MCFG_PALETTE_ADD("palette", 8)
207203
branches/new_menus/src/mess/drivers/mod8.c
r29542r29543
139139   m_maincpu->set_input_line(0, HOLD_LINE);
140140}
141141
142static GENERIC_TELEPRINTER_INTERFACE( teleprinter_intf )
143{
144   DEVCB_DRIVER_MEMBER(mod8_state, kbd_put)
145};
146
147142static MACHINE_CONFIG_START( mod8, mod8_state )
148143   /* basic machine hardware */
149144   MCFG_CPU_ADD("maincpu",I8008, 800000)
r29542r29543
151146   MCFG_CPU_IO_MAP(mod8_io)
152147
153148   /* video hardware */
154   MCFG_GENERIC_TELEPRINTER_ADD(TELEPRINTER_TAG, teleprinter_intf)
149   MCFG_DEVICE_ADD(TELEPRINTER_TAG, TELEPRINTER, 0)
150   MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(WRITE8(mod8_state, kbd_put))
155151MACHINE_CONFIG_END
156152
157153
branches/new_menus/src/mess/drivers/mice.c
r29542r29543
8181   m_term_data = data;
8282}
8383
84static GENERIC_TERMINAL_INTERFACE( terminal_intf )
85{
86   DEVCB_DRIVER_MEMBER(mice_state, kbd_put)
87};
88
89
9084static MACHINE_CONFIG_START( mice, mice_state )
9185   /* basic machine hardware */
9286   MCFG_CPU_ADD("maincpu", I8085A, XTAL_6_144MHz)
r29542r29543
9488   MCFG_CPU_IO_MAP(mice_io)
9589
9690   /* video hardware */
97   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
91   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
92   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mice_state, kbd_put))
9893MACHINE_CONFIG_END
9994
10095/* ROM definition */
branches/new_menus/src/mess/drivers/msbc1.c
r29542r29543
7575   m_maincpu->reset();
7676}
7777
78static GENERIC_TERMINAL_INTERFACE( terminal_intf )
79{
80   DEVCB_NULL
81};
82
8378static MACHINE_CONFIG_START( msbc1, msbc1_state )
8479   /* basic machine hardware */
8580   MCFG_CPU_ADD(MC68000R12_TAG, M68000, XTAL_12_5MHz)
8681   MCFG_CPU_PROGRAM_MAP(msbc1_mem)
8782
8883   // devices
89   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
84   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
9085MACHINE_CONFIG_END
9186
9287/* ROM definition */
branches/new_menus/src/mess/drivers/rvoice.c
r29542r29543
356356{
357357}
358358
359static GENERIC_TERMINAL_INTERFACE( dectalk_terminal_intf )
360{
361   DEVCB_DRIVER_MEMBER(rvoice_state,null_kbd_put)
362};
363
364359static MACHINE_CONFIG_START( rvoicepc, rvoice_state )
365360   /* basic machine hardware */
366361   MCFG_CPU_ADD("maincpu", HD63701, XTAL_7_3728MHz)
r29542r29543
379374   //MCFG_DEFAULT_LAYOUT(layout_dectalk) // hack to avoid screenless system crash
380375
381376   /* sound hardware */
382   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG,dectalk_terminal_intf)
377   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
378   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(rvoice_state, null_kbd_put))
383379
384380MACHINE_CONFIG_END
385381
branches/new_menus/src/mess/drivers/hpz80unk.c
r29542r29543
119119   m_term_data = data;
120120}
121121
122static GENERIC_TERMINAL_INTERFACE( terminal_intf )
123{
124   DEVCB_DRIVER_MEMBER(hpz80unk_state, kbd_put)
125};
126
127122static MACHINE_CONFIG_START( hpz80unk, hpz80unk_state )
128123   /* basic machine hardware */
129124   MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz)
r29542r29543
131126   MCFG_CPU_IO_MAP(hpz80unk_io)
132127
133128   /* video hardware */
134   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
129   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
130   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(hpz80unk_state, kbd_put))
135131MACHINE_CONFIG_END
136132
137133/* ROM definition */
branches/new_menus/src/mess/drivers/codata.c
r29542r29543
7575   m_term_data = data;
7676}
7777
78static GENERIC_TERMINAL_INTERFACE( terminal_intf )
79{
80   DEVCB_DRIVER_MEMBER(codata_state, kbd_put)
81};
82
8378void codata_state::machine_reset()
8479{
8580   UINT8* RAM = memregion("user1")->base();
r29542r29543
9489   MCFG_CPU_PROGRAM_MAP(codata_mem)
9590
9691   /* video hardware */
97   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
92   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
93   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(codata_state, kbd_put))
9894MACHINE_CONFIG_END
9995
10096/* ROM definition */
branches/new_menus/src/mess/drivers/ft68m.c
r29542r29543
9393   m_term_data = data;
9494}
9595
96static GENERIC_TERMINAL_INTERFACE( terminal_intf )
97{
98   DEVCB_DRIVER_MEMBER(ft68m_state, kbd_put)
99};
100
10196static MACHINE_CONFIG_START( ft68m, ft68m_state )
10297
10398   /* basic machine hardware */
r29542r29543
105100   MCFG_CPU_PROGRAM_MAP(ft68m_mem)
106101
107102   /* video hardware */
108   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
103   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
104   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ft68m_state, kbd_put))
109105MACHINE_CONFIG_END
110106
111107/* ROM definition */
branches/new_menus/src/mess/drivers/abc80.c
r29542r29543
446446   timer_set(attotime::from_msec(50), TIMER_ID_FAKE_KEYBOARD_CLEAR);
447447}
448448
449static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
450{
451   DEVCB_DRIVER_MEMBER(abc80_state, kbd_w)
452};
453
454
455
456449//**************************************************************************
457450//  MACHINE INITIALIZATION
458451//**************************************************************************
r29542r29543
567560   MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "slow")
568561   MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("slow", abc830_slow)
569562   MCFG_RS232_PORT_ADD(RS232_TAG, default_rs232_devices, NULL)
570   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
563   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
564   MCFG_GENERIC_KEYBOARD_CB(WRITE8(abc80_state, kbd_w))
571565
572566   // internal ram
573567   MCFG_RAM_ADD(RAM_TAG)
branches/new_menus/src/mess/drivers/dim68k.c
r29542r29543
318318   m_term_data = data;
319319}
320320
321static ASCII_KEYBOARD_INTERFACE( kb_intf )
322{
323   DEVCB_DRIVER_MEMBER(dim68k_state, kbd_put)
324};
325
326321static MACHINE_CONFIG_START( dim68k, dim68k_state )
327322   /* basic machine hardware */
328323   MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz)
r29542r29543
348343   MCFG_FLOPPY_DRIVE_ADD("fdc:0", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats)
349344   MCFG_FLOPPY_DRIVE_ADD("fdc:1", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats)
350345   MCFG_MC6845_ADD("crtc", MC6845, "screen", 1790000, dim68k_crtc)
351   MCFG_ASCII_KEYBOARD_ADD("keyboard", kb_intf)
346   MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
347   MCFG_GENERIC_KEYBOARD_CB(WRITE8(dim68k_state, kbd_put))
352348MACHINE_CONFIG_END
353349
354350/*
branches/new_menus/src/mess/drivers/ie15.c
r29542r29543
486486   }
487487}
488488
489static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
490{
491   DEVCB_DRIVER_MEMBER(ie15_state, kbd_put)
492};
493
494
495489void ie15_state::machine_reset()
496490{
497491   m_ruslat = m_beep = m_statusline = m_cursor = m_video = m_kb_data = m_kb_flag0 = 0;
r29542r29543
640634   MCFG_PALETTE_INIT_OWNER(ie15_state, ie15)
641635
642636   /* Devices */
643   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
637   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
638   MCFG_GENERIC_KEYBOARD_CB(WRITE8(ie15_state, kbd_put))
644639   MCFG_BITBANGER_ADD(BITBANGER_TAG, ie15_state::ie15_bitbanger_config)
645640
646641   MCFG_SPEAKER_STANDARD_MONO("mono")
branches/new_menus/src/mess/drivers/dm7000.c
r29542r29543
297297   m_scc0_lsr = 1;
298298}
299299
300static GENERIC_TERMINAL_INTERFACE( terminal_intf )
301{
302   DEVCB_DRIVER_MEMBER(dm7000_state, kbd_put)
303};
304
305300static const powerpc_config ppc405_config =
306301{
307302   252000000
r29542r29543
323318   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
324319   MCFG_SCREEN_UPDATE_DRIVER(dm7000_state, screen_update_dm7000)
325320
326   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
321   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
322   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(dm7000_state, kbd_put))
327323
328324MACHINE_CONFIG_END
329325
branches/new_menus/src/mess/drivers/votrpss.c
r29542r29543
261261   m_term_data = data;
262262}
263263
264static GENERIC_TERMINAL_INTERFACE( terminal_intf )
265{
266   DEVCB_DRIVER_MEMBER(votrpss_state, kbd_put)
267};
268
269264DECLARE_WRITE_LINE_MEMBER( votrpss_state::write_uart_clock )
270265{
271266   m_uart->write_txc(state);
r29542r29543
294289   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
295290
296291   /* Devices */
297   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
292   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
293   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(votrpss_state, kbd_put))
298294
299295   MCFG_DEVICE_ADD("uart", I8251, 0)
300296   MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd))
branches/new_menus/src/mess/drivers/pes.c
r29542r29543
9191   m_maincpu->set_input_line(MCS51_RX_LINE, CLEAR_LINE);
9292}
9393
94static GENERIC_TERMINAL_INTERFACE( pes_terminal_intf )
95{
96   DEVCB_DRIVER_MEMBER(pes_state,pes_kbd_input)
97};
98
9994/* Helper Functions */
10095READ8_MEMBER( pes_state::data_to_i8031)
10196{
r29542r29543
266261   MCFG_SOUND_ADD("tms5220", TMS5220C, 720000) /* 720Khz clock, 10khz output */
267262   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
268263
269   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG,pes_terminal_intf)
264   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
265   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pes_state, pes_kbd_input))
270266MACHINE_CONFIG_END
271267
272268/******************************************************************************
branches/new_menus/src/mess/drivers/d6809.c
r29542r29543
139139   m_term_data = data;
140140}
141141
142static GENERIC_TERMINAL_INTERFACE( terminal_intf )
143{
144   DEVCB_DRIVER_MEMBER(d6809_state, kbd_put)
145};
146
147142void d6809_state::machine_reset()
148143{
149144}
r29542r29543
156151
157152
158153   /* video hardware */
159   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
154   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
155   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(d6809_state, kbd_put))
160156MACHINE_CONFIG_END
161157
162158/* ROM definition */
branches/new_menus/src/mess/drivers/qtsbc.c
r29542r29543
7878   m_term_data = data;
7979}
8080
81static GENERIC_TERMINAL_INTERFACE( terminal_intf )
82{
83   DEVCB_DRIVER_MEMBER(qtsbc_state, kbd_put)
84};
85
8681static MACHINE_CONFIG_START( qtsbc, qtsbc_state )
8782   /* basic machine hardware */
8883   MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) // Mostek MK3880
r29542r29543
9085   MCFG_CPU_IO_MAP(qtsbc_io)
9186
9287   /* video hardware */
93   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
88   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
89   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(qtsbc_state, kbd_put))
9490MACHINE_CONFIG_END
9591
9692/* ROM definition */
branches/new_menus/src/mess/drivers/ptcsol.c
r29542r29543
739739   }
740740}
741741
742static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
743{
744   DEVCB_DRIVER_MEMBER(sol20_state, kbd_put)
745};
746
747742static MACHINE_CONFIG_START( sol20, sol20_state )
748743   /* basic machine hardware */
749744   MCFG_CPU_ADD("maincpu",I8080, XTAL_14_31818MHz/7)
r29542r29543
774769   MCFG_CASSETTE_ADD( "cassette2", sol20_cassette_interface )
775770   MCFG_AY31015_ADD( "uart", sol20_ay31015_config )
776771   MCFG_AY31015_ADD( "uart_s", sol20_ay31015_config )
777   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
772   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
773   MCFG_GENERIC_KEYBOARD_CB(WRITE8(sol20_state, kbd_put))
778774MACHINE_CONFIG_END
779775
780776/* ROM definition */
branches/new_menus/src/mess/drivers/c900.c
r29542r29543
8484   m_term_data = data;
8585}
8686
87static GENERIC_TERMINAL_INTERFACE( terminal_intf )
88{
89   DEVCB_DRIVER_MEMBER(c900_state, kbd_put)
90};
91
9287/* F4 Character Displayer */
9388static const gfx_layout c900_charlayout =
9489{
r29542r29543
114109   MCFG_CPU_DATA_MAP(c900_data)
115110   MCFG_CPU_IO_MAP(c900_io)
116111
117   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
112   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
113   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(c900_state, kbd_put))
118114   MCFG_GFXDECODE_ADD("gfxdecode", "palette", c900)
119115   MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette")
120116MACHINE_CONFIG_END
branches/new_menus/src/mess/drivers/trs80m2.c
r29542r29543
511511   m_ctc->trg3(m_kbirq);
512512}
513513
514static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
515{
516   DEVCB_DRIVER_MEMBER(trs80m2_state, kbd_w)
517};
518
519
520514//-------------------------------------------------
521515//  Z80DMA_INTERFACE( dma_intf )
522516//-------------------------------------------------
r29542r29543
842836
843837   MCFG_DEVICE_ADD(TRS80M2_KEYBOARD_TAG, TRS80M2_KEYBOARD, 0)
844838   MCFG_TRS80M2_KEYBOARD_CLOCK_CALLBACK(WRITELINE(trs80m2_state, kb_clock_w))
845   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
839   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
840   MCFG_GENERIC_KEYBOARD_CB(WRITE8(trs80m2_state, kbd_w))
846841
847842   // internal RAM
848843   MCFG_RAM_ADD(RAM_TAG)
r29542r29543
906901
907902   MCFG_DEVICE_ADD(TRS80M2_KEYBOARD_TAG, TRS80M2_KEYBOARD, 0)
908903   MCFG_TRS80M2_KEYBOARD_CLOCK_CALLBACK(WRITELINE(trs80m2_state, kb_clock_w))
909   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
904   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
905   MCFG_GENERIC_KEYBOARD_CB(WRITE8(trs80m2_state, kbd_w))
910906
911907   // internal RAM
912908   MCFG_RAM_ADD(RAM_TAG)
branches/new_menus/src/mess/drivers/dsb46.c
r29542r29543
9999   m_term_data = data;
100100}
101101
102static GENERIC_TERMINAL_INTERFACE( terminal_intf )
103{
104   DEVCB_DRIVER_MEMBER(dsb46_state, kbd_put)
105};
106
107102static MACHINE_CONFIG_START( dsb46, dsb46_state )
108103   // basic machine hardware
109104   MCFG_CPU_ADD("maincpu", Z80, 4000000)
r29542r29543
112107   MCFG_MACHINE_RESET_OVERRIDE(dsb46_state, dsb46)
113108
114109   /* video hardware */
115   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
110   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
111   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(dsb46_state, kbd_put))
116112MACHINE_CONFIG_END
117113
118114ROM_START( dsb46 )
branches/new_menus/src/mess/drivers/sun1.c
r29542r29543
127127   m_term_data = data;
128128}
129129
130static GENERIC_TERMINAL_INTERFACE( terminal_intf )
131{
132   DEVCB_DRIVER_MEMBER(sun1_state, kbd_put)
133};
134
135
136130static MACHINE_CONFIG_START( sun1, sun1_state )
137131   /* basic machine hardware */
138132   MCFG_CPU_ADD("maincpu", M68000, XTAL_10MHz)
139133   MCFG_CPU_PROGRAM_MAP(sun1_mem)
140134
141135   /* video hardware */
142   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
136   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
137   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(sun1_state, kbd_put))
143138MACHINE_CONFIG_END
144139
145140/* ROM definition */
branches/new_menus/src/mess/drivers/a310.c
r29542r29543
134134{
135135   archimedes_init();
136136
137
138
137139   // reset the DAC to centerline
138140   //m_dac->write_signed8(0x80);
139141}
r29542r29543
160162
161163   if(newval && !oldval)
162164      m_kart->send_keycode_down(row_val,col_val);
163   
165
164166   if(oldval && !newval)
165167      m_kart->send_keycode_up(row_val,col_val);
166168}
r29542r29543
277279    PORT_BIT(0x02, 0x00, IPT_KEYBOARD) PORT_NAME("*") PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x24) PORT_IMPULSE(1) // (KP?)
278280    PORT_BIT(0x04, 0x00, IPT_KEYBOARD) PORT_NAME("#") PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x25) PORT_IMPULSE(1) // (KP?)
279281
280
281282   PORT_START("via1a") /* VIA #1 PORT A */
282283   PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START) PORT_PLAYER(1)
283284   PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START) PORT_PLAYER(2)
r29542r29543
325326   DEVCB_DRIVER_LINE_MEMBER(archimedes_state, a310_kart_rx_w)
326327};
327328
329static ARM_INTERFACE( a310_config )
330{
331   ARM_COPRO_TYPE_VL86C020
332};
333
328334static MACHINE_CONFIG_START( a310, a310_state )
329335   /* basic machine hardware */
330336   MCFG_CPU_ADD("maincpu", ARM, 8000000)        /* 8 MHz */
331337   MCFG_CPU_PROGRAM_MAP(a310_mem)
338   MCFG_CPU_CONFIG(a310_config)
332339
333340   MCFG_AAKART_ADD("kart", 8000000/256, kart_interface) // TODO: frequency
334341
branches/new_menus/src/mess/drivers/z9001.c
r29542r29543
226226   m_maincpu->space(AS_PROGRAM).write_byte(0x0025, data);
227227}
228228
229static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
230{
231   DEVCB_DRIVER_MEMBER(z9001_state, kbd_put)
232};
233
234229static GFXDECODE_START( z9001 )
235230   GFXDECODE_ENTRY( "chargen", 0x0000, z9001_charlayout, 0, 1 )
236231GFXDECODE_END
r29542r29543
263258   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
264259
265260   /* Devices */
266   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
261   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
262   MCFG_GENERIC_KEYBOARD_CB(WRITE8(z9001_state, kbd_put))
267263   MCFG_TIMER_DRIVER_ADD_PERIODIC("z9001_timer", z9001_state, timer_callback, attotime::from_msec(10))
268264   MCFG_Z80PIO_ADD( "z80pio1", XTAL_9_8304MHz / 4, pio1_intf )
269265   MCFG_Z80PIO_ADD( "z80pio2", XTAL_9_8304MHz / 4, pio2_intf )
branches/new_menus/src/mess/drivers/onyx.c
r29542r29543
6868   m_term_data = data;
6969}
7070
71static GENERIC_TERMINAL_INTERFACE( terminal_intf )
72{
73   DEVCB_DRIVER_MEMBER(onyx_state, kbd_put)
74};
75
7671#if 0
7772WRITE_LINE_MEMBER( onyx_state::p8k_daisy_interrupt )
7873{
r29542r29543
420415   //MCFG_Z80PIO_ADD("z80pio_2", XTAL_4MHz, p8k_16_pio_2_intf )
421416
422417   /* video hardware */
423   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
418   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
419   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(onyx_state, kbd_put))
424420MACHINE_CONFIG_END
425421
426422/* ROM definition */
branches/new_menus/src/mess/drivers/czk80.c
r29542r29543
230230   m_term_data = data;
231231}
232232
233static GENERIC_TERMINAL_INTERFACE( terminal_intf )
234{
235   DEVCB_DRIVER_MEMBER(czk80_state, kbd_put)
236};
237
238233static MACHINE_CONFIG_START( czk80, czk80_state )
239234   /* basic machine hardware */
240235   MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4)
r29542r29543
243238   MCFG_CPU_CONFIG(daisy_chain)
244239   MCFG_MACHINE_RESET_OVERRIDE(czk80_state, czk80)
245240
246   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
241   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
242   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(czk80_state, kbd_put))
247243   MCFG_UPD765A_ADD("fdc", false, true)
248244   MCFG_FLOPPY_DRIVE_ADD("fdc:0", czk80_floppies, "525dd", floppy_image_device::default_floppy_formats)
249245   MCFG_Z80CTC_ADD( "z80ctc",  XTAL_16MHz / 4, ctc_intf)
branches/new_menus/src/mess/drivers/ipds.c
r29542r29543
135135   m_term_data = data;
136136}
137137
138static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
139{
140   DEVCB_DRIVER_MEMBER(ipds_state, kbd_put)
141};
142
143
144138static MACHINE_CONFIG_START( ipds, ipds_state )
145139   /* basic machine hardware */
146140   MCFG_CPU_ADD("maincpu",I8085A, XTAL_19_6608MHz / 4)
r29542r29543
158152   MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
159153
160154   MCFG_I8275_ADD  ( "i8275", ipds_i8275_interface)
161   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
155   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
156   MCFG_GENERIC_KEYBOARD_CB(WRITE8(ipds_state, kbd_put))
162157MACHINE_CONFIG_END
163158
164159/* ROM definition */
branches/new_menus/src/mess/drivers/rm380z.c
r29542r29543
109109   AM_RANGE(0xc5, 0xff) AM_READWRITE(rm380z_porthi_r, rm380z_porthi_w)
110110ADDRESS_MAP_END
111111
112static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
113{
114   DEVCB_DRIVER_MEMBER(rm380z_state, keyboard_put)
115};
116
117112INPUT_PORTS_START( rm380z )
118113//  PORT_START("additional_chars")
119114//  PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("Escape") PORT_CODE(KEYCODE_ESC) PORT_CODE(KEYCODE_ESC)
r29542r29543
170165   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(rm380z_floppy_interface)
171166
172167   /* keyboard */
173   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
168   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
169   MCFG_GENERIC_KEYBOARD_CB(WRITE8(rm380z_state, keyboard_put))
174170MACHINE_CONFIG_END
175171
176172/* ROM definition */
branches/new_menus/src/mess/drivers/llc.c
r29542r29543
145145      m_term_status = 0xff;
146146}
147147
148static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
149{
150   DEVCB_DRIVER_MEMBER(llc_state, kbd_put)
151};
152
153148static const z80_daisy_config llc1_daisy_chain[] =
154149{
155150   { "z80ctc" },
r29542r29543
225220   MCFG_Z80PIO_ADD( "z80pio1", XTAL_3MHz, llc1_z80pio1_intf )
226221   MCFG_Z80PIO_ADD( "z80pio2", XTAL_3MHz, llc1_z80pio2_intf )
227222   MCFG_Z80CTC_ADD( "z80ctc", XTAL_3MHz, llc1_ctc_intf )
228   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
223   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
224   MCFG_GENERIC_KEYBOARD_CB(WRITE8(llc_state, kbd_put))
229225MACHINE_CONFIG_END
230226
231227static MACHINE_CONFIG_START( llc2, llc_state )
branches/new_menus/src/mess/drivers/ipc.c
r29542r29543
107107   m_term_data = data;
108108}
109109
110static GENERIC_TERMINAL_INTERFACE( terminal_intf )
111{
112   DEVCB_DRIVER_MEMBER(ipc_state, kbd_put)
113};
114
115110static MACHINE_CONFIG_START( ipc, ipc_state )
116111   /* basic machine hardware */
117112   MCFG_CPU_ADD("maincpu",I8085A, XTAL_19_6608MHz / 4)
r29542r29543
119114   MCFG_CPU_IO_MAP(ipc_io)
120115
121116   /* video hardware */
122   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
117   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
118   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ipc_state, kbd_put))
123119MACHINE_CONFIG_END
124120
125121/* ROM definition */
branches/new_menus/src/mess/drivers/pdp11.c
r29542r29543
344344   m_teletype_status |= 0x80;
345345}
346346
347static GENERIC_TERMINAL_INTERFACE( terminal_intf )
348{
349   DEVCB_DRIVER_MEMBER(pdp11_state, kbd_put)
350};
351
352347static MACHINE_CONFIG_START( pdp11, pdp11_state )
353348   /* basic machine hardware */
354349   MCFG_CPU_ADD("maincpu",T11, XTAL_4MHz) // Need proper CPU here
r29542r29543
357352
358353
359354   /* video hardware */
360   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
355   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
356   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(pdp11_state, kbd_put))
361357
362358   MCFG_RX01_ADD("rx01")
363359MACHINE_CONFIG_END
branches/new_menus/src/mess/drivers/ts802.c
r29542r29543
223223   m_term_data = data;
224224}
225225
226static GENERIC_TERMINAL_INTERFACE( terminal_intf )
227{
228   DEVCB_DRIVER_MEMBER(ts802_state, kbd_put)
229};
230
231226#if 0
232227// not correct
233228static const z80_daisy_config daisy_chain_intf[] =
r29542r29543
261256   MCFG_MACHINE_RESET_OVERRIDE(ts802_state, ts802)
262257
263258   /* Devices */
264   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
259   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
260   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ts802_state, kbd_put))
265261   MCFG_Z80DMA_ADD("z80dma", XTAL_16MHz / 4, dma_intf)
266262   MCFG_Z80DART_ADD("z80dart1", XTAL_16MHz / 4, dart0_intf )
267263   MCFG_Z80DART_ADD("z80dart2", XTAL_16MHz / 4, dart1_intf )
branches/new_menus/src/mess/drivers/bigbord2.c
r29542r29543
217217   }
218218}
219219
220static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
221{
222   DEVCB_DRIVER_MEMBER(bigbord2_state, bigbord2_kbd_put)
223};
224
225
226
227220/* Z80 DMA */
228221
229222
r29542r29543
653646   MCFG_FLOPPY_DRIVE_ADD("fdc:0", bigbord2_floppies, "525dd", floppy_image_device::default_floppy_formats)
654647   MCFG_FLOPPY_DRIVE_ADD("fdc:1", bigbord2_floppies, "525dd", floppy_image_device::default_floppy_formats)
655648   MCFG_MC6845_ADD("crtc", MC6845, SCREEN_TAG, XTAL_16MHz / 8, bigbord2_crtc)
656   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
649   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
650   MCFG_GENERIC_KEYBOARD_CB(WRITE8(bigbord2_state, bigbord2_kbd_put))
657651
658652   /* sound hardware */
659653   MCFG_SPEAKER_STANDARD_MONO("mono")
branches/new_menus/src/mess/drivers/zexall.c
r29542r29543
162162 Machine Drivers
163163******************************************************************************/
164164
165static GENERIC_TERMINAL_INTERFACE( zexall_terminal_intf )
166{
167   DEVCB_NULL
168};
169
170165static MACHINE_CONFIG_START( zexall, zexall_state )
171166   /* basic machine hardware */
172167   MCFG_CPU_ADD("maincpu", Z80, XTAL_3_579545MHz*10)
r29542r29543
175170   MCFG_QUANTUM_TIME(attotime::from_hz(60))
176171
177172   /* video hardware */
178   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, zexall_terminal_intf)
173   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
179174MACHINE_CONFIG_END
180175
181176
branches/new_menus/src/mess/drivers/mits680b.c
r29542r29543
9292   m_term_data = data;
9393}
9494
95static GENERIC_TERMINAL_INTERFACE( terminal_intf )
96{
97   DEVCB_DRIVER_MEMBER(mits680b_state, kbd_put)
98};
99
10095static MACHINE_CONFIG_START( mits680b, mits680b_state )
10196   /* basic machine hardware */
10297   MCFG_CPU_ADD("maincpu",M6800, XTAL_1MHz / 2)
10398   MCFG_CPU_PROGRAM_MAP(mits680b_mem)
10499
105100   /* video hardware */
106   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
101   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
102   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(mits680b_state, kbd_put))
107103
108104   /* acia */
109105   //MCFG_ACIA6551_ADD("acia")
branches/new_menus/src/mess/drivers/phunsy.c
r29542r29543
184184}
185185
186186
187static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
188{
189   DEVCB_DRIVER_MEMBER(phunsy_state, kbd_put)
190};
191
192
193187void phunsy_state::machine_reset()
194188{
195189   membank("bankru")->set_entry(0); // point at ram
r29542r29543
367361   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
368362
369363   /* Devices */
370   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
364   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
365   MCFG_GENERIC_KEYBOARD_CB(WRITE8(phunsy_state, kbd_put))
371366   MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
372367
373368   /* quickload */
branches/new_menus/src/mess/drivers/p8k.c
r29542r29543
220220   m_maincpu->set_state_int(Z80_PC, 0x078A);
221221}
222222
223static GENERIC_TERMINAL_INTERFACE( terminal_intf )
224{
225   DEVCB_DRIVER_MEMBER(p8k_state, kbd_put)
226};
227
228
229223/***************************************************************************
230224
231225    P8000 8bit Peripherals
r29542r29543
483477   mem.write_byte(0x43a0, 1);
484478}
485479
486static GENERIC_TERMINAL_INTERFACE( terminal_intf_16 )
487{
488   DEVCB_DRIVER_MEMBER(p8k_state, kbd_put_16)
489};
490
491
492
493
494480MACHINE_RESET_MEMBER(p8k_state,p8k_16)
495481{
496482}
r29542r29543
814800   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
815801
816802   /* video hardware */
817   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
803   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
804   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(p8k_state, kbd_put))
818805MACHINE_CONFIG_END
819806
820807static MACHINE_CONFIG_START( p8k_16, p8k_state )
r29542r29543
841828   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
842829
843830   /* video hardware */
844   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf_16)
831   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
832   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(p8k_state, kbd_put_16))
845833MACHINE_CONFIG_END
846834
847835/* ROM definition */
branches/new_menus/src/mess/drivers/tsispch.c
r29542r29543
169169   i8251_device *uart = machine().device<i8251_device>("i8251a_u15");
170170   uart->receive_character(data);
171171}
172static GENERIC_TERMINAL_INTERFACE( tsispch_terminal_intf )
173{
174   DEVCB_DRIVER_MEMBER(tsispch_state, i8251_rxd)
175};
176172
177173/*****************************************************************************
178174 PIC 8259 stuff
r29542r29543
433429   //MCFG_SOUND_ADD("dac", DAC, 0) /* TODO: correctly figure out how the DAC works; apparently it is connected to the serial output of the upd7720, which will be "fun" to connect up */
434430   //MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
435431
436   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG,tsispch_terminal_intf)
432   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
433   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(tsispch_state, i8251_rxd))
437434MACHINE_CONFIG_END
438435
439436/******************************************************************************
branches/new_menus/src/mess/drivers/jupiter.c
r29542r29543
205205   { FLOPPY_0, FLOPPY_1, NULL, NULL }
206206};
207207
208
209//-------------------------------------------------
210//  GENERIC_TERMINAL_INTERFACE( terminal_intf )
211//-------------------------------------------------
212
213static GENERIC_TERMINAL_INTERFACE( jupiter2_terminal_intf )
214{
215   DEVCB_NULL
216};
217
218static ASCII_KEYBOARD_INTERFACE( jupiter3_keyboard_intf )
219{
220   DEVCB_DRIVER_MEMBER(jupiter3_state, kbd_put)
221};
222
223
224
225208//**************************************************************************
226209//  MACHINE INITIALIZATION
227210//**************************************************************************
r29542r29543
264247
265248   // devices
266249   MCFG_FD1771_ADD(INS1771N1_TAG, fdc_intf)
267   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, jupiter2_terminal_intf)
250   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
268251
269252   // internal ram
270253   MCFG_RAM_ADD(RAM_TAG)
r29542r29543
296279
297280   // devices
298281   MCFG_FD1771_ADD(INS1771N1_TAG, fdc_intf)
299   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, jupiter3_keyboard_intf)
282   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
283   MCFG_GENERIC_KEYBOARD_CB(WRITE8(jupiter3_state, kbd_put))
300284
301285   // internal ram
302286   MCFG_RAM_ADD(RAM_TAG)
branches/new_menus/src/mess/drivers/poly.c
r29542r29543
154154   m_acia->write_rxc(state);
155155}
156156
157static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
158{
159   DEVCB_DRIVER_MEMBER(poly_state, kbd_put)
160};
161
162157static MACHINE_CONFIG_START( poly, poly_state )
163158   /* basic machine hardware */
164159   MCFG_CPU_ADD("maincpu", M6809E, XTAL_12MHz / 3) // 12.0576MHz
r29542r29543
203198
204199   MCFG_MC6854_ADD("adlc", adlc_intf)
205200
206   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
201   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
202   MCFG_GENERIC_KEYBOARD_CB(WRITE8(poly_state, kbd_put))
207203MACHINE_CONFIG_END
208204
209205/* ROM definition */
branches/new_menus/src/mess/drivers/tk80bs.c
r29542r29543
160160   m_term_data = data;
161161}
162162
163static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
164{
165   DEVCB_DRIVER_MEMBER(tk80bs_state, kbd_put)
166};
167
168
169163/* F4 Character Displayer */
170164static const gfx_layout tk80bs_charlayout =
171165{
r29542r29543
202196
203197   /* Devices */
204198   MCFG_I8255_ADD( "ppi", ppi_intf)
205   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
199   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
200   MCFG_GENERIC_KEYBOARD_CB(WRITE8(tk80bs_state, kbd_put))
206201MACHINE_CONFIG_END
207202
208203
branches/new_menus/src/mess/drivers/zrt80.c
r29542r29543
282282   m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
283283}
284284
285static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
286{
287   DEVCB_DRIVER_MEMBER(zrt80_state, kbd_put)
288};
289
290
291285/* F4 Character Displayer */
292286static const gfx_layout zrt80_charlayout =
293287{
r29542r29543
330324   /* Devices */
331325   MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_20MHz / 8, zrt80_crtc6845_interface)
332326   MCFG_INS8250_ADD( "ins8250", zrt80_com_interface, 2457600 )
333   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
327   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
328   MCFG_GENERIC_KEYBOARD_CB(WRITE8(zrt80_state, kbd_put))
334329MACHINE_CONFIG_END
335330
336331/* ROM definition */
branches/new_menus/src/mess/drivers/swtpc.c
r29542r29543
109109   m_term_data = data;
110110}
111111
112static GENERIC_TERMINAL_INTERFACE( terminal_intf )
113{
114   DEVCB_DRIVER_MEMBER(swtpc_state, kbd_put)
115};
116
117112static MACHINE_CONFIG_START( swtpc, swtpc_state )
118113   /* basic machine hardware */
119114   MCFG_CPU_ADD("maincpu", M6800, XTAL_1MHz)
r29542r29543
121116
122117
123118   /* video hardware */
124   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
119   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
120   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(swtpc_state, kbd_put))
125121MACHINE_CONFIG_END
126122
127123/* ROM definition */
branches/new_menus/src/mess/drivers/h19.c
r29542r29543
411411   m_maincpu->set_input_line(0, HOLD_LINE);
412412}
413413
414static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
415{
416   DEVCB_DRIVER_MEMBER(h19_state, h19_kbd_put)
417};
418
419414static MACHINE_CONFIG_START( h19, h19_state )
420415   /* basic machine hardware */
421416   MCFG_CPU_ADD("maincpu",Z80, H19_CLOCK) // From schematics
r29542r29543
435430
436431   MCFG_MC6845_ADD("crtc", MC6845, "screen", XTAL_12_288MHz / 8, h19_crtc6845_interface) // clk taken from schematics
437432   MCFG_INS8250_ADD( "ins8250", h19_ace_interface, XTAL_12_288MHz / 4) // 3.072mhz clock which gets divided down for the various baud rates
438   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
433   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
434   MCFG_GENERIC_KEYBOARD_CB(WRITE8(h19_state, h19_kbd_put))
439435
440436   /* sound hardware */
441437   MCFG_SPEAKER_STANDARD_MONO("mono")
branches/new_menus/src/mess/drivers/v6809.c
r29542r29543
254254   m_pia0->cb1_w(1);
255255}
256256
257static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
258{
259   DEVCB_DRIVER_MEMBER(v6809_state, kbd_put)
260};
261
262257WRITE_LINE_MEMBER( v6809_state::write_acia_clock )
263258{
264259   m_acia0->write_txc(state);
r29542r29543
359354
360355   /* Devices */
361356   MCFG_MC6845_ADD("crtc", SY6545_1, "screen", XTAL_16MHz / 8, v6809_crtc)
362   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
357   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
358   MCFG_GENERIC_KEYBOARD_CB(WRITE8(v6809_state, kbd_put))
363359
364360// port A = drive select and 2 control lines ; port B = keyboard
365361// CB2 connects to the interrupt pin of the RTC (the rtc code doesn't support it)
branches/new_menus/src/mess/drivers/ms9540.c
r29542r29543
7777   m_term_data = data;
7878}
7979
80static GENERIC_TERMINAL_INTERFACE( terminal_intf )
81{
82   DEVCB_DRIVER_MEMBER(ms9540_state, kbd_put)
83};
84
8580static MACHINE_CONFIG_START( ms9540, ms9540_state )
8681   /* basic machine hardware */
8782   MCFG_CPU_ADD("maincpu", M68000, 8000000) // unknown clock
8883   MCFG_CPU_PROGRAM_MAP(ms9540_mem)
8984
9085   /* video hardware */
91   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
86   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
87   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ms9540_state, kbd_put))
88   
9289MACHINE_CONFIG_END
9390
9491/* ROM definition */
branches/new_menus/src/mess/drivers/besta.c
r29542r29543
128128   m_maincpu->reset();
129129}
130130
131static GENERIC_TERMINAL_INTERFACE( terminal_intf )
132{
133   DEVCB_DRIVER_MEMBER(besta_state, kbd_put)
134};
135
136
137131/* CP31 processor board */
138132static MACHINE_CONFIG_START( besta, besta_state )
139133   /* basic machine hardware */
r29542r29543
143137#if 0
144138   MCFG_DEVICE_ADD("mpcc", MPCC68561, XTAL_25MHz);    // confirm internal oscillator frequency
145139#endif
146   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
140   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
141   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(besta_state, kbd_put))
147142MACHINE_CONFIG_END
148143
149144/* ROM definition */
branches/new_menus/src/mess/drivers/a6809.c
r29542r29543
233233   m_via->write_cb1(0);
234234}
235235
236static ASCII_KEYBOARD_INTERFACE( kb_intf )
237{
238   DEVCB_DRIVER_MEMBER(a6809_state, kbd_put)
239};
240
241236static MACHINE_CONFIG_START( a6809, a6809_state )
242237   /* basic machine hardware */
243238   MCFG_CPU_ADD("maincpu",M6809E, XTAL_4MHz)
r29542r29543
270265   MCFG_SAA5050_D_CALLBACK(READ8(a6809_state, videoram_r))
271266   MCFG_SAA5050_SCREEN_SIZE(40, 25, 40)
272267
273   MCFG_ASCII_KEYBOARD_ADD("keyboard", kb_intf)
268   MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
269   MCFG_GENERIC_KEYBOARD_CB(WRITE8(a6809_state, kbd_put))
274270   MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
275271   MCFG_TIMER_DRIVER_ADD_PERIODIC("a6809_c", a6809_state, a6809_c, attotime::from_hz(4800))
276272   MCFG_TIMER_DRIVER_ADD_PERIODIC("a6809_p", a6809_state, a6809_p, attotime::from_hz(40000))
branches/new_menus/src/mess/drivers/zsbc3.c
r29542r29543
100100   m_term_data = data;
101101}
102102
103static GENERIC_TERMINAL_INTERFACE( terminal_intf )
104{
105   DEVCB_DRIVER_MEMBER(zsbc3_state, kbd_put)
106};
107103
108
109104static MACHINE_CONFIG_START( zsbc3, zsbc3_state )
110105   /* basic machine hardware */
111106   MCFG_CPU_ADD("maincpu",Z80, XTAL_16MHz /4)
r29542r29543
113108   MCFG_CPU_IO_MAP(zsbc3_io)
114109
115110   /* video hardware */
116   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
111   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
112   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(zsbc3_state, kbd_put))
117113MACHINE_CONFIG_END
118114
119115/* ROM definition */
branches/new_menus/src/mess/drivers/chaos.c
r29542r29543
130130   m_term_data = data;
131131}
132132
133static GENERIC_TERMINAL_INTERFACE( terminal_intf )
134{
135   DEVCB_DRIVER_MEMBER(chaos_state, kbd_put)
136};
137
138133void chaos_state::machine_reset()
139134{
140135   // copy the roms into ram
r29542r29543
150145   MCFG_CPU_IO_MAP(chaos_io)
151146
152147   /* video hardware */
153   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
148   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
149   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(chaos_state, kbd_put))
154150MACHINE_CONFIG_END
155151
156152/* ROM definition */
branches/new_menus/src/mess/drivers/ravens.c
r29542r29543
260260   m_term_data = data;
261261}
262262
263static GENERIC_TERMINAL_INTERFACE( terminal_intf )
264{
265   DEVCB_DRIVER_MEMBER(ravens_state, kbd_put)
266};
267
268263QUICKLOAD_LOAD_MEMBER( ravens_state, ravens )
269264{
270265   address_space &space = m_maincpu->space(AS_PROGRAM);
r29542r29543
359354   MCFG_MACHINE_RESET_OVERRIDE(ravens_state, ravens2)
360355
361356   /* video hardware */
362   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
357   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
358   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ravens_state, kbd_put))
363359
364360   /* quickload */
365361   MCFG_QUICKLOAD_ADD("quickload", ravens_state, ravens, "pgm", 1)
branches/new_menus/src/mess/drivers/xerox820.c
r29542r29543
520520   m_kbpio->strobe_b(1);
521521}
522522
523static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
524{
525   DEVCB_DRIVER_MEMBER(xerox820_state, kbd_w)
526};
527
528
529523/* Video */
530524
531525UINT32 xerox820_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
r29542r29543
719713   MCFG_COM8116_FR_HANDLER(WRITELINE(xerox820_state, fr_w))
720714   MCFG_COM8116_FT_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w))
721715
722   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
716   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
717   MCFG_GENERIC_KEYBOARD_CB(WRITE8(xerox820_state, kbd_w))
723718
724719   /* internal ram */
725720   MCFG_RAM_ADD(RAM_TAG)
r29542r29543
780775   MCFG_COM8116_FR_HANDLER(WRITELINE(xerox820_state, fr_w))
781776   MCFG_COM8116_FT_HANDLER(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w))
782777
783   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
778   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
779   MCFG_GENERIC_KEYBOARD_CB(WRITE8(xerox820_state, kbd_w))
784780
785781   // SASI bus
786782   MCFG_SCSIBUS_ADD(SASIBUS_TAG)
branches/new_menus/src/mess/drivers/jade.c
r29542r29543
8080   m_term_data = data;
8181}
8282
83static GENERIC_TERMINAL_INTERFACE( terminal_intf )
84{
85   DEVCB_DRIVER_MEMBER(jade_state, kbd_put)
86};
87
8883void jade_state::machine_reset()
8984{
9085   m_term_data = 0;
r29542r29543
9792   MCFG_CPU_IO_MAP(jade_io)
9893
9994   /* video hardware */
100   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
95   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
96   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(jade_state, kbd_put))
10197
10298   /* Devices */
10399   MCFG_DEVICE_ADD("uart", I8251, 0)
branches/new_menus/src/mess/drivers/cd2650.c
r29542r29543
194194      m_term_data = data;
195195}
196196
197static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
198{
199   DEVCB_DRIVER_MEMBER(cd2650_state, kbd_put)
200};
201
202197QUICKLOAD_LOAD_MEMBER( cd2650_state, cd2650 )
203198{
204199   int i, result = IMAGE_INIT_FAIL;
r29542r29543
296291   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
297292
298293   /* Devices */
299   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
294   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
295   MCFG_GENERIC_KEYBOARD_CB(WRITE8(cd2650_state, kbd_put))
300296   MCFG_CASSETTE_ADD( "cassette", default_cassette_interface )
301297MACHINE_CONFIG_END
302298
branches/new_menus/src/mess/drivers/ts816.c
r29542r29543
8080   m_status = 3;
8181}
8282
83static GENERIC_TERMINAL_INTERFACE( terminal_intf )
84{
85   DEVCB_DRIVER_MEMBER(ts816_state, kbd_put)
86};
87
8883void ts816_state::machine_reset()
8984{
9085   m_term_data = 0;
r29542r29543
9893   MCFG_CPU_IO_MAP(ts816_io)
9994
10095   /* video hardware */
101   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
96   MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0)
97   MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(ts816_state, kbd_put))
10298MACHINE_CONFIG_END
10399
104100/* ROM definition */
branches/new_menus/src/mess/drivers/m20.c
r29542r29543
892892   }
893893}
894894
895static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
896{
897   DEVCB_DRIVER_MEMBER(m20_state, kbd_put)
898};
899
900895static SLOT_INTERFACE_START( m20_floppies )
901896   SLOT_INTERFACE( "5dd", FLOPPY_525_DD )
902897SLOT_INTERFACE_END
r29542r29543
957952
958953   MCFG_PIC8259_ADD("i8259", WRITELINE(m20_state, pic_irq_line_w), VCC, NULL)
959954
960   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
955   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
956   MCFG_GENERIC_KEYBOARD_CB(WRITE8(m20_state, kbd_put))
961957
962958   MCFG_SOFTWARE_LIST_ADD("flop_list","m20")
963959MACHINE_CONFIG_END
branches/new_menus/src/mess/drivers/mx2178.c
r29542r29543
9696   m_maincpu->set_input_line(0, HOLD_LINE);
9797}
9898
99static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
100{
101   DEVCB_DRIVER_MEMBER(mx2178_state, kbd_put)
102};
103
10499static MC6845_UPDATE_ROW( update_row )
105100{
106101   mx2178_state *state = device->machine().driver_data<mx2178_state>();
r29542r29543
196191
197192   /// TODO: hook up acia to keyboard and memory map
198193
199   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
194   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
195   MCFG_GENERIC_KEYBOARD_CB(WRITE8(mx2178_state, kbd_put))
200196
201197   MCFG_DEVICE_ADD("acia_clock", CLOCK, 614400)
202198   MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(mx2178_state, write_acia_clock))
branches/new_menus/src/mess/machine/teleprinter.c
r29542r29543
203203   return 0;
204204}
205205
206static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
207{
208   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, generic_terminal_device, kbd_put)
209};
210
211206/***************************************************************************
212207    VIDEO HARDWARE
213208***************************************************************************/
r29542r29543
218213   MCFG_SCREEN_SIZE(TELEPRINTER_WIDTH*8, TELEPRINTER_HEIGHT*8)
219214   MCFG_SCREEN_VISIBLE_AREA(0, TELEPRINTER_WIDTH*8-1, 0, TELEPRINTER_HEIGHT*8-1)
220215   MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, teleprinter_device, tp_update)
221   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
216   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
217   MCFG_GENERIC_KEYBOARD_CB(WRITE8(generic_terminal_device, kbd_put))
222218MACHINE_CONFIG_END
223219
224220machine_config_constructor teleprinter_device::device_mconfig_additions() const
branches/new_menus/src/mess/machine/teleprinter.h
r29542r29543
66#define TELEPRINTER_WIDTH 80
77#define TELEPRINTER_HEIGHT 50
88
9#define GENERIC_TELEPRINTER_INTERFACE GENERIC_TERMINAL_INTERFACE
109
1110/***************************************************************************
1211    DEVICE CONFIGURATION MACROS
r29542r29543
1413#define TELEPRINTER_TAG "teleprinter"
1514#define TELEPRINTER_SCREEN_TAG "tty_screen"
1615
17#define MCFG_GENERIC_TELEPRINTER_ADD(_tag, _intrf) \
18   MCFG_DEVICE_ADD(_tag, TELEPRINTER, 0) \
19   MCFG_DEVICE_CONFIG(_intrf)
16#define MCFG_GENERIC_TELEPRINTER_KEYBOARD_CB(_devcb) \
17   devcb = &generic_terminal_device::set_keyboard_callback(*device, DEVCB2_##_devcb);
2018
21#define MCFG_GENERIC_TELEPRINTER_REMOVE(_tag)       \
22   MCFG_DEVICE_REMOVE(_tag)
23
2419/***************************************************************************
2520    FUNCTION PROTOTYPES
2621***************************************************************************/
branches/new_menus/src/mame/drivers/rltennis.c
r29542r29543
168168   AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w)
169169ADDRESS_MAP_END
170170
171static RAMDAC_INTERFACE( ramdac_intf )
172{
173   1
174};
175
176171static MACHINE_CONFIG_START( rltennis, rltennis_state )
177172
178173   MCFG_CPU_ADD("maincpu", M68000, RLT_XTAL/2) /* 68000P8  ??? */
r29542r29543
190185
191186   MCFG_NVRAM_ADD_0FILL("nvram")
192187
193   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
188   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
189   MCFG_RAMDAC_SPLIT_READ(1)
194190
195191   MCFG_SPEAKER_STANDARD_MONO("mono")
196192
branches/new_menus/src/mame/drivers/globalvr.c
r29542r29543
7474
7575
7676static ADDRESS_MAP_START( globalvr_map, AS_PROGRAM, 32, globalvr_state )
77   AM_RANGE(0x00000000, 0xffffffff) AM_RAM
77   AM_RANGE(0x00000000, 0xffffff) AM_RAM
7878ADDRESS_MAP_END
7979
8080
branches/new_menus/src/mame/drivers/sfbonus.c
r29542r29543
13491349   AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
13501350ADDRESS_MAP_END
13511351
1352static RAMDAC_INTERFACE( ramdac_intf )
1353{
1354   0
1355};
13561352
1357
13581353static MACHINE_CONFIG_START( sfbonus, sfbonus_state )
13591354   MCFG_CPU_ADD("maincpu", Z80, 6000000) // custom packaged z80 CPU ?? Mhz
13601355   MCFG_CPU_PROGRAM_MAP(sfbonus_map)
r29542r29543
13771372
13781373   MCFG_PALETTE_ADD("palette", 0x100*2) // *2 for priority workaraound / custom drawing
13791374
1380   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
1375   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
13811376
13821377
13831378   /* Parrot 3 seems fine at 1 Mhz, but Double Challenge isn't? */
branches/new_menus/src/mame/drivers/maygay1b.c
r29542r29543
512512   return (portnames[m_lamp_strobe&0x07])->read();
513513}
514514
515/*
516static I8279_INTERFACE( m1_i8279_intf )
517{
518   DEVCB_NULL,                                     // irq
519   DEVCB_DRIVER_MEMBER(maygay1b_state, scanlines_w),  // scan SL lines
520   DEVCB_DRIVER_MEMBER(maygay1b_state, lamp_data_w),      // display A&B
521   DEVCB_NULL,                                     // BD
522   DEVCB_DRIVER_MEMBER(maygay1b_state,kbd_r),      // kbd RL lines
523   DEVCB_NULL,                                     // Shift key
524   DEVCB_NULL                                      // Ctrl-Strobe line
525};
526*/
527
528
529
530515WRITE8_MEMBER( maygay1b_state::lamp_data_2_w )
531516{
532517   //The two A/B ports are merged back into one, to make one row of 8 lamps.
r29542r29543
546531   
547532}
548533
549/*
550static I8279_INTERFACE( m1_i8279_2_intf )
551{
552   DEVCB_NULL,                                     // irq
553   DEVCB_NULL,  // scan SL lines
554   DEVCB_DRIVER_MEMBER(maygay1b_state, lamp_data_2_w),      // display A&B
555   DEVCB_NULL,                                     // BD
556   DEVCB_NULL,                                   // kbd RL lines
557   DEVCB_NULL,                                     // Shift key
558   DEVCB_NULL                                      // Ctrl-Strobe line
559};
560*/
561
562534// machine driver for maygay m1 board /////////////////////////////////
563535
564536
r29542r29543
589561
590562   MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq?
591563   MCFG_DEVICE_ADD("i8279", I8279, M1_MASTER_CLOCK/4)    // unknown clock
592   MCFG_DEVICE_ADD("i8279_2", I8279, M1_MASTER_CLOCK/4)    // unknown clock
593
594//   MCFG_I8279_ADD("i8279", M1_MASTER_CLOCK/4, m1_i8279_intf)    // unknown clock
595//   MCFG_I8279_ADD("i8279_2", M1_MASTER_CLOCK/4, m1_i8279_2_intf)    // unknown clock
596
564   MCFG_I8279_OUT_SL_CB(WRITE8(maygay1b_state, scanlines_w))   // scan SL lines
565   MCFG_I8279_OUT_DISP_CB(WRITE8(maygay1b_state, lamp_data_w))      // display A&B
566   MCFG_I8279_IN_RL_CB(READ8(maygay1b_state, kbd_r))         // kbd RL lines
567   MCFG_DEVICE_ADD("i8279_2", I8279, M1_MASTER_CLOCK/4)      // unknown clock
568   MCFG_I8279_OUT_DISP_CB(WRITE8(maygay1b_state, lamp_data_2_w))      // display A&B
569   
597570   MCFG_NVRAM_ADD_0FILL("nvram")
598571
599572   MCFG_DEFAULT_LAYOUT(layout_maygay1b)
branches/new_menus/src/mame/drivers/mazerbla.c
r29542r29543
14661466   m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mazerbla_state::irq_callback),this));
14671467}
14681468
1469static const mb_vcu_interface vcu_interface =
1470{
1471   "sub2"
1472};
1473
14741469static MACHINE_CONFIG_START( mazerbla, mazerbla_state )
14751470
14761471   /* basic machine hardware */
r29542r29543
14931488   MCFG_CPU_VBLANK_INT_DRIVER("screen", mazerbla_state,  irq0_line_hold)
14941489
14951490   /* synchronization forced on the fly */
1496   MCFG_MB_VCU_ADD("vcu",SOUND_CLOCK/4,vcu_interface,"palette")
1491   MCFG_DEVICE_ADD("vcu", MB_VCU, SOUND_CLOCK/4)
1492   MCFG_MB_VCU_CPU("sub2")
1493   MCFG_MB_VCU_PALETTE("palette")
14971494
14981495   /* video hardware */
14991496   MCFG_SCREEN_ADD("screen", RASTER)
r29542r29543
15301527    */
15311528   MCFG_CPU_VBLANK_INT_DRIVER("screen", mazerbla_state,  irq0_line_hold)
15321529
1533   MCFG_MB_VCU_ADD("vcu",SOUND_CLOCK/4,vcu_interface,"palette")
1530   MCFG_DEVICE_ADD("vcu", MB_VCU, SOUND_CLOCK/4)
1531   MCFG_MB_VCU_CPU("sub2")
1532   MCFG_MB_VCU_PALETTE("palette")
15341533
15351534   /* video hardware */
15361535   MCFG_SCREEN_ADD("screen", RASTER)
branches/new_menus/src/mame/drivers/sliver.c
r29542r29543
454454   AM_RANGE(0x000, 0x3ff) AM_RAM AM_SHARE("colorram")
455455ADDRESS_MAP_END
456456
457static RAMDAC_INTERFACE( ramdac_intf )
458{
459   0
460};
461
462457static TIMER_DEVICE_CALLBACK ( obj_irq_cb )
463458{
464459   sliver_state *state = timer.machine().driver_data<sliver_state>();
r29542r29543
485480   MCFG_SCREEN_UPDATE_DRIVER(sliver_state, screen_update_sliver)
486481
487482   MCFG_PALETTE_ADD("palette", 0x100)
488   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
483   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
489484
490485
491486   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
branches/new_menus/src/mame/drivers/blitz68k.c
r29542r29543
17161716   AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
17171717ADDRESS_MAP_END
17181718
1719static RAMDAC_INTERFACE( ramdac_intf )
1720{
1721   0
1722};
1723
17241719static MACHINE_CONFIG_START( ilpag, blitz68k_state )
17251720   MCFG_CPU_ADD("maincpu", M68000, 11059200 )  // ?
17261721   MCFG_CPU_PROGRAM_MAP(ilpag_map)
r29542r29543
17391734
17401735   MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
17411736
1742   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
1737   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
17431738
17441739   MCFG_SPEAKER_STANDARD_MONO("mono")
17451740   MCFG_DAC_ADD("dac")
r29542r29543
18121807   MCFG_PALETTE_ADD("palette", 0x100)
18131808
18141809   MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
1815   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
1810   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
18161811
18171812   MCFG_SPEAKER_STANDARD_MONO("mono")
18181813   MCFG_DAC_ADD("dac")
r29542r29543
18441839   MCFG_PALETTE_ADD("palette", 0x100)
18451840
18461841   MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
1847   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
1842   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
18481843
18491844   MCFG_SPEAKER_STANDARD_MONO("mono")
18501845   MCFG_DAC_ADD("dac")
r29542r29543
18741869   MCFG_PALETTE_ADD("palette", 0x100)
18751870
18761871   MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k_addr_factor1)
1877   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
1872   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
18781873
18791874   MCFG_SPEAKER_STANDARD_MONO("mono")
18801875   MCFG_DAC_ADD("dac")
r29542r29543
19031898   MCFG_PALETTE_ADD("palette", 0x100)
19041899
19051900   MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
1906   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
1901   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
19071902
19081903   MCFG_SPEAKER_STANDARD_MONO("mono")
19091904   MCFG_DAC_ADD("dac")
r29542r29543
19341929   MCFG_PALETTE_ADD("palette", 0x100)
19351930
19361931   MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
1937   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
1932   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
19381933
19391934   MCFG_SPEAKER_STANDARD_MONO("mono")
19401935   MCFG_DAC_ADD("dac")
r29542r29543
19631958   MCFG_PALETTE_ADD("palette", 0x100)
19641959
19651960   MCFG_VIDEO_START_OVERRIDE(blitz68k_state,blitz68k)
1966   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
1961   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
19671962
19681963   MCFG_SPEAKER_STANDARD_MONO("mono")
19691964   MCFG_DAC_ADD("dac")
r29542r29543
19951990   MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_11_0592MHz/4, mc6845_intf_irq3)
19961991
19971992   MCFG_PALETTE_ADD("palette", 0x100)
1998   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
1993   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
19991994
20001995   MCFG_SPEAKER_STANDARD_MONO("mono")
20011996   MCFG_SAA1099_ADD("saa", XTAL_8MHz/2)
branches/new_menus/src/mame/drivers/konamigx.c
r29542r29543
16511651   MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
16521652
16531653   MCFG_DEVICE_MODIFY("dasp")
1654   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
1655   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
1654   MCFG_SOUND_ROUTE(0, "lspeaker", 0.3)
1655   MCFG_SOUND_ROUTE(1, "rspeaker", 0.3)
16561656
16571657   MCFG_K056800_ADD("k056800", XTAL_18_432MHz)
16581658   MCFG_K056800_INT_HANDLER(INPUTLINE("soundcpu", M68K_IRQ_1))
16591659
16601660   MCFG_K054539_ADD("k054539_1", XTAL_18_432MHz, k054539_config)
16611661   MCFG_K054539_TIMER_HANDLER(WRITELINE(konamigx_state, k054539_irq_gen))
1662   MCFG_SOUND_ROUTE_EX(0, "dasp", 0.9, 0)
1663   MCFG_SOUND_ROUTE_EX(1, "dasp", 0.9, 1)
1662   MCFG_SOUND_ROUTE_EX(0, "dasp", 0.5, 0)
1663   MCFG_SOUND_ROUTE_EX(1, "dasp", 0.5, 1)
16641664   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
16651665   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
16661666
16671667   MCFG_K054539_ADD("k054539_2", XTAL_18_432MHz, k054539_config)
1668   MCFG_SOUND_ROUTE_EX(0, "dasp", 0.9, 2)
1669   MCFG_SOUND_ROUTE_EX(1, "dasp", 0.9, 3)
1668   MCFG_SOUND_ROUTE_EX(0, "dasp", 0.5, 2)
1669   MCFG_SOUND_ROUTE_EX(1, "dasp", 0.5, 3)
16701670   MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
16711671   MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
16721672MACHINE_CONFIG_END
branches/new_menus/src/mame/drivers/pinball2k.c
r29542r29543
568568   AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
569569ADDRESS_MAP_END
570570
571static RAMDAC_INTERFACE( ramdac_intf )
572{
573   0
574};
575
576571static MACHINE_CONFIG_START( mediagx, pinball2k_state )
577572
578573   /* basic machine hardware */
r29542r29543
588583   MCFG_IDE_CONTROLLER_ADD("ide", ata_devices, "hdd", NULL, true)
589584   MCFG_ATA_INTERFACE_IRQ_HANDLER(DEVWRITELINE("pic8259_2", pic8259_device, ir6_w))
590585
591   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
586   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
592587
593588   /* video hardware */
594589   MCFG_SCREEN_ADD("screen", RASTER)
branches/new_menus/src/mame/drivers/wildpkr.c
r29542r29543
255255
256256}
257257
258// static const hd63484_interface wildpkr_hd63484_intf = { 1 };
259258
260
261259static ADDRESS_MAP_START( ramdac_map, AS_0, 8, wildpkr_state )
262260   AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
263261ADDRESS_MAP_END
264262
265263
266264
267static RAMDAC_INTERFACE( ramdac_intf )
268{
269   0
270};
271
272265/*************************
273266*    Machine Drivers     *
274267*************************/
r29542r29543
289282   MCFG_SCREEN_UPDATE_DRIVER(wildpkr_state, screen_update_wildpkr)
290283   MCFG_SCREEN_PALETTE("palette")
291284
292//  MCFG_HD63484_ADD("hd63484", wildpkr_hd63484_intf)
293   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
285//  MCFG_DEVICE_ADD("hd63484", HD63484, 0)
286   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
294287
295288   MCFG_PALETTE_ADD("palette", 256)
296289   MCFG_PALETTE_INIT_OWNER(wildpkr_state, wildpkr)
branches/new_menus/src/mame/drivers/mediagx.c
r29542r29543
870870   AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
871871ADDRESS_MAP_END
872872
873static RAMDAC_INTERFACE( ramdac_intf )
874{
875   0
876};
877
878873static MACHINE_CONFIG_START( mediagx, mediagx_state )
879874
880875   /* basic machine hardware */
r29542r29543
892887
893888   MCFG_TIMER_DRIVER_ADD("sound_timer", mediagx_state, sound_timer_callback)
894889
895   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
890   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
896891
897892   /* video hardware */
898893   MCFG_SCREEN_ADD("screen", RASTER)
branches/new_menus/src/mame/drivers/taito_b.c
r29542r29543
28812881   MCFG_TC0140SYT_SLAVE_CPU("audiocpu")
28822882MACHINE_CONFIG_END
28832883
2884/* TODO: Properly hook up the HD63484 */
2885static const hd63484_interface realpunc_hd63484_intf =
2886{
2887   0
2888};
2889
28902884static MACHINE_CONFIG_START( realpunc, taitob_state )
28912885
28922886   /* basic machine hardware */
r29542r29543
29212915
29222916   MCFG_VIDEO_START_OVERRIDE(taitob_state,realpunc)
29232917
2924   MCFG_HD63484_ADD("hd63484", realpunc_hd63484_intf)
2918   // TODO: convert to use H63484 and hook it up properly
2919   MCFG_DEVICE_ADD("hd63484", HD63484, 0)
29252920
29262921   MCFG_DEVICE_ADD("tc0180vcu", TC0180VCU, 0)
29272922   MCFG_TC0180VCU_BG_COLORBASE(0xc0)
branches/new_menus/src/mame/drivers/chsuper.c
r29542r29543
195195   AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb666_w)
196196ADDRESS_MAP_END
197197
198static RAMDAC_INTERFACE( ramdac_intf )
199{
200   0
201};
202
203198static MACHINE_CONFIG_START( chsuper, chsuper_state )
204199
205200   /* basic machine hardware */
r29542r29543
222217   MCFG_GFXDECODE_ADD("gfxdecode", "palette", chsuper)
223218   MCFG_PALETTE_ADD("palette", 0x100)
224219
225   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
220   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
226221
227222   /* sound hardware */
228223   MCFG_SPEAKER_STANDARD_MONO("mono")
branches/new_menus/src/mame/drivers/shanghai.c
r29542r29543
435435   DEVCB_NULL, DEVCB_NULL, DEVCB_NULL
436436};
437437
438static const hd63484_interface shanghai_hd63484_intf = { 0 };
439
440438static MACHINE_CONFIG_START( shanghai, shanghai_state )
441439
442440   /* basic machine hardware */
r29542r29543
457455   MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
458456   MCFG_PALETTE_INIT_OWNER(shanghai_state,shanghai)
459457
460   MCFG_HD63484_ADD("hd63484", shanghai_hd63484_intf)
458   // TODO: convert to use H63484
459   MCFG_DEVICE_ADD("hd63484", HD63484, 0)
461460
462461   /* sound hardware */
463462   MCFG_SPEAKER_STANDARD_MONO("mono")
r29542r29543
490489   MCFG_PALETTE_ADD("palette", 256)
491490   MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
492491
493   MCFG_HD63484_ADD("hd63484", shanghai_hd63484_intf)
492   // TODO: convert to use H63484
493   MCFG_DEVICE_ADD("hd63484", HD63484, 0)
494494
495495   /* sound hardware */
496496   MCFG_SPEAKER_STANDARD_MONO("mono")
r29542r29543
526526   MCFG_PALETTE_ADD("palette", 256)
527527   MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR)
528528
529   MCFG_HD63484_ADD("hd63484", shanghai_hd63484_intf)
529   // TODO: convert to use H63484
530   MCFG_DEVICE_ADD("hd63484", HD63484, 0)
530531
531532   /* sound hardware */
532533   MCFG_SPEAKER_STANDARD_MONO("mono")
branches/new_menus/src/mame/drivers/namcos12.c
r29542r29543
10771077
10781078   int m_ttt_cnt;
10791079   UINT32 m_ttt_val[2];
1080   int m_s12_porta;
1081   int m_s12_lastpB;
1080   UINT8 m_sub_porta;
1081   UINT8 m_sub_portb;
10821082
10831083   DECLARE_WRITE16_MEMBER(sharedram_w);
10841084   DECLARE_READ16_MEMBER(sharedram_r);
r29542r29543
12351235{
12361236   m_sub->set_input_line(1, vblank_state ? ASSERT_LINE : CLEAR_LINE);
12371237   m_adc->adtrg_w(vblank_state);
1238   m_s12_lastpB = (m_s12_lastpB & 0x7f) | (vblank_state << 7);
1238   m_sub_portb = (m_sub_portb & 0x7f) | (vblank_state << 7);
12391239}
12401240
12411241static ADDRESS_MAP_START( namcos12_map, AS_PROGRAM, 32, namcos12_state )
r29542r29543
14731473
14741474READ16_MEMBER(namcos12_state::s12_mcu_pa_r)
14751475{
1476   return m_s12_porta;
1476   return m_sub_porta;
14771477}
14781478
14791479WRITE16_MEMBER(namcos12_state::s12_mcu_pa_w)
14801480{
14811481   logerror("pa_w %02x\n", data);
1482   m_s12_porta = data;
1483   m_rtc->ce_w((m_s12_lastpB & 0x20) && (m_s12_porta & 1));
1484   m_settings->ce_w((m_s12_lastpB & 0x20) && !(m_s12_porta & 1));
1482   m_sub_porta = data;
1483   m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
1484   m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
14851485}
14861486
14871487READ16_MEMBER(namcos12_state::s12_mcu_portB_r)
14881488{
1489   return m_s12_lastpB;
1489   return m_sub_portb;
14901490}
14911491
14921492WRITE16_MEMBER(namcos12_state::s12_mcu_portB_w)
14931493{
1494   m_s12_lastpB = data;
1495   m_rtc->ce_w((m_s12_lastpB & 0x20) && (m_s12_porta & 1));
1496   m_settings->ce_w((m_s12_lastpB & 0x20) && !(m_s12_porta & 1));
1494   m_sub_portb = (m_sub_portb & 0x80) | (data & 0x7f);
1495   m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
1496   m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
14971497}
14981498
14991499static ADDRESS_MAP_START( s12h8iomap, AS_IO, 16, namcos12_state )
15001500   AM_RANGE(h8_device::PORT_7, h8_device::PORT_7) AM_READ_PORT("DSW")
1501   AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_p8_r ) AM_WRITENOP
1502   AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w )
1503   AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w )
1501   AM_RANGE(h8_device::PORT_8, h8_device::PORT_8) AM_READ(s12_mcu_p8_r) AM_WRITENOP
1502   AM_RANGE(h8_device::PORT_A, h8_device::PORT_A) AM_READWRITE(s12_mcu_pa_r, s12_mcu_pa_w)
1503   AM_RANGE(h8_device::PORT_B, h8_device::PORT_B) AM_READWRITE(s12_mcu_portB_r, s12_mcu_portB_w)
15041504   AM_RANGE(h8_device::ADC_0, h8_device::ADC_0) AM_NOP
15051505   AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_NOP
15061506   AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_NOP
r29542r29543
15081508ADDRESS_MAP_END
15091509
15101510
1511/* Golgo 13 lightgun inputs
1512 *
1513 * Note: The H8/3002's ADC is 10 bits wide, but
1514 * it expects the 10-bit value to be left-justified
1515 * within the 16-bit word.
1516 */
1511// Golgo 13 lightgun inputs
15171512
15181513READ16_MEMBER(namcos12_state::s12_mcu_gun_h_r)
15191514{
1520   return ioport("LIGHT0_X")->read() << 2;
1515   return ioport("LIGHT0_X")->read();
15211516}
15221517
15231518READ16_MEMBER(namcos12_state::s12_mcu_gun_v_r)
15241519{
1525   return ioport("LIGHT0_Y")->read() << 2;
1520   return ioport("LIGHT0_Y")->read();
15261521}
15271522
15281523static ADDRESS_MAP_START( golgo13_h8iomap, AS_IO, 16, namcos12_state )
1529   AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(s12_mcu_gun_h_r )
1530   AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(s12_mcu_gun_v_r )
1524   AM_RANGE(h8_device::ADC_1, h8_device::ADC_1) AM_READ(s12_mcu_gun_h_r)
1525   AM_RANGE(h8_device::ADC_2, h8_device::ADC_2) AM_READ(s12_mcu_gun_v_r)
15311526
15321527   AM_IMPORT_FROM( s12h8iomap )
15331528ADDRESS_MAP_END
r29542r29543
15371532{
15381533   membank("bank1")->configure_entries(0, memregion( "user2" )->bytes() / 0x200000, memregion( "user2" )->base(), 0x200000 );
15391534
1540   m_s12_porta = 0;
1541   m_s12_lastpB = 0x50;
1535   m_sub_porta = 0;
1536   m_sub_portb = 0x50;
15421537
15431538   m_n_tektagdmaoffset = 0;
15441539   m_n_dmaoffset = 0;
branches/new_menus/src/mame/drivers/sigmab52.c
r29542r29543
585585#endif
586586}
587587
588//static const hd63484_interface jwildb52_hd63484_intf = { 1 };
589
590
591588/*************************
592589*    Machine Drivers     *
593590*************************/
branches/new_menus/src/mame/drivers/maygayv1.c
r29542r29543
535535   return ioport(portnames[m_lamp_strobe&0x07])->read();
536536}
537537
538/*
539static I8279_INTERFACE( v1_i8279_intf )
540{
541   DEVCB_NULL,                                     // irq
542   DEVCB_DRIVER_MEMBER(maygayv1_state, strobe_w),  // scan SL lines
543   DEVCB_DRIVER_MEMBER(maygayv1_state, lamp_data_w),      // display A&B
544   DEVCB_NULL,                                     // BD
545   DEVCB_DRIVER_MEMBER(maygayv1_state,kbd_r),      // kbd RL lines
546   DEVCB_NULL,                                     // Shift key
547   DEVCB_NULL                                      // Ctrl-Strobe line
548};
549*/
550
551
552538WRITE16_MEMBER(maygayv1_state::vsync_int_ctrl)
553539{
554540   m_vsync_latch_preset = data & 0x0100;
r29542r29543
911897   MCFG_MC68681_A_TX_CALLBACK(WRITELINE(maygayv1_state, duart_txa))
912898
913899   MCFG_DEVICE_ADD("i8279", I8279, MASTER_CLOCK/4)    // unknown clock
914//   MCFG_I8279_ADD("i8279", MASTER_CLOCK/4, v1_i8279_intf)    // unknown clock
915
900   MCFG_I8279_OUT_SL_CB(WRITE8(maygayv1_state, strobe_w))      // scan SL lines
901   MCFG_I8279_OUT_DISP_CB(WRITE8(maygayv1_state, lamp_data_w))   // display A&B
902   MCFG_I8279_IN_RL_CB(READ8(maygayv1_state, kbd_r))               // kbd RL lines
903   
916904   MCFG_SPEAKER_STANDARD_MONO("mono")
917905
918906   MCFG_SOUND_ADD("ymsnd",YM2413, MASTER_CLOCK / 4)
branches/new_menus/src/mame/drivers/namcos23.c
r29542r29543
14471447   UINT16 m_c435_buffer[256];
14481448   int m_c435_buffer_pos;
14491449
1450   int m_porta;
1451   int m_lastpb;
1450   UINT8 m_sub_porta;
1451   UINT8 m_sub_portb;
14521452   UINT8 m_tssio_port_4;
14531453
14541454   void update_main_interrupts(UINT32 cause);
r29542r29543
15081508   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
15091509   INTERRUPT_GEN_MEMBER(interrupt);
15101510   TIMER_CALLBACK_MEMBER(c361_timer_cb);
1511   void sub_irq(screen_device &screen, bool state);
1511   void sub_irq(screen_device &screen, bool vblank_state);
15121512   UINT8 nthbyte(const UINT32 *pSource, int offs);
15131513   UINT16 nthword(const UINT32 *pSource, int offs);
15141514   inline INT32 u32_to_s24(UINT32 v);
r29542r29543
22552255   m_render.count[m_render.cur] = 0;
22562256}
22572257
2258void namcos23_state::sub_irq(screen_device &screen, bool state)
2258void namcos23_state::sub_irq(screen_device &screen, bool vblank_state)
22592259{
2260   m_subcpu->set_input_line(1, state ? ASSERT_LINE : CLEAR_LINE);
2261   m_adc->adtrg_w(state);
2262   m_lastpb = (m_lastpb & 0x7f) | (state << 7);
2260   m_subcpu->set_input_line(1, vblank_state ? ASSERT_LINE : CLEAR_LINE);
2261   m_adc->adtrg_w(vblank_state);
2262   m_sub_portb = (m_sub_portb & 0x7f) | (vblank_state << 7);
22632263}
22642264
22652265
r29542r29543
28612861
28622862READ16_MEMBER(namcos23_state::mcu_pa_r)
28632863{
2864   return m_porta;
2864   return m_sub_porta;
28652865}
28662866
28672867WRITE16_MEMBER(namcos23_state::mcu_pa_w)
28682868{
28692869   m_rtc->ce_w(data & 1);
2870   m_porta = data;
2871   m_rtc->ce_w((m_lastpb & 0x20) && (m_porta & 1));
2872   m_settings->ce_w((m_lastpb & 0x20) && !(m_porta & 1));
2870   m_sub_porta = data;
2871   m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
2872   m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
28732873}
28742874
28752875
r29542r29543
28782878
28792879READ16_MEMBER(namcos23_state::mcu_pb_r)
28802880{
2881   return m_lastpb;
2881   return m_sub_portb;
28822882}
28832883
28842884WRITE16_MEMBER(namcos23_state::mcu_pb_w)
28852885{
2886   m_lastpb = data;
2887   m_rtc->ce_w((m_lastpb & 0x20) && (m_porta & 1));
2888   m_settings->ce_w((m_lastpb & 0x20) && !(m_porta & 1));
2886   m_sub_portb = (m_sub_portb & 0x80) | (data & 0x7f);
2887   m_rtc->ce_w((m_sub_portb & 0x20) && (m_sub_porta & 1));
2888   m_settings->ce_w((m_sub_portb & 0x20) && !(m_sub_porta & 1));
28892889}
28902890
28912891
r29542r29543
32563256   m_jvssense = 1;
32573257   m_main_irqcause = 0;
32583258   m_ctl_vbl_active = false;
3259   m_lastpb = 0x50;
3259   m_sub_portb = 0x50;
32603260   m_tssio_port_4 = 0;
3261   m_porta = 0;
3261   m_sub_porta = 0;
32623262   m_subcpu_running = false;
32633263   m_render.count[0] = m_render.count[1] = 0;
32643264   m_render.cur = 0;
branches/new_menus/src/mame/audio/taitosnd.h
r29542r29543
1717//  TYPE DEFINITIONS
1818//**************************************************************************
1919
20struct tc0140syt_interface
21{
22   const char         *master;
23   const char         *slave;
24};
25
26
2720// ======================> tc0140syt_device
2821
2922class tc0140syt_device : public device_t
branches/new_menus/src/mame/machine/inder_vid.c
r29542r29543
109109   AM_RANGE(0x000, 0x3ff) AM_DEVREADWRITE("ramdac",ramdac_device,ramdac_pal_r,ramdac_rgb888_w)
110110ADDRESS_MAP_END
111111
112static RAMDAC_INTERFACE( ramdac_intf )
113{
114   1
115};
116
117112static MACHINE_CONFIG_FRAGMENT( inder_vid )
118113   MCFG_CPU_ADD("tms", TMS34010, XTAL_40MHz)
119114   MCFG_CPU_CONFIG(tms_config_megaphx)
r29542r29543
126121
127122   MCFG_PALETTE_ADD("palette", 256)
128123
129   MCFG_RAMDAC_ADD("ramdac", ramdac_intf, ramdac_map, "palette")
124   MCFG_RAMDAC_ADD("ramdac", ramdac_map, "palette")
125   MCFG_RAMDAC_SPLIT_READ(1)
130126
131
132127MACHINE_CONFIG_END
133128
134129machine_config_constructor inder_vid_device::device_mconfig_additions() const
branches/new_menus/src/mame/video/namcona1.c
r29542r29543
1616   const UINT16 *tilemap_videoram,
1717   bool use_4bpp_gfx )
1818{
19   UINT16 *source;
19   //UINT16 *source;
2020
2121   int data = tilemap_videoram[tile_index];
2222   int tile = data&0xfff;
branches/new_menus/src/emu/bus/ecbbus/grip.c
r29542r29543
521521   }
522522}
523523
524static ASCII_KEYBOARD_INTERFACE( kb_intf )
525{
526   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, grip_device, kb_w)
527};
528
529
530
531524//**************************************************************************
532525//  MACHINE CONFIGURATION
533526//**************************************************************************
r29542r29543
571564
572565   MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
573566
574   MCFG_ASCII_KEYBOARD_ADD("keyboard", kb_intf)
567   MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
568   MCFG_GENERIC_KEYBOARD_CB(WRITE8(grip_device, kb_w))
575569MACHINE_CONFIG_END
576570
577571
branches/new_menus/src/emu/bus/snes/event.c
r29542r29543
3232
3333void sns_pfest94_device::device_start()
3434{
35   m_dsp_prg = auto_alloc_array(machine(), UINT32, 0x2000/4);
36   m_dsp_data = auto_alloc_array(machine(), UINT16, 0x800/2);
35   m_dsp_prg.resize(0x2000/sizeof(UINT32));
36   m_dsp_data.resize(0x800/sizeof(UINT16));
3737   pfest94_timer = timer_alloc(TIMER_EVENT);
3838   pfest94_timer->reset();
3939
branches/new_menus/src/emu/bus/snes/event.h
r29542r29543
4141   UINT8 m_status;
4242   UINT32 m_count;
4343
44   UINT32 *m_dsp_prg;
45   UINT16 *m_dsp_data;
44   dynamic_array<UINT32> m_dsp_prg;
45   dynamic_array<UINT16> m_dsp_data;
4646
4747   static const device_timer_id TIMER_EVENT = 0;
4848   emu_timer *pfest94_timer;
branches/new_menus/src/emu/bus/snes/upd.c
r29542r29543
7676
7777void sns_rom20_necdsp_device::device_start()
7878{
79   m_dsp_prg = auto_alloc_array(machine(), UINT32, 0x2000/4);
80   m_dsp_data = auto_alloc_array(machine(), UINT16, 0x800/2);
79   m_dsp_prg.resize(0x2000/sizeof(UINT32));
80   m_dsp_data.resize(0x800/sizeof(UINT16));
8181}
8282
8383void sns_rom21_necdsp_device::device_start()
8484{
85   m_dsp_prg = auto_alloc_array(machine(), UINT32, 0x2000/4);
86   m_dsp_data = auto_alloc_array(machine(), UINT16, 0x800/2);
85   m_dsp_prg.resize(0x2000/sizeof(UINT32));
86   m_dsp_data.resize(0x800/sizeof(UINT16));
8787}
8888
8989void sns_rom_setadsp_device::device_start()
9090{
91   m_dsp_prg = auto_alloc_array(machine(), UINT32, 0x10000/4);
92   m_dsp_data = auto_alloc_array(machine(), UINT16, 0x1000/2);
91   m_dsp_prg.resize(0x10000/sizeof(UINT32));
92   m_dsp_data.resize(0x1000/sizeof(UINT16));
9393}
9494
9595/*-------------------------------------------------
branches/new_menus/src/emu/bus/snes/upd.h
r29542r29543
2929   virtual DECLARE_READ32_MEMBER(necdsp_prg_r);
3030   virtual DECLARE_READ16_MEMBER(necdsp_data_r);
3131
32   UINT32 *m_dsp_prg;
33   UINT16 *m_dsp_data;
32   dynamic_array<UINT32> m_dsp_prg;
33   dynamic_array<UINT16> m_dsp_data;
3434};
3535
3636// ======================> sns_rom21_necdsp_device
r29542r29543
5656   virtual DECLARE_READ32_MEMBER(necdsp_prg_r);
5757   virtual DECLARE_READ16_MEMBER(necdsp_data_r);
5858
59   UINT32 *m_dsp_prg;
60   UINT16 *m_dsp_data;
59   dynamic_array<UINT32> m_dsp_prg;
60   dynamic_array<UINT16> m_dsp_data;
6161};
6262
6363// ======================> sns_rom_setadsp_device
r29542r29543
8181   virtual DECLARE_READ32_MEMBER(setadsp_prg_r);
8282   virtual DECLARE_READ16_MEMBER(setadsp_data_r);
8383
84   UINT32 *m_dsp_prg;
85   UINT16 *m_dsp_data;
84   dynamic_array<UINT32> m_dsp_prg;
85   dynamic_array<UINT16> m_dsp_data;
8686};
8787
8888// ======================> sns_rom_seta10dsp_device
branches/new_menus/src/emu/bus/isa/wdxt_gen.c
r29542r29543
140140   m_ram[offset] = data;
141141}
142142
143static WD11C00_17_INTERFACE( host_intf )
144{
145   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, irq5_w),
146   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, drq3_w),
147   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, mr_w),
148   DEVCB_NULL,
149   DEVCB_NULL,
150   DEVCB_CPU_INPUT_LINE(WD1015_TAG, MCS48_INPUT_IRQ),
151   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, rd322_r),
152   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, ram_r),
153   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, wdxt_gen_device, ram_w),
154   DEVCB_DEVICE_MEMBER(WD2010A_TAG, wd2010_device, read),
155   DEVCB_DEVICE_MEMBER(WD2010A_TAG, wd2010_device, write)
156};
157
158
159143//-------------------------------------------------
160144//  MACHINE_DRIVER( wdxt_gen )
161145//-------------------------------------------------
r29542r29543
164148   MCFG_CPU_ADD(WD1015_TAG, I8049, 5000000)
165149   MCFG_CPU_IO_MAP(wd1015_io)
166150
167   MCFG_WD11C00_17_ADD(WD11C00_17_TAG, 5000000, host_intf)
151   MCFG_DEVICE_ADD(WD11C00_17_TAG, WD11C00_17, 5000000)
152   MCFG_WD11C00_17_OUT_IRQ5_CB(WRITELINE(wdxt_gen_device, irq5_w))
153   MCFG_WD11C00_17_OUT_DRQ3_CB(WRITELINE(wdxt_gen_device, drq3_w))
154   MCFG_WD11C00_17_OUT_MR_CB(WRITELINE(wdxt_gen_device, mr_w))
155   MCFG_WD11C00_17_OUT_RA3_CB(INPUTLINE(WD1015_TAG, MCS48_INPUT_IRQ))
156   MCFG_WD11C00_17_IN_RD322_CB(READ8(wdxt_gen_device, rd322_r))
157   MCFG_WD11C00_17_IN_RAMCS_CB(READ8(wdxt_gen_device, ram_r))
158   MCFG_WD11C00_17_OUT_RAMWR_CB(WRITE8(wdxt_gen_device, ram_w))
159   MCFG_WD11C00_17_IN_CS1010_CB(DEVREAD8(WD2010A_TAG, wd2010_device, read))
160   MCFG_WD11C00_17_OUT_CS1010_CB(DEVWRITE8(WD2010A_TAG, wd2010_device, write))
168161   MCFG_DEVICE_ADD(WD2010A_TAG, WD2010, 5000000)
169162   MCFG_WD2010_OUT_BCR_CB(DEVWRITELINE(WD11C00_17_TAG, wd11c00_17_device, clct_w))
170163   MCFG_WD2010_IN_BCS_CB(DEVREAD8(WD11C00_17_TAG, wd11c00_17_device, read))
branches/new_menus/src/emu/bus/isa/ne2000.c
r29542r29543
11#include "emu.h"
22#include "ne2000.h"
33
4static const dp8390_interface ne2000_dp8390_interface = {
5   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ne2000_device, ne2000_irq_w),
6   DEVCB_NULL,
7   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ne2000_device, ne2000_mem_read),
8   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ne2000_device, ne2000_mem_write)
9};
104
115static MACHINE_CONFIG_FRAGMENT(ne2000_config)
12   MCFG_DP8390D_ADD("dp8390d", ne2000_dp8390_interface)
6   MCFG_DEVICE_ADD("dp8390d", DP8390D, 0)
7   MCFG_DP8390D_IRQ_CB(WRITELINE(ne2000_device, ne2000_irq_w))
8   MCFG_DP8390D_MEM_READ_CB(READ8(ne2000_device, ne2000_mem_read))
9   MCFG_DP8390D_MEM_WRITE_CB(WRITE8(ne2000_device, ne2000_mem_write))
1310MACHINE_CONFIG_END
1411
1512const device_type NE2000 = &device_creator<ne2000_device>;
branches/new_menus/src/emu/bus/isa/3c503.c
r29542r29543
33
44#define SADDR 0xcc000
55
6static const dp8390_interface el2_3c503_dp8390_interface = {
7   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, el2_3c503_device, el2_3c503_irq_w),
8   DEVCB_NULL,
9   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, el2_3c503_device, el2_3c503_mem_read),
10   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, el2_3c503_device, el2_3c503_mem_write)
11};
12
136static MACHINE_CONFIG_FRAGMENT(el2_3c503_config)
14   MCFG_DP8390D_ADD("dp8390d", el2_3c503_dp8390_interface)
7   MCFG_DEVICE_ADD("dp8390d", DP8390D, 0)
8   MCFG_DP8390D_IRQ_CB(WRITELINE(el2_3c503_device, el2_3c503_irq_w))
9   MCFG_DP8390D_MEM_READ_CB(READ8(el2_3c503_device, el2_3c503_mem_read))
10   MCFG_DP8390D_MEM_WRITE_CB(WRITE8(el2_3c503_device, el2_3c503_mem_write))
1511MACHINE_CONFIG_END
1612
1713const device_type EL2_3C503 = &device_creator<el2_3c503_device>;
branches/new_menus/src/emu/bus/isa/gus.c
r29542r29543
8585         {
8686            if(data & 0x80)
8787            {
88               m_timer1_irq_func(0);
89               m_timer2_irq_func(0);
88               m_timer1_irq_handler(0);
89               m_timer2_irq_handler(0);
9090               m_adlib_status &= ~0xe0;
9191               logerror("GUS: Timer flags reset\n");
9292            }
r29542r29543
122122            if(m_timer_ctrl & 0x02)
123123            {
124124               m_adlib_status |= 0x01;
125               m_nmi_func(1);
125               m_nmi_handler(1);
126126               logerror("GUS: 2X9 Timer triggered!\n");
127127            }
128128         }
r29542r29543
209209            m_adlib_status |= 0xc0;
210210            m_timer1_count = m_timer1_value;
211211            if(m_timer_ctrl & 0x04)
212               m_timer1_irq_func(1);
212               m_timer1_irq_handler(1);
213213         }
214214         m_timer1_count++;
215215      }
r29542r29543
222222            m_adlib_status |= 0xa0;
223223            m_timer2_count = m_timer2_value;
224224            if(m_timer_ctrl & 0x08)
225               m_timer2_irq_func(1);
225               m_timer2_irq_handler(1);
226226         }
227227         m_timer2_count++;
228228      }
229229      break;
230230   case DMA_TIMER:
231      m_drq1(1);
231      m_drq1_handler(1);
232232      break;
233233   case VOL_RAMP_TIMER:
234234      update_volume_ramps();
r29542r29543
352352   acia6850_device(mconfig, GGF1, "Gravis GF1", tag, owner, clock, "gf1", __FILE__),
353353   device_sound_interface( mconfig, *this ),
354354   m_txirq_handler(*this),
355   m_rxirq_handler(*this)
355   m_rxirq_handler(*this),
356   m_wave_irq_handler(*this),
357   m_ramp_irq_handler(*this),
358   m_timer1_irq_handler(*this),
359   m_timer2_irq_handler(*this),
360   m_sb_irq_handler(*this),
361   m_dma_irq_handler(*this),
362   m_drq1_handler(*this),
363   m_drq2_handler(*this),
364   m_nmi_handler(*this)
356365{
357366}
358367
359void gf1_device::device_config_complete()
360{
361   // inherit a copy of the static data
362   const gf1_interface *intf = reinterpret_cast<const gf1_interface *>(static_config());
363   if (intf != NULL)
364      *static_cast<gf1_interface *>(this) = *intf;
365
366   // or initialize to defaults if none provided
367   else
368   {
369      memset(&wave_irq_cb, 0, sizeof(wave_irq_cb));
370      memset(&ramp_irq_cb, 0, sizeof(ramp_irq_cb));
371      memset(&timer1_irq_cb, 0, sizeof(timer1_irq_cb));
372      memset(&timer2_irq_cb, 0, sizeof(timer2_irq_cb));
373      memset(&sb_irq_cb, 0, sizeof(sb_irq_cb));
374      memset(&dma_irq_cb, 0, sizeof(dma_irq_cb));
375      memset(&drq1_cb, 0, sizeof(drq1_cb));
376      memset(&drq2_cb, 0, sizeof(drq2_cb));
377      memset(&nmi_cb, 0, sizeof(nmi_cb));
378   }
379}
380
381368//-------------------------------------------------
382369//  device_start - device-specific startup
383370//-------------------------------------------------
r29542r29543
391378
392379   m_txirq_handler.resolve_safe();
393380   m_rxirq_handler.resolve_safe();
381   m_wave_irq_handler.resolve_safe();
382   m_ramp_irq_handler.resolve_safe();
383   m_timer1_irq_handler.resolve_safe();
384   m_timer2_irq_handler.resolve_safe();
385   m_sb_irq_handler.resolve_safe();
386   m_dma_irq_handler.resolve_safe();
387   m_drq1_handler.resolve_safe();
388   m_drq2_handler.resolve_safe();
389   m_nmi_handler.resolve_safe();
394390
395391   // TODO: make DRAM size configurable.  Can be 256k, 512k, 768k, or 1024k
396392   m_wave_ram.resize_and_clear(1024*1024);
r29542r29543
405401
406402   save_item(NAME(m_wave_ram));
407403
408   m_wave_irq_func.resolve(wave_irq_cb, *this);
409   m_ramp_irq_func.resolve(ramp_irq_cb, *this);
410   m_timer1_irq_func.resolve(timer1_irq_cb, *this);
411   m_timer2_irq_func.resolve(timer2_irq_cb, *this);
412   m_sb_irq_func.resolve(sb_irq_cb, *this);
413   m_dma_irq_func.resolve(dma_irq_cb, *this);
414   m_drq1.resolve(drq1_cb,*this);
415   m_drq2.resolve(drq2_cb,*this);
416   m_nmi_func.resolve(nmi_cb, *this);
417
418404   m_voice_irq_current = 0;
419405   m_voice_irq_ptr = 0;
420406   m_dma_channel1 = 0;
r29542r29543
499485      {
500486         ret = m_dma_dram_ctrl;
501487         m_dma_dram_ctrl &= ~0x40;
502         m_dma_irq_func(0);
488         m_dma_irq_handler(0);
503489         return ret;
504490      }
505491   case 0x45:  // Timer control
r29542r29543
595581            m_voice_irq_current++;
596582         else
597583            ret = 0xe0;
598         m_wave_irq_func(0);
599         m_ramp_irq_func(0);
584         m_wave_irq_handler(0);
585         m_ramp_irq_handler(0);
600586         return ret;
601587      }
602588      break;
r29542r29543
799785         if(!(data & 0x02))
800786            m_adlib_status &= ~0x01;
801787         if(!(m_adlib_status & 0x19))
802            m_sb_irq_func(0);
788            m_sb_irq_handler(0);
803789         if(!(data & 0x04))
804790         {
805791            m_adlib_status &= ~0x40;
806            m_timer1_irq_func(0);
792            m_timer1_irq_handler(0);
807793         }
808794         if(!(data & 0x08))
809795         {
810796            m_adlib_status &= ~0x20;
811            m_timer2_irq_func(0);
797            m_timer2_irq_handler(0);
812798         }
813799         if((m_adlib_status & 0x60) != 0)
814800            m_adlib_status &= ~0x80;
r29542r29543
10441030         break;
10451031      case 0x05:
10461032         m_statread = 0;
1047         //m_other_irq_func(0);
1033         //m_other_irq_handler(0);
10481034         break;
10491035      case 0x06:
10501036         // TODO: Jumper register (joy/MIDI enable)
r29542r29543
10931079      if(m_reg_ctrl & 0x80)
10941080      {
10951081         m_statread |= 0x80;
1096         m_nmi_func(1);
1082         m_nmi_handler(1);
10971083      }
10981084      return m_sb_data_2xe;
10991085   }
r29542r29543
11081094      if(m_timer_ctrl & 0x20)
11091095      {
11101096         m_adlib_status |= 0x10;
1111         m_nmi_func(1);
1097         m_nmi_handler(1);
11121098         logerror("GUS: SB 0x2XC IRQ active\n");
11131099      }
11141100      break;
r29542r29543
11281114      if(m_timer_ctrl & 0x20)
11291115      {
11301116         m_adlib_status |= 0x08;
1131         m_nmi_func(1);
1117         m_nmi_handler(1);
11321118         logerror("GUS: SB 0x2X6 IRQ active\n");
11331119      }
11341120   }
r29542r29543
11531139   {
11541140      m_irq_source = 0xe0 | (voice & 0x1f);
11551141      m_irq_source &= ~0x80;
1156      m_wave_irq_func(1);
1142      m_wave_irq_handler(1);
11571143      m_voice_irq_fifo[m_voice_irq_ptr % 32] = m_irq_source;
11581144      m_voice_irq_ptr++;
11591145      m_voice[voice].voice_ctrl |= 0x80;
r29542r29543
11621148   {
11631149      m_irq_source = 0xe0 | (voice & 0x1f);
11641150      m_irq_source &= ~0x40;
1165      m_ramp_irq_func(1);
1151      m_ramp_irq_handler(1);
11661152      m_voice_irq_fifo[m_voice_irq_ptr % 32] = m_irq_source;
11671153      m_voice_irq_ptr++;
11681154   }
r29542r29543
11731159   if(source & IRQ_WAVETABLE)
11741160   {
11751161      m_irq_source |= 0x80;
1176      m_wave_irq_func(0);
1162      m_wave_irq_handler(0);
11771163   }
11781164   if(source & IRQ_VOLUME_RAMP)
11791165   {
11801166      m_irq_source |= 0x40;
1181      m_ramp_irq_func(0);
1167      m_ramp_irq_handler(0);
11821168   }
11831169}
11841170
r29542r29543
12041190   }
12051191   m_wave_ram[m_dma_current & 0xfffff] = data;
12061192   m_dma_current++;
1207   m_drq1(0);
1193   m_drq1_handler(0);
12081194}
12091195
12101196void gf1_device::eop_w(int state)
r29542r29543
12121198   if(state == ASSERT_LINE) {
12131199      // end of transfer
12141200      m_dmatimer->reset();
1215      //m_drq1(0);
1201      //m_drq1_handler(0);
12161202      if(m_dma_dram_ctrl & 0x20)
12171203      {
12181204         m_dma_dram_ctrl |= 0x40;
1219         m_dma_irq_func(1);
1205         m_dma_irq_handler(1);
12201206      }
12211207      logerror("GUS: End of transfer. (%05x)\n",m_dma_current);
12221208   }
r29542r29543
12251211
12261212/* 16-bit ISA card device implementation */
12271213
1228static const gf1_interface gus_gf1_config =
1229{
1230   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,wavetable_irq),
1231   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,volumeramp_irq),
1232   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,timer1_irq),
1233   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,timer2_irq),
1234   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,sb_irq),
1235   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,dma_irq),
1236   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,drq1_w),
1237   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,drq2_w),
1238   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER,isa16_gus_device,nmi_w)
1239};
1240
12411214static MACHINE_CONFIG_FRAGMENT( gus_config )
12421215   MCFG_SPEAKER_STANDARD_STEREO("lspeaker","rspeaker")
12431216   MCFG_SOUND_ADD("gf1",GGF1,GF1_CLOCK)
1244   MCFG_SOUND_CONFIG(gus_gf1_config)
12451217   MCFG_SOUND_ROUTE(0,"lspeaker",0.50)
12461218   MCFG_SOUND_ROUTE(1,"rspeaker",0.50)
12471219
12481220   MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("mdout", midi_port_device, write_txd))
12491221   MCFG_GF1_TXIRQ_HANDLER(WRITELINE(isa16_gus_device, midi_txirq))
12501222   MCFG_GF1_RXIRQ_HANDLER(WRITELINE(isa16_gus_device, midi_txirq))
1223   MCFG_GF1_WAVE_IRQ_HANDLER(WRITELINE(isa16_gus_device, wavetable_irq))
1224   MCFG_GF1_RAMP_IRQ_HANDLER(WRITELINE(isa16_gus_device, volumeramp_irq))
1225   MCFG_GF1_TIMER1_IRQ_HANDLER(WRITELINE(isa16_gus_device, timer1_irq))
1226   MCFG_GF1_TIMER2_IRQ_HANDLER(WRITELINE(isa16_gus_device, timer2_irq))
1227   MCFG_GF1_SB_IRQ_HANDLER(WRITELINE(isa16_gus_device, sb_irq))
1228   MCFG_GF1_DMA_IRQ_HANDLER(WRITELINE(isa16_gus_device, dma_irq))
1229   MCFG_GF1_DRQ1_HANDLER(WRITELINE(isa16_gus_device, drq1_w))
1230   MCFG_GF1_DRQ2_HANDLER(WRITELINE(isa16_gus_device, drq2_w))
1231   MCFG_GF1_NMI_HANDLER(WRITELINE(isa16_gus_device, nmi_w))
12511232
12521233   MCFG_MIDI_PORT_ADD("mdin", midiin_slot, "midiin")
12531234   MCFG_MIDI_RX_HANDLER(DEVWRITELINE("gf1", acia6850_device, write_rxd))
branches/new_menus/src/emu/bus/isa/gus.h
r29542r29543
5050#define MCFG_GF1_RXIRQ_HANDLER(_devcb) \
5151   devcb = &gf1_device::set_rxirq_handler(*device, DEVCB2_##_devcb);
5252
53#define MCFG_GF1_WAVE_IRQ_HANDLER(_devcb) \
54   devcb = &gf1_device::set_wave_irq_handler(*device, DEVCB2_##_devcb);
55
56#define MCFG_GF1_RAMP_IRQ_HANDLER(_devcb) \
57   devcb = &gf1_device::set_ramp_irq_handler(*device, DEVCB2_##_devcb);
58
59#define MCFG_GF1_TIMER1_IRQ_HANDLER(_devcb) \
60   devcb = &gf1_device::set_timer1_irq_handler(*device, DEVCB2_##_devcb);
61
62#define MCFG_GF1_TIMER2_IRQ_HANDLER(_devcb) \
63   devcb = &gf1_device::set_timer2_irq_handler(*device, DEVCB2_##_devcb);
64   
65#define MCFG_GF1_SB_IRQ_HANDLER(_devcb) \
66   devcb = &gf1_device::set_sb_irq_handler(*device, DEVCB2_##_devcb);
67
68#define MCFG_GF1_DMA_IRQ_HANDLER(_devcb) \
69   devcb = &gf1_device::set_dma_irq_handler(*device, DEVCB2_##_devcb);
70   
71#define MCFG_GF1_DRQ1_HANDLER(_devcb) \
72   devcb = &gf1_device::set_drq1_handler(*device, DEVCB2_##_devcb);
73   
74#define MCFG_GF1_DRQ2_HANDLER(_devcb) \
75   devcb = &gf1_device::set_drq2_handler(*device, DEVCB2_##_devcb);
76   
77#define MCFG_GF1_NMI_HANDLER(_devcb) \
78   devcb = &gf1_device::set_nmi_handler(*device, DEVCB2_##_devcb);
79   
5380//**************************************************************************
5481//  TYPE DEFINITIONS
5582//**************************************************************************
r29542r29543
86113   INT16 sample;  // current sample data
87114};
88115
89struct gf1_interface
90{
91   devcb_write_line wave_irq_cb;
92   devcb_write_line ramp_irq_cb;
93   devcb_write_line timer1_irq_cb;
94   devcb_write_line timer2_irq_cb;
95   devcb_write_line sb_irq_cb;
96   devcb_write_line dma_irq_cb;
97   devcb_write_line drq1_cb;
98   devcb_write_line drq2_cb;
99   devcb_write_line nmi_cb;
100};
101
102116class gf1_device :
103117   public acia6850_device,
104   public device_sound_interface,
105   public gf1_interface
118   public device_sound_interface
106119{
107120public:
108121   // construction/destruction
r29542r29543
110123
111124   template<class _Object> static devcb2_base &set_txirq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_txirq_handler.set_callback(object); }
112125   template<class _Object> static devcb2_base &set_rxirq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_rxirq_handler.set_callback(object); }
126   template<class _Object> static devcb2_base &set_wave_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_wave_irq_handler.set_callback(object); }
127   template<class _Object> static devcb2_base &set_ramp_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_ramp_irq_handler.set_callback(object); }
128   template<class _Object> static devcb2_base &set_timer1_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_timer1_irq_handler.set_callback(object); }
129   template<class _Object> static devcb2_base &set_timer2_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_timer2_irq_handler.set_callback(object); }
130   template<class _Object> static devcb2_base &set_sb_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_sb_irq_handler.set_callback(object); }
131   template<class _Object> static devcb2_base &set_dma_irq_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_dma_irq_handler.set_callback(object); }
132   template<class _Object> static devcb2_base &set_drq1_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_drq1_handler.set_callback(object); }
133   template<class _Object> static devcb2_base &set_drq2_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_drq2_handler.set_callback(object); }
134   template<class _Object> static devcb2_base &set_nmi_handler(device_t &device, _Object object) { return downcast<gf1_device &>(device).m_nmi_handler.set_callback(object); }
113135
114136   // current IRQ/DMA channel getters
115137   UINT8 gf1_irq() { if(m_gf1_irq != 0) return m_gf1_irq; else return m_midi_irq; }  // workaround for win95 loading dumb values
r29542r29543
143165   // optional information overrides
144166   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
145167   virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
146   virtual void device_config_complete();
147168
148169   // voice-specific registers
149170   gus_voice m_voice[32];
r29542r29543
178199
179200   virtual void update_irq();
180201
181   devcb_resolved_write_line m_wave_irq_func;
182   devcb_resolved_write_line m_ramp_irq_func;
183   devcb_resolved_write_line m_timer1_irq_func;
184   devcb_resolved_write_line m_timer2_irq_func;
185   devcb_resolved_write_line m_sb_irq_func;
186   devcb_resolved_write_line m_dma_irq_func;
187   devcb_resolved_write_line m_drq1;
188   devcb_resolved_write_line m_drq2;
189   devcb_resolved_write_line m_nmi_func;
190
191202private:
192203   // internal state
193204   sound_stream* m_stream;
r29542r29543
238249
239250   devcb2_write_line m_txirq_handler;
240251   devcb2_write_line m_rxirq_handler;
252   devcb2_write_line m_wave_irq_handler;
253   devcb2_write_line m_ramp_irq_handler;
254   devcb2_write_line m_timer1_irq_handler;
255   devcb2_write_line m_timer2_irq_handler;
256   devcb2_write_line m_sb_irq_handler;
257   devcb2_write_line m_dma_irq_handler;
258   devcb2_write_line m_drq1_handler;
259   devcb2_write_line m_drq2_handler;
260   devcb2_write_line m_nmi_handler;
241261};
242262
243263class isa16_gus_device :
branches/new_menus/src/emu/bus/isa/ega.c
r29542r29543
449449#define EGA_SCREEN_NAME "ega_screen"
450450#define EGA_CRTC_NAME   "crtc_ega_ega"
451451
452
453#define EGA_MODE_GRAPHICS 1
454#define EGA_MODE_TEXT     2
455
456
452457/*
453458    Prototypes
454459*/
455static CRTC_EGA_UPDATE_ROW( ega_update_row );
456460
457static CRTC_EGA_INTERFACE( crtc_ega_ega_intf )
458{
459   8,                  /* numbers of pixels per video memory address */
460   NULL,               /* begin_update */
461   ega_update_row,     /* update_row */
462   NULL,               /* end_update */
463   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ega_device, de_changed),       /* on_de_chaged */
464   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ega_device, hsync_changed),    /* on_hsync_changed */
465   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ega_device, vsync_changed),    /* on vsync_changed */
466   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_ega_device, vblank_changed)    /* on_vblank_changed */
467};
468
469
470461MACHINE_CONFIG_FRAGMENT( pcvideo_ega )
471462   MCFG_SCREEN_ADD(EGA_SCREEN_NAME, RASTER)
472463   MCFG_SCREEN_RAW_PARAMS(16257000,912,0,640,262,0,200)
r29542r29543
474465   MCFG_SCREEN_PALETTE("palette")
475466
476467   MCFG_PALETTE_ADD( "palette", 64 )
477   MCFG_CRTC_EGA_ADD(EGA_CRTC_NAME, 16257000/8, crtc_ega_ega_intf)
468
469   MCFG_DEVICE_ADD(EGA_CRTC_NAME, CRTC_EGA, 16257000/8)
478470   MCFG_CRTC_EGA_SET_SCREEN(EGA_SCREEN_NAME)
471   MCFG_CRTC_EGA_HPIXELS_PER_COLUMN(8)
472   MCFG_CRTC_EGA_ROW_UPDATE_CB(isa8_ega_device, ega_update_row)
473   MCFG_CRTC_EGA_RES_OUT_DE_CB(WRITELINE(isa8_ega_device, de_changed))
474   MCFG_CRTC_EGA_RES_OUT_HSYNC_CB(WRITELINE(isa8_ega_device, hsync_changed))
475   MCFG_CRTC_EGA_RES_OUT_VSYNC_CB(WRITELINE(isa8_ega_device, vsync_changed))
476   MCFG_CRTC_EGA_RES_OUT_VBLANK_CB(WRITELINE(isa8_ega_device, vblank_changed))
479477MACHINE_CONFIG_END
480478
481479ROM_START( ega )
r29542r29543
664662
665663   install_banks();
666664
667   m_update_row = NULL;
668665   m_misc_output = 0;
669666   m_attribute.index_write = 1;
670667
r29542r29543
686683   m_attribute.data[14] = 0x3E;
687684   m_attribute.data[15] = 0x3F;
688685
686   m_video_mode = 0;
689687}
690688
691689void isa8_ega_device::install_banks()
r29542r29543
746744   }
747745}
748746
749static CRTC_EGA_UPDATE_ROW( ega_update_row )
747CRTC_EGA_ROW_UPDATE( isa8_ega_device::ega_update_row )
750748{
751   isa8_ega_device *ega = dynamic_cast<isa8_ega_device*>(device->owner());
752   if ( ega->m_update_row )
753   {
754      ega->m_update_row( device, bitmap, cliprect, ma, ra, y, x_count, cursor_x, param );
755   }
749   if (m_video_mode == EGA_MODE_GRAPHICS)
750      pc_ega_graphics(bitmap, cliprect, ma, ra, y, x_count, cursor_x);
751   else if (m_video_mode == EGA_MODE_TEXT)
752      pc_ega_text(bitmap, cliprect, ma, ra, y, x_count, cursor_x);
756753}
757754
758755
r29542r29543
784781}
785782
786783
787static CRTC_EGA_UPDATE_ROW( pc_ega_graphics )
784CRTC_EGA_ROW_UPDATE( isa8_ega_device::pc_ega_graphics )
788785{
789   isa8_ega_device *ega = dynamic_cast<isa8_ega_device*>(device->owner());
790786   UINT16  *p = &bitmap.pix16(y);
791787
792788//  logerror( "pc_ega_graphics: y = %d, x_count = %d, ma = %d, ra = %d\n", y, x_count, ma, ra );
793789
794   if ( ega->m_graphics_controller.data[5] & 0x10 )
790   if ( m_graphics_controller.data[5] & 0x10 )
795791   {
796792      // Odd/Even mode (CGA compatible)
797793
798794      for ( int i = 0; i < x_count; i++ )
799795      {
800796         UINT16 offset = ( ( ma + i ) & 0x1fff ) | ( ( y & 1 ) << 12 );
801         UINT8 data = ega->m_plane[0][offset];
797         UINT8 data = m_plane[0][offset];
802798
803         *p = ega->m_attribute.data[ ( data >> 6 )        ]; p++;
804         *p = ega->m_attribute.data[ ( data >> 4 ) & 0x03 ]; p++;
805         *p = ega->m_attribute.data[ ( data >> 2 ) & 0x03 ]; p++;
806         *p = ega->m_attribute.data[   data        & 0x03 ]; p++;
799         *p = m_attribute.data[ ( data >> 6 )        ]; p++;
800         *p = m_attribute.data[ ( data >> 4 ) & 0x03 ]; p++;
801         *p = m_attribute.data[ ( data >> 2 ) & 0x03 ]; p++;
802         *p = m_attribute.data[   data        & 0x03 ]; p++;
807803
808         data = ega->m_plane[1][offset];
804         data = m_plane[1][offset];
809805
810         *p = ega->m_attribute.data[ ( data >> 6 )        ]; p++;
811         *p = ega->m_attribute.data[ ( data >> 4 ) & 0x03 ]; p++;
812         *p = ega->m_attribute.data[ ( data >> 2 ) & 0x03 ]; p++;
813         *p = ega->m_attribute.data[   data        & 0x03 ]; p++;
806         *p = m_attribute.data[ ( data >> 6 )        ]; p++;
807         *p = m_attribute.data[ ( data >> 4 ) & 0x03 ]; p++;
808         *p = m_attribute.data[ ( data >> 2 ) & 0x03 ]; p++;
809         *p = m_attribute.data[   data        & 0x03 ]; p++;
814810      }
815811   }
816812   else
817813   {
818814      // EGA mode
819815
820      UINT8 mask = ega->m_attribute.data[0x12] & 0x0f;
816      UINT8 mask = m_attribute.data[0x12] & 0x0f;
821817
822818      for ( int i = 0; i < x_count; i++ )
823819      {
824820         UINT16 offset = ma + i;
825         UINT16 data0 = ega->m_plane[0][offset];
826         UINT16 data1 = ega->m_plane[1][offset] << 1;
827         UINT16 data2 = ega->m_plane[2][offset] << 2;
828         UINT16 data3 = ega->m_plane[3][offset] << 3;
821         UINT16 data0 = m_plane[0][offset];
822         UINT16 data1 = m_plane[1][offset] << 1;
823         UINT16 data2 = m_plane[2][offset] << 2;
824         UINT16 data3 = m_plane[3][offset] << 3;
829825
830826         for ( int j = 7; j >= 0; j-- )
831827         {
r29542r29543
833829
834830            col &= mask;
835831
836            p[j] = ega->m_attribute.data[col];
832            p[j] = m_attribute.data[col];
837833
838834            data0 >>= 1;
839835            data1 >>= 1;
r29542r29543
846842}
847843
848844
849static CRTC_EGA_UPDATE_ROW( pc_ega_text )
845CRTC_EGA_ROW_UPDATE( isa8_ega_device::pc_ega_text )
850846{
851   isa8_ega_device *ega = dynamic_cast<isa8_ega_device*>(device->owner());
852847   UINT16  *p = &bitmap.pix16(y);
853848   int i;
854849
r29542r29543
857852   for ( i = 0; i < x_count; i++ )
858853   {
859854      UINT16  offset = ma + i;
860      UINT8   chr = ega->m_plane[0][ offset ];
861      UINT8   attr = ega->m_plane[1][ offset ];
855      UINT8   chr = m_plane[0][ offset ];
856      UINT8   attr = m_plane[1][ offset ];
862857      UINT8   data = 0;
863      UINT16  fg = ega->m_attribute.data[ attr & 0x07 ];
864      UINT16  bg = ega->m_attribute.data[ ( attr >> 4 ) & 0x07 ];
858      UINT16  fg = m_attribute.data[ attr & 0x07 ];
859      UINT16  bg = m_attribute.data[ ( attr >> 4 ) & 0x07 ];
865860
866861      /* If character set A and B are equal attribute bit 3 is used as intensity */
867      if ( ega->m_charA == ega->m_charB )
862      if ( m_charA == m_charB )
868863      {
869864         /* intensity selector */
870         data = ega->m_charB[ chr * 32 + ra ];
865         data = m_charB[ chr * 32 + ra ];
871866         fg += ( attr & 0x08 ) ? 0x38 : 0x00;
872867      }
873868      else
874869      {
875870         /* character set selector */
876         data = ( attr & 0x08 ) ? ega->m_charA[ chr * 32 + ra ] : ega->m_charB[ chr * 32 + ra ];
871         data = ( attr & 0x08 ) ? m_charA[ chr * 32 + ra ] : m_charB[ chr * 32 + ra ];
877872      }
878873
879874      if ( i == cursor_x )
880875      {
881         if ( ega->m_frame_cnt & 0x08 )
876         if ( m_frame_cnt & 0x08 )
882877         {
883878            data = 0xFF;
884879         }
r29542r29543
886881      else
887882      {
888883         /* Check for blinking */
889         if ( ( ega->m_attribute.data[0x10] & 0x08 ) && ( attr & 0x80 ) && ( ega->m_frame_cnt & 0x10 ) )
884         if ( ( m_attribute.data[0x10] & 0x08 ) && ( attr & 0x80 ) && ( m_frame_cnt & 0x10 ) )
890885         {
891886            data = 0x00;
892887         }
r29542r29543
908903{
909904   int clock, pixels;
910905
911   m_update_row = NULL;
906   m_video_mode = 0;
912907
913908   /* Check for graphics mode */
914909   if (   ( m_attribute.data[0x10] & 0x01 ) &&
r29542r29543
920915         logerror("change_mode(): Switch to graphics mode\n");
921916      }
922917
923      m_update_row = pc_ega_graphics;
918      m_video_mode = EGA_MODE_GRAPHICS;
924919   }
925920
926921   /* Check for text mode */
r29542r29543
933928         logerror("chnage_mode(): Switching to text mode\n");
934929      }
935930
936      m_update_row = pc_ega_text;
931      m_video_mode = EGA_MODE_TEXT;
937932
938933      /* Set character maps */
939934      if ( m_sequencer.data[0x04] & 0x02 )
r29542r29543
959954   m_crtc_ega->set_clock( clock / pixels );
960955   m_crtc_ega->set_hpixels_per_column( pixels );
961956
962if ( ! m_update_row )
963   logerror("unknown video mode\n");
957   if (!m_video_mode)
958      logerror("unknown video mode\n");
964959}
965960
966961
branches/new_menus/src/emu/bus/isa/ega.h
r29542r29543
4040      DECLARE_WRITE_LINE_MEMBER(vsync_changed);
4141      DECLARE_WRITE_LINE_MEMBER(vblank_changed);
4242
43      CRTC_EGA_ROW_UPDATE(ega_update_row);
44      CRTC_EGA_ROW_UPDATE(pc_ega_graphics);
45      CRTC_EGA_ROW_UPDATE(pc_ega_text);
46
4347protected:
4448      // device-level overrides
4549      virtual void device_start();
r29542r29543
5559      DECLARE_WRITE8_MEMBER(pc_ega8_3X0_w);
5660      DECLARE_READ8_MEMBER(pc_ega8_3X0_r);
5761
58      crtc_ega_update_row_func    m_update_row;
59
6062      /* Video memory and related variables */
6163      memory_region   *m_vram;
6264      UINT8   *m_plane[4];
r29542r29543
9698      UINT8   m_vsync;
9799      UINT8   m_vblank;
98100      UINT8   m_display_enable;
101      int     m_video_mode;
99102      required_device<palette_device> m_palette;
100103};
101104
branches/new_menus/src/emu/bus/isa/ne1000.c
r29542r29543
11#include "emu.h"
22#include "ne1000.h"
33
4static const dp8390_interface ne1000_dp8390_interface = {
5   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, ne1000_device, ne1000_irq_w),
6   DEVCB_NULL,
7   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ne1000_device, ne1000_mem_read),
8   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, ne1000_device, ne1000_mem_write)
9};
10
114static MACHINE_CONFIG_FRAGMENT(ne1000_config)
12   MCFG_DP8390D_ADD("dp8390d", ne1000_dp8390_interface)
5   MCFG_DEVICE_ADD("dp8390d", DP8390D, 0)
6   MCFG_DP8390D_IRQ_CB(WRITELINE(ne1000_device, ne1000_irq_w))
7   MCFG_DP8390D_MEM_READ_CB(READ8(ne1000_device, ne1000_mem_read))
8   MCFG_DP8390D_MEM_WRITE_CB(WRITE8(ne1000_device, ne1000_mem_write))
139MACHINE_CONFIG_END
1410
1511const device_type NE1000 = &device_creator<ne1000_device>;
branches/new_menus/src/emu/bus/nubus/nubus_asntmc3b.c
r29542r29543
1616#define MAC8390_ROM_REGION  "asntm3b_rom"
1717#define MAC8390_839X  "dp83902"
1818
19static const dp8390_interface dp8390_interface =
20{
21   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, nubus_mac8390_device, dp_irq_w),
22   DEVCB_NULL,
23   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, nubus_mac8390_device, dp_mem_read),
24   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, nubus_mac8390_device, dp_mem_write)
25};
2619
2720MACHINE_CONFIG_FRAGMENT( asntm3b )
28   MCFG_DP8390D_ADD(MAC8390_839X, dp8390_interface)
21   MCFG_DEVICE_ADD(MAC8390_839X, DP8390D, 0)
22   MCFG_DP8390D_IRQ_CB(WRITELINE(nubus_mac8390_device, dp_irq_w))
23   MCFG_DP8390D_MEM_READ_CB(READ8(nubus_mac8390_device, dp_mem_read))
24   MCFG_DP8390D_MEM_WRITE_CB(WRITE8(nubus_mac8390_device, dp_mem_write))
2925MACHINE_CONFIG_END
3026
3127ROM_START( asntm3nb )
branches/new_menus/src/emu/bus/vip/vp620.c
r29542r29543
3434   m_keystb = ASSERT_LINE;
3535}
3636
37static ASCII_KEYBOARD_INTERFACE( kb_intf )
38{
39   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, vp620_device, kb_w)
40};
41
42
4337//-------------------------------------------------
4438//  MACHINE_CONFIG_FRAGMENT( vp620 )
4539//-------------------------------------------------
4640
4741static MACHINE_CONFIG_FRAGMENT( vp620 )
48   MCFG_ASCII_KEYBOARD_ADD("keyboard", kb_intf)
42   MCFG_DEVICE_ADD("keyboard", GENERIC_KEYBOARD, 0)
43   MCFG_GENERIC_KEYBOARD_CB(WRITE8(vp620_device, kb_w))
4944MACHINE_CONFIG_END
5045
5146
branches/new_menus/src/emu/bus/x68k/x68k_neptunex.c
r29542r29543
1313
1414const device_type X68K_NEPTUNEX = &device_creator<x68k_neptune_device>;
1515
16static const dp8390_interface neptune_dp8390_interface = {
17   DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, x68k_neptune_device, x68k_neptune_irq_w),
18   DEVCB_NULL,
19   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, x68k_neptune_device, x68k_neptune_mem_read),
20   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, x68k_neptune_device, x68k_neptune_mem_write)
21};
22
23
2416// device machine config
2517static MACHINE_CONFIG_FRAGMENT( x68k_neptunex )
26   MCFG_DP8390D_ADD("dp8390d", neptune_dp8390_interface)
18   MCFG_DEVICE_ADD("dp8390d", DP8390D, 0)
19   MCFG_DP8390D_IRQ_CB(WRITELINE(x68k_neptune_device, x68k_neptune_irq_w))
20   MCFG_DP8390D_MEM_READ_CB(READ8(x68k_neptune_device, x68k_neptune_mem_read))
21   MCFG_DP8390D_MEM_WRITE_CB(WRITE8(x68k_neptune_device, x68k_neptune_mem_write))
2722MACHINE_CONFIG_END
2823
2924machine_config_constructor x68k_neptune_device::device_mconfig_additions() const
r29542r29543
8580      m_dp8390->dp8390_reset(CLEAR_LINE);
8681      return 0;
8782   default:
88      logerror("ne2000: invalid register read %02X\n", offset);
83      logerror("x68k_neptune: invalid register read %02X\n", offset);
8984   }
9085   return 0;
9186}
r29542r29543
118113      m_dp8390->dp8390_reset(ASSERT_LINE);
119114      return;
120115   default:
121      logerror("ne2000: invalid register write %02X\n", offset);
116      logerror("x68k_neptune: invalid register write %02X\n", offset);
122117   }
123118   return;
124119}
r29542r29543
128123   if(offset < 32) return m_prom[offset>>1];
129124   if((offset < (16*1024)) || (offset >= (32*1024)))
130125   {
131      logerror("ne2000: invalid memory read %04X\n", offset);
126      logerror("x68k_neptune: invalid memory read %04X\n", offset);
132127      return 0xff;
133128   }
134129   return m_board_ram[offset - (16*1024)];
r29542r29543
138133{
139134   if((offset < (16*1024)) || (offset >= (32*1024)))
140135   {
141      logerror("ne2000: invalid memory write %04X\n", offset);
136      logerror("x68k_neptune: invalid memory write %04X\n", offset);
142137      return;
143138   }
144139   m_board_ram[offset - (16*1024)] = data;
branches/new_menus/src/emu/ui/viewgfx.c
r29542r29543
621621         break;
622622      xcells--;
623623   }
624   info.columns[set] = xcells;
624625
625626   // worst case, we need a pixel scale of 1
626627   pixelscale = MAX(1, pixelscale);
r29542r29543
770771   // clamp within range
771772   if (info.columns[set] < 2)
772773   { info.columns[set] = 2; state.bitmap_dirty = true; }
773   if (info.columns[set] > 32)
774   { info.columns[set] = 32; state.bitmap_dirty = true; }
774   if (info.columns[set] > 128)
775   { info.columns[set] = 128; state.bitmap_dirty = true; }
775776
776777   // handle rotation (R)
777778   if (ui_input_pressed(machine, IPT_UI_ROTATE))
branches/new_menus/src/emu/machine/keyboard.c
r29542r29543
88Example of usage in a driver.
99
1010In MACHINE_CONFIG
11    MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
11       
12   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
13   MCFG_GENERIC_KEYBOARD_CB(WRITE8(xxx_state, kbd_put))
1214
1315In the code:
1416
r29542r29543
1719    (code to capture the key as it is pressed)
1820}
1921
20static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
21{
22    DEVCB_DRIVER_MEMBER(xxx_state, kbd_put)
23};
24
2522***************************************************************************/
2623
2724#include "machine/keyboard.h"
r29542r29543
4138   m_io_kbd5(*this, "TERM_LINE5"),
4239   m_io_kbd6(*this, "TERM_LINE6"),
4340   m_io_kbd7(*this, "TERM_LINE7"),
44   m_io_kbdc(*this, "TERM_LINEC")
41   m_io_kbdc(*this, "TERM_LINEC"),
42   m_keyboard_cb(*this)
4543{
4644}
4745
r29542r29543
5553   m_io_kbd5(*this, "TERM_LINE5"),
5654   m_io_kbd6(*this, "TERM_LINE6"),
5755   m_io_kbd7(*this, "TERM_LINE7"),
58   m_io_kbdc(*this, "TERM_LINEC")
56   m_io_kbdc(*this, "TERM_LINEC"),
57   m_keyboard_cb(*this)
5958{
6059}
6160
r29542r29543
209208
210209void generic_keyboard_device::device_start()
211210{
212   m_keyboard_func.resolve(m_keyboard_cb, *this);
211   m_keyboard_cb.resolve_safe();
213212   m_timer = timer_alloc();
214213}
215214
216void generic_keyboard_device::device_config_complete()
217{
218   const keyboard_interface *intf = reinterpret_cast<const keyboard_interface *>(static_config());
219   if(intf != NULL)
220   {
221      *static_cast<keyboard_interface *>(this) = *intf;
222   }
223   else
224   {
225      memset(&m_keyboard_cb, 0, sizeof(m_keyboard_cb));
226   }
227}
228
229215void generic_keyboard_device::device_reset()
230216{
231217   m_last_code = 0;
branches/new_menus/src/emu/machine/keyboard.h
r29542r29543
44#include "emu.h"
55
66/***************************************************************************
7    TYPE DEFINITIONS
8***************************************************************************/
9
10struct keyboard_interface
11{
12   devcb_write8 m_keyboard_cb;
13};
14
15#define ASCII_KEYBOARD_INTERFACE(name) const keyboard_interface (name) =
16
17/***************************************************************************
187    DEVICE CONFIGURATION MACROS
198***************************************************************************/
209
21#define MCFG_ASCII_KEYBOARD_ADD(_tag, _intrf) \
22   MCFG_DEVICE_ADD(_tag, GENERIC_KEYBOARD, 0) \
23   MCFG_DEVICE_CONFIG(_intrf)
10#define MCFG_GENERIC_KEYBOARD_CB(_devcb) \
11   devcb = &generic_keyboard_device::set_keyboard_callback(*device, DEVCB2_##_devcb);
2412
2513/***************************************************************************
2614    FUNCTION PROTOTYPES
r29542r29543
2816
2917INPUT_PORTS_EXTERN( generic_keyboard );
3018
31class generic_keyboard_device :
32   public device_t,
33   public keyboard_interface
19class generic_keyboard_device :   public device_t
3420{
3521public:
3622   generic_keyboard_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
3723   generic_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
24   
25   template<class _Object> static devcb2_base &set_keyboard_callback(device_t &device, _Object object) { return downcast<generic_keyboard_device &>(device).m_keyboard_cb.set_callback(object); }
3826
3927   virtual ioport_constructor device_input_ports() const;
4028   virtual machine_config_constructor device_mconfig_additions() const;
r29542r29543
5240   virtual void device_start();
5341   virtual void device_reset();
5442   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
55   virtual void device_config_complete();
56   virtual void send_key(UINT8 code) { m_keyboard_func(0, code); }
43   virtual void send_key(UINT8 code) { m_keyboard_cb((offs_t)0, code); }
5744   emu_timer *m_timer;
5845private:
5946   virtual UINT8 keyboard_handler(UINT8 last_code, UINT8 *scan_line);
r29542r29543
6148   UINT8 m_last_code;
6249   UINT8 m_scan_line;
6350
64   devcb_resolved_write8 m_keyboard_func;
51   devcb2_write8 m_keyboard_cb;
6552};
6653
6754extern const device_type GENERIC_KEYBOARD;
branches/new_menus/src/emu/machine/wd11c00_17.c
r29542r29543
4242const device_type WD11C00_17 = &device_creator<wd11c00_17_device>;
4343
4444
45//-------------------------------------------------
46//  device_config_complete - perform any
47//  operations now that the configuration is
48//  complete
49//-------------------------------------------------
50
51void wd11c00_17_device::device_config_complete()
52{
53   // inherit a copy of the static data
54   const wd11c00_17_interface *intf = reinterpret_cast<const wd11c00_17_interface *>(static_config());
55   if (intf != NULL)
56      *static_cast<wd11c00_17_interface *>(this) = *intf;
57
58   // or initialize to defaults if none provided
59   else
60   {
61      memset(&m_out_irq5_cb, 0, sizeof(m_out_irq5_cb));
62      memset(&m_out_drq3_cb, 0, sizeof(m_out_drq3_cb));
63      memset(&m_out_mr_cb, 0, sizeof(m_out_mr_cb));
64      memset(&m_out_busy_cb, 0, sizeof(m_out_busy_cb));
65      memset(&m_out_req_cb, 0, sizeof(m_out_req_cb));
66      memset(&m_out_ra3_cb, 0, sizeof(m_out_ra3_cb));
67      memset(&m_in_rd322_cb, 0, sizeof(m_in_rd322_cb));
68      memset(&m_in_ramcs_cb, 0, sizeof(m_in_ramcs_cb));
69      memset(&m_out_ramwr_cb, 0, sizeof(m_out_ramwr_cb));
70      memset(&m_in_cs1010_cb, 0, sizeof(m_in_cs1010_cb));
71      memset(&m_out_cs1010_cb, 0, sizeof(m_out_cs1010_cb));
72   }
73}
74
75
76
7745//**************************************************************************
7846//  INLINE HELPERS
7947//**************************************************************************
r29542r29543
9361
9462   if (m_ra3 != ra3)
9563   {
96      m_out_ra3_func(ra3 ? ASSERT_LINE : CLEAR_LINE);
64      m_out_ra3_cb(ra3 ? ASSERT_LINE : CLEAR_LINE);
9765      m_ra3 = ra3;
9866   }
9967
r29542r29543
10169
10270   if (m_irq5 != irq5)
10371   {
104      m_out_irq5_func(irq5);
72      m_out_irq5_cb(irq5);
10573      m_irq5 = irq5;
10674   }
10775
r29542r29543
10977
11078   if (m_drq3 != drq3)
11179   {
112      m_out_drq3_func(drq3);
80      m_out_drq3_cb(drq3);
11381      m_drq3 = drq3;
11482   }
11583
r29542r29543
11785
11886   if (m_busy != busy)
11987   {
120      m_out_busy_func(busy);
88      m_out_busy_cb(busy);
12189      m_busy = busy;
12290   }
12391
r29542r29543
12593
12694   if (m_req != req)
12795   {
128      m_out_req_func(req);
96      m_out_req_cb(req);
12997      m_req = req;
13098   }
13199}
r29542r29543
152120
153121   if (m_status & STATUS_BUSY)
154122   {
155      data = m_in_ramcs_func(m_ra & 0x7ff);
123      data = m_in_ramcs_cb(m_ra & 0x7ff);
156124
157125      increment_address();
158126   }
r29542r29543
169137{
170138   if (m_status & STATUS_BUSY)
171139   {
172      m_out_ramwr_func(m_ra & 0x7ff, data);
140      m_out_ramwr_cb(m_ra & 0x7ff, data);
173141
174142      increment_address();
175143   }
r29542r29543
182150
183151inline void wd11c00_17_device::software_reset()
184152{
185   m_out_mr_func(ASSERT_LINE);
186   m_out_mr_func(CLEAR_LINE);
153   m_out_mr_cb(ASSERT_LINE);
154   m_out_mr_cb(CLEAR_LINE);
187155
188156   device_reset();
189157}
r29542r29543
212180
213181wd11c00_17_device::wd11c00_17_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
214182   : device_t(mconfig, WD11C00_17, "Western Digital WD11C00-17", tag, owner, clock, "wd11c00_17", __FILE__),
183      m_out_irq5_cb(*this),
184      m_out_drq3_cb(*this),
185      m_out_mr_cb(*this),
186      m_out_busy_cb(*this),
187      m_out_req_cb(*this),
188      m_out_ra3_cb(*this),
189      m_in_rd322_cb(*this),
190      m_in_ramcs_cb(*this),
191      m_out_ramwr_cb(*this),
192      m_in_cs1010_cb(*this),
193      m_out_cs1010_cb(*this),
215194      m_status(0),
216195      m_ra(0),
217196      m_irq5(CLEAR_LINE),
r29542r29543
230209void wd11c00_17_device::device_start()
231210{
232211   // resolve callbacks
233   m_out_irq5_func.resolve(m_out_irq5_cb, *this);
234   m_out_drq3_func.resolve(m_out_drq3_cb, *this);
235   m_out_mr_func.resolve(m_out_mr_cb, *this);
236   m_out_busy_func.resolve(m_out_busy_cb, *this);
237   m_out_req_func.resolve(m_out_req_cb, *this);
238   m_out_ra3_func.resolve(m_out_ra3_cb, *this);
239   m_in_rd322_func.resolve(m_in_rd322_cb, *this);
240   m_in_ramcs_func.resolve(m_in_ramcs_cb, *this);
241   m_out_ramwr_func.resolve(m_out_ramwr_cb, *this);
242   m_in_cs1010_func.resolve(m_in_cs1010_cb, *this);
243   m_out_cs1010_func.resolve(m_out_cs1010_cb, *this);
212   m_out_irq5_cb.resolve_safe();
213   m_out_drq3_cb.resolve_safe();
214   m_out_mr_cb.resolve_safe();
215   m_out_busy_cb.resolve_safe();
216   m_out_req_cb.resolve_safe();
217   m_out_ra3_cb.resolve_safe();
218   m_in_rd322_cb.resolve_safe(0);
219   m_in_ramcs_cb.resolve_safe(0);
220   m_out_ramwr_cb.resolve_safe();
221   m_in_cs1010_cb.resolve_safe(0);
222   m_out_cs1010_cb.resolve_safe();
244223}
245224
246225
r29542r29543
280259      break;
281260
282261   case 2: // Read Drive Configuration Information
283      data = m_in_rd322_func(0);
262      data = m_in_rd322_cb(0);
284263      break;
285264
286265   case 3: // Not Used
r29542r29543
361340      break;
362341
363342   case 0x20:
364      data = m_in_cs1010_func(m_ra >> 8);
343      data = m_in_cs1010_cb(m_ra >> 8);
365344      break;
366345   }
367346
r29542r29543
384363      break;
385364
386365   case 0x20:
387      m_out_cs1010_func(m_ra >> 8, data);
366      m_out_cs1010_cb(m_ra >> 8, data);
388367      break;
389368
390369   case 0x60:
branches/new_menus/src/emu/machine/wd11c00_17.h
r29542r29543
2323//  INTERFACE CONFIGURATION MACROS
2424//**************************************************************************
2525
26#define MCFG_WD11C00_17_ADD(_tag, _clock, _config) \
27   MCFG_DEVICE_ADD(_tag, WD11C00_17, _clock) \
28   MCFG_DEVICE_CONFIG(_config)
26#define MCFG_WD11C00_17_OUT_IRQ5_CB(_devcb) \
27   devcb = &wd11c00_17_device::set_out_irq5_callback(*device, DEVCB2_##_devcb);
2928
29#define MCFG_WD11C00_17_OUT_DRQ3_CB(_devcb) \
30   devcb = &wd11c00_17_device::set_out_drq3_callback(*device, DEVCB2_##_devcb);
3031
31#define WD11C00_17_INTERFACE(_name) \
32   const wd11c00_17_interface (_name) =
32#define MCFG_WD11C00_17_OUT_MR_CB(_devcb) \
33   devcb = &wd11c00_17_device::set_out_mr_callback(*device, DEVCB2_##_devcb);
3334
35#define MCFG_WD11C00_17_OUT_BUSY_CB(_devcb) \
36   devcb = &wd11c00_17_device::set_out_busy_callback(*device, DEVCB2_##_devcb);
3437
38#define MCFG_WD11C00_17_OUT_REQ_CB(_devcb) \
39   devcb = &wd11c00_17_device::set_out_req_callback(*device, DEVCB2_##_devcb);
3540
41#define MCFG_WD11C00_17_OUT_RA3_CB(_devcb) \
42   devcb = &wd11c00_17_device::set_out_ra3_callback(*device, DEVCB2_##_devcb);
43
44#define MCFG_WD11C00_17_IN_RD322_CB(_devcb) \
45   devcb = &wd11c00_17_device::set_in_rd322_callback(*device, DEVCB2_##_devcb);
46
47#define MCFG_WD11C00_17_IN_RAMCS_CB(_devcb) \
48   devcb = &wd11c00_17_device::set_in_ramcs_callback(*device, DEVCB2_##_devcb);
49
50#define MCFG_WD11C00_17_OUT_RAMWR_CB(_devcb) \
51   devcb = &wd11c00_17_device::set_out_ramwr_callback(*device, DEVCB2_##_devcb);
52
53#define MCFG_WD11C00_17_IN_CS1010_CB(_devcb) \
54   devcb = &wd11c00_17_device::set_in_cs1010_callback(*device, DEVCB2_##_devcb);
55
56#define MCFG_WD11C00_17_OUT_CS1010_CB(_devcb) \
57   devcb = &wd11c00_17_device::set_out_cs1010_callback(*device, DEVCB2_##_devcb);
58
3659//**************************************************************************
3760//  TYPE DEFINITIONS
3861//**************************************************************************
3962
40// ======================> wd11c00_17_interface
41
42struct wd11c00_17_interface
43{
44   devcb_write_line    m_out_irq5_cb;
45   devcb_write_line    m_out_drq3_cb;
46   devcb_write_line    m_out_mr_cb;
47   devcb_write_line    m_out_busy_cb;
48   devcb_write_line    m_out_req_cb;
49   devcb_write_line    m_out_ra3_cb;
50   devcb_read8         m_in_rd322_cb;
51   devcb_read8         m_in_ramcs_cb;
52   devcb_write8        m_out_ramwr_cb;
53   devcb_read8         m_in_cs1010_cb;
54   devcb_write8        m_out_cs1010_cb;
55};
56
57
5863// ======================> wd11c00_17_device
5964
60class wd11c00_17_device :   public device_t,
61                     public wd11c00_17_interface
65class wd11c00_17_device :   public device_t
6266{
6367public:
6468   // construction/destruction
6569   wd11c00_17_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
6670
71   template<class _Object> static devcb2_base &set_out_irq5_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_irq5_cb.set_callback(object); }
72   template<class _Object> static devcb2_base &set_out_drq3_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_drq3_cb.set_callback(object); }
73   template<class _Object> static devcb2_base &set_out_mr_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_mr_cb.set_callback(object); }
74   template<class _Object> static devcb2_base &set_out_busy_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_busy_cb.set_callback(object); }
75   template<class _Object> static devcb2_base &set_out_req_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_req_cb.set_callback(object); }
76   template<class _Object> static devcb2_base &set_out_ra3_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_ra3_cb.set_callback(object); }
77   template<class _Object> static devcb2_base &set_in_rd322_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_in_rd322_cb.set_callback(object); }
78   template<class _Object> static devcb2_base &set_in_ramcs_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_in_ramcs_cb.set_callback(object); }
79   template<class _Object> static devcb2_base &set_out_ramwr_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_ramwr_cb.set_callback(object); }
80   template<class _Object> static devcb2_base &set_in_cs1010_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_in_cs1010_cb.set_callback(object); }
81   template<class _Object> static devcb2_base &set_out_cs1010_callback(device_t &device, _Object object) { return downcast<wd11c00_17_device &>(device).m_out_cs1010_cb.set_callback(object); }
82   
6783   DECLARE_READ8_MEMBER( io_r );
6884   DECLARE_WRITE8_MEMBER( io_w );
6985
r29542r29543
86102   // device-level overrides
87103   virtual void device_start();
88104   virtual void device_reset();
89   virtual void device_config_complete();
90105
91106private:
92107   inline void check_interrupt();
r29542r29543
96111   inline void software_reset();
97112   inline void select();
98113
99   devcb_resolved_write_line   m_out_irq5_func;
100   devcb_resolved_write_line   m_out_drq3_func;
101   devcb_resolved_write_line   m_out_mr_func;
102   devcb_resolved_write_line   m_out_busy_func;
103   devcb_resolved_write_line   m_out_req_func;
104   devcb_resolved_write_line   m_out_ra3_func;
105   devcb_resolved_read8        m_in_rd322_func;
106   devcb_resolved_read8        m_in_ramcs_func;
107   devcb_resolved_write8       m_out_ramwr_func;
108   devcb_resolved_read8        m_in_cs1010_func;
109   devcb_resolved_write8       m_out_cs1010_func;
114   devcb2_write_line    m_out_irq5_cb;
115   devcb2_write_line    m_out_drq3_cb;
116   devcb2_write_line    m_out_mr_cb;
117   devcb2_write_line    m_out_busy_cb;
118   devcb2_write_line    m_out_req_cb;
119   devcb2_write_line    m_out_ra3_cb;
120   devcb2_read8         m_in_rd322_cb;
121   devcb2_read8         m_in_ramcs_cb;
122   devcb2_write8        m_out_ramwr_cb;
123   devcb2_read8         m_in_cs1010_cb;
124   devcb2_write8        m_out_cs1010_cb;
110125
111126   UINT8 m_status;
112127   UINT8 m_mask;
branches/new_menus/src/emu/machine/terminal.c
r29542r29543
141141generic_terminal_device::generic_terminal_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
142142   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
143143      m_palette(*this, "palette"),
144      m_io_term_conf(*this, "TERM_CONF")
144      m_io_term_conf(*this, "TERM_CONF"),
145      m_keyboard_cb(*this)
145146{
146147}
147148
148149generic_terminal_device::generic_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
149150   : device_t(mconfig, GENERIC_TERMINAL, "Generic Terminal", tag, owner, clock, "generic_terminal", __FILE__),
150151      m_palette(*this, "palette"),
151      m_io_term_conf(*this, "TERM_CONF")
152      m_io_term_conf(*this, "TERM_CONF"),
153      m_keyboard_cb(*this)
152154{
153155}
154156
r29542r29543
304306      send_key(data);
305307}
306308
307static ASCII_KEYBOARD_INTERFACE( keyboard_intf )
308{
309   DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, generic_terminal_device, kbd_put)
310};
311
312309/***************************************************************************
313310    VIDEO HARDWARE
314311***************************************************************************/
r29542r29543
323320
324321   MCFG_PALETTE_ADD_MONOCHROME_GREEN("palette")
325322
326   MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf)
323   MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0)
324   MCFG_GENERIC_KEYBOARD_CB(WRITE8(generic_terminal_device, kbd_put))
327325MACHINE_CONFIG_END
328326
329327machine_config_constructor generic_terminal_device::device_mconfig_additions() const
r29542r29543
333331
334332void generic_terminal_device::device_start()
335333{
336   m_keyboard_func.resolve(m_keyboard_cb, *this);
334   m_keyboard_cb.resolve_safe();
337335}
338336
339void generic_terminal_device::device_config_complete()
340{
341   const terminal_interface *intf = reinterpret_cast<const terminal_interface *>(static_config());
342   if(intf != NULL)
343   {
344      *static_cast<terminal_interface *>(this) = *intf;
345   }
346   else
347   {
348      memset(&m_keyboard_cb, 0, sizeof(m_keyboard_cb));
349   }
350}
351
352337void generic_terminal_device::device_reset()
353338{
354339   clear();
branches/new_menus/src/emu/machine/terminal.h
r29542r29543
66#define TERMINAL_SCREEN_TAG "terminal_screen"
77
88/***************************************************************************
9    TYPE DEFINITIONS
10***************************************************************************/
11
12struct terminal_interface
13{
14   devcb_write8 m_keyboard_cb;
15};
16
17#define GENERIC_TERMINAL_INTERFACE(name) const terminal_interface (name) =
18
19/***************************************************************************
209    DEVICE CONFIGURATION MACROS
2110***************************************************************************/
2211
23#define MCFG_GENERIC_TERMINAL_ADD(_tag, _intrf) \
24   MCFG_DEVICE_ADD(_tag, GENERIC_TERMINAL, 0) \
25   MCFG_DEVICE_CONFIG(_intrf)
12#define MCFG_GENERIC_TERMINAL_KEYBOARD_CB(_devcb) \
13   devcb = &generic_terminal_device::set_keyboard_callback(*device, DEVCB2_##_devcb);
2614
27#define MCFG_GENERIC_TERMINAL_REMOVE(_tag)      \
28   MCFG_DEVICE_REMOVE(_tag)
29
3015/***************************************************************************
3116    FUNCTION PROTOTYPES
3217***************************************************************************/
r29542r29543
3621
3722INPUT_PORTS_EXTERN( generic_terminal );
3823
39class generic_terminal_device :
40   public device_t,
41   public terminal_interface
24class generic_terminal_device :   public device_t
4225{
4326public:
4427   generic_terminal_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
4528   generic_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
29   
30   template<class _Object> static devcb2_base &set_keyboard_callback(device_t &device, _Object object) { return downcast<generic_terminal_device &>(device).m_keyboard_cb.set_callback(object); }
31   
4632   DECLARE_WRITE8_MEMBER(write) { term_write(data); }
4733   DECLARE_WRITE8_MEMBER(kbd_put);
4834   UINT32 update(screen_device &device, bitmap_rgb32 &bitmap, const rectangle &cliprect);
r29542r29543
5642   virtual void term_write(UINT8 data);
5743   virtual void device_start();
5844   virtual void device_reset();
59   virtual void device_config_complete();
60   virtual void send_key(UINT8 code) { m_keyboard_func(0, code); }
45   virtual void send_key(UINT8 code) { m_keyboard_cb((offs_t)0, code); }
6146   UINT8 m_buffer[TERMINAL_WIDTH*50]; // make big enough for teleprinter
6247   UINT8 m_x_pos;
6348private:
r29542r29543
6853   UINT8 m_framecnt;
6954   UINT8 m_y_pos;
7055
71   devcb_resolved_write8 m_keyboard_func;
56   devcb2_write8 m_keyboard_cb;
7257};
7358
7459extern const device_type GENERIC_TERMINAL;
branches/new_menus/src/emu/machine/dp8390.c
r29542r29543
77const device_type DP8390D = &device_creator<dp8390d_device>;
88const device_type RTL8019A = &device_creator<rtl8019a_device>;
99
10void dp8390_device::device_config_complete() {
11   const dp8390_interface *intf = reinterpret_cast<const dp8390_interface *>(static_config());
12   if(intf != NULL)
13      *static_cast<dp8390_interface *>(this) = *intf;
14   else {
15      memset(&irq_cb, 0, sizeof(irq_cb));
16      memset(&breq_cb, 0, sizeof(breq_cb));
17      memset(&mem_read_cb, 0, sizeof(mem_read_cb));
18      memset(&mem_write_cb, 0, sizeof(mem_write_cb));
19   }
20}
21
2210dp8390d_device::dp8390d_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
2311   : dp8390_device(mconfig, DP8390D, "DP8390D", tag, owner, clock, 10.0f, "dp8390d", __FILE__) {
2412      m_type = TYPE_DP8390D;
r29542r29543
3119
3220dp8390_device::dp8390_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, float bandwidth, const char *shortname, const char *source)
3321   : device_t(mconfig, type, name, tag, owner, clock, shortname, source),
34      device_network_interface(mconfig, *this, bandwidth) {
22      device_network_interface(mconfig, *this, bandwidth),
23      m_irq_cb(*this),
24      m_breq_cb(*this),
25      m_mem_read_cb(*this),
26      m_mem_write_cb(*this)
27      {
3528}
3629
3730void dp8390_device::device_start() {
38   irq_func.resolve(irq_cb, *this);
39   breq_func.resolve(breq_cb, *this);
40   mem_read.resolve(mem_read_cb, *this);
41   mem_write.resolve(mem_write_cb, *this);
31   m_irq_cb.resolve_safe();
32   m_breq_cb.resolve_safe();
33   m_mem_read_cb.resolve_safe(0);
34   m_mem_write_cb.resolve_safe();
4235}
4336
4437void dp8390_device::stop() {
4538   m_regs.isr = 0x80; // is this right?
4639   m_regs.cr |= 1;
47   irq_func(CLEAR_LINE);
40   m_irq_cb(CLEAR_LINE);
4841   m_reset = 1;
4942}
5043
r29542r29543
5649   memset(&m_8019regs, 0, sizeof(m_8019regs));
5750   m_8019regs.config1 = 0x80;
5851   m_8019regs.config3 = 0x01;
59   irq_func(CLEAR_LINE);
52   m_irq_cb(CLEAR_LINE);
6053
6154   m_reset = 1;
6255}
r29542r29543
8376   }
8477
8578   buf.resize(m_regs.tbcr);
86   for(i = 0; i < m_regs.tbcr; i++) buf[i] = mem_read(high16 + (m_regs.tpsr << 8) + i);
79   for(i = 0; i < m_regs.tbcr; i++) buf[i] = m_mem_read_cb(high16 + (m_regs.tpsr << 8) + i);
8780
8881   if(send(buf, m_regs.tbcr)) {
8982      m_regs.tsr = 1;
r29542r29543
139132   len &= 0xffff;
140133
141134   for(i = 0; i < len; i++) {
142      mem_write(high16 + offset, buf[i]);
135      m_mem_write_cb(high16 + offset, buf[i]);
143136      offset++;
144137      if(!(offset & 0xff)) {
145138         if((offset >> 8) == m_regs.pstop) offset = m_regs.pstart << 8;
r29542r29543
149142   if(len < 60) {
150143      // this can't pass to the next page
151144      for(; i < 60; i++) {
152         mem_write(high16 + offset, 0);
145         m_mem_write_cb(high16 + offset, 0);
153146         offset++;
154147      }
155148      len = 60;
r29542r29543
160153   m_regs.curr = (offset >> 8) + ((offset & 0xff)?1:0);
161154   if(m_regs.curr == m_regs.pstop) m_regs.curr = m_regs.pstart;
162155   len += 4;
163   mem_write(start, m_regs.rsr);
164   mem_write(start+1, m_regs.curr);
165   mem_write(start+2, len & 0xff);
166   mem_write(start+3, len >> 8);
156   m_mem_write_cb((offs_t)start, m_regs.rsr);
157   m_mem_write_cb((offs_t)start+1, m_regs.curr);
158   m_mem_write_cb((offs_t)start+2, len & 0xff);
159   m_mem_write_cb((offs_t)start+3, len >> 8);
167160   check_irq();
168161}
169162
r29542r29543
185178      UINT32 high16 = (m_regs.dcr & 4)?m_regs.rsar<<16:0;
186179      if(m_regs.dcr & 1) {
187180         m_regs.crda &= ~1;
188         data = mem_read(high16 + m_regs.crda++);
189         data |= mem_read(high16 + m_regs.crda++) << 8;
181         data = m_mem_read_cb(high16 + m_regs.crda++);
182         data |= m_mem_read_cb(high16 + m_regs.crda++) << 8;
190183         m_regs.rbcr -= (m_regs.rbcr < 2)?m_regs.rbcr:2;
191184         check_dma_complete();
192185         return DP8390_BYTE_ORDER(data);
193186      } else {
194187         m_regs.rbcr -= (m_regs.rbcr)?1:0;
195         data = mem_read(high16 + m_regs.crda++);
188         data = m_mem_read_cb(high16 + m_regs.crda++);
196189         check_dma_complete();
197190         return data;
198191      }
r29542r29543
355348      if(m_regs.dcr & 1) {
356349         data = DP8390_BYTE_ORDER(data);
357350         m_regs.crda &= ~1;
358         mem_write(high16 + m_regs.crda++, data & 0xff);
359         mem_write(high16 + m_regs.crda++, data >> 8);
351         m_mem_write_cb(high16 + m_regs.crda++, data & 0xff);
352         m_mem_write_cb(high16 + m_regs.crda++, data >> 8);
360353         m_regs.rbcr -= (m_regs.rbcr < 2)?m_regs.rbcr:2;
361354         check_dma_complete();
362355      } else {
363356         data &= 0xff;
364         mem_write(high16 + m_regs.crda++, data);
357         m_mem_write_cb(high16 + m_regs.crda++, data);
365358         m_regs.rbcr -= (m_regs.rbcr)?1:0;
366359         check_dma_complete();
367360      }
branches/new_menus/src/emu/machine/dp8390.h
r29542r29543
33
44#include "emu.h"
55
6struct dp8390_interface
7{
8   devcb_write_line    irq_cb;
9   devcb_write_line    breq_cb;
10   devcb_read8         mem_read_cb;
11   devcb_write8        mem_write_cb;
12};
136
147// device stuff
15#define MCFG_DP8390D_ADD(_tag, _intrf) \
16   MCFG_DEVICE_ADD(_tag, DP8390D, 0) \
17   MCFG_DEVICE_CONFIG(_intrf)
188
19#define MCFG_RTL8019A_ADD(_tag, _intrf) \
20   MCFG_DEVICE_ADD(_tag, RTL8019A, 0) \
21   MCFG_DEVICE_CONFIG(_intrf)
9#define MCFG_DP8390D_IRQ_CB(_devcb) \
10   devcb = &dp8390d_device::set_irq_callback(*device, DEVCB2_##_devcb);
2211
12#define MCFG_DP8390D_BREQ_CB(_devcb) \
13   devcb = &dp8390d_device::set_breq_callback(*device, DEVCB2_##_devcb);
14
15#define MCFG_DP8390D_MEM_READ_CB(_devcb) \
16   devcb = &dp8390d_device::set_mem_read_callback(*device, DEVCB2_##_devcb);
17
18#define MCFG_DP8390D_MEM_WRITE_CB(_devcb) \
19   devcb = &dp8390d_device::set_mem_write_callback(*device, DEVCB2_##_devcb);
20   
21#define MCFG_RTL8019A_IRQ_CB(_devcb) \
22   devcb = &rtl8019a_device::set_irq_callback(*device, DEVCB2_##_devcb);
23
24#define MCFG_RTL8019A_BREQ_CB(_devcb) \
25   devcb = &rtl8019a_device::set_breq_callback(*device, DEVCB2_##_devcb);
26
27#define MCFG_RTL8019A_MEM_READ_CB(_devcb) \
28   devcb = &rtl8019a_device::set_mem_read_callback(*device, DEVCB2_##_devcb);
29
30#define MCFG_RTL8019A_MEM_WRITE_CB(_devcb) \
31   devcb = &rtl8019a_device::set_mem_write_callback(*device, DEVCB2_##_devcb);
32
33
2334class dp8390_device : public device_t,
24                  public device_network_interface,
25                  public dp8390_interface
35                  public device_network_interface
2636{
2737public:
2838   // construction/destruction
2939   dp8390_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, float bandwidth, const char *shortname, const char *source);
40   
41   template<class _Object> static devcb2_base &set_irq_callback(device_t &device, _Object object) { return downcast<dp8390_device &>(device).m_irq_cb.set_callback(object); }
42   template<class _Object> static devcb2_base &set_breq_callback(device_t &device, _Object object) { return downcast<dp8390_device &>(device).m_breq_cb.set_callback(object); }
43   template<class _Object> static devcb2_base &set_mem_read_callback(device_t &device, _Object object) { return downcast<dp8390_device &>(device).m_mem_read_cb.set_callback(object); }
44   template<class _Object> static devcb2_base &set_mem_write_callback(device_t &device, _Object object) { return downcast<dp8390_device &>(device).m_mem_write_cb.set_callback(object); }
3045
3146   DECLARE_WRITE16_MEMBER( dp8390_w );
3247   DECLARE_READ16_MEMBER( dp8390_r );
r29542r29543
3853   // device-level overrides
3954   virtual void device_start();
4055   virtual void device_reset();
41   virtual void device_config_complete();
56
4257   int m_type;
4358
4459   enum {
r29542r29543
4762   };
4863
4964private:
50   devcb_resolved_write_line   irq_func;
51   devcb_resolved_write_line   breq_func;
52   devcb_resolved_read8        mem_read;
53   devcb_resolved_write8       mem_write;
65   devcb2_write_line    m_irq_cb;
66   devcb2_write_line    m_breq_cb;
67   devcb2_read8         m_mem_read_cb;
68   devcb2_write8        m_mem_write_cb;
5469
5570   void set_cr(UINT8 newcr);
5671   void check_dma_complete();
5772   void do_tx();
5873   bool mcast_ck(const UINT8 *buf, int len);
59   void check_irq() { irq_func((m_regs.imr & m_regs.isr & 0x7f)?ASSERT_LINE:CLEAR_LINE); }
74   void check_irq() { m_irq_cb((m_regs.imr & m_regs.isr & 0x7f)?ASSERT_LINE:CLEAR_LINE); }
6075   void recv_overflow();
6176   void stop();
6277   void recv(UINT8 *buf, int len);
branches/new_menus/src/emu/machine/aakart.c
r29542r29543
138138                    m_rx = m_keyb_row;
139139                    m_out_tx_func(ASSERT_LINE);
140140                }
141
141142                break;
142143            case 0x3f:
143144                if(m_keyb_enable & 1 && m_keyb_state & 1)
r29542r29543
147148                    m_out_tx_func(ASSERT_LINE);
148149                    m_keyb_state = 0;
149150                }
151
152
150153                break;
151154            case 0xfd:
152155                m_rx = 0xfd;
branches/new_menus/src/emu/machine/hd63450.c
r29542r29543
308308   m_reg[channel].csr &= ~0x08;  // channel no longer active
309309   m_reg[channel].cer = 0x11;
310310   m_reg[channel].ccr &= ~0xc0;
311   m_dma_error((offs_t)3, 1);
311   m_dma_error((offs_t)3, m_reg[channel].ccr & 0x08);
312312}
313313
314314void hd63450_device::dma_transfer_halt(int channel)
branches/new_menus/src/emu/cpu/arm/arm.h
r29542r29543
1414 *  PUBLIC FUNCTIONS
1515 ***************************************************************************************************/
1616
17enum
18{
19   ARM_COPRO_TYPE_UNKNOWN_CP15 = 0,
20   ARM_COPRO_TYPE_VL86C020
21};
1722
23struct arm_interface
24{
25   UINT8 coprotype;
26};
27
28#define ARM_INTERFACE(name) \
29   const arm_interface (name) =
30
31
1832enum
1933{
2034   ARM32_PC=0,
r29542r29543
2539};
2640
2741
28class arm_cpu_device : public cpu_device
42class arm_cpu_device : public cpu_device,
43                    public arm_interface
2944{
3045public:
3146   // construction/destruction
r29542r29543
3449
3550protected:
3651   // device-level overrides
52   virtual void device_config_complete();
3753   virtual void device_start();
3854   virtual void device_reset();
3955
r29542r29543
8096   void HandleMemSingle(UINT32 insn);
8197   void HandleMemBlock(UINT32 insn);
8298   void HandleCoPro(UINT32 insn);
99   void HandleCoProVL86C020(UINT32 insn);
83100   UINT32 decodeShift(UINT32 insn, UINT32 *pCarry);
84101   void arm_check_irq_state();
85102   int loadInc(UINT32 pat, UINT32 rbv, UINT32 s);
branches/new_menus/src/emu/cpu/arm/arm.c
r29542r29543
248248}
249249
250250
251
251252void arm_cpu_device::cpu_write32( int addr, UINT32 data )
252253{
253254   /* Unaligned writes are treated as normal writes */
r29542r29543
309310
310311/***************************************************************************/
311312
313void arm_cpu_device::device_config_complete()
314{
315   // inherit a copy of the static data
316   const arm_interface *intf = reinterpret_cast<const arm_interface *>(static_config());
317   if (intf != NULL)
318      *static_cast<arm_interface *>(this) = *intf;
319
320   // or set default if none provided
321   else
322   {
323      coprotype = ARM_COPRO_TYPE_UNKNOWN_CP15;
324   }
325}
326
312327void arm_cpu_device::device_reset()
313328{
314329   for ( int i = 0; i < 27; i++ )
r29542r29543
413428      }
414429      else if ((insn & 0x0f000000u) == 0x0e000000u)   /* Coprocessor */
415430      {
416         HandleCoPro(insn);
431         if(coprotype == 1)
432            HandleCoProVL86C020(insn);
433         else
434            HandleCoPro(insn);
435
417436         R15 += 4;
418437      }
419438      else if ((insn & 0x0f000000u) == 0x0f000000u)   /* Software interrupt */
r29542r29543
13631382   return accumulator;
13641383}
13651384
1385void arm_cpu_device::HandleCoProVL86C020( UINT32 insn )
1386{
1387   UINT32 rn=(insn>>12)&0xf;
1388   UINT32 crn=(insn>>16)&0xf;
13661389
1390   m_icount -= S_CYCLE;
1391
1392   /* MRC - transfer copro register to main register */
1393   if( (insn&0x0f100010)==0x0e100010 )
1394   {
1395      if(crn == 0) // ID, read only
1396      {
1397         /*
1398         0x41<<24 <- Designer code, Acorn Computer Ltd.
1399         0x56<<16 <- Manufacturer code, VLSI Technology Inc.
1400         0x03<<8 <- Part type, VLC86C020
1401         0x00<<0 <- Revision number, 0
1402         */
1403         SetRegister(rn, 0x41560300);
1404         debugger_break(machine());
1405      }
1406      else
1407         SetRegister(rn, m_coproRegister[crn]);
1408
1409   }
1410   /* MCR - transfer main register to copro register */
1411   else if( (insn&0x0f100010)==0x0e000010 )
1412   {
1413      if(crn != 0)
1414         m_coproRegister[crn]=GetRegister(rn);
1415
1416      printf("%08x:  VL86C020 copro instruction write %08x %d %d\n", R15 & 0x3ffffff, insn,rn,crn);
1417   }
1418   else
1419   {
1420      printf("%08x:  Unimplemented VL86C020 copro instruction %08x %d %d\n", R15 & 0x3ffffff, insn,rn,crn);
1421      debugger_break(machine());
1422   }
1423}
1424
13671425void arm_cpu_device::HandleCoPro( UINT32 insn )
13681426{
13691427   UINT32 rn=(insn>>12)&0xf;
branches/new_menus/src/emu/video/ramdac.c
r29542r29543
4343   : device_t(mconfig, RAMDAC, "ramdac", tag, owner, clock, "ramdac", __FILE__),
4444      device_memory_interface(mconfig, *this),
4545      m_space_config("videoram", ENDIANNESS_LITTLE, 8, 10, 0, NULL, *ADDRESS_MAP_NAME(ramdac_palram)),
46      m_palette(*this)
46      m_palette(*this),
47      m_split_read_reg(0)
4748{
4849}
4950
r29542r29543
8788}
8889
8990//-------------------------------------------------
90//  device_config_complete - perform any
91//  operations now that the configuration is
92//  complete
93//-------------------------------------------------
94
95void ramdac_device::device_config_complete()
96{
97   // inherit a copy of the static data
98   const ramdac_interface *intf = reinterpret_cast<const ramdac_interface *>(static_config());
99   if (intf != NULL)
100      *static_cast<ramdac_interface *>(this) = *intf;
101
102   // or initialize to defaults if none provided
103   else
104   {
105      // ...
106   }
107}
108
109
110//-------------------------------------------------
11191//  device_validity_check - perform validity checks
11292//  on this device
11393//-------------------------------------------------
branches/new_menus/src/emu/video/ramdac.h
r29542r29543
1616//  INTERFACE CONFIGURATION MACROS
1717//**************************************************************************
1818
19#define MCFG_RAMDAC_ADD(_tag,_config,_map,_palette_tag) \
19#define MCFG_RAMDAC_ADD(_tag, _map, _palette_tag) \
2020   MCFG_DEVICE_ADD(_tag, RAMDAC, 0) \
21   MCFG_DEVICE_CONFIG(_config) \
2221   MCFG_DEVICE_ADDRESS_MAP(AS_0, _map) \
2322   ramdac_device::static_set_palette_tag(*device, "^" _palette_tag);
2423
25#define RAMDAC_INTERFACE(name) \
26   const ramdac_interface (name) =
24#define MCFG_RAMDAC_SPLIT_READ(_split) \
25   ramdac_device::set_split_read(*device, _split);
2726
28// ======================> ramdac_interface
2927
30struct ramdac_interface
31{
32   UINT8 m_split_read_reg; // read register index is separated, seen in rltennis
33};
34
3528//**************************************************************************
3629//  TYPE DEFINITIONS
3730//**************************************************************************
r29542r29543
3932// ======================> ramdac_device
4033
4134class ramdac_device :   public device_t,
42                  public device_memory_interface,
43                  public ramdac_interface
35                  public device_memory_interface
4436{
4537public:
4638   // construction/destruction
r29542r29543
4840
4941   // static configuration
5042   static void static_set_palette_tag(device_t &device, const char *tag);
43   static void set_split_read(device_t &device, int split) { downcast<ramdac_device &>(device).m_split_read_reg = split; }
5144
5245   // I/O operations
5346   DECLARE_READ8_MEMBER( index_r );
r29542r29543
6861   virtual void device_validity_check(validity_checker &valid) const;
6962   virtual void device_start();
7063   virtual void device_reset();
71   virtual void device_config_complete();
7264   inline UINT8 readbyte(offs_t address);
7365   inline void writebyte(offs_t address, UINT8 data);
7466   inline void reg_increment(UINT8 inc_type);
r29542r29543
8173
8274   const address_space_config      m_space_config;
8375   required_device<palette_device> m_palette;
76   
77   UINT8 m_split_read_reg; // read register index is separated, seen in rltennis
8478};
8579
8680
r29542r29543
8882extern const device_type RAMDAC;
8983
9084
91
92//**************************************************************************
93//  GLOBAL VARIABLES
94//**************************************************************************
95
96
97
9885#endif
branches/new_menus/src/emu/video/t6a04.c
r29542r29543
1818const device_type T6A04 = &device_creator<t6a04_device>;
1919
2020//-------------------------------------------------
21//  device_config_complete - perform any
22//  operations now that the configuration is
23//  complete
24//-------------------------------------------------
25
26void t6a04_device::device_config_complete()
27{
28   // inherit a copy of the static data
29   const t6a04_interface *intf = reinterpret_cast<const t6a04_interface *>(static_config());
30
31   if (intf != NULL)
32   {
33      *static_cast<t6a04_interface *>(this) = *intf;
34   }
35   // or initialize to defaults if none provided
36   else
37   {
38      height = width = 0;
39   }
40}
41
42//-------------------------------------------------
4321//  device_validity_check - perform validity checks
4422//  on this device
4523//-------------------------------------------------
4624
4725void t6a04_device::device_validity_check(validity_checker &valid) const
4826{
49   if (height == 0 || width == 0)
27   if (m_height == 0 || m_width == 0)
5028      mame_printf_error("Configured with invalid parameter\n");
5129}
5230
r29542r29543
5937//-------------------------------------------------
6038
6139t6a04_device::t6a04_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
62   device_t(mconfig, T6A04, "T6A04", tag, owner, clock, "t6a04", __FILE__)
40   device_t(mconfig, T6A04, "T6A04", tag, owner, clock, "t6a04", __FILE__),
41   m_height(0),
42   m_width(0)
6343{
6444}
6545
r29542r29543
11595
11696UINT32 t6a04_device::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
11797{
118   UINT8 ypages = width>>3;
119   UINT8 last_line = m_zpos + height;
98   UINT8 ypages = m_width>>3;
99   UINT8 last_line = m_zpos + m_height;
120100
121101   if (m_display_on)
122102   {
branches/new_menus/src/emu/video/t6a04.h
r29542r29543
1111#ifndef __T6A04_H__
1212#define __T6A04_H__
1313
14#define MCFG_T6A04_ADD( _tag, _config ) \
15   MCFG_DEVICE_ADD( _tag, T6A04, 0 ) \
16   MCFG_DEVICE_CONFIG(_config)
17
1814//**************************************************************************
1915//  TYPE DEFINITIONS
2016//**************************************************************************
2117
22// ======================> t6a04_interface
23
24struct t6a04_interface
25{
26   UINT8 height;           // number of lines
27   UINT8 width;            // pixels for line
28};
29
3018// ======================> t6a04_device
3119
32class t6a04_device : public device_t,
33                  public t6a04_interface
20class t6a04_device : public device_t
3421{
3522public:
3623   // construction/destruction
3724   t6a04_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
3825
26   static void set_size(device_t &device, int w, int h)
27   {
28      t6a04_device &dev = downcast<t6a04_device &>(device);
29      dev.m_width = w;
30      dev.m_height = h;
31   }
32   
3933   // device interface
4034   DECLARE_WRITE8_MEMBER(control_write);
4135   DECLARE_READ8_MEMBER(control_read);
r29542r29543
4842   // device-level overrides
4943   virtual void device_start();
5044   virtual void device_reset();
51   virtual void device_config_complete();
5245   virtual void device_validity_check(validity_checker &valid) const;
5346
5447private:
r29542r29543
6558   UINT8 m_opa1;
6659   UINT8 m_opa2;
6760   UINT8 m_output_reg;
61
62   UINT8 m_height;           // number of lines
63   UINT8 m_width;            // pixels for line
6864};
6965
7066// device type definition
7167extern const device_type T6A04;
7268
69#define MCFG_T6A04_SIZE(_width, _height) \
70   t6a04_device::set_size(*device, _width, _height);
71
7372#endif
branches/new_menus/src/emu/video/psx.c
r29542r29543
38003800MACHINE_CONFIG_FRAGMENT( psxgpu )
38013801   MCFG_SCREEN_ADD("screen", RASTER)
38023802   MCFG_SCREEN_REFRESH_RATE( 60 )
3803   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC( 0 ))
3803   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
38043804   MCFG_SCREEN_SIZE( 1024, 1024 )
38053805   MCFG_SCREEN_VISIBLE_AREA( 0, 639, 0, 479 )
38063806   MCFG_SCREEN_UPDATE_DEVICE( DEVICE_SELF, psxgpu_device, update_screen )
branches/new_menus/src/emu/video/crtc_ega.c
r29542r29543
1616const device_type CRTC_EGA = &device_creator<crtc_ega_device>;
1717
1818
19void crtc_ega_device::device_config_complete()
20{
21   const crtc_ega_interface *intf = reinterpret_cast<const crtc_ega_interface *>(static_config());
22
23   if ( intf != NULL )
24   {
25      *static_cast<crtc_ega_interface *>(this) = *intf;
26   }
27   else
28   {
29      m_hpixels_per_column = 0;
30      m_begin_update = NULL;
31      m_update_row = NULL;
32      m_end_update = NULL;
33      memset(&m_out_de_func, 0, sizeof(m_out_de_func));
34      memset(&m_out_hsync_func, 0, sizeof(m_out_hsync_func));
35      memset(&m_out_vsync_func, 0, sizeof(m_out_vsync_func));
36      memset(&m_out_vblank_func, 0, sizeof(m_out_vblank_func));
37   }
38}
39
40
4119crtc_ega_device::crtc_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
4220   : device_t(mconfig, CRTC_EGA, "crtc_EGA", tag, owner, clock, "crtc_ega", __FILE__),
43      device_video_interface(mconfig, *this, false)
21      device_video_interface(mconfig, *this, false),
22      m_res_out_de_cb(*this),
23      m_res_out_hsync_cb(*this),
24      m_res_out_vsync_cb(*this),
25      m_res_out_vblank_cb(*this),
26      m_hpixels_per_column(0)
4427{
4528}
4629
r29542r29543
239222
240223void crtc_ega_device::set_de(int state)
241224{
242   if ( m_de != state )
225   if (m_de != state)
243226   {
244227      m_de = state;
245228
246      if ( !m_res_out_de_func.isnull() )
247         m_res_out_de_func( m_de );
229      if (!m_res_out_de_cb.isnull())
230         m_res_out_de_cb(m_de);
248231   }
249232}
250233
251234
252235void crtc_ega_device::set_hsync(int state)
253236{
254   if ( m_hsync != state )
237   if (m_hsync != state)
255238   {
256239      m_hsync = state;
257240
258      if ( !m_res_out_hsync_func.isnull() )
259         m_res_out_hsync_func( m_hsync );
241      if (!m_res_out_hsync_cb.isnull())
242         m_res_out_hsync_cb(m_hsync);
260243   }
261244}
262245
263246
264247void crtc_ega_device::set_vsync(int state)
265248{
266   if ( m_vsync != state )
249   if (m_vsync != state)
267250   {
268251      m_vsync = state;
269252
270      if ( !m_res_out_vsync_func.isnull() )
271         m_res_out_vsync_func( m_vsync );
253      if (!m_res_out_vsync_cb.isnull())
254         m_res_out_vsync_cb(m_vsync);
272255   }
273256}
274257
275258
276259void crtc_ega_device::set_vblank(int state)
277260{
278   if ( m_vblank != state )
261   if (m_vblank != state)
279262   {
280263      m_vblank = state;
281264
282      if ( !m_res_out_vblank_func.isnull() )
283         m_res_out_vblank_func( m_vblank );
265      if (!m_res_out_vblank_cb.isnull())
266         m_res_out_vblank_cb(m_vblank);
284267   }
285268}
286269
287270
288271void crtc_ega_device::set_cur(int state)
289272{
290   if ( m_cur != state )
273   if (m_cur != state)
291274   {
292275      m_cur = state;
293276
294//      if ( !m_res_out_cur_func.isnull() )
295//          m_res_out_cur_func( m_cur );
277//      if (!m_res_out_cur_cb.isnull())
278//          m_res_out_cur_cb(m_cur);
296279   }
297280}
298281
r29542r29543
538521   {
539522      UINT16 y;
540523
541      void *param = NULL;
524      assert(!m_row_update_cb.isnull() != NULL);
542525
543      assert(m_update_row != NULL);
544
545526      /* call the set up function if any */
546      if (m_begin_update != NULL)
547         param = m_begin_update(this, bitmap, cliprect);
527      if (!m_begin_update_cb.isnull())
528         m_begin_update_cb(bitmap, cliprect);
548529
549530      if (cliprect.min_y == 0)
550531      {
r29542r29543
569550         INT8 cursor_x = cursor_visible ? (m_cursor_addr - m_current_disp_addr) : -1;
570551
571552         /* call the external system to draw it */
572         m_update_row(this, bitmap, cliprect, m_current_disp_addr, ra, y, m_horiz_disp + 1, cursor_x, param);
553         m_row_update_cb(bitmap, cliprect, m_current_disp_addr, ra, y, m_horiz_disp + 1, cursor_x);
573554
574555         /* update MA if the last raster address */
575556         if (ra == m_max_ras_addr)
r29542r29543
577558      }
578559
579560      /* call the tear down function if any */
580      if (m_end_update != NULL)
581         m_end_update(this, bitmap, cliprect, param);
561      if (!m_end_update_cb.isnull())
562         m_end_update_cb(bitmap, cliprect);
582563   }
583564   else
584565      logerror("Invalid crtc_ega screen parameters - display disabled!!!\n");
r29542r29543
595576   assert(m_hpixels_per_column > 0);
596577
597578   /* resolve callbacks */
598   m_res_out_de_func.resolve(m_out_de_func, *this);
599   m_res_out_hsync_func.resolve(m_out_hsync_func, *this);
600   m_res_out_vsync_func.resolve(m_out_vsync_func, *this);
601   m_res_out_vblank_func.resolve(m_out_vblank_func, *this);
579   m_res_out_de_cb.resolve();
580   m_res_out_hsync_cb.resolve();
581   m_res_out_vsync_cb.resolve();
582   m_res_out_vblank_cb.resolve();
602583
584   /* bind delegates */
585   m_begin_update_cb.bind_relative_to(*owner());
586   m_row_update_cb.bind_relative_to(*owner());
587   m_end_update_cb.bind_relative_to(*owner());
588
603589   /* create the timers */
604590   m_line_timer = timer_alloc(TIMER_LINE);
605591   m_de_off_timer = timer_alloc(TIMER_DE_OFF);
r29542r29543
699685void crtc_ega_device::device_reset()
700686{
701687   /* internal registers other than status remain unchanged, all outputs go low */
702   if ( !m_res_out_de_func.isnull() )
703      m_res_out_de_func( FALSE );
688   if (!m_res_out_de_cb.isnull())
689      m_res_out_de_cb(false);
704690
705   if ( !m_res_out_hsync_func.isnull() )
706      m_res_out_hsync_func( FALSE );
691   if (!m_res_out_hsync_cb.isnull())
692      m_res_out_hsync_cb(false);
707693
708   if ( !m_res_out_vsync_func.isnull() )
709      m_res_out_vsync_func( FALSE );
694   if (!m_res_out_vsync_cb.isnull())
695      m_res_out_vsync_cb(false);
710696
711   if ( !m_res_out_vblank_func.isnull() )
712      m_res_out_vblank_func( FALSE );
697   if (!m_res_out_vblank_cb.isnull())
698      m_res_out_vblank_cb(false);
713699
714   if ( ! m_line_timer->enabled( ) )
700   if (!m_line_timer->enabled())
715701   {
716702      m_line_timer->adjust( attotime::from_ticks( m_horiz_char_total + 2, m_clock ) );
717703   }
branches/new_menus/src/emu/video/crtc_ega.h
r29542r29543
99
1010#include "emu.h"
1111
12#define CRTC_EGA_INTERFACE(name) \
13   const crtc_ega_interface (name) =
12/* callback definitions */
13typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect)> crtc_ega_begin_update_delegate;
1414
15#define MCFG_CRTC_EGA_ADD(_tag, _clock, _intrf) \
16   MCFG_DEVICE_ADD(_tag, CRTC_EGA, _clock) \
17   MCFG_DEVICE_CONFIG(_intrf)
15typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect, UINT16 ma, UINT8 ra,
16                              UINT16 y, UINT8 x_count, INT8 cursor_x)> crtc_ega_row_update_delegate;
1817
19#define MCFG_CRTC_EGA_SET_SCREEN MCFG_VIDEO_SET_SCREEN
18typedef device_delegate<void (bitmap_ind16 &bitmap, const rectangle &cliprect)> crtc_ega_end_update_delegate;
2019
2120
22class crtc_ega_device;
21#define CRTC_EGA_BEGIN_UPDATE(_name) void _name(bitmap_ind16 &bitmap, const rectangle &cliprect)
22#define CRTC_EGA_ROW_UPDATE(_name)   void _name(bitmap_ind16 &bitmap,    \
23                                    const rectangle &cliprect, UINT16 ma, UINT8 ra,                 \
24                                    UINT16 y, UINT8 x_count, INT8 cursor_x)
25#define CRTC_EGA_END_UPDATE(_name)   void _name(bitmap_ind16 &bitmap, const rectangle &cliprect)
2326
24/* callback definitions */
25typedef void * (*crtc_ega_begin_update_func)(crtc_ega_device *device, bitmap_ind16 &bitmap, const rectangle &cliprect);
26#define CRTC_EGA_BEGIN_UPDATE(name) void *name(crtc_ega_device *device, bitmap_ind16 &bitmap, const rectangle &cliprect)
2727
28typedef void (*crtc_ega_update_row_func)(crtc_ega_device *device, bitmap_ind16 &bitmap,
29                              const rectangle &cliprect, UINT16 ma, UINT8 ra,
30                              UINT16 y, UINT8 x_count, INT8 cursor_x, void *param);
31#define CRTC_EGA_UPDATE_ROW(name)       void name(crtc_ega_device *device, bitmap_ind16 &bitmap,    \
32                                    const rectangle &cliprect, UINT16 ma, UINT8 ra,                 \
33                                    UINT16 y, UINT8 x_count, INT8 cursor_x, void *param)
3428
35typedef void (*crtc_ega_end_update_func)(crtc_ega_device *device, bitmap_ind16 &bitmap, const rectangle &cliprect, void *param);
36#define CRTC_EGA_END_UPDATE(name)       void name(crtc_ega_device *device, bitmap_ind16 &bitmap, const rectangle &cliprect, void *param)
29#define MCFG_CRTC_EGA_SET_SCREEN MCFG_VIDEO_SET_SCREEN
3730
31#define MCFG_CRTC_EGA_BEGIN_UPDATE_CB(_class, _method) \
32   crtc_ega_device::set_begin_update_callback(*device, crtc_ega_begin_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
3833
39/* interface */
40struct crtc_ega_interface
41{
42   int m_hpixels_per_column;       /* number of pixels per video memory address */
34#define MCFG_CRTC_EGA_ROW_UPDATE_CB(_class, _method) \
35   crtc_ega_device::set_row_update_callback(*device, crtc_ega_row_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
4336
44   /* if specified, this gets called before any pixel update,
45      optionally return a pointer that will be passed to the
46      update and tear down callbacks */
47   crtc_ega_begin_update_func      m_begin_update;
37#define MCFG_CRTC_EGA_END_UPDATE_CB(_class, _method) \
38   crtc_ega_device::set_end_update_callback(*device, crtc_ega_end_update_delegate(&_class::_method, #_class "::" #_method, downcast<_class *>(owner)));
4839
49   /* this gets called for every row, the driver must output
50      x_count * hpixels_per_column pixels.
51      cursor_x indicates the character position where the cursor is, or -1
52      if there is no cursor on this row */
53   crtc_ega_update_row_func        m_update_row;
40#define MCFG_CRTC_EGA_HPIXELS_PER_COLUMN(_pix) \
41   crtc_ega_device::set_hpixels_per_column(*device, _pix);
5442
55   /* if specified, this gets called after all row updating is complete */
56   crtc_ega_end_update_func            m_end_update;
43#define MCFG_CRTC_EGA_RES_OUT_DE_CB(_devcb) \
44   devcb = &crtc_ega_device::set_res_out_de_callback(*device, DEVCB2_##_devcb);
5745
58   /* if specified, this gets called for every change of the disply enable signal */
59   devcb_write_line    m_out_de_func;
46#define MCFG_CRTC_EGA_RES_OUT_HSYNC_CB(_devcb) \
47   devcb = &crtc_ega_device::set_res_out_hsync_callback(*device, DEVCB2_##_devcb);
6048
61   /* if specified, this gets called for every change of the HSYNC signal */
62   devcb_write_line    m_out_hsync_func;
49#define MCFG_CRTC_EGA_RES_OUT_VSYNC_CB(_devcb) \
50   devcb = &crtc_ega_device::set_res_out_vsync_callback(*device, DEVCB2_##_devcb);
6351
64   /* if specified, this gets called for every change of the VSYNC signal */
65   devcb_write_line    m_out_vsync_func;
52#define MCFG_CRTC_EGA_RES_OUT_VBLANK_CB(_devcb) \
53   devcb = &crtc_ega_device::set_res_out_vblank_callback(*device, DEVCB2_##_devcb);
6654
67   devcb_write_line    m_out_vblank_func;
68};
6955
70
7156class crtc_ega_device : public device_t,
72                  public device_video_interface,
73                  public crtc_ega_interface
57                  public device_video_interface
7458{
7559public:
7660   crtc_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
7761
62   template<class _Object> static devcb2_base &set_res_out_de_callback(device_t &device, _Object object)
63                  { return downcast<crtc_ega_device &>(device).m_res_out_de_cb.set_callback(object); }
64   template<class _Object> static devcb2_base &set_res_out_hsync_callback(device_t &device, _Object object)
65                  { return downcast<crtc_ega_device &>(device).m_res_out_hsync_cb.set_callback(object); }
66   template<class _Object> static devcb2_base &set_res_out_vsync_callback(device_t &device, _Object object)
67                  { return downcast<crtc_ega_device &>(device).m_res_out_vsync_cb.set_callback(object); }
68   template<class _Object> static devcb2_base &set_res_out_vblank_callback(device_t &device, _Object object)
69                  { return downcast<crtc_ega_device &>(device).m_res_out_vblank_cb.set_callback(object); }
70
71   static void set_begin_update_callback(device_t &device, crtc_ega_begin_update_delegate callback) { downcast<crtc_ega_device &>(device).m_begin_update_cb = callback; }
72   static void set_row_update_callback(device_t &device, crtc_ega_row_update_delegate callback) { downcast<crtc_ega_device &>(device).m_row_update_cb = callback; }
73   static void set_end_update_callback(device_t &device, crtc_ega_end_update_delegate callback) { downcast<crtc_ega_device &>(device).m_end_update_cb = callback; }
74   static void set_hpixels_per_column(device_t &device, int hpixels_per_column) { downcast<crtc_ega_device &>(device).m_hpixels_per_column = hpixels_per_column; }
75   
7876   /* select one of the registers for reading or writing */
7977   DECLARE_WRITE8_MEMBER( address_w );
8078
r29542r29543
106104
107105protected:
108106   // device-level overrides
109   virtual void device_config_complete();
110107   virtual void device_start();
111108   virtual void device_reset();
112109   virtual void device_post_load();
113110   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
114111
115112private:
116   devcb_resolved_write_line   m_res_out_de_func;
117   devcb_resolved_write_line   m_res_out_cur_func;
118   devcb_resolved_write_line   m_res_out_hsync_func;
119   devcb_resolved_write_line   m_res_out_vsync_func;
120   devcb_resolved_write_line   m_res_out_vblank_func;
113   devcb2_write_line   m_res_out_de_cb;
114   devcb2_write_line   m_res_out_hsync_cb;
115   devcb2_write_line   m_res_out_vsync_cb;
116   devcb2_write_line   m_res_out_vblank_cb;
121117
118   /* if specified, this gets called before any pixel update,
119    optionally return a pointer that will be passed to the
120    update and tear down callbacks */
121   crtc_ega_begin_update_delegate      m_begin_update_cb;
122   
123   /* this gets called for every row, the driver must output
124    x_count * hpixels_per_column pixels.
125    cursor_x indicates the character position where the cursor is, or -1
126    if there is no cursor on this row */
127   crtc_ega_row_update_delegate        m_row_update_cb;
128   
129   /* if specified, this gets called after all row updating is complete */
130   crtc_ega_end_update_delegate        m_end_update_cb;
131   
122132   /* ega/vga register file */
123133   UINT8   m_horiz_char_total; /* 0x00 */
124134   UINT8   m_horiz_disp;           /* 0x01 */
r29542r29543
157167   UINT8   m_register_address_latch;
158168   bool    m_cursor_state; /* 0 = off, 1 = on */
159169   UINT8   m_cursor_blink_count;
170   int     m_hpixels_per_column;       /* number of pixels per video memory address */
160171
161172   /* output signals */
162173   int     m_cur;
branches/new_menus/src/emu/video/hd63484.c
r29542r29543
5858   m_rwp_dn(0),
5959   m_cpx(0),
6060   m_cpy(0),
61   m_regno(0)
61   m_regno(0),
62   m_skattva_hack(0)
6263{
6364}
6465
6566//-------------------------------------------------
66//  device_config_complete - perform any
67//  operations now that the configuration is
68//  complete
69//-------------------------------------------------
70
71void hd63484_device::device_config_complete()
72{
73   // inherit a copy of the static data
74   const hd63484_interface *intf = reinterpret_cast<const hd63484_interface *>(static_config());
75   if (intf != NULL)
76      *static_cast<hd63484_interface *>(this) = *intf;
77
78   // or initialize to defaults if none provided
79   else
80   {
81      m_skattva_hack = 0;
82   }
83}
84
85//-------------------------------------------------
8667//  device_start - device-specific startup
8768//-------------------------------------------------
8869
r29542r29543
122103   save_item(NAME(m_cpx));
123104   save_item(NAME(m_cpy));
124105   save_item(NAME(m_regno));
125   save_item(NAME(m_skattva_hack));
126106}
127107
128108//-------------------------------------------------
branches/new_menus/src/emu/video/hd63484.h
r29542r29543
2121    TYPE DEFINITIONS
2222***************************************************************************/
2323
24struct hd63484_interface
24class hd63484_device : public device_t
2525{
26   int        m_skattva_hack;
27};
28
29class hd63484_device : public device_t,
30                              public hd63484_interface
31{
3226public:
3327   hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
3428   ~hd63484_device() {}
r29542r29543
4539
4640protected:
4741   // device-level overrides
48   virtual void device_config_complete();
4942   virtual void device_start();
5043   virtual void device_reset();
5144
r29542r29543
6457   INT16        m_cpx, m_cpy;
6558
6659   int          m_regno;
60   int          m_skattva_hack;
6761
6862   void doclr16( int opcode, UINT16 fill, int *dst, INT16 _ax, INT16 _ay );
6963   void docpy16( int opcode, int src, int *dst, INT16 _ax, INT16 _ay );
r29542r29543
7872   void paint( int sx, int sy, int col );
7973
8074   void command_w(UINT16 cmd);
81
8275};
8376
8477extern ATTR_DEPRECATED const device_type HD63484;
8578
86
87/***************************************************************************
88    DEVICE CONFIGURATION MACROS
89***************************************************************************/
90
91#define MCFG_HD63484_ADD(_tag, _interface) \
92   MCFG_DEVICE_ADD(_tag, HD63484, 0) \
93   MCFG_DEVICE_CONFIG(_interface)
94
9579#endif /* __HD63484_H__ */
branches/new_menus/src/emu/video/mb_vcu.c
r29542r29543
156156      device_video_interface(mconfig, *this),
157157      m_videoram_space_config("videoram", ENDIANNESS_LITTLE, 8, 19, 0, NULL, *ADDRESS_MAP_NAME(mb_vcu_vram)),
158158      m_paletteram_space_config("palram", ENDIANNESS_LITTLE, 8, 16, 0, NULL, *ADDRESS_MAP_NAME(mb_vcu_pal_ram)),
159      m_cpu(*this),
159160      m_palette(*this)
160161{
161162}
162163
163164//-------------------------------------------------
164//  device_config_complete - perform any
165//  operations now that the configuration is
166//  complete
167//-------------------------------------------------
168
169void mb_vcu_device::device_config_complete()
170{
171   // inherit a copy of the static data
172   const mb_vcu_interface *intf = reinterpret_cast<const mb_vcu_interface *>(static_config());
173   if (intf != NULL)
174   {
175      *static_cast<mb_vcu_interface *>(this) = *intf;
176   }
177
178   // or initialize to defaults if none provided
179   else
180   {
181      m_cpu_tag = NULL;
182      //m_screen_tag = NULL;
183   }
184}
185
186//-------------------------------------------------
187165//  device_validity_check - perform validity checks
188166//  on this device
189167//-------------------------------------------------
r29542r29543
200178void mb_vcu_device::device_start()
201179{
202180   // TODO: m_screen_tag
203   m_cpu = machine().device<cpu_device>(m_cpu_tag);
204181   m_ram = auto_alloc_array_clear(machine(), UINT8, 0x800);
205182   m_palram = auto_alloc_array_clear(machine(), UINT8, 0x100);
206183
branches/new_menus/src/emu/video/mb_vcu.h
r29542r29543
11// license: ?
22// copyright-holders: Angelo Salese
3/***************************************************************************
4
5Template for skeleton device
6
7***************************************************************************/
8
93#pragma once
104
115#ifndef __MB_VCUDEV_H__
126#define __MB_VCUDEV_H__
137
148
15
169//**************************************************************************
17//  INTERFACE CONFIGURATION MACROS
18//**************************************************************************
19
20#define MCFG_MB_VCU_ADD(_tag,_freq,_config, _palette_tag) \
21   MCFG_DEVICE_ADD(_tag, MB_VCU, _freq) \
22   MCFG_DEVICE_CONFIG(_config) \
23   mb_vcu_device::static_set_palette_tag(*device, "^" _palette_tag);
24
25//**************************************************************************
2610//  TYPE DEFINITIONS
2711//**************************************************************************
2812
29// ======================> mb_vcu_interface
30
31struct mb_vcu_interface
32{
33   const char         *m_cpu_tag;
34};
35
3613// ======================> mb_vcu_device
3714
3815class mb_vcu_device : public device_t,
3916                  public device_memory_interface,
40                  public device_video_interface,
41                  public mb_vcu_interface
17                  public device_video_interface
4218{
4319public:
4420   // construction/destruction
r29542r29543
4622
4723   // static configuration
4824   static void static_set_palette_tag(device_t &device, const char *tag);
25   static void set_cpu_tag(device_t &device, const char *tag) { downcast<mb_vcu_device &>(device).m_cpu.set_tag(tag); }
4926
5027   // I/O operations
5128   DECLARE_WRITE8_MEMBER( write_vregs );
r29542r29543
6542
6643protected:
6744   // device-level overrides
68   virtual void device_config_complete();
6945   virtual void device_validity_check(validity_checker &valid) const;
7046   virtual void device_start();
7147   virtual void device_reset();
r29542r29543
8157   UINT8 m_status;
8258   UINT8 *m_ram;
8359   UINT8 *m_palram;
84   cpu_device *m_cpu;
8560   UINT16 m_param_offset_latch;
8661
8762   INT16 m_xpos, m_ypos;
r29542r29543
9570   double m_weights_r[2];
9671   double m_weights_g[3];
9772   double m_weights_b[3];
73   required_device<cpu_device>     m_cpu;
9874   required_device<palette_device> m_palette;
9975};
10076
r29542r29543
10379extern const device_type MB_VCU;
10480
10581
106
10782//**************************************************************************
108//  GLOBAL VARIABLES
83//  INTERFACE CONFIGURATION MACROS
10984//**************************************************************************
11085
86#define MCFG_MB_VCU_CPU(_tag) \
87   mb_vcu_device::set_cpu_tag(*device, "^"_tag);
11188
89#define MCFG_MB_VCU_PALETTE(_palette_tag) \
90   mb_vcu_device::static_set_palette_tag(*device, "^" _palette_tag);
11291
11392#endif
branches/new_menus/src/lib/formats/td0_dsk.c
r29542r29543
823823   dynamic_buffer imagebuf(max_size);
824824   UINT8 header[12];
825825
826   try
826   io_generic_read(io, header, 0, 12);
827   head_count = header[9];
828
829   if(header[0] == 't')
827830   {
828      io_generic_read(io, header, 0, 12);
829      head_count = header[9];
831      td0dsk_t disk_decode;
830832
831      if(header[0] == 't')
832      {
833         td0dsk_t disk_decode;
833      disk_decode.floppy_file = io;
834      disk_decode.init_Decode();
835      disk_decode.floppy_file_offset = 12;
836      disk_decode.Decode(imagebuf, max_size);
837   }
838   else
839      io_generic_read(io, imagebuf, 12, io_generic_size(io));
834840
835         disk_decode.floppy_file = io;
836         disk_decode.init_Decode();
837         disk_decode.floppy_file_offset = 12;
838         disk_decode.Decode(imagebuf, max_size);
839      }
840      else
841         io_generic_read(io, imagebuf, 12, io_generic_size(io));
841   if(header[7] & 0x80)
842      offset = 10 + imagebuf[2] + (imagebuf[3] << 8);
842843
843      if(header[7] & 0x80)
844         offset = 10 + imagebuf[2] + (imagebuf[3] << 8);
844   track_spt = imagebuf[offset];
845   if(track_spt == 255) // Empty file?
846      return false;
845847
846      track_spt = imagebuf[offset];
847      if(track_spt == 255) // Empty file?
848         throw false;
849
850      switch(header[6])
851      {
852         case 2:
853            if((imagebuf[offset + 2] & 0x7f) == 2) // ?
854            {
855               if(head_count == 2)
856                  image->set_variant(floppy_image::DSHD);
857               else
858                  throw false; // single side hd?
859               break;
860            }
861            /* no break; could be qd, won't know until tracks are counted */
862         case 1:
848   switch(header[6])
849   {
850      case 2:
851         if((imagebuf[offset + 2] & 0x7f) == 2) // ?
852         {
863853            if(head_count == 2)
864               image->set_variant(floppy_image::DSDD);
854               image->set_variant(floppy_image::DSHD);
865855            else
866               image->set_variant(floppy_image::SSDD);
856               return false; // single side hd?
867857            break;
868         case 4:
869            if((imagebuf[offset + 2] & 0x7f) == 2) // ?
870            {
871               if(head_count == 2)
872                  image->set_variant(floppy_image::DSHD);
873               else
874                  throw false; // single side 3.5?
875               break;
876            }
877            /* no break */
878         case 3:
858         }
859         /* no break; could be qd, won't know until tracks are counted */
860      case 1:
861         if(head_count == 2)
862            image->set_variant(floppy_image::DSDD);
863         else
864            image->set_variant(floppy_image::SSDD);
865         break;
866      case 4:
867         if((imagebuf[offset + 2] & 0x7f) == 2) // ?
868         {
879869            if(head_count == 2)
880            {
881               if(form_factor == floppy_image::FF_525)
882                  image->set_variant(floppy_image::DSQD);
883               else
884                  image->set_variant(floppy_image::DSDD);
885            }
870               image->set_variant(floppy_image::DSHD);
886871            else
887            {
888               if(form_factor == floppy_image::FF_525)
889                  image->set_variant(floppy_image::SSQD);
890               else
891                  throw false; // single side 3.5?
892            }
872               return false; // single side 3.5?
893873            break;
894      }
874         }
875         /* no break */
876      case 3:
877         if(head_count == 2)
878         {
879            if(form_factor == floppy_image::FF_525)
880               image->set_variant(floppy_image::DSQD);
881            else
882               image->set_variant(floppy_image::DSDD);
883         }
884         else
885         {
886            if(form_factor == floppy_image::FF_525)
887               image->set_variant(floppy_image::SSQD);
888            else
889               return false; // single side 3.5?
890         }
891         break;
892   }
895893
896      static const int rates[3] = { 250000, 300000, 500000 };
897      int rate = (header[5] & 0x7f) >= 3 ? 500000 : rates[header[5] & 0x7f];
898      int rpm = form_factor == floppy_image::FF_8 || (form_factor == floppy_image::FF_525 && rate >= 300000) ? 360 : 300;
899      int base_cell_count = rate*60/rpm;
894   static const int rates[3] = { 250000, 300000, 500000 };
895   int rate = (header[5] & 0x7f) >= 3 ? 500000 : rates[header[5] & 0x7f];
896   int rpm = form_factor == floppy_image::FF_8 || (form_factor == floppy_image::FF_525 && rate >= 300000) ? 360 : 300;
897   int base_cell_count = rate*60/rpm;
900898
901      while(track_spt != 255)
899   while(track_spt != 255)
900   {
901      desc_pc_sector sects[256];
902      UINT8 sect_data[65536];
903      int sdatapos = 0;
904      int track = imagebuf[offset + 1];
905      int head = imagebuf[offset + 2] & 1;
906      bool fm = (header[5] & 0x80) || (imagebuf[offset + 2] & 0x80); // ?
907      offset += 4;
908      for(int i = 0; i < track_spt; i++)
902909      {
903         desc_pc_sector sects[256];
904         UINT8 sect_data[65536];
905         int sdatapos = 0;
906         int track = imagebuf[offset + 1];
907         int head = imagebuf[offset + 2] & 1;
908         bool fm = (header[5] & 0x80) || (imagebuf[offset + 2] & 0x80); // ?
909         offset += 4;
910         for(int i = 0; i < track_spt; i++)
911         {
912            UINT8 *hs = &imagebuf[offset];
913            UINT16 size;
914            offset += 6;
910         UINT8 *hs = &imagebuf[offset];
911         UINT16 size;
912         offset += 6;
915913
916            sects[i].track       = hs[0];
917            sects[i].head        = hs[1];
918            sects[i].sector      = hs[2];
919            sects[i].size        = hs[3];
920            sects[i].deleted     = (hs[4] & 4) == 4;
921            sects[i].bad_crc     = (hs[4] & 2) == 2;
914         sects[i].track       = hs[0];
915         sects[i].head        = hs[1];
916         sects[i].sector      = hs[2];
917         sects[i].size        = hs[3];
918         sects[i].deleted     = (hs[4] & 4) == 4;
919         sects[i].bad_crc     = (hs[4] & 2) == 2;
922920
923            if(hs[4] & 0x30)
924               size = 0;
925            else
921         if(hs[4] & 0x30)
922            size = 0;
923         else
924         {
925            offset += 3;
926            size = 128 << hs[3];
927            int j, k;
928            switch(hs[8])
926929            {
927               offset += 3;
928               size = 128 << hs[3];
929               int j, k;
930               switch(hs[8])
931               {
932                  default:
933                     throw false;
934                  case 0:
935                     memcpy(&sect_data[sdatapos], &imagebuf[offset], size);
936                     offset += size;
937                     break;
938                  case 1:
939                     offset += 4;
940                     k = (hs[9] + (hs[10] << 8)) * 2;
941                     k = (k <= size) ? k : size;
942                     for(j = 0; j < k; j += 2)
930               default:
931                  return false;
932               case 0:
933                  memcpy(&sect_data[sdatapos], &imagebuf[offset], size);
934                  offset += size;
935                  break;
936               case 1:
937                  offset += 4;
938                  k = (hs[9] + (hs[10] << 8)) * 2;
939                  k = (k <= size) ? k : size;
940                  for(j = 0; j < k; j += 2)
941                  {
942                     sect_data[sdatapos + j] = hs[11];
943                     sect_data[sdatapos + j + 1] = hs[12];
944                  }
945                  if(k < size)
946                     memset(&sect_data[sdatapos + k], '\0', size - k);
947                  break;
948               case 2:
949                  k = 0;
950                  while(k < size)
951                  {
952                     UINT16 len = imagebuf[offset];
953                     UINT16 rep = imagebuf[offset + 1];
954                     offset += 2;
955                     if(!len)
943956                     {
944                        sect_data[sdatapos + j] = hs[11];
945                        sect_data[sdatapos + j + 1] = hs[12];
957                        memcpy(&sect_data[sdatapos + k], &imagebuf[offset], rep);
958                        offset += rep;
959                        k += rep;
946960                     }
947                     if(k < size)
948                        memset(&sect_data[sdatapos + k], '\0', size - k);
949                     break;
950                  case 2:
951                     k = 0;
952                     while(k < size)
961                     else
953962                     {
954                        UINT16 len = imagebuf[offset];
955                        UINT16 rep = imagebuf[offset + 1];
956                        offset += 2;
957                        if(!len)
958                        {
959                           memcpy(&sect_data[sdatapos + k], &imagebuf[offset], rep);
960                           offset += rep;
961                           k += rep;
962                        }
963                        else
964                        {
965                           len = (1 << len);
966                           rep = len * rep;
967                           rep = ((rep + k) <= size) ? rep : (size - k);
968                           for(j = 0; j < rep; j += len)
969                              memcpy(&sect_data[sdatapos + j + k], &imagebuf[offset], len);
970                           k += rep;
971                           offset += len;
972                        }
963                        len = (1 << len);
964                        rep = len * rep;
965                        rep = ((rep + k) <= size) ? rep : (size - k);
966                        for(j = 0; j < rep; j += len)
967                           memcpy(&sect_data[sdatapos + j + k], &imagebuf[offset], len);
968                        k += rep;
969                        offset += len;
973970                     }
974                     break;
975               }
971                  }
972                  break;
976973            }
974         }
977975
978            sects[i].actual_size = size;
976         sects[i].actual_size = size;
979977
980            if(size)
981            {
982               sects[i].data = &sect_data[sdatapos];
983               sdatapos += size;
984            }
985            else
986               sects[i].data = NULL;
978         if(size)
979         {
980            sects[i].data = &sect_data[sdatapos];
981            sdatapos += size;
987982         }
988         track_count = track;
989
990         if(fm)
991            build_pc_track_fm(track, head, image, base_cell_count, track_spt, sects, calc_default_pc_gap3_size(form_factor, sects[0].actual_size));
992983         else
993            build_pc_track_mfm(track, head, image, base_cell_count*2, track_spt, sects, calc_default_pc_gap3_size(form_factor, sects[0].actual_size));
994
995         track_spt = imagebuf[offset];
984            sects[i].data = NULL;
996985      }
997      if((track_count > 50) && (form_factor == floppy_image::FF_525)) // ?
998      {
999         if(image->get_variant() == floppy_image::DSDD)
1000            image->set_variant(floppy_image::DSQD);
1001         else if(image->get_variant() == floppy_image::SSDD)
1002            image->set_variant(floppy_image::SSQD);
1003      }
1004      throw true;
986      track_count = track;
987
988      if(fm)
989         build_pc_track_fm(track, head, image, base_cell_count, track_spt, sects, calc_default_pc_gap3_size(form_factor, sects[0].actual_size));
990      else
991         build_pc_track_mfm(track, head, image, base_cell_count*2, track_spt, sects, calc_default_pc_gap3_size(form_factor, sects[0].actual_size));
992
993      track_spt = imagebuf[offset];
1005994   }
1006   catch(bool ret)
995   if((track_count > 50) && (form_factor == floppy_image::FF_525)) // ?
1007996   {
1008      return ret;
997      if(image->get_variant() == floppy_image::DSDD)
998         image->set_variant(floppy_image::DSQD);
999      else if(image->get_variant() == floppy_image::SSDD)
1000         image->set_variant(floppy_image::SSQD);
10091001   }
1010   return false;
1002   return true;
10111003}
10121004
10131005
branches/new_menus/hash/gameboy.xml
r29542r29543
1593315933      <part name="cart" interface="gameboy_cart">
1593415934         <feature name="slot" value="rom_mbc1" />
1593515935         <dataarea name="rom" size="65536">
15936            <rom name="power racer (usa, europe).bin" size="65536" crc="cf8aeee8" sha1="6e10f59bb4090c0d0e79b57a2e39d9577ce0282e" offset="000000" />
15936            <rom name="power racer (europe).bin" size="65536" crc="cf8aeee8" sha1="6e10f59bb4090c0d0e79b57a2e39d9577ce0282e" offset="000000" />
1593715937         </dataarea>
1593815938      </part>
1593915939   </software>
r29542r29543
1594615946      <part name="cart" interface="gameboy_cart">
1594715947         <feature name="slot" value="rom_mbc1" />
1594815948         <dataarea name="rom" size="65536">
15949            <rom name="power racer (usa, europe).bin" size="65536" crc="afc6a949" sha1="c0c8f28a9b66b6c08a0ed4d31a186c3382160c3d" offset="000000" />
15949            <rom name="power racer (usa).bin" size="65536" crc="afc6a949" sha1="c0c8f28a9b66b6c08a0ed4d31a186c3382160c3d" offset="000000" />
1595015950         </dataarea>
1595115951      </part>
1595215952   </software>
Property changes on: branches/new_menus
Modified: svn:mergeinfo
   Merged /trunk:r29483-29505

Previous 199869 Revisions Next


© 1997-2024 The MAME Team