CONSOLIDATION.md Phase 6. Both lived untracked in the project root -- on one
disk, backed up by nothing.
tools/ppc-manual/ 393 files, 3.7 MB. 455 instructions, 350 family pages,
598 mnemonics resolvable through index.json, plus the
generator that produced them.
tools/run-canary.sh the oracle launcher.
🔴 THE LAUNCHER WAS BROKEN IN TWO WAYS AND IS REWRITTEN, not copied:
* it pointed at `xenia-rs/sylpheed.iso`, a SYMLINK. Wine cannot resolve one
and says "path invalid", which reads as a corrupt image rather than a path
problem -- it has cost a session before. It now points at the real file and
warns if handed a symlink.
* it hardcoded one machine's absolute paths, and named `xenia-rs`, which this
consolidation retires. Now derived from the script's own location, with
SYLPH_CANARY_BIN / SYLPH_ISO overrides and a check that each exists.
The standing constraints are in its header where someone will read them: one
emulator at a time, Canary runs MUTED, and never judge a crash or a hang from
a Bash-launched run -- a SIGKILL that looked like the binary was the editor's
process supervisor.
⚠️ The manual's GENERATOR reads the xenia-rs source tree, which is going away.
Its decoder now lives here as crates/sylpheed-ppc, so the generator must be
repointed before it is run again. Recorded in the README rather than left for
someone to discover; the manual's content is checked in and regenerates from
nothing implicitly.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
Form D — D — Displacement (load/store and immediate ALU)
Bit Layout
| Bits | Field | Meaning |
|---|---|---|
| 0–5 | OPCD |
primary opcode |
| 6–10 | RT |
destination GPR (or RS when storing) |
| 11–15 | RA |
source GPR (0 ⇒ literal 0 for RA0 forms) |
| 16–31 | D/SI/UI |
16-bit signed or unsigned immediate |
Instructions Using This Form
| Mnemonic | Opcode | Group | Description |
|---|---|---|---|
tdi |
0x08000000 |
branch | Trap Doubleword Immediate |
twi |
0x0c000000 |
branch | Trap Word Immediate |
mulli |
0x1c000000 |
integer | Multiply Low Immediate |
subficx |
0x20000000 |
integer | Subtract From Immediate Carrying |
cmpli |
0x28000000 |
integer | Compare Logical Immediate |
cmpi |
0x2c000000 |
integer | Compare Immediate |
addic |
0x30000000 |
integer | Add Immediate Carrying |
addic. |
0x34000000 |
integer | Add Immediate Carrying and Record |
addi |
0x38000000 |
integer | Add Immediate |
addis |
0x3c000000 |
integer | Add Immediate Shifted |
ori |
0x60000000 |
integer | OR Immediate |
oris |
0x64000000 |
integer | OR Immediate Shifted |
xori |
0x68000000 |
integer | XOR Immediate |
xoris |
0x6c000000 |
integer | XOR Immediate Shifted |
andi. |
0x70000000 |
integer | AND Immediate |
andis. |
0x74000000 |
integer | AND Immediate Shifted |
lwz |
0x80000000 |
memory | Load Word and Zero |
lwzu |
0x84000000 |
memory | Load Word and Zero with Update |
lbz |
0x88000000 |
memory | Load Byte and Zero |
lbzu |
0x8c000000 |
memory | Load Byte and Zero with Update |
stw |
0x90000000 |
memory | Store Word |
stwu |
0x94000000 |
memory | Store Word with Update |
stb |
0x98000000 |
memory | Store Byte |
stbu |
0x9c000000 |
memory | Store Byte with Update |
lhz |
0xa0000000 |
memory | Load Half Word and Zero |
lhzu |
0xa4000000 |
memory | Load Half Word and Zero with Update |
lha |
0xa8000000 |
memory | Load Half Word Algebraic |
lhau |
0xac000000 |
memory | Load Half Word Algebraic with Update |
sth |
0xb0000000 |
memory | Store Half Word |
sthu |
0xb4000000 |
memory | Store Half Word with Update |
lmw |
0xb8000000 |
memory | Load Multiple Word |
stmw |
0xbc000000 |
memory | Store Multiple Word |
lfs |
0xc0000000 |
memory | Load Floating-Point Single |
lfsu |
0xc4000000 |
memory | Load Floating-Point Single with Update |
lfd |
0xc8000000 |
memory | Load Floating-Point Double |
lfdu |
0xcc000000 |
memory | Load Floating-Point Double with Update |
stfs |
0xd0000000 |
memory | Store Floating-Point Single |
stfsu |
0xd4000000 |
memory | Store Floating-Point Single with Update |
stfd |
0xd8000000 |
memory | Store Floating-Point Double |
stfdu |
0xdc000000 |
memory | Store Floating-Point Double with Update |