z80/starfield/clear.asm

46 lines
1.4 KiB
NASM

attr_p equ $5c8d; Endereço que contem as cores permanentes
bordcr equ $5c48; Endereço que contem a cor da borda
rom_limpa_ecra equ $0daf; Rotina da ROM que limpa o ecrã
rom_define_borda equ $2294; Rotina da ROM que define a borda
; Cores
; Numero | Binario | Nome
; 0 | 000 | Preto
; 1 | 001 | Azul
; 2 | 010 | Vermelho
; 3 | 011 | Roxo
; 4 | 100 | Verde
; 5 | 101 | Cyan
; 6 | 110 | Amarelo
; 7 | 111 | Branco
; 8 bits para definir ink, paper, brightness e flash
; |F |B |P2|P1|P0|I2|I1|I0|
; F Flash
; B Brightness
; P Paper
; I Ink
; Então para definir o flash desligado, o brightness ligado com o
; fundo a preto e o texto a amarelo fica-se com:
; 01000110 = 70 = $46
; 01000000 = 64 = $40 - Tudo preto
; 01000111 = 71 = $47 - Fundo preto Texto Branco
screen_attribute equ $47
; Valor de 0 a 7
border_color equ $0
clear_screen
ld a, screen_attribute
ld (attr_p), a ; Variavel de sistema que permite definir
; o ink, paper, brightness e flash
call rom_limpa_ecra ; Clear screen
ld a, border_color ; Cor do border
call rom_define_borda+$7
; Chama a rotina da ROM para actualizar a borda, mas salta 7
; bytes à frente, porque são para ler o valor da borda do
; BASIC. O valor fica guardado em 23624.
ret