Previous 15994 Revisions Next

r2302 Sunday 6th April, 2008 at 14:13:33 UTC by Wilbert Pol
[BEBOX/AT/PC] Updated to use the dma 8237 device implementation.
[src/mess/drivers]at.c bebox.c pc.c
[src/mess/includes]at.h bebox.h pc.h
[src/mess/machine]at.c bebox.c pc.c

src/mess/includes/at.h
r2301r2302
1212
1313/*----------- defined in machine/at.c -----------*/
1414
15extern const struct dma8237_interface at_dma8237_1_config;
16extern const struct dma8237_interface at_dma8237_2_config;
17
18
19READ8_HANDLER( at_page8_r );
20WRITE8_HANDLER( at_page8_w );
21
1522DRIVER_INIT( atcga );
1623DRIVER_INIT( at386 );
1724DRIVER_INIT( at586 );
src/mess/includes/bebox.h
r2301r2302
1313/*----------- defined in machine/bebox.c -----------*/
1414
1515extern const struct pit8253_config bebox_pit8254_config;
16extern const struct dma8237_interface bebox_dma8237_1_config;
17extern const struct dma8237_interface bebox_dma8237_2_config;
1618
1719MACHINE_RESET( bebox );
1820DRIVER_INIT( bebox );
src/mess/includes/pc.h
r2301r2302
99
1010/*----------- defined in machine/pc.c -----------*/
1111
12extern const struct dma8237_interface pc_dma8237_config;
13
1214void mess_init_pc_common(UINT32 flags);
1315
16READ8_HANDLER( pc_page_r );
17WRITE8_HANDLER( pc_page_w );
18
1419DRIVER_INIT( pccga );
1520DRIVER_INIT( pcmda );
1621DRIVER_INIT( europc );
r2301r2302
2126DRIVER_INIT( pc_vga );
2227DRIVER_INIT( t1000hx );
2328
24MACHINE_RESET( pc_mda );
25MACHINE_RESET( pc_cga );
26MACHINE_RESET( pc_t1t );
27MACHINE_RESET( pc_aga );
28MACHINE_RESET( pc_pc1512 );
29MACHINE_RESET( pc_vga );
29MACHINE_START( pc );
30MACHINE_RESET( pc );
3031
3132INTERRUPT_GEN( pc_cga_frame_interrupt );
3233INTERRUPT_GEN( pc_pc1512_frame_interrupt );
src/mess/machine/at.c
r2301r2302
2626#include "audio/sblaster.h"
2727#include "machine/i82439tx.h"
2828
29#include "machine/pc_fdc.h"
30#include "machine/pc_hdc.h"
31
32#define LOG_PORT80 0
33
2934static const SOUNDBLASTER_CONFIG soundblaster = { 1,5, {1,0} };
3035
3136
r2301r2302
4045
4146static void init_at_common(const struct kbdc8042_interface *at8042)
4247{
43   mess_init_pc_common(PCCOMMON_KEYBOARD_AT | PCCOMMON_DMA8237_AT);
48   mess_init_pc_common(PCCOMMON_KEYBOARD_AT);
4449   mc146818_init(MC146818_STANDARD);
4550   soundblaster_config(&soundblaster);
4651   kbdc8042_init(at8042);
r2301r2302
6368
6469
6570
71/*************************************************************************
72 *
73 *      PC DMA stuff
74 *
75 *************************************************************************/
76
77static UINT8 dma_offset[2][4];
78static UINT8 at_pages[0x10];
79
80
81READ8_HANDLER(at_page8_r)
82{
83   UINT8 data = at_pages[offset % 0x10];
84
85   switch(offset % 8) {
86   case 1:
87      data = dma_offset[(offset / 8) & 1][2];
88      break;
89   case 2:
90      data = dma_offset[(offset / 8) & 1][3];
91      break;
92   case 3:
93      data = dma_offset[(offset / 8) & 1][1];
94      break;
95   case 7:
96      data = dma_offset[(offset / 8) & 1][0];
97      break;
98   }
99   return data;
100}
101
102
103WRITE8_HANDLER(at_page8_w)
104{
105   at_pages[offset % 0x10] = data;
106
107   if (LOG_PORT80 && (offset == 0))
108      logerror(" at_page8_w(): Port 80h <== 0x%02x (PC=0x%08x)\n", data, (unsigned) activecpu_get_reg(REG_PC));
109
110   switch(offset % 8) {
111   case 1:
112      dma_offset[(offset / 8) & 1][2] = data;
113      break;
114   case 2:
115      dma_offset[(offset / 8) & 1][3] = data;
116      break;
117   case 3:
118      dma_offset[(offset / 8) & 1][1] = data;
119      break;
120   case 7:
121      dma_offset[(offset / 8) & 1][0] = data;
122      break;
123   }
124}
125
126
127static DMA8237_MEM_READ( pc_dma_read_byte )
128{
129   UINT8 result;
130   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
131      & 0xFF0000;
132
133   cpuintrf_push_context(0);
134   result = program_read_byte(page_offset + offset);
135   cpuintrf_pop_context();
136
137   return result;
138}
139
140
141static DMA8237_MEM_WRITE( pc_dma_write_byte )
142{
143   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
144      & 0xFF0000;
145
146   cpuintrf_push_context(0);
147   program_write_byte(page_offset + offset, data);
148   cpuintrf_pop_context();
149}
150
151
152static DMA8237_CHANNEL_READ( at_dma8237_fdc_dack_r ) {
153   return pc_fdc_dack_r();
154}
155
156
157static DMA8237_CHANNEL_READ( at_dma8237_hdc_dack_r ) {
158   return pc_hdc_dack_r();
159}
160
161
162static DMA8237_CHANNEL_WRITE( at_dma8237_fdc_dack_w ) {
163   pc_fdc_dack_w( data );
164}
165
166
167static DMA8237_CHANNEL_WRITE( at_dma8237_hdc_dack_w ) {
168   pc_hdc_dack_w( data );
169}
170
171
172static DMA8237_OUT_EOP( at_dma8237_out_eop ) {
173   pc_fdc_set_tc_state( state );
174}
175
176
177const struct dma8237_interface at_dma8237_1_config =
178{
179   0,
180   1.0e-6, // 1us
181
182   pc_dma_read_byte,
183   pc_dma_write_byte,
184
185   { 0, 0, at_dma8237_fdc_dack_r, at_dma8237_hdc_dack_r },
186   { 0, 0, at_dma8237_fdc_dack_w, at_dma8237_hdc_dack_w },
187   at_dma8237_out_eop
188};
189
190
191/* TODO: How is still hooked up in the actual machine? */
192const struct dma8237_interface at_dma8237_2_config =
193{
194   0,
195   1.0e-6, // 1us
196
197   NULL,
198   NULL,
199
200   { NULL, NULL, NULL, NULL },
201   { NULL, NULL, NULL, NULL },
202   NULL
203};
204
205
206/**********************************************************
207 *
208 * NEC uPD765 floppy interface
209 *
210 **********************************************************/
211
212#define FDC_DMA 2
213
214static void at_fdc_interrupt(int state)
215{
216   pic8259_set_irq_line(0, 6, state);
217}
218
219
220static void at_fdc_dma_drq(int state, int read_)
221{
222   dma8237_drq_write((device_config*)device_list_find_by_tag( Machine->config->devicelist, DMA8237, "dma8237_1" ), FDC_DMA, state);
223}
224
225static const struct pc_fdc_interface fdc_interface =
226{
227   NEC765A,
228   NEC765_RDY_PIN_CONNECTED,
229   at_fdc_interrupt,
230   at_fdc_dma_drq,
231};
232
233
66234DRIVER_INIT( atcga )
67235{
68236   static const struct kbdc8042_interface at8042 =
r2301r2302
161329MACHINE_START( at )
162330{
163331   cpunum_set_irq_callback(0, at_irq_callback);
332   pc_fdc_init( &fdc_interface );
164333}
165334
166335
167336
168337MACHINE_RESET( at )
169338{
170   dma8237_reset();
171339}
340
src/mess/machine/bebox.c
r2301r2302
662662}
663663
664664
665static UINT8 bebox_dma_read_byte(int channel, offs_t offset)
665static DMA8237_MEM_READ( bebox_dma_read_byte )
666666{
667667   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
668668      & 0x7FFF0000;
r2301r2302
670670}
671671
672672
673static void bebox_dma_write_byte(int channel, offs_t offset, UINT8 data)
673static DMA8237_MEM_WRITE( bebox_dma_write_byte )
674674{
675675   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
676676      & 0x7FFF0000;
r2301r2302
678678}
679679
680680
681static const struct dma8237_interface bebox_dma =
681static DMA8237_CHANNEL_READ( bebox_dma8237_fdc_dack_r ) {
682   return pc_fdc_dack_r();
683}
684
685
686static DMA8237_CHANNEL_WRITE( bebox_dma8237_fdc_dack_w ) {
687   pc_fdc_dack_w( data );
688}
689
690
691static DMA8237_OUT_EOP( bebox_dma8237_out_eop ) {
692   pc_fdc_set_tc_state( state );
693}
694
695
696const struct dma8237_interface bebox_dma8237_1_config =
682697{
683698   0,
684699   1.0e-6, /* 1us */
r2301r2302
686701   bebox_dma_read_byte,
687702   bebox_dma_write_byte,
688703
689   { 0, 0, pc_fdc_dack_r, 0 },
690   { 0, 0, pc_fdc_dack_w, 0 },
691   pc_fdc_set_tc_state
704   { 0, 0, bebox_dma8237_fdc_dack_r, 0 },
705   { 0, 0, bebox_dma8237_fdc_dack_w, 0 },
706   bebox_dma8237_out_eop
692707};
693708
694709
710const struct dma8237_interface bebox_dma8237_2_config =
711{
712   0,
713   1.0e-6, /* 1us */
714
715   NULL,
716   NULL,
717
718   { NULL, NULL, NULL, NULL },
719   { NULL, NULL, NULL, NULL },
720   NULL
721};
722
723
695724/*************************************
696725 *
697726 *   8254 PIT
r2301r2302
10191048   pc_vga_init(machine, &bebox_vga_interface, &cirrus_svga_interface);
10201049   kbdc8042_init(&bebox_8042_interface);
10211050
1022   dma8237_init(2);
1023   dma8237_config(0, &bebox_dma);
1024
10251051   /* install VGA memory */
10261052   vram_begin = 0xC1000000;
10271053   vram_end = vram_begin + pc_vga_memory_size() - 1;
src/mess/machine/pc.c
r2301r2302
4848#include "machine/8237dma.h"
4949
5050
51/*************************************************************************
52 *
53 *      PC DMA stuff
54 *
55 *************************************************************************/
56
57static UINT8 dma_offset[2][4];
58
59
60READ8_HANDLER(pc_page_r)
61{
62   return 0xFF;
63}
64
65
66WRITE8_HANDLER(pc_page_w)
67{
68   switch(offset % 4) {
69   case 1:
70      dma_offset[0][2] = data;
71      break;
72   case 2:
73      dma_offset[0][3] = data;
74      break;
75   case 3:
76      dma_offset[0][0] = dma_offset[0][1] = data;
77      break;
78   }
79}
80
81
82static DMA8237_MEM_READ( pc_dma_read_byte )
83{
84   UINT8 result;
85   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
86      & 0x0F0000;
87
88   cpuintrf_push_context(0);
89   result = program_read_byte(page_offset + offset);
90   cpuintrf_pop_context();
91
92   return result;
93}
94
95
96static DMA8237_MEM_WRITE( pc_dma_write_byte )
97{
98   offs_t page_offset = (((offs_t) dma_offset[0][channel]) << 16)
99      & 0x0F0000;
100
101   cpuintrf_push_context(0);
102   program_write_byte(page_offset + offset, data);
103   cpuintrf_pop_context();
104}
105
106
107static DMA8237_CHANNEL_READ( pc_dma8237_fdc_dack_r ) {
108   return pc_fdc_dack_r();
109}
110
111
112static DMA8237_CHANNEL_READ( pc_dma8237_hdc_dack_r ) {
113   return pc_hdc_dack_r();
114}
115
116
117static DMA8237_CHANNEL_WRITE( pc_dma8237_fdc_dack_w ) {
118   pc_fdc_dack_w( data );
119}
120
121
122static DMA8237_CHANNEL_WRITE( pc_dma8237_hdc_dack_w ) {
123   pc_hdc_dack_w( data );
124}
125
126
127static DMA8237_OUT_EOP( pc_dma8237_out_eop ) {
128   pc_fdc_set_tc_state( state );
129}
130
131
132const struct dma8237_interface pc_dma8237_config =
133{
134   0,
135   1.0e-6, // 1us
136
137   pc_dma_read_byte,
138   pc_dma_write_byte,
139
140   { 0, 0, pc_dma8237_fdc_dack_r, pc_dma8237_hdc_dack_r },
141   { 0, 0, pc_dma8237_fdc_dack_w, pc_dma8237_hdc_dack_w },
142   pc_dma8237_out_eop
143};
144
145
51146/**********************************************************
52147 *
53148 * COM hardware
r2301r2302
163258
164259static void pc_fdc_dma_drq(int state, int read_)
165260{
166   dma8237_drq_write(0, FDC_DMA, state);
261   dma8237_drq_write( (device_config*)device_list_find_by_tag( Machine->config->devicelist, DMA8237, "dma8237" ), FDC_DMA, state);
167262}
168263
169static const struct pc_fdc_interface fdc_interface =
170{
171   NEC765A,
172   NEC765_RDY_PIN_CONNECTED,
173   pc_fdc_interrupt,
174   pc_fdc_dma_drq,
175};
176264
177265static const struct pc_fdc_interface fdc_interface_nc =
178266{
r2301r2302
191279      memory_set_bankptr( 10, mess_ram );
192280
193281   /* FDC/HDC hardware */
194   pc_fdc_init( ( flags & PCCOMMON_NEC765_RDY_NC ) ? &fdc_interface_nc : &fdc_interface);
195282   pc_hdc_setup();
196283
197284   /* com hardware */
r2301r2302
221308
222309DRIVER_INIT( pccga )
223310{
224   mess_init_pc_common(PCCOMMON_KEYBOARD_PC | PCCOMMON_DMA8237_PC | PCCOMMON_NEC765_RDY_NC);
311   mess_init_pc_common(PCCOMMON_KEYBOARD_PC);
225312   ppi8255_init(&pc_ppi8255_interface);
226313   pc_rtc_init();
227314   pc_turbo_setup(0, 3, 0x02, 4.77/12, 1);
r2301r2302
229316
230317DRIVER_INIT( bondwell )
231318{
232   mess_init_pc_common(PCCOMMON_KEYBOARD_PC | PCCOMMON_DMA8237_PC | PCCOMMON_NEC765_RDY_NC);
319   mess_init_pc_common(PCCOMMON_KEYBOARD_PC);
233320   ppi8255_init(&pc_ppi8255_interface);
234321   pc_turbo_setup(0, 3, 0x02, 4.77/12, 1);
235322}
236323
237324DRIVER_INIT( pcmda )
238325{
239   mess_init_pc_common(PCCOMMON_KEYBOARD_PC | PCCOMMON_DMA8237_PC | PCCOMMON_NEC765_RDY_NC);
326   mess_init_pc_common(PCCOMMON_KEYBOARD_PC);
240327   ppi8255_init(&pc_ppi8255_interface);
241328   pc_turbo_setup(0, 3, 0x02, 4.77/12, 1);
242329}
r2301r2302
262349      rom[0xfffff]=256-a;
263350   }
264351
265   mess_init_pc_common(PCCOMMON_KEYBOARD_PC | PCCOMMON_DMA8237_PC | PCCOMMON_NEC765_RDY_NC);
352   mess_init_pc_common(PCCOMMON_KEYBOARD_PC);
266353
267354   europc_rtc_init();
268355//   europc_rtc_set_time(machine);
r2301r2302
275362    /* just a plain bit pattern for graphics data generation */
276363    for (i = 0; i < 256; i++)
277364      gfx[i] = i;
278   mess_init_pc_common(PCCOMMON_KEYBOARD_PC | PCCOMMON_DMA8237_PC | PCCOMMON_NEC765_RDY_NC);
365   mess_init_pc_common(PCCOMMON_KEYBOARD_PC);
279366   pc_turbo_setup(0, 3, 0x02, 4.77/12, 1);
280367}
281368
r2301r2302
294381   videoram=memory_region(REGION_CPU1)+0xb0000;
295382   memory_install_read16_handler(0, ADDRESS_SPACE_IO, 0x278, 0x27b, 0, 0, pc200_16le_port378_r );
296383
297   mess_init_pc_common(PCCOMMON_KEYBOARD_PC | PCCOMMON_DMA8237_PC | PCCOMMON_NEC765_RDY_NC);
384   mess_init_pc_common(PCCOMMON_KEYBOARD_PC);
298385}
299386
300387DRIVER_INIT( pc1512 )
r2301r2302
315402   memory_install_read16_handler(0, ADDRESS_SPACE_IO, 0x278, 0x27b, 0, 0, pc16le_parallelport2_r );
316403
317404
318   mess_init_pc_common(PCCOMMON_KEYBOARD_PC | PCCOMMON_DMA8237_PC | PCCOMMON_NEC765_RDY_NC);
405   mess_init_pc_common(PCCOMMON_KEYBOARD_PC);
319406   mc146818_init(MC146818_IGNORE_CENTURY);
320407}
321408
r2301r2302
378465   memory_install_read16_handler(0, ADDRESS_SPACE_IO, 0x278, 0x27b, 0, 0, pc1640_16le_port278_r );
379466   memory_install_read16_handler(0, ADDRESS_SPACE_IO, 0x4278, 0x427b, 0, 0, pc1640_16le_port4278_r );
380467
381   mess_init_pc_common(PCCOMMON_KEYBOARD_PC | PCCOMMON_DMA8237_PC | PCCOMMON_NEC765_RDY_NC);
468   mess_init_pc_common(PCCOMMON_KEYBOARD_PC);
382469
383470   mc146818_init(MC146818_IGNORE_CENTURY);
384471}
385472
386473DRIVER_INIT( pc_vga )
387474{
388   mess_init_pc_common(PCCOMMON_KEYBOARD_PC | PCCOMMON_DMA8237_PC | PCCOMMON_NEC765_RDY_NC);
475   mess_init_pc_common(PCCOMMON_KEYBOARD_PC);
389476   ppi8255_init(&pc_ppi8255_interface);
390477
391478   pc_vga_init(machine, &vga_interface, NULL);
r2301r2302
397484}
398485
399486
400MACHINE_RESET( pc_mda )
401{
402   dma8237_reset();
403   cpunum_set_irq_callback(0, pc_irq_callback);
487MACHINE_START( pc ) {
488   pc_fdc_init( &fdc_interface_nc );
404489}
405490
406MACHINE_RESET( pc_cga )
407{
408   dma8237_reset();
409   cpunum_set_irq_callback(0, pc_irq_callback);
410}
411491
412MACHINE_RESET( pc_t1t )
492MACHINE_RESET( pc )
413493{
414   dma8237_reset();
415494   cpunum_set_irq_callback(0, pc_irq_callback);
416495}
417496
418MACHINE_RESET( pc_pc1512 ) {
419   dma8237_reset();
420   cpunum_set_irq_callback(0, pc_irq_callback);
421}
422497
423MACHINE_RESET( pc_aga )
424{
425   dma8237_reset();
426   cpunum_set_irq_callback(0, pc_irq_callback);
427}
428
429MACHINE_RESET( pc_vga )
430{
431   dma8237_reset();
432   cpunum_set_irq_callback(0, pc_irq_callback);
433}
434
435498/**************************************************************************
436499 *
437500 *      Interrupt handlers.
src/mess/drivers/at.c
r2301r2302
106106
107107static READ8_HANDLER(at_dma8237_1_r)
108108{
109   return dma8237_1_r(machine, offset / 2);
109   return dma8237_r( (device_config*)device_list_find_by_tag( machine->config->devicelist, DMA8237, "dma8237_2" ), offset / 2);
110110}
111111
112112static WRITE8_HANDLER(at_dma8237_1_w)
113113{
114   dma8237_1_w(machine, offset / 2, data);
114   dma8237_w( (device_config*)device_list_find_by_tag( machine->config->devicelist, DMA8237, "dma8237_2" ), offset / 2, data);
115115}
116116
117117static READ32_HANDLER(at32_dma8237_1_r)
r2301r2302
125125}
126126
127127DEV_READWRITE8TO32LE_LSB( at_pit8254_32le, pit8253_r, pit8253_w )
128DEV_READWRITE8TO32LE_LSB( at_dma8237_32le, dma8237_r, dma8237_w )
128129
129130
130131static ADDRESS_MAP_START(at_io, ADDRESS_SPACE_IO, 8)
131   AM_RANGE(0x0000, 0x001f) AM_READWRITE(dma8237_0_r,            dma8237_0_w)
132   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(DMA8237, "dma8237_1", dma8237_r, dma8237_w)
132133   AM_RANGE(0x0020, 0x003f) AM_READWRITE(pic8259_0_r,            pic8259_0_w)
133134   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE(PIT8254, AT_PIT8254, pit8253_r, pit8253_w)
134135   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_8_r,            kbdc8042_8_w)
r2301r2302
156157ADDRESS_MAP_END
157158
158159
160static READ32_HANDLER(at_page32_r)
161{
162   return read32le_with_read8_handler(at_page8_r, machine, offset, mem_mask);
163}
159164
165
166static WRITE32_HANDLER(at_page32_w)
167{
168   write32le_with_write8_handler(at_page8_w, machine, offset, data, mem_mask);
169}
170
171
160172static ADDRESS_MAP_START(at386_io, ADDRESS_SPACE_IO, 32)
161   AM_RANGE(0x0000, 0x001f) AM_READWRITE(dma8237_32le_0_r,         dma8237_32le_0_w)
173   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(DMA8237, "dma8237_1", at_dma8237_32le_r, at_dma8237_32le_w)
162174   AM_RANGE(0x0020, 0x003f) AM_READWRITE(pic8259_32le_0_r,         pic8259_32le_0_w)
163175   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE(PIT8254, AT_PIT8254, at_pit8254_32le_r, at_pit8254_32le_w)
164176   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r,         kbdc8042_32le_w)
r2301r2302
180192
181193
182194static ADDRESS_MAP_START(at586_io, ADDRESS_SPACE_IO, 32)
183   AM_RANGE(0x0000, 0x001f) AM_READWRITE(dma8237_32le_0_r,         dma8237_32le_0_w)
195   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE(DMA8237, "dma8237_1", at_dma8237_32le_r, at_dma8237_32le_w)
184196   AM_RANGE(0x0020, 0x003f) AM_READWRITE(pic8259_32le_0_r,         pic8259_32le_0_w)
185197   AM_RANGE(0x0040, 0x005f) AM_DEVREADWRITE(PIT8254, AT_PIT8254, at_pit8254_32le_r, at_pit8254_32le_w)
186198   AM_RANGE(0x0060, 0x006f) AM_READWRITE(kbdc8042_32le_r,         kbdc8042_32le_w)
r2301r2302
448460   MDRV_DEVICE_ADD( AT_PIT8254, PIT8254 )
449461   MDRV_DEVICE_CONFIG( at_pit8254_config )
450462
463   MDRV_DEVICE_ADD( "dma8237_1", DMA8237 )
464   MDRV_DEVICE_CONFIG( at_dma8237_1_config )
465
466   MDRV_DEVICE_ADD( "dma8237_2", DMA8237 )
467   MDRV_DEVICE_CONFIG( at_dma8237_2_config )
468
451469   MDRV_MACHINE_START( at )
452470   MDRV_MACHINE_RESET( at )
453471
src/mess/drivers/bebox.c
r2301r2302
3333#include "formats/pc_dsk.h"
3434
3535
36static READ8_HANDLER(at_dma8237_1_r)  { return dma8237_1_r(machine, offset / 2); }
37static WRITE8_HANDLER(at_dma8237_1_w) { dma8237_1_w(machine, offset / 2, data); }
36static READ8_HANDLER(at_dma8237_1_r)  { return dma8237_r((device_config*)device_list_find_by_tag( machine->config->devicelist, DMA8237, "dma8237_2" ), offset / 2); }
37static WRITE8_HANDLER(at_dma8237_1_w) { dma8237_w((device_config*)device_list_find_by_tag( machine->config->devicelist, DMA8237, "dma8237_2" ), offset / 2, data); }
3838
3939static READ64_HANDLER( bebox_dma8237_1_r )
4040{
r2301r2302
4646   write64be_with_write8_handler(at_dma8237_1_w, machine, offset, data, mem_mask);
4747}
4848
49
4950DEV_READWRITE8TO64BE( bebox_pit8254_64be, pit8253_r, pit8253_w )
51DEV_READWRITE8TO64BE( bebox_dma8237_64be, dma8237_r, dma8237_w )
5052
53
5154static ADDRESS_MAP_START( bebox_mem, ADDRESS_SPACE_PROGRAM, 64 )
5255   AM_RANGE(0x7FFFF0F0, 0x7FFFF0F7) AM_READWRITE( bebox_cpu0_imask_r, bebox_cpu0_imask_w )
5356   AM_RANGE(0x7FFFF1F0, 0x7FFFF1F7) AM_READWRITE( bebox_cpu1_imask_r, bebox_cpu1_imask_w )
r2301r2302
5558   AM_RANGE(0x7FFFF3F0, 0x7FFFF3F7) AM_READWRITE( bebox_crossproc_interrupts_r, bebox_crossproc_interrupts_w )
5659   AM_RANGE(0x7FFFF4F0, 0x7FFFF4F7) AM_WRITE( bebox_processor_resets_w )
5760
58   AM_RANGE(0x80000000, 0x8000001F) AM_READWRITE( dma8237_64be_0_r, dma8237_64be_0_w )
61   AM_RANGE(0x80000000, 0x8000001F) AM_DEVREADWRITE( DMA8237, "dma8237_1", bebox_dma8237_64be_r, bebox_dma8237_64be_w )
5962   AM_RANGE(0x80000020, 0x8000003F) AM_READWRITE( pic8259_64be_0_r, pic8259_64be_0_w )
6063   AM_RANGE(0x80000040, 0x8000005f) AM_DEVREADWRITE(PIT8254, "pit8254", bebox_pit8254_64be_r, bebox_pit8254_64be_w)
6164   AM_RANGE(0x80000060, 0x8000006F) AM_READWRITE( kbdc8042_64be_r, kbdc8042_64be_w )
r2301r2302
110113   MDRV_DEVICE_ADD( "pit8254", PIT8254 )
111114   MDRV_DEVICE_CONFIG( bebox_pit8254_config )
112115
116   MDRV_DEVICE_ADD( "dma8237_1", DMA8237 )
117   MDRV_DEVICE_CONFIG( bebox_dma8237_1_config )
118
119   MDRV_DEVICE_ADD( "dma8237_2", DMA8237 )
120   MDRV_DEVICE_CONFIG( bebox_dma8237_2_config )
121
113122   /* video hardware */
114123   MDRV_IMPORT_FROM( pcvideo_vga )
115124   MDRV_SCREEN_MODIFY("main")
src/mess/drivers/pc.c
r2301r2302
160160
161161
162162static ADDRESS_MAP_START(pc8_io, ADDRESS_SPACE_IO, 8)
163   AM_RANGE(0x0000, 0x000f) AM_READWRITE(dma8237_0_r,         dma8237_0_w)
163   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE(DMA8237, "dma8237", dma8237_r, dma8237_w)
164164   AM_RANGE(0x0020, 0x0021) AM_READWRITE(pic8259_0_r,         pic8259_0_w)
165165   AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE(PIT8253, "pit8253", pit8253_r, pit8253_w)
166166   AM_RANGE(0x0060, 0x0063) AM_READWRITE(ppi8255_0_r,         ppi8255_0_w)
r2301r2302
188188
189189
190190DEV_READWRITE8TO16LE_LSB( pc_pit8253_16le, pit8253_r, pit8253_w )
191DEV_READWRITE8TO16LE( pc_dma8237_16le, dma8237_r, dma8237_w )
192READ16_HANDLER(pc_page16le_r) { return read16le_with_read8_handler(pc_page_r, machine, offset, mem_mask); }
193WRITE16_HANDLER(pc_page16le_w) { write16le_with_write8_handler(pc_page_w, machine, offset, data, mem_mask); }
191194
195
192196static ADDRESS_MAP_START(pc16_io, ADDRESS_SPACE_IO, 16)
193   AM_RANGE(0x0000, 0x000f) AM_READWRITE(dma8237_16le_0_r,         dma8237_16le_0_w)
197   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE(DMA8237, "dma8237", pc_dma8237_16le_r, pc_dma8237_16le_w)
194198   AM_RANGE(0x0020, 0x0021) AM_READWRITE(pic8259_16le_0_r,         pic8259_16le_0_w)
195199   AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE(PIT8253, "pit8253", pc_pit8253_16le_r, pc_pit8253_16le_w)
196200   AM_RANGE(0x0060, 0x0063) AM_READWRITE(ppi8255_16le_0_r,         ppi8255_16le_0_w)
r2301r2302
231235
232236
233237static ADDRESS_MAP_START(europc_io, ADDRESS_SPACE_IO, 8)
234   AM_RANGE(0x0000, 0x000f) AM_READWRITE(dma8237_0_r,         dma8237_0_w)
238   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE(DMA8237, "dma8237", dma8237_r, dma8237_w)
235239   AM_RANGE(0x0020, 0x0021) AM_READWRITE(pic8259_0_r,         pic8259_0_w)
236240   AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE(PIT8253, "pit8253", pit8253_r, pit8253_w)
237241   AM_RANGE(0x0060, 0x0063) AM_READWRITE(europc_pio_r,         europc_pio_w)
r2301r2302
271275
272276
273277static ADDRESS_MAP_START(tandy1000_io, ADDRESS_SPACE_IO, 8)
274   AM_RANGE(0x0000, 0x000f) AM_READWRITE(dma8237_0_r,            dma8237_0_w)
278   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE(DMA8237, "dma8237", dma8237_r, dma8237_w)
275279   AM_RANGE(0x0020, 0x0021) AM_READWRITE(pic8259_0_r,            pic8259_0_w)
276280   AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE(PIT8253, "pit8253", pit8253_r, pit8253_w)
277281   AM_RANGE(0x0060, 0x0063) AM_READWRITE(tandy1000_pio_r,         tandy1000_pio_w)
r2301r2302
291295
292296
293297static ADDRESS_MAP_START(pc200_io, ADDRESS_SPACE_IO, 16)
294   AM_RANGE(0x0000, 0x000f) AM_READWRITE(dma8237_16le_0_r,            dma8237_16le_0_w)
298   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE(DMA8237, "dma8237", pc_dma8237_16le_r, pc_dma8237_16le_w)
295299   AM_RANGE(0x0020, 0x0021) AM_READWRITE(pic8259_16le_0_r,            pic8259_16le_0_w)
296300   AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE(PIT8253, "pit8253", pc_pit8253_16le_r, pc_pit8253_16le_w)
297301   AM_RANGE(0x0060, 0x0065) AM_READWRITE(pc1640_16le_port60_r,         pc1640_16le_port60_w)
r2301r2302
324328
325329
326330static ADDRESS_MAP_START(pc1640_io, ADDRESS_SPACE_IO, 16)
327   AM_RANGE(0x0000, 0x000f) AM_READWRITE(dma8237_16le_0_r,         dma8237_16le_0_w)
331   AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE(DMA8237, "dma8237", pc_dma8237_16le_r, pc_dma8237_16le_w)
328332   AM_RANGE(0x0020, 0x0021) AM_READWRITE(pic8259_16le_0_r,         pic8259_16le_0_w)
329333   AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE(PIT8253, "pit8253", pc_pit8253_16le_r, pc_pit8253_16le_w)
330334   AM_RANGE(0x0060, 0x0065) AM_READWRITE(pc1640_16le_port60_r,         pc1640_16le_port60_w)
r2301r2302
11691173   MDRV_CPU_IO_MAP(pc8_io, 0)
11701174   MDRV_CPU_VBLANK_INT_HACK(pc_mda_frame_interrupt, 4)
11711175
1172   MDRV_MACHINE_RESET(pc_mda)
1176   MDRV_MACHINE_START(pc)
1177   MDRV_MACHINE_RESET(pc)
11731178
11741179   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
11751180   MDRV_DEVICE_CONFIG( pc_pit8253_config )
11761181
1182   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1183   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1184
11771185   /* video hardware */
11781186   MDRV_IMPORT_FROM( pcvideo_mda )
11791187
r2301r2302
12031211   MDRV_CPU_IO_MAP(pc8_io, 0)
12041212   MDRV_CPU_VBLANK_INT_HACK(pc_mda_frame_interrupt, 4)
12051213
1206   MDRV_MACHINE_RESET(pc_mda)
1214   MDRV_MACHINE_START(pc)
1215   MDRV_MACHINE_RESET(pc)
12071216
12081217   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
12091218   MDRV_DEVICE_CONFIG( pc_pit8253_config )
12101219
1220   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1221   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1222
12111223   /* video hardware */
12121224   MDRV_IMPORT_FROM( pcvideo_hercules )
12131225
r2301r2302
12331245   /* basic machine hardware */
12341246   MDRV_CPU_PC(pc8, pc8, I8088, 4772720, pc_cga_frame_interrupt)   /* 4,77 Mhz */
12351247
1236   MDRV_MACHINE_RESET(pc_cga)
1248   MDRV_MACHINE_START(pc)
1249   MDRV_MACHINE_RESET(pc)
12371250
12381251   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
12391252   MDRV_DEVICE_CONFIG( pc_pit8253_config )
12401253
1254   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1255   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1256
12411257   /* video hardware */
12421258   MDRV_IMPORT_FROM( pcvideo_cga )
12431259
r2301r2302
12641280   /* basic machine hardware */
12651281   MDRV_CPU_PC(europc, europc, I8088, 4772720*2, pc_aga_frame_interrupt)
12661282
1267   MDRV_MACHINE_RESET(pc_aga)
1283   MDRV_MACHINE_START(pc)
1284   MDRV_MACHINE_RESET(pc)
12681285
12691286   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
12701287   MDRV_DEVICE_CONFIG( pc_pit8253_config )
12711288
1289   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1290   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1291
12721292   /* video hardware */
12731293   MDRV_IMPORT_FROM( pcvideo_aga )
12741294
r2301r2302
12911311   /* basic machine hardware */
12921312   MDRV_CPU_PC(pc16, pc16, I8086, 12000000, pc_cga_frame_interrupt)
12931313
1294   MDRV_MACHINE_RESET(pc_cga)
1314   MDRV_MACHINE_START(pc)
1315   MDRV_MACHINE_RESET(pc)
12951316
12961317   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
12971318   MDRV_DEVICE_CONFIG( pc_pit8253_config )
12981319
1320   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1321   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1322
12991323   /* video hardware */
13001324   MDRV_IMPORT_FROM( pcvideo_cga )
13011325
r2301r2302
13221346   /* basic machine hardware */
13231347   MDRV_CPU_PC(pc1640, pc200, I8086, 8000000, pc_aga_frame_interrupt)
13241348
1325   MDRV_MACHINE_RESET(pc_aga)
1349   MDRV_MACHINE_START(pc)
1350   MDRV_MACHINE_RESET(pc)
13261351
13271352   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
13281353   MDRV_DEVICE_CONFIG( pc_pit8253_config )
13291354
1355   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1356   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1357
13301358   /* video hardware */
13311359   MDRV_IMPORT_FROM( pcvideo_pc200 )
13321360
r2301r2302
13421370   /* basic machine hardware */
13431371   MDRV_CPU_PC(pc1640, pc1640, I8086, 8000000, pc_pc1512_frame_interrupt)
13441372
1345   MDRV_MACHINE_RESET(pc_pc1512)
1373   MDRV_MACHINE_START(pc)
1374   MDRV_MACHINE_RESET(pc)
13461375
13471376   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
13481377   MDRV_DEVICE_CONFIG( pc_pit8253_config )
13491378
1379   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1380   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1381
13501382   /* video hardware */
13511383   MDRV_IMPORT_FROM( pcvideo_pc1512 )
13521384
r2301r2302
13641396   /* basic machine hardware */
13651397   MDRV_CPU_PC(pc1640, pc1640, I8086, 8000000, pc_vga_frame_interrupt)
13661398
1367   MDRV_MACHINE_RESET(pc_vga)
1399   MDRV_MACHINE_START(pc)
1400   MDRV_MACHINE_RESET(pc)
13681401
13691402   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
13701403   MDRV_DEVICE_CONFIG( pc_pit8253_config )
13711404
1405   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1406   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1407
13721408   /* video hardware */
13731409   MDRV_IMPORT_FROM(pcvideo_pc1640)
13741410   MDRV_SCREEN_MODIFY("main")
r2301r2302
13891425   /* basic machine hardware */
13901426   MDRV_CPU_PC(pc16, pc16, I8086, 12000000, pc_vga_frame_interrupt)
13911427
1392   MDRV_MACHINE_RESET(pc_vga)
1428   MDRV_MACHINE_START(pc)
1429   MDRV_MACHINE_RESET(pc)
13931430
13941431   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
13951432   MDRV_DEVICE_CONFIG( pc_pit8253_config )
13961433
1434   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1435   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1436
13971437   /* video hardware */
13981438   MDRV_IMPORT_FROM( pcvideo_vga )
13991439   MDRV_SCREEN_MODIFY("main")
r2301r2302
14231463   /* basic machine hardware */
14241464   MDRV_CPU_PC(tandy1000, tandy1000, I8088, 8000000, tandy1000_frame_interrupt)
14251465
1426   MDRV_MACHINE_RESET(pc_t1t)
1466   MDRV_MACHINE_START(pc)
1467   MDRV_MACHINE_RESET(pc)
14271468
14281469   MDRV_DEVICE_ADD( "pit8253", PIT8253 )
14291470   MDRV_DEVICE_CONFIG( pc_pit8253_config )
14301471
1472   MDRV_DEVICE_ADD( "dma8237", DMA8237 )
1473   MDRV_DEVICE_CONFIG( pc_dma8237_config )
1474
14311475   /* video hardware */
14321476   MDRV_IMPORT_FROM( pcvideo_t1000 )
14331477

Previous 15994 Revisions Next


© 1998-2018 The MESS Team