mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
no waits, no exp, no ISA
This commit is contained in:
parent
fa893c6871
commit
ad46e8fc53
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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 <u8 Bank> 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 Bank> 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");
|
||||
|
@ -3434,7 +3434,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);
|
||||
|
||||
|
@ -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_device>("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)
|
||||
|
@ -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; });
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -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<ram_device> m_ram;
|
||||
optional_device<address_map_bank_device> m_specmem;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
optional_device<spectrum_expansion_slot_device> m_exp;
|
||||
//optional_device<spectrum_expansion_slot_device> m_exp;
|
||||
|
||||
// Regular spectrum ports; marked as optional because of other subclasses
|
||||
optional_ioport m_io_line0;
|
||||
|
@ -1871,6 +1871,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);
|
||||
@ -1895,7 +1899,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));
|
||||
@ -1915,10 +1919,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
|
||||
|
@ -264,7 +264,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);
|
||||
|
Loading…
Reference in New Issue
Block a user