118. And página cero
añadir el opcode AND de página cero ``0x25``.
Lección 118 de 356 · tests/chapter_01_cpu/test_118_AND_zero_page.py
En este paso, con `and_a importado por la lección 117, añade solo el handler de página cero y la entrada en la tabla en emulator/cpu/opcodes.py`.
Por qué existe este paso
AND también debe consumir valores de la memoria; el modo de página cero verifica que el byte de operando se trate como una dirección y no como un valor inmediato.
Implementación sugerida
def and_zero_page(cpu: CPU):
addr = zero_page(cpu)
value = cpu.bus.read(addr)
and_a(cpu, value)
OPCODE_TABLE = {
...
0x25: and_zero_page,
}`addressing_modes.zero_page captura la dirección de un byte; a diferencia del modo inmediato, el handler debe leer el valor en esa dirección antes de llamar a instructions.and_a. 25 10 usa cpu.bus[$0010]`, cambia A y Z/N, preserva Carry/Overflow y la memoria, y avanza PC dos bytes.
Concepto erróneo: ni pases la dirección `0x10 directamente a and_a ni escribas el resultado de nuevo en $0010`; AND no es una instrucción de lectura/modificación/escritura. Fuera del alcance: página cero,X y los modos de AND más amplios (lecciones 119-124).
Ejecutar esta lección
uv run pytest tests/chapter_01_cpu/test_118_AND_zero_page.py -v