; ; Prueba de codigo ensamblador ; ; Radastan ORG 32768 ; RUTINA DE PREPARACION DE PANTALLA ld a, 15 ; papel azul y tita en blanco ld (23693),a ; actualizamos ATTR ld (23624),a ; variable del sistema BORDCR, parte baja de la pantalla call 3503 ld a, 1 ; borde azul, para actualización inmediata out (254), a ; D será la posición del cursor vertical en caracteres ; E será la posición del cursor horizontal en caracteres ld d, 12 ld e, 12 ld hl, cubo call print ld d, 14 ld e, 14 ld hl, cubo call print ret ; rutina de impresión de un sprite de 16x16 pixels sin atributos en cualquier posición 8x8 print push de ; salvamos los valores vertical y horizontal call cdrw ; calculamos dirección de pantalla ld b, 8 call draw pop de ; recuperamos el valor horizontal inc d ; incrementamos una línea call cdrw ld b, 8 call draw ret draw ld a,(hl) ; hl indica la posición del sprite en memoria ld (de),a ; de indica la posición de pantalla inc hl inc e ld a,(hl) ; esta parte imprime el segundo byte ld (de),a inc hl dec e inc d djnz draw ; decrementa B y si es cero deja de saltar a draw ret cdrw ld a, d ; recuperamos el valor vertical and 7 ; nos quedamos con la posición en el tercio rrca rrca rrca ; rotamos para dejar su valor en múltiplos de 32 (linea) and 224 ; borramos el resto de bits por si las moscas or e ; sumamos el valor horizontal ld e, a ; e preparado ld a, d and 24 ; modificamos según el tercio de pantalla or 64 ; nos posicionamos a partir de 16384 (16384=64+0 en dos bytes) ld d, a ; d preparado ret ; sprite de un trozo de muro cubo defb 255,255,128,1,128,1,128,1,128,1,128,1,128,1,128,1 defb 128,1,128,1,128,1,128,1,128,1,128,1,128,1,255,255