diff options
Diffstat (limited to 'src/devices')
-rw-r--r-- | src/devices/cpu/i960/i960.cpp | 2 | ||||
-rw-r--r-- | src/devices/cpu/z80/z80.cpp | 1 | ||||
-rw-r--r-- | src/devices/cpu/z80/z80.h | 1 | ||||
-rw-r--r-- | src/devices/cpu/z80/z80.inc | 3 | ||||
-rw-r--r-- | src/devices/cpu/z80/z80.lst | 2109 | ||||
-rw-r--r-- | src/devices/sound/disc_cls.h | 14 | ||||
-rw-r--r-- | src/devices/sound/disc_inp.hxx | 7 | ||||
-rw-r--r-- | src/devices/sound/discrete.cpp | 5 | ||||
-rw-r--r-- | src/devices/sound/spkrdev.cpp | 2 |
9 files changed, 860 insertions, 1284 deletions
diff --git a/src/devices/cpu/i960/i960.cpp b/src/devices/cpu/i960/i960.cpp index 7d31ad031bf..738037e60b5 100644 --- a/src/devices/cpu/i960/i960.cpp +++ b/src/devices/cpu/i960/i960.cpp @@ -469,7 +469,7 @@ void i960_cpu_device::take_interrupt(int vector, int lvl) } SP = (SP + 63) & ~63; - SP += 128; // emulate ElSemi's core, this fixes the crash in sonic the fighters + SP += 64; // add padding to prevent buffer underflow when saving processor state do_call(IRQV, 7, SP); diff --git a/src/devices/cpu/z80/z80.cpp b/src/devices/cpu/z80/z80.cpp index c95474999d5..9d2c5958dd7 100644 --- a/src/devices/cpu/z80/z80.cpp +++ b/src/devices/cpu/z80/z80.cpp @@ -571,7 +571,6 @@ void z80_device::device_start() save_item(NAME(m_ea)); save_item(NAME(m_service_attention)); save_item(NAME(m_tmp_irq_vector)); - save_item(NAME(m_shared_addr.w)); save_item(NAME(m_shared_data.w)); save_item(NAME(m_shared_data2.w)); save_item(NAME(m_rtemp)); diff --git a/src/devices/cpu/z80/z80.h b/src/devices/cpu/z80/z80.h index b40e697d81f..3498f100dcd 100644 --- a/src/devices/cpu/z80/z80.h +++ b/src/devices/cpu/z80/z80.h @@ -181,7 +181,6 @@ protected: int m_icount; int m_tmp_irq_vector; - PAIR16 m_shared_addr; PAIR16 m_shared_data; PAIR16 m_shared_data2; u8 m_rtemp; diff --git a/src/devices/cpu/z80/z80.inc b/src/devices/cpu/z80/z80.inc index caf7ce22c8f..1c7dd7843a0 100644 --- a/src/devices/cpu/z80/z80.inc +++ b/src/devices/cpu/z80/z80.inc @@ -60,9 +60,6 @@ #define WZ_L m_wz.b.l -#define TADR m_shared_addr.w // Typically represents values from A0..15 pins. 16bit input in steps. -#define TADR_H m_shared_addr.b.h -#define TADR_L m_shared_addr.b.l #define TDAT m_shared_data.w // 16bit input(if use as second parameter) or output in steps. #define TDAT2 m_shared_data2.w #define TDAT_H m_shared_data.b.h diff --git a/src/devices/cpu/z80/z80.lst b/src/devices/cpu/z80/z80.lst index a31e651748b..b1aa31aa12d 100644 --- a/src/devices/cpu/z80/z80.lst +++ b/src/devices/cpu/z80/z80.lst @@ -3,47 +3,46 @@ ########################################################## # macros ########################################################## -macro nomreq_addr +macro nomreq_addr %addr if (nomemrq_en) - m_nomreq_cb(TADR, 0x00, 0xff); + m_nomreq_cb(%addr, 0x00, 0xff); + 1 macro nomreq_ir %cycles - TADR = (m_i << 8) | (m_r2 & 0x80) | (m_r & 0x7f); - %cycles * call nomreq_addr + %cycles * call nomreq_addr (m_i << 8) | (m_r2 & 0x80) | (m_r & 0x7f) -macro in - m_iorq_cycles !! TDAT8 = m_io.read_interruptible(TADR); +macro in %port + m_iorq_cycles !! TDAT8 = m_io.read_interruptible(%port); -macro out - m_iorq_cycles !! m_io.write_interruptible(TADR, TDAT8); +macro out %port + m_iorq_cycles !! m_io.write_interruptible(%port, TDAT8); -macro rm - m_memrq_cycles !! TDAT8 = data_read(TADR); +macro rm %addr + m_memrq_cycles !! TDAT8 = data_read(%addr); -macro rm_reg - call rm - call nomreq_addr +macro rm_reg %addr + call rm %addr + call nomreq_addr %addr -macro rm16 - call rm - TDAT_H = TDAT_L; TADR++; - call rm +macro rm16 %addr + call rm %addr + TDAT_H = TDAT_L; + call rm %addr+1 using std::swap; std::swap(TDAT_H, TDAT_L); -macro wm - m_memrq_cycles !! data_write(TADR, TDAT8); +macro wm %addr + m_memrq_cycles !! data_write(%addr, TDAT8); -macro wm16 - call wm - TADR++; TDAT8 = TDAT_H; - call wm +macro wm16 %addr + call wm %addr + TDAT8 = TDAT_H; + call wm %addr+1 -macro wm16_sp +macro wm16_sp %d16 SP--; - m_memrq_cycles !! stack_write(SP, TDAT_H); + m_memrq_cycles !! stack_write(SP, (%d16) >> 8); SP--; - m_memrq_cycles !! stack_write(SP, TDAT_L); + m_memrq_cycles !! stack_write(SP, %d16); macro rop m_m1_cycles-2 !! TDAT8 = opcode_read(); @@ -80,9 +79,9 @@ macro pop m_memrq_cycles !! TDAT_H = stack_read(SP); SP++; -macro push +macro push %d16 call nomreq_ir 1 - call wm16_sp + call wm16_sp %d16 macro jp call arg16 @@ -116,20 +115,17 @@ macro t6a84:jp_cond macro jr call arg - TADR = PC-1; - 5 * call nomreq_addr + 5 * call nomreq_addr PC-1 PC += (s8)TDAT8; WZ = PC; macro t6a84:jr call arg - TADR = PC-1; - 5 * call nomreq_addr + 5 * call nomreq_addr PC-1 PC += (s8)TDAT8; WZ = PC; paged_jump(); macro r800:jr call arg - TADR = PC-1; + 1 PC += (s8)TDAT8; WZ = PC; @@ -142,18 +138,18 @@ macro jr_cond macro arg16_call call arg16 - m_ea = TDAT; TADR = PC-1; - call nomreq_addr - WZ = m_ea; TDAT = PC; - call wm16_sp + m_ea = TDAT; + call nomreq_addr PC-1 + WZ = m_ea; + call wm16_sp PC PC = m_ea; macro r800:arg16_call call arg16 - m_ea = TDAT; TADR = PC-1; - call nomreq_addr - WZ = m_ea; TDAT = PC; - call wm16_sp + m_ea = TDAT; + call nomreq_addr PC-1 + WZ = m_ea; + call wm16_sp PC PC = m_ea; macro call_cond @@ -234,38 +230,32 @@ macro r800:ld_a_i set_service_attention<SA_AFTER_LDAIR, 1>(); macro rst addr - TDAT = PC; - call push + call push PC PC = addr; WZ = PC; macro rrd - TADR = HL; - call rm + call rm HL WZ = HL+1; - 4 * call nomreq_addr + 4 * call nomreq_addr HL TDAT_H = TDAT8; TDAT8 = (TDAT8 >> 4) | (A << 4); - call wm + call wm HL A = (A & 0xf0) | (TDAT_H & 0x0f); set_f((F & CF) | SZP[A]); macro rld - TADR = HL; - call rm + call rm HL WZ = HL+1; - 4 * call nomreq_addr + 4 * call nomreq_addr HL TDAT_H = TDAT8; TDAT8 = (TDAT8 << 4) | (A & 0x0f); - call wm + call wm HL A = (A & 0xf0) | (TDAT_H >> 4); set_f((F & CF) | SZP[A]); -macro ex_sp - TDAT2 = TDAT; +macro ex_sp %d16 call pop - TADR = SP-1; - call nomreq_addr - using std::swap; std::swap(TDAT, TDAT2); - call wm16_sp - TADR = SP; - 2 * call nomreq_addr - using std::swap; std::swap(TDAT, TDAT2); WZ = TDAT; + call nomreq_addr SP-1 + call wm16_sp %d16 + %d16 = TDAT; + 2 * call nomreq_addr SP + WZ = TDAT; macro add16 call nomreq_ir 7 @@ -289,161 +279,135 @@ macro r800:sbc_hl { u32 res = HL - TDAT - (F & CF); WZ = HL + 1; set_f((((HL ^ res ^ TDAT) >> 8) & HF) | NF | ((res >> 16) & CF) | ((res >> 8) & (SF | YF | XF)) | ((res & 0xffff) ? 0 : ZF) | (((TDAT ^ HL) & (HL ^ res) &0x8000) >> 13)); HL = (u16)res; } macro ldi - TADR = HL; - call rm - TADR = DE; - call wm - 2 * call nomreq_addr + call rm HL + call wm DE + 2 * call nomreq_addr DE 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 - TADR = HL; - call rm - TADR = DE; - call wm - call nomreq_addr + call rm HL + call wm DE + call nomreq_addr DE 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 + call rm HL + 5 * call nomreq_addr HL { 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 + call rm HL + call nomreq_addr HL { 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 call nomreq_ir 1 - TADR = BC; - call in - WZ = BC + 1; B--; TADR = HL; - call wm + call in BC + WZ = BC + 1; B--; + call wm HL { HL++; set_f(SZ[B]); unsigned t = (unsigned)((C + 1) & 0xff) + (unsigned)TDAT8; if (TDAT8 & SF) F |= NF; if (t & 0x100) F |= HF | CF; F |= SZP[(u8)(t & 0x07) ^ B] & PF; } macro r800:ini - TADR = BC; - call in - WZ = BC + 1; B--; TADR = HL; - call wm + call in BC + WZ = BC + 1; B--; + call wm HL { HL++; set_f(SZ[B]); unsigned t = (unsigned)((C + 1) & 0xff) + (unsigned)TDAT8; if (TDAT8 & SF) F |= NF; if (t & 0x100) F |= HF | CF; F |= SZP[(u8)(t & 0x07) ^ B] & PF; } macro outi call nomreq_ir 1 - TADR = HL; - call rm - B--; WZ = BC + 1; TADR = BC; - call out + call rm HL + B--; WZ = BC + 1; + call out BC { HL++; set_f(SZ[B]); unsigned t = (unsigned)L + (unsigned)TDAT8; if (TDAT8 & SF) F |= NF; if (t & 0x100) F |= HF | CF; F |= SZP[(u8)(t & 0x07) ^ B] & PF; } macro r800:outi - TADR = HL; - call rm - B--; WZ = BC + 1; TADR = BC; - call out + call rm HL + B--; WZ = BC + 1; + call out BC { HL++; set_f(SZ[B]); unsigned t = (unsigned)L + (unsigned)TDAT8; if (TDAT8 & SF) F |= NF; if (t & 0x100) F |= HF | CF; F |= SZP[(u8)(t & 0x07) ^ B] & PF; } macro ldd - TADR = HL; - call rm - TADR = DE; - call wm - 2 * call nomreq_addr + call rm HL + call wm DE + 2 * call nomreq_addr DE { 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 - TADR = HL; - call rm - TADR = DE; - call wm - call nomreq_addr + call rm HL + call wm DE + call nomreq_addr DE { 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 + call rm HL + 5 * call nomreq_addr HL { 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 + call rm HL + call nomreq_addr HL { 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 call nomreq_ir 1 - TADR = BC; - call in - WZ = BC - 1; B--; TADR = HL; - call wm + call in BC + WZ = BC - 1; B--; + call wm HL { HL--; set_f(SZ[B]); unsigned t = ((unsigned)(C - 1) & 0xff) + (unsigned)TDAT8; if (TDAT8 & SF) F |= NF; if (t & 0x100) F |= HF | CF; F |= SZP[(u8)(t & 0x07) ^ B] & PF; } macro r800:ind - TADR = BC; - call in - WZ = BC - 1; B--; TADR = HL; - call wm + call in BC + WZ = BC - 1; B--; + call wm HL { HL--; set_f(SZ[B]); unsigned t = ((unsigned)(C - 1) & 0xff) + (unsigned)TDAT8; if (TDAT8 & SF) F |= NF; if (t & 0x100) F |= HF | CF; F |= SZP[(u8)(t & 0x07) ^ B] & PF; } macro outd call nomreq_ir 1 - TADR = HL; - call rm - B--; WZ = BC - 1; TADR = BC; - call out + call rm HL + B--; WZ = BC - 1; + call out BC { HL--; set_f(SZ[B]); unsigned t = (unsigned)L + (unsigned)TDAT8; if (TDAT8 & SF) F |= NF; if (t & 0x100) F |= HF | CF; F |= SZP[(u8)(t & 0x07) ^ B] & PF; } macro r800:outd - TADR = HL; - call rm - B--; WZ = BC - 1; TADR = BC; - call out + call rm HL + B--; WZ = BC - 1; + call out BC { HL--; set_f(SZ[B]); unsigned t = (unsigned)L + (unsigned)TDAT8; if (TDAT8 & SF) F |= NF; if (t & 0x100) F |= HF | CF; F |= SZP[(u8)(t & 0x07) ^ B] & PF; } macro ldir call ldi if (BC != 0) { - TADR = DE; - 5 * call nomreq_addr + 5 * call nomreq_addr DE PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro r800:ldir call ldi if (BC != 0) { - TADR = DE; - call nomreq_addr + call nomreq_addr DE PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro cpir call cpi if (BC != 0 && !(F & ZF)) { - TADR = HL; - 5 * call nomreq_addr + 5 * call nomreq_addr HL PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro r800:cpir call cpi - call nomreq_addr + call nomreq_addr HL if (BC != 0 && !(F & ZF)) { - TADR = HL; PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro inir call ini if (B != 0) { - TADR = HL; - 5 * call nomreq_addr - PC -= 2; block_io_interrupted_flags(); + 5 * call nomreq_addr HL + PC -= 2; + block_io_interrupted_flags(); } macro r800:inir @@ -451,16 +415,16 @@ macro r800:inir T(1); call ini if (B != 0) { - TADR = HL; - PC -= 2; block_io_interrupted_flags(); + PC -= 2; + block_io_interrupted_flags(); } macro otir call outi if (B != 0) { - TADR = BC; - 5 * call nomreq_addr - PC -= 2; block_io_interrupted_flags(); + 5 * call nomreq_addr BC + PC -= 2; + block_io_interrupted_flags(); } macro r800:otir @@ -468,49 +432,45 @@ macro r800:otir T(1); call outi if (B != 0) { - TADR = BC; - 5 * call nomreq_addr - PC -= 2; block_io_interrupted_flags(); + 5 * call nomreq_addr BC + PC -= 2; + block_io_interrupted_flags(); } macro lddr call ldd if (BC != 0) { - TADR = DE; - 5 * call nomreq_addr + 5 * call nomreq_addr DE PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro r800:lddr call ldd if (BC != 0) { - TADR = DE; - call nomreq_addr + call nomreq_addr DE PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro cpdr call cpd if (BC != 0 && !(F & ZF)) { - TADR = HL; - 5 * call nomreq_addr + 5 * call nomreq_addr HL PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro r800:cpdr call cpd - call nomreq_addr + call nomreq_addr HL /* suspected wrong. must be inside if? */ if (BC != 0 && !(F & ZF)) { - TADR = HL; PC -= 2; WZ = PC + 1; F &= ~(YF | XF); F |= (PC >> 8) & (YF | XF); } macro indr call ind if (B != 0) { - TADR = HL; - 5 * call nomreq_addr - PC -= 2; block_io_interrupted_flags(); + 5 * call nomreq_addr HL + PC -= 2; + block_io_interrupted_flags(); } macro r800:indr @@ -518,16 +478,16 @@ macro r800:indr T(1); call ind if (B != 0) { - TADR = HL; - PC -= 2; block_io_interrupted_flags(); + PC -= 2; + block_io_interrupted_flags(); } macro otdr call outd if (B != 0) { - TADR = BC; - 5 * call nomreq_addr - PC -= 2; block_io_interrupted_flags(); + 5 * call nomreq_addr BC + PC -= 2; + block_io_interrupted_flags(); } macro r800:otdr @@ -535,8 +495,8 @@ macro r800:otdr T(1); call outd if (B != 0) { - TADR = BC; - PC -= 2; block_io_interrupted_flags(); + PC -= 2; + block_io_interrupted_flags(); } macro jump %po @@ -556,8 +516,7 @@ macro take_nmi m_iff1 = 0; m_r++; + 5 - TDAT = PC; - call wm16_sp + call wm16_sp PC PC = 0x0066; WZ = PC; set_service_attention<SA_NMI_PENDING, 0>(); @@ -598,11 +557,9 @@ macro take_interrupt // even, and all 8 bits will be used; even $FF is handled normally. // CALL opcode timing + 5 - TDAT = PC; - call wm16_sp + call wm16_sp PC m_tmp_irq_vector = (m_tmp_irq_vector & 0xff) | (m_i << 8); - TADR = m_tmp_irq_vector; - call rm16 + call rm16 m_tmp_irq_vector PC = TDAT; LOGMASKED(LOG_INT, "IM2 [$%04x] = $%04x\n", m_tmp_irq_vector, PC); } else if (m_im == 1) { @@ -610,8 +567,7 @@ macro take_interrupt LOGMASKED(LOG_INT, "'%s' IM1 $0038\n", tag()); // RST $38 + 5 - TDAT = PC; - call wm16_sp + call wm16_sp PC PC = 0x0038; } else { /* Interrupt mode 0. We check for CALL and JP instructions, @@ -624,8 +580,7 @@ macro take_interrupt if ((m_tmp_irq_vector & 0xff0000) == 0xcd0000) { // CALL $xxxx cycles + 11 - TDAT = PC; - call wm16_sp + call wm16_sp PC PC = m_tmp_irq_vector & 0xffff; } else if ((m_tmp_irq_vector & 0xff0000) == 0xc30000) { // JP $xxxx cycles @@ -634,8 +589,7 @@ macro take_interrupt } else if ((m_tmp_irq_vector & 0xc7) == 0xc7) { // RST $xx cycles + 5 - TDAT = PC; - call wm16_sp + call wm16_sp PC PC = m_tmp_irq_vector & 0x0038; } else if (m_tmp_irq_vector == 0xfb) { // EI cycles @@ -678,16 +632,13 @@ macro nsc800_take_interrupt // 'interrupt latency' cycles + 7 if (m_nsc800_irq_state[0]) { - TDAT = PC; - call wm16_sp + call wm16_sp PC PC = 0x003c; } else if (m_nsc800_irq_state[1]) { - TDAT = PC; - call wm16_sp + call wm16_sp PC PC = 0x0034; } else if (m_nsc800_irq_state[2]) { - TDAT = PC; - call wm16_sp + call wm16_sp PC PC = 0x002c; } else { + 2 * m_memrq_cycles @@ -773,10 +724,9 @@ cb05 # RLC L L = rlc(L); cb06 # RLC (HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = rlc(TDAT8); - call wm + call wm HL cb07 # RLC A A = rlc(A); @@ -800,10 +750,9 @@ cb0d # RRC L L = rrc(L); cb0e # RRC (HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = rrc(TDAT8); - call wm + call wm HL cb0f # RRC A A = rrc(A); @@ -827,10 +776,9 @@ cb15 # RL L L = rl(L); cb16 # RL (HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = rl(TDAT8); - call wm + call wm HL cb17 # RL A A = rl(A); @@ -854,10 +802,9 @@ cb1d # RR L L = rr(L); cb1e # RR (HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = rr(TDAT8); - call wm + call wm HL cb1f # RR A A = rr(A); @@ -881,10 +828,9 @@ cb25 # SLA L L = sla(L); cb26 # SLA (HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = sla(TDAT8); - call wm + call wm HL cb27 # SLA A A = sla(A); @@ -908,10 +854,9 @@ cb2d # SRA L L = sra(L); cb2e # SRA (HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = sra(TDAT8); - call wm + call wm HL cb2f # SRA A A = sra(A); @@ -935,10 +880,9 @@ cb35 # SLL L L = sll(L); cb36 # SLL (HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = sll(TDAT8); - call wm + call wm HL cb37 # SLL A A = sll(A); @@ -962,10 +906,9 @@ cb3d # SRL L L = srl(L); cb3e # SRL (HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = srl(TDAT8); - call wm + call wm HL cb3f # SRL A A = srl(A); @@ -989,8 +932,7 @@ cb45 # BIT 0,L bit(0, L); cb46 # BIT 0,(HL) - TADR = HL; - call rm_reg + call rm_reg HL bit_hl(0, TDAT8); cb47 # BIT 0,A @@ -1015,8 +957,7 @@ cb4d # BIT 1,L bit(1, L); cb4e # BIT 1,(HL) - TADR = HL; - call rm_reg + call rm_reg HL bit_hl(1, TDAT8); cb4f # BIT 1,A @@ -1041,8 +982,7 @@ cb55 # BIT 2,L bit(2, L); cb56 # BIT 2,(HL) - TADR = HL; - call rm_reg + call rm_reg HL bit_hl(2, TDAT8); cb57 # BIT 2,A @@ -1067,8 +1007,7 @@ cb5d # BIT 3,L bit(3, L); cb5e # BIT 3,(HL) - TADR = HL; - call rm_reg + call rm_reg HL bit_hl(3, TDAT8); cb5f # BIT 3,A @@ -1093,8 +1032,7 @@ cb65 # BIT 4,L bit(4, L); cb66 # BIT 4,(HL) - TADR = HL; - call rm_reg + call rm_reg HL bit_hl(4, TDAT8); cb67 # BIT 4,A @@ -1119,8 +1057,7 @@ cb6d # BIT 5,L bit(5, L); cb6e # BIT 5,(HL) - TADR = HL; - call rm_reg + call rm_reg HL bit_hl(5, TDAT8); cb6f # BIT 5,A @@ -1145,8 +1082,7 @@ cb75 # BIT 6,L bit(6, L); cb76 # BIT 6,(HL) - TADR = HL; - call rm_reg + call rm_reg HL bit_hl(6, TDAT8); cb77 # BIT 6,A @@ -1171,8 +1107,7 @@ cb7d # BIT 7,L bit(7, L); cb7e # BIT 7,(HL) - TADR = HL; - call rm_reg + call rm_reg HL bit_hl(7, TDAT8); cb7f # BIT 7,A @@ -1197,10 +1132,9 @@ cb85 # RES 0,L L = res(0, L); cb86 # RES 0,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = res(0, TDAT8); - call wm + call wm HL cb87 # RES 0,A A = res(0, A); @@ -1224,10 +1158,9 @@ cb8d # RES 1,L L = res(1, L); cb8e # RES 1,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = res(1, TDAT8); - call wm + call wm HL cb8f # RES 1,A A = res(1, A); @@ -1251,10 +1184,9 @@ cb95 # RES 2,L L = res(2, L); cb96 # RES 2,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = res(2, TDAT8); - call wm + call wm HL cb97 # RES 2,A A = res(2, A); @@ -1278,10 +1210,9 @@ cb9d # RES 3,L L = res(3, L); cb9e # RES 3,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = res(3, TDAT8); - call wm + call wm HL cb9f # RES 3,A A = res(3, A); @@ -1305,10 +1236,9 @@ cba5 # RES 4,L L = res(4, L); cba6 # RES 4,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = res(4, TDAT8); - call wm + call wm HL cba7 # RES 4,A A = res(4, A); @@ -1332,10 +1262,9 @@ cbad # RES 5,L L = res(5, L); cbae # RES 5,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = res(5, TDAT8); - call wm + call wm HL cbaf # RES 5,A A = res(5, A); @@ -1359,10 +1288,9 @@ cbb5 # RES 6,L L = res(6, L); cbb6 # RES 6,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = res(6, TDAT8); - call wm + call wm HL cbb7 # RES 6,A A = res(6, A); @@ -1386,10 +1314,9 @@ cbbd # RES 7,L L = res(7, L); cbbe # RES 7,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = res(7, TDAT8); - call wm + call wm HL cbbf # RES 7,A A = res(7, A); @@ -1413,10 +1340,9 @@ cbc5 # SET 0,L L = set(0, L); cbc6 # SET 0,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = set(0, TDAT8); - call wm + call wm HL cbc7 # SET 0,A A = set(0, A); @@ -1440,10 +1366,9 @@ cbcd # SET 1,L L = set(1, L); cbce # SET 1,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = set(1, TDAT8); - call wm + call wm HL cbcf # SET 1,A A = set(1, A); @@ -1467,10 +1392,9 @@ cbd5 # SET 2,L L = set(2, L); cbd6 # SET 2,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = set(2, TDAT8); - call wm + call wm HL cbd7 # SET 2,A A = set(2, A); @@ -1494,10 +1418,9 @@ cbdd # SET 3,L L = set(3, L); cbde # SET 3,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = set(3, TDAT8); - call wm + call wm HL cbdf # SET 3,A A = set(3, A); @@ -1521,10 +1444,9 @@ cbe5 # SET 4,L L = set(4, L); cbe6 # SET 4,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = set(4, TDAT8); - call wm + call wm HL cbe7 # SET 4,A A = set(4, A); @@ -1548,10 +1470,9 @@ cbed # SET 5,L L = set(5, L); cbee # SET 5,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = set(5, TDAT8); - call wm + call wm HL cbef # SET 5,A A = set(5, A); @@ -1575,10 +1496,9 @@ cbf5 # SET 6,L L = set(6, L); cbf6 # SET 6,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = set(6, TDAT8); - call wm + call wm HL cbf7 # SET 6,A A = set(6, A); @@ -1602,10 +1522,9 @@ cbfd # SET 7,L L = set(7, L); cbfe # SET 7,(HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = set(7, TDAT8); - call wm + call wm HL cbff # SET 7,A A = set(7, A); @@ -1616,388 +1535,324 @@ cbff # SET 7,A # rotate, shift and bit operations with (IX+o) ########################################################## fe00 # RLC B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = rlc(TDAT8); TDAT8 = B; - call wm + call wm m_ea fe01 # RLC C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = rlc(TDAT8); TDAT8 = C; - call wm + call wm m_ea fe02 # RLC D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = rlc(TDAT8); TDAT8 = D; - call wm + call wm m_ea fe03 # RLC E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = rlc(TDAT8); TDAT8 = E; - call wm + call wm m_ea fe04 # RLC H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = rlc(TDAT8); TDAT8 = H; - call wm + call wm m_ea fe05 # RLC L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = rlc(TDAT8); TDAT8 = L; - call wm + call wm m_ea fe06 # RLC (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = rlc(TDAT8); - call wm + call wm m_ea fe07 # RLC A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = rlc(TDAT8); TDAT8 = A; - call wm + call wm m_ea fe08 # RRC B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = rrc(TDAT8); TDAT8 = B; - call wm + call wm m_ea fe09 # RRC C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = rrc(TDAT8); TDAT8 = C; - call wm + call wm m_ea fe0a # RRC D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = rrc(TDAT8); TDAT8 = D; - call wm + call wm m_ea fe0b # RRC E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = rrc(TDAT8); TDAT8 = E; - call wm + call wm m_ea fe0c # RRC H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = rrc(TDAT8); TDAT8 = H; - call wm + call wm m_ea fe0d # RRC L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = rrc(TDAT8); TDAT8 = L; - call wm + call wm m_ea fe0e # RRC (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = rrc(TDAT8); - call wm + call wm m_ea fe0f # RRC A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = rrc(TDAT8); TDAT8 = A; - call wm + call wm m_ea fe10 # RL B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = rl(TDAT8); TDAT8 = B; - call wm + call wm m_ea fe11 # RL C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = rl(TDAT8); TDAT8 = C; - call wm + call wm m_ea fe12 # RL D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = rl(TDAT8); TDAT8 = D; - call wm + call wm m_ea fe13 # RL E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = rl(TDAT8); TDAT8 = E; - call wm + call wm m_ea fe14 # RL H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = rl(TDAT8); TDAT8 = H; - call wm + call wm m_ea fe15 # RL L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = rl(TDAT8); TDAT8 = L; - call wm + call wm m_ea fe16 # RL (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = rl(TDAT8); - call wm + call wm m_ea fe17 # RL A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = rl(TDAT8); TDAT8 = A; - call wm + call wm m_ea fe18 # RR B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = rr(TDAT8); TDAT8 = B; - call wm + call wm m_ea fe19 # RR C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = rr(TDAT8); TDAT8 = C; - call wm + call wm m_ea fe1a # RR D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = rr(TDAT8); TDAT8 = D; - call wm + call wm m_ea fe1b # RR E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = rr(TDAT8); TDAT8 = E; - call wm + call wm m_ea fe1c # RR H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = rr(TDAT8); TDAT8 = H; - call wm + call wm m_ea fe1d # RR L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = rr(TDAT8); TDAT8 = L; - call wm + call wm m_ea fe1e # RR (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = rr(TDAT8); - call wm + call wm m_ea fe1f # RR A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = rr(TDAT8); TDAT8 = A; - call wm + call wm m_ea fe20 # SLA B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = sla(TDAT8); TDAT8 = B; - call wm + call wm m_ea fe21 # SLA C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = sla(TDAT8); TDAT8 = C; - call wm + call wm m_ea fe22 # SLA D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = sla(TDAT8); TDAT8 = D; - call wm + call wm m_ea fe23 # SLA E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = sla(TDAT8); TDAT8 = E; - call wm + call wm m_ea fe24 # SLA H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = sla(TDAT8); TDAT8 = H; - call wm + call wm m_ea fe25 # SLA L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = sla(TDAT8); TDAT8 = L; - call wm + call wm m_ea fe26 # SLA (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = sla(TDAT8); - call wm + call wm m_ea fe27 # SLA A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = sla(TDAT8); TDAT8 = A; - call wm + call wm m_ea fe28 # SRA B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = sra(TDAT8); TDAT8 = B; - call wm + call wm m_ea fe29 # SRA C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = sra(TDAT8); TDAT8 = C; - call wm + call wm m_ea fe2a # SRA D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = sra(TDAT8); TDAT8 = D; - call wm + call wm m_ea fe2b # SRA E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = sra(TDAT8); TDAT8 = E; - call wm + call wm m_ea fe2c # SRA H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = sra(TDAT8); TDAT8 = H; - call wm + call wm m_ea fe2d # SRA L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = sra(TDAT8); TDAT8 = L; - call wm + call wm m_ea fe2e # SRA (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = sra(TDAT8); - call wm + call wm m_ea fe2f # SRA A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = sra(TDAT8); TDAT8 = A; - call wm + call wm m_ea fe30 # SLL B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = sll(TDAT8); TDAT8 = B; - call wm + call wm m_ea fe31 # SLL C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = sll(TDAT8); TDAT8 = C; - call wm + call wm m_ea fe32 # SLL D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = sll(TDAT8); TDAT8 = D; - call wm + call wm m_ea fe33 # SLL E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = sll(TDAT8); TDAT8 = E; - call wm + call wm m_ea fe34 # SLL H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = sll(TDAT8); TDAT8 = H; - call wm + call wm m_ea fe35 # SLL L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = sll(TDAT8); TDAT8 = L; - call wm + call wm m_ea fe36 # SLL (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = sll(TDAT8); - call wm + call wm m_ea fe37 # SLL A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = sll(TDAT8); TDAT8 = A; - call wm + call wm m_ea fe38 # SRL B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = srl(TDAT8); TDAT8 = B; - call wm + call wm m_ea fe39 # SRL C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = srl(TDAT8); TDAT8 = C; - call wm + call wm m_ea fe3a # SRL D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = srl(TDAT8); TDAT8 = D; - call wm + call wm m_ea fe3b # SRL E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = srl(TDAT8); TDAT8 = E; - call wm + call wm m_ea fe3c # SRL H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = srl(TDAT8); TDAT8 = H; - call wm + call wm m_ea fe3d # SRL L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = srl(TDAT8); TDAT8 = L; - call wm + call wm m_ea fe3e # SRL (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = srl(TDAT8); - call wm + call wm m_ea fe3f # SRL A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = srl(TDAT8); TDAT8 = A; - call wm + call wm m_ea fe40 # BIT 0,(XY+o) call jump fe46 @@ -2018,8 +1873,7 @@ fe45 # BIT 0,(XY+o) call jump fe46 fe46 # BIT 0,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea bit_xy(0, TDAT8); fe47 # BIT 0,(XY+o) @@ -2044,8 +1898,7 @@ fe4d # BIT 1,(XY+o) call jump fe4e fe4e # BIT 1,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea bit_xy(1, TDAT8); fe4f # BIT 1,(XY+o) @@ -2070,8 +1923,7 @@ fe55 # BIT 2,(XY+o) call jump fe56 fe56 # BIT 2,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea bit_xy(2, TDAT8); fe57 # BIT 2,(XY+o) @@ -2096,8 +1948,7 @@ fe5d # BIT 3,(XY+o) call jump fe5e fe5e # BIT 3,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea bit_xy(3, TDAT8); fe5f # BIT 3,(XY+o) @@ -2122,8 +1973,7 @@ fe65 # BIT 4,(XY+o) call jump fe66 fe66 # BIT 4,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea bit_xy(4, TDAT8); fe67 # BIT 4,(XY+o) @@ -2148,8 +1998,7 @@ fe6d # BIT 5,(XY+o) call jump fe6e fe6e # BIT 5,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea bit_xy(5, TDAT8); fe6f # BIT 5,(XY+o) @@ -2174,8 +2023,7 @@ fe75 # BIT 6,(XY+o) call jump fe76 fe76 # BIT 6,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea bit_xy(6, TDAT8); fe77 # BIT 6,(XY+o) @@ -2200,780 +2048,651 @@ fe7d # BIT 7,(XY+o) call jump fe7e fe7e # BIT 7,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea bit_xy(7, TDAT8); fe7f # BIT 7,(XY+o) call jump fe7e fe80 # RES 0,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = res(0, TDAT8); TDAT8 = B; - call wm + call wm m_ea fe81 # RES 0,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = res(0, TDAT8); TDAT8 = C; - call wm + call wm m_ea fe82 # RES 0,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = res(0, TDAT8); TDAT8 = D; - call wm + call wm m_ea fe83 # RES 0,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = res(0, TDAT8); TDAT8 = E; - call wm + call wm m_ea fe84 # RES 0,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = res(0, TDAT8); TDAT8 = H; - call wm + call wm m_ea fe85 # RES 0,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = res(0, TDAT8); TDAT8 = L; - call wm + call wm m_ea fe86 # RES 0,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = res(0, TDAT8); - call wm + call wm m_ea fe87 # RES 0,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = res(0, TDAT8); TDAT8 = A; - call wm + call wm m_ea fe88 # RES 1,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = res(1, TDAT8); TDAT8 = B; - call wm + call wm m_ea fe89 # RES 1,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = res(1, TDAT8); TDAT8 = C; - call wm + call wm m_ea fe8a # RES 1,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = res(1, TDAT8); TDAT8 = D; - call wm + call wm m_ea fe8b # RES 1,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = res(1, TDAT8); TDAT8 = E; - call wm + call wm m_ea fe8c # RES 1,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = res(1, TDAT8); TDAT8 = H; - call wm + call wm m_ea fe8d # RES 1,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = res(1, TDAT8); TDAT8 = L; - call wm + call wm m_ea fe8e # RES 1,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = res(1, TDAT8); - call wm + call wm m_ea fe8f # RES 1,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = res(1, TDAT8); TDAT8 = A; - call wm + call wm m_ea fe90 # RES 2,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = res(2, TDAT8); TDAT8 = B; - call wm + call wm m_ea fe91 # RES 2,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = res(2, TDAT8); TDAT8 = C; - call wm + call wm m_ea fe92 # RES 2,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = res(2, TDAT8); TDAT8 = D; - call wm + call wm m_ea fe93 # RES 2,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = res(2, TDAT8); TDAT8 = E; - call wm + call wm m_ea fe94 # RES 2,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = res(2, TDAT8); TDAT8 = H; - call wm + call wm m_ea fe95 # RES 2,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = res(2, TDAT8); TDAT8 = L; - call wm + call wm m_ea fe96 # RES 2,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = res(2, TDAT8); - call wm + call wm m_ea fe97 # RES 2,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = res(2, TDAT8); TDAT8 = A; - call wm + call wm m_ea fe98 # RES 3,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = res(3, TDAT8); TDAT8 = B; - call wm + call wm m_ea fe99 # RES 3,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = res(3, TDAT8); TDAT8 = C; - call wm + call wm m_ea fe9a # RES 3,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = res(3, TDAT8); TDAT8 = D; - call wm + call wm m_ea fe9b # RES 3,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = res(3, TDAT8); TDAT8 = E; - call wm + call wm m_ea fe9c # RES 3,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = res(3, TDAT8); TDAT8 = H; - call wm + call wm m_ea fe9d # RES 3,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = res(3, TDAT8); TDAT8 = L; - call wm + call wm m_ea fe9e # RES 3,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = res(3, TDAT8); - call wm + call wm m_ea fe9f # RES 3,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = res(3, TDAT8); TDAT8 = A; - call wm + call wm m_ea fea0 # RES 4,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = res(4, TDAT8); TDAT8 = B; - call wm + call wm m_ea fea1 # RES 4,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = res(4, TDAT8); TDAT8 = C; - call wm + call wm m_ea fea2 # RES 4,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = res(4, TDAT8); TDAT8 = D; - call wm + call wm m_ea fea3 # RES 4,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = res(4, TDAT8); TDAT8 = E; - call wm + call wm m_ea fea4 # RES 4,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = res(4, TDAT8); TDAT8 = H; - call wm + call wm m_ea fea5 # RES 4,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = res(4, TDAT8); TDAT8 = L; - call wm + call wm m_ea fea6 # RES 4,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = res(4, TDAT8); - call wm + call wm m_ea fea7 # RES 4,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = res(4, TDAT8); TDAT8 = A; - call wm + call wm m_ea fea8 # RES 5,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = res(5, TDAT8); TDAT8 = B; - call wm + call wm m_ea fea9 # RES 5,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = res(5, TDAT8); TDAT8 = C; - call wm + call wm m_ea feaa # RES 5,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = res(5, TDAT8); TDAT8 = D; - call wm + call wm m_ea feab # RES 5,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = res(5, TDAT8); TDAT8 = E; - call wm + call wm m_ea feac # RES 5,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = res(5, TDAT8); TDAT8 = H; - call wm + call wm m_ea fead # RES 5,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = res(5, TDAT8); TDAT8 = L; - call wm + call wm m_ea feae # RES 5,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = res(5, TDAT8); - call wm + call wm m_ea feaf # RES 5,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = res(5, TDAT8); TDAT8 = A; - call wm + call wm m_ea feb0 # RES 6,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = res(6, TDAT8); TDAT8 = B; - call wm + call wm m_ea feb1 # RES 6,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = res(6, TDAT8); TDAT8 = C; - call wm + call wm m_ea feb2 # RES 6,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = res(6, TDAT8); TDAT8 = D; - call wm + call wm m_ea feb3 # RES 6,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = res(6, TDAT8); TDAT8 = E; - call wm + call wm m_ea feb4 # RES 6,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = res(6, TDAT8); TDAT8 = H; - call wm + call wm m_ea feb5 # RES 6,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = res(6, TDAT8); TDAT8 = L; - call wm + call wm m_ea feb6 # RES 6,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = res(6, TDAT8); - call wm + call wm m_ea feb7 # RES 6,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = res(6, TDAT8); TDAT8 = A; - call wm + call wm m_ea feb8 # RES 7,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = res(7, TDAT8); TDAT8 = B; - call wm + call wm m_ea feb9 # RES 7,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = res(7, TDAT8); TDAT8 = C; - call wm + call wm m_ea feba # RES 7,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = res(7, TDAT8); TDAT8 = D; - call wm + call wm m_ea febb # RES 7,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = res(7, TDAT8); TDAT8 = E; - call wm + call wm m_ea febc # RES 7,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = res(7, TDAT8); TDAT8 = H; - call wm + call wm m_ea febd # RES 7,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = res(7, TDAT8); TDAT8 = L; - call wm + call wm m_ea febe # RES 7,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = res(7, TDAT8); - call wm + call wm m_ea febf # RES 7,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = res(7, TDAT8); TDAT8 = A; - call wm + call wm m_ea fec0 # SET 0,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = set(0, TDAT8); TDAT8 = B; - call wm + call wm m_ea fec1 # SET 0,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = set(0, TDAT8); TDAT8 = C; - call wm + call wm m_ea fec2 # SET 0,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = set(0, TDAT8); TDAT8 = D; - call wm + call wm m_ea fec3 # SET 0,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = set(0, TDAT8); TDAT8 = E; - call wm + call wm m_ea fec4 # SET 0,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = set(0, TDAT8); TDAT8 = H; - call wm + call wm m_ea fec5 # SET 0,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = set(0, TDAT8); TDAT8 = L; - call wm + call wm m_ea fec6 # SET 0,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = set(0, TDAT8); - call wm + call wm m_ea fec7 # SET 0,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = set(0, TDAT8); TDAT8 = A; - call wm + call wm m_ea fec8 # SET 1,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = set(1, TDAT8); TDAT8 = B; - call wm + call wm m_ea fec9 # SET 1,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = set(1, TDAT8); TDAT8 = C; - call wm + call wm m_ea feca # SET 1,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = set(1, TDAT8); TDAT8 = D; - call wm + call wm m_ea fecb # SET 1,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = set(1, TDAT8); TDAT8 = E; - call wm + call wm m_ea fecc # SET 1,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = set(1, TDAT8); TDAT8 = H; - call wm + call wm m_ea fecd # SET 1,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = set(1, TDAT8); TDAT8 = L; - call wm + call wm m_ea fece # SET 1,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = set(1, TDAT8); - call wm + call wm m_ea fecf # SET 1,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = set(1, TDAT8); TDAT8 = A; - call wm + call wm m_ea fed0 # SET 2,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = set(2, TDAT8); TDAT8 = B; - call wm + call wm m_ea fed1 # SET 2,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = set(2, TDAT8); TDAT8 = C; - call wm + call wm m_ea fed2 # SET 2,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = set(2, TDAT8); TDAT8 = D; - call wm + call wm m_ea fed3 # SET 2,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = set(2, TDAT8); TDAT8 = E; - call wm + call wm m_ea fed4 # SET 2,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = set(2, TDAT8); TDAT8 = H; - call wm + call wm m_ea fed5 # SET 2,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = set(2, TDAT8); TDAT8 = L; - call wm + call wm m_ea fed6 # SET 2,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = set(2, TDAT8); - call wm + call wm m_ea fed7 # SET 2,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = set(2, TDAT8); TDAT8 = A; - call wm + call wm m_ea fed8 # SET 3,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = set(3, TDAT8); TDAT8 = B; - call wm + call wm m_ea fed9 # SET 3,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = set(3, TDAT8); TDAT8 = C; - call wm + call wm m_ea feda # SET 3,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = set(3, TDAT8); TDAT8 = D; - call wm + call wm m_ea fedb # SET 3,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = set(3, TDAT8); TDAT8 = E; - call wm + call wm m_ea fedc # SET 3,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = set(3, TDAT8); TDAT8 = H; - call wm + call wm m_ea fedd # SET 3,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = set(3, TDAT8); TDAT8 = L; - call wm + call wm m_ea fede # SET 3,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = set(3, TDAT8); - call wm + call wm m_ea fedf # SET 3,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = set(3, TDAT8); TDAT8 = A; - call wm + call wm m_ea fee0 # SET 4,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = set(4, TDAT8); TDAT8 = B; - call wm + call wm m_ea fee1 # SET 4,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = set(4, TDAT8); TDAT8 = C; - call wm + call wm m_ea fee2 # SET 4,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = set(4, TDAT8); TDAT8 = D; - call wm + call wm m_ea fee3 # SET 4,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = set(4, TDAT8); TDAT8 = E; - call wm + call wm m_ea fee4 # SET 4,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = set(4, TDAT8); TDAT8 = H; - call wm + call wm m_ea fee5 # SET 4,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = set(4, TDAT8); TDAT8 = L; - call wm + call wm m_ea fee6 # SET 4,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = set(4, TDAT8); - call wm + call wm m_ea fee7 # SET 4,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = set(4, TDAT8); TDAT8 = A; - call wm + call wm m_ea fee8 # SET 5,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = set(5, TDAT8); TDAT8 = B; - call wm + call wm m_ea fee9 # SET 5,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = set(5, TDAT8); TDAT8 = C; - call wm + call wm m_ea feea # SET 5,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = set(5, TDAT8); TDAT8 = D; - call wm + call wm m_ea feeb # SET 5,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = set(5, TDAT8); TDAT8 = E; - call wm + call wm m_ea feec # SET 5,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = set(5, TDAT8); TDAT8 = H; - call wm + call wm m_ea feed # SET 5,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = set(5, TDAT8); TDAT8 = L; - call wm + call wm m_ea feee # SET 5,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = set(5, TDAT8); - call wm + call wm m_ea feef # SET 5,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = set(5, TDAT8); TDAT8 = A; - call wm + call wm m_ea fef0 # SET 6,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = set(6, TDAT8); TDAT8 = B; - call wm + call wm m_ea fef1 # SET 6,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = set(6, TDAT8); TDAT8 = C; - call wm + call wm m_ea fef2 # SET 6,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = set(6, TDAT8); TDAT8 = D; - call wm + call wm m_ea fef3 # SET 6,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = set(6, TDAT8); TDAT8 = E; - call wm + call wm m_ea fef4 # SET 6,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = set(6, TDAT8); TDAT8 = H; - call wm + call wm m_ea fef5 # SET 6,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = set(6, TDAT8); TDAT8 = L; - call wm + call wm m_ea fef6 # SET 6,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = set(6, TDAT8); - call wm + call wm m_ea fef7 # SET 6,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = set(6, TDAT8); TDAT8 = A; - call wm + call wm m_ea fef8 # SET 7,B = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea B = set(7, TDAT8); TDAT8 = B; - call wm + call wm m_ea fef9 # SET 7,C = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea C = set(7, TDAT8); TDAT8 = C; - call wm + call wm m_ea fefa # SET 7,D = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea D = set(7, TDAT8); TDAT8 = D; - call wm + call wm m_ea fefb # SET 7,E = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea E = set(7, TDAT8); TDAT8 = E; - call wm + call wm m_ea fefc # SET 7,H = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea H = set(7, TDAT8); TDAT8 = H; - call wm + call wm m_ea fefd # SET 7,L = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea L = set(7, TDAT8); TDAT8 = L; - call wm + call wm m_ea fefe # SET 7,(XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea TDAT8 = set(7, TDAT8); - call wm + call wm m_ea feff # SET 7,A = (XY+o) - TADR = m_ea; - call rm_reg + call rm_reg m_ea A = set(7, TDAT8); TDAT8 = A; - call wm + call wm m_ea ########################################################## @@ -3119,8 +2838,8 @@ dd21 # LD IX,w dd22 # LD (w),IX call arg16 - m_ea = TDAT; TADR = m_ea; TDAT = IX; - call wm16 + m_ea = TDAT; TDAT = IX; + call wm16 m_ea WZ = m_ea + 1; dd23 # INC IX @@ -3152,8 +2871,8 @@ dd29 # ADD IX,IX dd2a # LD IX,(w) call arg16 - m_ea = TDAT; TADR = m_ea; - call rm16 + m_ea = TDAT; + call rm16 m_ea IX = TDAT; WZ = m_ea + 1; dd2b # DEC IX @@ -3192,29 +2911,23 @@ dd33 # DB DD dd34 # INC (IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm_reg + 5 * call nomreq_addr PC-1 + call rm_reg m_ea inc(TDAT8); - call wm + call wm m_ea dd35 # DEC (IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm_reg + 5 * call nomreq_addr PC-1 + call rm_reg m_ea dec(TDAT8); - call wm + call wm m_ea dd36 # LD (IX+o),n call eax call arg - TADR = PC-1; - 2 * call nomreq_addr - TADR = m_ea; - call wm + 2 * call nomreq_addr PC-1 + call wm m_ea dd37 # DB DD illegal_1(); @@ -3277,10 +2990,8 @@ dd45 # LD B,LX dd46 # LD B,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea B = TDAT8; dd47 # DB DD @@ -3311,10 +3022,8 @@ dd4d # LD C,LX dd4e # LD C,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea C = TDAT8; dd4f # DB DD @@ -3345,10 +3054,8 @@ dd55 # LD D,LX dd56 # LD D,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea D = TDAT8; dd57 # DB DD @@ -3379,10 +3086,8 @@ dd5d # LD E,LX dd5e # LD E,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea E = TDAT8; dd5f # DB DD @@ -3408,10 +3113,8 @@ dd65 # LD HX,LX dd66 # LD H,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea H = TDAT8; dd67 # LD HX,A @@ -3436,10 +3139,8 @@ dd6d # LD LX,LX dd6e # LD L,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea L = TDAT8; dd6f # LD LX,A @@ -3447,45 +3148,39 @@ dd6f # LD LX,A dd70 # LD (IX+o),B call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = B; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = B; + call wm m_ea dd71 # LD (IX+o),C call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = C; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = C; + call wm m_ea dd72 # LD (IX+o),D call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = D; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = D; + call wm m_ea dd73 # LD (IX+o),E call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = E; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = E; + call wm m_ea dd74 # LD (IX+o),H call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = H; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = H; + call wm m_ea dd75 # LD (IX+o),L call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = L; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = L; + call wm m_ea dd76 # DB DD illegal_1(); @@ -3493,10 +3188,9 @@ dd76 # DB DD dd77 # LD (IX+o),A call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = A; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = A; + call wm m_ea dd78 # DB DD illegal_1(); @@ -3522,10 +3216,8 @@ dd7d # LD A,LX dd7e # LD A,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea A = TDAT8; dd7f # DB DD @@ -3556,10 +3248,8 @@ dd85 # ADD A,LX dd86 # ADD A,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea add_a(TDAT8); dd87 # DB DD @@ -3590,10 +3280,8 @@ dd8d # ADC A,LX dd8e # ADC A,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea adc_a(TDAT8); dd8f # DB DD @@ -3624,10 +3312,8 @@ dd95 # SUB LX dd96 # SUB (IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea sub_a(TDAT8); dd97 # DB DD @@ -3658,10 +3344,8 @@ dd9d # SBC A,LX dd9e # SBC A,(IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea sbc_a(TDAT8); dd9f # DB DD @@ -3692,10 +3376,8 @@ dda5 # AND LX dda6 # AND (IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea and_a(TDAT8); dda7 # DB DD @@ -3726,10 +3408,8 @@ ddad # XOR LX ddae # XOR (IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea xor_a(TDAT8); ddaf # DB DD @@ -3760,10 +3440,8 @@ ddb5 # OR LX ddb6 # OR (IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea or_a(TDAT8); ddb7 # DB DD @@ -3794,10 +3472,8 @@ ddbd # CP LX ddbe # CP (IX+o) call eax - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea cp(TDAT8); ddbf # DB DD @@ -3851,8 +3527,7 @@ ddca # DB DD ddcb # ** DD CB xx call eax call arg - TADR = PC-1; - 2 * call nomreq_addr + 2 * call nomreq_addr PC-1 call jump_prefixed 0xfe ddcc # DB DD @@ -3948,17 +3623,14 @@ dde2 # DB DD call jump 00e2 dde3 # EX (SP),IX - TDAT = IX; - call ex_sp - IX = TDAT; + call ex_sp IX dde4 # DB DD illegal_1(); call jump 00e4 dde5 # PUSH IX - TDAT = IX; - call push + call push IX dde6 # DB DD illegal_1(); @@ -4207,8 +3879,8 @@ fd21 # LD IY,w fd22 # LD (w),IY call arg16 - m_ea = TDAT; TADR = m_ea; TDAT = IY; - call wm16 + m_ea = TDAT; TDAT = IY; + call wm16 m_ea WZ = m_ea + 1; fd23 # INC IY @@ -4240,8 +3912,8 @@ fd29 # ADD IY,IY fd2a # LD IY,(w) call arg16 - m_ea = TDAT; TADR = m_ea; - call rm16 + m_ea = TDAT; + call rm16 m_ea IY = TDAT; WZ = m_ea + 1; fd2b # DEC IY @@ -4280,29 +3952,23 @@ fd33 # DB FD fd34 # INC (IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm_reg + 5 * call nomreq_addr PC-1 + call rm_reg m_ea inc(TDAT8); - call wm + call wm m_ea fd35 # DEC (IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm_reg + 5 * call nomreq_addr PC-1 + call rm_reg m_ea dec(TDAT8); - call wm + call wm m_ea fd36 # LD (IY+o),n call eay call arg - TADR = PC-1; - 2 * call nomreq_addr - TADR = m_ea; - call wm + 2 * call nomreq_addr PC-1 + call wm m_ea fd37 # DB FD illegal_1(); @@ -4365,10 +4031,8 @@ fd45 # LD B,LY fd46 # LD B,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea B = TDAT8; fd47 # DB FD @@ -4399,10 +4063,8 @@ fd4d # LD C,LY fd4e # LD C,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea C = TDAT8; fd4f # DB FD @@ -4433,10 +4095,8 @@ fd55 # LD D,LY fd56 # LD D,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea D = TDAT8; fd57 # DB FD @@ -4467,10 +4127,8 @@ fd5d # LD E,LY fd5e # LD E,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea E = TDAT8; fd5f # DB FD @@ -4496,10 +4154,8 @@ fd65 # LD HY,LY fd66 # LD H,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea H = TDAT8; fd67 # LD HY,A @@ -4524,10 +4180,8 @@ fd6d # LD LY,LY fd6e # LD L,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea L = TDAT8; fd6f # LD LY,A @@ -4535,45 +4189,39 @@ fd6f # LD LY,A fd70 # LD (IY+o),B call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = B; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = B; + call wm m_ea fd71 # LD (IY+o),C call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = C; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = C; + call wm m_ea fd72 # LD (IY+o),D call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = D; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = D; + call wm m_ea fd73 # LD (IY+o),E call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = E; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = E; + call wm m_ea fd74 # LD (IY+o),H call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = H; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = H; + call wm m_ea fd75 # LD (IY+o),L call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = L; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = L; + call wm m_ea fd76 # DB FD illegal_1(); @@ -4581,10 +4229,9 @@ fd76 # DB FD fd77 # LD (IY+o),A call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; TDAT8 = A; - call wm + 5 * call nomreq_addr PC-1 + TDAT8 = A; + call wm m_ea fd78 # DB FD illegal_1(); @@ -4610,10 +4257,8 @@ fd7d # LD A,LY fd7e # LD A,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea A = TDAT8; fd7f # DB FD @@ -4644,10 +4289,8 @@ fd85 # ADD A,LY fd86 # ADD A,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea add_a(TDAT8); fd87 # DB FD @@ -4678,10 +4321,8 @@ fd8d # ADC A,LY fd8e # ADC A,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea adc_a(TDAT8); fd8f # DB FD @@ -4712,10 +4353,8 @@ fd95 # SUB LY fd96 # SUB (IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea sub_a(TDAT8); fd97 # DB FD @@ -4746,10 +4385,8 @@ fd9d # SBC A,LY fd9e # SBC A,(IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea sbc_a(TDAT8); fd9f # DB FD @@ -4780,10 +4417,8 @@ fda5 # AND LY fda6 # AND (IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea and_a(TDAT8); fda7 # DB FD @@ -4814,10 +4449,8 @@ fdad # XOR LY fdae # XOR (IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea xor_a(TDAT8); fdaf # DB FD @@ -4848,10 +4481,8 @@ fdb5 # OR LY fdb6 # OR (IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea or_a(TDAT8); fdb7 # DB FD @@ -4882,10 +4513,8 @@ fdbd # CP LY fdbe # CP (IY+o) call eay - TADR = PC-1; - 5 * call nomreq_addr - TADR = m_ea; - call rm + 5 * call nomreq_addr PC-1 + call rm m_ea cp(TDAT8); fdbf # DB FD @@ -4939,8 +4568,7 @@ fdca # DB FD fdcb # ** FD CB xx call eay call arg - TADR = PC-1; - 2 * call nomreq_addr + 2 * call nomreq_addr PC-1 call jump_prefixed 0xfe fdcc # DB FD @@ -5036,17 +4664,14 @@ fde2 # DB FD call jump 00e2 fde3 # EX (SP),IY - TDAT = IY; - call ex_sp - IY = TDAT; + call ex_sp IY fde4 # DB FD illegal_1(); call jump 00e4 fde5 # PUSH IY - TDAT = IY; - call push + call push IY fde6 # DB FD illegal_1(); @@ -5348,14 +4973,13 @@ ed3f # DB ED illegal_2(); ed40 # IN B,(C) - TADR = BC; - call in - B = TDAT8; set_f((F & CF) | SZP[B]); WZ = TADR + 1; + call in BC + B = TDAT8; set_f((F & CF) | SZP[B]); WZ = BC + 1; ed41 # OUT (C),B - TADR = BC; TDAT8 = B; - call out - WZ = TADR + 1; + TDAT8 = B; + call out BC + WZ = BC + 1; ed42 # SBC HL,BC TDAT = BC; @@ -5363,8 +4987,8 @@ ed42 # SBC HL,BC ed43 # LD (w),BC call arg16 - m_ea = TDAT; TADR = m_ea; TDAT = BC; - call wm16 + m_ea = TDAT; TDAT = BC; + call wm16 m_ea WZ = m_ea + 1; ed44 # NEG @@ -5380,14 +5004,13 @@ ed47 # LD i,A call ld_i_a ed48 # IN C,(C) - TADR = BC; - call in - C = TDAT8; set_f((F & CF) | SZP[C]); WZ = TADR + 1; + call in BC + C = TDAT8; set_f((F & CF) | SZP[C]); WZ = BC + 1; ed49 # OUT (C),C - TADR = BC; TDAT8 = C; - call out - WZ = TADR + 1; + TDAT8 = C; + call out BC + WZ = BC + 1; ed4a # ADC HL,BC TDAT = BC; @@ -5395,8 +5018,8 @@ ed4a # ADC HL,BC ed4b # LD BC,(w) call arg16 - m_ea = TDAT; TADR = m_ea; - call rm16 + m_ea = TDAT; + call rm16 m_ea BC = TDAT; WZ = m_ea + 1; ed4c # NEG @@ -5412,14 +5035,13 @@ ed4f # LD r,A call ld_r_a ed50 # IN D,(C) - TADR = BC; - call in - D = TDAT8; set_f((F & CF) | SZP[D]); WZ = TADR + 1; + call in BC + D = TDAT8; set_f((F & CF) | SZP[D]); WZ = BC + 1; ed51 # OUT (C),D - TADR = BC; TDAT8 = D; - call out - WZ = TADR + 1; + TDAT8 = D; + call out BC + WZ = BC + 1; ed52 # SBC HL,DE TDAT = DE; @@ -5427,8 +5049,8 @@ ed52 # SBC HL,DE ed53 # LD (w),DE call arg16 - m_ea = TDAT; TADR = m_ea; TDAT = DE; - call wm16 + m_ea = TDAT; TDAT = DE; + call wm16 m_ea WZ = m_ea + 1; ed54 # NEG @@ -5444,14 +5066,13 @@ ed57 # LD A,i call ld_a_i ed58 # IN E,(C) - TADR = BC; - call in - E = TDAT8; set_f((F & CF) | SZP[E]); WZ = TADR + 1; + call in BC + E = TDAT8; set_f((F & CF) | SZP[E]); WZ = BC + 1; ed59 # OUT (C),E - TADR = BC; TDAT8 = E; - call out - WZ = TADR + 1; + TDAT8 = E; + call out BC + WZ = BC + 1; ed5a # ADC HL,DE TDAT = DE; @@ -5459,8 +5080,8 @@ ed5a # ADC HL,DE ed5b # LD DE,(w) call arg16 - m_ea = TDAT; TADR = m_ea; - call rm16 + m_ea = TDAT; + call rm16 m_ea DE = TDAT; WZ = m_ea + 1; ed5c # NEG @@ -5476,14 +5097,13 @@ ed5f # LD A,r call ld_a_r ed60 # IN H,(C) - TADR = BC; - call in - H = TDAT8; set_f((F & CF) | SZP[H]); WZ = TADR + 1; + call in BC + H = TDAT8; set_f((F & CF) | SZP[H]); WZ = BC + 1; ed61 # OUT (C),H - TADR = BC; TDAT8 = H; - call out - WZ = TADR + 1; + TDAT8 = H; + call out BC + WZ = BC + 1; ed62 # SBC HL,HL TDAT = HL; @@ -5491,8 +5111,8 @@ ed62 # SBC HL,HL ed63 # LD (w),HL call arg16 - m_ea = TDAT; TADR = m_ea; TDAT = HL; - call wm16 + m_ea = TDAT; TDAT = HL; + call wm16 m_ea WZ = m_ea + 1; ed64 # NEG @@ -5508,14 +5128,13 @@ ed67 # RRD (HL) call rrd ed68 # IN L,(C) - TADR = BC; - call in - L = TDAT8; set_f((F & CF) | SZP[L]); WZ = TADR + 1; + call in BC + L = TDAT8; set_f((F & CF) | SZP[L]); WZ = BC + 1; ed69 # OUT (C),L - TADR = BC; TDAT8 = L; - call out - WZ = TADR + 1; + TDAT8 = L; + call out BC + WZ = BC + 1; ed6a # ADC HL,HL TDAT = HL; @@ -5523,8 +5142,8 @@ ed6a # ADC HL,HL ed6b # LD HL,(w) call arg16 - m_ea = TDAT; TADR = m_ea; - call rm16 + m_ea = TDAT; + call rm16 m_ea HL = TDAT; WZ = m_ea + 1; ed6c # NEG @@ -5540,14 +5159,13 @@ ed6f # RLD (HL) call rld ed70 # IN 0,(C) - TADR = BC; - call in - set_f((F & CF) | SZP[TDAT8]); WZ = TADR + 1; + call in BC + set_f((F & CF) | SZP[TDAT8]); WZ = BC + 1; ed71 # OUT (C),0 - TADR = BC; TDAT8 = 0; - call out - WZ = TADR + 1; + TDAT8 = 0; + call out BC + WZ = BC + 1; ed72 # SBC HL,SP TDAT = SP; @@ -5555,8 +5173,8 @@ ed72 # SBC HL,SP ed73 # LD (w),SP call arg16 - m_ea = TDAT; TADR = m_ea; TDAT = SP; - call wm16 + m_ea = TDAT; TDAT = SP; + call wm16 m_ea WZ = m_ea + 1; ed74 # NEG @@ -5572,14 +5190,13 @@ ed77 # DB ED,77 illegal_2(); ed78 # IN A,(C) - TADR = BC; - call in - A = TDAT8; set_f((F & CF) | SZP[A]); WZ = TADR + 1; + call in BC + A = TDAT8; set_f((F & CF) | SZP[A]); WZ = BC + 1; ed79 # OUT (C),A - TADR = BC; TDAT8 = A; - call out - WZ = TADR + 1; + TDAT8 = A; + call out BC + WZ = BC + 1; ed7a # ADC HL,SP TDAT = SP; @@ -5587,8 +5204,8 @@ ed7a # ADC HL,SP ed7b # LD SP,(w) call arg16 - m_ea = TDAT; TADR = m_ea; - call rm16 + m_ea = TDAT; + call rm16 m_ea SP = TDAT; WZ = m_ea + 1; ed7c # NEG @@ -5998,8 +5615,8 @@ edff # DB ED BC = TDAT; 0002 # LD (BC),A - TADR = BC; TDAT8 = A; - call wm + TDAT8 = A; + call wm BC WZ_L = (BC + 1) & 0xFF; WZ_H = A; 0003 # INC BC @@ -6028,8 +5645,7 @@ edff # DB ED HL = TDAT; 000a # LD A,(BC) - TADR = BC; - call rm + call rm BC A = TDAT8; WZ = BC+1; 000b # DEC BC @@ -6059,8 +5675,8 @@ edff # DB ED DE = TDAT; 0012 # LD (DE),A - TADR = DE; TDAT8 = A; - call wm + TDAT8 = A; + call wm DE WZ_L = (DE + 1) & 0xFF; WZ_H = A; 0013 # INC DE @@ -6089,8 +5705,7 @@ edff # DB ED HL = TDAT; 001a # LD A,(DE) - TADR = DE; - call rm + call rm DE A = TDAT8; WZ = DE + 1; 001b # DEC DE @@ -6120,8 +5735,8 @@ edff # DB ED 0022 # LD (w),HL call arg16 - m_ea = TDAT; TADR = TDAT; TDAT = HL; - call wm16 + m_ea = TDAT; TDAT = HL; + call wm16 m_ea WZ = m_ea + 1; 0023 # INC HL @@ -6152,8 +5767,8 @@ edff # DB ED 002a # LD HL,(w) call arg16 - m_ea = TDAT; TADR = TDAT; - call rm16 + m_ea = TDAT; + call rm16 m_ea HL = TDAT; WZ = m_ea + 1; 002b # DEC HL @@ -6183,8 +5798,8 @@ edff # DB ED 0032 # LD (w),A call arg16 - m_ea = TDAT; TADR = m_ea; TDAT8 = A; - call wm + m_ea = TDAT; TDAT8 = A; + call wm m_ea WZ_L = (m_ea + 1) & 0xFF; WZ_H = A; 0033 # INC SP @@ -6192,21 +5807,18 @@ edff # DB ED SP++; 0034 # INC (HL) - TADR = HL; - call rm_reg + call rm_reg HL inc(TDAT8); - call wm + call wm HL 0035 # DEC (HL) - TADR = HL; - call rm_reg + call rm_reg HL dec(TDAT8); - call wm + call wm HL 0036 # LD (HL),n call arg - TADR = HL; - call wm + call wm HL 0037 # SCF set_f((F & (SF | ZF | PF)) | CF | (((F & Q) | A) & (YF | XF))); @@ -6222,8 +5834,8 @@ edff # DB ED 003a # LD A,(w) call arg16 - m_ea = TDAT; TADR = TDAT; - call rm + m_ea = TDAT; + call rm m_ea A = TDAT8; WZ = m_ea + 1; 003b # DEC SP @@ -6261,8 +5873,7 @@ edff # DB ED B = L; 0046 # LD B,(HL) - TADR = HL; - call rm + call rm HL B = TDAT8; 0047 # LD B,A @@ -6286,8 +5897,7 @@ edff # DB ED C = L; 004e # LD C,(HL) - TADR = HL; - call rm + call rm HL C = TDAT8; 004f # LD C,A @@ -6311,8 +5921,7 @@ edff # DB ED D = L; 0056 # LD D,(HL) - TADR = HL; - call rm + call rm HL D = TDAT8; 0057 # LD D,A @@ -6336,8 +5945,7 @@ edff # DB ED E = L; 005e # LD E,(HL) - TADR = HL; - call rm + call rm HL E = TDAT8; 005f # LD E,A @@ -6361,8 +5969,7 @@ edff # DB ED H = L; 0066 # LD H,(HL) - TADR = HL; - call rm + call rm HL H = TDAT8; 0067 # LD H,A @@ -6386,43 +5993,42 @@ edff # DB ED 006d # LD L,L 006e # LD L,(HL) - TADR = HL; - call rm + call rm HL L = TDAT8; 006f # LD L,A L = A; 0070 # LD (HL),B - TADR = HL; TDAT = B; - call wm + TDAT = B; + call wm HL 0071 # LD (HL),C - TADR = HL; TDAT = C; - call wm + TDAT = C; + call wm HL 0072 # LD (HL),D - TADR = HL; TDAT = D; - call wm + TDAT = D; + call wm HL 0073 # LD (HL),E - TADR = HL; TDAT = E; - call wm + TDAT = E; + call wm HL 0074 # LD (HL),H - TADR = HL; TDAT = H; - call wm + TDAT = H; + call wm HL 0075 # LD (HL),L - TADR = HL; TDAT = L; - call wm + TDAT = L; + call wm HL 0076 # HALT halt(); 0077 # LD (HL),A - TADR = HL; TDAT = A; - call wm + TDAT = A; + call wm HL 0078 # LD A,B A = B; @@ -6443,8 +6049,7 @@ edff # DB ED A = L; 007e # LD A,(HL) - TADR = HL; - call rm + call rm HL A = TDAT8; 007f # LD A,A @@ -6468,8 +6073,7 @@ edff # DB ED add_a(L); 0086 # ADD A,(HL) - TADR = HL; - call rm + call rm HL add_a(TDAT8); 0087 # ADD A,A @@ -6494,8 +6098,7 @@ edff # DB ED adc_a(L); 008e # ADC A,(HL) - TADR = HL; - call rm + call rm HL adc_a(TDAT8); 008f # ADC A,A @@ -6520,8 +6123,7 @@ edff # DB ED sub_a(L); 0096 # SUB (HL) - TADR = HL; - call rm + call rm HL sub_a(TDAT8); 0097 # SUB A @@ -6546,8 +6148,7 @@ edff # DB ED sbc_a(L); 009e # SBC A,(HL) - TADR = HL; - call rm + call rm HL sbc_a(TDAT8); 009f # SBC A,A @@ -6572,8 +6173,7 @@ edff # DB ED and_a(L); 00a6 # AND (HL) - TADR = HL; - call rm + call rm HL and_a(TDAT8); 00a7 # AND A @@ -6598,8 +6198,7 @@ edff # DB ED xor_a(L); 00ae # XOR (HL) - TADR = HL; - call rm + call rm HL xor_a(TDAT8); 00af # XOR A @@ -6624,8 +6223,7 @@ edff # DB ED or_a(L); 00b6 # OR (HL) - TADR = HL; - call rm + call rm HL or_a(TDAT8); 00b7 # OR A @@ -6650,8 +6248,7 @@ edff # DB ED cp(L); 00be # CP (HL) - TADR = HL; - call rm + call rm HL cp(TDAT8); 00bf # CP A @@ -6677,8 +6274,7 @@ edff # DB ED call call_cond 00c5 # PUSH BC - TDAT = BC; - call push + call push BC 00c6 # ADD A,n call arg @@ -6731,17 +6327,17 @@ edff # DB ED 00d3 # OUT (n),A call arg - TADR = TDAT8 | (A << 8); TDAT = A; - call out - WZ_L = ((TADR & 0xff) + 1) & 0xff; WZ_H = A; + TDAT2 = TDAT8 | (A << 8); + TDAT = A; + call out TDAT2 + WZ_L = ((TDAT2 & 0xff) + 1) & 0xff; WZ_H = A; 00d4 # CALL NC,a TDAT8 = !(F & CF); call call_cond 00d5 # PUSH DE - TDAT = DE; - call push + call push DE 00d6 # SUB n call arg @@ -6763,9 +6359,9 @@ edff # DB ED 00db # IN A,(n) call arg - TADR = TDAT8 | (A << 8); - call in - A = TDAT8; WZ = TADR + 1; + TDAT2 = TDAT8 | (A << 8); + call in TDAT2 + A = TDAT8; WZ = TDAT2 + 1; 00dc # CALL C,a TDAT8 = F & CF; @@ -6795,17 +6391,14 @@ edff # DB ED call jp_cond 00e3 # EX HL,(SP) - TDAT = HL; - call ex_sp - HL = TDAT; + call ex_sp HL 00e4 # CALL PO,a TDAT8 = !(F & PF); call call_cond 00e5 # PUSH HL - TDAT = HL; - call push + call push HL 00e6 # AND n call arg @@ -6863,8 +6456,7 @@ edff # DB ED call call_cond 00f5 # PUSH AF - TDAT = AF; - call push + call push AF 00f6 # OR n call arg @@ -7600,10 +7192,9 @@ r800:cb35 # SLL L L = r800_sll(L); r800:cb36 # SLL (HL) - TADR = HL; - call rm_reg + call rm_reg HL TDAT8 = r800_sll(TDAT8); - call wm + call wm HL r800:cb37 # SLL A A = r800_sll(A); @@ -8736,11 +8327,9 @@ r800:00f3 # DI ########################################################## macro ldix { - TADR = HL; - call rm + call rm HL if (TDAT8 != A) { - TADR = DE; - call wm + call wm DE ; } HL++; @@ -8750,11 +8339,9 @@ macro ldix macro lddx { - TADR = HL; - call rm + call rm HL if (TDAT8 != A) { - TADR = DE; - call wm + call wm DE ; } DE++; @@ -8817,15 +8404,14 @@ z80n:ed36 # add bc,** BC += TDAT; z80n:ed8a # push ** - call arg16 - using std::swap; swap(TDAT_H, TDAT_L); - call push + call arg + TDAT_H = TDAT_L; + call arg + call push TDAT z80n:ed90 # outinb - TADR = HL; - call rm - TADR = BC; - call out + call rm HL + call out BC HL++; z80n:ed91 # nextreg *,* @@ -8851,18 +8437,15 @@ z80n:ed95 # setae A = 0x80 >> (E & 7); z80n:ed98 # jp (c) - TADR = BC; - call in + call in BC PC = (PC & 0xc000) + (TDAT8 << 6); z80n:eda4 # ldix call ldix z80n:eda5 # ldws - TADR = HL; - call rm - TADR = DE; - call wm + call rm HL + call wm DE L++; inc(D); @@ -8875,11 +8458,9 @@ z80n:edb4 # ldirx PC -= 2; z80n:edb7 # ldpirx - TADR = (HL & 0xfff8) + (E & 7); - call rm + call rm (HL & 0xfff8) + (E & 7) if (TDAT8 != A) { - TADR = DE; - call wm + call wm DE ; } DE++; diff --git a/src/devices/sound/disc_cls.h b/src/devices/sound/disc_cls.h index 2ea8498d2f1..72a5c39920a 100644 --- a/src/devices/sound/disc_cls.h +++ b/src/devices/sound/disc_cls.h @@ -120,14 +120,14 @@ public: /* Add gain to the output and put into the buffers */ /* Clipping will be handled by the main sound system */ double val = DISCRETE_INPUT(0) * DISCRETE_INPUT(1); - m_stream->put(m_stream_output, m_outview_sample++, val * (1.0 / 32768.0)); + m_stream->put(m_stream_output, m_stream_sample++, val * (1.0 / 32768.0)); } virtual int max_output() override { return 0; } - virtual void set_output_ptr(sound_stream &stream, int output) override { m_stream = &stream; m_stream_output = output; m_outview_sample = 0; } + virtual void set_output_ptr(sound_stream &stream, int output) override { m_stream = &stream; m_stream_output = output; m_stream_sample = 0; } private: sound_stream *m_stream = nullptr; int m_stream_output = 0; - u32 m_outview_sample = 0U; + u32 m_stream_sample = 0U; }; DISCRETE_CLASS(dso_csvlog, 0, @@ -228,13 +228,15 @@ public: virtual void start() override; virtual void input_write(int sub_node, uint8_t data ) override; virtual bool is_buffered() { return false; } + void set_input_ptr(sound_stream &stream, int input) { m_stream = &stream; m_stream_input = input; m_stream_sample = 0; } /* This is called by discrete_sound_device */ void stream_start(); -//protected: - uint32_t m_stream_in_number = 0; - uint32_t m_inview_sample = 0; +protected: + sound_stream *m_stream = nullptr; + uint32_t m_stream_input = 0; + uint32_t m_stream_sample = 0; private: double m_gain = 0.0; /* node gain */ double m_offset = 0.0; /* node offset */ diff --git a/src/devices/sound/disc_inp.hxx b/src/devices/sound/disc_inp.hxx index 432f8c076bf..ef000e6b331 100644 --- a/src/devices/sound/disc_inp.hxx +++ b/src/devices/sound/disc_inp.hxx @@ -246,12 +246,9 @@ DISCRETE_STEP(dss_input_stream) { /* the context pointer is set to point to the current input stream data in discrete_stream_update */ if (m_is_buffered) - { set_output(0, m_data * m_gain + m_offset); - m_inview_sample++; - } else - set_output(0, 0); + set_output(0, m_stream->get(m_stream_input, m_stream_sample ++) * 32768.0 * m_gain + m_offset); } DISCRETE_RESET(dss_input_stream) @@ -282,8 +279,6 @@ DISCRETE_START(dss_input_stream) { discrete_base_node::start(); - /* Stream out number is set during start */ - m_stream_in_number = DSS_INPUT_STREAM__STREAM; m_gain = DSS_INPUT_STREAM__GAIN; m_offset = DSS_INPUT_STREAM__OFFSET; diff --git a/src/devices/sound/discrete.cpp b/src/devices/sound/discrete.cpp index 5e5c1a05ecf..3e97bff89da 100644 --- a/src/devices/sound/discrete.cpp +++ b/src/devices/sound/discrete.cpp @@ -1056,10 +1056,13 @@ void discrete_sound_device::sound_stream_update(sound_stream &stream) outputnum++; } + int inputnum = 0; + /* Setup any input streams */ for (discrete_dss_input_stream_node *node : m_input_stream_list) { - node->m_inview_sample = 0; + node->set_input_ptr(stream, inputnum); + inputnum++; } /* just process it */ diff --git a/src/devices/sound/spkrdev.cpp b/src/devices/sound/spkrdev.cpp index 841656ab4ac..16dc6199c2f 100644 --- a/src/devices/sound/spkrdev.cpp +++ b/src/devices/sound/spkrdev.cpp @@ -268,7 +268,7 @@ void speaker_sound_device::level_w(int new_level) /* This is redundant because time update has to be done within sound_stream_update() anyway, * however this ensures synchronization between the speaker and stream timing: */ - m_channel_last_sample_time = m_channel->sample_time(); + m_channel_last_sample_time = m_channel->end_time(); /* sample_time() may be ahead of us */ if (m_channel_last_sample_time > time) |