diff --git a/firmware/FIRMWARE.ZX1 b/firmware/FIRMWARE.ZX1 index 97eb7d2..122bf55 100644 Binary files a/firmware/FIRMWARE.ZX1 and b/firmware/FIRMWARE.ZX1 differ 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