mirror of https://github.com/zxdos/zxuno.git
87 lines
2.2 KiB
NASM
87 lines
2.2 KiB
NASM
output firmloader.rom
|
|
macro wreg dir, dato
|
|
rst $28
|
|
defb dir, dato
|
|
endm
|
|
|
|
define zxuno_port $fc3b
|
|
define master_conf 0
|
|
define master_mapper 1
|
|
|
|
di
|
|
ld sp, $bfff
|
|
ld de, $c771 ; tras el out (c), h de bffc se ejecuta
|
|
push de ; un rst 0 para iniciar la nueva ROM
|
|
ld de, $edff ; en $bffc para evitar que el cambio de ROM
|
|
push de ; colisione con la siguiente instruccion
|
|
wreg master_mapper, 8 ; paginamos la ROM en $c000
|
|
ld hl, fin-1
|
|
ld d, e
|
|
rst $38
|
|
ld bc, zxuno_port
|
|
out (c), 0 ; a master_conf quiero enviar un 0 para pasar
|
|
inc b
|
|
jp $bffc
|
|
|
|
acab rr e
|
|
ex de, hl
|
|
adc hl, de
|
|
lddr
|
|
exitdz pop hl
|
|
jr nc, mainlo
|
|
ret
|
|
|
|
rst28 ld bc, zxuno_port + $100
|
|
pop hl
|
|
outi
|
|
ld b, (zxuno_port >> 8)+2
|
|
outi
|
|
jp (hl)
|
|
getbit ld a, (hl)
|
|
dec hl
|
|
adc a, a
|
|
ret
|
|
nop
|
|
|
|
; -----------------------------------------------------------------------------
|
|
; ZX7 Backwards by Einar Saukas, Antonio Villena
|
|
; Parameters:
|
|
; HL: source address (compressed data)
|
|
; DE: destination address (decompressing)
|
|
; -----------------------------------------------------------------------------
|
|
dzx7b ld bc, $8000
|
|
ld a, b
|
|
copyby inc c
|
|
ldd
|
|
mainlo add a, a
|
|
call z, getbit
|
|
jr nc, copyby
|
|
push de
|
|
ld d, c
|
|
defb $30
|
|
lenval add a, a
|
|
call z, getbit
|
|
rl c
|
|
rl b
|
|
add a, a
|
|
call z, getbit
|
|
jr nc, lenval
|
|
inc c
|
|
jr z, exitdz
|
|
ld e, (hl)
|
|
dec hl
|
|
sll e
|
|
jr nc, offend
|
|
ld d, $10
|
|
nexbit add a, a
|
|
call z, getbit
|
|
rl d
|
|
jr nc, nexbit
|
|
inc d
|
|
srl d
|
|
offend ex (sp), hl
|
|
jr acab
|
|
|
|
incbin firmware.rom.zx7b
|
|
fin
|