summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/calomega.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/calomega.h')
-rw-r--r--src/mame/includes/calomega.h43
1 files changed, 39 insertions, 4 deletions
diff --git a/src/mame/includes/calomega.h b/src/mame/includes/calomega.h
index 20ac1c23ba2..4c46a2fe7a9 100644
--- a/src/mame/includes/calomega.h
+++ b/src/mame/includes/calomega.h
@@ -1,13 +1,22 @@
// license:BSD-3-Clause
// copyright-holders:Roberto Fresca
+
#ifndef MAME_INCLUDES_CALOMEGA_H
#define MAME_INCLUDES_CALOMEGA_H
#pragma once
+#include "cpu/m6502/m6502.h"
+#include "cpu/m6502/r65c02.h"
+#include "machine/nvram.h"
+#include "machine/timer.h"
#include "machine/6821pia.h"
#include "machine/6850acia.h"
#include "machine/clock.h"
+#include "sound/ay8910.h"
+#include "video/mc6845.h"
+#include "screen.h"
+#include "speaker.h"
#include "emupal.h"
#include "tilemap.h"
@@ -32,12 +41,17 @@ public:
m_frq(*this, "FRQ"),
m_sw2(*this, "SW2"),
m_lamps(*this, "lamp%u", 1U)
- { }
+ {
+ }
void init_sys903();
void init_comg080();
void init_s903mod();
void init_sys905();
+ void init_comg5108();
+ void init_cas21iwc();
+ void init_pokeriwc();
+
void sys905(machine_config &config);
void s903mod(machine_config &config);
@@ -49,16 +63,23 @@ protected:
virtual void video_start() override;
private:
+ uint8_t piat_read(offs_t offset);
+ void piat_write(offs_t offset, uint8_t data);
void calomega_videoram_w(offs_t offset, uint8_t data);
void calomega_colorram_w(offs_t offset, uint8_t data);
uint8_t s903_mux_port_r();
void s903_mux_w(uint8_t data);
uint8_t s905_mux_port_r();
void s905_mux_w(uint8_t data);
- uint8_t pia0_ain_r();
uint8_t pia0_bin_r();
void pia0_aout_w(uint8_t data);
void pia0_bout_w(uint8_t data);
+
+ TIMER_DEVICE_CALLBACK_MEMBER(timer_a);
+ TIMER_DEVICE_CALLBACK_MEMBER(timer_b);
+ TIMER_DEVICE_CALLBACK_MEMBER(timer_c);
+ DECLARE_READ_LINE_MEMBER(timera_r);
+ DECLARE_READ_LINE_MEMBER(timerc_r);
DECLARE_WRITE_LINE_MEMBER(pia0_ca2_w);
uint8_t pia1_ain_r();
uint8_t pia1_bin_r();
@@ -67,6 +88,7 @@ private:
void lamps_903a_w(uint8_t data);
void lamps_903b_w(uint8_t data);
void lamps_905_w(uint8_t data);
+ DECLARE_WRITE_LINE_MEMBER(cpu_sync);
DECLARE_WRITE_LINE_MEMBER(write_acia_tx);
DECLARE_WRITE_LINE_MEMBER(write_acia_clock);
DECLARE_WRITE_LINE_MEMBER(update_aciabaud_scale);
@@ -81,7 +103,7 @@ private:
optional_device_array<pia6821_device, 2> m_pia;
- required_device<cpu_device> m_maincpu;
+ required_device<m6502_device> m_maincpu;
optional_device<acia6850_device> m_acia6850_0;
optional_device<clock_device> m_aciabaud;
required_device<gfxdecode_device> m_gfxdecode;
@@ -99,10 +121,23 @@ private:
optional_ioport m_sw2;
output_finder<9> m_lamps;
- uint8_t m_tx_line;
+ bool m_sync;
+ bool m_timera, m_timerb, m_timerc;
+ uint8_t m_vblank, m_tx_line;
+
int m_s903_mux_data;
int m_s905_mux_data;
tilemap_t *m_bg_tilemap;
+
+ // PIAT
+ uint8_t piat_b_thi = 0;
+ uint8_t piat_01 = 0;
+ uint8_t piat_b_tlo = 0;
+ uint8_t piat_b_ctl_w;
+ uint8_t piat_b_ctl_r;
+ uint16_t piat_b_timer = 0;
+ bool piat_b_enable = false;
+ bool piat_state = false;
};
#endif // MAME_INCLUDES_CALOMEGA_H