145. Bit absolute

añadir el opcode BIT absoluto ``0x2C``.

Lección 145 de 356 · tests/chapter_01_cpu/test_145_BIT_absolute.py

Por qué existe este paso

BIT absoluto extiende la prueba que solo afecta a flags a todo el espacio de direcciones y verifica que su operando de dos bytes se decodifica como una dirección de memoria little-endian.

En este paso, con la semántica de BIT y su importación de opcode ya establecidas en las lecciones 143-144, añade exactamente lo siguiente a `emulator/cpu/opcodes.py`:

def bit_absolute(cpu: CPU):
    addr = absolute(cpu)
    value = cpu.bus.read(addr)
    bit(cpu, value)

OPCODE_TABLE = {
    ...
    0x2C: bit_absolute,
}

`emulator/cpu/addressing_modes.py::absolute usa CPU.fetch_word` para decodificar la dirección little-endian. El manejador realiza una única lectura del bus y BIT solo consume ese valor. Z/N/V pueden cambiar; A, Carry, X, Y y la memoria permanecen invariantes; el opcode más la palabra avanza el PC tres bytes.

Concepto erróneo: `2C 02 20 no comprueba el literal $2002`; lee esa dirección, y cualquier efecto secundario propio del bus sigue siendo comportamiento del bus. Fuera de alcance: CMP y sus opcodes de comparación comienzan en la lección 146.

Ejecutar esta lección

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