sábado, 10 de octubre de 2020

Imprimir scores en cpctelera

 Fran Gallego:

Un ejemplo para un score de 4 dígitos


Si tienes el score en HL


y le sumas una puntuación que está en DE


ld hl, #0x4995

ld de, #0x0010

ld a, l

add e

daa

ld l, a

ld a, h

adc d

daa

ld h, a


con eso sumas y da 0x4995+ 0x10 = 0x5005


Es como si sumaras en decimal


Pues sacando cada dígito por separado


porque cada dígito está codificado en 4 bits


Son dígitos hexadecimales


Si tienes A = 0x95


Los primeros 4 bits son un 9 ( 1001 )


Los segundos 4 bits son un 5 ( 0101 )


Así que sólo tienes que hacer operaciones de bits para quedarte con cada parte


y luego sumarles 48 para convertirlos en ASCII


Por ejemplo, si A = 0x95 = 0b10010101


puedes hacer esto para imprimir el 5


and #0x0F

add #48

call cpct_drawCharM0_asm


Con el AND te quedas sólo con los 4 últimos bits (el 5 )


le sumas 48 y da 53 (carácter del 5 en ASCII)


y se lo pasas a drawChar para imprimir


Si quieres imprimir el 9 de A = 0x95


harías esto


rrca

rrca

rrca

rrca

and #0x0F

add #48

call cpct_drawCharM0_asm


Rotas los bits de A 4 veces para poner abajo los 4 bits de arriba


y haces lo mismo de antes


De hecho, igual este año lo comento en clase porque es algo que nunca he explicado y creo que puede ser útil

No hay comentarios:

Publicar un comentario