From 4d1036b3bf87c1b4a61bec2b7b186126f6ddd772 Mon Sep 17 00:00:00 2001 From: antoniovillena <_@antoniovillena.es> Date: Sat, 1 Aug 2020 17:45:16 +0200 Subject: [PATCH] =?UTF-8?q?Actualizo=20firmware=20a=200.78=20-Cambio=20de?= =?UTF-8?q?=20ESXDOS.ZXn=20a=20ESXDOS.BIN=20el=20fichero=20a=20actualizar?= =?UTF-8?q?=20-A=C3=B1ado=20opci=C3=B3n=20color=20burst=20para=20mejora=20?= =?UTF-8?q?aliasing=20en=20ZXUNO+?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- firmware/FIRMWARE.ZX1 | Bin 16384 -> 16384 bytes firmware/bootloader.asm | 283 ++++++++++++++++++++-------------------- firmware/firmware.asm | 28 +++- firmware/strings.asm | 27 ++-- 4 files changed, 183 insertions(+), 155 deletions(-) diff --git a/firmware/FIRMWARE.ZX1 b/firmware/FIRMWARE.ZX1 index 97eb7d242e8a0ab84d48a16397c41ebc25f63f41..122bf55c8c50e1b943aba598034808703b88de19 100644 GIT binary patch delta 5210 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 delta 5243 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 diff --git a/firmware/bootloader.asm b/firmware/bootloader.asm index ba0ca96..916f492 100644 --- a/firmware/bootloader.asm +++ b/firmware/bootloader.asm @@ -1,141 +1,142 @@ - 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 - wreg scandbl_ctrl, $c0 ; lo pongo a 28MHz - in a, ($1f) - 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 - $ + 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 - $ diff --git a/firmware/firmware.asm b/firmware/firmware.asm index ae8afcc..0b4232d 100644 --- a/firmware/firmware.asm +++ b/firmware/firmware.asm @@ -1,5 +1,5 @@ include version.asm - define recovery 1 + define recovery 0 define recodire 0 define zesarux 0 define vertical 0 @@ -80,6 +80,7 @@ define freque scanli+1 define cpuspd freque+1 define copt cpuspd+1 + define cburst copt+1 define tmpbuf $7800 define tmpbu2 $7880 @@ -256,11 +257,16 @@ start ld bc, chrend-sdtab jr nc, start0 set 4, h start0 ld a, (outvid) + push af + rrca + ld a, (cburst) + adc a, a ld de, ad724<<8 | scandbl_ctrl ld bc, zxuno_port out (c), d inc b out (c), a + pop af dec b out (c), e inc b @@ -1059,7 +1065,7 @@ runbit ld b, h ld e, core_addr out (c), e inc b - IF version=3 + IF version=4 ld a, (alto highb+1) out (c), a out (c), h @@ -2813,6 +2819,10 @@ advan1 call showop ; Joy Keypad & DB9 defw cad90 defw cad96 defw $ffff + call showop ; Color Burst + defw cad10c + defw cad10d + defw $ffff ld de, $1201 call listas defb $04 @@ -2823,6 +2833,7 @@ advan1 call showop ; Joy Keypad & DB9 defb $0d defb $0e defb $0f + defb $10 defb $ff defw cad84 defw cad85 @@ -2832,6 +2843,7 @@ advan1 call showop ; Joy Keypad & DB9 defw cad100 defw cad101 defw cad10a + defw cad10b jp c, main9 ld (menuop+1), a ld hl, layout @@ -2898,11 +2910,17 @@ advan7 djnz advan8 defw cad113 defw $ffff ret -advan8 call popupw ; CSync +advan8 djnz advan9 + call popupw ; CSync defw cad90 defw cad96 defw $ffff ret +advan9 call popupw ; Color Burst + defw cad10c + defw cad10d + defw $ffff + ret ;**** Exit Menu **** @@ -4448,7 +4466,11 @@ subnn sub 6 IF version=4 defw $1200 ELSE + IF version=2 defw $0740 + ELSE + defw $0c40 + ENDIF ENDIF subnn sub 6*4 ENDIF diff --git a/firmware/strings.asm b/firmware/strings.asm index 6b3867f..e63bd8b 100644 --- a/firmware/strings.asm +++ b/firmware/strings.asm @@ -4,7 +4,7 @@ cad1 defb 'http://zxuno.speccy.org', 0 ELSE cad1 defb 'http://zxdos.forofpga.es', 0 ENDIF - defb 'ZX-Uno BIOS v0.77', 0 + defb 'ZX-Uno BIOS v0.78', 0 defb 'Copyleft ', 127, ' 2018 ZX-Uno Team', 0 defb 'Processor: Z80 3.5MHz', 0 defb 'Memory: ' @@ -41,7 +41,7 @@ cad8 defb $10, ' ', $10, ' ', $10, 0 cad9 defb $14, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $18, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $15, 0 - defb ' BIOS v0.77 ', $7f, '2018 ZX-Uno Team', 0 + defb ' BIOS v0.78 ', $7f, '2018 ZX-Uno Team', 0 ELSE defb 'Press to Setup',0 defb ' Boot Menu', 0 @@ -72,7 +72,7 @@ cad8 defb $10, ' ', $10, 0 cad9 defb $14, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $15, 0 - defb ' BIOS v0.77 ', $7f, '2018 ZX1 Team', 0 + defb ' BIOS v0.78 ', $7f, '2018 ZX1 Team', 0 defs $66 ENDIF cad10 defb 'Hardware tests', 0 @@ -317,14 +317,14 @@ cad79 defb ' Successfully burned ', 0 cad80 defb 'EAR input', 0 cad81 defb 'SD file', 0 cad82 defb 'Input machine\'s name', 0 - IF version=2 -files defb 'ESXDOS ZX', LX16 - defb 'FIRMWAREZX', LX16 - defb 'FLASH ZX', LX16 - defb 'SPECTRUMZX', LX16 -fileco defb 'CORE ZX', LX16 + IF version=3 +files defb 'ESXDOS BIN' + defb 'FIRMWAREZXD' + defb 'FLASH ZXD' + defb 'SPECTRUMZXD' +fileco defb 'CORE ZXD' ELSE -files defb 'ESXDOS ZX', $30+version +files defb 'ESXDOS BIN' defb 'FIRMWAREZX', $30+version defb 'FLASH ZX', $30+version defb 'SPECTRUMZX', $30+version @@ -343,7 +343,8 @@ cad83 defb 'Input', 0 defb 'Scanlines', 0 defb 'Frequency', 0 defb 'CPU Speed', 0 - defb 'CSync', 0, 0 + defb 'CSync', 0 + defb 'Color Burst', 0, 0 cad84 defb 'Select PS/2', 0 defb 'mapping to', 0 defb 'spectrum', 0, 0 @@ -364,6 +365,10 @@ cad101 defb 'Set CPU', 0 defb 'speed', 0, 0 cad10a defb 'CSync method', 0 defb 'to use', 0, 0 +cad10b defb 'Select FPGA to', 0 + defb 'avoid aliasing', 0, 0 +cad10c defb 'Crystal', 0 +cad10d defb 'FPGA', 0 cad102 defb '50', 0 cad103 defb '51', 0 cad104 defb '53.5', 0