mirror of https://github.com/falsovsky/z80.git
Mudar nomes de labels, ficheiros e mais documentacao
This commit is contained in:
parent
166e3eba51
commit
6d9235bced
|
@ -40,7 +40,7 @@ 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..
|
||||||
call scroll_text ; 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 ; 0 pixeis ainda scrollados no novo UDG#1
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ exit
|
||||||
|
|
||||||
INCLUDE "delay.asm"
|
INCLUDE "delay.asm"
|
||||||
INCLUDE "clear.asm"
|
INCLUDE "clear.asm"
|
||||||
INCLUDE "scroll_text.asm"
|
INCLUDE "texto.asm"
|
||||||
INCLUDE "scroll_esquerda.asm"
|
INCLUDE "scroll.asm"
|
||||||
|
|
||||||
end start
|
end start
|
||||||
|
|
|
@ -3,7 +3,7 @@ linha_actual db 0 ; Linha actual
|
||||||
ultima_addr db 0,0 ; Endereço da coluna mais à direita da linha actual
|
ultima_addr db 0,0 ; Endereço da coluna mais à direita da linha actual
|
||||||
|
|
||||||
; O endereço inicial tem de vir em HL
|
; O endereço inicial tem de vir em HL
|
||||||
scroll_esquerda
|
scroll
|
||||||
ld c, $8 ; Numero de vezes que a rotina vai correr
|
ld c, $8 ; Numero de vezes que a rotina vai correr
|
||||||
; 8 é o numero de linhas de pixeis a scrollar
|
; 8 é o numero de linhas de pixeis a scrollar
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ scroll_esquerda
|
||||||
ld (linha_actual), a ; Começa na linha 0
|
ld (linha_actual), a ; Começa na linha 0
|
||||||
|
|
||||||
; Loop1
|
; Loop1
|
||||||
scroll_esquerda_loop
|
scroll_loop
|
||||||
ld (scroll_addr), hl ; Guarda o valor de HL (argumento da rotina)
|
ld (scroll_addr), hl ; Guarda o valor de HL (argumento da rotina)
|
||||||
call scrolla_linha ; Scrolla uma linha
|
call scrolla_linha ; Scrolla uma linha
|
||||||
ld hl, (scroll_addr) ; Le o valor de tmp1 para HL
|
ld hl, (scroll_addr) ; Le o valor de tmp1 para HL
|
||||||
|
@ -29,7 +29,7 @@ scroll_esquerda_loop
|
||||||
ld (linha_actual), a
|
ld (linha_actual), a
|
||||||
|
|
||||||
dec c ; Decrementa o contador C
|
dec c ; Decrementa o contador C
|
||||||
jr nz, scroll_esquerda_loop ; Se C != 0 corre novamente o Loop1
|
jr nz, scroll_loop ; Se C != 0 corre novamente o Loop1
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; Scrolla a linha que estiver em scroll_addr
|
; Scrolla a linha que estiver em scroll_addr
|
|
@ -16,20 +16,20 @@ udg_start equ $ff58 ; User-defined characters, vai até $ffff
|
||||||
posicao_addr db 0,0 ; Contem o endereço da posição actual na string
|
posicao_addr db 0,0 ; Contem o endereço da posição actual na string
|
||||||
reset_posicao db 1 ; Se estiver a 1 a posição é resetada a 0
|
reset_posicao db 1 ; Se estiver a 1 a posição é resetada a 0
|
||||||
|
|
||||||
scroll_text
|
obtem_proxima_letra
|
||||||
ld a, (reset_posicao)
|
ld a, (reset_posicao)
|
||||||
cp $1 ; Se não for para meter a posição a 0 salta
|
cp $1 ; Se não for para meter a posição a 0 salta
|
||||||
jr nz, sem_reset
|
jr nz, proxima_letra_sem_reset
|
||||||
; o reset_posicao está a 1, meter a posicao na string a 0
|
; o reset_posicao está a 1, meter a posicao na string a 0
|
||||||
ld a, 0
|
ld a, 0
|
||||||
ld (reset_posicao), a ; reset_posicao = 0
|
ld (reset_posicao), a ; reset_posicao = 0
|
||||||
ld hl, text ; Endereço do primeiro chr
|
ld hl, text ; Endereço do primeiro chr
|
||||||
jr scroll_text_loop ;
|
jr proxima_letra_loop
|
||||||
sem_reset
|
proxima_letra_sem_reset
|
||||||
; Usa a posição guardada em posicao_addr
|
; Usa a posição guardada em posicao_addr
|
||||||
ld hl, (posicao_addr)
|
ld hl, (posicao_addr)
|
||||||
|
|
||||||
scroll_text_loop
|
proxima_letra_loop
|
||||||
; Por exemplo, a primeira letra é um L. No ASCII do
|
; Por exemplo, a primeira letra é um L. No ASCII do
|
||||||
; Spectrum o valor dela é $4C e com esse valor pretendo
|
; Spectrum o valor dela é $4C e com esse valor pretendo
|
||||||
; chegar a $3E60 que é onde está a font dela
|
; chegar a $3E60 que é onde está a font dela
|
||||||
|
@ -50,30 +50,31 @@ scroll_text_loop
|
||||||
ld hl, font_start
|
ld hl, font_start
|
||||||
add hl, de ; $3C00 + $260 = $3E60
|
add hl, de ; $3C00 + $260 = $3E60
|
||||||
|
|
||||||
call copia_para_udg ; Copia a letra para o UDG#1
|
call proxima_letra_udg ; Copia a letra para o UDG#1
|
||||||
; O argumento para a rotina é o valor em HL
|
; O argumento para a rotina é o valor em HL
|
||||||
|
|
||||||
pop hl ; Tira a posição na string da stack
|
pop hl ; Tira a posição na string da stack
|
||||||
inc hl ; Anda para a frente
|
inc hl ; Anda para a frente
|
||||||
ld a, (hl) ; Le o proximo valor
|
ld a, (hl) ; Le o proximo valor
|
||||||
cp $0 ; Se for 0 estamos no fim da string
|
cp $0 ; Se for 0 estamos no fim da string
|
||||||
jr z, set_reset ; Manda fazer reset à posição
|
jr z, proxima_letra_sem_reset ; Manda fazer reset à posição
|
||||||
jr scroll_text_fim ; Senão continua
|
jr proxima_letra_fim ; Senão continua
|
||||||
set_reset
|
proxima_letra_sem_reset
|
||||||
ld a, $1
|
ld a, $1 ; Manda meter a posicao a 0 na proxima
|
||||||
ld (reset_posicao), a ; Manda meter a posicao a 0 da proxima vez
|
ld (reset_posicao), a ; iteração
|
||||||
scroll_text_fim
|
proxima_letra_fim
|
||||||
ld (posicao_addr), hl ; Guarda a posição
|
ld (posicao_addr), hl ; Guarda a posição
|
||||||
ret
|
ret
|
||||||
|
|
||||||
copia_para_udg
|
; copia a letra para o UDG#1
|
||||||
|
proxima_letra_udg
|
||||||
; Está a contar que o endereço de origem esteja em HL
|
; Está a contar que o endereço de origem esteja em HL
|
||||||
ld b, $8 ; Copiar 8 bytes, cada letra são 8x8
|
ld b, $8 ; Copiar 8 bytes, cada letra são 8x8
|
||||||
ld de, udg_start ; Destino
|
ld de, udg_start ; Destino
|
||||||
copia_para_udg_loop
|
proxima_letra_udg_loop
|
||||||
ld a, (hl) ; Le origem
|
ld a, (hl) ; Le origem
|
||||||
ld (de), a ; Copia para destino
|
ld (de), a ; Copia para destino
|
||||||
inc hl ; Incrementa ambos
|
inc hl ; Incrementa ambos
|
||||||
inc de
|
inc de
|
||||||
djnz copia_para_udg_loop ; b--, se b != 0 salta
|
djnz proxima_letra_udg_loop ; b--, se b != 0 salta
|
||||||
ret
|
ret
|
Loading…
Reference in New Issue