summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/includes/mpu4.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/includes/mpu4.h')
-rw-r--r--src/mame/includes/mpu4.h436
1 files changed, 0 insertions, 436 deletions
diff --git a/src/mame/includes/mpu4.h b/src/mame/includes/mpu4.h
deleted file mode 100644
index 92be9cf5cc3..00000000000
--- a/src/mame/includes/mpu4.h
+++ /dev/null
@@ -1,436 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-
-#include "machine/6821pia.h"
-#include "machine/6840ptm.h"
-#include "machine/nvram.h"
-#include "machine/timer.h"
-
-#include "cpu/m6809/m6809.h"
-#include "sound/ay8910.h"
-#include "sound/okim6376.h"
-#include "sound/ym2413.h"
-#include "sound/upd7759.h"
-#include "machine/steppers.h"
-#include "machine/roc10937.h"
-#include "machine/meters.h"
-
-#include "machine/bacta_datalogger.h"
-
-#include "emupal.h"
-
-
-#define MPU4_MASTER_CLOCK XTAL(6'880'000)
-#define VIDEO_MASTER_CLOCK XTAL(10'000'000)
-
-#ifdef MAME_DEBUG
-#define MPU4VIDVERBOSE 1
-#else
-#define MPU4VIDVERBOSE 0
-#endif
-
-#define LOGSTUFF(x) do { if (MPU4VIDVERBOSE) logerror x; } while (0)
-
-
-
-#ifdef MAME_DEBUG
-#define MPU4VERBOSE 1
-#else
-#define MPU4VERBOSE 0
-#endif
-
-#define LOG(x) do { if (MPU4VERBOSE) logerror x; } while (0)
-#define LOG_CHR(x) do { if (MPU4VERBOSE) logerror x; } while (0)
-#define LOG_CHR_FULL(x) do { if (MPU4VERBOSE) logerror x; } while (0)
-#define LOG_IC3(x) do { if (MPU4VERBOSE) logerror x; } while (0)
-#define LOG_IC8(x) do { if (MPU4VERBOSE) logerror x; } while (0)
-#define LOG_SS(x) do { if (MPU4VERBOSE) logerror x; } while (0)
-
-
-
-
-
-static const uint8_t reel_mux_table[8]= {0,4,2,6,1,5,3,7};//include 7, although I don't think it's used, this is basically a wire swap
-static const uint8_t reel_mux_table7[8]= {3,1,5,6,4,2,0,7};
-
-static const uint8_t bwb_chr_table_common[10]= {0x00,0x04,0x04,0x0c,0x0c,0x1c,0x14,0x2c,0x5c,0x2c};
-
-//reel info
-#define STANDARD_REEL 0 // As originally designed 3/4 reels
-#define FIVE_REEL_5TO8 1 // Interfaces to meter port, allows some mechanical metering, but there is significant 'bounce' in the extra reel
-#define FIVE_REEL_8TO5 2 // Mounted backwards for space reasons, but different board
-#define FIVE_REEL_3TO6 3 // Connected to the centre of the meter connector, taking up meters 3 to 6
-#define SIX_REEL_1TO8 4 // Two reels on the meter drives
-#define SIX_REEL_5TO8 5 // Like FIVE_REEL_5TO8, but with an extra reel elsewhere
-#define SEVEN_REEL 6 // Mainly club machines, significant reworking of reel hardware
-#define FLUTTERBOX 7 // A fan feature using a reel mux-like setup, but not actually a reel
-
-//Lamp extension
-#define NO_EXTENDER 0 // As originally designed
-#define SMALL_CARD 1
-#define LARGE_CARD_A 2 //96 Lamps
-#define LARGE_CARD_B 3 //96 Lamps, 16 LEDs - as used by BwB
-#define LARGE_CARD_C 4 //Identical to B, no built in LED support
-
-//LED cards
-#define CARD_A 1
-#define CARD_B 2
-#define CARD_C 3
-#define SIMPLE_CARD 4
-
-
-//Hopper info
-#define TUBES 0
-#define HOPPER_DUART_A 1
-#define HOPPER_DUART_B 2
-#define HOPPER_DUART_C 3
-#define HOPPER_NONDUART_A 4
-#define HOPPER_NONDUART_B 5
-
-/* Lookup table for CHR data */
-
-struct mpu4_chr_table
-{
- uint8_t call;
- uint8_t response;
-};
-
-struct bwb_chr_table//dynamically populated table for BwB protection
-{
- uint8_t response;
-};
-
-
-class mpu4_state : public driver_device
-{
-public:
- mpu4_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_vfd(*this, "vfd")
- , m_6840ptm(*this, "ptm_ic2")
- , m_ptm_ic3ss(*this, "ptm_ic3ss")
- , m_pia3(*this, "pia_ic3")
- , m_pia4(*this, "pia_ic4")
- , m_pia5(*this, "pia_ic5")
- , m_pia6(*this, "pia_ic6")
- , m_pia7(*this, "pia_ic7")
- , m_pia8(*this, "pia_ic8")
- , m_pia_ic4ss(*this, "pia_ic4ss")
- , m_port_mux(*this, {"ORANGE1", "ORANGE2", "BLACK1", "BLACK2", "ORANGE1", "ORANGE2", "DIL1", "DIL2"})
- , m_aux1_port(*this, "AUX1")
- , m_aux2_port(*this, "AUX2")
- , m_bank1(*this, "bank1")
- , m_msm6376(*this, "msm6376")
- , m_reel(*this, "reel%u", 0U)
- , m_palette(*this, "palette")
- , m_meters(*this, "meters")
- , m_ym2413(*this, "ym2413")
- , m_ay8913(*this, "ay8913")
- , m_dataport(*this, "dataport")
- , m_lamps(*this, "lamp%u", 0U)
- , m_mpu4leds(*this, "mpu4led%u", 0U)
- , m_digits(*this, "digit%u", 0U)
- , m_triacs(*this, "triac%u", 0U)
- { }
-
- void init_m4default_alt();
- void init_crystali();
- void init_m4tst2();
- void init_crystal();
- void init_m_frkstn();
- void init_m4default_big();
- void init_m4default();
- void init_m4default_banks();
- void init_m4default_reels();
- void init_m4_low_volt_alt();
- void init_m4_aux1_invert();
- void init_m4_aux2_invert();
- void init_m4_door_invert();
- void init_m4_five_reel_std();
- void init_m4_five_reel_rev();
- void init_m4_five_reel_alt();
- void init_m4_six_reel_std();
- void init_m4_six_reel_alt();
- void init_m4_seven_reel();
- void init_m4_small_extender();
- void init_m4_large_extender_a();
- void init_m4_large_extender_b();
- void init_m4_large_extender_c();
- void init_m4_hopper_tubes();
- void init_m4_hopper_duart_a();
- void init_m4_hopper_duart_b();
- void init_m4_hopper_duart_c();
- void init_m4_hopper_nonduart_a();
- void init_m4_hopper_nonduart_b();
- void init_m4_led_a();
- void init_m4_led_b();
- void init_m4_led_c();
- void init_m4_led_simple();
- void init_m4_andycp10c();
- void init_m_blsbys();
- void init_m_oldtmr();
- void init_m4tst();
- void init_m_ccelbr();
- void init_m4gambal();
- void init_m4debug();
- void init_m4_showstring();
- void init_m4_showstring_mod4yam();
- void init_m4_debug_mod4yam();
- void init_m4_showstring_mod2();
- void init_m4_showstring_big();
- void init_connect4();
- void init_m4altreels();//legacy, will be removed once things are sorted out
- void init_m_grtecp();//legacy, will be removed once things are sorted out RE: CHR
- void init_m4tenten();
- void init_m4actbnk();
- void init_m4actclb();
- void init_m4actpak();
- void init_m4addr();
- void init_m4aao();
- void init_m4alladv();
- void init_m4alpha();
- void init_m4andycp();
- void init_m4andybt();
- void init_m4andyfh();
- void init_m4andyge();
- void init_m4apachg();
-
- void bwboki(machine_config &config);
- void mod2(machine_config &config);
- void mod2_alt(machine_config &config);
- void mod4oki(machine_config &config);
- void mod4oki_5r(machine_config &config);
- void mod4oki_alt(machine_config &config);
- void mod4yam(machine_config &config);
- void mpu4_common(machine_config &config);
- void mpu4_common2(machine_config &config);
- void mpu4crys(machine_config &config);
- void mpu4_std_3reel(machine_config &config);
- void mpu4_type2_3reel(machine_config &config);
- void mpu4_type3_3reel(machine_config &config);
- void mpu4_type4_3reel(machine_config &config);
- void mpu4_bwb_3reel(machine_config &config);
- void mpu4_std_4reel(machine_config &config);
- void mpu4_type2_4reel(machine_config &config);
- void mpu4_type3_4reel(machine_config &config);
- void mpu4_type4_4reel(machine_config &config);
- void mpu4_bwb_4reel(machine_config &config);
- void mpu4_std_5reel(machine_config &config);
- void mpu4_type2_5reel(machine_config &config);
- void mpu4_type3_5reel(machine_config &config);
- void mpu4_type4_5reel(machine_config &config);
- void mpu4_bwb_5reel(machine_config &config);
- void mpu4_std_6reel(machine_config &config);
- void mpu4_type2_6reel(machine_config &config);
- void mpu4_type3_6reel(machine_config &config);
- void mpu4_type4_6reel(machine_config &config);
- void mpu4_bwb_6reel(machine_config &config);
- void mpu4_std_7reel(machine_config &config);
- void mpu4_type2_7reel(machine_config &config);
- void mpu4_type3_7reel(machine_config &config);
- void mpu4_type4_7reel(machine_config &config);
- void mpu4_bwb_7reel(machine_config &config);
- void mpu4base(machine_config &config);
-
-protected:
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
- void mpu4_6809_map(address_map &map);
- void mpu4_memmap(address_map &map);
- void lamp_extend_small(int data);
- void lamp_extend_large(int data,int column,int active);
- void led_write_extender(int latch, int data, int column);
- void update_meters();
- void ic23_update();
- void ic24_output(int data);
- void ic24_setup();
- void update_ay(device_t *device);
- void mpu4_install_mod4yam_space(address_space &space);
- void mpu4_install_mod4oki_space(address_space &space);
- void mpu4_install_mod4bwb_space(address_space &space);
- void mpu4_config_common();
- DECLARE_MACHINE_START(mod2);
- DECLARE_MACHINE_RESET(mpu4);
- DECLARE_MACHINE_START(mpu4yam);
- DECLARE_MACHINE_START(mpu4oki);
- DECLARE_MACHINE_START(mpu4oki_alt);
- DECLARE_MACHINE_START(mod4oki_5r);
- DECLARE_MACHINE_START(mod2_alt);
- DECLARE_MACHINE_START(mpu4bwb);
- DECLARE_MACHINE_START(mpu4cry);
- TIMER_DEVICE_CALLBACK_MEMBER(gen_50hz);
- template <unsigned N> DECLARE_WRITE_LINE_MEMBER(reel_optic_cb) { if (state) m_optic_pattern |= (1 << N); else m_optic_pattern &= ~(1 << N); }
- uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
- {
- return 0;
- }
-
- void bankswitch_w(uint8_t data);
- uint8_t bankswitch_r();
- void bankset_w(uint8_t data);
- void characteriser_w(offs_t offset, uint8_t data);
- uint8_t characteriser_r(address_space &space, offs_t offset);
- void bwb_characteriser_w(offs_t offset, uint8_t data);
- uint8_t bwb_characteriser_r(offs_t offset);
- void mpu4_ym2413_w(offs_t offset, uint8_t data);
- uint8_t mpu4_ym2413_r(offs_t offset);
- uint8_t crystal_sound_r();
- void crystal_sound_w(uint8_t data);
- void ic3ss_w(offs_t offset, uint8_t data);
- DECLARE_WRITE_LINE_MEMBER(cpu0_irq);
- DECLARE_WRITE_LINE_MEMBER(ic2_o1_callback);
- DECLARE_WRITE_LINE_MEMBER(ic2_o2_callback);
- DECLARE_WRITE_LINE_MEMBER(ic2_o3_callback);
- void pia_ic3_porta_w(uint8_t data);
- void pia_ic3_portb_w(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER(pia_ic3_ca2_w);
- DECLARE_WRITE_LINE_MEMBER(pia_ic3_cb2_w);
- void pia_ic4_porta_w(uint8_t data);
- void pia_ic4_portb_w(uint8_t data);
- uint8_t pia_ic4_portb_r();
- DECLARE_WRITE_LINE_MEMBER(pia_ic4_ca2_w);
- DECLARE_WRITE_LINE_MEMBER(pia_ic4_cb2_w);
- uint8_t pia_ic5_porta_r();
- void pia_ic5_porta_w(uint8_t data);
- void pia_ic5_portb_w(uint8_t data);
- uint8_t pia_ic5_portb_r();
- DECLARE_WRITE_LINE_MEMBER(pia_ic5_ca2_w);
- DECLARE_WRITE_LINE_MEMBER(pia_ic5_cb2_w);
- void pia_ic6_portb_w(uint8_t data);
- void pia_ic6_porta_w(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER(pia_ic6_ca2_w);
- DECLARE_WRITE_LINE_MEMBER(pia_ic6_cb2_w);
- void pia_ic7_porta_w(uint8_t data);
- void pia_ic7_portb_w(uint8_t data);
- uint8_t pia_ic7_portb_r();
- DECLARE_WRITE_LINE_MEMBER(pia_ic7_ca2_w);
- DECLARE_WRITE_LINE_MEMBER(pia_ic7_cb2_w);
- uint8_t pia_ic8_porta_r();
- void pia_ic8_portb_w(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER(pia_ic8_ca2_w);
- DECLARE_WRITE_LINE_MEMBER(pia_ic8_cb2_w);
- void pia_gb_porta_w(uint8_t data);
- void pia_gb_portb_w(uint8_t data);
- uint8_t pia_gb_portb_r();
- DECLARE_WRITE_LINE_MEMBER(pia_gb_ca2_w);
- DECLARE_WRITE_LINE_MEMBER(pia_gb_cb2_w);
-
- DECLARE_WRITE_LINE_MEMBER(dataport_rxd);
-
- required_device<cpu_device> m_maincpu;
- optional_device<rocvfd_device> m_vfd;
- optional_device<ptm6840_device> m_6840ptm;
- optional_device<ptm6840_device> m_ptm_ic3ss;
- optional_device<pia6821_device> m_pia3;
- optional_device<pia6821_device> m_pia4;
- optional_device<pia6821_device> m_pia5;
- optional_device<pia6821_device> m_pia6;
- optional_device<pia6821_device> m_pia7;
- optional_device<pia6821_device> m_pia8;
- optional_device<pia6821_device> m_pia_ic4ss;
- required_ioport_array<8> m_port_mux;
- required_ioport m_aux1_port;
- required_ioport m_aux2_port;
- optional_memory_bank m_bank1;
- optional_device<okim6376_device> m_msm6376;
- optional_device_array<stepper_device, 8> m_reel;
- optional_device<palette_device> m_palette;
- required_device<meters_device> m_meters;
- optional_device<ym2413_device> m_ym2413;
- optional_device<ay8913_device> m_ay8913;
- optional_device<bacta_datalogger_device> m_dataport;
-
- // not all systems have this many lamps/LEDs/digits but the driver is too much of a mess to split up now
-
- // 0-63 are on PIA IC3 port A (always present)
- // 64-127 are on PIA IC3 port B (always present)
- // 128-132 136-140 144-148 152-156 160-164 168-172 176-180 184-188 are on small lamp extender
- // 128-255 are on large lamp externders
- output_finder<256> m_lamps;
-
- // 0-63 are on PIA IC4 port A (always present)
- // 0-143 are on card B (possibly incorrectly mapped?)
- // 64-127 are on card C
- // 0-127 are on large card B
- output_finder<144> m_mpu4leds;
-
- // 0-7 are on PIA IC4 port A with no LED extender
- // 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120, 128, 136 are on card B (possible incorrectly mapped?)
- // 8-15 are on card C
- // 8-9 are mapped to lamp lines for Connect 4
- // 0-15 are on large card B
- output_finder<144> m_digits;
-
- output_finder<8> m_triacs;
-
- enum
- {
- TIMER_IC24
- };
-
- int m_mod_number;
- int m_mmtr_data;
- int m_ay8913_address;
- int m_serial_data;
- int m_signal_50hz;
- int m_ic4_input_b;
- int m_aux1_input;
- int m_aux2_input;
- int m_IC23G1;
- int m_IC23G2A;
- int m_IC23G2B;
- int m_IC23GC;
- int m_IC23GB;
- int m_IC23GA;
- int m_prot_col;
- int m_lamp_col;
- int m_init_col;
- int m_reel_flag;
- int m_ic23_active;
- int m_led_lamp;
- int m_link7a_connected;
- int m_low_volt_detect_disable;
- int m_aux1_invert;
- int m_aux2_invert;
- int m_door_invert;
- emu_timer *m_ic24_timer;
- int m_expansion_latch;
- int m_global_volume;
- int m_input_strobe;
- uint8_t m_lamp_strobe;
- uint8_t m_lamp_strobe2;
- uint8_t m_lamp_strobe_ext;
- uint8_t m_lamp_strobe_ext_persistence;
- uint8_t m_led_strobe;
- uint8_t m_ay_data;
- int m_optic_pattern;
-
- int m_active_reel;
- int m_remote_meter;
- int m_reel_mux;
- int m_lamp_extender;
- int m_last_b7;
- int m_last_latch;
- int m_lamp_sense;
- int m_card_live;
- int m_led_extender;
- int m_bwb_bank;
- int m_chr_state;
- int m_chr_counter;
- int m_chr_value;
- int m_bwb_return;
- int m_pageval;
- int m_pageset;
- int m_hopper;
- int m_reels;
- int m_chrdata;
- int m_t1;
- int m_t3l;
- int m_t3h;
- uint8_t m_numbanks;
- mpu4_chr_table* m_current_chr_table;
- const bwb_chr_table* m_bwb_chr_table1;
-};
-
-INPUT_PORTS_EXTERN( mpu4 );