; ; 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, 7 ld e, 7 ld hl, cubo call print ld d, 15 ld e, 15 ld hl, cubo call print ret ; rutina de impresión de un sprite de 16x16 pixels con atributos en cualquier posición 8x8 print push de ; salvamos los valores vertical y horizontal push de ; salvamos los valores vertical y horizontal 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 ; Ahora imprimimos los atributos pop de ; recuperamos el valor horizontal call cdrw call catr call colr pop de ; recuperamos el valor horizontal inc d ; incrementamos una línea call cdrw call catr call colr 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 colr ld a,(hl) ld (de),a inc e inc hl ld a,(hl) ld (de),a dec e inc hl 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 catr ld a,d rra rra rra ; multiplicamos por 32 and 3 ; nos quedamos con los tres bits bajos or 88 ; apuntamos al comienzo del mapa de atributos ld d,a ; ya tenemos d listo, e no hay que cambiarlo ret ; sprite de un cubo 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 defb 12,13,14,15 ; - TINTA - ; ; NEGRO 0 00000000 ; AZUL 1 00000001 ; ROJO 2 00000010 ; MAGENTA 3 00000011 ; VERDE 4 00000100 ; AZULADO 5 00000101 ; AMARILLO 6 00000110 ; BLANCO 7 00000111 ; ; - PAPEL - ; ; NEGRO 0 00000000 ; AZUL 8 00001000 ; ROJO 16 00010000 ; MAGENTA 24 00011000 ; VERDE 32 00100000 ; AZULADO 40 00101000 ; AMARILLO 48 00110000 ; BLANCO 56 00111000