144. Bit zero page

añadir el opcode BIT en página cero ``0x24``.

Lección 144 de 356 · tests/chapter_01_cpu/test_144_BIT_zero_page.py

Por qué existe este paso

El primer opcode BIT debe obtener un operando de memoria en lugar de modificar A, para después delegar sus reglas distintas de Z/N/V en la primitiva de instrucción.

En este paso, la lección 143 ya añade `bit. Como primera lección de opcode de BIT, añade su importación y exactamente el siguiente manejador/entrada de tabla en emulator/cpu/opcodes.py`:

from emulator.cpu.instructions import (..., bit)

def bit_zero_page(cpu: CPU):
    addr = zero_page(cpu)
    value = cpu.bus.read(addr)
    bit(cpu, value)

OPCODE_TABLE = {
    ...
    0x24: bit_zero_page,
}

`addressing_modes.zero_page` consume el operando como una dirección; la lectura del bus proporciona el valor cuyos bits comprueba BIT. Z/N/V pueden cambiar, mientras que A, Carry, X, Y y la memoria son invariantes; el opcode más el operando avanza el PC dos bytes.

Concepto erróneo: el byte del operando no se comprueba directamente y BIT no escribe el byte direccionado. Fuera de alcance: BIT absoluto es la lección 145.

Ejecutar esta lección

uv run pytest tests/chapter_01_cpu/test_144_BIT_zero_page.py -v