105. Rol zero page
wire ROL Zero Page (opcode ``0x26``).
Lesson 105 of 356 · tests/chapter_01_cpu/test_105_ROL_zero_page.py
In this step, after the accumulator wiring in lesson 104, add only the zero-page adapter and table entry.
Complete example implementation in the production locations
`emulator/cpu/opcodes.py::rol_zero_page`::
def rol_zero_page(cpu: CPU):
addr = zero_page(cpu)
rol(cpu, addr)`emulator/cpu/opcodes.py::OPCODE_TABLE`::
0x26: rol_zero_page,Why this step exists
The opcode layer resolves the operand; the lesson-102 primitive owns read/modify/write and flags.
Invariants: `zero_page(cpu) consumes one operand byte and returns an address in $0000-$00FF; 26 10 rotates RAM $0010` and final PC is start+2. A remains unchanged and ROL's C/Z/N rules are preserved.
Misconception: `$10` is the address of the byte to rotate, not the byte value itself; do not rotate the instruction stream operand.
Out of scope: indexed zero page is 106, absolute modes are 107-108, ROR starts at 109, and exact cycle timing is later work.
Run this lesson
uv run pytest tests/chapter_01_cpu/test_105_ROL_zero_page.py -v