Previous 199869 Revisions Next

r20487 Saturday 26th January, 2013 at 14:01:13 UTC by Wilbert Pol
(MESS) mbee.c: tagmap cleanups (nw)
[src/mess/includes]mbee.h
[src/mess/machine]mbee.c
[src/mess/video]mbee.c

trunk/src/mess/machine/mbee.c
r20486r20487
144144
145145   UINT8 i, j;
146146   UINT8 pressed[15];
147   char kbdrow[6];
148147
149148
150149   /* see what is pressed */
151   for (i = 0; i < 15; i++)
152   {
153      sprintf(kbdrow,"X%d",i);
154      pressed[i] = (machine().root_device().ioport(kbdrow)->read());
155   }
150   pressed[0] = m_io_x0->read();
151   pressed[1] = m_io_x1->read();
152   pressed[2] = m_io_x2->read();
153   pressed[3] = m_io_x3->read();
154   pressed[4] = m_io_x4->read();
155   pressed[5] = m_io_x5->read();
156   pressed[6] = m_io_x6->read();
157   pressed[7] = m_io_x7->read();
158   pressed[8] = m_io_x8->read();
159   pressed[9] = m_io_x9->read();
160   pressed[10] = m_io_x10->read();
161   pressed[11] = m_io_x11->read();
162   pressed[12] = m_io_x12->read();
163   pressed[13] = m_io_x13->read();
164   pressed[14] = m_io_x14->read();
156165
157166   /* find what has changed */
158167   for (i = 0; i < 15; i++)
r20486r20487
201210
202211READ8_MEMBER( mbee_state::mbee256_speed_low_r )
203212{
204   machine().device("maincpu")->set_unscaled_clock(3375000);
213   m_maincpu->set_unscaled_clock(3375000);
205214   return 0xff;
206215}
207216
208217READ8_MEMBER( mbee_state::mbee256_speed_high_r )
209218{
210   machine().device("maincpu")->set_unscaled_clock(6750000);
219   m_maincpu->set_unscaled_clock(6750000);
211220   return 0xff;
212221}
213222
r20486r20487
221230
222231WRITE8_MEMBER( mbee_state::mbee_04_w )  // address
223232{
224   address_space &mem = m_maincpu->space(AS_IO);
225   machine().device<mc146818_device>("rtc")->write(mem, 0, data);
233   m_rtc->write(space, 0, data);
226234}
227235
228236WRITE8_MEMBER( mbee_state::mbee_06_w )  // write
229237{
230   address_space &mem = m_maincpu->space(AS_IO);
231   machine().device<mc146818_device>("rtc")->write(mem, 1, data);
238   m_rtc->write(space, 1, data);
232239}
233240
234241READ8_MEMBER( mbee_state::mbee_07_r )   // read
235242{
236   address_space &mem = m_maincpu->space(AS_IO);
237   return machine().device<mc146818_device>("rtc")->read(mem, 1);
243   return m_rtc->read(space, 1);
238244}
239245
240246TIMER_CALLBACK_MEMBER(mbee_state::mbee_rtc_irq)
241247{
242   address_space &mem = machine().device("maincpu")->memory().space(AS_IO);
243   UINT8 data = machine().device<mc146818_device>("rtc")->read(mem, 12);
248   UINT8 data = m_rtc->read(m_maincpu->space(AS_PROGRAM), 12);
244249   if (data) m_clock_pulse = 0x80;
245250}
246251
r20486r20487
264269   address_space &mem = m_maincpu->space(AS_PROGRAM);
265270
266271   // primary low banks
267   membank("boot")->set_entry((data & 3) | ((data & 0x20) >> 3));
268   membank("bank1")->set_entry((data & 3) | ((data & 0x20) >> 3));
272   m_boot->set_entry((data & 3) | ((data & 0x20) >> 3));
273   m_bank1->set_entry((data & 3) | ((data & 0x20) >> 3));
269274
270275   // 9000-EFFF
271   membank("bank9")->set_entry((data & 4) ? 1 : 0);
276   m_bank9->set_entry((data & 4) ? 1 : 0);
272277
273278   // 8000-8FFF, F000-FFFF
274279   mem.unmap_readwrite (0x8000, 0x87ff);
r20486r20487
283288         mem.install_read_bank (0x8800, 0x8fff, "bank8h");
284289         mem.install_readwrite_handler (0xf000, 0xf7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r), this), write8_delegate(FUNC(mbee_state::mbeeppc_low_w), this));
285290         mem.install_readwrite_handler (0xf800, 0xffff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r), this), write8_delegate(FUNC(mbee_state::mbeeppc_high_w), this));
286         membank("bank8l")->set_entry(0); // rom
287         membank("bank8h")->set_entry(0); // rom
291         m_bank8l->set_entry(0); // rom
292         m_bank8h->set_entry(0); // rom
288293         break;
289294      case 0x04:
290295         mem.install_read_bank (0x8000, 0x87ff, "bank8l");
291296         mem.install_read_bank (0x8800, 0x8fff, "bank8h");
292297         mem.install_readwrite_handler (0xf000, 0xf7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r), this), write8_delegate(FUNC(mbee_state::mbeeppc_low_w), this));
293298         mem.install_readwrite_handler (0xf800, 0xffff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r), this), write8_delegate(FUNC(mbee_state::mbeeppc_high_w), this));
294         membank("bank8l")->set_entry(1); // ram
295         membank("bank8h")->set_entry(1); // ram
299         m_bank8l->set_entry(1); // ram
300         m_bank8h->set_entry(1); // ram
296301         break;
297302      case 0x08:
298303      case 0x18:
r20486r20487
300305         mem.install_read_bank (0x8800, 0x8fff, "bank8h");
301306         mem.install_read_bank (0xf000, 0xf7ff, "bankfl");
302307         mem.install_read_bank (0xf800, 0xffff, "bankfh");
303         membank("bank8l")->set_entry(0); // rom
304         membank("bank8h")->set_entry(0); // rom
305         membank("bankfl")->set_entry(0); // ram
306         membank("bankfh")->set_entry(0); // ram
308         m_bank8l->set_entry(0); // rom
309         m_bank8h->set_entry(0); // rom
310         m_bankfl->set_entry(0); // ram
311         m_bankfh->set_entry(0); // ram
307312         break;
308313      case 0x0c:
309314      case 0x1c:
r20486r20487
311316         mem.install_read_bank (0x8800, 0x8fff, "bank8h");
312317         mem.install_read_bank (0xf000, 0xf7ff, "bankfl");
313318         mem.install_read_bank (0xf800, 0xffff, "bankfh");
314         membank("bank8l")->set_entry(1); // ram
315         membank("bank8h")->set_entry(1); // ram
316         membank("bankfl")->set_entry(0); // ram
317         membank("bankfh")->set_entry(0); // ram
319         m_bank8l->set_entry(1); // ram
320         m_bank8h->set_entry(1); // ram
321         m_bankfl->set_entry(0); // ram
322         m_bankfh->set_entry(0); // ram
318323         break;
319324      case 0x10:
320325      case 0x14:
r20486r20487
322327         mem.install_readwrite_handler (0x8800, 0x8fff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r), this), write8_delegate(FUNC(mbee_state::mbeeppc_high_w), this));
323328         mem.install_read_bank (0xf000, 0xf7ff, "bankfl");
324329         mem.install_read_bank (0xf800, 0xffff, "bankfh");
325         membank("bankfl")->set_entry(0); // ram
326         membank("bankfh")->set_entry(0); // ram
330         m_bankfl->set_entry(0); // ram
331         m_bankfh->set_entry(0); // ram
327332         break;
328333   }
329334}
r20486r20487
346351   address_space &mem = m_maincpu->space(AS_PROGRAM);
347352
348353   // primary low banks
349   membank("boot")->set_entry((data & 3));
350   membank("bank1")->set_entry((data & 3));
354   m_boot->set_entry((data & 3));
355   m_bank1->set_entry((data & 3));
351356
352357   // 9000-EFFF
353   membank("bank9")->set_entry((data & 4) ? 1 : 0);
358   m_bank9->set_entry((data & 4) ? 1 : 0);
354359
355360   // 8000-8FFF, F000-FFFF
356361   mem.unmap_readwrite (0x8000, 0x87ff);
r20486r20487
365370         mem.install_read_bank (0x8800, 0x8fff, "bank8h");
366371         mem.install_readwrite_handler (0xf000, 0xf7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_low_w),this));
367372         mem.install_readwrite_handler (0xf800, 0xffff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_high_w),this));
368         membank("bank8l")->set_entry(0); // rom
369         membank("bank8h")->set_entry(0); // rom
373         m_bank8l->set_entry(0); // rom
374         m_bank8h->set_entry(0); // rom
370375         break;
371376      case 0x04:
372377         mem.install_read_bank (0x8000, 0x87ff, "bank8l");
373378         mem.install_read_bank (0x8800, 0x8fff, "bank8h");
374379         mem.install_readwrite_handler (0xf000, 0xf7ff, read8_delegate(FUNC(mbee_state::mbeeppc_low_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_low_w),this));
375380         mem.install_readwrite_handler (0xf800, 0xffff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_high_w),this));
376         membank("bank8l")->set_entry(1); // ram
377         membank("bank8h")->set_entry(1); // ram
381         m_bank8l->set_entry(1); // ram
382         m_bank8h->set_entry(1); // ram
378383         break;
379384      case 0x08:
380385      case 0x18:
r20486r20487
382387         mem.install_read_bank (0x8800, 0x8fff, "bank8h");
383388         mem.install_read_bank (0xf000, 0xf7ff, "bankfl");
384389         mem.install_read_bank (0xf800, 0xffff, "bankfh");
385         membank("bank8l")->set_entry(0); // rom
386         membank("bank8h")->set_entry(0); // rom
387         membank("bankfl")->set_entry(0); // ram
388         membank("bankfh")->set_entry(0); // ram
390         m_bank8l->set_entry(0); // rom
391         m_bank8h->set_entry(0); // rom
392         m_bankfl->set_entry(0); // ram
393         m_bankfh->set_entry(0); // ram
389394         break;
390395      case 0x0c:
391396      case 0x1c:
r20486r20487
393398         mem.install_read_bank (0x8800, 0x8fff, "bank8h");
394399         mem.install_read_bank (0xf000, 0xf7ff, "bankfl");
395400         mem.install_read_bank (0xf800, 0xffff, "bankfh");
396         membank("bank8l")->set_entry(1); // ram
397         membank("bank8h")->set_entry(1); // ram
398         membank("bankfl")->set_entry(0); // ram
399         membank("bankfh")->set_entry(0); // ram
401         m_bank8l->set_entry(1); // ram
402         m_bank8h->set_entry(1); // ram
403         m_bankfl->set_entry(0); // ram
404         m_bankfh->set_entry(0); // ram
400405         break;
401406      case 0x10:
402407      case 0x14:
r20486r20487
404409         mem.install_readwrite_handler (0x8800, 0x8fff, read8_delegate(FUNC(mbee_state::mbeeppc_high_r),this), write8_delegate(FUNC(mbee_state::mbeeppc_high_w),this));
405410         mem.install_read_bank (0xf000, 0xf7ff, "bankfl");
406411         mem.install_read_bank (0xf800, 0xffff, "bankfh");
407         membank("bankfl")->set_entry(0); // ram
408         membank("bankfh")->set_entry(0); // ram
412         m_bankfl->set_entry(0); // ram
413         m_bankfh->set_entry(0); // ram
409414         break;
410415   }
411416}
r20486r20487
426431{
427432   if BIT(data, 2)
428433   {
429      membank("boot")->set_entry(0);
430      membank("bankl")->set_entry(0);
431      membank("bankh")->set_entry(0);
434      m_boot->set_entry(0);
435      m_bankl->set_entry(0);
436      m_bankh->set_entry(0);
432437   }
433438   else
434439   {
435      membank("bankl")->set_entry(1);
436      membank("bankh")->set_entry(1);
440      m_bankl->set_entry(1);
441      m_bankh->set_entry(1);
437442   }
438443}
439444
r20486r20487
462467WRITE8_MEMBER( mbee_state::mbeeic_0a_w )
463468{
464469   m_0a = data;
465   membank("pak")->set_entry(data & 15);
470   m_pak->set_entry(data & 15);
466471}
467472
468473READ8_MEMBER( mbee_state::mbeepc_telcom_low_r )
469474{
470475/* Read of port 0A - set Telcom rom to first half */
471   membank("telcom")->set_entry(0);
476   m_telcom->set_entry(0);
472477   return m_0a;
473478}
474479
475480READ8_MEMBER( mbee_state::mbeepc_telcom_high_r )
476481{
477482/* Read of port 10A - set Telcom rom to 2nd half */
478   membank("telcom")->set_entry(1);
483   m_telcom->set_entry(1);
479484   return m_0a;
480485}
481486
r20486r20487
495500/* after the first 4 bytes have been read from ROM, switch the ram back in */
496501TIMER_CALLBACK_MEMBER(mbee_state::mbee_reset)
497502{
498   membank("boot")->set_entry(0);
503   m_boot->set_entry(0);
499504}
500505
501static void machine_reset_common_disk(running_machine &machine)
506void mbee_state::machine_reset_common_disk()
502507{
503   mbee_state *state = machine.driver_data<mbee_state>();
504508   /* These values need to be fine tuned or the fdc repaired */
505   wd17xx_set_pause_time(state->m_fdc, 45);       /* default is 40 usec if not set */
506//  wd17xx_set_complete_command_delay(state->m_fdc, 50);   /* default is 12 usec if not set */
509   wd17xx_set_pause_time(m_fdc, 45);       /* default is 40 usec if not set */
510//  wd17xx_set_complete_command_delay(m_fdc, 50);   /* default is 12 usec if not set */
507511}
508512
509513MACHINE_RESET_MEMBER(mbee_state,mbee)
510514{
511   membank("boot")->set_entry(1);
515   m_boot->set_entry(1);
512516   machine().scheduler().timer_set(attotime::from_usec(4), timer_expired_delegate(FUNC(mbee_state::mbee_reset),this));
513517}
514518
515519MACHINE_RESET_MEMBER(mbee_state,mbee56)
516520{
517   machine_reset_common_disk(machine());
518   membank("boot")->set_entry(1);
521   machine_reset_common_disk();
522   m_boot->set_entry(1);
519523   machine().scheduler().timer_set(attotime::from_usec(4), timer_expired_delegate(FUNC(mbee_state::mbee_reset),this));
520524}
521525
522526MACHINE_RESET_MEMBER(mbee_state,mbee64)
523527{
524   machine_reset_common_disk(machine());
525   membank("boot")->set_entry(1);
526   membank("bankl")->set_entry(1);
527   membank("bankh")->set_entry(1);
528   machine_reset_common_disk();
529   m_boot->set_entry(1);
530   m_bankl->set_entry(1);
531   m_bankh->set_entry(1);
528532}
529533
530534MACHINE_RESET_MEMBER(mbee_state,mbee128)
531535{
532   address_space &mem = machine().device("maincpu")->memory().space(AS_PROGRAM);
533   machine_reset_common_disk(machine());
536   address_space &mem = m_maincpu->space(AS_PROGRAM);
537   machine_reset_common_disk();
534538   mbee128_50_w(mem,0,0); // set banks to default
535   membank("boot")->set_entry(4); // boot time
539   m_boot->set_entry(4); // boot time
536540}
537541
538542MACHINE_RESET_MEMBER(mbee_state,mbee256)
539543{
540544   UINT8 i;
541   address_space &mem = machine().device("maincpu")->memory().space(AS_PROGRAM);
542   machine_reset_common_disk(machine());
545   address_space &mem = m_maincpu->space(AS_PROGRAM);
546   machine_reset_common_disk();
543547   for (i = 0; i < 15; i++) m_mbee256_was_pressed[i] = 0;
544548   m_mbee256_q_pos = 0;
545549   mbee256_50_w(mem,0,0); // set banks to default
546   membank("boot")->set_entry(8); // boot time
550   m_boot->set_entry(8); // boot time
547551   machine().scheduler().timer_set(attotime::from_usec(4), timer_expired_delegate(FUNC(mbee_state::mbee_reset),this));
548552}
549553
r20486r20487
552556   UINT8 i;
553557   for (i = 0; i < 15; i++) m_mbee256_was_pressed[i] = 0;
554558   m_mbee256_q_pos = 0;
555   membank("boot")->set_entry(1);
559   m_boot->set_entry(1);
556560   machine().scheduler().timer_set(attotime::from_usec(4), timer_expired_delegate(FUNC(mbee_state::mbee_reset),this));
557561}
558562
r20486r20487
582586DRIVER_INIT_MEMBER(mbee_state,mbee)
583587{
584588   UINT8 *RAM = memregion("maincpu")->base();
585   membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0x8000);
589   m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000);
586590   m_size = 0x4000;
587591}
588592
589593DRIVER_INIT_MEMBER(mbee_state,mbeeic)
590594{
591   UINT8 *RAM = machine().root_device().memregion("maincpu")->base();
592   membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0x8000);
595   UINT8 *RAM = memregion("maincpu")->base();
596   m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000);
593597
594598   RAM = memregion("pakrom")->base();
595   membank("pak")->configure_entries(0, 16, &RAM[0x0000], 0x2000);
599   m_pak->configure_entries(0, 16, &RAM[0x0000], 0x2000);
596600
597   membank("pak")->set_entry(0);
601   m_pak->set_entry(0);
598602   m_size = 0x8000;
599603}
600604
601605DRIVER_INIT_MEMBER(mbee_state,mbeepc)
602606{
603   UINT8 *RAM = machine().root_device().memregion("maincpu")->base();
604   membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0x8000);
607   UINT8 *RAM = memregion("maincpu")->base();
608   m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000);
605609
606   RAM = machine().root_device().memregion("telcomrom")->base();
607   membank("telcom")->configure_entries(0, 2, &RAM[0x0000], 0x1000);
610   RAM = memregion("telcomrom")->base();
611   m_telcom->configure_entries(0, 2, &RAM[0x0000], 0x1000);
608612
609613   RAM = memregion("pakrom")->base();
610   membank("pak")->configure_entries(0, 16, &RAM[0x0000], 0x2000);
614   m_pak->configure_entries(0, 16, &RAM[0x0000], 0x2000);
611615
612   membank("pak")->set_entry(0);
613   membank("telcom")->set_entry(0);
616   m_pak->set_entry(0);
617   m_telcom->set_entry(0);
614618   m_size = 0x8000;
615619}
616620
617621DRIVER_INIT_MEMBER(mbee_state,mbeepc85)
618622{
619   UINT8 *RAM = machine().root_device().memregion("maincpu")->base();
620   membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0x8000);
623   UINT8 *RAM = memregion("maincpu")->base();
624   m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000);
621625
622   RAM = machine().root_device().memregion("telcomrom")->base();
623   membank("telcom")->configure_entries(0, 2, &RAM[0x0000], 0x1000);
626   RAM = memregion("telcomrom")->base();
627   m_telcom->configure_entries(0, 2, &RAM[0x0000], 0x1000);
624628
625629   RAM = memregion("pakrom")->base();
626   membank("pak")->configure_entries(0, 16, &RAM[0x0000], 0x2000);
630   m_pak->configure_entries(0, 16, &RAM[0x0000], 0x2000);
627631
628   membank("pak")->set_entry(5);
629   membank("telcom")->set_entry(0);
632   m_pak->set_entry(5);
633   m_telcom->set_entry(0);
630634   m_size = 0x8000;
631635}
632636
633637DRIVER_INIT_MEMBER(mbee_state,mbeeppc)
634638{
635   UINT8 *RAM = machine().root_device().memregion("maincpu")->base();
636   membank("boot")->configure_entry(0, &RAM[0x0000]);
639   UINT8 *RAM = memregion("maincpu")->base();
640   m_boot->configure_entry(0, &RAM[0x0000]);
637641
638   RAM = machine().root_device().memregion("basicrom")->base();
639   membank("basic")->configure_entries(0, 2, &RAM[0x0000], 0x2000);
640   membank("boot")->configure_entry(1, &RAM[0x0000]);
642   RAM = memregion("basicrom")->base();
643   m_basic->configure_entries(0, 2, &RAM[0x0000], 0x2000);
644   m_boot->configure_entry(1, &RAM[0x0000]);
641645
642   RAM = machine().root_device().memregion("telcomrom")->base();
643   membank("telcom")->configure_entries(0, 2, &RAM[0x0000], 0x1000);
646   RAM = memregion("telcomrom")->base();
647   m_telcom->configure_entries(0, 2, &RAM[0x0000], 0x1000);
644648
645649   RAM = memregion("pakrom")->base();
646   membank("pak")->configure_entries(0, 16, &RAM[0x0000], 0x2000);
650   m_pak->configure_entries(0, 16, &RAM[0x0000], 0x2000);
647651
648   membank("pak")->set_entry(5);
649   membank("telcom")->set_entry(0);
650   membank("basic")->set_entry(0);
652   m_pak->set_entry(5);
653   m_telcom->set_entry(0);
654   m_basic->set_entry(0);
651655   m_size = 0x8000;
652656}
653657
654658DRIVER_INIT_MEMBER(mbee_state,mbee56)
655659{
656660   UINT8 *RAM = memregion("maincpu")->base();
657   membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0xe000);
661   m_boot->configure_entries(0, 2, &RAM[0x0000], 0xe000);
658662   m_size = 0xe000;
659663}
660664
661665DRIVER_INIT_MEMBER(mbee_state,mbee64)
662666{
663   UINT8 *RAM = machine().root_device().memregion("maincpu")->base();
664   membank("boot")->configure_entry(0, &RAM[0x0000]);
665   membank("bankl")->configure_entry(0, &RAM[0x1000]);
666   membank("bankl")->configure_entry(1, &RAM[0x9000]);
667   membank("bankh")->configure_entry(0, &RAM[0x8000]);
667   UINT8 *RAM = memregion("maincpu")->base();
668   m_boot->configure_entry(0, &RAM[0x0000]);
669   m_bankl->configure_entry(0, &RAM[0x1000]);
670   m_bankl->configure_entry(1, &RAM[0x9000]);
671   m_bankh->configure_entry(0, &RAM[0x8000]);
668672
669673   RAM = memregion("bootrom")->base();
670   membank("bankh")->configure_entry(1, &RAM[0x0000]);
671   membank("boot")->configure_entry(1, &RAM[0x0000]);
674   m_bankh->configure_entry(1, &RAM[0x0000]);
675   m_boot->configure_entry(1, &RAM[0x0000]);
672676
673677   m_size = 0xf000;
674678}
675679
676680DRIVER_INIT_MEMBER(mbee_state,mbee128)
677681{
678   UINT8 *RAM = machine().root_device().memregion("maincpu")->base();
679   membank("boot")->configure_entries(0, 4, &RAM[0x0000], 0x8000); // standard banks 0000
680   membank("bank1")->configure_entries(0, 4, &RAM[0x1000], 0x8000); // standard banks 1000
681   membank("bank8l")->configure_entry(1, &RAM[0x0000]); // shadow ram
682   membank("bank8h")->configure_entry(1, &RAM[0x0800]); // shadow ram
683   membank("bank9")->configure_entry(1, &RAM[0x1000]); // shadow ram
684   membank("bankfl")->configure_entry(0, &RAM[0xf000]); // shadow ram
685   membank("bankfh")->configure_entry(0, &RAM[0xf800]); // shadow ram
682   UINT8 *RAM = memregion("maincpu")->base();
683   m_boot->configure_entries(0, 4, &RAM[0x0000], 0x8000); // standard banks 0000
684   m_bank1->configure_entries(0, 4, &RAM[0x1000], 0x8000); // standard banks 1000
685   m_bank8l->configure_entry(1, &RAM[0x0000]); // shadow ram
686   m_bank8h->configure_entry(1, &RAM[0x0800]); // shadow ram
687   m_bank9->configure_entry(1, &RAM[0x1000]); // shadow ram
688   m_bankfl->configure_entry(0, &RAM[0xf000]); // shadow ram
689   m_bankfh->configure_entry(0, &RAM[0xf800]); // shadow ram
686690
687691   RAM = memregion("bootrom")->base();
688   membank("bank9")->configure_entry(0, &RAM[0x1000]); // rom
689   membank("boot")->configure_entry(4, &RAM[0x0000]); // rom at boot for 4usec
690   membank("bank8l")->configure_entry(0, &RAM[0x0000]); // rom
691   membank("bank8h")->configure_entry(0, &RAM[0x0800]); // rom
692   m_bank9->configure_entry(0, &RAM[0x1000]); // rom
693   m_boot->configure_entry(4, &RAM[0x0000]); // rom at boot for 4usec
694   m_bank8l->configure_entry(0, &RAM[0x0000]); // rom
695   m_bank8h->configure_entry(0, &RAM[0x0800]); // rom
692696
693697   m_size = 0x8000;
694698}
695699
696700DRIVER_INIT_MEMBER(mbee_state,mbee256)
697701{
698   UINT8 *RAM = machine().root_device().memregion("maincpu")->base();
699   membank("boot")->configure_entries(0, 8, &RAM[0x0000], 0x8000); // standard banks 0000
700   membank("bank1")->configure_entries(0, 8, &RAM[0x1000], 0x8000); // standard banks 1000
701   membank("bank8l")->configure_entry(1, &RAM[0x0000]); // shadow ram
702   membank("bank8h")->configure_entry(1, &RAM[0x0800]); // shadow ram
703   membank("bank9")->configure_entry(1, &RAM[0x1000]); // shadow ram
704   membank("bankfl")->configure_entry(0, &RAM[0xf000]); // shadow ram
705   membank("bankfh")->configure_entry(0, &RAM[0xf800]); // shadow ram
702   UINT8 *RAM = memregion("maincpu")->base();
703   m_boot->configure_entries(0, 8, &RAM[0x0000], 0x8000); // standard banks 0000
704   m_bank1->configure_entries(0, 8, &RAM[0x1000], 0x8000); // standard banks 1000
705   m_bank8l->configure_entry(1, &RAM[0x0000]); // shadow ram
706   m_bank8h->configure_entry(1, &RAM[0x0800]); // shadow ram
707   m_bank9->configure_entry(1, &RAM[0x1000]); // shadow ram
708   m_bankfl->configure_entry(0, &RAM[0xf000]); // shadow ram
709   m_bankfh->configure_entry(0, &RAM[0xf800]); // shadow ram
706710
707711   RAM = memregion("bootrom")->base();
708   membank("bank9")->configure_entry(0, &RAM[0x1000]); // rom
709   membank("boot")->configure_entry(8, &RAM[0x0000]); // rom at boot for 4usec
710   membank("bank8l")->configure_entry(0, &RAM[0x0000]); // rom
711   membank("bank8h")->configure_entry(0, &RAM[0x0800]); // rom
712   m_bank9->configure_entry(0, &RAM[0x1000]); // rom
713   m_boot->configure_entry(8, &RAM[0x0000]); // rom at boot for 4usec
714   m_bank8l->configure_entry(0, &RAM[0x0000]); // rom
715   m_bank8h->configure_entry(0, &RAM[0x0800]); // rom
712716
713717   machine().scheduler().timer_pulse(attotime::from_hz(1), timer_expired_delegate(FUNC(mbee_state::mbee_rtc_irq),this));   /* timer for rtc */
714718   machine().scheduler().timer_pulse(attotime::from_hz(25), timer_expired_delegate(FUNC(mbee_state::mbee256_kbd),this));   /* timer for kbd */
r20486r20487
718722
719723DRIVER_INIT_MEMBER(mbee_state,mbeett)
720724{
721   UINT8 *RAM = machine().root_device().memregion("maincpu")->base();
722   membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0x8000);
725   UINT8 *RAM = memregion("maincpu")->base();
726   m_boot->configure_entries(0, 2, &RAM[0x0000], 0x8000);
723727
724   RAM = machine().root_device().memregion("telcomrom")->base();
725   membank("telcom")->configure_entries(0, 2, &RAM[0x0000], 0x1000);
728   RAM = memregion("telcomrom")->base();
729   m_telcom->configure_entries(0, 2, &RAM[0x0000], 0x1000);
726730
727731   RAM = memregion("pakrom")->base();
728   membank("pak")->configure_entries(0, 16, &RAM[0x0000], 0x2000);
732   m_pak->configure_entries(0, 16, &RAM[0x0000], 0x2000);
729733
730   membank("pak")->set_entry(5);
731   membank("telcom")->set_entry(0);
734   m_pak->set_entry(5);
735   m_telcom->set_entry(0);
732736
733737   machine().scheduler().timer_pulse(attotime::from_hz(1), timer_expired_delegate(FUNC(mbee_state::mbee_rtc_irq),this));   /* timer for rtc */
734738   machine().scheduler().timer_pulse(attotime::from_hz(25), timer_expired_delegate(FUNC(mbee_state::mbee256_kbd),this));   /* timer for kbd */
trunk/src/mess/includes/mbee.h
r20486r20487
2727{
2828public:
2929   mbee_state(const machine_config &mconfig, device_type type, const char *tag)
30      : driver_device(mconfig, type, tag),
31   m_maincpu(*this, "maincpu"),
32   m_pio(*this, "z80pio"),
33   m_cass(*this, CASSETTE_TAG),
34   m_wave(*this, WAVE_TAG),
35   m_speaker(*this, SPEAKER_TAG),
36   m_printer(*this, "centronics"),
37   m_crtc(*this, "crtc"),
38   m_fdc(*this, "fdc"),
39   m_rtc(*this, "rtc")
30      : driver_device(mconfig, type, tag)
31      , m_maincpu(*this, "maincpu")
32      , m_pio(*this, "z80pio")
33      , m_cass(*this, CASSETTE_TAG)
34      , m_wave(*this, WAVE_TAG)
35      , m_speaker(*this, SPEAKER_TAG)
36      , m_printer(*this, "centronics")
37      , m_crtc(*this, "crtc")
38      , m_fdc(*this, "fdc")
39      , m_rtc(*this, "rtc")
40      , m_boot(*this, "boot")
41      , m_pak(*this, "pak")
42      , m_telcom(*this, "telcom")
43      , m_basic(*this, "basic")
44      , m_bankl(*this, "bankl")
45      , m_bankh(*this, "bankh")
46      , m_bank1(*this, "bank1")
47      , m_bank8l(*this, "bank8l")
48      , m_bank8h(*this, "bank8h")
49      , m_bank9(*this, "bank9")
50      , m_bankfl(*this, "bankfl")
51      , m_bankfh(*this, "bankfh")
52      , m_io_x0(*this, "X0")
53      , m_io_x1(*this, "X1")
54      , m_io_x2(*this, "X2")
55      , m_io_x3(*this, "X3")
56      , m_io_x4(*this, "X4")
57      , m_io_x5(*this, "X5")
58      , m_io_x6(*this, "X6")
59      , m_io_x7(*this, "X7")
60      , m_io_extra(*this, "EXTRA")
61      , m_io_config(*this, "CONFIG")
62      , m_io_x8(*this, "X8")
63      , m_io_x9(*this, "X9")
64      , m_io_x10(*this, "X10")
65      , m_io_x11(*this, "X11")
66      , m_io_x12(*this, "X12")
67      , m_io_x13(*this, "X13")
68      , m_io_x14(*this, "X14")
4069   { }
4170
4271   required_device<cpu_device> m_maincpu;
r20486r20487
145174   TIMER_CALLBACK_MEMBER(mbee256_kbd);
146175   TIMER_CALLBACK_MEMBER(mbee_rtc_irq);
147176   TIMER_CALLBACK_MEMBER(mbee_reset);
177
178protected:
179   required_memory_bank m_boot;
180   optional_memory_bank m_pak;
181   optional_memory_bank m_telcom;
182   optional_memory_bank m_basic;
183   optional_memory_bank m_bankl;
184   optional_memory_bank m_bankh;
185   optional_memory_bank m_bank1;
186   optional_memory_bank m_bank8l;
187   optional_memory_bank m_bank8h;
188   optional_memory_bank m_bank9;
189   optional_memory_bank m_bankfl;
190   optional_memory_bank m_bankfh;
191   required_ioport m_io_x0;
192   required_ioport m_io_x1;
193   required_ioport m_io_x2;
194   required_ioport m_io_x3;
195   required_ioport m_io_x4;
196   required_ioport m_io_x5;
197   required_ioport m_io_x6;
198   required_ioport m_io_x7;
199   optional_ioport m_io_extra;
200   optional_ioport m_io_config;
201   optional_ioport m_io_x8;
202   optional_ioport m_io_x9;
203   optional_ioport m_io_x10;
204   optional_ioport m_io_x11;
205   optional_ioport m_io_x12;
206   optional_ioport m_io_x13;
207   optional_ioport m_io_x14;
208
209   void machine_reset_common_disk();
148210};
149211
150212
trunk/src/mess/video/mbee.c
r20486r20487
211211/* The direction keys are used by the pc85 menu. Do not know what uses the "insert" key. */
212212void mbee_state::keyboard_matrix_r(int offs)
213213{
214   char kbdrow[6];
215214   UINT8 port = (offs >> 7) & 7;
216215   UINT8 bit = (offs >> 4) & 7;
217   sprintf(kbdrow,"X%d",port);
218   UINT8 data = (ioport(kbdrow)->read() >> bit) & 1;
216   UINT8 data = 0;
219217
218   switch ( port )
219   {
220      case 0: data = m_io_x0->read(); break;
221      case 1: data = m_io_x1->read(); break;
222      case 2: data = m_io_x2->read(); break;
223      case 3: data = m_io_x3->read(); break;
224      case 4: data = m_io_x4->read(); break;
225      case 5: data = m_io_x5->read(); break;
226      case 6: data = m_io_x6->read(); break;
227      case 7: data = m_io_x7->read(); break;
228   }
229   data  = ( data >> bit ) & 1;
230
220231   if ((data | m_is_premium) == 0)
221232   {
222      UINT8 extra = ioport("EXTRA")->read();
233      UINT8 extra = m_io_extra->read();
223234
224235      if( extra & 0x01 )  /* extra: cursor up */
225236      {

Previous 199869 Revisions Next


© 1997-2024 The MAME Team