This commit is contained in:
Pedro de Oliveira 2014-08-12 08:18:58 +01:00
parent c782f5f7fe
commit f759db4d2c
2 changed files with 19 additions and 21 deletions

View File

@ -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

View File

@ -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"