From 02dd71d563390ed008cd61634faeb12a5e2d161c Mon Sep 17 00:00:00 2001 From: Andrei Holub Date: Wed, 1 Jan 2025 13:32:11 -0500 Subject: [PATCH] no waits, no exp, no ISA --- src/devices/cpu/z80/z80.lst | 169 ++++++++++++++++----------------- src/mame/sinclair/byte.cpp | 2 +- src/mame/sinclair/chloe.cpp | 2 +- src/mame/sinclair/pentagon.cpp | 2 +- src/mame/sinclair/scorpion.cpp | 2 +- src/mame/sinclair/spec128.cpp | 43 +++++---- src/mame/sinclair/specnext.cpp | 2 +- src/mame/sinclair/specpls3.cpp | 28 +++--- src/mame/sinclair/spectrum.cpp | 71 +++++--------- src/mame/sinclair/spectrum.h | 6 +- src/mame/sinclair/sprinter.cpp | 12 ++- src/mame/sinclair/tsconf.cpp | 2 +- 12 files changed, 160 insertions(+), 181 deletions(-) diff --git a/src/devices/cpu/z80/z80.lst b/src/devices/cpu/z80/z80.lst index 360401242cc..b41eb3fb345 100644 --- a/src/devices/cpu/z80/z80.lst +++ b/src/devices/cpu/z80/z80.lst @@ -8,8 +8,7 @@ macro nomreq_addr + 1 macro nomreq_ir %cycles - TADR = (m_i << 8) | (m_r2 & 0x80) | (m_r & 0x7f); - %cycles * call nomreq_addr + + %cycles macro in m_iorq_cycles !! TDAT8 = m_io.read_interruptible(TADR); @@ -22,7 +21,7 @@ macro rm macro rm_reg call rm - call nomreq_addr + + 1 macro rm16 call rm @@ -45,9 +44,7 @@ macro wm16_sp m_memrq_cycles !! stack_write(SP, TDAT_L); macro rop - m_m1_cycles-2 !! TDAT8 = opcode_read(); - m_refresh_cb((I << 8) | (R2 & 0x80) | (R & 0x7f), 0x00, 0xff); - + 2 + m_m1_cycles !! TDAT8 = opcode_read(); PC++; R++; Q = QT; QT = YF | XF; macro r800:rop @@ -101,7 +98,7 @@ macro jp_cond macro jr call arg TADR = PC-1; - 5 * call nomreq_addr + + 5 PC += (s8)TDAT8; WZ = PC; m_branch_cb(true); @@ -121,7 +118,7 @@ macro jr_cond macro arg16_call call arg16 m_ea = TDAT; TADR = PC-1; - call nomreq_addr + + 1 WZ = m_ea; TDAT = PC; call wm16_sp PC = m_ea; @@ -129,7 +126,7 @@ macro arg16_call macro r800:arg16_call call arg16 m_ea = TDAT; TADR = PC-1; - call nomreq_addr + + 1 WZ = m_ea; TDAT = PC; call wm16_sp PC = m_ea; @@ -207,7 +204,7 @@ macro rrd TADR = HL; call rm WZ = HL+1; - 4 * call nomreq_addr + + 4 TDAT_H = TDAT8; TDAT8 = (TDAT8 >> 4) | (A << 4); call wm A = (A & 0xf0) | (TDAT_H & 0x0f); set_f((F & CF) | SZP[A]); @@ -216,7 +213,7 @@ macro rld TADR = HL; call rm WZ = HL+1; - 4 * call nomreq_addr + + 4 TDAT_H = TDAT8; TDAT8 = (TDAT8 << 4) | (A & 0x0f); call wm A = (A & 0xf0) | (TDAT_H >> 4); set_f((F & CF) | SZP[A]); @@ -225,11 +222,11 @@ macro ex_sp TDAT2 = TDAT; call pop TADR = SP-1; - call nomreq_addr + + 1 using std::swap; std::swap(TDAT, TDAT2); call wm16_sp TADR = SP; - 2 * call nomreq_addr + + 2 using std::swap; std::swap(TDAT, TDAT2); WZ = TDAT; macro add16 @@ -258,7 +255,7 @@ macro ldi call rm TADR = DE; call wm - 2 * call nomreq_addr + + 2 set_f(F & (SF | ZF | CF)); if ((A + TDAT8) & 0x02) F |= YF; if ((A + TDAT8) & 0x08) F |= XF; HL++; DE++; BC--; if(BC) F |= VF; macro r800:ldi @@ -266,19 +263,19 @@ macro r800:ldi call rm TADR = DE; call wm - call nomreq_addr + + 1 set_f(F & (SF | ZF | CF)); if ((A + TDAT8) & 0x02) F |= YF; if ((A + TDAT8) & 0x08) F |= XF; HL++; DE++; BC--; if(BC) F |= VF; macro cpi TADR = HL; call rm - 5 * call nomreq_addr + + 5 { u8 res = A - TDAT8; WZ++; HL++; BC--; set_f((F & CF) | (SZ[res]&~(YF|XF)) | ((A^TDAT8^res)&HF) | NF); if (F & HF) res -= 1; if (res & 0x02) F |= YF; if (res & 0x08) F |= XF; if (BC) F |= VF; } macro r800:cpi TADR = HL; call rm - call nomreq_addr + + 1 { u8 res = A - TDAT8; WZ++; HL++; BC--; set_f((F & CF) | (SZ[res]&~(YF|XF)) | ((A^TDAT8^res)&HF) | NF); if (F & HF) res -= 1; if (res & 0x02) F |= YF; if (res & 0x08) F |= XF; if (BC) F |= VF; } macro ini @@ -316,7 +313,7 @@ macro ldd call rm TADR = DE; call wm - 2 * call nomreq_addr + + 2 { set_f(F & (SF | ZF | CF)); if ((A + TDAT8) & 0x02) F |= YF; if ((A + TDAT8) & 0x08) F |= XF; HL--; DE--; BC--; if (BC) F |= VF; } macro r800:ldd @@ -324,21 +321,21 @@ macro r800:ldd call rm TADR = DE; call wm - call nomreq_addr + + 1 { set_f(F & (SF | ZF | CF)); if ((A + TDAT8) & 0x02) F |= YF; if ((A + TDAT8) & 0x08) F |= XF; HL--; DE--; BC--; if (BC) F |= VF; } macro cpd TADR = HL; call rm TADR = HL; - 5 * call nomreq_addr + + 5 { u8 res = A - TDAT8; WZ--; HL--; BC--; set_f((F & CF) | (SZ[res]&~(YF|XF)) | ((A^TDAT8^res)&HF) | NF); if (F & HF) res -= 1; if (res & 0x02) F |= YF; if (res & 0x08) F |= XF; if (BC) F |= VF; } macro r800:cpd TADR = HL; call rm TADR = HL; - call nomreq_addr + + 1 { u8 res = A - TDAT8; WZ--; HL--; BC--; set_f((F & CF) | (SZ[res]&~(YF|XF)) | ((A^TDAT8^res)&HF) | NF); if (F & HF) res -= 1; if (res & 0x02) F |= YF; if (res & 0x08) F |= XF; if (BC) F |= VF; } macro ind @@ -375,7 +372,7 @@ macro ldir call ldi if (BC != 0) { TADR = DE; - 5 * call nomreq_addr + + 5 PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } @@ -383,7 +380,7 @@ macro r800:ldir call ldi if (BC != 0) { TADR = DE; - call nomreq_addr + + 1 PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } @@ -391,13 +388,13 @@ macro cpir call cpi if (BC != 0 && !(F & ZF)) { TADR = HL; - 5 * call nomreq_addr + + 5 PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro r800:cpir call cpi - call nomreq_addr + + 1 if (BC != 0 && !(F & ZF)) { TADR = HL; PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); @@ -407,7 +404,7 @@ macro inir call ini if (B != 0) { TADR = HL; - 5 * call nomreq_addr + + 5 PC -= 2; block_io_interrupted_flags(); } @@ -424,7 +421,7 @@ macro otir call outi if (B != 0) { TADR = BC; - 5 * call nomreq_addr + + 5 PC -= 2; block_io_interrupted_flags(); } @@ -434,7 +431,7 @@ macro r800:otir call outi if (B != 0) { TADR = BC; - 5 * call nomreq_addr + + 5 PC -= 2; block_io_interrupted_flags(); } @@ -442,7 +439,7 @@ macro lddr call ldd if (BC != 0) { TADR = DE; - 5 * call nomreq_addr + + 5 PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } @@ -450,7 +447,7 @@ macro r800:lddr call ldd if (BC != 0) { TADR = DE; - call nomreq_addr + + 1 PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } @@ -458,13 +455,13 @@ macro cpdr call cpd if (BC != 0 && !(F & ZF)) { TADR = HL; - 5 * call nomreq_addr + + 5 PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro r800:cpdr call cpd - call nomreq_addr + + 1 if (BC != 0 && !(F & ZF)) { TADR = HL; PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); @@ -474,7 +471,7 @@ macro indr call ind if (B != 0) { TADR = HL; - 5 * call nomreq_addr + + 5 PC -= 2; block_io_interrupted_flags(); } @@ -491,7 +488,7 @@ macro otdr call outd if (B != 0) { TADR = BC; - 5 * call nomreq_addr + + 5 PC -= 2; block_io_interrupted_flags(); } @@ -3142,7 +3139,7 @@ dd33 # DB DD dd34 # INC (IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm_reg inc(TDAT8); @@ -3151,7 +3148,7 @@ dd34 # INC (IX+o) dd35 # DEC (IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm_reg dec(TDAT8); @@ -3161,7 +3158,7 @@ dd36 # LD (IX+o),n call eax call arg TADR = PC-1; - 2 * call nomreq_addr + + 2 TADR = m_ea; call wm @@ -3227,7 +3224,7 @@ dd45 # LD B,LX dd46 # LD B,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm B = TDAT8; @@ -3261,7 +3258,7 @@ dd4d # LD C,LX dd4e # LD C,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm C = TDAT8; @@ -3295,7 +3292,7 @@ dd55 # LD D,LX dd56 # LD D,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm D = TDAT8; @@ -3329,7 +3326,7 @@ dd5d # LD E,LX dd5e # LD E,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm E = TDAT8; @@ -3358,7 +3355,7 @@ dd65 # LD HX,LX dd66 # LD H,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm H = TDAT8; @@ -3386,7 +3383,7 @@ dd6d # LD LX,LX dd6e # LD L,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm L = TDAT8; @@ -3397,42 +3394,42 @@ dd6f # LD LX,A dd70 # LD (IX+o),B call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = B; call wm dd71 # LD (IX+o),C call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = C; call wm dd72 # LD (IX+o),D call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = D; call wm dd73 # LD (IX+o),E call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = E; call wm dd74 # LD (IX+o),H call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = H; call wm dd75 # LD (IX+o),L call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = L; call wm @@ -3443,7 +3440,7 @@ dd76 # DB DD dd77 # LD (IX+o),A call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = A; call wm @@ -3472,7 +3469,7 @@ dd7d # LD A,LX dd7e # LD A,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm A = TDAT8; @@ -3506,7 +3503,7 @@ dd85 # ADD A,LX dd86 # ADD A,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm add_a(TDAT8); @@ -3540,7 +3537,7 @@ dd8d # ADC A,LX dd8e # ADC A,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm adc_a(TDAT8); @@ -3574,7 +3571,7 @@ dd95 # SUB LX dd96 # SUB (IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm sub(TDAT8); @@ -3608,7 +3605,7 @@ dd9d # SBC A,LX dd9e # SBC A,(IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm sbc_a(TDAT8); @@ -3642,7 +3639,7 @@ dda5 # AND LX dda6 # AND (IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm and_a(TDAT8); @@ -3676,7 +3673,7 @@ ddad # XOR LX ddae # XOR (IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm xor_a(TDAT8); @@ -3710,7 +3707,7 @@ ddb5 # OR LX ddb6 # OR (IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm or_a(TDAT8); @@ -3744,7 +3741,7 @@ ddbd # CP LX ddbe # CP (IX+o) call eax TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm cp(TDAT8); @@ -3801,7 +3798,7 @@ ddcb # ** DD CB xx call eax call arg TADR = PC-1; - 2 * call nomreq_addr + + 2 call jump_prefixed 0xfe ddcc # DB DD @@ -4230,7 +4227,7 @@ fd33 # DB FD fd34 # INC (IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm_reg inc(TDAT8); @@ -4239,7 +4236,7 @@ fd34 # INC (IY+o) fd35 # DEC (IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm_reg dec(TDAT8); @@ -4249,7 +4246,7 @@ fd36 # LD (IY+o),n call eay call arg TADR = PC-1; - 2 * call nomreq_addr + + 2 TADR = m_ea; call wm @@ -4315,7 +4312,7 @@ fd45 # LD B,LY fd46 # LD B,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm B = TDAT8; @@ -4349,7 +4346,7 @@ fd4d # LD C,LY fd4e # LD C,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm C = TDAT8; @@ -4383,7 +4380,7 @@ fd55 # LD D,LY fd56 # LD D,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm D = TDAT8; @@ -4417,7 +4414,7 @@ fd5d # LD E,LY fd5e # LD E,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm E = TDAT8; @@ -4446,7 +4443,7 @@ fd65 # LD HY,LY fd66 # LD H,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm H = TDAT8; @@ -4474,7 +4471,7 @@ fd6d # LD LY,LY fd6e # LD L,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm L = TDAT8; @@ -4485,42 +4482,42 @@ fd6f # LD LY,A fd70 # LD (IY+o),B call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = B; call wm fd71 # LD (IY+o),C call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = C; call wm fd72 # LD (IY+o),D call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = D; call wm fd73 # LD (IY+o),E call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = E; call wm fd74 # LD (IY+o),H call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = H; call wm fd75 # LD (IY+o),L call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = L; call wm @@ -4531,7 +4528,7 @@ fd76 # DB FD fd77 # LD (IY+o),A call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; TDAT8 = A; call wm @@ -4560,7 +4557,7 @@ fd7d # LD A,LY fd7e # LD A,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm A = TDAT8; @@ -4594,7 +4591,7 @@ fd85 # ADD A,LY fd86 # ADD A,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm add_a(TDAT8); @@ -4628,7 +4625,7 @@ fd8d # ADC A,LY fd8e # ADC A,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm adc_a(TDAT8); @@ -4662,7 +4659,7 @@ fd95 # SUB LY fd96 # SUB (IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm sub(TDAT8); @@ -4696,7 +4693,7 @@ fd9d # SBC A,LY fd9e # SBC A,(IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm sbc_a(TDAT8); @@ -4730,7 +4727,7 @@ fda5 # AND LY fda6 # AND (IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm and_a(TDAT8); @@ -4764,7 +4761,7 @@ fdad # XOR LY fdae # XOR (IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm xor_a(TDAT8); @@ -4798,7 +4795,7 @@ fdb5 # OR LY fdb6 # OR (IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm or_a(TDAT8); @@ -4832,7 +4829,7 @@ fdbd # CP LY fdbe # CP (IY+o) call eay TADR = PC-1; - 5 * call nomreq_addr + + 5 TADR = m_ea; call rm cp(TDAT8); @@ -4889,7 +4886,7 @@ fdcb # ** FD CB xx call eay call arg TADR = PC-1; - 2 * call nomreq_addr + + 2 call jump_prefixed 0xfe fdcc # DB FD diff --git a/src/mame/sinclair/byte.cpp b/src/mame/sinclair/byte.cpp index b881719cd2c..def41fae496 100644 --- a/src/mame/sinclair/byte.cpp +++ b/src/mame/sinclair/byte.cpp @@ -254,7 +254,7 @@ void byte_state::byte(machine_config &config) m_pit->out_handler<2>().set([this](int state) { m_speaker->level_w(state); }); m_maincpu->set_io_map(&byte_state::map_io); - m_exp->fb_r_handler().set([]() { return 0xff; }); + //m_exp->fb_r_handler().set([]() { return 0xff; }); } ROM_START(byte) diff --git a/src/mame/sinclair/chloe.cpp b/src/mame/sinclair/chloe.cpp index f7fdade4a09..3309286712b 100644 --- a/src/mame/sinclair/chloe.cpp +++ b/src/mame/sinclair/chloe.cpp @@ -925,7 +925,7 @@ void chloe_state::video_start() void chloe_state::chloe(machine_config &config) { spectrum_128(config); - config.device_remove("exp"); + //config.device_remove("exp"); config.device_remove("palette"); m_ram->set_default_size("512K").set_default_value(0xff); diff --git a/src/mame/sinclair/pentagon.cpp b/src/mame/sinclair/pentagon.cpp index fcf51472d8f..7e0f9171898 100644 --- a/src/mame/sinclair/pentagon.cpp +++ b/src/mame/sinclair/pentagon.cpp @@ -215,7 +215,7 @@ void pentagon_state::pentagon(machine_config &config) ay8912.add_route(1, "rspeaker", 0.25); ay8912.add_route(2, "rspeaker", 0.50); - config.device_remove("exp"); + //config.device_remove("exp"); SOFTWARE_LIST(config, "cass_list_pen").set_original("pentagon_cass"); SOFTWARE_LIST(config, "betadisc_list").set_original("spectrum_betadisc_flop"); diff --git a/src/mame/sinclair/scorpion.cpp b/src/mame/sinclair/scorpion.cpp index 927b2cadb33..157b385cda2 100644 --- a/src/mame/sinclair/scorpion.cpp +++ b/src/mame/sinclair/scorpion.cpp @@ -523,7 +523,7 @@ void scorpion_state::scorpion(machine_config &config) BETA_DISK(config, m_beta, 0); - config.device_remove("exp"); + //config.device_remove("exp"); ADDRESS_MAP_BANK(config, m_bankio).set_map(&scorpion_state::scorpion_ioext).set_options(ENDIANNESS_LITTLE, 8, 17, 0); diff --git a/src/mame/sinclair/spec128.cpp b/src/mame/sinclair/spec128.cpp index 8895627ffcb..bb61ec065ce 100644 --- a/src/mame/sinclair/spec128.cpp +++ b/src/mame/sinclair/spec128.cpp @@ -173,34 +173,33 @@ void spectrum_128_state::video_start() uint8_t spectrum_128_state::spectrum_128_pre_opcode_fetch_r(offs_t offset) { - if (is_contended(offset)) content_early(); + //if (is_contended(offset)) content_early(); /* this allows expansion devices to act upon opcode fetches from MEM addresses for example, interface1 detection fetches requires fetches at 0008 / 0708 to enable paged ROM and then fetches at 0700 to disable it */ - m_exp->pre_opcode_fetch(offset); + //m_exp->pre_opcode_fetch(offset); uint8_t retval = m_maincpu->space(AS_PROGRAM).read_byte(offset); - m_exp->post_opcode_fetch(offset); + //m_exp->post_opcode_fetch(offset); return retval; } void spectrum_128_state::spectrum_128_rom_w(offs_t offset, uint8_t data) { - m_exp->mreq_w(offset, data); } u8 spectrum_128_state::spectrum_128_rom_r(offs_t offset) { - return m_exp->romcs() - ? m_exp->mreq_r(offset) - : ((u8*)m_bank_rom[0]->base())[offset]; + return //m_exp->romcs() + //? m_exp->mreq_r(offset) + ((u8*)m_bank_rom[0]->base())[offset]; } template void spectrum_128_state::spectrum_128_ram_w(offs_t offset, u8 data) { u16 addr = 0x4000 * Bank + offset; - if (is_contended(addr)) content_early(); + //if (is_contended(addr)) content_early(); if (is_vram_write(addr)) m_screen->update_now(); ((u8*)m_bank_ram[Bank]->base())[offset] = data; @@ -210,16 +209,16 @@ template void spectrum_128_state::spectrum_128_ram_w<0>(offs_t offset, u8 data); template u8 spectrum_128_state::spectrum_128_ram_r(offs_t offset) { - u16 addr = 0x4000 * Bank + offset; - if (is_contended(addr)) content_early(); + //u16 addr = 0x4000 * Bank + offset; + //if (is_contended(addr)) content_early(); return ((u8*)m_bank_ram[Bank]->base())[offset]; } void spectrum_128_state::spectrum_128_port_7ffd_w(offs_t offset, uint8_t data) { - if (is_contended(offset)) content_early(); - content_early(1); + //if (is_contended(offset)) content_early(); + //content_early(1); /* D0-D2: RAM page located at 0x0c000-0x0ffff */ /* D3 - Screen select (screen 0 in ram page 5, screen 1 in ram page 7 */ @@ -235,7 +234,7 @@ void spectrum_128_state::spectrum_128_port_7ffd_w(offs_t offset, uint8_t data) /* update memory */ spectrum_128_update_memory(); - m_exp->iorq_w(offset | 1, data); + //m_exp->iorq_w(offset | 1, data); } void spectrum_128_state::spectrum_128_update_memory() @@ -253,15 +252,15 @@ void spectrum_128_state::spectrum_128_update_memory() uint8_t spectrum_128_state::spectrum_port_r(offs_t offset) { - if (is_contended(offset)) - { - content_early(); - content_late(); - } + //if (is_contended(offset)) + //{ + // content_early(); + // content_late(); + //} // Pass through to expansion device if present - if (m_exp->get_card_device()) - return m_exp->iorq_r(offset | 1); + //if (m_exp->get_card_device()) + // return m_exp->iorq_r(offset | 1); return floating_bus_r(); } @@ -370,12 +369,14 @@ void spectrum_128_state::spectrum_128(machine_config &config) /* sound hardware */ AY8912(config, "ay8912", X1_128_SINCLAIR / 20).add_route(ALL_OUTPUTS, "mono", 0.25); + /* - /* expansion port */ + // expansion port SPECTRUM_EXPANSION_SLOT(config.replace(), m_exp, spec128_expansion_devices, nullptr); m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); m_exp->fb_r_handler().set(FUNC(spectrum_128_state::floating_bus_r)); + */ /* internal ram */ m_ram->set_default_size("128K"); diff --git a/src/mame/sinclair/specnext.cpp b/src/mame/sinclair/specnext.cpp index c34a1628494..777b8e8bada 100644 --- a/src/mame/sinclair/specnext.cpp +++ b/src/mame/sinclair/specnext.cpp @@ -3435,7 +3435,7 @@ void specnext_state::video_start() void specnext_state::tbblue(machine_config &config) { spectrum_128(config); - config.device_remove("exp"); + //config.device_remove("exp"); // m_ram->set_default_size("1M").set_extra_options("2M"); m_ram->set_default_size("2M").set_default_value(0); diff --git a/src/mame/sinclair/specpls3.cpp b/src/mame/sinclair/specpls3.cpp index 2a0a062a0ca..60134b9a8eb 100644 --- a/src/mame/sinclair/specpls3.cpp +++ b/src/mame/sinclair/specpls3.cpp @@ -179,7 +179,7 @@ void specpls3_state::port_3ffd_w(offs_t offset, uint8_t data) if (m_upd765.found()) m_upd765->fifo_w(data); /* mface3 needs to see this port */ - if (m_exp) m_exp->iorq_w(offset | 0x3000, data); + //if (m_exp) m_exp->iorq_w(offset | 0x3000, data); } uint8_t specpls3_state::port_3ffd_r() @@ -238,17 +238,17 @@ void specpls3_state::plus3_update_memory() void specpls3_state::rom_w(offs_t offset, uint8_t data) { - if (m_exp->romcs()) - m_exp->mreq_w(offset, data); - else if (m_port_1ffd_data & 0x01) + //if (m_exp->romcs()) + // m_exp->mreq_w(offset, data); + if (m_port_1ffd_data & 0x01) ((u8*)m_bank_ram[0]->base())[offset] = data; } uint8_t specpls3_state::rom_r(offs_t offset) { - return m_exp->romcs() - ? m_exp->mreq_r(offset) - : (m_port_1ffd_data & 0x01) + return //m_exp->romcs() + //? m_exp->mreq_r(offset) + (m_port_1ffd_data & 0x01) ? ((u8*)m_bank_ram[0]->base())[offset] : ((u8*)m_bank_rom[0]->base())[offset]; } @@ -261,7 +261,7 @@ void specpls3_state::port_7ffd_w(offs_t offset, uint8_t data) /* D5 - Disable paging (permanent until reset) */ /* mface3 needs to see this port */ - if (m_exp) m_exp->iorq_w(offset | 0x4000, data); + //if (m_exp) m_exp->iorq_w(offset | 0x4000, data); /* paging disabled? */ if (m_port_7ffd_data & 0x20) return; @@ -290,7 +290,7 @@ void specpls3_state::port_1ffd_w(offs_t offset, uint8_t data) } /* mface3 needs to see this port */ - if (m_exp) m_exp->iorq_w(offset | 0x1000, data); + //if (m_exp) m_exp->iorq_w(offset | 0x1000, data); /* paging disabled? */ if ((m_port_7ffd_data & 0x20)==0) @@ -319,7 +319,7 @@ void specpls3_state::video_start() The function decodes the ports appropriately */ void specpls3_state::plus3_io(address_map &map) { - map(0x0000, 0xffff).rw(m_exp, FUNC(spectrum_expansion_slot_device::iorq_r), FUNC(spectrum_expansion_slot_device::iorq_w)); + //map(0x0000, 0xffff).rw(m_exp, FUNC(spectrum_expansion_slot_device::iorq_r), FUNC(spectrum_expansion_slot_device::iorq_w)); map(0x0000, 0x0000).rw(FUNC(specpls3_state::spectrum_ula_r), FUNC(specpls3_state::spectrum_ula_w)).select(0xfffe); map(0x4000, 0x4000).w(FUNC(specpls3_state::port_7ffd_w)).select(0x3ffd); map(0x8000, 0x8000).w("ay8912", FUNC(ay8910_device::data_w)).mirror(0x3ffd); @@ -413,11 +413,11 @@ void specpls3_state::spectrum_plus2(machine_config &config) subdevice("gfxdecode")->set_info(specpls3); - SPECTRUM_EXPANSION_SLOT(config.replace(), m_exp, specpls3_expansion_devices, nullptr); - m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); + //SPECTRUM_EXPANSION_SLOT(config.replace(), m_exp, specpls3_expansion_devices, nullptr); + //m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + //m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); // these models don't have floating bus - m_exp->fb_r_handler().set([]() { return 0xff; }); + //m_exp->fb_r_handler().set([]() { return 0xff; }); } void specpls3_state::spectrum_plus3(machine_config &config) diff --git a/src/mame/sinclair/spectrum.cpp b/src/mame/sinclair/spectrum.cpp index 25a0b41df8b..0e36a243540 100644 --- a/src/mame/sinclair/spectrum.cpp +++ b/src/mame/sinclair/spectrum.cpp @@ -293,46 +293,46 @@ SamRam uint8_t spectrum_state::pre_opcode_fetch_r(offs_t offset) { - if (is_contended(offset)) content_early(); + //if (is_contended(offset)) content_early(); /* this allows expansion devices to act upon opcode fetches from MEM addresses for example, interface1 detection fetches requires fetches at 0008 / 0708 to enable paged ROM and then fetches at 0700 to disable it */ - m_exp->pre_opcode_fetch(offset); + //m_exp->pre_opcode_fetch(offset); uint8_t retval = m_specmem->space(AS_PROGRAM).read_byte(offset); - m_exp->post_opcode_fetch(offset); + //m_exp->post_opcode_fetch(offset); return retval; } uint8_t spectrum_state::spectrum_data_r(offs_t offset) { - if (is_contended(offset)) content_early(); + //if (is_contended(offset)) content_early(); - m_exp->pre_data_fetch(offset); + //m_exp->pre_data_fetch(offset); uint8_t retval = m_specmem->space(AS_PROGRAM).read_byte(offset); - m_exp->post_data_fetch(offset); + //m_exp->post_data_fetch(offset); return retval; } void spectrum_state::spectrum_data_w(offs_t offset, uint8_t data) { - if (is_contended(offset)) content_early(); - if (is_vram_write(offset)) m_screen->update_now(); + //if (is_contended(offset)) content_early(); + //if (is_vram_write(offset)) m_screen->update_now(); m_specmem->space(AS_PROGRAM).write_byte(offset,data); } void spectrum_state::spectrum_rom_w(offs_t offset, uint8_t data) { - m_exp->mreq_w(offset, data); + //m_exp->mreq_w(offset, data); } uint8_t spectrum_state::spectrum_rom_r(offs_t offset) { - return m_exp->romcs() - ? m_exp->mreq_r(offset) - : memregion("maincpu")->base()[offset]; + return //m_exp->romcs() + //? m_exp->mreq_r(offset) + memregion("maincpu")->base()[offset]; } /* @@ -343,8 +343,8 @@ uint8_t spectrum_state::spectrum_rom_r(offs_t offset) */ void spectrum_state::spectrum_ula_w(offs_t offset, uint8_t data) { - if (is_contended(offset)) content_early(); - content_early(1); + //if (is_contended(offset)) content_early(); + //content_early(1); u8 changed = m_port_fe_data ^ data; @@ -362,7 +362,7 @@ void spectrum_state::spectrum_ula_w(offs_t offset, uint8_t data) // Some exp devices use ula port unused bits 5-7: // Beta v2/3/plus use bit 7, Beta clones use bits 6 and 7 - if (m_exp) m_exp->iorq_w(offset, data); + //if (m_exp) m_exp->iorq_w(offset, data); m_port_fe_data = data; } @@ -371,8 +371,8 @@ void spectrum_state::spectrum_ula_w(offs_t offset, uint8_t data) /* DJR: Spectrum+ keys added */ uint8_t spectrum_state::spectrum_ula_r(offs_t offset) { - if (is_contended(offset)) content_early(); - content_early(1); + //if (is_contended(offset)) content_early(); + //content_early(1); int lines = offset >> 8; int data = 0xff; @@ -386,7 +386,7 @@ uint8_t spectrum_state::spectrum_ula_r(offs_t offset) int joy2 = m_io_joy2.read_safe(0x1f) & 0x1f; /* expansion port */ - if (m_exp) data = m_exp->iorq_r(offset); + //if (m_exp) data = m_exp->iorq_r(offset); /* Caps - V */ if ((lines & 1) == 0) @@ -448,38 +448,15 @@ uint8_t spectrum_state::spectrum_ula_r(offs_t offset) void spectrum_state::spectrum_port_w(offs_t offset, uint8_t data) { - if (is_contended(offset)) - { - content_early(); - content_late(); - } - - // Pass through to expansion device if present - if (m_exp->get_card_device()) - m_exp->iorq_w(offset | 1, data); } uint8_t spectrum_state::spectrum_port_r(offs_t offset) { - if (is_contended(offset)) - { - content_early(); - content_late(); - } - - // Pass through to expansion device if present - if (m_exp->get_card_device()) - return m_exp->iorq_r(offset | 1); - return floating_bus_r(); } uint8_t spectrum_state::spectrum_clone_port_r(offs_t offset) { - // Pass through to expansion device if present - if (m_exp->get_card_device()) - return m_exp->iorq_r(offset | 1); - // no floating bus for clones return 0xff; } @@ -829,10 +806,10 @@ void spectrum_state::spectrum_common(machine_config &config) m_speaker->set_levels(4, speaker_levels); /* expansion port */ - SPECTRUM_EXPANSION_SLOT(config, m_exp, spectrum_expansion_devices, "kempjoy"); - m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); - m_exp->fb_r_handler().set(FUNC(spectrum_state::floating_bus_r)); + //SPECTRUM_EXPANSION_SLOT(config, m_exp, spectrum_expansion_devices, "kempjoy"); + //m_exp->irq_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + //m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); + //m_exp->fb_r_handler().set(FUNC(spectrum_state::floating_bus_r)); /* devices */ SNAPSHOT(config, "snapshot", "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx").set_load_callback(FUNC(spectrum_state::snapshot_cb)); @@ -864,8 +841,8 @@ void spectrum_state::spectrum_clone(machine_config &config) spectrum(config); // no floating bus - m_maincpu->set_io_map(&spectrum_state::spectrum_clone_io); - m_exp->fb_r_handler().set([]() { return 0xff; }); + m_maincpu->set_io_map(&spectrum_state::spectrum_clone_io); + //m_exp->fb_r_handler().set([]() { return 0xff; }); } /*************************************************************************** diff --git a/src/mame/sinclair/spectrum.h b/src/mame/sinclair/spectrum.h index f14ed0fe4e9..bde7eb290a5 100644 --- a/src/mame/sinclair/spectrum.h +++ b/src/mame/sinclair/spectrum.h @@ -13,7 +13,7 @@ #include "spec_snqk.h" #include "machine/bankdev.h" -#include "bus/spectrum/exp.h" +//#include "bus/spectrum/exp.h" #include "imagedev/cassette.h" #include "imagedev/snapquik.h" #include "machine/ram.h" @@ -58,7 +58,7 @@ public: m_ram(*this, RAM_TAG), m_specmem(*this, "specmem"), m_speaker(*this, "speaker"), - m_exp(*this, "exp"), + //m_exp(*this, "exp"), m_io_line0(*this, "LINE0"), m_io_line1(*this, "LINE1"), m_io_line2(*this, "LINE2"), @@ -158,7 +158,7 @@ protected: required_device m_ram; optional_device m_specmem; required_device m_speaker; - optional_device m_exp; + //optional_device m_exp; // Regular spectrum ports; marked as optional because of other subclasses optional_ioport m_io_line0; diff --git a/src/mame/sinclair/sprinter.cpp b/src/mame/sinclair/sprinter.cpp index 63ed92f6234..1c02f38669a 100644 --- a/src/mame/sinclair/sprinter.cpp +++ b/src/mame/sinclair/sprinter.cpp @@ -1875,6 +1875,10 @@ INPUT_PORTS_START( sprinter ) PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER) PORT_NAME("TURBO") PORT_CODE(KEYCODE_F12) PORT_TOGGLE PORT_CHANGED_MEMBER(DEVICE_SELF, FUNC(sprinter_state::turbo_changed), 0) INPUT_PORTS_END +static void no_devices(device_slot_interface &device) +{ +} + void sprinter_state::sprinter(machine_config &config) { spectrum_128(config); @@ -1899,7 +1903,7 @@ void sprinter_state::sprinter(machine_config &config) ISA8(config, m_isa[1], X_SP / 5); m_isa[1]->set_custom_spaces(); - ISA8_SLOT(config, "isa8", 0, m_isa[1], pc_isa8_cards, nullptr, false); + ISA8_SLOT(config, "isa8", 0, m_isa[1], no_devices, nullptr, false); m_screen->set_raw(X_SP / 3, SPRINT_WIDTH, SPRINT_HEIGHT, { 0, SPRINT_XVIS - 1, 0, SPRINT_YVIS - 1 }); m_screen->set_screen_update(FUNC(sprinter_state::screen_update)); @@ -1919,10 +1923,10 @@ void sprinter_state::sprinter(machine_config &config) m_maincpu->out_pb_callback().set(FUNC(sprinter_state::pio_b_w)); // joy2 ctrl m_maincpu->in_pa_callback().set([this]() { return joy_ctrl_r(2); }); - rs232_port_device &m_rs232(RS232_PORT(config, "rs232", default_rs232_devices, "microsoft_mouse")); + rs232_port_device &m_rs232(RS232_PORT(config, "rs232", no_devices, "microsoft_mouse")); m_rs232.option_add("microsoft_mouse", MSFT_HLE_SERIAL_MOUSE); - m_rs232.option_add("logitech_mouse", LOGITECH_HLE_SERIAL_MOUSE); - m_rs232.option_add("wheel_mouse", WHEEL_HLE_SERIAL_MOUSE); + //m_rs232.option_add("logitech_mouse", LOGITECH_HLE_SERIAL_MOUSE); + //m_rs232.option_add("wheel_mouse", WHEEL_HLE_SERIAL_MOUSE); m_rs232.rxd_handler().set(m_maincpu, FUNC(z84c015_device::rxb_w)); // MOUSE_D m_maincpu->out_txdb_callback().set("rs232", FUNC(rs232_port_device::write_txd)); // TXDB m_maincpu->zc_callback<0>().set(m_maincpu, FUNC(z84c015_device::rxcb_w)); // CLK_COM1 diff --git a/src/mame/sinclair/tsconf.cpp b/src/mame/sinclair/tsconf.cpp index 2c914c2a445..9a05fad0a1d 100644 --- a/src/mame/sinclair/tsconf.cpp +++ b/src/mame/sinclair/tsconf.cpp @@ -273,7 +273,7 @@ void tsconf_state::tsconf(machine_config &config) { spectrum_128(config); - config.device_remove("exp"); + //config.device_remove("exp"); config.device_remove("palette"); Z80(config.replace(), m_maincpu, 14_MHz_XTAL / 4);