mirror of https://github.com/zxdos/zxuno.git
143 lines
4.1 KiB
NASM
143 lines
4.1 KiB
NASM
macro wreg dir, dato
|
|
rst $28
|
|
defb dir, dato
|
|
endm
|
|
|
|
output bootloader.rom
|
|
define zxuno_port $fc3b
|
|
define master_conf 0
|
|
define master_mapper 1
|
|
define flash_spi 2
|
|
define flash_cs 3
|
|
define joyconf 6
|
|
define scandbl_ctrl 11
|
|
|
|
di
|
|
ld sp, $bfff-ini+6
|
|
wreg flash_cs, 1 ; desactivamos spi, enviando un 0
|
|
ld de, $c771 ; tras el out (c), h de bffc se ejecuta
|
|
push de ; un rst 0 para iniciar la nueva ROM
|
|
ld de, $ed80 ; en $bffc para evitar que el cambio de ROM
|
|
push de ; colisione con la siguiente instruccion
|
|
ld bc, $bffc-ini+6
|
|
push bc
|
|
wreg flash_cs, 0 ; activamos spi, enviando un 0
|
|
wreg flash_spi, 6 ; envío write enable
|
|
wreg flash_cs, 1 ; desactivamos spi, enviando un 1
|
|
wreg flash_cs, 0 ; activamos spi, enviando un 0
|
|
wreg flash_spi, $c5 ; envío wrear
|
|
out (c), 0
|
|
jp cont
|
|
nop
|
|
|
|
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
|
|
|
|
rst38 jp $c006
|
|
|
|
block $0066 - $
|
|
|
|
nmi66 jp $c003
|
|
retn
|
|
|
|
cont wreg flash_cs, 1 ; desactivamos spi, enviando un 1
|
|
wreg joyconf, %00010000
|
|
wreg master_mapper, 8 ; paginamos la ROM en $c000
|
|
lee in a, ($1f)
|
|
djnz lee
|
|
wreg scandbl_ctrl, $c0 ; lo pongo a 28MHz
|
|
cp %00011000 ; arriba y disparo a la vez
|
|
jr z, recov
|
|
cp %00010100 ; arriba y disparo a la vez
|
|
jr z, recov
|
|
wreg flash_cs, 0 ; activamos spi, enviando un 0
|
|
wreg flash_spi, 3 ; envio flash_spi un 3, orden de lectura
|
|
ini out (c), h ; envia direccion 008000, a=00,e=80,a=00
|
|
out (c), e
|
|
out (c), h
|
|
add hl, sp
|
|
boot ini
|
|
inc b
|
|
cp h ; compruebo si la direccion es 0000 (final)
|
|
jr c, boot ; repito si no lo es
|
|
boot1 dec b
|
|
out (c), 0 ; a master_conf quiero enviar un 0 para pasar
|
|
inc b
|
|
ret
|
|
|
|
recov ld hl, firmware-1
|
|
ld de, $ffff
|
|
push bc
|
|
call dzx7b
|
|
pop bc
|
|
jr boot1
|
|
|
|
block $0100 - $
|
|
include scroll/define.asm
|
|
ld sp, 0
|
|
ld de, $5e6d+filesize-1
|
|
ld hl, scroll-1
|
|
call dzx7b
|
|
jp $7be4
|
|
|
|
; -----------------------------------------------------------------------------
|
|
; 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 rr e
|
|
ex (sp), hl
|
|
ex de, hl
|
|
adc hl, de
|
|
lddr
|
|
exitdz pop hl
|
|
jr nc, mainlo
|
|
ret
|
|
|
|
incbin firmware.rom.zx7b
|
|
firmware
|
|
incbin scroll/scroll.bin.zx7b
|
|
scroll
|
|
;block $4000 - $
|