summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/includes/pcw16.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/includes/pcw16.h')
-rw-r--r--src/mess/includes/pcw16.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/mess/includes/pcw16.h b/src/mess/includes/pcw16.h
new file mode 100644
index 00000000000..0ead19bc5ff
--- /dev/null
+++ b/src/mess/includes/pcw16.h
@@ -0,0 +1,108 @@
+/*****************************************************************************
+ *
+ * includes/pcw16.h
+ *
+ ****************************************************************************/
+
+#ifndef PCW16_H_
+#define PCW16_H_
+
+
+#define PCW16_BORDER_HEIGHT 8
+#define PCW16_BORDER_WIDTH 8
+#define PCW16_NUM_COLOURS 32
+#define PCW16_DISPLAY_WIDTH 640
+#define PCW16_DISPLAY_HEIGHT 480
+
+#define PCW16_SCREEN_WIDTH (PCW16_DISPLAY_WIDTH + (PCW16_BORDER_WIDTH<<1))
+#define PCW16_SCREEN_HEIGHT (PCW16_DISPLAY_HEIGHT + (PCW16_BORDER_HEIGHT<<1))
+
+
+class pcw16_state : public driver_device
+{
+public:
+ pcw16_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag) { }
+
+ unsigned long m_interrupt_counter;
+ int m_banks[4];
+ int m_4_bit_port;
+ int m_fdc_int_code;
+ int m_system_status;
+ char *m_mem_ptr[4];
+ unsigned char m_keyboard_data_shift;
+ int m_keyboard_parity_table[256];
+ int m_keyboard_bits;
+ int m_keyboard_bits_output;
+ int m_keyboard_state;
+ int m_keyboard_previous_state;
+ unsigned char m_rtc_seconds;
+ unsigned char m_rtc_minutes;
+ unsigned char m_rtc_hours;
+ unsigned char m_rtc_days_max;
+ unsigned char m_rtc_days;
+ unsigned char m_rtc_months;
+ unsigned char m_rtc_years;
+ unsigned char m_rtc_control;
+ unsigned char m_rtc_256ths_seconds;
+ int m_previous_fdc_int_state;
+ int m_colour_palette[16];
+ int m_video_control;
+ DECLARE_WRITE8_MEMBER(pcw16_palette_w);
+ DECLARE_READ8_MEMBER(pcw16_no_mem_r);
+ DECLARE_READ8_MEMBER(pcw16_bankhw_r);
+ DECLARE_WRITE8_MEMBER(pcw16_bankhw_w);
+ DECLARE_WRITE8_MEMBER(pcw16_video_control_w);
+ DECLARE_READ8_MEMBER(pcw16_keyboard_data_shift_r);
+ DECLARE_WRITE8_MEMBER(pcw16_keyboard_data_shift_w);
+ DECLARE_READ8_MEMBER(pcw16_keyboard_status_r);
+ DECLARE_WRITE8_MEMBER(pcw16_keyboard_control_w);
+ DECLARE_READ8_MEMBER(rtc_year_invalid_r);
+ DECLARE_READ8_MEMBER(rtc_month_r);
+ DECLARE_READ8_MEMBER(rtc_days_r);
+ DECLARE_READ8_MEMBER(rtc_hours_r);
+ DECLARE_READ8_MEMBER(rtc_minutes_r);
+ DECLARE_READ8_MEMBER(rtc_seconds_r);
+ DECLARE_READ8_MEMBER(rtc_256ths_seconds_r);
+ DECLARE_WRITE8_MEMBER(rtc_control_w);
+ DECLARE_WRITE8_MEMBER(rtc_seconds_w);
+ DECLARE_WRITE8_MEMBER(rtc_minutes_w);
+ DECLARE_WRITE8_MEMBER(rtc_hours_w);
+ DECLARE_WRITE8_MEMBER(rtc_days_w);
+ DECLARE_WRITE8_MEMBER(rtc_month_w);
+ DECLARE_WRITE8_MEMBER(rtc_year_w);
+ DECLARE_READ8_MEMBER(pcw16_system_status_r);
+ DECLARE_READ8_MEMBER(pcw16_timer_interrupt_counter_r);
+ DECLARE_WRITE8_MEMBER(pcw16_system_control_w);
+ DECLARE_WRITE8_MEMBER(pcw16_superio_fdc_datarate_w);
+ DECLARE_WRITE8_MEMBER(pcw16_superio_fdc_digital_output_register_w);
+ DECLARE_WRITE8_MEMBER(pcw16_superio_fdc_data_w);
+ DECLARE_READ8_MEMBER(pcw16_superio_fdc_data_r);
+ DECLARE_READ8_MEMBER(pcw16_superio_fdc_main_status_register_r);
+ DECLARE_READ8_MEMBER(pcw16_superio_fdc_digital_input_register_r);
+ DECLARE_READ8_MEMBER(pcw16_mem_r);
+ DECLARE_WRITE8_MEMBER(pcw16_mem_w);
+ void pcw16_keyboard_init();
+ void pcw16_keyboard_refresh_outputs();
+ void pcw16_keyboard_set_clock_state(int state);
+ void pcw16_keyboard_int(int state);
+ void pcw16_keyboard_reset();
+ int pcw16_keyboard_can_transmit();
+ void pcw16_keyboard_signal_byte_received(int data);
+ void pcw16_refresh_ints();
+ void rtc_setup_max_days();
+ UINT8 pcw16_read_mem(UINT8 bank, UINT16 offset);
+ void pcw16_write_mem(UINT8 bank, UINT16 offset, UINT8 data);
+ UINT8 read_bank_data(UINT8 type, UINT16 offset);
+ void write_bank_data(UINT8 type, UINT16 offset, UINT8 data);
+};
+
+
+/*----------- defined in video/pcw16.c -----------*/
+
+extern PALETTE_INIT( pcw16 );
+extern VIDEO_START( pcw16 );
+extern SCREEN_UPDATE_IND16( pcw16 );
+
+
+#endif /* PCW16_H_ */