From fdbfc815fb7ee4abb6fb2c0490f497a941d0edb7 Mon Sep 17 00:00:00 2001 From: antoniovillena <_@antoniovillena.es> Date: Thu, 20 Feb 2020 13:13:04 +0100 Subject: [PATCH] actualizo --- firmware/Bit2Bin.exe | Bin 45084 -> 27676 bytes firmware/firmware.asm | 125 +++++++++++++++++++++++++----------------- 2 files changed, 75 insertions(+), 50 deletions(-) diff --git a/firmware/Bit2Bin.exe b/firmware/Bit2Bin.exe index b828066d7c8f68ecebe25f0f698a49f25976d58a..979b3952ad65e1d1a47c33b5b1cd4c678b017c5d 100644 GIT binary patch delta 10209 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 literal 45084 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
  • Iyap}8p<;|V7iNdbV!IExg>ydg@&Aq^x82h1E< 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 diff --git a/firmware/firmware.asm b/firmware/firmware.asm index 3147058..ae8afcc 100644 --- a/firmware/firmware.asm +++ b/firmware/firmware.asm @@ -1,6 +1,5 @@ include version.asm - define LX16 $32 - define recovery 0 + define recovery 1 define recodire 0 define zesarux 0 define vertical 0 @@ -490,7 +489,11 @@ runbit0 ld a, l IF version=2 cp 69 ELSE - cp 56 + IF version=3 + cp 40 + ELSE + cp 56 + ENDIF ENDIF ENDIF jr z, bios @@ -531,7 +534,7 @@ star21 wreg flash_cs, 0 ; activamos spi, enviando un 0 wreg flash_cs, 1 ; desactivamos spi, enviando un 1 wreg flash_cs, 0 ; activamos spi, enviando un 0 wreg flash_spi, 1 ; envío write register status - IF version=3 + IF version=4 ld hl, $0202 ld (menuop), hl ld l, $40 @@ -1051,6 +1054,7 @@ conti di jr z, ccon0 runbit ld b, h call calbit + ld bc, zxuno_port ld e, core_addr out (c), e @@ -2343,8 +2347,8 @@ rotp call readat0 ; read 512 bytes of entries (16 entries) erfnf ld ix, cad78 terror jp ferror saba - IF version=2 - sub LX16 + IF version=3 + sub 'D' ELSE sub $30+version ENDIF @@ -2430,8 +2434,8 @@ otve call readata erfnf2 jp erfnf sabe pop bc pop hl - IF version=2 - sub LX16 + IF version=3 + sub 'D' ELSE sub $30+version ENDIF @@ -3113,32 +3117,7 @@ calbi3 add hl, de djnz calbi3 ret ELSE - IF version=2 -calbi1 ld a, b ;1-69 - sub 35 - jr c, calbi2 ;<35 c n - ld b, a ;>=35 nc n-35 -calbi2 ccf - push bc - push af - adc a, a - 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), a - wreg flash_cs, 1 ; desactivamos spi, enviando un 1 - pop af - or a - pop bc - ld hl, $0240 - ret z - ld de, $0740 -calbi3 add hl, de - djnz calbi3 - ret - ELSE + IF version=4 calbi1 ld hl, $ff00 calbi2 ld de, $0900 calbi3 add hl, de @@ -3148,6 +3127,30 @@ calbi3 add hl, de adc a, a ld (alto highb+1), a ret + ELSE + IF version=2 +calbi1 ld a, b ;1-69 + sub 35 + jr c, calbi2 ;<35 c n + ld b, a ;>=35 nc n-35 +calbi2 ld hl, $0240 + ret z + ld de, $0740 +calbi3 add hl, de + djnz calbi3 + ret + ELSE +calbi1 ld a, b ;1-40 + sub 20 + jr c, calbi2 ;<20 c n + ld b, a ;>=20 nc n-20 +calbi2 ld hl, $fec0 + ret z + ld de, $0c40 +calbi3 add hl, de + djnz calbi3 + ret + ENDIF ENDIF ENDIF @@ -4135,7 +4138,7 @@ calcu add hl, hl ENDIF savena - IF version=2 + IF version=2 OR version=3 ld b, 1 call calbit ENDIF @@ -4169,7 +4172,7 @@ wrfls1 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 - IF version=3 + IF version>1 wreg flash_spi, $21 ; envío sector erase ld hl, (alto highb) out (c), h @@ -4185,7 +4188,7 @@ wrfls2 call waits5 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 - IF version=3 + IF version>1 wreg flash_spi, $12 ; envío page program ld hl, (highb) out (c), h @@ -4411,11 +4414,23 @@ finav ; Compressed and RCS filtered logo ; ----------------------------------------------------------------------------- IF vertical=0 - incbin logo256x192.rcs.zx7b + IF version=1 + incbin logo256x192.rcs.zx7b + ELSE + IF version=2 + incbin logo256x192d.rcs.zx7b + ELSE + incbin logo256x192dp.rcs.zx7b + ENDIF + ENDIF finlog incbin strings.bin.zx7b ELSE incbin bezel.rcs.zx7b -finbez incbin logo192x256.rcs.zx7b + IF version=1 +finbez incbin logo192x256.rcs.zx7b + ELSE +finbez incbin logo192x256d.rcs.zx7b + ENDIF finlog incbin strings.bin.zx7b ENDIF ENDIF @@ -4430,10 +4445,10 @@ fllen defw $0000, $0000 defw $0540 subnn sub 6 ELSE - IF version=2 - defw $0740 - ELSE + IF version=4 defw $1200 + ELSE + defw $0740 ENDIF subnn sub 6*4 ENDIF @@ -4627,9 +4642,9 @@ easter di ; Load flash structures from $06000 to $9000 ; ------------------------ loadch - IF version=2 - and a - ENDIF +; IF version=2 +; and a +; ENDIF wreg flash_cs, 1 ld de, config ld hl, $0060 ;old $0aa0 @@ -4646,7 +4661,7 @@ loadch rdflsh ex af, af' push hl wreg flash_cs, 0 ; activamos spi, enviando un 0 - IF version=3 + IF version>1 wreg flash_spi, $13 ; envio flash_spi un 3, orden de lectura highb ld a, 0 out (c), a @@ -4808,7 +4823,12 @@ slot2a ld de, 3 ld e, $c0 ELSE sloti ld l, a - IF version=2 + IF version=4 + sub 61 ;-44, -1 -> 0, 43 + jr nc, sloti + ld h, d + ELSE + IF version=2 sub 44 ;-44, -1 -> 0, 43 jr nc, sloti ld h, d @@ -4816,10 +4836,15 @@ sloti ld l, a jr nc, slot2b ld hl, $0400 ld e, a - ELSE - sub 61 ;-44, -1 -> 0, 43 - jr nc, sloti + ELSE + and $3f ld h, d + ld l, a + cp 41 + jr c, slot2b + sub 41 + ld e, d + ENDIF ENDIF ENDIF slot2b add hl, de ; $00c0 y 2f80