From 565321d01134983240536694b2bc5b796a8a14cc Mon Sep 17 00:00:00 2001 From: antoniovillena Date: Mon, 14 Aug 2017 13:06:02 +0200 Subject: [PATCH] Actualizo fuentes firmware 0.64 --- firmware/FIRMWARE.ZX1 | Bin 16384 -> 16384 bytes firmware/firmware.asm | 670 +++++++++++++++++++++++++++++++--- firmware/fuente8x6.bin | Bin 0 -> 896 bytes firmware/logo192x256.rcs.zx7b | Bin 0 -> 336 bytes firmware/strings.asm | 84 ++++- 5 files changed, 689 insertions(+), 65 deletions(-) create mode 100644 firmware/fuente8x6.bin create mode 100644 firmware/logo192x256.rcs.zx7b diff --git a/firmware/FIRMWARE.ZX1 b/firmware/FIRMWARE.ZX1 index 19bbfc0dcfec8e685f40fcd58a2426e7fa29b261..d59413676f2736e6aa0830cf8bf6851c5121cd45 100644 GIT binary patch delta 2902 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 to Setup + ELSE + ld bc, $040f + call_prnstr ; CoreID + ld c, $0c + ld ixl, cad1 & $ff ; imprimir cadenas BOOT screen + call_prnstr ; http://zxuno.speccy.org + ld bc, $0211 + call_prnstr ; ZX-Uno BIOS version + call_prnstr ; Copyleft + ld bc, $0014 ; Copyleft (c) 2016 ZX-Uno Team + call_prnstr ; Processor + call_prnstr ; Memory + call_prnstr ; Graphics + ld b, $0b + call_prnstr ; hi-res, ULAplus + push bc + ld b, a + call_prnstr ; Booting + ld c, $1b + call_prnstr ; Press to Setup + call_prnstr ; Press to Setup + ENDIF ld hl, bitstr add a, (hl) jr z, start6 @@ -351,7 +382,8 @@ start7 ld de, tmpbuf pop bc call_prnstr ; Imprime máquina (ROM o core) ENDIF -start8 wreg flash_cs, 0 ; activamos spi, enviando un 0 +start8 + wreg flash_cs, 0 ; activamos spi, enviando un 0 wreg flash_spi, $9f ; jedec id in a, (c) in a, (c) @@ -393,7 +425,7 @@ star14 inc b bit 7, h ; compruebo si la direccion es 0000 (final) jr nz, star14 ; repito si no lo es star15 - IF recovery=0 + IF recovery=0 ld d, 4 pop af jr nz, star16 @@ -445,10 +477,14 @@ star19 sub $80 sub $0c-'1' star20 jp z, blst sub $1d-$0c + IF vertical=0 jp z, launch + ELSE + jr z, star20 + ENDIF cp $17-$1d jr nz, star19 - ELSE + ELSE pop af star21 wreg flash_cs, 0 ; activamos spi, enviando un 0 wreg flash_spi, 6 ; envío write enable @@ -468,18 +504,27 @@ star21 wreg flash_cs, 0 ; activamos spi, enviando un 0 and 2 jr z, star21 xor a - ENDIF + ENDIF ;++++++++++++++++++++++++++++++++++ ;++++++++ Enter Setup ++++++++ ;++++++++++++++++++++++++++++++++++ bios ld a, %01001111 ; fondo azul tinta blanca + IF vertical=0 ld hl, $0017 ld de, $2001 call window ld a, %00111001 ; fondo blanco tinta azul ld l, h ld e, $17 + ELSE + ld hl, $001f + ld de, $1801 + call window + ld a, %00111001 ; fondo blanco tinta azul + ld l, h + ld de, $181f + ENDIF call window IF recovery=0 ld (menuop), hl @@ -488,19 +533,19 @@ bios ld a, %01001111 ; fondo azul tinta blanca ld ix, cad7 call_prnstr ; menu superior call_prnstr ; borde superior - ld iy, $090a + IF vertical=0 + ld iyl, $14 + ELSE + ld iyl, $1c + ENDIF bios1 ld ix, cad8 - call_prnstr ; | | | - dec iyh - jr nz, bios1 - call_prnstr ; borde medio -bios2 ld ix, cad8 call_prnstr ; | | | dec iyl - jr nz, bios2 + jr nz, bios1 ld ix, cad9 call_prnstr ; borde inferior call_prnstr ; info + IF vertical=0 ld hl, %0111111001111110 ld ($55fc), hl ld ($55fe), hl @@ -510,12 +555,33 @@ bios2 ld ix, cad8 ld ($5afc), hl ld hl, %0100110101001100 ld ($5afe), hl + ELSE + ld hl, $411f + ld c, 4 +bios2 ld b, 6 +bios25 ld (hl), %00000110 + inc h + djnz bios25 + ld de, $fa20 + add hl, de + dec c + jr nz, bios2 + ld a, %01001010 + ld ($587f), a + ld a, %01001110 + ld ($585f), a + dec a + ld ($581f), a + dec a + ld ($583f), a + ENDIF bios3 ld a, $07 out ($fe), a call bios4 jr bios3 bios4 ld a, %00111001 ; fondo blanco tinta azul ld hl, $0102 + IF vertical=0 ld de, $1814 call window ld a, %01001111 ; fondo azul tinta blanca @@ -564,6 +630,55 @@ bios7 dec c ld bc, $1906 call prnmul ; borde medio ld h, a + ELSE + ld de, $1614 + call window + ld a, %01001111 ; fondo azul tinta blanca + dec h + ld l, h + ld de, $1801 + call window + di + IF vertical=0 + ld c, $14 + ELSE + ld bc, $16 + ENDIF + ld hl, $403e + ld d, b + ld e, b +bios5 ld b, 8 +bios6 ld sp, hl + push de + push de + push de + push de + push de + push de + push de + push de + push de + push de + push de + push de + push de + push de + inc h + djnz bios6 + ld a, l + add a, $20 + ld l, a + jr c, bios7 + ld a, h + sub 8 + ld h, a +bios7 dec c + jr nz, bios5 + ei + ld sp, stack-2 +;;di borrado ei + ld h, 0 + ENDIF ld a, (menuop) add a, a add a, jmptbl&$ff @@ -580,8 +695,8 @@ bios7 dec c ld de, $0401 ld a, %01111001 ; fondo blanco tinta azul ret - IF recovery=0 - + IF recovery=0 + IF vertical=0 launch ld (tmpbuf+21), a call clrscr ; borro pantalla inc hl @@ -722,7 +837,7 @@ sel04 ld a, (de) djnz sel04 exx ret - + ENDIF ;++++++++++++++++++++++++++++++++++ ;++++++++ Start ROM ++++++++ ;++++++++++++++++++++++++++++++++++ @@ -799,9 +914,15 @@ runbit ld b, h ;**** Main Menu **** ;********************* -main inc d +main + IF vertical=0 + inc d ld h, l call help + ELSE + ld h, l + call window + ENDIF ld ix, cad10 ld bc, $0202 call prnmul ; Harward tests ... @@ -964,6 +1085,7 @@ main17 dec a call_prnstr ld c, $15 call_prnstr + IF vertical=0 ld de, $4861 ld a, '1'<<1 tkeys1 ld l, a @@ -1030,12 +1152,6 @@ tkeys10 dec hl add a, e ret m ld l, $6b -; in a, ($7f) -; add a, $80 -; inc b -; call tkeys12 -; ld b, 4 -; call tkeys11 in a, ($1f) cpl ld b, 5 @@ -1050,12 +1166,103 @@ tkeys12 ld (hl), 7 ld (hl), $4e tkeys13 djnz tkeys11 ret + ELSE + ld de, $57cb + ld a, '1'<<1 +tkeys1 ld l, a + ld h, $2c + add hl, hl + add hl, hl + ld b, 6 +tkeys2 ld a, (hl) + ld (de), a + inc l + dec d + djnz tkeys2 + ld hl, $05c0 + add hl, de + ld a, l + or %00111111 + inc a + jr nz, tkeys3 + ld a, h + sub $07 + ld h, a +tkeys3 ex de, hl + ld a, (ix) + inc ix + add a, a + jr nc, tkeys1 + ld hl, $1082 + add hl, de + ex de, hl + jr nz, tkeys1 +tkeys4 add a, $fe + ld hl, $5993 +tkeys5 ld de, $013e + add hl, de + push af + in a, ($fe) + ld b, 5 +tkeys6 ld (hl), 7 + rrca + jr c, tkeys7 + ld (hl), $4e +tkeys7 ld de, $ffc0 + add hl, de + djnz tkeys6 + pop af + rlca + cp $ef + jr nz, tkeys5 + ld hl, $5a09 +tkeys8 ld de, $fe82 + add hl, de + push af + in a, ($fe) + ld b, 5 +tkeys9 ld (hl), 7 + rrca + jr c, tkeys10 + ld (hl), $4e +tkeys10 ld de, $0040 + add hl, de + djnz tkeys9 + add hl, de + pop af + rlca + jr c, tkeys8 + ld a, ($5ad1) + ld e, a + ld a, ($5891) + add a, e + ret m + ld hl, $5b13 + in a, ($1f) + cpl + ld b, 5 + call tkeys11 + xor a + jr tkeys4 +tkeys11 ld de, $ffc0 + add hl, de + rrca +tkeys12 ld (hl), 7 + jr c, tkeys13 + ld (hl), $4e +tkeys13 djnz tkeys11 + ret + ENDIF tape call bomain ld c, $14 ld ix, cad51 call_prnstr ; Press any key to continue + IF vertical=0 ld hl, $4881 + ELSE + ld hl, $4882 + ENDIF ld de, $00ee ld c, 8 tape1 ld b, 18 @@ -1066,9 +1273,15 @@ tape2 ld (hl), %00001111 dec c jr nz, tape1 ld hl, %0100100000001000 + IF vertical=0 ld ($5968), hl ld hl, %0000100001001000 ld ($596a), hl + ELSE + ld ($5969), hl + ld hl, %0000100001001000 + ld ($596b), hl + ENDIF tape3 ld h, b ld l, b ld bc, $7ffe @@ -1095,10 +1308,18 @@ tape6 cp 17 jr c, tape8 ld a, 17 tape7 srl l -tape8 add a, $81 +tape8 + IF vertical=0 + add a, $81 rl l ld de, $5991 ld hl, $5992 + ELSE + add a, $82 + rl l + ld de, $5992 + ld hl, $5993 + ENDIF ld c, $11 ld (hl), %01000000 lddr @@ -1113,7 +1334,11 @@ tape8 add a, $81 ;**** Roms Menu **** ;********************* roms push hl + IF vertical=0 ld h, 5 + ELSE + ld h, 4 + ENDIF call window ld a, %00111000 ; fondo blanco tinta negra ld hl, $0102 @@ -1123,6 +1348,7 @@ roms push hl ld bc, $0202 call_prnstr call_prnstr + IF vertical=0 ld bc, $1503 call_prnstr ld bc, $1b0c @@ -1135,6 +1361,7 @@ roms push hl ld c, $0e call_prnstr call_prnstr + ENDIF ld iy, indexe ld ix, cmbpnt ld de, tmpbuf @@ -1181,9 +1408,15 @@ roms4 ld (hl), a roms5 ld (ix+1), $ff ld d, $17 ld a, iyl + IF vertical=0 cp $12 jr c, roms6 ld a, $12 + ELSE + cp $1a + jr c, roms6 + ld a, $1a + ENDIF roms6 ld e, a pop af roms7 ld hl, $0104 @@ -1251,7 +1484,12 @@ isbus1 cp (hl) inc l add a, (hl) jr isbusy -isbus2 ld bc, $090a +isbus2 + IF vertical=0 + ld bc, $090a + ELSE + ld bc, $0510 + ENDIF ld ix, cad115 call_prnstr call_prnstr @@ -1320,7 +1558,7 @@ roms10 ld (offsel), hl roms11 dec iyh jr nz, roms10 ret - ENDIF + ENDIF roms12 call romcyb ld ix, cad50 roms13 call_prnstr @@ -1408,20 +1646,34 @@ roms1f djnz roms23 push hl ld de, empstr call str2tmp + IF vertical=0 ld hl, $0309 ld de, $1b07 + ELSE + ld hl, $020d + ld de, $1507 + ENDIF ld a, e ;%00000111 fondo negro tinta blanca call window dec h dec l ld a, %01001111 ; fondo azul tinta blanca call window + IF vertical=0 sub l ; fondo negro tinta blanca - ld iyl, c + ld iyl, 2 ld hl, $030c ld de, $1801 call window ld bc, $0208 + ELSE + ld a, %01000111 ; fondo negro tinta blanca + ld iyl, 2 + ld hl, $0310 + ld de, $1201 + call window + ld bc, $010c + ENDIF call_prnstr call_prnstr call_prnstr @@ -1432,6 +1684,7 @@ roms20 push ix jr nz, roms20 call_prnstr call_prnstr + IF vertical=0 ld bc, $040c ld hl, $20ff call inputs @@ -1439,6 +1692,14 @@ roms20 push ix ld de, $0708 ld a, %00111001 ; fondo blanco tinta azul call window + ELSE + xor a + ld (empstr+23), a + ld bc, $0410 + ld hl, $17ff + call inputs + ld b, 0 + ENDIF ld a, (codcnt) cp $0c pop hl @@ -1501,6 +1762,7 @@ roms27 ld hl, $0104 ;*** Upgrade Menu *** ;********************* upgra ld bc, (menuop) + IF vertical=0 ld h, 16 dec c dec c @@ -1510,6 +1772,18 @@ upgra ld bc, (menuop) upgra1 push af call help pop af + ELSE + ld h, 12 + ld d, 3 + dec c + dec c + jr nz, upgra1 + ld h, 8 + ld d, 4 +upgra1 push af + call window + pop af + ENDIF ld de, tmpbuf ld ix, cmbpnt ld hl, cad60 @@ -1580,7 +1854,7 @@ upgr34 ld (hl), a ld hl, (menuop) dec l dec l - IF recovery=0 + IF recovery=0 ld a, (alto fllen+1) or l ld a, ixl @@ -1595,14 +1869,20 @@ upgr34 ld (hl), a upgr35 ld (ix-3), $ff dec a dec a + IF vertical=0 cp 20 jr c, upgr38 ld a, 20 -upgr38 ld e, a ELSE + cp $1c + jr c, upgr38 + ld a, $1c + ENDIF +upgr38 ld e, a + ELSE ld (ix-3), $ff ld e, 4 - ENDIF + ENDIF dec l ld a, h jr nz, upgra4 @@ -1630,7 +1910,9 @@ upgra6 dec h jp nz, upgra7 tosd ld ix, cad75 + IF vertical=0 call prnhel + ENDIF call imyesn ld ix, cad445 call yesno @@ -1736,7 +2018,11 @@ tosd5 ld bc, SPI_PORT jr z, fatxx ; 04,06,0b,0c,0e -> FAT32 errsd ld ix, cad77 ferror ;wreg master_conf, 0 + IF vertical=0 ld bc, $090d + ELSE + ld bc, $0510 + ENDIF call_prnstr ld a, cad80 & $ff cp ixl @@ -1745,7 +2031,13 @@ twaitk jp nz, waitky ld a, (menuop+1) sub 4 jr c, twaitk + call cbname + ld bc, $0020 + add hl, bc + ld de, empstr + call str2tmp ld ix, cad82 + IF vertical=0 ld bc, $090a call_prnstr ld a, %00000111 ; fondo negro tinta blanca @@ -1754,13 +2046,32 @@ twaitk jp nz, waitky call window ld bc, $080b ld hl, $20ff - call inputv + call inputs ld a, (items) add a, empstr&$ff ld l, a ld h, empstr>>8 ld bc, $20 ld (hl), c + ELSE + ld bc, $050d + call_prnstr + ld a, %00000111 ; fondo negro tinta blanca + ld hl, $030e + ld de, $1201 + call window + ld bc, $040e + ld hl, $1aff + xor a + ld (empstr+$1a), a + call inputs + ld a, (items) + add a, empstr&$ff + ld l, a + ld h, empstr>>8 + ld bc, $1a + ld (hl), $20 + ENDIF ld l, empstr&$ff ld de, tmpbuf+$31 ldir @@ -1839,7 +2150,12 @@ bucop push hl ; save current cluster inc a ; cluster==FFFF pop ix jr nz, bucop -enbur ld bc, $090a +enbur + IF vertical=0 + ld bc, $090a + ELSE + ld bc, $050d + ENDIF ld ix, cad785 call_prnstr jr terror @@ -2063,7 +2379,11 @@ putc0 inc hl include sd.asm upgra7 ld hl, items + IF vertical=0 ld (hl), b + ELSE + ld (hl), 0 + ENDIF upgr75 call popupw defw cad80 defw cad81 @@ -2209,9 +2529,16 @@ upgrai ld a, 30 IF recovery=0 ;*** Advanced Menu *** ;********************* -advan ld h, 20 +advan + IF vertical=0 + ld h, 20 ld d, 8 call help + ELSE + ld h, 15 + ld d, 5 + call window + ENDIF ld ix, cad83 ld bc, $0202 call prnmul @@ -2335,8 +2662,14 @@ advan6 call popupw ;**** Exit Menu **** ;********************* -exit ld h, 28 +exit + IF vertical=0 + ld h, 28 call help + ELSE + ld h, 20 + call window + ENDIF ld ix, cad37 ld bc, $0202 call_prnstr @@ -2398,12 +2731,21 @@ blst0 add hl, bc ld a, e ld l, a call nc, nument + IF vertical=0 cp 13 jr c, blst1 ld a, 13 blst1 ld h, a ld (items), hl add a, -16 + ELSE + cp 21 + jr c, blst1 + ld a, 21 +blst1 ld h, a + ld (items), hl + add a, -24 + ENDIF cpl rra ld l, a @@ -2412,7 +2754,11 @@ blst1 ld h, a ld e, a ld a, %01001111 ; fondo azul tinta blanca ld h, $01 ; coordenada X + IF vertical=0 ld d, $1c ; anchura de ventana + ELSE + ld d, $16 ; anchura de ventana + ENDIF push hl call window ld ix, cad2 @@ -2459,9 +2805,15 @@ bls37 ld (ix+0), cad6&$ff ld (ix+3), a ld a, (items+1) ld e, a + IF vertical=0 ld d, 32 call chcol defw $1a02 + ELSE + ld d, 25 + call chcol + defw $1402 + ENDIF defb %01001111 ld a, (cmbpnt+1) rlca @@ -2531,7 +2883,19 @@ deixl1 inc ixl addbls ld (ix+0), e ld (ix+1), d push hl + IF vertical=0 call str2tmp + ELSE + push de + call str2tmp + pop hl + ld a, l + add a, 25 + ld l, a + jr nc, addbl0 + inc h +addbl0 ld (hl), 0 + ENDIF pop hl addbl1 inc iyl call deixl1 @@ -2542,20 +2906,33 @@ addbl1 inc iyl ENDIF ;first part of loadta -qloadt ld ix, cad49 +qloadt + IF vertical=0 + ld ix, cad49 call prnhel call bloq1 dec c dec c + ELSE + call bloq1 + ld bc, $040c + ENDIF ld iyl, 5 loadt1 ld ix, cad42 call_prnstr dec iyl jr nz, loadt1 + IF vertical=0 ld ixl, cad43 & $ff call_prnstr ld ixl, cad44 & $ff ld c, b + ELSE + ld ix, cad43 + call_prnstr + ld ixl, cad44 & $ff + ld c, $0b + ENDIF call_prnstr ; ------------------------------------- @@ -2564,10 +2941,17 @@ loadt1 ld ix, cad42 romcyb ld a, iyl romcy1 sub 5 jr nc, romcy1 + IF vertical=0 add a, 5+9 ld c, a inc iyl ld b, 8 + ELSE + add a, 5+12 + ld c, a + inc iyl + ld b, 4 + ENDIF ld ix, cad42 call_prnstr inc b @@ -2577,6 +2961,7 @@ romcy1 sub 5 ; ------------------------------------- ; Generates a determined box with shadow ; ------------------------------------- + IF vertical=0 bloq1 ld hl, $0709 ld de, $1207 ld a, %00000111 ;%00000111 fondo negro tinta blanca @@ -2586,6 +2971,17 @@ bloq1 ld hl, $0709 ld a, %01001111 ; fondo azul tinta blanca call window ld bc, $080b + ELSE +bloq1 ld hl, $040c + ld de, $1207 + ld a, %00000111 ;%00000111 fondo negro tinta blanca + call window + dec h + dec l + ld a, %01001111 ; fondo azul tinta blanca + call window + ld bc, $040e + ENDIF ret ; ------------------------------------- @@ -2644,13 +3040,24 @@ loadta call qloadt ; Returns: ; A: 0: yes, 1: no ; ------------------------------------- -yesno ld bc, $0808 +yesno + IF vertical=0 + ld bc, $0808 call_prnstr call_prnstr call_prnstr yesno0 inc a yesno1 ld ixl, a yesno2 ld hl, $0b0d + ELSE + ld bc, $040b + call_prnstr + call_prnstr + call_prnstr +yesno0 inc a +yesno1 ld ixl, a +yesno2 ld hl, $0810 + ENDIF ld de, $0801 ld a, %01001111 ; fondo azul tinta blanca call window @@ -2658,7 +3065,11 @@ yesno2 ld hl, $0b0d ld d, 3 ld b, ixl djnz yesno3 + IF vertical=0 ld h, $11 + ELSE + ld h, $0e + ENDIF dec d yesno3 call window call waitky @@ -2776,6 +3187,7 @@ input7 ld (codcnt), a jr nc, input8 ld a, r ret p + IF vertical=0 cursor ld a, (offsel) add a, b ld l, a @@ -2817,6 +3229,36 @@ curso3 ld a, (de) dec l jr nz, curso3 ret + ELSE +cursor ld a, (offsel) + add a, b + ld e, a + add a, e + add a, e + add a, a + cpl + add a, 192 + ld e, a + rrca + rrca + rrca + and %00011000 + xor e + and %11111000 + xor e + or %01000000 + ld d, a + ld a, e + rlca + rlca + and %11100000 + add a, c + ld e, a +curso3 ld a, (de) + cpl + ld (de), a + ret + ENDIF input8 ld hl, (offsel) cp $18 jr nz, input9 @@ -3043,12 +3485,20 @@ lista4 call window ld c, a add hl, bc push ix + IF vertical=0 ld a, (hl) ld ixh, a dec hl ld a, (hl) ld ixl, a call prnhel + ELSE + call waitky + ld a, (codcnt) + cp $0d + jr z, listaa + jr lista55 + ENDIF call waitky ld a, (codcnt) cp $0d @@ -3084,7 +3534,7 @@ delhe3 dec c ei jp (ix) lista5 ld sp, stack-8 - pop ix +lista55 pop ix pop de pop hl ld a, (codcnt) @@ -3134,6 +3584,7 @@ rest1 ld de, $1b08 ; HL: X coordinate (H) and Y coordinate (L) ; DE: window width (D) and window height (E) ; ------------------------------------- + IF vertical=0 window push hl push de ld c, h @@ -3147,21 +3598,51 @@ window push hl add hl, bc windo1 ld b, d windo2 ld (hl), a - inc l + inc hl djnz windo2 - ex af, af' - ld a, l - sub d - add a, 32 - ld l, a - jr nc, windo3 - inc h -windo3 ex af, af' + ld c, d + sbc hl, bc + ld c, $20 + add hl, bc dec e jr nz, windo1 pop de pop hl ret + ELSE +window push hl + push de + ld c, l;h + push af + ld a, 23 + sub h + ld l, a + pop af + add hl, hl + add hl, hl + add hl, hl + ld h, $16 + add hl, hl + add hl, hl + ld b, 0 + add hl, bc + ld c, e + add hl, bc + +windo1 ld b, e;d +windo2 dec hl + ld (hl), a + djnz windo2 + ld c, e + add hl, bc + ld bc, $ffe0 + add hl, bc + dec d;e + jr nz, windo1 + pop de + pop hl + ret + ENDIF ; ------------------------------------- ; Change corwid and colcmb variables @@ -3222,11 +3703,19 @@ popup1 ldi ld a, e dec a ld iyl, a + IF vertical=0 add a, -24 cpl rra ld l, a ld h, $16 + ELSE + add a, -32 + cpl + rra + ld l, a + ld h, $13 + ENDIF ld d, 1 ld a, %00000111 ; fondo negro tinta blanca call window @@ -3236,20 +3725,32 @@ popup1 ldi push hl add a, l ld l, a + IF vertical=0 ld h, $0a + ELSE + ld h, $07 + ENDIF ld de, $0d01 ld a, %00000111 ; fondo negro tinta blanca call window pop hl ld e, h dec l + IF vertical=0 ld h, $09 + ELSE + ld h, $06 + ENDIF push de push hl ld a, %01001111 ; fondo azul tinta blanca call window ld ix, cad21 + IF vertical=0 ld b, $0c + ELSE + ld b, $08 + ENDIF ld c, l call_prnstr popup2 ld ix, cad22 @@ -3258,13 +3759,21 @@ popup2 ld ix, cad22 jr nz, popup2 call_prnstr call chcol + IF vertical=0 defw $0b0a + ELSE + defw $0b07 + ENDIF defb %01001111 pop hl pop de inc l ld a, h + IF vertical=0 add a, 5 + ELSE + add a, 4 + ENDIF ld h, a dec e dec e @@ -3564,7 +4073,7 @@ hhhh push af ;binf jr binf ENDIF - IF recovery=0 + IF recovery=0 incbin es.zx7b fines incbin us.zx7b finus incbin av.zx7b @@ -3572,9 +4081,14 @@ finav ; ----------------------------------------------------------------------------- ; Compressed and RCS filtered logo ; ----------------------------------------------------------------------------- + IF vertical=0 incbin logo256x192.rcs.zx7b +finlog incbin strings.bin.zx7b + ELSE + incbin logo192x256.rcs.zx7b finlog incbin strings.bin.zx7b ENDIF + ENDIF ; ----------------------------------------------------------------------------- ; Compressed messages @@ -3905,12 +4419,12 @@ check1 xor (hl) ;6*4+4*7+10= 62 ciclos/byte ; A: input slot ; Returns: ; HL: destination address - IF recovery=0 + IF recovery=0 slot2a ld de, 3 and $3f - cp 19 ld h, d ld l, a + cp 19 jr c, slot2b ld e, $c0 slot2b add hl, de ; $00c0 y 2f80 @@ -3921,7 +4435,7 @@ slot2c add hl, hl add hl, hl add hl, hl ret - ENDIF + ENDIF help call window ld a, %00111000 ; fondo blanco tinta negra @@ -3943,6 +4457,7 @@ help call window ; BC: X coord (B) and Y coord (C) ; IX: null terminated string ; ----------------------------------------------------------------------------- + IF vertical=0 prnstr push bc call alto prnstr1 pop bc @@ -4061,6 +4576,60 @@ doble2 ld a, (de) add hl, de ex de, hl ret + ELSE +prnstr push bc + call alto prnstr1 + pop bc + inc c + ret +prnstr1 ld a, b + add a, b + add a, b + add a, a + cpl + add a, 192 + ld e, a + rrca + rrca + rrca + and %00011000 + xor e + and %11111000 + xor e + or %01000000 + ld d, a + ld a, e + rlca + rlca + and %11100000 + add a, c + ld e, a +prnstr2 ld a, (ix) + inc ix + add a, a + ret z + ld h, $b0 >> 2 + ld b, 6 + ld l, a + add hl, hl + add hl, hl +prnstr3 ld a, (hl) + ld (de), a + ld a, d + and $07 + jr nz, prnstr4 + ld a, e + sub $20 + ld e, a + jr c, prnstr4 + ld a, d + add a, $08 + ld d, a +prnstr4 dec d + inc l + djnz prnstr3 + jr prnstr2 + ENDIF ; ---------- ; CRC Table @@ -4071,7 +4640,12 @@ crctab incbin crctable.bin ; ----------------------------------------------------------------------------- ; 6x8 character set (128 characters x 1 rotation) ; ----------------------------------------------------------------------------- + IF vertical=0 incbin fuente6x8.bin + ELSE + incbin fuente8x6.bin + ENDIF + chrend IF recovery=1 diff --git a/firmware/fuente8x6.bin b/firmware/fuente8x6.bin new file mode 100644 index 0000000000000000000000000000000000000000..847a1de80714b48a6b1e54abcc745fe5deca8c96 GIT binary patch literal 896 zcmYL{!D{0$5Qb&p6tkEjOjvR-sSr*mCM+TBAr#{pv4miHFowMpwwNA!=xGmSG1^z# zN7+Z{6SV#Ri9;trpZ<|XGb33k^{!w>j5Bp*jOZ&-O1)0{b<*#XKF6Kc&vCMjy`frQ zw8PtA!6bc46VU8O#v|dlCqM0vOb4a#SE>m3fj8yf@*BAOo_t+{o4$;{fXX%;VU_3T zD~`xh<|XqaNu7`?y5I;6stCgZ-c@=_^=cxerW8p3iy%@@_@9he_W_ z|K~oN&@@;dr*mIo9lwZy&cRznI{|7mUV9fvk literal 0 HcmV?d00001 diff --git a/firmware/logo192x256.rcs.zx7b b/firmware/logo192x256.rcs.zx7b new file mode 100644 index 0000000000000000000000000000000000000000..03823840cf40b5fa7b7d2d730ea4af6f72dd3672 GIT binary patch literal 336 zcmV-W0k8h7s<_U8fB>rjyz&%nIKu#O{zR9*H@efF|L_W>q!<2$D!cEGBJPJj>-heP z`zHYI`}>*p7gv>7z4g_Z4->?M4+BpU2w?8;{1q}k+wuVZ_W&L6Kjea`lE473;6=gD zdeD;>%6t7!03IFu5qQ`6*v|lCBGdW+YJeaBBPswfcGPOb0RsmR4J z0GLdg7=a=H8~Zo#;J|KUU)5CrU-482AJL#ct^f(0p&zb4 i=s^nK5+7YYbwq!qAG)eW9~MU+6$0u9M@K>c5TXapvz?Ft literal 0 HcmV?d00001 diff --git a/firmware/strings.asm b/firmware/strings.asm index ff42e53..8d583f4 100644 --- a/firmware/strings.asm +++ b/firmware/strings.asm @@ -1,41 +1,75 @@ cad0 defb 'Core: ',0 -cad1 defm 'http://zxuno.speccy.org', 0 - defm 'ZX-Uno BIOS v0.63', 0 - defm 'Copyleft ', 127, ' 2017 ZX-Uno Team', 0 - defm 'Processor: Z80 3.5MHz', 0 - defm 'Memory: 512K Ok', 0 - defm 'Graphics: normal, hi-color', 0 - defm 'hi-res, ULAplus', 0 - defm 'Booting:', 0 - defm 'Press to Setup Boot Menu', 0 +cad1 defb 'http://zxuno.speccy.org', 0 + defb 'ZX-Uno BIOS v0.64', 0 + defb 'Copyleft ', 127, ' 2017 ZX-Uno Team', 0 + defb 'Processor: Z80 3.5MHz', 0 + defb 'Memory: 512K Ok', 0 + defb 'Graphics: normal, hi-color', 0 + defb 'hi-res, ULAplus', 0 + defb 'Booting:', 0 + IF vertical=0 + defb 'Press to Setup Boot Menu', 0 cad2 defb $12, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $13, 0 - defm $10, ' Please select boot machine: ', $10, 0 + defb $10, ' Please select boot machine: ', $10, 0 cad3 defb $16, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $17, 0 -cad4 defm $10, ' ', $10, 0 -cad5 defm $10, ' ', $1c, ' and ', $1d, ' to move selection ', $10, 0 - defm $10, ' ENTER to select boot machine ', $10, 0 +cad4 defb $10, ' ', $10, 0 +cad5 defb $10, ' ', $1c, ' and ', $1d, ' to move selection ', $10, 0 + defb $10, ' ENTER to select boot machine ', $10, 0 defb $14, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $15, 0 -cad118 defm ' Please select boot machine', 0 +cad118 defb ' Please select boot machine', 0 cad6 defb 'Enter Setup', 0 cad7 defb ' Main ROMs Upgrade Boot Advanced Exit', 0 defb $12, $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, $19, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $13, 0 -cad8 defm $10, ' ', $10, ' ', $10, 0 - defm $10, 0 +cad8 defb $10, ' ', $10, ' ', $10, 0 + defb $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.63 ', $7f, '2017 ZX-Uno Team', 0 + defb ' BIOS v0.64 ', $7f, '2017 ZX-Uno Team', 0 + ELSE + defb 'Press to Setup',0 + defb ' Boot Menu', 0 +cad2 defb $12 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $11, $13, 0 + defb $10, ' Select boot machine: ', $10, 0 +cad3 defb $16 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $11, $17, 0 +cad4 defb $10, ' ', $10, 0 +cad5 defb $10, ' ', $1c, ' and ', $1d, ' to move ', $10, 0 + defb $10, ' ENTER to select boot ', $10, 0 + defb $14 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $11, $15, 0 +cad118 defb ' Please select boot machine', 0 +cad6 defb 'Enter Setup', 0 +cad7 defb ' Main ROMs Upgr Boot Advan Exit', 0 + defb $12, $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, $13, 0 +cad8 defb $10, ' ', $10, 0 + defb $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.64 ', $7f, '2017 ZX1 Team', 0 + defs $66 + ENDIF cad10 defb 'Hardware tests', 0 defb $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, 0 @@ -133,6 +167,7 @@ cad33 defb 'Set Active', 0 cad34 defb 'Move Down a', 0 cad35 defb 'Rename', 0 cad36 defb 'Delete', 0 + IF vertical=0 defb ' ', $12, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11 defb ' Rename ', $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $11, $13, 0 defb ' ', $10, ' ', $1e, ' ', $1f, ' Enter accept Break cancel ', $10, 0 @@ -145,6 +180,21 @@ cad36 defb 'Delete', 0 defb $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $11, $11 defb $11, $11, $11, $11, $11, $11, $11, $15, 0 + ELSE + defb ' ', $12, $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb ' Rename ', $11, $11, $11, $11, $11, $11, $11, $11, $13, 0 + defb ' ', $10, ' ', $1e, ' ', $1f, ' Enter Break ', $10, 0 + defb ' ', $16 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $17, 0 + defb ' ', $10, ' ', $10, 0 + defb ' ', $14 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $11, $11 + defb $11, $11, $11, $11, $11, $11, $11, $15, 0 + defs $28 + ENDIF cad38 defb 'Exit system', 0 defb 'setup after', 0 defb 'saving the', 0