summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/includes/c65.h
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2013-03-07 15:28:25 +0000
committer Curt Coder <curtcoder@mail.com>2013-03-07 15:28:25 +0000
commit76ac08a0b805820f12be6dac3daee17f8eb26953 (patch)
tree74a1a81d8e2a6cf242d498978b3573015c4d7a0c /src/mess/includes/c65.h
parent7e0b63efa9978e8611337c4ac80ffc293bb527ee (diff)
Moved some files to where they belong. (nw)
Diffstat (limited to 'src/mess/includes/c65.h')
-rw-r--r--src/mess/includes/c65.h81
1 files changed, 75 insertions, 6 deletions
diff --git a/src/mess/includes/c65.h b/src/mess/includes/c65.h
index b60fc347f54..aa8084ac063 100644
--- a/src/mess/includes/c65.h
+++ b/src/mess/includes/c65.h
@@ -7,8 +7,23 @@
#ifndef C65_H_
#define C65_H_
-#include "includes/c64_legacy.h"
#include "machine/6526cia.h"
+#include "machine/cbmiec.h"
+#include "imagedev/cartslot.h"
+
+#define C64_MAX_ROMBANK 64 // .crt files contain multiple 'CHIPs', i.e. rom banks (of variable size) with headers. Known carts have at most 64 'CHIPs'.
+
+struct C64_ROM {
+ int addr, size, index, start;
+};
+
+struct c64_cart_t {
+ C64_ROM bank[C64_MAX_ROMBANK];
+ INT8 game;
+ INT8 exrom;
+ UINT8 mapper;
+ UINT8 n_banks;
+};
struct dma_t
{
@@ -37,23 +52,62 @@ struct expansion_ram_t
UINT8 reg;
};
-class c65_state : public legacy_c64_state
+class c65_state : public driver_device
{
public:
c65_state(const machine_config &mconfig, device_type type, const char *tag)
- : legacy_c64_state(mconfig, type, tag),
+ : driver_device(mconfig, type, tag),
+ m_iec(*this, CBM_IEC_TAG),
+ m_colorram(*this, "colorram"),
+ m_basic(*this, "basic"),
+ m_chargen(*this, "chargen"),
+ m_kernal(*this, "kernal"),
m_c65_chargen(*this, "c65_chargen"),
- m_interface(*this, "interface")
+ m_interface(*this, "interface"),
+ m_roml_writable(0)
{ }
+ optional_device<cbm_iec_device> m_iec;
+
+ required_shared_ptr<UINT8> m_colorram;
+ required_shared_ptr<UINT8> m_basic;
+ required_shared_ptr<UINT8> m_chargen;
+ required_shared_ptr<UINT8> m_kernal;
required_shared_ptr<UINT8> m_c65_chargen;
required_shared_ptr<UINT8> m_interface;
- int m_charset_select;
+ int m_old_level;
+ int m_old_data;
+ int m_old_exrom;
+ int m_old_game;
+ UINT8 m_vicirq;
+ emu_timer *m_datasette_timer;
+ emu_timer *m_cartridge_timer;
+ UINT8 *m_memory;
+ int m_pal;
+ int m_tape_on;
+ UINT8 *m_c64_roml;
+ UINT8 *m_c64_romh;
+ UINT8 *m_vicaddr;
+ UINT8 *m_c128_vicaddr;
+ UINT8 m_game;
+ UINT8 m_exrom;
+ UINT8 *m_io_mirror;
+ UINT8 m_port_data;
+ UINT8 *m_roml;
+ UINT8 *m_romh;
+ int m_roml_writable;
+ int m_ultimax;
+ int m_cia1_on;
+ int m_io_enabled;
+ int m_is_sx64;
+ UINT8 *m_io_ram_w_ptr;
+ UINT8 *m_io_ram_r_ptr;
+ c64_cart_t m_cart;
+ int m_nmilevel; int m_charset_select;
int m_c64mode;
UINT8 m_6511_port;
UINT8 m_keyline;
int m_old_value;
- int m_nmilevel;
dma_t m_dma;
int m_dump_dma;
fdc_t m_fdc;
@@ -63,6 +117,14 @@ public:
DECLARE_DRIVER_INIT(c65);
DECLARE_DRIVER_INIT(c65pal);
+ DECLARE_READ8_MEMBER( c64_lightpen_x_cb );
+ DECLARE_READ8_MEMBER( c64_lightpen_y_cb );
+ DECLARE_READ8_MEMBER( c64_lightpen_button_cb );
+ DECLARE_READ8_MEMBER( c64_dma_read );
+ DECLARE_READ8_MEMBER( c64_dma_read_ultimax );
+ DECLARE_READ8_MEMBER( c64_dma_read_color );
+ DECLARE_WRITE_LINE_MEMBER( c64_vic_interrupt );
+ DECLARE_READ8_MEMBER( c64_rdy_cb );
DECLARE_READ8_MEMBER( sid_potx_r );
DECLARE_READ8_MEMBER( sid_poty_r );
DECLARE_MACHINE_START(c65);
@@ -76,6 +138,9 @@ public:
DECLARE_READ8_MEMBER(c65_cia1_port_a_r);
DECLARE_WRITE8_MEMBER(c65_cia1_port_a_w);
DECLARE_WRITE_LINE_MEMBER(c65_cia1_interrupt);
+ void c64_legacy_driver_init();
+ DECLARE_DEVICE_IMAGE_LOAD_MEMBER( c64_cart );
+ DECLARE_DEVICE_IMAGE_UNLOAD_MEMBER( c64_cart );
};
@@ -99,4 +164,8 @@ void c65_bankswitch_interface(running_machine &machine, int value);
extern const legacy_mos6526_interface c65_cia0;
extern const legacy_mos6526_interface c65_cia1;
+DECLARE_READ8_HANDLER ( c64_colorram_read );
+DECLARE_WRITE8_HANDLER ( c64_colorram_write );
+MACHINE_CONFIG_EXTERN( c64_cartslot );
+
#endif /* C65_H_ */