Improve bit rotation/shift explanations by using Unicode box diagrams

The existing explanations have proven confusing to many,
and presenting the instructions in a more visual manner should help a lot.

Additionally, the Unicode codepoints are typed as-is in the source,
because that allows much more WYSIWYG editing, and god damn it this is the year
two thousand and twenty three, if your man and/or terminal software does't
support Unicode, then what are you *doing*.
This commit is contained in:
ISSOtm
2023-06-17 12:38:31 +02:00
parent a0dfa916e6
commit 6d806238fb

View File

@@ -1321,9 +1321,14 @@ Flags: None affected.
.Ss RL r8 .Ss RL r8
Rotate bits in register Rotate bits in register
.Ar r8 .Ar r8
left through carry. left, through the carry flag.
.Pp .Pp
.D1 C <- [7 <- 0] <- C .Bd -literal
┏━ Flags ━┓ ┏━━━━━━━ r8 ━━━━━━┓
┌─╂─ C ←╂─╂─ b7 ← ... ← b0 ←╂─┐
│ ┗━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━┛ │
└─────────────────────────────────┘
.Ed
.Pp .Pp
Cycles: 2 Cycles: 2
.Pp .Pp
@@ -1343,9 +1348,14 @@ Set according to result.
.Ss RL [HL] .Ss RL [HL]
Rotate the byte pointed to by Rotate the byte pointed to by
.Sy HL .Sy HL
left through carry. left, through the carry flag.
.Pp .Pp
.D1 C <- [7 <- 0] <- C .Bd -literal
┏━ Flags ━┓ ┏━━━━━━ [HL] ━━━━━┓
┌─╂─ C ←╂─╂─ b7 ← ... ← b0 ←╂─┐
│ ┗━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━┛ │
└─────────────────────────────────┘
.Ed
.Pp .Pp
Cycles: 4 Cycles: 4
.Pp .Pp
@@ -1356,9 +1366,14 @@ Flags: See
.Ss RLA .Ss RLA
Rotate register Rotate register
.Sy A .Sy A
left through carry. left, through the carry flag.
.Pp .Pp
.D1 C <- [7 <- 0] <- C .Bd -literal
┏━ Flags ━┓ ┏━━━━━━━ A ━━━━━━━┓
┌─╂─ C ←╂─╂─ b7 ← ... ← b0 ←╂─┐
│ ┗━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━┛ │
└─────────────────────────────────┘
.Ed
.Pp .Pp
Cycles: 1 Cycles: 1
.Pp .Pp
@@ -1380,7 +1395,12 @@ Rotate register
.Ar r8 .Ar r8
left. left.
.Pp .Pp
.D1 C <- [7 <- 0] <- [7] .Bd -literal
┏━ Flags ━┓ ┏━━━━━━━ r8 ━━━━━━┓
┃ C ←╂─┬─╂─ b7 ← ... ← b0 ←╂─┐
┗━━━━━━━━━┛ │ ┗━━━━━━━━━━━━━━━━━┛ │
└─────────────────────┘
.Ed
.Pp .Pp
Cycles: 2 Cycles: 2
.Pp .Pp
@@ -1402,7 +1422,12 @@ Rotate the byte pointed to by
.Sy HL .Sy HL
left. left.
.Pp .Pp
.D1 C <- [7 <- 0] <- [7] .Bd -literal
┏━ Flags ━┓ ┏━━━━━━ [HL] ━━━━━┓
┃ C ←╂─┬─╂─ b7 ← ... ← b0 ←╂─┐
┗━━━━━━━━━┛ │ ┗━━━━━━━━━━━━━━━━━┛ │
└─────────────────────┘
.Ed
.Pp .Pp
Cycles: 4 Cycles: 4
.Pp .Pp
@@ -1415,7 +1440,12 @@ Rotate register
.Sy A .Sy A
left. left.
.Pp .Pp
.D1 C <- [7 <- 0] <- [7] .Bd -literal
┏━ Flags ━┓ ┏━━━━━━━ A ━━━━━━━┓
┃ C ←╂─┬─╂─ b7 ← ... ← b0 ←╂─┐
┗━━━━━━━━━┛ │ ┗━━━━━━━━━━━━━━━━━┛ │
└─────────────────────┘
.Ed
.Pp .Pp
Cycles: 1 Cycles: 1
.Pp .Pp
@@ -1435,9 +1465,14 @@ Set according to result.
.Ss RR r8 .Ss RR r8
Rotate register Rotate register
.Ar r8 .Ar r8
right through carry. right, through the carry flag.
.Pp .Pp
.D1 C -> [7 -> 0] -> C .Bd -literal
┏━━━━━━━ r8 ━━━━━━┓ ┏━ Flags ━┓
┌─╂→ b7 → ... → b0 ─╂─╂→ C ─╂─┐
│ ┗━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━┛ │
└─────────────────────────────────┘
.Ed
.Pp .Pp
Cycles: 2 Cycles: 2
.Pp .Pp
@@ -1457,9 +1492,14 @@ Set according to result.
.Ss RR [HL] .Ss RR [HL]
Rotate the byte pointed to by Rotate the byte pointed to by
.Sy HL .Sy HL
right through carry. right, through the carry flag.
.Pp .Pp
.D1 C -> [7 -> 0] -> C .Bd -literal
┏━━━━━━ [HL] ━━━━━┓ ┏━ Flags ━┓
┌─╂→ b7 → ... → b0 ─╂─╂→ C ─╂─┐
│ ┗━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━┛ │
└─────────────────────────────────┘
.Ed
.Pp .Pp
Cycles: 4 Cycles: 4
.Pp .Pp
@@ -1470,9 +1510,14 @@ Flags: See
.Ss RRA .Ss RRA
Rotate register Rotate register
.Sy A .Sy A
right through carry. right, through the carry flag.
.Pp .Pp
.D1 C -> [7 -> 0] -> C .Bd -literal
┏━━━━━━━ A ━━━━━━━┓ ┏━ Flags ━┓
┌─╂→ b7 → ... → b0 ─╂─╂→ C ─╂─┐
│ ┗━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━┛ │
└─────────────────────────────────┘
.Ed
.Pp .Pp
Cycles: 1 Cycles: 1
.Pp .Pp
@@ -1494,7 +1539,12 @@ Rotate register
.Ar r8 .Ar r8
right. right.
.Pp .Pp
.D1 [0] -> [7 -> 0] -> C .Bd -literal
┏━━━━━━━ r8 ━━━━━━┓ ┏━ Flags ━┓
┌─╂→ b7 → ... → b0 ─╂─┬─╂→ C ┃
│ ┗━━━━━━━━━━━━━━━━━┛ │ ┗━━━━━━━━━┛
└─────────────────────┘
.Ed
.Pp .Pp
Cycles: 2 Cycles: 2
.Pp .Pp
@@ -1516,7 +1566,12 @@ Rotate the byte pointed to by
.Sy HL .Sy HL
right. right.
.Pp .Pp
.D1 [0] -> [7 -> 0] -> C .Bd -literal
┏━━━━━━ [HL] ━━━━━┓ ┏━ Flags ━┓
┌─╂→ b7 → ... → b0 ─╂─┬─╂→ C ┃
│ ┗━━━━━━━━━━━━━━━━━┛ │ ┗━━━━━━━━━┛
└─────────────────────┘
.Ed
.Pp .Pp
Cycles: 4 Cycles: 4
.Pp .Pp
@@ -1529,7 +1584,12 @@ Rotate register
.Sy A .Sy A
right. right.
.Pp .Pp
.D1 [0] -> [7 -> 0] -> C .Bd -literal
┏━━━━━━━ A ━━━━━━━┓ ┏━ Flags ━┓
┌─╂→ b7 → ... → b0 ─╂─┬─╂→ C ┃
│ ┗━━━━━━━━━━━━━━━━━┛ │ ┗━━━━━━━━━┛
└─────────────────────┘
.Ed
.Pp .Pp
Cycles: 1 Cycles: 1
.Pp .Pp
@@ -1654,7 +1714,11 @@ Flags: None affected.
Shift Left Arithmetically register Shift Left Arithmetically register
.Ar r8 . .Ar r8 .
.Pp .Pp
.D1 C <- [7 <- 0] <- 0 .Bd -literal
┏━ Flags ━┓ ┏━━━━━━━ r8 ━━━━━━┓
┃ C ←╂─╂─ b7 ← ... ← b0 ←╂─ 0
┗━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━┛
.Ed
.Pp .Pp
Cycles: 2 Cycles: 2
.Pp .Pp
@@ -1675,7 +1739,11 @@ Set according to result.
Shift Left Arithmetically the byte pointed to by Shift Left Arithmetically the byte pointed to by
.Sy HL . .Sy HL .
.Pp .Pp
.D1 C <- [7 <- 0] <- 0 .Bd -literal
┏━ Flags ━┓ ┏━━━━━━ [HL] ━━━━━┓
┃ C ←╂─╂─ b7 ← ... ← b0 ←╂─ 0
┗━━━━━━━━━┛ ┗━━━━━━━━━━━━━━━━━┛
.Ed
.Pp .Pp
Cycles: 4 Cycles: 4
.Pp .Pp
@@ -1685,9 +1753,14 @@ Flags: See
.Sx SLA r8 .Sx SLA r8
.Ss SRA r8 .Ss SRA r8
Shift Right Arithmetically register Shift Right Arithmetically register
.Ar r8 . .Ar r8
.Pq bit 7 of Ar r8 No is unchanged .
.Pp .Pp
.D1 [7] -> [7 -> 0] -> C .Bd -literal
┏━━━━━━ r8 ━━━━━━┓ ┏━ Flags ━┓
┃ b7 → ... → b0 ─╂─╂→ C ┃
┗━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━┛
.Ed
.Pp .Pp
Cycles: 2 Cycles: 2
.Pp .Pp
@@ -1706,9 +1779,14 @@ Set according to result.
.El .El
.Ss SRA [HL] .Ss SRA [HL]
Shift Right Arithmetically the byte pointed to by Shift Right Arithmetically the byte pointed to by
.Sy HL . .Sy HL
.Pq bit 7 of the byte pointed to by Sy HL No is unchanged .
.Pp .Pp
.D1 [7] -> [7 -> 0] -> C .Bd -literal
┏━━━━━ [HL] ━━━━━┓ ┏━ Flags ━┓
┃ b7 → ... → b0 ─╂─╂→ C ┃
┗━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━┛
.Ed
.Pp .Pp
Cycles: 4 Cycles: 4
.Pp .Pp
@@ -1720,7 +1798,11 @@ Flags: See
Shift Right Logically register Shift Right Logically register
.Ar r8 . .Ar r8 .
.Pp .Pp
.D1 0 -> [7 -> 0] -> C .Bd -literal
┏━━━━━━━ r8 ━━━━━━┓ ┏━ Flags ━┓
0 ─╂→ b7 → ... → b0 ─╂─╂→ C ┃
┗━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━┛
.Ed
.Pp .Pp
Cycles: 2 Cycles: 2
.Pp .Pp
@@ -1741,7 +1823,11 @@ Set according to result.
Shift Right Logically the byte pointed to by Shift Right Logically the byte pointed to by
.Sy HL . .Sy HL .
.Pp .Pp
.D1 0 -> [7 -> 0] -> C .Bd -literal
┏━━━━━━ [HL] ━━━━━┓ ┏━ Flags ━┓
0 ─╂→ b7 → ... → b0 ─╂─╂→ C ┃
┗━━━━━━━━━━━━━━━━━┛ ┗━━━━━━━━━┛
.Ed
.Pp .Pp
Cycles: 4 Cycles: 4
.Pp .Pp