Previous 199869 Revisions Next

r32396 Friday 26th September, 2014 at 09:53:10 UTC by Fabio Priuli
(MESS) another round of cartslot updates. this commit, among the
other things, restores the functionality of cgenie ROM expansion
which had been lost probably around 2009. nw.
[src/mess/drivers]cgenie.c orion.c pv1000.c radio86.c timex.c vector06.c
[src/mess/includes]cgenie.h orion.h radio86.h spectrum.h vector06.h
[src/mess/machine]cgenie.c orion.c radio86.c vector06.c

trunk/src/mess/drivers/timex.c
r32395r32396
157157#include "machine/beta.h"
158158#include "machine/ram.h"
159159
160enum
161{
162   TIMEX_CART_NONE,
163   TIMEX_CART_DOCK,
164   TIMEX_CART_EXROM,
165   TIMEX_CART_HOME
166};
167
168struct timex_cart_t
169{
170   int type;
171   UINT8 chunks;
172   UINT8 *data;
173};
174
175static timex_cart_t timex_cart;
176
177const timex_cart_t *timex_cart_data(void)
178{
179   return &timex_cart;
180}
181
182160/****************************************************************************************************/
183161/* TS2048 specific functions */
184162
r32395r32396
234212{
235213   UINT8 *messram = m_ram->pointer();
236214   address_space &space = m_maincpu->space(AS_PROGRAM);
237   unsigned char *ChosenROM, *ExROM;
238   const timex_cart_t *timex_cart = timex_cart_data();
239   int timex_cart_type = timex_cart->type;
240   UINT8 timex_cart_chunks = timex_cart->chunks;
241   UINT8 *DOCK = timex_cart->data;
215   UINT8 *DOCK = m_dock_crt->base();
216   UINT8 *ExROM = memregion("maincpu")->base() + 0x014000;
217   UINT8 *ChosenROM;
242218
243   ExROM = memregion("maincpu")->base() + 0x014000;
244
245219   if (m_port_f4_data & 0x01)
246220   {
247221      if (m_port_ff_data & 0x80)
r32395r32396
253227      }
254228      else
255229      {
256         if (timex_cart_type == TIMEX_CART_DOCK)
230         if (m_dock_cart_type == TIMEX_CART_DOCK)
257231         {
258232            membank("bank1")->set_base(DOCK);
259233            space.install_read_bank(0x0000, 0x1fff, "bank1");
260            if (timex_cart_chunks&0x01)
234            if (m_ram_chunks & 0x01)
261235               space.install_write_bank(0x0000, 0x1fff, "bank9");
262236            else
263237               space.unmap_write(0x0000, 0x1fff);
r32395r32396
292266      }
293267      else
294268      {
295         if (timex_cart_type == TIMEX_CART_DOCK)
269         if (m_dock_cart_type == TIMEX_CART_DOCK)
296270         {
297271            membank("bank2")->set_base(DOCK+0x2000);
298272            space.install_read_bank(0x2000, 0x3fff, "bank2");
299            if (timex_cart_chunks&0x02)
273            if (m_ram_chunks & 0x02)
300274               space.install_write_bank(0x2000, 0x3fff, "bank10");
301275            else
302276               space.unmap_write(0x2000, 0x3fff);
r32395r32396
330304      }
331305      else
332306      {
333         if (timex_cart_type == TIMEX_CART_DOCK)
307         if (m_dock_cart_type == TIMEX_CART_DOCK)
334308         {
335309            membank("bank3")->set_base(DOCK+0x4000);
336310            space.install_read_bank(0x4000, 0x5fff, "bank3");
337            if (timex_cart_chunks&0x04)
311            if (m_ram_chunks & 0x04)
338312               space.install_write_bank(0x4000, 0x5fff, "bank11");
339313            else
340314               space.unmap_write(0x4000, 0x5fff);
r32395r32396
367341      }
368342      else
369343      {
370            if (timex_cart_type == TIMEX_CART_DOCK)
344            if (m_dock_cart_type == TIMEX_CART_DOCK)
371345            {
372346               membank("bank4")->set_base(DOCK+0x6000);
373347               space.install_read_bank(0x6000, 0x7fff, "bank4");
374               if (timex_cart_chunks&0x08)
348               if (m_ram_chunks & 0x08)
375349                  space.install_write_bank(0x6000, 0x7fff, "bank12");
376350               else
377351                  space.unmap_write(0x6000, 0x7fff);
r32395r32396
404378      }
405379      else
406380      {
407         if (timex_cart_type == TIMEX_CART_DOCK)
381         if (m_dock_cart_type == TIMEX_CART_DOCK)
408382         {
409383            membank("bank5")->set_base(DOCK+0x8000);
410384            space.install_read_bank(0x8000, 0x9fff,"bank5");
411            if (timex_cart_chunks&0x10)
385            if (m_ram_chunks & 0x10)
412386               space.install_write_bank(0x8000, 0x9fff,"bank13");
413387            else
414388               space.unmap_write(0x8000, 0x9fff);
r32395r32396
441415      }
442416      else
443417      {
444         if (timex_cart_type == TIMEX_CART_DOCK)
418         if (m_dock_cart_type == TIMEX_CART_DOCK)
445419         {
446420            membank("bank6")->set_base(DOCK+0xa000);
447421            space.install_read_bank(0xa000, 0xbfff, "bank6");
448            if (timex_cart_chunks&0x20)
422            if (m_ram_chunks & 0x20)
449423               space.install_write_bank(0xa000, 0xbfff, "bank14");
450424            else
451425               space.unmap_write(0xa000, 0xbfff);
r32395r32396
479453      }
480454      else
481455      {
482         if (timex_cart_type == TIMEX_CART_DOCK)
456         if (m_dock_cart_type == TIMEX_CART_DOCK)
483457         {
484458            membank("bank7")->set_base(DOCK+0xc000);
485459            space.install_read_bank(0xc000, 0xdfff, "bank7");
486            if (timex_cart_chunks&0x40)
460            if (m_ram_chunks & 0x40)
487461               space.install_write_bank(0xc000, 0xdfff, "bank15");
488462            else
489463               space.unmap_write(0xc000, 0xdfff);
r32395r32396
516490      }
517491      else
518492      {
519         if (timex_cart_type == TIMEX_CART_DOCK)
493         if (m_dock_cart_type == TIMEX_CART_DOCK)
520494         {
521495            membank("bank8")->set_base(DOCK+0xe000);
522496            space.install_read_bank(0xe000, 0xffff, "bank8");
523            if (timex_cart_chunks&0x80)
497            if (m_ram_chunks & 0x80)
524498               space.install_write_bank(0xe000, 0xffff, "bank16");
525499            else
526500               space.unmap_write(0xe000, 0xffff);
r32395r32396
570544{
571545   m_port_ff_data = 0;
572546   m_port_f4_data = 0;
547
548   astring region_tag;
549   m_dock_crt = memregion(region_tag.cpy(m_dock->tag()).cat(GENERIC_ROM_REGION_TAG));
550   m_dock_cart_type = (m_dock->exists()) ? TIMEX_CART_DOCK : TIMEX_CART_NONE;
551
573552   ts2068_update_memory();
574553   MACHINE_RESET_CALL_MEMBER(spectrum);
575
576554}
577555
578556
r32395r32396
613591
614592DEVICE_IMAGE_LOAD_MEMBER( spectrum_state, timex_cart )
615593{
616   int file_size;
617   dynamic_buffer file_data;
618
594   UINT32 size = m_dock->common_get_size("rom");
595   UINT8 *DOCK;
619596   int chunks_in_file = 0;
597   dynamic_buffer header;
598   header.resize(9);
620599
621   int i;
622
623   logerror ("Trying to load cart\n");
624
625   file_size = image.length();
626
627   if (file_size < 0x09)
600   if (size % 0x2000 != 9)
628601   {
629      logerror ("Bad file size\n");
602      image.seterror(IMAGE_ERROR_UNSPECIFIED, "File corrupted");
630603      return IMAGE_INIT_FAIL;
631604   }
632
633   file_data.resize(file_size);
634
635   image.fread(file_data, file_size);
636
637   for (i=0; i<8; i++)
638      if(file_data[i+1]&0x02) chunks_in_file++;
639
640   if (chunks_in_file*0x2000+0x09 != file_size)
605   if (image.software_entry() != NULL)
641606   {
642      logerror ("File corrupted\n");
607      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Loading from softlist is not supported yet");
643608      return IMAGE_INIT_FAIL;
644609   }
610   
611   m_dock->rom_alloc(0x10000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
612   DOCK = m_dock->get_rom_base();
645613
646   switch (file_data[0x00])
614   // check header
615   image.fread(header, 9);
616   
617   for (int i = 0; i < 8; i++)
618      if (header[i + 1] & 0x02) chunks_in_file++;
619   
620   if (chunks_in_file * 0x2000 + 0x09 != size)
647621   {
622      image.seterror(IMAGE_ERROR_UNSPECIFIED, "File corrupted");
623      return IMAGE_INIT_FAIL;
624   }
625   
626   switch (header[0])
627   {
648628      case 0x00:  logerror ("DOCK cart\n");
649            timex_cart.type = TIMEX_CART_DOCK;
650            timex_cart.data = global_alloc_array(UINT8, 0x10000);
651            if (!timex_cart.data)
629         m_ram_chunks = 0;
630         for (int i = 0; i < 8; i++)
631         {
632            m_ram_chunks = m_ram_chunks | ((header[i + 1] & 0x01) << i);
633            if (header[i + 1] & 0x02)
634               image.fread(DOCK + i * 0x2000, 0x2000);
635            else
652636            {
653               logerror ("Memory allocate error\n");
654               return IMAGE_INIT_FAIL;
655            }
656            chunks_in_file = 0;
657            for (i=0; i<8; i++)
658            {
659               timex_cart.chunks = timex_cart.chunks | ((file_data[i+1]&0x01)<<i);
660               if (file_data[i+1]&0x02)
661               {
662                  memcpy (timex_cart.data+i*0x2000, file_data+0x09+chunks_in_file*0x2000, 0x2000);
663                  chunks_in_file++;
664               }
637               if (header[i + 1] & 0x01)
638                  memset(DOCK + i * 0x2000, 0x00, 0x2000);
665639               else
666               {
667                  if (file_data[i+1]&0x01)
668                     memset (timex_cart.data+i*0x2000, 0x00, 0x2000);
669                  else
670                     memset (timex_cart.data+i*0x2000, 0xff, 0x2000);
671               }
640                  memset(DOCK + i * 0x2000, 0xff, 0x2000);
672641            }
673            break;
674
675      default:    logerror ("Cart type not supported\n");
676            timex_cart.type = TIMEX_CART_NONE;
677            return IMAGE_INIT_FAIL;
642         }
643         break;
644         
645      default:
646         image.seterror(IMAGE_ERROR_UNSPECIFIED, "Cart type not supported");
647         return IMAGE_INIT_FAIL;
678648   }
649   
650   logerror ("Cart loaded [Chunks %02x]\n", m_ram_chunks);
679651
680   logerror ("Cart loaded\n");
681   logerror ("Chunks %02x\n", timex_cart.chunks);
682652   return IMAGE_INIT_PASS;
683653}
684654
685655
686DEVICE_IMAGE_UNLOAD_MEMBER( spectrum_state, timex_cart )
687{
688   if (timex_cart.data)
689   {
690      global_free_array(timex_cart.data);
691      timex_cart.data = NULL;
692   }
693   timex_cart.type = TIMEX_CART_NONE;
694   timex_cart.chunks = 0x00;
695}
696
697
698656/* F4 Character Displayer - tc2048 code is inherited from the spectrum */
699657static const gfx_layout ts2068_charlayout =
700658{
r32395r32396
737695
738696   /* cartridge */
739697   MCFG_DEVICE_REMOVE("cartslot")
698   MCFG_GENERIC_CARTSLOT_ADD("dockslot", generic_plain_slot, NULL)
699   MCFG_GENERIC_EXTENSIONS("dck")
700   MCFG_GENERIC_LOAD(spectrum_state, timex_cart)
740701
741   MCFG_CARTSLOT_ADD("cart")
742   MCFG_CARTSLOT_EXTENSION_LIST("dck")
743   MCFG_CARTSLOT_NOT_MANDATORY
744   MCFG_CARTSLOT_LOAD(spectrum_state,timex_cart)
745   MCFG_CARTSLOT_UNLOAD(spectrum_state,timex_cart)
746
747702   /* internal ram */
748703   MCFG_RAM_MODIFY(RAM_TAG)
749704   MCFG_RAM_DEFAULT_SIZE("48K")
r32395r32396
788743ROM_START(tc2048)
789744   ROM_REGION(0x10000,"maincpu",0)
790745   ROM_LOAD("tc2048.rom",0x0000,0x4000, CRC(f1b5fa67) SHA1(febb2d495b6eda7cdcb4074935d6e9d9f328972d))
791   ROM_CART_LOAD("cart", 0x0000, 0x4000, ROM_NOCLEAR | ROM_NOMIRROR | ROM_OPTIONAL)
792746ROM_END
793747
794748ROM_START(ts2068)
trunk/src/mess/drivers/radio86.c
r32395r32396
1212#include "sound/wave.h"
1313#include "machine/i8255.h"
1414#include "imagedev/cassette.h"
15#include "imagedev/cartslot.h"
1615#include "formats/rk_cas.h"
1716#include "includes/radio86.h"
1817
r32395r32396
379378   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
380379   MCFG_CASSETTE_INTERFACE("radio86_cass")
381380
382   MCFG_SOFTWARE_LIST_ADD("cass_list","radio86")
381   MCFG_SOFTWARE_LIST_ADD("cass_list", "radio86_cass")
383382MACHINE_CONFIG_END
384383
385384
r32395r32396
395394   MCFG_CPU_PROGRAM_MAP(radio86rom_mem)
396395
397396   MCFG_DEVICE_ADD("ppi8255_2", I8255, 0)
398   MCFG_I8255_IN_PORTA_CB(READ8(radio86_state, radio86_romdisk_porta_r))
397   MCFG_I8255_IN_PORTA_CB(READ8(radio86_state, radio86rom_romdisk_porta_r))
399398   MCFG_I8255_OUT_PORTB_CB(WRITE8(radio86_state, radio86_romdisk_portb_w))
400399   MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_romdisk_portc_w))
401400
402   MCFG_CARTSLOT_ADD("cart")
403   MCFG_CARTSLOT_EXTENSION_LIST("bin,rom")
404   MCFG_CARTSLOT_NOT_MANDATORY
401   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "radio86_cart")
402   MCFG_GENERIC_EXTENSIONS("bin,rom")
403
404   MCFG_SOFTWARE_LIST_ADD("cart_list", "radio86_cart")
405405MACHINE_CONFIG_END
406406
407407static MACHINE_CONFIG_DERIVED( radioram, radio86 )
r32395r32396
410410   MCFG_CPU_PROGRAM_MAP(radio86ram_mem)
411411
412412   MCFG_DEVICE_ADD("ppi8255_2", I8255, 0)
413   MCFG_I8255_IN_PORTA_CB(READ8(radio86_state, radio86_romdisk_porta_r))
413   MCFG_I8255_IN_PORTA_CB(READ8(radio86_state, radio86ram_romdisk_porta_r))
414414   MCFG_I8255_OUT_PORTB_CB(WRITE8(radio86_state, radio86_romdisk_portb_w))
415415   MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_romdisk_portc_w))
416416MACHINE_CONFIG_END
r32395r32396
486486ROM_START( radiorom )
487487   ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
488488   ROM_SYSTEM_BIOS(0, "32k", "32 KB rom disk")
489   ROMX_LOAD( "radiorom.rom", 0xf800, 0x0800, CRC(B5CDEAB7) SHA1(1c80d72082f2fb2190b575726cb82d86ae0ee7d8), ROM_BIOS(1))
489   ROMX_LOAD( "radiorom.rom", 0xf800, 0x0800, CRC(b5cdeab7) SHA1(1c80d72082f2fb2190b575726cb82d86ae0ee7d8), ROM_BIOS(1))
490490   ROM_SYSTEM_BIOS(1, "64k", "64 KB rom disk")
491491   ROMX_LOAD( "radiorom.64",  0xf800, 0x0800, CRC(5250b927) SHA1(e885e0f5b2325190b38a4c92b20a8b4fa78fbd8f), ROM_BIOS(2))
492492   ROM_COPY( "maincpu", 0xf800, 0xf000, 0x0800 )
493   ROM_CART_LOAD("cart", 0x10000,  0x10000, ROM_NOMIRROR | ROM_OPTIONAL)
494493   ROM_REGION(0x0800, "gfx1",0)
495494   ROM_LOAD ("radio86.fnt", 0x0000, 0x0400, CRC(7666bd5e) SHA1(8652787603bee9b4da204745e3b2aa07a4783dfc))
496495ROM_END
497496
498497ROM_START( radioram )
499498   ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
500   ROM_LOAD( "r86-1.bin", 0xf800, 0x0800, CRC(7E7AB7CB) SHA1(fedb00b6b8fbe1167faba3e4611b483f800e6934))
499   ROM_LOAD( "r86-1.bin", 0xf800, 0x0800, CRC(7e7ab7cb) SHA1(fedb00b6b8fbe1167faba3e4611b483f800e6934))
501500   ROM_LOAD( "r86-2.bin", 0xe000, 0x0800, CRC(955F0616) SHA1(d2b9f960558bdcb60074091fc79d1ad56c313586))
502   ROM_LOAD( "romdisk.bin", 0x10000, 0x10000, CRC(43C0279B) SHA1(bc1dfd9bdbce39460616e2158f5d96279d0af3cf))
501   ROM_LOAD( "romdisk.bin", 0x10000, 0x10000, CRC(43c0279b) SHA1(bc1dfd9bdbce39460616e2158f5d96279d0af3cf))
503502   ROM_REGION(0x0800, "gfx1",0)
504503   ROM_LOAD ("radio86.fnt", 0x0000, 0x0400, CRC(7666bd5e) SHA1(8652787603bee9b4da204745e3b2aa07a4783dfc))
505504ROM_END
506505
507506ROM_START( rk7007 )
508507   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
509   ROM_LOAD( "ms7007.rom", 0xf800, 0x0800, CRC(002811DC) SHA1(4529eb72198c49af77fbcd7833bcd06a1cf9b1ac))
508   ROM_LOAD( "ms7007.rom", 0xf800, 0x0800, CRC(002811dc) SHA1(4529eb72198c49af77fbcd7833bcd06a1cf9b1ac))
510509   ROM_COPY( "maincpu", 0xf800, 0xf000, 0x0800 )
511510   ROM_REGION(0x0800, "gfx1",0)
512511   ROM_LOAD ("radio86.fnt", 0x0000, 0x0400, CRC(7666bd5e) SHA1(8652787603bee9b4da204745e3b2aa07a4783dfc))
r32395r32396
514513
515514ROM_START( rk700716 )
516515   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
517   ROM_LOAD( "ms7007.16k", 0xf800, 0x0800, CRC(5268D7B6) SHA1(efd69d8456b8cf8b37f33237153c659725608528))
516   ROM_LOAD( "ms7007.16k", 0xf800, 0x0800, CRC(5268d7b6) SHA1(efd69d8456b8cf8b37f33237153c659725608528))
518517   ROM_COPY( "maincpu", 0xf800, 0xf000, 0x0800 )
519518   ROM_REGION(0x0800, "gfx1",0)
520519   ROM_LOAD ("radio86.fnt", 0x0000, 0x0400, CRC(7666bd5e) SHA1(8652787603bee9b4da204745e3b2aa07a4783dfc))
r32395r32396
530529
531530ROM_START( kr03 )
532531   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
533   ROM_LOAD( "kr03-dd17.rf2", 0xf800, 0x0800, CRC(AC2E24D5) SHA1(a1317a261bfd55b3b37109b14d1391308dee04de))
532   ROM_LOAD( "kr03-dd17.rf2", 0xf800, 0x0800, CRC(ac2e24d5) SHA1(a1317a261bfd55b3b37109b14d1391308dee04de))
534533   ROM_COPY( "maincpu", 0xf800, 0xf000, 0x0800 )
535534   ROM_REGION(0x0800, "gfx1",0)
536535   ROM_LOAD ("kr03-dd12.rf2", 0x0000, 0x0800, CRC(085F4259) SHA1(11c5829b072a00961ad936c26559fb63bf2dc896))
trunk/src/mess/drivers/orion.c
r32395r32396
99
1010
1111#include "emu.h"
12#include "cpu/z80/z80.h"
13#include "cpu/i8085/i8085.h"
14#include "sound/ay8910.h"
15#include "sound/wave.h"
12#include "includes/orion.h"
1613#include "imagedev/cassette.h"
17#include "imagedev/cartslot.h"
1814#include "formats/smx_dsk.h"
1915#include "formats/rk_cas.h"
20#include "includes/orion.h"
2116
2217/* Address maps */
2318
r32395r32396
124119   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
125120   MCFG_CASSETTE_INTERFACE("orion_cass")
126121
127   MCFG_SOFTWARE_LIST_ADD("cass_list","orion_cass")
122   MCFG_SOFTWARE_LIST_ADD("cass_list", "orion_cass")
128123
129124   MCFG_FD1793x_ADD("fd1793", XTAL_8MHz / 8)
130125
r32395r32396
134129   MCFG_FLOPPY_DRIVE_ADD("fd3", orion_floppies, "525qd", orion_state::orion_floppy_formats)
135130   MCFG_SOFTWARE_LIST_ADD("flop_list","orion_flop")
136131
137   MCFG_CARTSLOT_ADD("cart")
138   MCFG_CARTSLOT_INTERFACE("orion_cart")
139   MCFG_SOFTWARE_LIST_ADD("cart_list","orion_cart")
132   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "orion_cart")
140133
134   MCFG_SOFTWARE_LIST_ADD("cart_list", "orion_cart")
135
141136   /* internal ram */
142137   MCFG_RAM_ADD(RAM_TAG)
143138   MCFG_RAM_DEFAULT_SIZE("256K")
r32395r32396
203198   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
204199   MCFG_CASSETTE_INTERFACE("orion_cass")
205200
206   MCFG_SOFTWARE_LIST_ADD("cass_list","orion_cass")
201   MCFG_SOFTWARE_LIST_ADD("cass_list", "orion_cass")
207202
208203   MCFG_FD1793x_ADD("fd1793", XTAL_8MHz / 8)
209204
r32395r32396
213208   MCFG_FLOPPY_DRIVE_ADD("fd3", orion_floppies, "525qd", orion_state::orion_floppy_formats)
214209   MCFG_SOFTWARE_LIST_ADD("flop_list","orion_flop")
215210
216   MCFG_CARTSLOT_ADD("cart")
217   MCFG_CARTSLOT_INTERFACE("orion_cart")
218   MCFG_SOFTWARE_LIST_ADD("cart_list","orion_cart")
211   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "orion_cart")
219212
213   MCFG_SOFTWARE_LIST_ADD("cart_list", "orion_cart")
214
220215   /* internal ram */
221216   MCFG_RAM_ADD(RAM_TAG)
222217   MCFG_RAM_DEFAULT_SIZE("512K")
r32395r32396
278273   MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED)
279274   MCFG_CASSETTE_INTERFACE("orion_cass")
280275
281   MCFG_SOFTWARE_LIST_ADD("cass_list","orion_cass")
276   MCFG_SOFTWARE_LIST_ADD("cass_list", "orion_cass")
282277
283278   MCFG_FD1793x_ADD("fd1793", XTAL_8MHz / 8)
284279
r32395r32396
289284   MCFG_SOFTWARE_LIST_ADD("flop_list","orionpro_flop")
290285   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop128_list","orion_flop")
291286
292   MCFG_CARTSLOT_ADD("cart")
293   MCFG_CARTSLOT_INTERFACE("orion_cart")
294   MCFG_SOFTWARE_LIST_ADD("cart_list","orion_cart")
287   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "orion_cart")
295288
289   MCFG_SOFTWARE_LIST_ADD("cart_list", "orion_cart")
290
296291   /* internal ram */
297292   MCFG_RAM_ADD(RAM_TAG)
298293   MCFG_RAM_DEFAULT_SIZE("512K")
r32395r32396
307302   ROMX_LOAD( "m2rk.bin",    0x0f800, 0x0800, CRC(2025c234) SHA1(caf86918629be951fe698cddcdf4589f07e2fb96), ROM_BIOS(1) )
308303   ROM_SYSTEM_BIOS( 1, "m2_2rk", "Version 3.2.2 rk" )
309304   ROMX_LOAD( "m2_2rk.bin",  0x0f800, 0x0800, CRC(fc662351) SHA1(7c6de67127fae5869281449de1c503597c0c058e), ROM_BIOS(2) )
310   ROM_CART_LOAD("cart", 0x10000, 0x10000, ROM_OPTIONAL)
311305ROM_END
312306
313307ROM_START( orionms )
314308   ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF )
315309   ROM_LOAD( "ms7007.bin",   0x0f800, 0x0800, CRC(c6174ba3) SHA1(8f9a42c3e09684718fe4121a8408e7860129d26f) )
316   ROM_CART_LOAD("cart", 0x10000, 0x10000, ROM_OPTIONAL)
317310ROM_END
318311
319312ROM_START( orionz80 )
r32395r32396
330323   ROMX_LOAD( "m35zrkd.bin", 0x0f800, 0x0800, CRC(9368b38f) SHA1(64a77f22119d40c9b18b64d78ad12acc6fff9efb), ROM_BIOS(5) )
331324   ROM_SYSTEM_BIOS( 5, "peter", "Peterburg '91" )
332325   ROMX_LOAD( "peter.bin",   0x0f800, 0x0800, CRC(df9b1d8c) SHA1(c7f1e074e58ad1c1799cf522161b4f4cffa5aefa), ROM_BIOS(6) )
333   ROM_CART_LOAD("cart", 0x10000, 0x10000, ROM_OPTIONAL)
334326ROM_END
335327
336328ROM_START( orionide )
337329   ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF )
338330   ROM_LOAD( "m35zrkh.bin", 0x0f800, 0x0800, CRC(b7745f28) SHA1(c3bd3e662db7ec56ecbab54bf6b3a4c26200d0bb) )
339   ROM_CART_LOAD("cart", 0x10000, 0x10000, ROM_OPTIONAL)
340331ROM_END
341332
342333ROM_START( orionzms )
r32395r32396
347338   ROMX_LOAD( "m34zms.bin",  0x0f800, 0x0800, CRC(0f87a80b) SHA1(ab1121092e61268d8162ed8a7d4fd081016a409a), ROM_BIOS(2) )
348339   ROM_SYSTEM_BIOS( 2, "m35zmsd", "Version 3.5 zmsd" )
349340   ROMX_LOAD( "m35zmsd.bin", 0x0f800, 0x0800, CRC(f714ff37) SHA1(fbe9514adb3384aff146cbedd4fede37ce9591e1), ROM_BIOS(3) )
350   ROM_CART_LOAD("cart", 0x10000, 0x10000, ROM_OPTIONAL)
351341ROM_END
352342
353343ROM_START( orionidm )
354344   ROM_REGION( 0x30000, "maincpu", ROMREGION_ERASEFF )
355345   ROM_LOAD( "m35zmsh.bin", 0x0f800, 0x0800, CRC(01e66df4) SHA1(8c785a3c32fe3eacda73ec79157b41a6e4b63ba8) )
356   ROM_CART_LOAD("cart", 0x10000, 0x10000, ROM_OPTIONAL)
357346ROM_END
358347
359348ROM_START( orionpro )
360349   ROM_REGION( 0x32000, "maincpu", ROMREGION_ERASEFF )
361   ROM_CART_LOAD("cart",   0x10000, 0x10000, ROM_OPTIONAL)
362350   ROM_SYSTEM_BIOS( 0, "ver21", "Version 2.1" )
363351   ROMX_LOAD( "rom1-210.bin", 0x20000, 0x2000,  CRC(8e1a0c78) SHA1(61c8a5ed596ce7e3fd32da920dcc80dc5375b421), ROM_BIOS(1) )
364352   ROMX_LOAD( "rom2-210.bin", 0x22000, 0x10000, CRC(7cb7a49b) SHA1(601f3dd61db323407c4874fd7f23c10dccac0209), ROM_BIOS(1) )
trunk/src/mess/drivers/pv1000.c
r32395r32396
66
77#include "emu.h"
88#include "cpu/z80/z80.h"
9#include "imagedev/cartslot.h"
9#include "bus/generic/slot.h"
10#include "bus/generic/carts.h"
1011
1112// PV-1000 Sound device
1213
r32395r32396
143144      : driver_device(mconfig, type, tag),
144145      m_maincpu(*this, "maincpu"),
145146      m_sound(*this, "pv1000_sound"),
147      m_cart(*this, "cartslot"),
146148      m_p_videoram(*this, "p_videoram"),
147149      m_gfxdecode(*this, "gfxdecode"),
148150      m_screen(*this, "screen"),
149151      m_palette(*this, "palette")
150152      { }
151153
152   DECLARE_WRITE8_MEMBER(pv1000_io_w);
153   DECLARE_READ8_MEMBER(pv1000_io_r);
154   DECLARE_WRITE8_MEMBER(pv1000_gfxram_w);
154   DECLARE_WRITE8_MEMBER(io_w);
155   DECLARE_READ8_MEMBER(io_r);
156   DECLARE_WRITE8_MEMBER(gfxram_w);
155157   UINT8   m_io_regs[8];
156158   UINT8   m_fd_data;
157159
r32395r32396
167169
168170   required_device<cpu_device> m_maincpu;
169171   required_device<pv1000_sound_device> m_sound;
172   required_device<generic_slot_device> m_cart;
170173   required_shared_ptr<UINT8> m_p_videoram;
171174   virtual void machine_start();
172175   virtual void machine_reset();
r32395r32396
182185
183186
184187static ADDRESS_MAP_START( pv1000, AS_PROGRAM, 8, pv1000_state )
185   AM_RANGE( 0x0000, 0x3fff ) AM_MIRROR( 0x4000 ) AM_ROM AM_REGION( "cart", 0 )
186   AM_RANGE( 0xb800, 0xbbff ) AM_RAM AM_SHARE("p_videoram")
187   AM_RANGE( 0xbc00, 0xbfff ) AM_RAM_WRITE( pv1000_gfxram_w ) AM_REGION( "gfxram", 0 )
188   //AM_RANGE(0x0000, 0x7fff)      // mapped by the cartslot
189   AM_RANGE(0xb800, 0xbbff) AM_RAM AM_SHARE("p_videoram")
190   AM_RANGE(0xbc00, 0xbfff) AM_RAM_WRITE(gfxram_w) AM_REGION("gfxram", 0)
188191ADDRESS_MAP_END
189192
190193
191194static ADDRESS_MAP_START( pv1000_io, AS_IO, 8, pv1000_state )
192   ADDRESS_MAP_GLOBAL_MASK( 0xff )
193   AM_RANGE( 0xf8, 0xff ) AM_READWRITE( pv1000_io_r, pv1000_io_w )
195   ADDRESS_MAP_GLOBAL_MASK(0xff)
196   AM_RANGE(0xf8, 0xff) AM_READWRITE(io_r, io_w)
194197ADDRESS_MAP_END
195198
196199
197WRITE8_MEMBER( pv1000_state::pv1000_gfxram_w )
200WRITE8_MEMBER( pv1000_state::gfxram_w )
198201{
199202   UINT8 *gfxram = memregion( "gfxram" )->base();
200203
r32395r32396
203206}
204207
205208
206WRITE8_MEMBER( pv1000_state::pv1000_io_w )
209WRITE8_MEMBER( pv1000_state::io_w )
207210{
208211   switch (offset)
209212   {
210213   case 0x00:
211214   case 0x01:
212215   case 0x02:
213      //logerror("pv1000_io_w offset=%02x, data=%02x (%03d)\n", offset, data , data);
216      //logerror("io_w offset=%02x, data=%02x (%03d)\n", offset, data , data);
214217      m_sound->voice_w(space, offset, data);
215218   break;
216219
r32395r32396
234237}
235238
236239
237READ8_MEMBER( pv1000_state::pv1000_io_r )
240READ8_MEMBER( pv1000_state::io_r )
238241{
239242   UINT8 data = m_io_regs[offset];
240243
241//  logerror("pv1000_io_r offset=%02x\n", offset );
244//  logerror("io_r offset=%02x\n", offset );
242245
243246   switch ( offset )
244247   {
r32395r32396
308311
309312DEVICE_IMAGE_LOAD_MEMBER( pv1000_state, pv1000_cart )
310313{
311   UINT8 *cart = memregion("cart")->base();
312   UINT32 size;
313
314   if (image.software_entry() == NULL)
315      size = image.length();
316   else
317      size = image.get_software_region_length("rom");
318
319
314   UINT32 size = m_cart->common_get_size("rom");
315   
320316   if (size != 0x2000 && size != 0x4000)
321317   {
322318      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
323319      return IMAGE_INIT_FAIL;
324320   }
325
326   if (image.software_entry() == NULL)
327   {
328      if (image.fread( cart, size) != size)
329      {
330         image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unable to fully read from file");
331         return IMAGE_INIT_FAIL;
332      }
333   }
334   else
335      memcpy(cart, image.get_software_region("rom"), size);
336
337
338   /* Mirror 8KB rom */
339   if (size == 0x2000)
340      memcpy(cart + 0x2000, cart, 0x2000);
341
321   
322   m_cart->rom_alloc(size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
323   m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");         
324   
342325   return IMAGE_INIT_PASS;
343326}
344327
r32395r32396
406389{
407390   // restore GFX ram
408391   for (int i = 0; i < 0x400; i++)
409      pv1000_gfxram_w(m_maincpu->space(AS_PROGRAM), i, m_gfxram[i]);
392      gfxram_w(m_maincpu->space(AS_PROGRAM), i, m_gfxram[i]);
410393}
411394
412395void pv1000_state::machine_start()
r32395r32396
417400   m_gfxram = memregion("gfxram")->base();
418401   save_pointer(NAME(m_gfxram), 0x400);
419402
403   if (m_cart->exists())
404   {
405      m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
406
407      // FIXME: this is needed for gfx decoding, but there is probably a cleaner solution!
408      astring region_tag;
409      memcpy(memregion("gfxrom")->base(), memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG))->base(), m_cart->get_rom_size());
410   }     
411
420412   save_item(NAME(m_io_regs));
421413   save_item(NAME(m_fd_data));
422414   save_item(NAME(m_pcg_bank));
r32395r32396
450442
451443
452444static GFXDECODE_START( pv1000 )
453   GFXDECODE_ENTRY( "cart", 8, pv1000_3bpp_gfx, 0, 8 )
445   GFXDECODE_ENTRY( "gfxrom", 8, pv1000_3bpp_gfx, 0, 8 )
454446   GFXDECODE_ENTRY( "gfxram", 8, pv1000_3bpp_gfx, 0, 8 )
455447GFXDECODE_END
456448
r32395r32396
478470   MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
479471
480472   /* Cartridge slot */
481   MCFG_CARTSLOT_ADD("cart")
482   MCFG_CARTSLOT_EXTENSION_LIST("bin")
483   MCFG_CARTSLOT_MANDATORY
484   MCFG_CARTSLOT_INTERFACE("pv1000_cart")
485   MCFG_CARTSLOT_LOAD(pv1000_state,pv1000_cart)
473   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_linear_slot, "pv1000_cart")
474   MCFG_GENERIC_MANDATORY
475   MCFG_GENERIC_LOAD(pv1000_state, pv1000_cart)
486476
487477   /* Software lists */
488478   MCFG_SOFTWARE_LIST_ADD("cart_list","pv1000")
r32395r32396
490480
491481
492482ROM_START( pv1000 )
493   ROM_REGION( 0x4000, "cart", ROMREGION_ERASE00 )
483   ROM_REGION( 0x4000, "gfxrom", ROMREGION_ERASE00 )
494484   ROM_REGION( 0x400, "gfxram", ROMREGION_ERASE00 )
495485ROM_END
496486
trunk/src/mess/drivers/cgenie.c
r32395r32396
488488   NULL
489489};
490490
491
492// TODO: investigate this! I think it is some sort of expansion of the DOS cart...
493DEVICE_IMAGE_LOAD_MEMBER( cgenie_state, cgenie_cart )
494{
495   UINT32 size = m_cart->common_get_size("rom");
496   
497   if (size > 0x1000)
498   {
499      image.seterror(IMAGE_ERROR_UNSPECIFIED, "Unsupported cartridge size");
500      return IMAGE_INIT_FAIL;
501   }
502   
503   m_cart->rom_alloc(0x1000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
504   m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");         
505   
506   return IMAGE_INIT_PASS;
507}
508
509
491510static MACHINE_CONFIG_START( cgenie_common, cgenie_state )
492511   /* basic machine hardware */
493512   MCFG_CPU_ADD("maincpu", Z80, XTAL_17_73447MHz/8)        /* 2,2168 MHz */
r32395r32396
535554   MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(cgenie_floppy_interface)
536555
537556   /* cartridge */
538   MCFG_CARTSLOT_ADD("cart")
539   MCFG_CARTSLOT_EXTENSION_LIST("rom")
540   MCFG_CARTSLOT_NOT_MANDATORY
557   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "cgenie_cart")
558   MCFG_GENERIC_EXTENSIONS("bin,rom")
559   MCFG_GENERIC_LOAD(cgenie_state, cgenie_cart)
541560
561   MCFG_SOFTWARE_LIST_ADD("cart_list", "cgenie_cart")
562
542563   /* internal ram */
543564   MCFG_RAM_ADD(RAM_TAG)
544565   MCFG_RAM_DEFAULT_SIZE("16K")
r32395r32396
565586   ROM_REGION(0x13000,"maincpu",0)
566587   ROM_LOAD ("cgenie.rom",  0x00000, 0x4000, CRC(d359ead7) SHA1(d8c2fc389ad38c45fba0ed556a7d91abac5463f4))
567588   ROM_LOAD ("cgdos.rom",   0x10000, 0x2000, CRC(2a96cf74) SHA1(6dcac110f87897e1ee7521aefbb3d77a14815893))
568   ROM_CART_LOAD("cart", 0x12000, 0x1000, ROM_NOMIRROR | ROM_OPTIONAL)
569589
570590   ROM_REGION(0x0c00,"gfx1",0)
571591   ROM_LOAD ("cgenie1.fnt", 0x0000, 0x0800, CRC(4fed774a) SHA1(d53df8212b521892cc56be690db0bb474627d2ff))
r32395r32396
582602   ROM_SYSTEM_BIOS(1, "new", "New ROM")
583603   ROMX_LOAD( "cgromv2.rom",   0x0000, 0x4000, CRC(cfb84e09) SHA1(e199e4429bab6f9fca2bb05e71324538928a693a), ROM_BIOS(2) )
584604   ROM_LOAD ("cgdos.rom",   0x10000, 0x2000, CRC(2a96cf74) SHA1(6dcac110f87897e1ee7521aefbb3d77a14815893))
585   ROM_CART_LOAD("cart", 0x12000, 0x1000, ROM_NOMIRROR | ROM_OPTIONAL)
586605
587606   ROM_REGION(0x0c00,"gfx1",0)
588607   ROM_LOAD ("cgenie1.fnt", 0x0000, 0x0800, CRC(4fed774a) SHA1(d53df8212b521892cc56be690db0bb474627d2ff))
trunk/src/mess/drivers/vector06.c
r32395r32396
183183   MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(vector_floppy_interface)
184184
185185   /* cartridge */
186   MCFG_CARTSLOT_ADD("cart")
187   MCFG_CARTSLOT_EXTENSION_LIST("emr")
188   MCFG_CARTSLOT_NOT_MANDATORY
186   MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "vector06_cart")
187   MCFG_GENERIC_EXTENSIONS("bin,emr")
189188
189   MCFG_SOFTWARE_LIST_ADD("cart_list", "vector06_cart")
190
190191   /* internal ram */
191192   MCFG_RAM_ADD(RAM_TAG)
192193   MCFG_RAM_DEFAULT_SIZE("64K")
r32395r32396
196197/* ROM definition */
197198
198199ROM_START( vector06 )
199   ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
200   ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
200201   ROM_SYSTEM_BIOS(0, "unboot32k", "Universal Boot 32K")
201202   ROMX_LOAD( "unboot32k.rt", 0x10000, 0x8000, CRC(28c9b5cd) SHA1(8cd7fb658896a7066ae93b10eaafa0f12139ad81), ROM_BIOS(1))
202203   ROM_SYSTEM_BIOS(1, "unboot2k", "Universal Boot 2K")
r32395r32396
209210   ROMX_LOAD( "bootos.rt",    0x10000, 0x0200, CRC(46bef038) SHA1(6732f4a360cd38112c53c458842d31f5b035cf59), ROM_BIOS(5))
210211   ROM_SYSTEM_BIOS(5, "boot512", "Boot 512")
211212   ROMX_LOAD( "boot512.rt",   0x10000, 0x0200, CRC(a0b1c6b2) SHA1(f6fe15cb0974aed30f9b7aa72133324a66d1ed3f), ROM_BIOS(6))
212   ROM_CART_LOAD("cart", 0x18000, 0x8000, ROM_OPTIONAL)
213213ROM_END
214214
215215ROM_START( vec1200 )
216   ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
216   ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
217217   ROM_LOAD( "vec1200.bin", 0x10000, 0x2000, CRC(37349224) SHA1(060fbb2c1a89040c929521cfd58cb6f1431a8b75))
218   ROM_CART_LOAD("cart", 0x18000, 0x8000, ROM_OPTIONAL)
219218
220219   ROM_REGION( 0x0200, "palette", 0 )
221220   ROM_LOAD( "palette.bin", 0x0000, 0x0200, CRC(74b7376b) SHA1(fb56b60babd7e6ed68e5f4e791ad2800d7ef6729))
222221ROM_END
223222
224223ROM_START( pk6128c )
225   ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
224   ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
226225   ROM_LOAD( "6128.bin", 0x10000, 0x4000, CRC(d4f68433) SHA1(ef5ac75f9240ca8996689c23642d4e47e5e774d8))
227   ROM_CART_LOAD("cart", 0x18000, 0x8000, ROM_OPTIONAL)
228226ROM_END
229227
230228ROM_START( krista2 )
231   ROM_REGION( 0x20000, "maincpu", ROMREGION_ERASEFF )
229   ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
232230   ROM_LOAD( "krista2.epr", 0x10000, 0x0200, CRC(df5440b0) SHA1(bcbbb3cc10aeb17c1262b45111d20279266b9ba4))
233   ROM_CART_LOAD("cart", 0x18000, 0x8000, ROM_OPTIONAL)
234231   ROM_LOAD( "krista2.pal", 0x0000, 0x0200, CRC(b243da33) SHA1(9af7873e6f8bf452c8d831833ffb02dce833c095))
235232ROM_END
236233/* Driver */
trunk/src/mess/machine/radio86.c
r32395r32396
155155   m_disk_sel = data;
156156}
157157
158READ8_MEMBER(radio86_state::radio86_romdisk_porta_r)
158READ8_MEMBER(radio86_state::radio86rom_romdisk_porta_r)
159159{
160   UINT16 addr = (m_romdisk_msb << 8) | m_romdisk_lsb;
161   if (m_cart->exists() && addr < m_cart->get_rom_size())
162      return m_cart->read_rom(space, addr);
163   else
164      return 0xff;
165}
166
167READ8_MEMBER(radio86_state::radio86ram_romdisk_porta_r)
168{
160169   UINT8 *romdisk = m_region_maincpu->base() + 0x10000;
161170   if ((m_disk_sel & 0x0f) ==0) {
162171      return romdisk[m_romdisk_msb*256+m_romdisk_lsb];
trunk/src/mess/machine/cgenie.c
r32395r32396
101101   }
102102
103103   /* copy EXT ROM, if enabled or wipe out that memory area */
104   if( ioport("DSW0")->read() & 0x20 )
104   if (ioport("DSW0")->read() & 0x20 && m_cart->exists())
105105   {
106      space.install_rom(0xe000, 0xefff, 0); // mess 0135u3 need to check
106      m_maincpu->space(AS_PROGRAM).install_read_handler(0xe000, 0xefff, read8_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart));
107107      logerror("cgenie EXT enabled\n");
108      memcpy(&memregion("maincpu")->base()[0x0e000],
109            &memregion("maincpu")->base()[0x12000], 0x1000);
110108   }
111109   else
112110   {
113111      space.nop_readwrite(0xe000, 0xefff);
114112      logerror("cgenie EXT disabled\n");
115      memset(&memregion("maincpu")->base()[0x0e000], 0x00, 0x1000);
116113   }
117114
118115   m_cass_level = 0;
trunk/src/mess/machine/orion.c
r32395r32396
2222
2323READ8_MEMBER(orion_state::orion_romdisk_porta_r)
2424{
25   UINT8 *romdisk = m_region_maincpu->base() + 0x10000;
26   return romdisk[m_romdisk_msb*256+m_romdisk_lsb];
25   UINT16 addr = (m_romdisk_msb << 8) | m_romdisk_lsb;
26   if (m_cart->exists() && addr < m_cart->get_rom_size())
27      return m_cart->read_rom(space, addr);
28   else
29      return 0xff;
2730}
2831
2932WRITE8_MEMBER(orion_state::orion_romdisk_portb_w)
trunk/src/mess/machine/vector06.c
r32395r32396
6666
6767READ8_MEMBER( vector06_state::vector06_romdisk_portb_r )
6868{
69   UINT8 *romdisk = memregion("maincpu")->base() + 0x18000;
70   UINT16 addr = (m_romdisk_msb | m_romdisk_lsb) & 0x7fff;
71   return romdisk[addr];
69   UINT16 addr = (m_romdisk_msb << 8) | m_romdisk_lsb;
70   if (m_cart->exists() && addr < m_cart->get_rom_size())
71      return m_cart->read_rom(space, addr);
72   else
73      return 0xff;
7274}
7375
7476WRITE8_MEMBER( vector06_state::vector06_romdisk_porta_w )
r32395r32396
7880
7981WRITE8_MEMBER( vector06_state::vector06_romdisk_portc_w )
8082{
81   m_romdisk_msb = data << 8;
83   m_romdisk_msb = data;
8284}
8385
8486READ8_MEMBER( vector06_state::vector06_8255_1_r )
trunk/src/mess/includes/cgenie.h
r32395r32396
1111#include "imagedev/cassette.h"
1212#include "machine/ram.h"
1313#include "sound/ay8910.h"
14#include "bus/generic/slot.h"
15#include "bus/generic/carts.h"
1416
1517// CRTC 6845
1618struct CRTC6845
r32395r32396
4648      m_fontram(*this, "fontram"),
4749      m_maincpu(*this, "maincpu"),
4850      m_cassette(*this, "cassette"),
51      m_cart(*this, "cartslot"),
4952      m_ram(*this, RAM_TAG),
5053      m_ay8910(*this, "ay8910"),
5154      m_gfxdecode(*this, "gfxdecode"),
r32395r32396
9194   DECLARE_WRITE8_MEMBER(cgenie_sh_control_port_w);
9295   required_device<cpu_device> m_maincpu;
9396   required_device<cassette_image_device> m_cassette;
97   required_device<generic_slot_device> m_cart;
9498   required_device<ram_device> m_ram;
9599   required_device<ay8910_device> m_ay8910;
96100   required_device<gfxdecode_device> m_gfxdecode;
r32395r32396
143147   DECLARE_WRITE8_MEMBER( cgenie_index_w );
144148   DECLARE_WRITE8_MEMBER( cgenie_register_w );
145149
150   DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cgenie_cart);
146151};
147152
148153#endif /* CGENIE_H_ */
trunk/src/mess/includes/radio86.h
r32395r32396
1111#include "machine/i8257.h"
1212#include "video/i8275.h"
1313#include "imagedev/cassette.h"
14#include "bus/generic/slot.h"
15#include "bus/generic/carts.h"
1416
1517
1618class radio86_state : public driver_device
r32395r32396
2527      : driver_device(mconfig, type, tag),
2628      m_maincpu(*this, "maincpu"),
2729      m_cassette(*this, "cassette"),
30      m_cart(*this, "cartslot"),
2831      m_dma8257(*this, "dma8257"),
2932      m_ppi8255_1(*this, "ppi8255_1"),
3033      m_ppi8255_2(*this, "ppi8255_2"),
r32395r32396
7376   DECLARE_WRITE8_MEMBER(radio86_8255_portc_w2);
7477   DECLARE_READ8_MEMBER(rk7007_8255_portc_r);
7578   DECLARE_WRITE_LINE_MEMBER(hrq_w);
76   DECLARE_READ8_MEMBER(radio86_romdisk_porta_r);
79   DECLARE_READ8_MEMBER(radio86rom_romdisk_porta_r);
80   DECLARE_READ8_MEMBER(radio86ram_romdisk_porta_r);
7781   DECLARE_WRITE8_MEMBER(radio86_romdisk_portb_w);
7882   DECLARE_WRITE8_MEMBER(radio86_romdisk_portc_w);
7983   DECLARE_WRITE8_MEMBER(mikrosha_8255_font_page_w);
r32395r32396
8488
8589protected:
8690   required_device<cassette_image_device> m_cassette;
91   optional_device<generic_slot_device> m_cart;   // for ROMDisk - only Radio86K & Orion?
8792   optional_device<i8257_device> m_dma8257;
8893   required_device<i8255_device> m_ppi8255_1;
8994   optional_device<i8255_device> m_ppi8255_2;
trunk/src/mess/includes/orion.h
r32395r32396
99
1010#include "machine/wd_fdc.h"
1111#include "includes/radio86.h"
12#include "cpu/z80/z80.h"
13#include "cpu/i8085/i8085.h"
1214#include "machine/i8255.h"
1315#include "machine/ram.h"
1416#include "machine/mc146818.h"
1517#include "sound/speaker.h"
1618#include "sound/ay8910.h"
19#include "sound/wave.h"
1720
1821
1922class orion_state : public radio86_state
trunk/src/mess/includes/spectrum.h
r32395r32396
7070};
7171
7272
73enum
74{
75   TIMEX_CART_NONE,
76   TIMEX_CART_DOCK,
77   TIMEX_CART_EXROM,
78   TIMEX_CART_HOME
79};
80
81
7382class spectrum_state : public driver_device
7483{
7584public:
r32395r32396
8190      m_ram(*this, RAM_TAG),
8291      m_speaker(*this, "speaker"),
8392      m_cart(*this, "cartslot"),
93      m_dock(*this, "dockslot"),
8494      m_upd765(*this, "upd765"),
8595      m_upd765_0(*this, "upd765:0"),
8696      m_upd765_1(*this, "upd765:1"),
r32395r32396
171181   void screen_eof_spectrum(screen_device &screen, bool state);
172182   INTERRUPT_GEN_MEMBER(spec_interrupt);
173183   DECLARE_DEVICE_IMAGE_LOAD_MEMBER( spectrum_cart );
184
185   // for timex cart only
174186   DECLARE_DEVICE_IMAGE_LOAD_MEMBER( timex_cart );
175   DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER( timex_cart );
187   int m_dock_cart_type, m_ram_chunks;
188   memory_region *m_dock_crt;
176189
177190   unsigned int m_previous_border_x, m_previous_border_y;
178191   bitmap_ind16 m_border_bitmap;
r32395r32396
192205   required_device<ram_device> m_ram;
193206   required_device<speaker_sound_device> m_speaker;
194207   optional_device<generic_slot_device> m_cart;
208   optional_device<generic_slot_device> m_dock;
195209   optional_device<upd765a_device> m_upd765;
196210   optional_device<floppy_connector> m_upd765_0;
197211   optional_device<floppy_connector> m_upd765_1;
trunk/src/mess/includes/vector06.h
r32395r32396
1515#include "machine/ram.h"
1616#include "machine/wd17xx.h"
1717#include "imagedev/cassette.h"
18#include "imagedev/cartslot.h"
1918#include "imagedev/flopdrv.h"
2019#include "formats/basicdsk.h"
20#include "bus/generic/slot.h"
21#include "bus/generic/carts.h"
2122
2223
2324class vector06_state : public driver_device
r32395r32396
2728      : driver_device(mconfig, type, tag),
2829   m_maincpu(*this, "maincpu"),
2930   m_cassette(*this, "cassette"),
31   m_cart(*this, "cartslot"),
3032   m_fdc(*this, "wd1793"),
3133   m_ppi(*this, "ppi8255"),
3234   m_ppi2(*this, "ppi8255_2"),
r32395r32396
3638
3739   required_device<cpu_device> m_maincpu;
3840   required_device<cassette_image_device> m_cassette;
41   required_device<generic_slot_device> m_cart;
3942   required_device<fd1793_device> m_fdc;
4043   required_device<i8255_device> m_ppi;
4144   required_device<i8255_device> m_ppi2;
r32395r32396
5760   UINT8 m_keyboard_mask;
5861   UINT8 m_color_index;
5962   UINT8 m_video_mode;
60   UINT16 m_romdisk_msb;
63   UINT8 m_romdisk_msb;
6164   UINT8 m_romdisk_lsb;
6265   UINT8 m_vblank_state;
6366   void vector06_set_video_mode(int width);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team