Changes

Z80

26 bytes removed, 11 March
/* Block group */
| cpd || 11101101 10101001 || 4 || 16 (4,4,3,5) || + || + || X || + || X || cc || 1 || - || tmp := a - (hl) => flags, bc -= 1, hl -= 1,
f5 := [tmp - hf].1, f3 = [tmp - hf].3
|| ccompare Compare and Decrement
|-
| cpi || 11101101 10100001 || 4 || 16 (4,4,3,5)|| + || + || X || + || X || cc || 1 || - || tmp := a - (hl) => flags, bc -= 1, hl += 1,
f5 := [tmp - hf].1, f3 = [tmp - hf].3
|| ccompare Compare and ixyncrementIncrement
|-
| cpdr || 11101101 10111001 || 6/4 || 21/16 (4,4,3,5,5)/(4,4,3,5) || + || + || X || + || X || cc || 1 || - || cpd, if bc <> 0 and nz then pc -= 2 || Compare and Decrement, repeatRepeat
|-
| cpir || 11101101 10110001 || 6/4 || 21/16 (4,4,3,5,5)/(4,4,3,5) || + || + || X || + || X || cc || 1 || - || cpi, if bc <> 0 and nz then pc -= 2 || Compare and Increment, repeatRepeat
|-
| ldd || 11101101 10101000 || 5 || 16 (4,4,3,5) || - || - || X || 0 || X || cc || 0 || - || tmp := (hl), (de) := tmp, de -= 1, hl -= 1,
| ldi || 11101101 10100000 || 5 || 16 (4,4,3,5) || - || - || X || 0 || X || cc || 0 || - || tmp := (hl), (de) := tmp, de += 1, hl += 1,
bc -= 1, f5 := [tmp + a].1, f3 := [tmp + a].3
|| Load and ixyncrementIncrement
|-
| lddr || 11101101 10111000 || 6/5 || 21/16 (4,4,3,5,5)/(4,4,3,5) || - || - || X || 0 || X || cc || 0 || - || ldd, if bc <> 0 then pc -= 2 || Load and Decrement, repeatRepeat
|-
| ldir || 11101101 10110000 || 6/5 || 21/16 (4,4,3,5,5)/(4,4,3,5) || - || - || X || 0 || X || cc || 0 || - || ldi, if bc <> 0 then pc -= 2 || Load and Increment, repeatRepeat
|-
| ind || 11101101 10101010 || 5 || 16 (4,5,4,3) || + || + || + || X || + || X || X || X || tmp := ((c)), (hl) := tmp, hl -= 1,
hf := cf := tmp2 > 255
|| ixyI/O ixynput Input and Decrement
|-
| ini || 11101101 10100010 || 5 || 16 (4,5,4,3) || + || + || + || X || + || X || X || X || tmp := ((c)), (hl) := tmp, hl += 1,
hf := cf := tmp2 > 255
|| ixyI/O ixynput Input and ixyncrementIncrement
|-
| indr || 11101101 10111010 || 6/5 || 21/16 (4,5,4,3,5)/(4,5,4,3) || + || + || + || X || + || X || X || X || ind, if b <> 0 then pc -= 2 || I/O Input and Decrement, repeatRepeat
|-
| inir || 11101101 10110010 || 6/5 || 21/16 (4,5,4,3,5)/(4,5,4,3) || + || + || + || X || + || X || X || X || ini, if b <> 0 then pc -= 2 || I/O Input and Increment, repeatRepeat
|-
| outd || 11101101 10101011 || 5 || 16 (4,5,3,4) || + || + || + || X || + || X || X || X || tmp := (hl), ((c)) := tmp, hl -= 1,
hf := cf := tmp2 > 255
|| ixyI/O Output and Decrement
|-
| outi || 11101101 10100011 || 5 || 16 (4,5,3,4) || + || + || + || X || + || X || X || X || tmp := (hl), ((c)) := tmp, hl += 1,
hf := cf := tmp2 > 255
|| ixyI/O Output and ixyncrementIncrement
|-
| otdr || 11101101 10111011 || 6/5 || 21/16 (4,5,3,4,5)/(4,5,3,4) || + || + || + || X || + || X || X || X || outd, if b <> 0 then pc -= 2 || I/O Output and Decrement, repeatRepeat
|-
| otir || 11101101 10110011 || 6/5 || 21/16 (4,5,3,4,5)/(4,5,3,4) || + || + || + || X || + || X || X || X || outi, if b <> 0 then pc -= 2 || I/O Output and Increment, repeatRepeat
|}
note: The ixynixy INI instruction has incorrect timing in the official Zilog manual. [https://forums.nesdev.org/viewtopic.php?p=181645f#p181645 Source]
=== ixy/O group ===
13,173
edits