Previous 15994 Revisions Next

r9296 Saturday 2nd October, 2010 at 00:38:16 UTC by Sandro Ronco
[PSION] Converted driver to use data class instead of the global variables
[src/mess/drivers]psion.c

src/mess/drivers/psion.c
r9295r9296
4040   bool write_flag;
4141};
4242
43static struct _psion
43class psion_state : public driver_device
4444{
45public:
46   psion_state(running_machine &machine, const driver_device_config_base &config)
47      : driver_device(machine, config) { }
48
4549   UINT16 kb_counter;
4650   UINT8 enable_nmi;
4751   UINT8 *sys_register;
r9295r9296
6367   UINT8 port6_ddr;
6468   UINT8 port6;
6569
66   struct datapack pack1;
67   struct datapack pack2;
68} psion;
70   datapack pack1;
71   datapack pack2;
6972
73   // devices
74   hd44780_device *hd44780;
75   device_t *beep;
76};
77
78
7079/***********************************************
7180
7281    Datapack
7382
7483***********************************************/
7584
76UINT8 datapack_update(datapack *pack, UINT8 data)
85static UINT8 datapack_update(datapack *pack, UINT8 data)
7786{
7887   assert(pack != NULL);
7988
r9295r9296
126135   return data;
127136}
128137
129void datapack_control_lines_w(datapack *pack, UINT8 data)
138static void datapack_control_lines_w(datapack *pack, UINT8 data)
130139{
131140   assert(pack != NULL);
132141
r9295r9296
155164   pack->control_lines = data;
156165}
157166
158UINT8 datapack_control_lines_r(datapack *pack)
167static UINT8 datapack_control_lines_r(datapack *pack)
159168{
160169   assert(pack != NULL);
161170
162171   return pack->control_lines;
163172}
164173
165int datapack_load(device_image_interface &image, datapack &pack)
174static int datapack_load(device_image_interface &image, datapack &pack)
166175{
167176   running_machine *machine = image.device().machine;
168177   char opk_head[6];
r9295r9296
193202   return IMAGE_INIT_PASS;
194203}
195204
196void datapack_unload(device_image_interface &image, datapack &pack)
205static void datapack_unload(device_image_interface &image, datapack &pack)
197206{
198207   running_machine *machine = image.device().machine;
199208
r9295r9296
223232
224233static TIMER_CALLBACK( nmi_timer )
225234{
226   if (psion.enable_nmi)
235   psion_state *state = machine->driver_data<psion_state>();
236
237   if (state->enable_nmi)
227238      cputag_set_input_line(machine, "maincpu", INPUT_LINE_NMI, PULSE_LINE);
228239}
229240
230UINT8 kb_read(running_machine *machine)
241static UINT8 kb_read(running_machine *machine)
231242{
243   psion_state *state = machine->driver_data<psion_state>();
232244   static const char *const bitnames[] = {"K1", "K2", "K3", "K4", "K5", "K6", "K7"};
233245   UINT8 line, data = 0x7c;
234246
235   if (psion.kb_counter)
247   if (state->kb_counter)
236248   {
237249      for (line = 0; line < 7; line++)
238         if (psion.kb_counter == (0x7f & ~(1 << line)))
250         if (state->kb_counter == (0x7f & ~(1 << line)))
239251            data = input_port_read(machine, bitnames[line]);
240252   }
241253   else
r9295r9296
247259   return data & 0x7c;
248260}
249261
250void update_bank(running_machine *machine)
262static void update_bank(running_machine *machine)
251263{
252   if (psion.ram_bank < psion.ram_bank_count && psion.ram_bank_count)
253      memory_set_bankptr(machine,"rambank", psion.paged_ram + psion.ram_bank*0x4000);
264   psion_state *state = machine->driver_data<psion_state>();
254265
255   if (psion.rom_bank_count)
266   if (state->ram_bank < state->ram_bank_count && state->ram_bank_count)
267      memory_set_bankptr(machine,"rambank", state->paged_ram + state->ram_bank*0x4000);
268
269   if (state->rom_bank_count)
256270   {
257      if (psion.rom_bank==0)
271      if (state->rom_bank==0)
258272         memory_set_bankptr(machine,"rombank", memory_region(machine, "maincpu") + 0x8000);
259      else if (psion.rom_bank < psion.rom_bank_count)
260         memory_set_bankptr(machine,"rombank", memory_region(machine, "maincpu") + psion.rom_bank*0x4000 + 0xc000);
273      else if (state->rom_bank < state->rom_bank_count)
274         memory_set_bankptr(machine,"rombank", memory_region(machine, "maincpu") + state->rom_bank*0x4000 + 0xc000);
261275   }
262276}
263277
264struct datapack *get_active_slot(running_machine *machine, UINT8 data)
278static struct datapack *get_active_slot(running_machine *machine, UINT8 data)
265279{
280   psion_state *state = machine->driver_data<psion_state>();
281
266282   switch(data & 0x70)
267283   {
268284      case 0x60:
269         return &psion.pack1;
285         return &state->pack1;
270286      case 0x50:
271         return &psion.pack2;
287         return &state->pack2;
272288   }
273289
274290   return NULL;
275291}
276292
277WRITE8_HANDLER( hd63701_int_reg_w )
293static WRITE8_HANDLER( hd63701_int_reg_w )
278294{
295   psion_state *state = space->machine->driver_data<psion_state>();
296
279297   switch (offset)
280298   {
281299   case 0x01:
282      psion.port2_ddr = data;
300      state->port2_ddr = data;
283301      break;
284302   case 0x03:
285303      /* datapack i/o data bus */
286      if (psion.port2_ddr == 0xff)
304      if (state->port2_ddr == 0xff)
287305      {
288         datapack *pack = get_active_slot(space->machine, psion.port6);
306         datapack *pack = get_active_slot(space->machine, state->port6);
289307
290308         if (pack)
291            psion.port2 = datapack_update(pack, data);
309            state->port2 = datapack_update(pack, data);
292310         else
293            psion.port2 = data;
311            state->port2 = data;
294312      }
295313      break;
296314   case 0x08:
297      psion.tcsr_value = data;
315      state->tcsr_value = data;
298316      break;
299317   case 0x15:
300318      /* read-only */
301319      break;
302320   case 0x16:
303      psion.port6_ddr = data;
321      state->port6_ddr = data;
304322      break;
305323   case 0x17:
306324      /*
r9295r9296
315333        ---- ---x clock line
316334        */
317335      {
318         psion.port6 = (data & psion.port6_ddr) | (psion.port6 & ~psion.port6_ddr);
319         datapack *pack = get_active_slot(space->machine, psion.port6);
336         state->port6 = (data & state->port6_ddr) | (state->port6 & ~state->port6_ddr);
337         datapack *pack = get_active_slot(space->machine, state->port6);
320338
321339         if (pack != NULL)
322340         {
323            datapack_control_lines_w(pack, psion.port6);
324            datapack_update(pack, psion.port2);
341            datapack_control_lines_w(pack, state->port6);
342            datapack_update(pack, state->port2);
325343         }
326344      }
327345      break;
r9295r9296
330348   hd63701_internal_registers_w(space, offset, data);
331349}
332350
333READ8_HANDLER( hd63701_int_reg_r )
351static READ8_HANDLER( hd63701_int_reg_r )
334352{
353   psion_state *state = space->machine->driver_data<psion_state>();
354
335355   switch (offset)
336356   {
337357   case 0x03:
338358      /* datapack i/o data bus */
339      if (psion.port2_ddr == 0)
359      if (state->port2_ddr == 0)
340360      {
341         datapack *pack = get_active_slot(space->machine, psion.port6);
361         datapack *pack = get_active_slot(space->machine, state->port6);
342362
343363         if (pack)
344            psion.port2 = datapack_update(pack, psion.port2);
364            state->port2 = datapack_update(pack, state->port2);
345365         else
346            psion.port2 = 0;
366            state->port2 = 0;
347367
348         return psion.port2;
368         return state->port2;
349369      }
350370      else
351371         return 0;
352372   case 0x14:
353      return (hd63701_internal_registers_r(space, offset)&0x7f) | (psion.stby_pwr<<7);
373      return (hd63701_internal_registers_r(space, offset)&0x7f) | (state->stby_pwr<<7);
354374   case 0x15:
355375      /*
356376        x--- ---- ON key active high
r9295r9296
358378        ---- --x- pulse
359379        ---- ---x battery status
360380        */
361      return kb_read(space->machine) | input_port_read(space->machine, "BATTERY") | input_port_read(space->machine, "ON") | (psion.kb_counter == 0x7ff)<<1 | psion.pulse<<1;
381      return kb_read(space->machine) | input_port_read(space->machine, "BATTERY") | input_port_read(space->machine, "ON") | (state->kb_counter == 0x7ff)<<1 | state->pulse<<1;
362382   case 0x17:
363383      /* datapack control lines */
364384      {
365         datapack *pack = get_active_slot(space->machine, psion.port6);
385         datapack *pack = get_active_slot(space->machine, state->port6);
366386
367387         if (pack)
368388            return datapack_control_lines_r(pack);
369389         else
370            return psion.port6;
390            return state->port6;
371391      }
372392   case 0x08:
373      hd63701_internal_registers_w(space, offset, psion.tcsr_value);
393      hd63701_internal_registers_w(space, offset, state->tcsr_value);
374394   default:
375395      return hd63701_internal_registers_r(space, offset);
376396   }
377397}
378398
379399/* Read/Write common */
380void io_rw(address_space* space, UINT16 offset)
400static void io_rw(address_space* space, UINT16 offset)
381401{
402   psion_state *state = space->machine->driver_data<psion_state>();
403
382404   if (space->debugger_access())
383405      return;
384406
r9295r9296
386408   {
387409   case 0xc0:
388410      /* switch off, CPU goes into standby mode */
389      psion.enable_nmi = 0;
390      psion.stby_pwr = 1;
411      state->enable_nmi = 0;
412      state->stby_pwr = 1;
391413      space->machine->device<cpu_device>("maincpu")->suspend(SUSPEND_REASON_HALT, 1);
392414      break;
393415   case 0x100:
394      psion.pulse = 1;
416      state->pulse = 1;
395417      break;
396418   case 0x140:
397      psion.pulse = 0;
419      state->pulse = 0;
398420      break;
399421   case 0x200:
400      psion.kb_counter = 0;
422      state->kb_counter = 0;
401423      break;
402424   case 0x180:
403      beep_set_state(space->machine->device("beep"), 1);
425      beep_set_state(state->beep, 1);
404426      break;
405427   case 0x1c0:
406      beep_set_state(space->machine->device("beep"), 0);
428      beep_set_state(state->beep, 0);
407429      break;
408430   case 0x240:
409      if (offset == 0x260 && (psion.rom_bank_count || psion.ram_bank_count))
431      if (offset == 0x260 && (state->rom_bank_count || state->ram_bank_count))
410432      {
411         psion.ram_bank=0;
412         psion.rom_bank=0;
433         state->ram_bank=0;
434         state->rom_bank=0;
413435         update_bank(space->machine);
414436      }
415437      else
416         psion.kb_counter++;
438         state->kb_counter++;
417439      break;
418440   case 0x280:
419      if (offset == 0x2a0 && psion.ram_bank_count)
441      if (offset == 0x2a0 && state->ram_bank_count)
420442      {
421         psion.ram_bank++;
443         state->ram_bank++;
422444         update_bank(space->machine);
423445      }
424446      else
425         psion.enable_nmi = 1;
447         state->enable_nmi = 1;
426448      break;
427449   case 0x2c0:
428      if (offset == 0x2e0 && psion.rom_bank_count)
450      if (offset == 0x2e0 && state->rom_bank_count)
429451      {
430         psion.rom_bank++;
452         state->rom_bank++;
431453         update_bank(space->machine);
432454      }
433455      else
434         psion.enable_nmi = 0;
456         state->enable_nmi = 0;
435457      break;
436458   }
437459}
438460
439WRITE8_HANDLER( io_w )
461static WRITE8_HANDLER( io_w )
440462{
441   hd44780_device * hd44780 = space->machine->device<hd44780_device>("hd44780");
463   psion_state *state = space->machine->driver_data<psion_state>();
442464
443465   switch (offset & 0x0ffc0)
444466   {
445467   case 0x80:
446468      if (offset & 1)
447         hd44780->data_write(offset, data);
469         state->hd44780->data_write(offset, data);
448470      else
449         hd44780->control_write(offset, data);
471         state->hd44780->control_write(offset, data);
450472      break;
451473   default:
452474      io_rw(space, offset);
453475   }
454476}
455477
456READ8_HANDLER( io_r )
478static READ8_HANDLER( io_r )
457479{
458   hd44780_device * hd44780 = space->machine->device<hd44780_device>("hd44780");
480      psion_state *state = space->machine->driver_data<psion_state>();
459481
460482   switch (offset & 0xffc0)
461483   {
462484   case 0x80:
463485      if (offset& 1)
464         return hd44780->data_read(offset);
486         return state->hd44780->data_read(offset);
465487      else
466         return hd44780->control_read(offset);
488         return state->hd44780->control_read(offset);
467489   default:
468490      io_rw(space, offset);
469491   }
r9295r9296
483505static ADDRESS_MAP_START(psioncm_mem, ADDRESS_SPACE_PROGRAM, 8)
484506   ADDRESS_MAP_UNMAP_LOW
485507   AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
486   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE(&psion.sys_register)
508   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE_MEMBER(psion_state, sys_register)
487509   AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
488   AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE(&psion.ram) AM_SIZE(&psion.ram_size)
510   AM_RANGE(0x2000, 0x3fff) AM_RAM AM_BASE_SIZE_MEMBER(psion_state, ram, ram_size)
489511   AM_RANGE(0x8000, 0xffff) AM_ROM
490512ADDRESS_MAP_END
491513
492514static ADDRESS_MAP_START(psionla_mem, ADDRESS_SPACE_PROGRAM, 8)
493515   ADDRESS_MAP_UNMAP_LOW
494516   AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
495   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE(&psion.sys_register)
517   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE_MEMBER(psion_state, sys_register)
496518   AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
497   AM_RANGE(0x0400, 0x5fff) AM_RAM AM_BASE(&psion.ram) AM_SIZE(&psion.ram_size)
519   AM_RANGE(0x0400, 0x5fff) AM_RAM AM_BASE_SIZE_MEMBER(psion_state, ram, ram_size)
498520   AM_RANGE(0x8000, 0xffff) AM_ROM
499521ADDRESS_MAP_END
500522
501523static ADDRESS_MAP_START(psionp350_mem, ADDRESS_SPACE_PROGRAM, 8)
502524   ADDRESS_MAP_UNMAP_LOW
503525   AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
504   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE(&psion.sys_register)
526   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE_MEMBER(psion_state, sys_register)
505527   AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
506   AM_RANGE(0x0400, 0x3fff) AM_RAM AM_BASE(&psion.ram) AM_SIZE(&psion.ram_size)
528   AM_RANGE(0x0400, 0x3fff) AM_RAM AM_BASE_SIZE_MEMBER(psion_state, ram, ram_size)
507529   AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("rambank")
508530   AM_RANGE(0x8000, 0xffff) AM_ROM
509531ADDRESS_MAP_END
r9295r9296
511533static ADDRESS_MAP_START(psionlam_mem, ADDRESS_SPACE_PROGRAM, 8)
512534   ADDRESS_MAP_UNMAP_LOW
513535   AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
514   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE(&psion.sys_register)
536   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE_MEMBER(psion_state, sys_register)
515537   AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
516   AM_RANGE(0x0400, 0x7fff) AM_RAM AM_BASE(&psion.ram) AM_SIZE(&psion.ram_size)
538   AM_RANGE(0x0400, 0x7fff) AM_RAM AM_BASE_SIZE_MEMBER(psion_state, ram, ram_size)
517539   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("rombank")
518540   AM_RANGE(0xc000, 0xffff) AM_ROM
519541ADDRESS_MAP_END
r9295r9296
521543static ADDRESS_MAP_START(psionlz_mem, ADDRESS_SPACE_PROGRAM, 8)
522544   ADDRESS_MAP_UNMAP_LOW
523545   AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
524   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE(&psion.sys_register)
546   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_BASE_MEMBER(psion_state, sys_register)
525547   AM_RANGE(0x0100, 0x03ff) AM_READWRITE(io_r, io_w)
526   AM_RANGE(0x0400, 0x3fff) AM_RAM AM_BASE(&psion.ram) AM_SIZE(&psion.ram_size)
548   AM_RANGE(0x0400, 0x3fff) AM_RAM AM_BASE_SIZE_MEMBER(psion_state, ram, ram_size)
527549   AM_RANGE(0x4000, 0x7fff) AM_RAMBANK("rambank")
528550   AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("rombank")
529551   AM_RANGE(0xc000, 0xffff) AM_ROM
r9295r9296
591613
592614static DEVICE_IMAGE_LOAD( psion_pack1 )
593615{
594   return datapack_load(image, psion.pack1);
616   psion_state *state = image.device().machine->driver_data<psion_state>();
617
618   return datapack_load(image, state->pack1);
595619}
596620
597621static DEVICE_IMAGE_UNLOAD( psion_pack1 )
598622{
599   datapack_unload(image, psion.pack1);
623   psion_state *state = image.device().machine->driver_data<psion_state>();
624
625   datapack_unload(image, state->pack1);
600626}
601627
602628static DEVICE_IMAGE_LOAD( psion_pack2 )
603629{
604   return datapack_load(image, psion.pack2);
630   psion_state *state = image.device().machine->driver_data<psion_state>();
631
632   return datapack_load(image, state->pack2);
605633}
606634
607635static DEVICE_IMAGE_UNLOAD( psion_pack2 )
608636{
609   datapack_unload(image, psion.pack2);
637   psion_state *state = image.device().machine->driver_data<psion_state>();
638
639   datapack_unload(image, state->pack2);
610640}
611641
612642static NVRAM_HANDLER( psion )
613643{
644   psion_state *state = machine->driver_data<psion_state>();
645
614646   if (read_or_write)
615647   {
616      mame_fwrite(file, psion.sys_register, 0xc0);
617      mame_fwrite(file, psion.ram, psion.ram_size);
618      if (psion.ram_bank_count)
619         mame_fwrite(file, psion.paged_ram, psion.ram_bank_count * 0x4000);
648      mame_fwrite(file, state->sys_register, 0xc0);
649      mame_fwrite(file, state->ram, state->ram_size);
650      if (state->ram_bank_count)
651         mame_fwrite(file, state->paged_ram, state->ram_bank_count * 0x4000);
620652   }
621653   else
622654   {
623655      if (file)
624656      {
625         mame_fread(file, psion.sys_register, 0xc0);
626         mame_fread(file, psion.ram, psion.ram_size);
627         if (psion.ram_bank_count)
628            mame_fread(file, psion.paged_ram, psion.ram_bank_count * 0x4000);
657         mame_fread(file, state->sys_register, 0xc0);
658         mame_fread(file, state->ram, state->ram_size);
659         if (state->ram_bank_count)
660            mame_fread(file, state->paged_ram, state->ram_bank_count * 0x4000);
629661
630         psion.stby_pwr = 1;
662         state->stby_pwr = 1;
631663      }
632664      else
633         psion.stby_pwr = 0;
665         state->stby_pwr = 0;
634666   }
635667}
636668
637669static MACHINE_START(psion)
638670{
671   psion_state *state = machine->driver_data<psion_state>();
672
639673   if (!strcmp(machine->gamedrv->name, "psionlam"))
640674   {
641      psion.rom_bank_count = 3;
642      psion.ram_bank_count = 0;
675      state->rom_bank_count = 3;
676      state->ram_bank_count = 0;
643677   }
644678   else if (!strcmp(machine->gamedrv->name, "psionp350"))
645679   {
646      psion.rom_bank_count = 0;
647      psion.ram_bank_count = 5;
680      state->rom_bank_count = 0;
681      state->ram_bank_count = 5;
648682   }
649683   else if (!strncmp(machine->gamedrv->name, "psionlz", 7))
650684   {
651      psion.rom_bank_count = 3;
652      psion.ram_bank_count = 3;
685      state->rom_bank_count = 3;
686      state->ram_bank_count = 3;
653687   }
654688   else if (!strcmp(machine->gamedrv->name, "psionp464"))
655689   {
656      psion.rom_bank_count = 3;
657      psion.ram_bank_count = 9;
690      state->rom_bank_count = 3;
691      state->ram_bank_count = 9;
658692   }
659693   else
660694   {
661      psion.rom_bank_count = 0;
662      psion.ram_bank_count = 0;
695      state->rom_bank_count = 0;
696      state->ram_bank_count = 0;
663697   }
664698
665   if (psion.ram_bank_count)
666      psion.paged_ram = auto_alloc_array(machine, UINT8, psion.ram_bank_count * 0x4000);
699   if (state->ram_bank_count)
700      state->paged_ram = auto_alloc_array(machine, UINT8, state->ram_bank_count * 0x4000);
667701
668702   timer_pulse(machine, ATTOTIME_IN_SEC(1), NULL, 0, nmi_timer);
703
704   state->hd44780 = machine->device<hd44780_device>("hd44780");
705   state->beep = machine->device<device_t>("beep");
669706}
670707
671708static MACHINE_RESET(psion)
672709{
673   psion.enable_nmi=0;
674   psion.kb_counter=0;
675   psion.ram_bank=0;
676   psion.rom_bank=0;
677   psion.pulse=0;
710   psion_state *state = machine->driver_data<psion_state>();
678711
679   if (psion.rom_bank_count || psion.ram_bank_count)
712   state->enable_nmi=0;
713   state->kb_counter=0;
714   state->ram_bank=0;
715   state->rom_bank=0;
716   state->pulse=0;
717
718   if (state->rom_bank_count || state->ram_bank_count)
680719      update_bank(machine);
681720}
682721
r9295r9296
686725
687726static VIDEO_UPDATE( psion_2lines )
688727{
689   hd44780_device * hd44780 = screen->machine->device<hd44780_device>("hd44780");
728   psion_state *state = screen->machine->driver_data<psion_state>();
690729
691   return hd44780->video_update( bitmap, cliprect );
730   return state->hd44780->video_update( bitmap, cliprect );
692731}
693732
694733static VIDEO_UPDATE( psion_4lines )
695734{
696   hd44780_device * hd44780 = screen->machine->device<hd44780_device>("hd44780");
735   psion_state *state = screen->machine->driver_data<psion_state>();
697736
698   return hd44780->video_update( bitmap, cliprect );
737   return state->hd44780->video_update( bitmap, cliprect );
699738}
700739
701740static PALETTE_INIT( psion )
r9295r9296
744783};
745784
746785/* basic configuration for 2 lines display */
747static MACHINE_CONFIG_START( psion_2lines, driver_device )
786static MACHINE_CONFIG_START( psion_2lines, psion_state )
748787   /* basic machine hardware */
749788    MDRV_CPU_ADD("maincpu",HD63701, 980000) // should be HD6303 at 0.98MHz
750789
r9295r9296
794833};
795834
796835/* basic configuration for 4 lines display */
797static MACHINE_CONFIG_START( psion_4lines, driver_device )
836static MACHINE_CONFIG_START( psion_4lines, psion_state )
798837   /* basic machine hardware */
799838    MDRV_CPU_ADD("maincpu",HD63701, 980000) // should be HD6303 at 0.98MHz
800839

Previous 15994 Revisions Next


© 1998-2018 The MESS Team