summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/includes/ql.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/includes/ql.h')
-rw-r--r--src/mess/includes/ql.h138
1 files changed, 138 insertions, 0 deletions
diff --git a/src/mess/includes/ql.h b/src/mess/includes/ql.h
new file mode 100644
index 00000000000..98b785a351a
--- /dev/null
+++ b/src/mess/includes/ql.h
@@ -0,0 +1,138 @@
+#pragma once
+
+#ifndef __QL__
+#define __QL__
+
+#include "machine/ram.h"
+#include "machine/wd17xx.h"
+
+#define SCREEN_TAG "screen"
+
+#define M68008_TAG "ic18"
+#define I8749_TAG "ic24"
+#define I8051_TAG "i8051"
+#define ZX8301_TAG "ic22"
+#define ZX8302_TAG "ic23"
+#define WD1772_TAG "wd1772"
+
+#define ROMBANK_TAG "rombank"
+#define RAMBANK_TAG "rambank"
+
+#define PRINTER_TAG "printer"
+
+#define X1 XTAL_15MHz
+#define X2 XTAL_32_768kHz
+#define X3 XTAL_4_436MHz
+#define X4 XTAL_11MHz
+
+#define QL_CONFIG_PORT "QLCONFIG"
+#define DISK_TYPE_MASK 0x03
+#define DISK_TYPE_NONE 0x00
+#define DISK_TYPE_TRUMP 0x01
+#define DISK_TYPE_SANDY 0x02
+
+#define TRUMP_DRIVE1_MASK 0x01
+#define TRUMP_DRIVE0_MASK 0x02
+#define TRUMP_MOTOR_MASK 0x04
+#define TRUMP_SIDE_SHIFT 3
+#define TRUMP_SIDE_MASK (1 << TRUMP_SIDE_SHIFT)
+
+#define CART_ROM_BASE 0x0c000
+#define CART_ROM_END 0x0ffff
+#define TRUMP_ROM_BASE 0x10000
+#define TRUMP_ROM_LEN 0x08000
+#define TRUMP_ROM_END (TRUMP_ROM_BASE+(TRUMP_ROM_LEN-1))
+
+#define TRUMP_IO_BASE 0x1c000
+#define TRUMP_IO_LEN 0x04000
+#define TRUMP_IO_END (TRUMP_IO_BASE+(TRUMP_IO_LEN-1))
+
+#define SANDY_ROM_BASE 0x18000
+#define SANDY_IO_BASE 0xc3fc0
+#define SANDY_IO_LEN 0x00040
+#define SANDY_IO_END (SANDY_IO_BASE+(SANDY_IO_LEN-1))
+
+#define SANDY_DRIVE0_MASK 0x02
+#define SANDY_DRIVE1_MASK 0x04
+#define SANDY_MOTOR_MASK 0x08
+#define SANDY_SIDE_SHIFT 0
+#define SANDY_SIDE_MASK (1 << SANDY_SIDE_SHIFT)
+#define SANDY_DDEN_SHIFT 4
+#define SANDY_DDEN_MASK (1 << SANDY_DDEN_SHIFT)
+#define SANDY_PRINTER_STROBE 0x20
+#define SANDY_PRINTER_INTMASK 0x40
+
+
+class ql_state : public driver_device
+{
+public:
+ ql_state(const machine_config &mconfig, device_type type, const char *tag)
+ : driver_device(mconfig, type, tag),
+ m_maincpu(*this, M68008_TAG),
+ m_ipc(*this, I8749_TAG),
+ m_zx8301(*this, ZX8301_TAG),
+ m_zx8302(*this, ZX8302_TAG),
+ m_speaker(*this, SPEAKER_TAG),
+ m_mdv1(*this, MDV_1),
+ m_mdv2(*this, MDV_2),
+ m_ram(*this, RAM_TAG),
+ m_fdc(*this, WD1772_TAG),
+ m_printer(*this, PRINTER_TAG)
+ { }
+
+ required_device<cpu_device> m_maincpu;
+ required_device<cpu_device> m_ipc;
+ required_device<zx8301_device> m_zx8301;
+ required_device<zx8302_device> m_zx8302;
+ required_device<device_t> m_speaker;
+ required_device<microdrive_image_device> m_mdv1;
+ required_device<microdrive_image_device> m_mdv2;
+ required_device<ram_device> m_ram;
+ required_device<device_t> m_fdc;
+ required_device<printer_image_device> m_printer;
+
+ virtual void machine_start();
+ virtual void machine_reset();
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+
+ DECLARE_WRITE8_MEMBER( ipc_w );
+ DECLARE_WRITE8_MEMBER( ipc_port1_w );
+ DECLARE_WRITE8_MEMBER( ipc_port2_w );
+ DECLARE_READ8_MEMBER( ipc_port2_r );
+ DECLARE_READ8_MEMBER( ipc_t1_r );
+ DECLARE_READ8_MEMBER( ipc_bus_r );
+ DECLARE_READ8_MEMBER( ql_ram_r );
+ DECLARE_WRITE8_MEMBER( ql_ram_w );
+ DECLARE_WRITE_LINE_MEMBER( ql_baudx4_w );
+ DECLARE_WRITE_LINE_MEMBER( ql_comdata_w );
+ DECLARE_WRITE_LINE_MEMBER( zx8302_mdselck_w );
+ DECLARE_WRITE_LINE_MEMBER( zx8302_mdrdw_w );
+ DECLARE_WRITE_LINE_MEMBER( zx8302_erase_w );
+ DECLARE_WRITE_LINE_MEMBER( zx8302_raw1_w );
+ DECLARE_READ_LINE_MEMBER( zx8302_raw1_r );
+ DECLARE_WRITE_LINE_MEMBER( zx8302_raw2_w );
+ DECLARE_READ_LINE_MEMBER( zx8302_raw2_r );
+
+ /* IPC state */
+ UINT8 m_keylatch;
+ int m_ipl;
+ int m_comdata;
+ int m_baudx4;
+
+ // Trump card & Sandy superdisk
+ DECLARE_READ8_MEMBER( disk_io_r );
+ DECLARE_WRITE8_MEMBER( disk_io_w );
+ DECLARE_READ8_MEMBER( trump_card_rom_r );
+ DECLARE_READ8_MEMBER( cart_rom_r );
+
+ void trump_card_set_control(UINT8 data);
+ void sandy_set_control(UINT8 data);
+
+ int m_disk_type;
+ int m_disk_io_base;
+ UINT8 m_disk_io_byte;
+ UINT8 m_printer_char;
+};
+
+#endif