summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2022-05-14 13:13:29 +1000
committer Vas Crabb <vas@vastheman.com>2022-05-14 13:13:29 +1000
commitcd302118834f9d3022b27852299f74f8947c19e9 (patch)
treeec3377e73df0f1200d92965eb1317113db3fe6d2
parentc288646a53d25a90c91a8e6f67e300881e290b48 (diff)
tait8741.cpp: Removed old simulation of Gladiator MCUs (unused for a while now).
-rw-r--r--scripts/target/mame/arcade.lua2
-rw-r--r--src/mame/machine/tait8741.cpp334
-rw-r--r--src/mame/machine/tait8741.h89
3 files changed, 0 insertions, 425 deletions
diff --git a/scripts/target/mame/arcade.lua b/scripts/target/mame/arcade.lua
index d98ba656884..2c0a5914377 100644
--- a/scripts/target/mame/arcade.lua
+++ b/scripts/target/mame/arcade.lua
@@ -4008,8 +4008,6 @@ files {
MAME_DIR .. "src/mame/video/groundfx.cpp",
MAME_DIR .. "src/mame/drivers/gsword.cpp",
MAME_DIR .. "src/mame/includes/gsword.h",
- MAME_DIR .. "src/mame/machine/tait8741.cpp",
- MAME_DIR .. "src/mame/machine/tait8741.h",
MAME_DIR .. "src/mame/video/gsword.cpp",
MAME_DIR .. "src/mame/drivers/gunbustr.cpp",
MAME_DIR .. "src/mame/includes/gunbustr.h",
diff --git a/src/mame/machine/tait8741.cpp b/src/mame/machine/tait8741.cpp
deleted file mode 100644
index ae9c570b689..00000000000
--- a/src/mame/machine/tait8741.cpp
+++ /dev/null
@@ -1,334 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Jarek Parchanski
-/*
-
-Taito 8741 emulation
-
-1.The pair chip for the PIO and serial communication between MAIN CPU and the sub CPU
-2.The PIO for DIP SW and the controller reading.
-
-*/
-
-#include "emu.h"
-#include "tait8741.h"
-
-#define VERBOSE 0
-#include "logmacro.h"
-
-/****************************************************************************
-
-gladiatr and Great Swordsman set.
-
- -comminucation main and sub cpu
- -dipswitch and key handling x 2chip
-
- Total 4chip
-
- It was supposed from the schematic of gladiator.
- Now, because dump is done, change the MCU code of gladiator to the CPU emulation.
-
-****************************************************************************/
-
-#define CMD_IDLE 0
-#define CMD_08 1
-#define CMD_4a 2
-
-DEFINE_DEVICE_TYPE(TAITO8741_4PACK, taito8741_4pack_device, "taito8741_4pack", "I8741 MCU Simulation (Taito 4Pack)")
-
-taito8741_4pack_device::taito8741_4pack_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
- : device_t(mconfig, TAITO8741_4PACK, tag, owner, clock),
- m_port_handler_0_r(*this),
- m_port_handler_1_r(*this),
- m_port_handler_2_r(*this),
- m_port_handler_3_r(*this)
-{
-}
-
-/* for host data , write */
-void taito8741_4pack_device::hostdata_w(I8741 *st,int data)
-{
- st->toData = data;
- st->status |= 0x01;
-}
-
-/* from host data , read */
-int taito8741_4pack_device::hostdata_r(I8741 *st)
-{
- if( !(st->status & 0x02) ) return -1;
- st->status &= 0xfd;
- return st->fromData;
-}
-
-/* from host command , read */
-int taito8741_4pack_device::hostcmd_r(I8741 *st)
-{
- if(!(st->status & 0x04)) return -1;
- st->status &= 0xfb;
- return st->fromCmd;
-}
-
-
-/* TAITO8741 I8741 emulation */
-
-void taito8741_4pack_device::serial_rx(I8741 *st,uint8_t *data)
-{
- memcpy(st->rxd,data,8);
-}
-
-/* timer callback of serial tx finish */
-TIMER_CALLBACK_MEMBER( taito8741_4pack_device::serial_tx )
-{
- int num = param;
- I8741 *st = &m_taito8741[num];
- I8741 *sst;
-
- if( st->mode==TAITO8741_MASTER)
- st->serial_out = 1;
-
- st->txpoint = 1;
- if(st->connect >= 0 )
- {
- sst = &m_taito8741[st->connect];
- /* transfer data */
- serial_rx(sst,st->txd);
- LOG("8741-%d Serial data TX to %d\n",num,st->connect);
- if( sst->mode==TAITO8741_SLAVE)
- sst->serial_out = 1;
- }
-}
-
-void taito8741_4pack_device::device_reset()
-{
- for (int i=0;i<4;i++)
- {
- I8741 *st = &m_taito8741[i];
- st->number = i;
- st->status = 0x00;
- st->phase = 0;
- st->parallelselect = 0;
- st->txpoint = 1;
- st->pending4a = 0;
- st->serial_out = 0;
- st->coins = 0;
- memset(st->rxd,0,8);
- memset(st->txd,0,8);
- }
-}
-
-/* 8741 update */
-void taito8741_4pack_device::update(int num)
-{
- I8741 *st,*sst;
- int next = num;
- int data;
-
- do{
- num = next;
- st = &m_taito8741[num];
- if( st->connect != -1 )
- sst = &m_taito8741[st->connect];
- else sst = nullptr;
- next = -1;
- /* check pending command */
- switch(st->phase)
- {
- case CMD_08: /* serial data latch */
- if( st->serial_out)
- {
- st->status &= 0xfb; /* patch for gsword */
- st->phase = CMD_IDLE;
- next = num; /* continue this chip */
- }
- break;
- case CMD_4a: /* wait for syncronus ? */
- if(!st->pending4a)
- {
- hostdata_w(st,0);
- st->phase = CMD_IDLE;
- next = num; /* continue this chip */
- }
- break;
- case CMD_IDLE:
- /* ----- data in port check ----- */
- data = hostdata_r(st);
- if( data != -1 )
- {
- switch(st->mode)
- {
- case TAITO8741_MASTER:
- case TAITO8741_SLAVE:
- /* buffering transmit data */
- if( st->txpoint < 8 )
- {
-//if (st->txpoint == 0 && num==1 && data&0x80) logerror("Coin Put\n");
- st->txd[st->txpoint++] = data;
- }
- break;
- case TAITO8741_PORT:
- if( data & 0xf8)
- { /* ?? */
- }
- else
- { /* port select */
- st->parallelselect = data & 0x07;
- hostdata_w(st,port_read(st->number,st->parallelselect));
- }
- }
- }
- /* ----- new command fetch ----- */
- data = hostcmd_r(st);
- switch( data )
- {
- case -1: /* no command data */
- break;
- case 0x00: /* read from parallel port */
- hostdata_w(st,port_read(st->number,0));
- break;
- case 0x01: /* read receive buffer 0 */
- case 0x02: /* read receive buffer 1 */
- case 0x03: /* read receive buffer 2 */
- case 0x04: /* read receive buffer 3 */
- case 0x05: /* read receive buffer 4 */
- case 0x06: /* read receive buffer 5 */
- case 0x07: /* read receive buffer 6 */
-//if (data == 2 && num==0 && st->rxd[data-1]&0x80) logerror("Coin Get\n");
- hostdata_w(st,st->rxd[data-1]);
- break;
- case 0x08: /* latch received serial data */
- st->txd[0] = port_read(st->number,0);
- if( sst )
- {
- machine().scheduler().synchronize(timer_expired_delegate(FUNC(taito8741_4pack_device::serial_tx),this), num);
- st->serial_out = 0;
- st->status |= 0x04;
- st->phase = CMD_08;
- }
- break;
- case 0x0a: /* 8741-0 : set serial comminucation mode 'MASTER' */
- //st->mode = TAITO8741_MASTER;
- break;
- case 0x0b: /* 8741-1 : set serial comminucation mode 'SLAVE' */
- //st->mode = TAITO8741_SLAVE;
- break;
- case 0x1f: /* 8741-2,3 : ?? set parallelport mode ?? */
- case 0x3f: /* 8741-2,3 : ?? set parallelport mode ?? */
- case 0xe1: /* 8741-2,3 : ?? set parallelport mode ?? */
- st->mode = TAITO8741_PORT;
- st->parallelselect = 1; /* preset read number */
- break;
- case 0x62: /* 8741-3 : ? */
- break;
- case 0x4a: /* ?? syncronus with other cpu and return 00H */
- if( sst )
- {
- if(sst->pending4a)
- {
- sst->pending4a = 0; /* syncronus */
- hostdata_w(st,0); /* return for host */
- next = st->connect;
- }
- else st->phase = CMD_4a;
- }
- break;
- case 0x80: /* 8741-3 : return check code */
- hostdata_w(st,0x66);
- break;
- case 0x81: /* 8741-2 : return check code */
- hostdata_w(st,0x48);
- break;
- case 0xf0: /* GSWORD 8741-1 : initialize ?? */
- break;
- case 0x82: /* GSWORD 8741-2 unknown */
- break;
- }
- break;
- }
- }while(next>=0);
-}
-
-void taito8741_4pack_device::device_start()
-{
- m_port_handler_0_r.resolve_safe(0);
- m_port_handler_1_r.resolve_safe(0);
- m_port_handler_2_r.resolve_safe(0);
- m_port_handler_3_r.resolve_safe(0);
-
- for (int i = 0; i < 4; i++)
- {
- save_item(NAME(m_taito8741[i].toData), i);
- save_item(NAME(m_taito8741[i].fromData), i);
- save_item(NAME(m_taito8741[i].fromCmd), i);
- save_item(NAME(m_taito8741[i].status), i);
- save_item(NAME(m_taito8741[i].phase), i);
- save_item(NAME(m_taito8741[i].txd), i);
- save_item(NAME(m_taito8741[i].rxd), i);
- save_item(NAME(m_taito8741[i].parallelselect), i);
- save_item(NAME(m_taito8741[i].txpoint), i);
- //save_item(NAME(m_taito8741[i].pending4a), i); //currently initialized to 0, never changes
- save_item(NAME(m_taito8741[i].serial_out), i);
- //save_item(NAME(m_taito8741[i].coins), i); // currently initialized but otherwise unused
- };
-}
-
-/* read status port */
-int taito8741_4pack_device::status_r(int num)
-{
- I8741 *st = &m_taito8741[num];
- update(num);
- LOG("%s:8741-%d ST Read %02x\n",machine().describe_context(),num,st->status);
- return st->status;
-}
-
-/* read data port */
-int taito8741_4pack_device::data_r(int num)
-{
- I8741 *st = &m_taito8741[num];
- int ret = st->toData;
- st->status &= 0xfe;
- LOG("%s:8741-%d DATA Read %02x\n",machine().describe_context(),num,ret);
-
- /* update chip */
- update(num);
-
- switch( st->mode )
- {
- case TAITO8741_PORT: /* parallel data */
- hostdata_w(st,port_read(st->number,st->parallelselect));
- break;
- }
- return ret;
-}
-
-/* Write data port */
-void taito8741_4pack_device::data_w(int num, int data)
-{
- I8741 *st = &m_taito8741[num];
- LOG("%s:8741-%d DATA Write %02x\n",machine().describe_context(),num,data);
- st->fromData = data;
- st->status |= 0x02;
- /* update chip */
- update(num);
-}
-
-/* Write command port */
-void taito8741_4pack_device::command_w(int num, int data)
-{
- I8741 *st = &m_taito8741[num];
- LOG("%s:8741-%d CMD Write %02x\n",machine().describe_context(),num,data);
- st->fromCmd = data;
- st->status |= 0x04;
- /* update chip */
- update(num);
-}
-
-uint8_t taito8741_4pack_device::port_read(int num, int offset)
-{
- switch(num)
- {
- case 0 : return m_port_handler_0_r(offset);
- case 1 : return m_port_handler_1_r(offset);
- case 2 : return m_port_handler_2_r(offset);
- case 3 : return m_port_handler_3_r(offset);
- default : return 0;
- }
-}
diff --git a/src/mame/machine/tait8741.h b/src/mame/machine/tait8741.h
deleted file mode 100644
index e98bf5a78e8..00000000000
--- a/src/mame/machine/tait8741.h
+++ /dev/null
@@ -1,89 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Jarek Parchanski
-#ifndef MAME_MACHINE_TAITO8741_H
-#define MAME_MACHINE_TAITO8741_H
-
-#pragma once
-
-/****************************************************************************
- not used by anything. TODO: remove?
-****************************************************************************/
-
-/* NEC 8741 program mode */
-#define TAITO8741_MASTER 0
-#define TAITO8741_SLAVE 1
-#define TAITO8741_PORT 2
-
-class taito8741_4pack_device : public device_t
-{
-public:
- taito8741_4pack_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- auto port_handler_0_callback() { return m_port_handler_0_r.bind(); }
- auto port_handler_1_callback() { return m_port_handler_1_r.bind(); }
- auto port_handler_2_callback() { return m_port_handler_2_r.bind(); }
- auto port_handler_3_callback() { return m_port_handler_3_r.bind(); }
-
- void set_mode(int num, uint8_t mode) { m_taito8741[num].mode = mode; }
- void set_connect(int num, int conn) { m_taito8741[num].connect = conn; }
-
- uint8_t read_0(offs_t offset) { if(offset&1) return status_r(0); else return data_r(0); }
- void write_0(offs_t offset, uint8_t data) { if(offset&1) command_w(0,data); else data_w(0,data); }
- uint8_t read_1(offs_t offset) { if(offset&1) return status_r(1); else return data_r(1); }
- void write_1(offs_t offset, uint8_t data) { if(offset&1) command_w(1,data); else data_w(1,data); }
- uint8_t read_2(offs_t offset) { if(offset&1) return status_r(2); else return data_r(2); }
- void write_2(offs_t offset, uint8_t data) { if(offset&1) command_w(2,data); else data_w(2,data); }
- uint8_t read_3(offs_t offset) { if(offset&1) return status_r(3); else return data_r(3); }
- void write_3(offs_t offset, uint8_t data) { if(offset&1) command_w(3,data); else data_w(3,data); }
-
- TIMER_CALLBACK_MEMBER( serial_tx );
- void update(int num);
- int status_r(int num);
- int data_r(int num);
- void data_w(int num, int data);
- void command_w(int num, int data);
-
- uint8_t port_read(int num, int offset);
-
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
-private:
- struct I8741 {
- int number;
- uint8_t toData; /* to host data */
- uint8_t fromData; /* from host data */
- uint8_t fromCmd; /* from host command */
- uint8_t status; /* b0 = rd ready,b1 = wd full,b2 = cmd ?? */
- uint8_t mode;
- uint8_t phase;
- uint8_t txd[8];
- uint8_t rxd[8];
- uint8_t parallelselect;
- uint8_t txpoint;
- int connect;
- uint8_t pending4a;
- int serial_out;
- int coins;
- };
-
- void hostdata_w(I8741 *st,int data);
- int hostdata_r(I8741 *st);
- int hostcmd_r(I8741 *st);
- void serial_rx(I8741 *st,uint8_t *data);
-
- // internal state
- I8741 m_taito8741[4];
-
- devcb_read8 m_port_handler_0_r;
- devcb_read8 m_port_handler_1_r;
- devcb_read8 m_port_handler_2_r;
- devcb_read8 m_port_handler_3_r;
-};
-
-
-DECLARE_DEVICE_TYPE(TAITO8741_4PACK, taito8741_4pack_device)
-
-#endif // MAME_MACHINE_TAITO8741_H