mirror of https://github.com/falsovsky/z80.git
Moar crap
This commit is contained in:
parent
95c1bf6944
commit
c582c8eac8
|
|
@ -12,17 +12,31 @@ udg equ $5c7b ; Endereço do primeiro user-defined graphics (2 bytes)
|
|||
|
||||
udg_start equ $ff58 ; User-defined characters, vai até $ffff
|
||||
; São acessiveis com o caracter $90 até $a4
|
||||
|
||||
|
||||
letra_pos db 0,0
|
||||
text_pos db 0,0
|
||||
|
||||
scroll_text
|
||||
; Verificar se o valor de text_pos já foi alguma vez alterado
|
||||
ld a, (text_pos) ; Le o primeiro byte
|
||||
cp 0 ; Se for 0 é a primeira vez senão
|
||||
jr nz, segundo_byte ; vou verificar o segundo byte
|
||||
jr z, first_run
|
||||
segundo_byte
|
||||
ld a, (text_pos+1) ; Le o segundo byte
|
||||
cp 0 ; Se for 0 é a primeira vez
|
||||
jr z, first_run
|
||||
ld hl, (text_pos) ; Senão usa o valor de (text_pos)
|
||||
jr scroll_text_loop
|
||||
first_run
|
||||
; Primeira vez a correr, usa o endereço de text
|
||||
ld hl, text ; Endereço do primeiro chr
|
||||
scroll_text_loop
|
||||
; Por exemplo, a primeira letra é um L. No ASCII do
|
||||
; Spectrum o valor dela é $4C e com esse valor pretendo
|
||||
; chegar a $3E60 que é onde está a font dela
|
||||
|
||||
ld a, (hl) ; Le chr da string - $4C incialmente
|
||||
|
||||
ld a, (hl) ; Le chr da string - $4C inicialmente
|
||||
push hl ; Guarda a posição na string na stack
|
||||
|
||||
ld h,0 ; H = 0
|
||||
|
|
@ -31,28 +45,34 @@ scroll_text_loop
|
|||
add hl, hl ; $4C + $4C = $98
|
||||
add hl, hl ; $98 + $98 = $130
|
||||
add hl, hl ; $130 + $130 = $260
|
||||
|
||||
|
||||
ld d, h
|
||||
ld e, l ; DE = HL
|
||||
|
||||
|
||||
ld hl, font_start
|
||||
add hl, de ; $3C00 + $260 = $3E60
|
||||
|
||||
|
||||
ld (letra_pos), hl ; Guarda o valor em letra_pos
|
||||
|
||||
|
||||
call copia_para_udg ; Copia a letra para o UDG#1
|
||||
ld a, $90 ; Imprime UDG#1
|
||||
rst $10
|
||||
pop hl ; Tira a posição da string da stack
|
||||
pop hl ; Tira a posição na string da stack
|
||||
inc hl ; Anda para a frente
|
||||
|
||||
ld a, (hl) ; Le o proximo valor
|
||||
cp 0 ; Ve se já estamos no fim
|
||||
jr nz, scroll_text_loop ; Repete no proximo chr da string
|
||||
cp 0 ; Se for 0 estamos no fim da string
|
||||
jr z, reset ; Reset à posição
|
||||
jr the_end ; Continua
|
||||
reset
|
||||
ld hl, text ; Mete a posição na string a 0
|
||||
the_end
|
||||
ld (text_pos), hl ; Guarda a posição
|
||||
ret
|
||||
|
||||
copia_para_udg
|
||||
ld b, $8 ; Copiar 8 bytes, cada letra são 8x8
|
||||
ld hl, (letra_pos) ; Posição da font da letra a copiar
|
||||
ld b, $8 ; Copiar 8 bytes, cada letra são 8x8
|
||||
ld de, udg_start ; Destino
|
||||
copia_para_udg_r
|
||||
ld a, (hl) ; Le origem
|
||||
|
|
|
|||
Loading…
Reference in New Issue