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.