Previous 15994 Revisions Next

r14745 Sunday 11th March, 2012 at 17:04:12 UTC by Sandro Ronco
z88: Added support for flash cartridge. (nw)
[src/mess]mess.mak
[src/mess/drivers]z88.c
[src/mess/includes]z88.h
[src/mess/machine]z88_flash.c* z88_flash.h* z88_ram.h z88_rom.h z88cart.h

src/mess/machine/z88cart.h
r14744r14745
7777   virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
7878   virtual DECLARE_WRITE8_MEMBER(write) { }
7979   virtual UINT8* get_cart_base() { return NULL; }
80   virtual int get_cart_size() { return 0; }
80   virtual UINT32 get_cart_size() { return 0; }
8181};
8282
8383
src/mess/machine/z88_ram.h
r14744r14745
2929   virtual DECLARE_READ8_MEMBER(read);
3030   virtual DECLARE_WRITE8_MEMBER(write);
3131   virtual UINT8* get_cart_base();
32   virtual int get_cart_size() { return 0x8000; }
32   virtual UINT32 get_cart_size() { return 0x8000; }
3333
3434protected:
3535   // internal state
r14744r14745
4949   virtual void device_config_complete() { m_shortname = "z88_128k_ram"; }
5050
5151   // z88cart_interface overrides
52   virtual int get_cart_size() { return 0x20000; }
52   virtual UINT32 get_cart_size() { return 0x20000; }
5353};
5454
5555// ======================> z88_512k_ram_device
r14744r14745
6565   virtual void device_config_complete() { m_shortname = "z88_512k_ram"; }
6666
6767   // z88cart_interface overrides
68   virtual int get_cart_size() { return 0x80000; }
68   virtual UINT32 get_cart_size() { return 0x80000; }
6969};
7070
7171// ======================> z88_1024k_ram_device
r14744r14745
8181   virtual void device_config_complete() { m_shortname = "z88_1024k_ram"; }
8282
8383   // z88cart_interface overrides
84   virtual int get_cart_size() { return 0x100000; }
84   virtual UINT32 get_cart_size() { return 0x100000; }
8585};
8686
8787// device type definition
src/mess/machine/z88_flash.c
r0r14745
1/***************************************************************************
2
3    z88_flash.c
4
5    Z88 Flash cartridges emulation
6
7***************************************************************************/
8
9#include "emu.h"
10#include "z88_flash.h"
11
12
13//**************************************************************************
14//  MACROS/CONSTANTS
15//**************************************************************************
16
17#define FLASH_TAG   "flash"
18
19//**************************************************************************
20//  DEVICE DEFINITIONS
21//**************************************************************************
22
23const device_type Z88_1024K_FLASH =  &device_creator<z88_1024k_flash_device>;
24
25//-------------------------------------------------
26//  MACHINE_CONFIG_FRAGMENT( z88_flash )
27//-------------------------------------------------
28
29static MACHINE_CONFIG_FRAGMENT(z88_flash)
30   MCFG_INTEL_E28F008SA_ADD(FLASH_TAG)
31MACHINE_CONFIG_END
32
33
34//**************************************************************************
35//  LIVE DEVICE
36//**************************************************************************
37
38//-------------------------------------------------
39//  z88_1024k_flash_device - constructor
40//-------------------------------------------------
41
42z88_1024k_flash_device::z88_1024k_flash_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
43      : device_t(mconfig, Z88_1024K_FLASH, "Z88 1024KB Flash", tag, owner, clock),
44      device_z88cart_interface( mconfig, *this ),
45      m_flash(*this, FLASH_TAG)
46{
47}
48
49//-------------------------------------------------
50//  device_start - device-specific startup
51//-------------------------------------------------
52
53void z88_1024k_flash_device::device_start()
54{
55}
56
57
58//-------------------------------------------------
59//  device_mconfig_additions
60//-------------------------------------------------
61
62machine_config_constructor z88_1024k_flash_device::device_mconfig_additions() const
63{
64   return MACHINE_CONFIG_NAME( z88_flash );
65}
66
67/*-------------------------------------------------
68    get_cart_base
69-------------------------------------------------*/
70
71UINT8* z88_1024k_flash_device::get_cart_base()
72{
73   return (UINT8*)m_flash->space()->get_read_ptr(0);
74}
75
76/*-------------------------------------------------
77    read
78-------------------------------------------------*/
79
80READ8_MEMBER(z88_1024k_flash_device::read)
81{
82   return m_flash->read(offset & (get_cart_size() - 1));
83}
84
85/*-------------------------------------------------
86    write
87-------------------------------------------------*/
88
89WRITE8_MEMBER(z88_1024k_flash_device::write)
90{
91   m_flash->write(offset & (get_cart_size() - 1), data);
92}
src/mess/machine/z88_flash.h
r0r14745
1#pragma once
2
3#ifndef __Z88_FLASH_H__
4#define __Z88_FLASH_H__
5
6#include "emu.h"
7#include "machine/z88cart.h"
8#include "machine/intelfsh.h"
9
10//**************************************************************************
11//  TYPE DEFINITIONS
12//**************************************************************************
13
14// ======================> z88_1024k_flash_device
15
16class z88_1024k_flash_device : public device_t,
17                         public device_z88cart_interface
18{
19public:
20   // construction/destruction
21   z88_1024k_flash_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
22
23   // optional information overrides
24   virtual machine_config_constructor device_mconfig_additions() const;
25
26protected:
27   // device-level overrides
28   virtual void device_start();
29   virtual void device_config_complete() { m_shortname = "z88_1024k_flash"; }
30
31   // z88cart_interface overrides
32   virtual DECLARE_READ8_MEMBER(read);
33   virtual DECLARE_WRITE8_MEMBER(write);
34   virtual UINT8* get_cart_base();
35   virtual UINT32 get_cart_size() { return 0x100000; }
36
37private:
38   required_device<intelfsh8_device> m_flash;
39};
40
41// device type definition
42extern const device_type Z88_1024K_FLASH;
43
44
45#endif  /* __Z88_FLASH_H__ */
src/mess/machine/z88_rom.h
r14744r14745
2828   // z88cart_interface overrides
2929   virtual DECLARE_READ8_MEMBER(read);
3030   virtual UINT8* get_cart_base();
31   virtual int get_cart_size() { return 0x8000; }
31   virtual UINT32 get_cart_size() { return 0x8000; }
3232
3333protected:
3434   // internal state
r14744r14745
4848   virtual void device_config_complete() { m_shortname = "z88_128k_rom"; }
4949
5050   // z88cart_interface overrides
51   virtual int get_cart_size() { return 0x20000; }
51   virtual UINT32 get_cart_size() { return 0x20000; }
5252};
5353
5454// ======================> z88_256k_rom_device
r14744r14745
6464   virtual void device_config_complete() { m_shortname = "z88_256k_rom"; }
6565
6666   // z88cart_interface overrides
67   virtual int get_cart_size() { return 0x200000; }
67   virtual UINT32 get_cart_size() { return 0x200000; }
6868};
6969
7070// device type definition
src/mess/includes/z88.h
r14744r14745
1212#include "machine/upd65031.h"
1313#include "machine/ram.h"
1414#include "machine/z88cart.h"
15#include "machine/z88_flash.h"
1516#include "machine/z88_ram.h"
1617#include "machine/z88_rom.h"
1718#include "sound/speaker.h"
src/mess/drivers/z88.c
r14744r14745
332332   SLOT_INTERFACE("128kram", Z88_128K_RAM)         // 128KB RAM cart
333333   SLOT_INTERFACE("512kram", Z88_512K_RAM)         // 512KB RAM cart
334334   SLOT_INTERFACE("1024kram",Z88_1024K_RAM)      // 1024KB RAM cart
335   SLOT_INTERFACE("1024kflash",Z88_1024K_FLASH)   // 1024KB Flash cart
335336SLOT_INTERFACE_END
336337
337338static MACHINE_CONFIG_START( z88, z88_state )
src/mess/mess.mak
r14744r14745
571571   $(MESS_DRIVERS)/z88.o      \
572572   $(MESS_VIDEO)/z88.o         \
573573   $(MESS_MACHINE)/z88cart.o   \
574   $(MESS_MACHINE)/z88_flash.o   \
574575   $(MESS_MACHINE)/z88_ram.o   \
575576   $(MESS_MACHINE)/z88_rom.o   \
576577   $(MESS_MACHINE)/upd65031.o   \

Previous 15994 Revisions Next


© 1998-2018 The MESS Team