Previous 199869 Revisions Next

r31170 Thursday 3rd July, 2014 at 00:13:37 UTC by hap
added more cpu types for tms7000 family
[src/emu/cpu/tms7000]tms7000.c tms7000.h
[src/mess/drivers]exelv.c

trunk/src/emu/cpu/tms7000/tms7000.c
r31169r31170
4949
5050
5151const device_type TMS7000 = &device_creator<tms7000_device>;
52const device_type TMS7000_EXL = &device_creator<tms7000_exl_device>;
52const device_type TMS7020 = &device_creator<tms7020_device>;
53const device_type TMS7020_EXL = &device_creator<tms7020_exl_device>;
54const device_type TMS7040 = &device_creator<tms7040_device>;
55const device_type TMS70C00 = &device_creator<tms70c00_device>;
56const device_type TMS70C20 = &device_creator<tms70c20_device>;
57const device_type TMS70C40 = &device_creator<tms70c40_device>;
5358
54
5559static ADDRESS_MAP_START(tms7000_mem, AS_PROGRAM, 8, tms7000_device )
56   AM_RANGE(0x0000, 0x007f) AM_RAM
60   AM_RANGE(0x0000, 0x007f) AM_RAM // 128 bytes internal RAM
5761   AM_RANGE(0x0100, 0x010f) AM_READWRITE(tms70x0_pf_r, tms70x0_pf_w)             /* tms7000 internal I/O ports */
5862ADDRESS_MAP_END
5963
64static ADDRESS_MAP_START(tms7020_mem, AS_PROGRAM, 8, tms7000_device )
65   AM_RANGE(0xf000, 0xffff) AM_ROM // 2kB internal ROM
66   AM_IMPORT_FROM( tms7000_mem )
67ADDRESS_MAP_END
6068
69static ADDRESS_MAP_START(tms7040_mem, AS_PROGRAM, 8, tms7000_device )
70   AM_RANGE(0xf000, 0xffff) AM_ROM // 4kB internal ROM
71   AM_IMPORT_FROM( tms7000_mem )
72ADDRESS_MAP_END
73
74
6175tms7000_device::tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
6276   : cpu_device(mconfig, TMS7000, "TMS7000", tag, owner, clock, "tms7000", __FILE__)
6377   , m_program_config("program", ENDIANNESS_BIG, 8, 16, 0, ADDRESS_MAP_NAME(tms7000_mem))
r31169r31170
6680{
6781}
6882
69
70tms7000_device::tms7000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source)
83tms7000_device::tms7000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, address_map_constructor internal, const opcode_func *opcode, const char *shortname, const char *source)
7184   : cpu_device(mconfig, type, name, tag, owner, clock, shortname, source)
72   , m_program_config("program", ENDIANNESS_BIG, 8, 16, 0, ADDRESS_MAP_NAME(tms7000_mem))
85   , m_program_config("program", ENDIANNESS_BIG, 8, 16, 0, internal)
7386   , m_io_config("io", ENDIANNESS_BIG, 8, 8, 0)
74   , m_opcode(s_opfn_exl)
87   , m_opcode(opcode)
7588{
7689}
7790
91tms7020_device::tms7020_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
92   : tms7000_device(mconfig, TMS7020, "TMS7020", tag, owner, clock, ADDRESS_MAP_NAME(tms7020_mem), s_opfn, "tms7020", __FILE__)
93{
94}
7895
79tms7000_exl_device::tms7000_exl_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
80   : tms7000_device(mconfig, TMS7000_EXL, "TMS7000_EXL", tag, owner, clock, "tms7000_exl", __FILE__)
96tms7020_exl_device::tms7020_exl_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
97   : tms7000_device(mconfig, TMS7020_EXL, "TMS7020 (EXL 100)", tag, owner, clock, ADDRESS_MAP_NAME(tms7020_mem), s_opfn_exl, "tms7020_exl", __FILE__)
8198{
8299}
83100
101tms7040_device::tms7040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
102   : tms7000_device(mconfig, TMS7040, "TMS7040", tag, owner, clock, ADDRESS_MAP_NAME(tms7040_mem), s_opfn, "tms7040", __FILE__)
103{
104}
84105
106tms70c00_device::tms70c00_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
107   : tms7000_device(mconfig, TMS70C00, "TMS70C00", tag, owner, clock, ADDRESS_MAP_NAME(tms7000_mem), s_opfn, "tms70c00", __FILE__)
108{
109}
110
111tms70c20_device::tms70c20_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
112   : tms7000_device(mconfig, TMS70C20, "TMS70C20", tag, owner, clock, ADDRESS_MAP_NAME(tms7020_mem), s_opfn, "tms70c20", __FILE__)
113{
114}
115
116tms70c40_device::tms70c40_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
117   : tms7000_device(mconfig, TMS70C40, "TMS70C40", tag, owner, clock, ADDRESS_MAP_NAME(tms7040_mem), s_opfn, "tms70c40", __FILE__)
118{
119}
120
121
85122offs_t tms7000_device::disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options)
86123{
87124   extern CPU_DISASSEMBLE( tms7000 );
trunk/src/emu/cpu/tms7000/tms7000.h
r31169r31170
4545class tms7000_device : public cpu_device
4646{
4747public:
48   typedef void ( tms7000_device::*opcode_func ) ();
49   static const opcode_func s_opfn[0x100];
50   static const opcode_func s_opfn_exl[0x100];
51
4852   // construction/destruction
4953   tms7000_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
50   tms7000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
54   tms7000_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, address_map_constructor internal, const opcode_func *opcode, const char *shortname, const char *source);
5155
5256   DECLARE_WRITE8_MEMBER( tms70x0_pf_w );
5357   DECLARE_READ8_MEMBER( tms70x0_pf_r );
r31169r31170
7983   address_space_config m_program_config;
8084   address_space_config m_io_config;
8185
82   typedef void ( tms7000_device::*opcode_func ) ();
83   static const opcode_func s_opfn[0x100];
84   static const opcode_func s_opfn_exl[0x100];
8586   const opcode_func *m_opcode;
8687
8788   inline UINT8 bcd_add( UINT8 a, UINT8 b, UINT8 c );
r31169r31170
345346};
346347
347348
348class tms7000_exl_device : public tms7000_device
349class tms7020_device : public tms7000_device
349350{
350351public:
351   // construction/destruction
352   tms7000_exl_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
352   tms7020_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
353353};
354354
355355
356class tms7020_exl_device : public tms7000_device
357{
358public:
359   tms7020_exl_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
360};
361
362
363class tms7040_device : public tms7000_device
364{
365public:
366   tms7040_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
367};
368
369
370class tms70c00_device : public tms7000_device
371{
372public:
373   tms70c00_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
374};
375
376
377class tms70c20_device : public tms7000_device
378{
379public:
380   tms70c20_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
381};
382
383
384class tms70c40_device : public tms7000_device
385{
386public:
387   tms70c40_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
388};
389
390
356391extern const device_type TMS7000;
357extern const device_type TMS7000_EXL;
392extern const device_type TMS7020;
393extern const device_type TMS7020_EXL;
394extern const device_type TMS7040;
395extern const device_type TMS70C00;
396extern const device_type TMS70C20;
397extern const device_type TMS70C40;
358398
359399
360400#endif /* __TMS7000_H__ */
trunk/src/mess/drivers/exelv.c
r31169r31170
462462   AM_RANGE(0x8000, 0xbfff) AM_NOP
463463   AM_RANGE(0xc000, 0xc7ff) AM_RAM                                     /* CPU RAM */
464464   AM_RANGE(0xc800, 0xf7ff) AM_NOP
465   AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION("maincpu",0x0000)     /* tms7020 internal ROM */
466465ADDRESS_MAP_END
467466
468467
r31169r31170
473472
474473
475474static ADDRESS_MAP_START(tms7041_map, AS_PROGRAM, 8, exelv_state)
476   AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("tms7041",0x0000)
475   AM_RANGE(0x0080, 0x00ff) AM_RAM
477476ADDRESS_MAP_END
478477
479478
r31169r31170
497496   AM_RANGE(0x8000, 0xbfff) AM_NOP
498497   AM_RANGE(0xc000, 0xc7ff) AM_RAM                                     /* CPU RAM */
499498   AM_RANGE(0xc800, 0xefff) AM_NOP
500   AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("maincpu",0x0000)     /* tms7040 internal ROM */
501499ADDRESS_MAP_END
502500
503501
504502static ADDRESS_MAP_START(tms7042_map, AS_PROGRAM, 8, exelv_state)
505   AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("tms7042",0x0000) 
503   AM_RANGE(0x0080, 0x00ff) AM_RAM
506504ADDRESS_MAP_END
507505
508506
r31169r31170
550548
551549static MACHINE_CONFIG_START( exl100, exelv_state )
552550   /* basic machine hardware */
553   MCFG_CPU_ADD("maincpu", TMS7000_EXL, XTAL_4_9152MHz)    /* TMS7020 */
551   MCFG_CPU_ADD("maincpu", TMS7020_EXL, XTAL_4_9152MHz)
554552   MCFG_CPU_PROGRAM_MAP(tms7020_mem)
555553   MCFG_CPU_IO_MAP(tms7020_port)
556554   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", exelv_state, exelv_hblank_interrupt, "screen", 0, 1)
557555
558   MCFG_CPU_ADD("tms7041", TMS7000, XTAL_4_9152MHz)
556   MCFG_CPU_ADD("tms7041", TMS7040, XTAL_4_9152MHz) // should be TMS7041
559557   MCFG_CPU_PROGRAM_MAP(tms7041_map)
560558   MCFG_CPU_IO_MAP(tms7041_port)
561559
562560   MCFG_QUANTUM_PERFECT_CPU("maincpu")
563   MCFG_QUANTUM_PERFECT_CPU("tms7041")
564561
565562   MCFG_TMS3556_ADD("tms3556")
566563
r31169r31170
591588   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
592589   
593590/* cartridge */
594        MCFG_CARTSLOT_ADD("cart")
595        MCFG_CARTSLOT_EXTENSION_LIST("bin,rom")
596        MCFG_CARTSLOT_NOT_MANDATORY
597        MCFG_CARTSLOT_LOAD(exelv_state,exelvision_cartridge)
598        MCFG_CARTSLOT_INTERFACE("exelvision_cart")
599        MCFG_SOFTWARE_LIST_ADD("cart_list","exelvision_cart")
600   
591   MCFG_CARTSLOT_ADD("cart")
592   MCFG_CARTSLOT_EXTENSION_LIST("bin,rom")
593   MCFG_CARTSLOT_NOT_MANDATORY
594   MCFG_CARTSLOT_LOAD(exelv_state,exelvision_cartridge)
595   MCFG_CARTSLOT_INTERFACE("exelvision_cart")
596   MCFG_SOFTWARE_LIST_ADD("cart_list","exelvision_cart")
601597MACHINE_CONFIG_END
602598
603599
604600static MACHINE_CONFIG_START( exeltel, exelv_state )
605601   /* basic machine hardware */
606   MCFG_CPU_ADD("maincpu", TMS7000_EXL, XTAL_4_9152MHz)    /* TMS7040 */
602   MCFG_CPU_ADD("maincpu", TMS7040, XTAL_4_9152MHz)
607603   MCFG_CPU_PROGRAM_MAP(tms7040_mem)
608604   MCFG_CPU_IO_MAP(tms7020_port)
609605   MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", exelv_state, exelv_hblank_interrupt, "screen", 0, 1)
610606
611   MCFG_CPU_ADD("tms7042", TMS7000, XTAL_4_9152MHz)
607   MCFG_CPU_ADD("tms7042", TMS7040, XTAL_4_9152MHz) // should be TMS7042
612608   MCFG_CPU_PROGRAM_MAP(tms7042_map)
613609   MCFG_CPU_IO_MAP(tms7041_port)
614610
615611   MCFG_QUANTUM_PERFECT_CPU("maincpu")
616   MCFG_QUANTUM_PERFECT_CPU("tms7042")
617612
618613   MCFG_TMS3556_ADD("tms3556")
619614
r31169r31170
649644  ROM loading
650645*/
651646ROM_START(exl100)
652   ROM_REGION(0x800, "maincpu", 0)
653   ROM_LOAD("exl100in.bin", 0x0000, 0x0800, CRC(049109a3) SHA1(98a07297dcdacef41c793c197b6496dac1e8e744))      /* TMS7020 ROM, correct */
647   ROM_REGION(0x10000, "maincpu", 0)
648   ROM_LOAD("exl100in.bin", 0xf800, 0x0800, CRC(049109a3) SHA1(98a07297dcdacef41c793c197b6496dac1e8e744))      /* TMS7020 ROM, correct */
654649
655   ROM_REGION(0x1000, "tms7041", 0)
656   ROM_LOAD("exl100_7041.bin", 0x0000, 0x1000, CRC(38f6fc7a) SHA1(b71d545664a974d8ad39bdf600c5b9884c3efab6))           /* TMS7041 internal ROM, correct  */
650   ROM_REGION(0x10000, "tms7041", 0)
651   ROM_LOAD("exl100_7041.bin", 0xf000, 0x1000, CRC(38f6fc7a) SHA1(b71d545664a974d8ad39bdf600c5b9884c3efab6))           /* TMS7041 internal ROM, correct  */
657652//   ROM_REGION(0x8000, "vsm", 0)
658653
659654   ROM_REGION(0x10000, "user1", ROMREGION_ERASEFF)         /* cartridge area */
r31169r31170
661656
662657
663658ROM_START(exeltel)
664   ROM_REGION(0x1000, "maincpu", 0)
665   ROM_LOAD("exeltel_7040.bin", 0x0000, 0x1000, CRC(2792f02f) SHA1(442a852eb68ef78974733d169084752a131de23d))      /* TMS7040 internal ROM */
659   ROM_REGION(0x10000, "maincpu", 0)
660   ROM_LOAD("exeltel_7040.bin", 0xf000, 0x1000, CRC(2792f02f) SHA1(442a852eb68ef78974733d169084752a131de23d))      /* TMS7040 internal ROM */
666661
667   ROM_REGION(0x1000, "tms7042", 0)
668   ROM_LOAD("exeltel_7042.bin", 0x0000, 0x1000, BAD_DUMP CRC(a0163507) SHA1(8452849df7eac8a89cf03ee98e2306047c1c4c38))         /* TMS7042 internal ROM, needs redump */
662   ROM_REGION(0x10000, "tms7042", 0)
663   ROM_LOAD("exeltel_7042.bin", 0xf000, 0x1000, BAD_DUMP CRC(a0163507) SHA1(8452849df7eac8a89cf03ee98e2306047c1c4c38))         /* TMS7042 internal ROM, needs redump */
669664
670665   ROM_REGION(0x10000,"user1",0)
671666   ROM_SYSTEM_BIOS( 0, "french", "French v1.4" )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team