mirror of https://github.com/falsovsky/z80.git
zbr
This commit is contained in:
parent
c782f5f7fe
commit
f759db4d2c
|
@ -31,7 +31,7 @@ screen_attribute equ $47
|
||||||
; Valor de 0 a 7
|
; Valor de 0 a 7
|
||||||
border_color equ $0
|
border_color equ $0
|
||||||
|
|
||||||
clear_screen
|
limpa_ecra
|
||||||
ld a, screen_attribute
|
ld a, screen_attribute
|
||||||
ld (attr_p), a ; Variavel de sistema que permite definir
|
ld (attr_p), a ; Variavel de sistema que permite definir
|
||||||
; o ink, paper, brightness e flash
|
; o ink, paper, brightness e flash
|
|
@ -1,8 +1,8 @@
|
||||||
org 30000
|
org 30000
|
||||||
|
|
||||||
tv_flag equ $5c3c ; Endereço que contem flags da tv
|
tv_flag equ $5c3c ; Variavel das flags da tv
|
||||||
last_k equ $5c08 ; Contem a ultima tecla pressionada
|
last_k equ $5c08 ; Variavel que contem a ultima tecla usada
|
||||||
LINHA10 equ $4840
|
LINHA10 equ $4840 ; Endereço da linha 10 na Memoria Video
|
||||||
|
|
||||||
o_barbas db 22,9,0, 16,6, "o_barbas disse:", 255
|
o_barbas db 22,9,0, 16,6, "o_barbas disse:", 255
|
||||||
scroll_udg db $8 ; Numero de pixeis já scrollados no UDG#1
|
scroll_udg db $8 ; Numero de pixeis já scrollados no UDG#1
|
||||||
|
@ -11,21 +11,19 @@ scroll_udg db $8 ; Numero de pixeis já scrollados no UDG#1
|
||||||
|
|
||||||
start
|
start
|
||||||
xor a ; O mesmo que LD a, 0
|
xor a ; O mesmo que LD a, 0
|
||||||
ld (tv_flag), a ; Directs rst 10h output to main screen.
|
ld (tv_flag), a ; Faz com que o rst $10 envie output pra tv
|
||||||
push bc ; Parece que é algum standard guardar o BC
|
push bc ; Guarda BC na stack
|
||||||
; na stack, e tirar no fim do programa.
|
|
||||||
|
|
||||||
call clear_screen ; Limpa o ecrã
|
call limpa_ecra ; Limpa o ecrã
|
||||||
|
|
||||||
ld hl, o_barbas ; Le para HL o endereço da string a printar
|
ld hl, o_barbas ; Le para HL o endereço da string a printar
|
||||||
printa_ate_255
|
printa_string
|
||||||
ld a,(hl) ; Le para A o valor que esta no endereço em HL
|
ld a,(hl) ; Le para A o valor que esta no endereço em HL
|
||||||
cp $ff ; Se for 255...
|
cp $ff ; Se for 255...
|
||||||
jr z, main_loop ; então já se imprimiu tudo e é para sair
|
jr z, main_loop ; então já se imprimiu tudo e é para sair
|
||||||
rst $10
|
rst $10
|
||||||
inc hl ; Incrementa o valor de HL
|
inc hl ; Incrementa a posição na string
|
||||||
; Passa a ter o endereço do proximo caracater da str
|
jr printa_string ; Volta ao inicio da rotina
|
||||||
jr printa_ate_255 ; Volta ao inicio da rotina
|
|
||||||
|
|
||||||
main_loop
|
main_loop
|
||||||
ld a, $0
|
ld a, $0
|
||||||
|
@ -33,32 +31,32 @@ main_loop
|
||||||
|
|
||||||
ld a, (scroll_udg) ; Le o numero de pixeis já scrollados no UDG#1
|
ld a, (scroll_udg) ; Le o numero de pixeis já scrollados no UDG#1
|
||||||
cp $8 ; São 8?
|
cp $8 ; São 8?
|
||||||
jr nz, main_loop_scroll ; Não..
|
jr nz, main_loop_scroll ; Não? salta
|
||||||
call obtem_proxima_letra ; Sim, manda meter uma nova letra em UDG#1
|
call obtem_proxima_letra ; Sim, manda meter uma nova letra em UDG#1
|
||||||
ld a, 0
|
ld a, 0
|
||||||
ld (scroll_udg), a ; 0 pixeis ainda scrollados no novo UDG#1
|
ld (scroll_udg), a ; Reseta o numero de pixeis scrollados no UDG#1
|
||||||
|
|
||||||
main_loop_scroll
|
main_loop_scroll
|
||||||
ld hl, LINHA10
|
ld hl, LINHA10
|
||||||
call scroll_esquerda ; Scrolla a linha 10
|
call scroll_esquerda ; Scrolla a linha 10
|
||||||
|
|
||||||
ld a, (scroll_udg) ; Incrementa o numero de pixeis já scrollados
|
ld a, (scroll_udg)
|
||||||
inc a ; no UDG#1
|
inc a ; Incrementa o numero de pixeis já scrollados
|
||||||
ld (scroll_udg), a
|
ld (scroll_udg), a
|
||||||
|
|
||||||
ld a, $1
|
ld a, $1
|
||||||
call delay ; Chama a rotina de delay(1)
|
call delay ; Chama a rotina de delay(1)
|
||||||
|
|
||||||
ld a, (last_k) ; Se o valor da ultima tecla pressionada ainda
|
ld a, (last_k) ; Se o valor da ultima tecla pressionada ainda
|
||||||
cp $0 ; for 0, é porque ainda não se pressionou nenhuma
|
cp $0 ; for 0, é porque ainda não se pressionou nenhuma,
|
||||||
jr Z, main_loop ; tecla, por isso... repete
|
jr Z, main_loop ; por isso... repete
|
||||||
|
|
||||||
exit
|
exit
|
||||||
pop bc ; Tira o BC da Stack
|
pop bc ; Tira o BC da stack
|
||||||
ret ; Sai para o BASIC
|
ret ; Sai para o BASIC
|
||||||
|
|
||||||
INCLUDE "delay.asm"
|
INCLUDE "delay.asm"
|
||||||
INCLUDE "clear.asm"
|
INCLUDE "limpa.asm"
|
||||||
INCLUDE "texto.asm"
|
INCLUDE "texto.asm"
|
||||||
INCLUDE "scroll.asm"
|
INCLUDE "scroll.asm"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue