No había visto tu respuesta, Metalbrain.
En condiciones generales, nz sí que es más común que z (en proporción 255 a 1), pero en mi caso partícular son equiprobables.
Pero vamos, que al final se queda como está, con el if-then-else por jrs. Modificar uno de los métodos (añadir el xor a) pues es mejorar este caso para penalizar el resto de sitios en los que se usa. Y al fin y al cabo era más por optimizar estéticamente el código que porque necesitara más velocidad o memoria.
El código del Genesis es inmanejable para mí; no sé ni por dónde empezar a mirar. De momento me tengo que conformar con los ejemplos del asMSX y el Jumping
Muchas gracias a todos por las respuestas.
Y aquí voy con otras dos consultas:
Ahora mismo, mi código (asMSX) empieza con:
.page 1
.size 32
rom_start:
.rom ; ID ("AB")
.start MAIN ; INIT
.org rom_start + $10 ; STATEMENT, DEVICE, TEXT, Reserved
MAIN:
; ...
El caso es que la directiva .rom ya hace automáticamente dicho padding (e incluso el .start), pero siempre lo veo puesto explícitamente. Es decir, si simplifico lo anterior a lo siguiente, genera exactamente el mismo fichero .rom:
.page 1
.size 32
.rom ; ID ("AB"), INIT, STATEMENT, DEVICE, TEXT, Reserved
; ...
Entonces viene la duda, porque en todos los ejemplos he visto el start y, en la mayoría, el padding. ¿Se deja simplemente por claridad o hay algún motivo que se me escapa? (en algunos casos he visto el padding de la tercera línea con .dws)
Y una última cosa: he visto que algunos listados empiezan por ld sp, $f380 ¿Es necesario? ¿El stack pointer no está inicialmente apuntando ya ahí?
Lo dicho, muchas gracias a todos de antemano.