Previous 199869 Revisions Next

r32234 Saturday 20th September, 2014 at 16:13:44 UTC by Fabio Priuli
and a few more. nw.
[src/mess/drivers]cc40.c pasogo.c pokemini.c portfoli.c tek405x.c
[src/mess/includes]portfoli.h tek405x.h

trunk/src/mess/drivers/portfoli.c
r32233r32234
873873   MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", portfolio_state, keyboard_tick, attotime::from_usec(2500))
874874
875875   /* cartridge */
876   MCFG_CARTSLOT_ADD("cart")
877   MCFG_CARTSLOT_EXTENSION_LIST("bin")
878   MCFG_CARTSLOT_INTERFACE("portfolio_cart")
879   MCFG_CARTSLOT_LOAD(portfolio_state,portfolio_cart)
876   MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "portfolio_cart")
877   MCFG_GENERIC_LOAD(portfolio_state, portfolio_cart)
880878
881879   /* memory card */
882880/*  MCFG_MEMCARD_ADD("memcard_a")
trunk/src/mess/drivers/pokemini.c
r32233r32234
1111#include "sound/speaker.h"
1212#include "machine/i2cmem.h"
1313#include "cpu/minx/minx.h"
14#include "imagedev/cartslot.h"
14#include "bus/generic/slot.h"
15#include "bus/generic/carts.h"
1516#include "rendlay.h"
1617
1718
r32233r32234
5455      m_p_ram(*this, "p_ram"),
5556      m_speaker(*this, "speaker"),
5657      m_i2cmem(*this, "i2cmem"),
57      m_inputs(*this, "INPUTS") { }
58      m_cart(*this, "cartslot"),
59      m_inputs(*this, "INPUTS")
60   { }
5861
59   required_device<cpu_device> m_maincpu;
60   required_shared_ptr<UINT8> m_p_ram;
6162   UINT8 m_pm_reg[0x100];
6263   PRC m_prc;
6364   TIMERS m_timers;
r32233r32234
6768
6869   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
6970   DECLARE_PALETTE_INIT(pokemini);
70   TIMER_CALLBACK_MEMBER(pokemini_seconds_timer_callback);
71   TIMER_CALLBACK_MEMBER(pokemini_256hz_timer_callback);
72   TIMER_CALLBACK_MEMBER(pokemini_timer1_callback);
73   TIMER_CALLBACK_MEMBER(pokemini_timer1_hi_callback);
74   TIMER_CALLBACK_MEMBER(pokemini_timer2_callback);
75   TIMER_CALLBACK_MEMBER(pokemini_timer2_hi_callback);
76   TIMER_CALLBACK_MEMBER(pokemini_timer3_callback);
77   TIMER_CALLBACK_MEMBER(pokemini_timer3_hi_callback);
78   TIMER_CALLBACK_MEMBER(pokemini_prc_counter_callback);
79   DECLARE_WRITE8_MEMBER(pokemini_hwreg_w);
80   DECLARE_READ8_MEMBER(pokemini_hwreg_r);
71   DECLARE_WRITE8_MEMBER(hwreg_w);
72   DECLARE_READ8_MEMBER(hwreg_r);
73   DECLARE_READ8_MEMBER(rom_r);
8174   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(pokemini_cart);
8275
8376protected:
r32233r32234
9689
9790   virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
9891
92   required_device<cpu_device> m_maincpu;
93   required_shared_ptr<UINT8> m_p_ram;
9994   required_device<speaker_sound_device> m_speaker;
10095   required_device<i2cmem_device> m_i2cmem;
96   required_device<generic_slot_device> m_cart;
10197   required_ioport m_inputs;
10298
103   void pokemini_check_irqs();
104   void pokemini_update_sound();
105   void pokemini_seconds_timer_callback();
106   void pokemini_256hz_timer_callback();
107   void pokemini_timer1_callback();
108   void pokemini_timer1_hi_callback();
109   void pokemini_timer2_callback();
110   void pokemini_timer2_hi_callback();
111   void pokemini_timer3_callback();
112   void pokemini_timer3_hi_callback();
113   void pokemini_prc_counter_callback();
99   void check_irqs();
100   void update_sound();
101   void seconds_timer_callback();
102   void timer_256hz_callback();
103   void timer1_callback();
104   void timer1_hi_callback();
105   void timer2_callback();
106   void timer2_hi_callback();
107   void timer3_callback();
108   void timer3_hi_callback();
109   void prc_counter_callback();
114110
115111};
116112
117113
114READ8_MEMBER( pokemini_state::rom_r )
115{
116   offset += 0x2100;
117   return m_cart->read_rom(space, offset & 0x1fffff);
118}
119
118120static ADDRESS_MAP_START( pokemini_mem_map, AS_PROGRAM, 8, pokemini_state )
119   AM_RANGE( 0x000000, 0x000FFF )  AM_ROM                          /* bios */
120   AM_RANGE( 0x001000, 0x001FFF )  AM_RAM AM_SHARE("p_ram")                /* VRAM/RAM */
121   AM_RANGE( 0x002000, 0x0020FF )  AM_READWRITE(pokemini_hwreg_r, pokemini_hwreg_w )   /* hardware registers */
122   AM_RANGE( 0x002100, 0x1FFFFF )  AM_ROM                          /* cartridge area */
121   AM_RANGE( 0x000000, 0x000fff )  AM_ROM                            /* bios */
122   AM_RANGE( 0x001000, 0x001fff )  AM_RAM AM_SHARE("p_ram")          /* VRAM/RAM */
123   AM_RANGE( 0x002000, 0x0020ff )  AM_READWRITE(hwreg_r, hwreg_w)    /* hardware registers */
124   AM_RANGE( 0x002100, 0x1fffff )  AM_READ(rom_r)                    /* cartridge area */
123125ADDRESS_MAP_END
124126
125127
r32233r32234
145147}
146148
147149
148void pokemini_state::pokemini_check_irqs()
150void pokemini_state::check_irqs()
149151{
150152   int irq_set[4] = { 1, 0, 0, 0 };
151153   int prio, vector;
r32233r32234
298300}
299301
300302
301void pokemini_state::pokemini_update_sound()
303void pokemini_state::update_sound()
302304{
303305   /* Check if sound should be muted */
304306   if ( m_pm_reg[0x70] & 0x03 )
r32233r32234
321323}
322324
323325
324void pokemini_state::pokemini_seconds_timer_callback()
326void pokemini_state::seconds_timer_callback()
325327{
326328   if ( m_pm_reg[0x08] & 0x01 )
327329   {
r32233r32234
338340}
339341
340342
341void pokemini_state::pokemini_256hz_timer_callback()
343void pokemini_state::timer_256hz_callback()
342344{
343345   if ( m_pm_reg[0x40] & 0x01 )
344346   {
r32233r32234
366368            }
367369         }
368370
369         pokemini_check_irqs();
371         check_irqs();
370372      }
371373   }
372374}
373375
374376
375void pokemini_state::pokemini_timer1_callback()
377void pokemini_state::timer1_callback()
376378{
377379   m_pm_reg[0x36] -= 1;
378380   /* Check for underflow of timer */
r32233r32234
385387         if ( m_pm_reg[0x37] == 0xFF )
386388         {
387389            m_pm_reg[0x27] |= 0x08;
388            pokemini_check_irqs();
390            check_irqs();
389391            m_pm_reg[0x36] = m_pm_reg[0x32];
390392            m_pm_reg[0x37] = m_pm_reg[0x33];
391393         }
r32233r32234
393395      else
394396      {
395397         m_pm_reg[0x27] |= 0x04;
396         pokemini_check_irqs();
398         check_irqs();
397399         m_pm_reg[0x36] = m_pm_reg[0x32];
398400      }
399401   }
400402}
401403
402404
403void pokemini_state::pokemini_timer1_hi_callback()
405void pokemini_state::timer1_hi_callback()
404406{
405407   m_pm_reg[0x37] -= 1;
406408   /* Check for underflow of timer */
407409   if ( m_pm_reg[0x37] == 0xFF )
408410   {
409411      m_pm_reg[0x27] |= 0x08;
410      pokemini_check_irqs();
412      check_irqs();
411413      m_pm_reg[0x37] = m_pm_reg[0x33];
412414   }
413415}
414416
415417
416void pokemini_state::pokemini_timer2_callback()
418void pokemini_state::timer2_callback()
417419{
418420   m_pm_reg[0x3E] -= 1;
419421   /* Check for underflow of timer */
r32233r32234
426428         if ( m_pm_reg[0x3F] == 0xFF )
427429         {
428430            m_pm_reg[0x27] |= 0x20;
429            pokemini_check_irqs();
431            check_irqs();
430432            m_pm_reg[0x3E] = m_pm_reg[0x3A];
431433            m_pm_reg[0x3F] = m_pm_reg[0x3B];
432434         }
r32233r32234
434436      else
435437      {
436438         m_pm_reg[0x27] |= 0x10;
437         pokemini_check_irqs();
439         check_irqs();
438440         m_pm_reg[0x3E] = m_pm_reg[0x3A];
439441      }
440442   }
441443}
442444
443445
444void pokemini_state::pokemini_timer2_hi_callback()
446void pokemini_state::timer2_hi_callback()
445447{
446448   m_pm_reg[0x3F] -= 1;
447449   /* Check for underfow of timer */
448450   if ( m_pm_reg[0x3F] == 0xFF )
449451   {
450452      m_pm_reg[0x27] |= 0x20;
451      pokemini_check_irqs();
453      check_irqs();
452454      m_pm_reg[0x3F] = m_pm_reg[0x3B];
453455   }
454456}
455457
456458
457void pokemini_state::pokemini_timer3_callback()
459void pokemini_state::timer3_callback()
458460{
459461   m_pm_reg[0x4E] -= 1;
460462   /* Check for underflow of timer */
r32233r32234
467469         if ( m_pm_reg[0x4F] == 0xFF )
468470         {
469471            m_pm_reg[0x27] |= 0x02;
470            pokemini_check_irqs();
472            check_irqs();
471473            m_pm_reg[0x4E] = m_pm_reg[0x4A];
472474            m_pm_reg[0x4F] = m_pm_reg[0x4B];
473475         }
r32233r32234
483485      if (  ( m_pm_reg[0x4E] == m_pm_reg[0x4C] ) && ( m_pm_reg[0x4F] == m_pm_reg[0x4D] ) )
484486      {
485487         m_pm_reg[0x27] |= 0x01;
486         pokemini_check_irqs();
488         check_irqs();
487489      }
488      pokemini_update_sound();
490      update_sound();
489491   }
490492}
491493
492494
493void pokemini_state::pokemini_timer3_hi_callback()
495void pokemini_state::timer3_hi_callback()
494496{
495497   m_pm_reg[0x4F] -= 1;
496498   /* Check for underflow of timer */
497499   if ( m_pm_reg[0x4F] == 0xFF )
498500   {
499501      m_pm_reg[0x27] |= 0x02;
500      pokemini_check_irqs();
502      check_irqs();
501503      m_pm_reg[0x4F] = m_pm_reg[0x4B];
502504   }
503505
r32233r32234
506508      if( m_pm_reg[0x4F] == m_pm_reg[0x4D] )
507509      {
508510         m_pm_reg[0x27] |= 0x01;
509         pokemini_check_irqs();
511         check_irqs();
510512      }
511      pokemini_update_sound();
513      update_sound();
512514   }
513515}
514516
515517
516WRITE8_MEMBER(pokemini_state::pokemini_hwreg_w)
518WRITE8_MEMBER(pokemini_state::hwreg_w)
517519{
518520   static const int timer_to_cycles_fast[8] = { 2, 8, 32, 64, 128, 256, 1024, 4096 };
519521   static const int timer_to_cycles_slow[8] = { 128, 256, 512, 1024, 2048, 4096, 8192, 16384 };
r32233r32234
902904               Bit 6-7 R/W VDraw/VBlank trigger Interrupt #1-#2
903905            */
904906      m_pm_reg[0x20] = data;
905      pokemini_check_irqs();
907      check_irqs();
906908      break;
907909   case 0x21:  /* Event #15-#22 priority
908910               Bit 0-1 R/W Unknown
r32233r32234
910912               Bit 4-7 R/W Unknown
911913            */
912914      m_pm_reg[0x21] = data;
913      pokemini_check_irqs();
915      check_irqs();
914916      break;
915917   case 0x22:  /* Event #9-#14 priority
916918               Bit 0-1 R/W All #9 - #14 events - Interrupt #9-#14
917919               Bit 2-7     Unused
918920            */
919921      m_pm_reg[0x22] = data;
920      pokemini_check_irqs();
922      check_irqs();
921923      break;
922924   case 0x23:  /* Event #1-#8 enable
923925               Bit 0   R/W Timer 3 overflow (mirror) - Enable Interrupt #8
r32233r32234
930932               Bit 7   R/W V-Blank trigger - Enable Interrupt #1
931933            */
932934      m_pm_reg[0x23] = data;
933      pokemini_check_irqs();
935      check_irqs();
934936      break;
935937   case 0x24:  /* Event #9-#12 enable
936938               Bit 0-5 R/W Unknown
937939               Bit 6-7     Unused
938940            */
939941      m_pm_reg[0x24] = data;
940      pokemini_check_irqs();
942      check_irqs();
941943      break;
942944   case 0x25:  /* Event #15-#22 enable
943945               Bit 0   R/W Press key "A" event - Enable interrupt #22
r32233r32234
950952               Bit 7   R/W Press power button event - Enable interrupt #15
951953            */
952954      m_pm_reg[0x25] = data;
953      pokemini_check_irqs();
955      check_irqs();
954956      break;
955957   case 0x26:  /* Event #13-#14 enable
956958               Bit 0-2 R/W Unknown
r32233r32234
960962               Bit 7   R/W IR receiver - low to high trigger - Enable interrupt #13
961963            */
962964      m_pm_reg[0x26] = data;
963      pokemini_check_irqs();
965      check_irqs();
964966      break;
965967   case 0x27:  /* Interrupt active flag #1-#8
966968               Bit 0       Timer 3 overflow (mirror) / Clear interrupt #8
r32233r32234
973975               Bit 7       VBlank trigger / Clear interrupt #1
974976            */
975977      m_pm_reg[0x27] &= ~data;
976      pokemini_check_irqs();
978      check_irqs();
977979      return;
978980   case 0x28:  /* Interrupt active flag #9-#12
979981               Bit 0-1     Unknown
r32233r32234
984986               Bit 6-7     Unknown
985987            */
986988      m_pm_reg[0x28] &= ~data;
987      pokemini_check_irqs();
989      check_irqs();
988990      return;
989991   case 0x29:  /* Interrupt active flag #15-#22
990992               Bit 0       Press key "A" event / Clear interrupt #22
r32233r32234
997999               Bit 7       Press power button event / Clear interrupt #15
9981000            */
9991001      m_pm_reg[0x29] &= ~data;
1000      pokemini_check_irqs();
1002      check_irqs();
10011003      return;
10021004   case 0x2A:  /* Interrupt active flag #13-#14
10031005               Bit 0-5     Unknown
r32233r32234
10051007               Bit 7       Unknown / Clear interrupt #13
10061008            */
10071009      m_pm_reg[0x2A] &= ~data;
1008      pokemini_check_irqs();
1010      check_irqs();
10091011      return;
10101012   case 0x30:  /* Timer 1 control 1
10111013               Bit 0   R/W Unknown
r32233r32234
12181220         m_timers.timer3_hi->enable( 0 );
12191221      }
12201222      m_pm_reg[0x48] = data;
1221      pokemini_update_sound();
1223      update_sound();
12221224      break;
12231225   case 0x49:  /* Timer 3 control 2
12241226               Bit 0   R/W Unknown
r32233r32234
12441246         m_timers.timer3_hi->enable( 0 );
12451247      }
12461248      m_pm_reg[0x49] = data;
1247      pokemini_update_sound();
1249      update_sound();
12481250      break;
12491251   case 0x4A:  /* Timer 3 preset value (low)
12501252               Bit 0-7 R/W Timer 3 preset value bit 0-7
12511253            */
12521254      m_pm_reg[0x4A] = data;
1253      pokemini_update_sound();
1255      update_sound();
12541256      break;
12551257   case 0x4B:  /* Timer 3 preset value (high)
12561258               Bit 0-7 R/W Timer 3 preset value bit 8-15
12571259            */
12581260      m_pm_reg[0x4B] = data;
1259      pokemini_update_sound();
1261      update_sound();
12601262      break;
12611263   case 0x4C:  /* Timer 3 sound-pivot (low)
12621264               Bit 0-7 R/W Timer 3 sound-pivot value bit 0-7
12631265            */
12641266      m_pm_reg[0x4C] = data;
1265      pokemini_update_sound();
1267      update_sound();
12661268      break;
12671269   case 0x4D:  /* Timer 3 sound-pivot (high)
12681270               Bit 0-7 R/W Timer 3 sound-pivot value bit 8-15
r32233r32234
12731275               Pulse-Width of 100% = Same as preset-value
12741276            */
12751277      m_pm_reg[0x4D] = data;
1276      pokemini_update_sound();
1278      update_sound();
12771279      break;
12781280   case 0x4E:  /* Timer 3 counter (low), read only
12791281               Bit 0-7 R/W Timer 3 counter value bit 0-7
r32233r32234
13231325      break;
13241326   case 0x70:  /* Sound related */
13251327      m_pm_reg[0x70] = data;
1326      pokemini_update_sound();
1328      update_sound();
13271329      break;
13281330   case 0x71:  /* Sound volume
13291331               Bit 0-1 R/W Sound volume
r32233r32234
13351337               Bit 3-7     Unused
13361338            */
13371339      m_pm_reg[0x71] = data;
1338      pokemini_update_sound();
1340      update_sound();
13391341      break;
13401342   case 0x80:  /* LCD control
13411343               Bit 0   R/W Invert colors; 0 - normal, 1 - inverted
r32233r32234
14701472   m_pm_reg[offset] = data;
14711473}
14721474
1473READ8_MEMBER(pokemini_state::pokemini_hwreg_r)
1475READ8_MEMBER(pokemini_state::hwreg_r)
14741476{
14751477   UINT8 data = m_pm_reg[offset];
14761478
r32233r32234
14961498
14971499DEVICE_IMAGE_LOAD_MEMBER( pokemini_state, pokemini_cart )
14981500{
1499   if (image.software_entry() == NULL)
1500   {
1501      int size = image.length();
1501   UINT32 size = m_cart->common_get_size("rom");
15021502
1503      /* Verify that the image is big enough */
1504      if (size <= 0x2100)
1505      {
1506         image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid ROM image: ROM image is too small");
1507         return IMAGE_INIT_FAIL;
1508      }
1509
1510      /* Verify that the image is not too big */
1511      if (size > 0x1FFFFF)
1512      {
1513         image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid ROM image: ROM image is too big");
1514         return IMAGE_INIT_FAIL;
1515      }
1516
1517      /* Skip the first 0x2100 bytes */
1518      image.fseek(0x2100, SEEK_SET);
1519      size -= 0x2100;
1520
1521      if (size != image.fread( memregion("maincpu")->base() + 0x2100, size))
1522      {
1523         image.seterror(IMAGE_ERROR_UNSPECIFIED, "Error occurred while reading ROM image");
1524         return IMAGE_INIT_FAIL;
1525      }
1503   /* Verify that the image is big enough */
1504   if (size <= 0x2100)
1505   {
1506      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid ROM image: ROM image is too small");
1507      return IMAGE_INIT_FAIL;
15261508   }
1527   else
1509   
1510   /* Verify that the image is not too big */
1511   if (size > 0x1fffff)
15281512   {
1529      UINT8 *cart_rom = image.get_software_region("rom");
1530      UINT32 cart_rom_size = image.get_software_region_length("rom");
1531      memcpy(memregion("maincpu")->base() + 0x2100, cart_rom + 0x2100, cart_rom_size - 0x2100);
1513      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid ROM image: ROM image is too big");
1514      return IMAGE_INIT_FAIL;
15321515   }
15331516
1517   m_cart->rom_alloc(size, 1);
1518   m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");         
1519
15341520   return IMAGE_INIT_PASS;
15351521}
15361522
15371523
1538void pokemini_state::pokemini_prc_counter_callback()
1524void pokemini_state::prc_counter_callback()
15391525{
15401526   address_space &space = m_maincpu->space( AS_PROGRAM );
15411527   m_prc.count++;
r32233r32234
16431629
16441630         /* Set PRC Render interrupt */
16451631         m_pm_reg[0x27] |= 0x40;
1646         pokemini_check_irqs();
1632         check_irqs();
16471633
16481634         /* Check if the rendered data should be copied to the LCD */
16491635         if ( m_prc.copy_enabled )
r32233r32234
16671653
16681654            /* Set PRC Copy interrupt */
16691655            m_pm_reg[0x27] |= 0x80;
1670            pokemini_check_irqs();
1656            check_irqs();
16711657         }
16721658      }
16731659
r32233r32234
16861672
16871673   /* Set up timers */
16881674   m_timers.seconds_timer = timer_alloc(TIMER_SECONDS);
1689   m_timers.seconds_timer->adjust( attotime::zero, 0, attotime::from_seconds( 1 ) );
1675   m_timers.seconds_timer->adjust(attotime::zero, 0, attotime::from_seconds(1));
16901676
16911677   m_timers.hz256_timer = timer_alloc(TIMER_256HZ);
1692   m_timers.hz256_timer->adjust( attotime::zero, 0, attotime::from_hz( 256 ) );
1678   m_timers.hz256_timer->adjust(attotime::zero, 0, attotime::from_hz(256));
16931679
16941680   m_timers.timer1 = timer_alloc(TIMER_1);
16951681   m_timers.timer1_hi = timer_alloc(TIMER_1_HI);
r32233r32234
17071693
17081694void pokemini_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
17091695{
1710   switch ( id )
1696   switch (id)
17111697   {
17121698      case TIMER_SECONDS:
1713         pokemini_seconds_timer_callback();
1699         seconds_timer_callback();
17141700         break;
17151701
17161702      case TIMER_256HZ:
1717         pokemini_256hz_timer_callback();
1703         timer_256hz_callback();
17181704         break;
17191705
17201706      case TIMER_1:
1721         pokemini_timer1_callback();
1707         timer1_callback();
17221708         break;
17231709
17241710      case TIMER_1_HI:
1725         pokemini_timer1_hi_callback();
1711         timer1_hi_callback();
17261712         break;
17271713
17281714      case TIMER_2:
1729         pokemini_timer2_callback();
1715         timer2_callback();
17301716         break;
17311717
17321718      case TIMER_2_HI:
1733         pokemini_timer2_hi_callback();
1719         timer2_hi_callback();
17341720         break;
17351721
17361722      case TIMER_3:
1737         pokemini_timer3_callback();
1723         timer3_callback();
17381724         break;
17391725
17401726      case TIMER_3_HI:
1741         pokemini_timer3_hi_callback();
1727         timer3_hi_callback();
17421728         break;
17431729
17441730      case TIMER_PRC:
1745         pokemini_prc_counter_callback();
1731         prc_counter_callback();
17461732         break;
17471733   }
17481734}
r32233r32234
17651751
17661752static MACHINE_CONFIG_START( pokemini, pokemini_state )
17671753   /* basic machine hardware */
1768   MCFG_CPU_ADD( "maincpu", MINX, 4000000 )
1769   MCFG_CPU_PROGRAM_MAP( pokemini_mem_map)
1754   MCFG_CPU_ADD("maincpu", MINX, 4000000)
1755   MCFG_CPU_PROGRAM_MAP(pokemini_mem_map)
17701756
17711757   MCFG_QUANTUM_TIME(attotime::from_hz(60))
17721758
r32233r32234
17831769
17841770   MCFG_DEFAULT_LAYOUT(layout_lcd)
17851771
1786   MCFG_PALETTE_ADD( "palette", 4 )
1772   MCFG_PALETTE_ADD("palette", 4)
17871773   MCFG_PALETTE_INIT_OWNER(pokemini_state, pokemini)
17881774
17891775   /* sound hardware */
r32233r32234
17931779   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
17941780
17951781   /* cartridge */
1796   MCFG_CARTSLOT_ADD("cart")
1797   MCFG_CARTSLOT_EXTENSION_LIST("min,bin")
1798   MCFG_CARTSLOT_NOT_MANDATORY
1799   MCFG_CARTSLOT_INTERFACE("pokemini_cart")
1800   MCFG_CARTSLOT_LOAD(pokemini_state,pokemini_cart)
1782   MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "pokemini_cart")
1783   MCFG_GENERIC_EXTENSIONS("bin,min")
1784   MCFG_GENERIC_LOAD(pokemini_state, pokemini_cart)
18011785
18021786   /* Software lists */
1803   MCFG_SOFTWARE_LIST_ADD("cart_list","pokemini")
1787   MCFG_SOFTWARE_LIST_ADD("cart_list", "pokemini")
18041788MACHINE_CONFIG_END
18051789
18061790ROM_START( pokemini )
trunk/src/mess/drivers/pasogo.c
r32233r32234
101101
102102#include "emu.h"
103103#include "cpu/nec/nec.h"
104#include "imagedev/cartslot.h"
105104#include "machine/pic8259.h"
106105#include "machine/pit8253.h"
107106#include "machine/am9517a.h"
107#include "machine/i8255.h"
108108#include "sound/speaker.h"
109#include "machine/i8255.h"
109#include "bus/generic/slot.h"
110#include "bus/generic/carts.h"
110111
111112
112113/*
r32233r32234
156157      , m_dma8237(*this, "dma8237")
157158      , m_pit8253(*this, "pit8254")
158159      , m_speaker(*this, "speaker")
160      , m_cart(*this, "cartslot")
159161   { }
160162
161163   required_device<cpu_device> m_maincpu;
r32233r32234
163165   required_device<am9517a_device> m_dma8237;
164166   required_device<pit8254_device> m_pit8253;
165167   required_device<speaker_sound_device> m_speaker;
168   required_device<generic_slot_device> m_cart;
166169
167170   DECLARE_READ8_MEMBER(ems_r);
168171   DECLARE_WRITE8_MEMBER(ems_w);
r32233r32234
212215   UINT8 m_pc_spkrdata;
213216   UINT8 m_pit_out2;
214217
218   memory_region *m_maincpu_rom;
219   memory_region *m_cart_rom;
220
215221   int m_ppi_portc_switch_high;
216222   int m_ppi_speaker;
217223   int m_ppi_keyboard_clear;
r32233r32234
507513      case 0: /*external*/
508514      case 1: /*ram*/
509515         sprintf(bank, "bank%d", m_ems.index + 1);
510         membank( bank )->set_base( memregion("maincpu")->base() + (m_ems.mapper[m_ems.index].address & 0xfffff) );
516         membank(bank)->set_base(m_maincpu_rom->base() + (m_ems.mapper[m_ems.index].address & 0xfffff));
511517         break;
512518      case 3: /* rom 1 */
513519      case 4: /* pc card a */
r32233r32234
516522         break;
517523      case 2:
518524         sprintf(bank, "bank%d", m_ems.index + 1);
519         membank( bank )->set_base( memregion("user1")->base() + (m_ems.mapper[m_ems.index].address & 0xfffff) );
525         membank(bank)->set_base(m_cart_rom->base() + (m_ems.mapper[m_ems.index].address & 0xfffff));
520526         break;
521527      }
522528      break;
r32233r32234
564570//  ADDRESS_MAP_GLOBAL_MASK(0xfFFF)
565571   AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE8("dma8237", am9517a_device, read, write, 0xffff)
566572   AM_RANGE(0x0020, 0x0021) AM_DEVREADWRITE8("pic8259", pic8259_device, read, write, 0xffff)
567   AM_RANGE(0x26, 0x27) AM_READWRITE8(vg230_io_r, vg230_io_w, 0xffff )
573   AM_RANGE(0x26, 0x27) AM_READWRITE8(vg230_io_r, vg230_io_w, 0xffff)
568574   AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE8("pit8254", pit8254_device, read, write, 0xffff)
569575   AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE8("ppi8255", i8255_device, read, write, 0xffff)
570   AM_RANGE(0x6c, 0x6f) AM_READWRITE8(ems_r, ems_w, 0xffff )
576   AM_RANGE(0x6c, 0x6f) AM_READWRITE8(ems_r, ems_w, 0xffff)
571577ADDRESS_MAP_END
572578
573579
r32233r32234
610616UINT32 pasogo_state::screen_update_pasogo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
611617{
612618   //static int width = -1, height = -1;
613   UINT8 *rom = memregion("maincpu")->base()+0xb8000;
619   UINT8 *rom = m_maincpu_rom->base() + 0xb8000;
614620   static const UINT16 c[] = { 3, 0 };
615621   int x,y;
616622//  plot_box(bitmap, 0, 0, 64/*bitmap.width*/, bitmap.height, 0);
r32233r32234
672678
673679void pasogo_state::machine_reset()
674680{
681   astring region_tag;
682   m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
683   m_maincpu_rom = memregion("maincpu");
684
685   membank("bank27")->set_base(m_cart_rom->base());
686   membank("bank28")->set_base(m_maincpu_rom->base() + 0xb8000/*?*/);
687
675688   m_u73_q2 = 0;
676689   m_out1 = 2; // initial state of pit output is undefined
677690   m_pc_spkrdata = 0;
r32233r32234
709722
710723READ8_MEMBER( pasogo_state::page_r )
711724{
712   return 0xFF;
725   return 0xff;
713726}
714727
715728
r32233r32234
916929   MCFG_PIT8253_CLK2(4772720/4) /* pio port c pin 4, and speaker polling enough */
917930   MCFG_PIT8253_OUT2_HANDLER(WRITELINE(pasogo_state, pit8253_out2_changed))
918931
919   MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL )
932   MCFG_PIC8259_ADD("pic8259", INPUTLINE("maincpu", 0), VCC, NULL)
920933
921   MCFG_DEVICE_ADD( "dma8237", AM9517A, XTAL_14_31818MHz/3 )
934   MCFG_DEVICE_ADD("dma8237", AM9517A, XTAL_14_31818MHz/3)
922935   MCFG_I8237_OUT_HREQ_CB(WRITELINE(pasogo_state, dma_hrq_changed))
923936   MCFG_I8237_OUT_EOP_CB(WRITELINE(pasogo_state, dma8237_out_eop))
924937   MCFG_I8237_IN_MEMR_CB(READ8(pasogo_state, dma_read_byte))
r32233r32234
954967   MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0)
955968   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
956969
957   MCFG_CARTSLOT_ADD("cart")
958   MCFG_CARTSLOT_EXTENSION_LIST("bin")
959   MCFG_CARTSLOT_MANDATORY
960   MCFG_CARTSLOT_INTERFACE("pasogo_cart")
970   MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM16_WIDTH, generic_plain_slot, "pasogo_cart")
971   MCFG_GENERIC_MANDATORY
972
961973   MCFG_SOFTWARE_LIST_ADD("cart_list","pasogo")
962974
963975   MCFG_TIMER_DRIVER_ADD_PERIODIC("vg230_timer", pasogo_state, vg230_timer, attotime::from_hz(1))
r32233r32234
966978
967979ROM_START(pasogo)
968980   ROM_REGION(0x100000,"maincpu", ROMREGION_ERASEFF) // 1 megabyte dram?
969   ROM_REGION(0x100000,"user1", ROMREGION_ERASEFF)
970   ROM_CART_LOAD("cart", 0, 0x100000, ROM_NOMIRROR)
971981ROM_END
972982
973983
r32233r32234
975985{
976986   vg230_init();
977987   memset(&m_ems, 0, sizeof(m_ems));
978   membank( "bank27" )->set_base( memregion("user1")->base() + 0x00000 );
979   membank( "bank28" )->set_base( memregion("maincpu")->base() + 0xb8000/*?*/ );
980988}
981989
982990//    YEAR   NAME    PARENT  COMPAT    MACHINE   INPUT     INIT      COMPANY  FULLNAME          FLAGS
trunk/src/mess/drivers/cc40.c
r32233r32234
7777#include "video/hd44780.h"
7878#include "sound/dac.h"
7979#include "machine/nvram.h"
80#include "imagedev/cartslot.h"
80#include "bus/generic/slot.h"
81#include "bus/generic/carts.h"
8182
8283#include "cc40.lh"
8384
r32233r32234
8990      : driver_device(mconfig, type, tag),
9091      m_maincpu(*this, "maincpu"),
9192      m_dac(*this, "dac"),
93      m_cart(*this, "cartslot"),
94      m_key_matrix(*this, "IN"),
9295      m_battery_inp(*this, "BATTERY")
9396   {
9497      m_sysram[0] = NULL;
r32233r32234
97100
98101   required_device<tms70c20_device> m_maincpu;
99102   required_device<dac_device> m_dac;
103   required_device<generic_slot_device> m_cart;
104   required_ioport_array<8> m_key_matrix;
100105   required_ioport m_battery_inp;
101106
102107   nvram_device *m_nvram[2];
103   ioport_port *m_key_matrix[8];
104108
109   memory_region *m_cart_rom;
110
105111   UINT8 m_bus_control;
106112   UINT8 m_power;
107113   UINT8 m_banks;
r32233r32234
150156
151157DEVICE_IMAGE_LOAD_MEMBER(cc40_state, cc40_cartridge)
152158{
153   UINT8* pos = memregion("user1")->base();
154   offs_t size;
159   UINT32 size = m_cart->common_get_size("rom");
155160
156   if (image.software_entry() == NULL)
157      size = image.length();
158   else
159      size = image.get_software_region_length("rom");
160
161161   // max size is 4*32KB
162162   if (size > 0x20000)
163163   {
r32233r32234
165165      return IMAGE_INIT_FAIL;
166166   }
167167
168   if (image.software_entry() == NULL)
169   {
170      if (image.fread(pos, size) != size)
171      {
172         image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unable to fully read file");
173         return IMAGE_INIT_FAIL;
174      }
175   }
176   else
177      memcpy(pos, image.get_software_region("rom"), size);
168   m_cart->rom_alloc(size, 0x20000);   // allocate a larger ROM region to have 4x32K banks
169   m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");         
178170
179171   return IMAGE_INIT_PASS;
180172}
r32233r32234
319311   membank("sysbank")->set_entry(data & 3);
320312
321313   // d2-d3: cartridge 32KB page bankswitch
322   membank("cartbank")->set_entry(data >> 2 & 3);
314   if (m_cart_rom)
315      membank("cartbank")->set_entry(data >> 2 & 3);
323316
324317   m_banks = data & 0x0f;
325318}
r32233r32234
425418   // 8x8 keyboard matrix, RESET and ON buttons are not on it. Unused entries are not connected, but some might have a purpose for factory testing(?)
426419   // The numpad number keys are shared with the ones on the main keyboard, also on the real machine.
427420   // PORT_NAME lists functions under [SHIFT] as secondaries.
428   PORT_START("IN0")
421   PORT_START("IN.0")
429422   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_CODE(KEYCODE_1) PORT_CHAR('1') PORT_CHAR('!')
430423   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_CODE(KEYCODE_2) PORT_CHAR('2') PORT_CHAR('"')
431424   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_CODE(KEYCODE_3) PORT_CHAR('3') PORT_CHAR('#')
r32233r32234
435428   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_7_PAD) PORT_CODE(KEYCODE_7) PORT_CHAR('7') PORT_CHAR('&')
436429   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_8_PAD) PORT_CODE(KEYCODE_8) PORT_CHAR('8') PORT_CHAR('(')
437430
438   PORT_START("IN1")
431   PORT_START("IN.1")
439432   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Q) PORT_CHAR('q') PORT_CHAR('Q')
440433   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_CHAR('w') PORT_CHAR('W')
441434   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_E) PORT_CHAR('e') PORT_CHAR('E')
r32233r32234
445438   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_U) PORT_CHAR('u') PORT_CHAR('U')
446439   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_I) PORT_CHAR('i') PORT_CHAR('I')
447440
448   PORT_START("IN2")
441   PORT_START("IN.2")
449442   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_A) PORT_CHAR('a') PORT_CHAR('A')
450443   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_S) PORT_CHAR('s') PORT_CHAR('S')
451444   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_D) PORT_CHAR('d') PORT_CHAR('D')
r32233r32234
455448   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_J) PORT_CHAR('j') PORT_CHAR('J')
456449   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_K) PORT_CHAR('k') PORT_CHAR('K')
457450
458   PORT_START("IN3")
451   PORT_START("IN.3")
459452   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_Z) PORT_CHAR('z') PORT_CHAR('Z')
460453   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_X) PORT_CHAR('x') PORT_CHAR('X')
461454   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_C) PORT_CHAR('c') PORT_CHAR('C')
r32233r32234
465458   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_M) PORT_CHAR('m') PORT_CHAR('M')
466459   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA) PORT_CHAR(',') PORT_CHAR('<')
467460
468   PORT_START("IN4")
461   PORT_START("IN.4")
469462   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
470463   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_SPACE) PORT_CHAR(' ') PORT_NAME("SPACE")
471464   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
r32233r32234
475468   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_P) PORT_CHAR('p') PORT_CHAR('P')
476469   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_O) PORT_CHAR('o') PORT_CHAR('O')
477470
478   PORT_START("IN5")
471   PORT_START("IN.5")
479472   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_0) PORT_CODE(KEYCODE_0_PAD) PORT_CHAR('0') PORT_CHAR('\'')
480473   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(END)) PORT_NAME("CLR  UCL")
481474   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LEFT) PORT_CHAR(UCHAR_MAMEKEY(LEFT)) PORT_CHAR(UCHAR_MAMEKEY(DEL)) PORT_NAME("LEFT  DEL")
r32233r32234
485478   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_DOWN) PORT_CHAR(UCHAR_MAMEKEY(DOWN)) PORT_NAME("DOWN")
486479   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_9) PORT_CODE(KEYCODE_9_PAD) PORT_CHAR('9') PORT_CHAR(')')
487480
488   PORT_START("IN6")
481   PORT_START("IN.6")
489482   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED )
490483   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CODE(KEYCODE_DEL_PAD) PORT_CHAR('.') PORT_CHAR('>')
491484   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD)) PORT_NAME("+")
r32233r32234
495488   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
496489   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_ASTERISK) PORT_CHAR(UCHAR_MAMEKEY(ASTERISK)) PORT_NAME("*")
497490
498   PORT_START("IN7")
491   PORT_START("IN.7")
499492   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LCONTROL) PORT_CODE(KEYCODE_RCONTROL) PORT_CHAR(UCHAR_SHIFT_2) PORT_NAME("CTL")
500493   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_LSHIFT) PORT_CODE(KEYCODE_RSHIFT) PORT_CHAR(UCHAR_SHIFT_1) PORT_NAME("SHIFT")
501494   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_END) PORT_CHAR(UCHAR_MAMEKEY(PAUSE)) PORT_NAME("BREAK")
r32233r32234
552545void cc40_state::machine_start()
553546{
554547   // init
555   static const char *const tags[] = { "IN0", "IN1", "IN2", "IN3", "IN4", "IN5", "IN6", "IN7" };
556   for (int i = 0; i < 8; i++)
557      m_key_matrix[i] = ioport(tags[i]);
548   astring region_tag;
549   m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG));
558550
559551   membank("sysbank")->configure_entries(0, 4, memregion("system")->base(), 0x2000);
560   membank("cartbank")->configure_entries(0, 4, memregion("user1")->base(), 0x8000);
552   if (m_cart_rom)
553      membank("cartbank")->configure_entries(0, 4, m_cart_rom->base(), 0x8000);
554   else
555      membank("cartbank")->set_base(memregion("maincpu")->base() + 0x5000);
561556
562557   m_nvram[0] = machine().device<nvram_device>("sysram.1");
563558   m_nvram[1] = machine().device<nvram_device>("sysram.2");
r32233r32234
619614   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
620615
621616   /* cartridge */
622   MCFG_CARTSLOT_ADD("cart")
623   MCFG_CARTSLOT_EXTENSION_LIST("bin,rom,256")
624   MCFG_CARTSLOT_NOT_MANDATORY
625   MCFG_CARTSLOT_LOAD(cc40_state, cc40_cartridge)
626   MCFG_CARTSLOT_INTERFACE("cc40_cart")
617   MCFG_GENERIC_CARTSLOT_ADD("cartslot", GENERIC_ROM8_WIDTH, generic_plain_slot, "cc40_cart")
618   MCFG_GENERIC_EXTENSIONS("bin,rom,256")
619   MCFG_GENERIC_LOAD(cc40_state, cc40_cartridge)
620
627621   MCFG_SOFTWARE_LIST_ADD("cart_list", "cc40_cart")
628622MACHINE_CONFIG_END
629623
r32233r32234
641635
642636   ROM_REGION( 0x8000, "system", 0 )
643637   ROM_LOAD( "hn61256pc09.bin", 0x0000, 0x8000, CRC(f5322fab) SHA1(1b5c4052a53654363c458f75eac7a27f0752def6) ) // system rom, banked
644
645   ROM_REGION( 0x20000, "user1", ROMREGION_ERASEFF ) // cartridge area, max 4*32KB
646638ROM_END
647639
648640
trunk/src/mess/drivers/tek405x.c
r32233r32234
10911091   MCFG_RAM_EXTRA_OPTIONS("16K,24K,32K")
10921092
10931093   // cartridge
1094   MCFG_CARTSLOT_ADD("cart1")
1095   MCFG_CARTSLOT_EXTENSION_LIST("bin")
1096   MCFG_CARTSLOT_INTERFACE("tek4050_cart")
1097
1098   MCFG_CARTSLOT_ADD("cart2")
1099   MCFG_CARTSLOT_EXTENSION_LIST("bin")
1100   MCFG_CARTSLOT_INTERFACE("tek4050_cart")
1094   MCFG_GENERIC_CARTSLOT_ADD("cartslot1", GENERIC_ROM8_WIDTH, generic_plain_slot, "tek4050_cart")
1095   MCFG_GENERIC_CARTSLOT_ADD("cartslot2", GENERIC_ROM8_WIDTH, generic_plain_slot, "tek4050_cart")
11011096MACHINE_CONFIG_END
11021097
11031098
r32233r32234
11321127   MCFG_RAM_EXTRA_OPTIONS("64K")
11331128
11341129   // cartridge
1135   MCFG_CARTSLOT_ADD("cart1")
1136   MCFG_CARTSLOT_EXTENSION_LIST("bin")
1137   MCFG_CARTSLOT_INTERFACE("tek4050_cart")
1130   MCFG_GENERIC_CARTSLOT_ADD("cartslot1", GENERIC_ROM8_WIDTH, generic_plain_slot, "tek4050_cart")
1131   MCFG_GENERIC_CARTSLOT_ADD("cartslot2", GENERIC_ROM8_WIDTH, generic_plain_slot, "tek4050_cart")
11381132
1139   MCFG_CARTSLOT_ADD("cart2")
1140   MCFG_CARTSLOT_EXTENSION_LIST("bin")
1141   MCFG_CARTSLOT_INTERFACE("tek4050_cart")
1142
11431133   // software lists
11441134   MCFG_SOFTWARE_LIST_ADD("cart_list", "tek4052_cart")
11451135MACHINE_CONFIG_END
trunk/src/mess/includes/tek405x.h
r32233r32234
77
88#include "emu.h"
99#include "cpu/m6800/m6800.h"
10#include "imagedev/cartslot.h"
1110#include "machine/ram.h"
1211#include "machine/6821pia.h"
1312#include "machine/6850acia.h"
r32233r32234
1615#include "machine/ram.h"
1716#include "sound/speaker.h"
1817#include "video/vector.h"
18#include "bus/generic/slot.h"
19#include "bus/generic/carts.h"
1920
2021#define MC6800_TAG          "u61"
2122#define MC6820_Y_TAG        "u561"
trunk/src/mess/includes/portfoli.h
r32233r32234
77
88#include "emu.h"
99#include "cpu/i86/i86.h"
10#include "imagedev/cartslot.h"
1110#include "bus/centronics/ctronics.h"
1211#include "machine/i8255.h"
1312#include "machine/ins8250.h"
r32233r32234
1615#include "sound/speaker.h"
1716#include "video/hd61830.h"
1817
18#include "bus/generic/slot.h"
19#include "bus/generic/carts.h"
20
1921#define M80C88A_TAG     "u1"
2022#define M82C55A_TAG     "hpc101_u1"
2123#define M82C50A_TAG     "hpc102_u1"

Previous 199869 Revisions Next


© 1997-2024 The MAME Team