Previous 15994 Revisions Next

r6473 Friday 27th November, 2009 at 13:17:24 UTC by Curt Coder
[PROF80] Added GRIP volume and jumper setting reading.
[src/emu/machine]i8255a.c
[src/emu/sound]speaker.c
[src/mess/drivers]prof80.c
[src/mess/includes]prof80.h

src/emu/machine/i8255a.c
r6472r6473
338338
339339      /* clear interrupt */
340340      set_intr(i8255a, port, 0);
341
342      /* clear input latch */
343      i8255a->input[port] = 0;
341344   }
342345
343346   return data;
r6472r6473
356359   /* clear interrupt */
357360   set_intr(i8255a, PORT_A, 0);
358361
362   /* clear input latch */
363   i8255a->input[PORT_A] = 0;
364
359365   return data;
360366}
361367
src/emu/sound/speaker.c
r6472r6473
139139static DEVICE_START( speaker )
140140{
141141   speaker_state *sp = get_safe_token(device);
142   const speaker_interface *intf = (const speaker_interface *) device->static_config;
142143   int i;
143144   double x;
144145
145146   sp->channel = stream_create(device, 0, 1, device->machine->sample_rate, sp, speaker_sound_update);
146   sp->num_levels = 2;
147   sp->levels = default_levels;
147
148   if (intf != NULL)
149   {
150      assert(intf->num_level > 1);
151      assert(intf->levels != NULL);
152      sp->num_levels = intf->num_level;
153      sp->levels = intf->levels;
154   }
155   else
156   {
157      sp->num_levels = 2;
158      sp->levels = default_levels;
159   }
160
148161   sp->level = 0;
149162   for (i = 0; i < FILTER_LENGTH; i++)
150163      sp->composed_volume[i] = 0;
src/mess/includes/prof80.h
r6472r6473
11#ifndef __PROF80__
22#define __PROF80__
33
4#define SCREEN_TAG            "screen"
5
64#define Z80_TAG               "z1"
75#define UPD765_TAG            "z38"
86#define UPD1990A_TAG         "z43"
7
8/* ------------------------------------------------------------------------ */
9
10#define SCREEN_TAG            "screen"
11#define GRIP_Z80_TAG         "grip_z1"
912#define MC6845_TAG            "z30"
1013#define I8255A_TAG            "z6"
1114#define Z80STI_TAG            "z9"
12
13#define GRIP_Z80_TAG         "grip_z1"
1415#define SPEAKER_TAG            "speaker"
1516#define CENTRONICS_TAG         "centronics"
1617
18#define GRIP_VIDEORAM_SIZE   0x10000
19#define GRIP_VIDEORAM_MASK   0xffff
20
21/* ------------------------------------------------------------------------ */
22
1723#define UNIO_Z80STI_TAG         "z5"
1824#define UNIO_Z80SIO_TAG         "z15"
1925#define UNIO_Z80PIO_TAG         "z13"
2026#define UNIO_CENTRONICS1_TAG   "n3"
2127#define UNIO_CENTRONICS2_TAG   "n4"
2228
23#define GRIP_VIDEORAM_SIZE   0x10000
24#define GRIP_VIDEORAM_MASK   0xffff
25
2629typedef struct _prof80_state prof80_state;
2730struct _prof80_state
2831{
r6472r6473
3033   UINT8 mmu[16];         /* MMU block register */
3134   int init;            /* MMU enable */
3235
33   /* keyboard state */
34   UINT8 keydata;         /* keyboard data */
35   int kbf;            /* keyboard buffer full */
36   /* RTC state */
37   int c0;
38   int c1;
39   int c2;
3640
37   /* video state */
38   UINT8 *video_ram;      /* video RAM */
39   int lps;            /* light pen sense */
40   int page;            /* video page */
41   int flash;            /* flash */
42
4341   /* floppy state */
4442   int   fdc_index;         /* floppy index hole sensor */
4543   int motor;            /* floppy motor */
r6472r6473
5149   /* devices */
5250   const device_config *upd765;
5351   const device_config *upd1990a;
52
53   /* timers */
54   emu_timer   *floppy_motor_off_timer;
55
56/* ------------------------------------------------------------------------ */
57
58   /* sound state */
59   int vol0;
60   int vol1;
61
62   /* keyboard state */
63   UINT8 keydata;         /* keyboard data */
64   int kbf;            /* keyboard buffer full */
65
66   /* video state */
67   UINT8 *video_ram;      /* video RAM */
68   int lps;            /* light pen sense */
69   int page;            /* video page */
70   int flash;            /* flash */
71
72   /* devices */
5473   const device_config *mc6845;
5574   const device_config *ppi8255;
5675   const device_config *z80sti;
5776   const device_config *centronics;
58
59   /* timers */
60   emu_timer   *floppy_motor_off_timer;
6177};
6278
6379#endif
src/mess/drivers/prof80.c
r6472r6473
209209   case 0: /* C0/TDI */
210210      upd1990a_data_in_w(state->upd1990a, fa);
211211      upd1990a_c0_w(state->upd1990a, fa);
212      state->c0 = fa;
212213      break;
213214
214215   case 1: /* C1 */
215216      upd1990a_c1_w(state->upd1990a, fa);
217      state->c1 = fa;
216218      break;
217219
218220   case 2: /* C2 */
219221      upd1990a_c2_w(state->upd1990a, fa);
222      state->c2 = fa;
220223      break;
221224
222225   case 3:   /* READY */
r6472r6473
361364    */
362365
363366   prof80_state *state = space->machine->driver_data;
367   UINT8 data = 0;
368   int js4 = 0, js5 = 0;
364369
365   return (!upd1990a_data_out_r(state->upd1990a) << 7) | !state->motor;
370   /* floppy motor */
371   data |= !state->motor;
372
373   /* JS4 */
374   switch (input_port_read(space->machine, "J4"))
375   {
376   case 0: js4 = 0; break;
377   case 1: js4 = 1; break;
378   case 2: js4 = !state->c0; break;
379   case 3: js4 = !state->c1; break;
380   case 4: js4 = !state->c2; break;
381   }
382
383   data |= js4 << 4;
384
385   /* JS5 */
386   switch (input_port_read(space->machine, "J5"))
387   {
388   case 0: js5 = 0; break;
389   case 1: js5 = 1; break;
390   case 2: js5 = !state->c0; break;
391   case 3: js5 = !state->c1; break;
392   case 4: js5 = !state->c2; break;
393   }
394
395   data |= js5 << 4;
396
397   /* RTC data */
398   data |= !upd1990a_data_out_r(state->upd1990a) << 7;
399
400   return data;
366401}
367402
368403static WRITE8_HANDLER( par_w )
r6472r6473
414449
415450/* GRIP */
416451
452static WRITE8_HANDLER( vol0_w )
453{
454   prof80_state *state = space->machine->driver_data;
455
456   state->vol0 = BIT(data, 7);
457}
458
459static WRITE8_HANDLER( vol1_w )
460{
461   prof80_state *state = space->machine->driver_data;
462
463   state->vol1 = BIT(data, 7);
464}
465
417466static WRITE8_HANDLER( flash_w )
418467{
419468   prof80_state *state = space->machine->driver_data;
r6472r6473
448497    */
449498
450499   prof80_state *state = space->machine->driver_data;
500   UINT8 data = 0;
501   int js0 = 0, js1 = 0;
451502
452   return (state->lps << 7) | (centronics_fault_r(state->centronics) << 6);
503   /* JS0 */
504   switch (input_port_read(space->machine, "GRIP-J3A"))
505   {
506   case 0: js0 = 0; break;
507   case 1: js0 = 1; break;
508   case 2: js0 = state->vol0; break;
509   case 3: js0 = state->vol1; break;
510   case 4: js0 = state->page; break;
511   }
512
513   data |= js0 << 4;
514
515   /* JS1 */
516   switch (input_port_read(space->machine, "GRIP-J3B"))
517   {
518   case 0: js1 = 0; break;
519   case 1: js1 = 1; break;
520   case 2: js1 = state->vol0; break;
521   case 3: js1 = state->vol1; break;
522   case 4: js1 = state->page; break;
523   }
524
525   data |= js1 << 5;
526
527   /* centronics fault */
528   data |= centronics_fault_r(state->centronics) << 6;
529
530   /* light pen strobe */
531   data |= state->lps << 7;
532
533   return data;
453534}
454535
455536static READ8_HANDLER( lrs_r )
r6472r6473
557638   ADDRESS_MAP_GLOBAL_MASK(0xff)
558639   AM_RANGE(0x00, 0x00) AM_READWRITE(cxstb_r, cxstb_w)
559640//  AM_RANGE(0x10, 0x10) AM_WRITE(ccon_w)
560//  AM_RANGE(0x11, 0x11) AM_WRITE(vol0_w)
641   AM_RANGE(0x11, 0x11) AM_WRITE(vol0_w)
561642//  AM_RANGE(0x12, 0x12) AM_WRITE(rts_w)
562643   AM_RANGE(0x13, 0x13) AM_WRITE(page_w)
563644//  AM_RANGE(0x14, 0x14) AM_WRITE(cc1_w)
564645//  AM_RANGE(0x15, 0x15) AM_WRITE(cc2_w)
565646   AM_RANGE(0x16, 0x16) AM_WRITE(flash_w)
566//  AM_RANGE(0x17, 0x17) AM_WRITE(vol1_w)
647   AM_RANGE(0x17, 0x17) AM_WRITE(vol1_w)
567648   AM_RANGE(0x20, 0x2f) AM_DEVREADWRITE(Z80STI_TAG, z80sti_r, z80sti_w)
568649   AM_RANGE(0x30, 0x30) AM_READWRITE(lrs_r, lrs_w)
569650   AM_RANGE(0x40, 0x40) AM_READ(stat_r)
r6472r6473
10611142   return centronics_busy_r(state->centronics) << 3;
10621143}
10631144
1145static WRITE_LINE_DEVICE_HANDLER( grip_speaker_w )
1146{
1147   prof80_state *driver_state = device->machine->driver_data;
1148   int level = state && ((driver_state->vol1 << 1) | driver_state->vol0);
1149
1150   speaker_level_w(device, level);
1151}
1152
10641153static Z80STI_INTERFACE( grip_z80sti_interface )
10651154{
10661155   0,                                          /* serial receive clock */
r6472r6473
10711160   DEVCB_NULL,                                    /* serial input */
10721161   DEVCB_NULL,                                    /* serial output */
10731162   DEVCB_NULL,                                    /* timer A output */
1074   DEVCB_DEVICE_LINE(SPEAKER_TAG, speaker_level_w),      /* timer B output */
1163   DEVCB_DEVICE_LINE(SPEAKER_TAG, grip_speaker_w),         /* timer B output */
10751164   DEVCB_LINE(z80sti_tc_w),                        /* timer C output */
10761165   DEVCB_LINE(z80sti_rc_w)                           /* timer D output */
10771166};
r6472r6473
11081197   prof80_bankswitch(machine);
11091198
11101199   /* register for state saving */
1200   state_save_register_global(machine, state->c0);
1201   state_save_register_global(machine, state->c1);
1202   state_save_register_global(machine, state->c2);
11111203   state_save_register_global_array(machine, state->mmu);
11121204   state_save_register_global(machine, state->init);
11131205   state_save_register_global(machine, state->fdc_index);
r6472r6473
11521244   memory_set_bank(machine, 18, 0);
11531245
11541246   /* register for state saving */
1247   state_save_register_global(machine, state->vol0);
1248   state_save_register_global(machine, state->vol1);
11551249   state_save_register_global(machine, state->keydata);
11561250   state_save_register_global(machine, state->kbf);
11571251   state_save_register_global_pointer(machine, state->video_ram, GRIP_VIDEORAM_SIZE);
r6472r6473
11721266   DO_NOT_KEEP_GEOMETRY
11731267};
11741268
1269static const INT16 speaker_levels[] = {-32768, 0, 32767, 0};
1270
1271static const speaker_interface grip_speaker_interface =
1272{
1273   4,
1274   speaker_levels
1275};
1276
11751277/* Machine Drivers */
1278
11761279static MACHINE_DRIVER_START( prof80 )
11771280   MDRV_DRIVER_DATA(prof80_state)
11781281
r6472r6473
12261329   /* sound hardware */
12271330   MDRV_SPEAKER_STANDARD_MONO("mono")
12281331   MDRV_SOUND_ADD(SPEAKER_TAG, SPEAKER, 0)
1332   MDRV_SOUND_CONFIG(grip_speaker_interface)
12291333   MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
12301334
12311335   /* devices */

Previous 15994 Revisions Next


© 1998-2018 The MESS Team