mirror of
https://github.com/holub/mame
synced 2025-04-26 02:07:14 +03:00
z80: use LOGMASKED instead of a macro for each log type,
xtal: add 3.58MHz
This commit is contained in:
parent
b9aecfae45
commit
580e0a9638
@ -16,8 +16,6 @@
|
||||
//#define VERBOSE (LOG_INT)
|
||||
#include "logmacro.h"
|
||||
|
||||
#define LOGINT(...) LOGMASKED(LOG_INT, __VA_ARGS__)
|
||||
|
||||
|
||||
// device type definition
|
||||
DEFINE_DEVICE_TYPE(NSC800, nsc800_device, "nsc800", "National Semiconductor NSC800")
|
||||
|
@ -26,7 +26,6 @@ TODO:
|
||||
//#define VERBOSE (LOG_INT)
|
||||
#include "logmacro.h"
|
||||
|
||||
#define LOGINT(...) LOGMASKED(LOG_INT, __VA_ARGS__)
|
||||
|
||||
//**************************************************************************
|
||||
// GLOBAL VARIABLES
|
||||
|
@ -33,8 +33,6 @@ TODO:
|
||||
#define VERBOSE (LOG_UNDOC)
|
||||
#include "logmacro.h"
|
||||
|
||||
#define LOGINT(...) LOGMASKED(LOG_INT, __VA_ARGS__)
|
||||
#define LOGUNDOC(...) LOGMASKED(LOG_UNDOC, __VA_ARGS__)
|
||||
|
||||
bool z80_device::tables_initialised = false;
|
||||
u8 z80_device::SZ[] = {}; // zero and sign flags
|
||||
@ -468,14 +466,15 @@ void z80_device::set_f(u8 f)
|
||||
|
||||
void z80_device::illegal_1()
|
||||
{
|
||||
LOGUNDOC("ill. opcode $%02x $%02x ($%04x)\n",
|
||||
m_opcodes.read_byte(translate_memory_address((PC - 1) & 0xffff)), m_opcodes.read_byte(translate_memory_address(PC)), PC - 1);
|
||||
LOGMASKED(LOG_UNDOC, "ill. opcode $%02x $%02x ($%04x)\n",
|
||||
m_opcodes.read_byte(translate_memory_address((PC - 1) & 0xffff)),
|
||||
m_opcodes.read_byte(translate_memory_address(PC)), PC - 1);
|
||||
}
|
||||
|
||||
void z80_device::illegal_2()
|
||||
{
|
||||
LOGUNDOC("ill. opcode $ed $%02x\n",
|
||||
m_opcodes.read_byte(translate_memory_address((PC - 1) & 0xffff)));
|
||||
LOGMASKED(LOG_UNDOC, "ill. opcode $ed $%02x\n",
|
||||
m_opcodes.read_byte(translate_memory_address((PC - 1) & 0xffff)));
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -148,7 +148,7 @@ macro ret_cond
|
||||
|
||||
macro retn
|
||||
call pop
|
||||
PC = TDAT; LOGINT("RETN m_iff1:%d m_iff2:%d\n", m_iff1, m_iff2); WZ = PC; m_iff1 = m_iff2;
|
||||
PC = TDAT; LOGMASKED(LOG_INT, "RETN m_iff1:%d m_iff2:%d\n", m_iff1, m_iff2); WZ = PC; m_iff1 = m_iff2;
|
||||
|
||||
macro z80n:retn
|
||||
m_out_retn_seen_cb(0);
|
||||
@ -159,7 +159,7 @@ macro z80n:retn
|
||||
} else {
|
||||
PC = TDAT;
|
||||
}
|
||||
LOGINT("RETN m_iff1:%d m_iff2:%d\n", m_iff1, m_iff2); WZ = PC; m_iff1 = m_iff2;
|
||||
LOGMASKED(LOG_INT, "RETN m_iff1:%d m_iff2:%d\n", m_iff1, m_iff2); WZ = PC; m_iff1 = m_iff2;
|
||||
|
||||
macro reti
|
||||
call pop
|
||||
@ -536,7 +536,7 @@ macro take_interrupt
|
||||
// fetch the IRQ vector
|
||||
device_z80daisy_interface *intf = daisy_get_irq_device();
|
||||
m_tmp_irq_vector = (intf != nullptr) ? intf->z80daisy_irq_ack() : standard_irq_callback(0, m_pc.w);
|
||||
LOGINT("single INT m_tmp_irq_vector $%02x\n", m_tmp_irq_vector);
|
||||
LOGMASKED(LOG_INT, "single INT m_tmp_irq_vector $%02x\n", m_tmp_irq_vector);
|
||||
}
|
||||
// 'interrupt latency' cycles
|
||||
+ 2
|
||||
@ -553,10 +553,10 @@ macro take_interrupt
|
||||
TADR = m_tmp_irq_vector;
|
||||
call rm16
|
||||
PC = TDAT;
|
||||
LOGINT("IM2 [$%04x] = $%04x\n", m_tmp_irq_vector, PC);
|
||||
LOGMASKED(LOG_INT, "IM2 [$%04x] = $%04x\n", m_tmp_irq_vector, PC);
|
||||
} else if (m_im == 1) {
|
||||
// Interrupt mode 1. RST 38h
|
||||
LOGINT("'%s' IM1 $0038\n", tag());
|
||||
LOGMASKED(LOG_INT, "'%s' IM1 $0038\n", tag());
|
||||
// RST $38
|
||||
+ 5
|
||||
TDAT = PC;
|
||||
@ -566,7 +566,7 @@ macro take_interrupt
|
||||
/* Interrupt mode 0. We check for CALL and JP instructions,
|
||||
if neither of these were found we assume a 1 byte opcode
|
||||
was placed on the databus */
|
||||
LOGINT("IM0 $%04x\n", m_tmp_irq_vector);
|
||||
LOGMASKED(LOG_INT, "IM0 $%04x\n", m_tmp_irq_vector);
|
||||
|
||||
// check for nop
|
||||
if (m_tmp_irq_vector != 0x00) {
|
||||
@ -580,16 +580,16 @@ macro take_interrupt
|
||||
// JP $xxxx cycles
|
||||
+ 10
|
||||
PC = m_tmp_irq_vector & 0xffff;
|
||||
} else if (m_tmp_irq_vector == 0xfb) {
|
||||
// rst (or other opcodes?)
|
||||
+ 4
|
||||
ei();
|
||||
} else if ((m_tmp_irq_vector & 0xc7) == 0xc7) {
|
||||
// RST $xx cycles
|
||||
+ 5
|
||||
TDAT = PC;
|
||||
call wm16_sp
|
||||
PC = m_tmp_irq_vector & 0x0038;
|
||||
} else if (m_tmp_irq_vector == 0xfb) {
|
||||
// EI cycles
|
||||
+ 4
|
||||
ei();
|
||||
} else {
|
||||
logerror("take_interrupt: unexpected opcode in im0 mode: 0x%02x\n", m_tmp_irq_vector);
|
||||
}
|
||||
|
@ -15,7 +15,6 @@
|
||||
//#define VERBOSE (LOG_INT)
|
||||
#include "logmacro.h"
|
||||
|
||||
#define LOGINT(...) LOGMASKED(LOG_INT, __VA_ARGS__)
|
||||
|
||||
DEFINE_DEVICE_TYPE(Z80N, z80n_device, "z80n", "Z80N")
|
||||
|
||||
|
@ -102,6 +102,7 @@ const double XTAL::known_xtals[] = {
|
||||
3'579'000, // 3.579_MHz_XTAL BeebOPL
|
||||
3'579'545, // 3.579545_MHz_XTAL NTSC color subcarrier, extremely common, used on 100's of PCBs (Keytronic custom part #48-300-010 is equivalent)
|
||||
3'579'575, // 3.579575_MHz_XTAL Atari 2600 NTSC
|
||||
3'580'000, // 3.58_MHz_XTAL Resonator - Ritam Monty
|
||||
3'680'000, // 3.68_MHz_XTAL Resonator - Baud rate clock for the 6551 in the MTU-130
|
||||
3'686'400, // 3.6864_MHz_XTAL Baud rate clock for MC68681 and similar UARTs
|
||||
3'840'000, // 3.84_MHz_XTAL Fairlight CMI Alphanumeric Keyboard
|
||||
|
@ -71,7 +71,7 @@ known chips:
|
||||
@A89 HD38820 1984, Bandai Pair Match (PT-460) (2/2)
|
||||
|
||||
A34 HD44801 1981, SciSys Mini Chess -> saitek/minichess.cpp
|
||||
A50 HD44801 1981, CXG Sensor Computachess -> cxg/scptchess.cpp
|
||||
A50 HD44801 1981, CXG Sensor Computachess -> cxg/computachess.cpp
|
||||
A75 HD44801 1982, Alpha 8201 protection MCU -> alpha/alpha8201.*
|
||||
*A85 HD44801 1982, SciSys Travel Sensor / Travel Mate / Chesspartner 5000/6000
|
||||
*A92 HD44801 1982, SciSys Play Bridge Computer
|
||||
@ -79,7 +79,7 @@ known chips:
|
||||
B42 HD44801 1983, Alpha 8303 protection MCU (see 8201)
|
||||
*B43 HD44801 1983, Alpha 8304 protection MCU (see 8201)
|
||||
C57 HD44801 1985, Alpha 8505 protection MCU (see 8201)
|
||||
C89 HD44801 1985, CXG Portachess (1985 version) -> cxg/scptchess.cpp
|
||||
C89 HD44801 1985, CXG Portachess (1985 version) -> cxg/computachess.cpp
|
||||
|
||||
*A86 HD44820 1983, Chess King Pocket Micro / Mighty Midget
|
||||
*B63 HD44820 1985, CXG Pocket Chess (12 buttons)
|
||||
|
@ -19,7 +19,7 @@ is blue and says Master Monty at the top. Both of these versions are hand-upgra
|
||||
by adding chips and wires to the inside of the game.
|
||||
|
||||
Hardware notes:
|
||||
- Z80 @ ~3.58MHz
|
||||
- Z80, 3.58MT ceramic resonator
|
||||
- 2KB SRAM, 16KB ROM(32KB on mmonty)
|
||||
- 2*16KB ROM sockets for vocabulary expansion
|
||||
- 2*SED1503F, 40*32 LCD screen, beeper
|
||||
@ -66,7 +66,7 @@ protected:
|
||||
private:
|
||||
required_device<z80_device> m_maincpu;
|
||||
required_device_array<sed1503_device, 2> m_lcd;
|
||||
required_device<dac_bit_interface> m_dac;
|
||||
required_device<dac_1bit_device> m_dac;
|
||||
required_ioport_array<6> m_inputs;
|
||||
|
||||
u64 m_lcd_data[32] = { };
|
||||
@ -233,7 +233,7 @@ INPUT_PORTS_END
|
||||
void monty_state::monty(machine_config &config)
|
||||
{
|
||||
// Basic machine hardware
|
||||
Z80(config, m_maincpu, 3.579545_MHz_XTAL); // Ceramic resonator labeled 3.58MT
|
||||
Z80(config, m_maincpu, 3.58_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &monty_state::monty_mem);
|
||||
m_maincpu->set_addrmap(AS_IO, &monty_state::monty_io);
|
||||
m_maincpu->halt_cb().set(FUNC(monty_state::halt_changed));
|
||||
|
Loading…
Reference in New Issue
Block a user