Buenas!
Estaba programando unas cosillas y me he encontrado con un problemilla curioso. Seguramente soy yo que meto la gamba, pero no sé exactamente por qué. Os cuento. Tengo un fragmento de código tal que este:
ld hl, (MAPX)
ld (PARAMS), hl
ld bc, 0
sbc hl, bc
jr c, .CHY
En general funciona bien, pero algo falla cuando (MAPX) vale cero. Igual falla en otros casos, pero en lo que estoy haciendo sólo he detectado el problema en esa situación.
Si (MAPX) vale cero, en realidad sbc hace "0 menos 0". El caso es que a veces tras la operación el carry se pone a uno y otras se pone a cero sin ninguna razón aparente. No lo he probado en un MSX real, pero el fallo aparece tanto en el blueMSX como en el Meisei.
¿Alguna idea de por qué pasa esto?
Y, ya que estamos: ¿hay alguna forma mejor que un SBC y mirar el carry para comparar dos números de 16 bits?
Saludos!
---
Toni