Pequeñas macros útiles para hacer juegos

Todo sobre la creación, diseño y programación de nuevo software para
nuestro Spectrum

Moderador: Sir Cilve Sinclair

Responder
Bubu
Freddy Hardest
Mensajes: 544
Registrado: Mié Oct 31, 2007 12:15 am

Pequeñas macros útiles para hacer juegos

Mensaje por Bubu » Dom Dic 23, 2007 2:17 am

Buenas noches / días / tardes, speccies,

en este hilo voy a ir colgando (y todo el que quiera) pequeñas macros en ensamblador para todo aquel que se atreva a hacer sus pinitos en este lenguaje pues las utilice y se ahorre el tener que hacerlas de nuevo. Son unas utilidades que realizan una función concreta:

- borra la pantalla
- lee el teclado
- escribe un mensaje
- emite un sonido
- etc etc

todo ello sin utilizar las rutinas de la ROM, en el menor espacio posible, y lleno de comentarios para explicar el porqué de cada línea. En cada macro añadiré la utilidad, y un pequeño trozo de código llamado TEST para mostrar su utilización.


La priemra rutina que muestro es CL_ATT, que borra la pantalla estableciendo el color según el registro A.
El color va en este formato:
FBPPPIII, donde

F = FLASH (0 ó 1)
B = BRIGHT (0 ó 1)
PPP = PAPER (0 a 7)
III = INK (0 a 7)

Código: Seleccionar todo

   ORG   50000

TEST
   ld   a, %00100000   ;carga en a el color PAPER 4, INK 0
   call   CL_ATT      ;llama a la rutina de borrado
FIN
   jr   FIN      ;bucle infinito





; ------------------------------------------------
; Nombre:  CL_ATT
; Función: Borra la pantalla y establece un color
; Entrada: a = color (%fbpppiii)
; Salida:  ninguna
; RegMod:  bc=#0000, de=#5B00, hl=#5AFF
; ------------------------------------------------

CL_ATT
   ld   hl, 16384   ;hl=primera dirección de pantalla
   ld   de, 16385   ;de=segunda dirección de pantalla
   ld   bc, 6144   ;bc=longitud de pantalla
   ld   (hl), l      ;borra la primera dir. (L=0)
   ldir         ;borra el resto
   ld   (hl), a      ;establece el color de (0,0)
   ld   bc, 767      ;bc=cantidad de celdas
   ldir         ;estable el color del resto
   ret         ;fin



Bueno, espero que alguna de las pongamos por aquí le sea útil a alguien, o sirva para que se interese por el mundo del código máquina.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 21 invitados