From 42b4ec59ba914e46529d09fe4850ced2d5997c66 Mon Sep 17 00:00:00 2001 From: Peter Ferrie Date: Mon, 19 Feb 2018 16:01:36 -0800 Subject: [PATCH] 40/80 and lower/upper option --- src/z4/d500-f7ff.pak | Bin 6367 -> 6369 bytes src/z4/z4.s | 100 ++++++++++++++ src/z5/d500-ffff.pak | Bin 7769 -> 7770 bytes src/z5/z5.s | 307 ++++++++++++++++++++++++++++-------------- src/z5u/d500-ffff.pak | Bin 7699 -> 7700 bytes src/z5u/z5u.s | 106 ++++++++++++++- 6 files changed, 406 insertions(+), 107 deletions(-) diff --git a/src/z4/d500-f7ff.pak b/src/z4/d500-f7ff.pak index 03d1461134fcf984ff91e2d6bfed1e1bf23effee..3be19d691dbf8c6244ff1af996d02a444753540b 100644 GIT binary patch delta 4763 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 delta 4761 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�XOB(PnCIE&^&+(!e8Qp8l z1Z=n_V7`+E0_0(k2i#~SV+tY`K}B0J83ok|3Y8FPCX~qs1&{c@)tC=Amk0Hk9@7Vf zmWIyCn-qVTng<1(KZTk3SPASCm|y^&FflSSGypX=H#j*iEFl0tUn3_XFI+7IIw&cI zZn#v5rg*M~1F`!h;~7~p{e72$t7&lZN1@n>M;2y^C|+QCtS?|FWd#R-@CMop$3Vpc zQNP7c84zI5I%E(H@$_D7R9ii*8C~33$y^XRI_ZBhst*w;iADrV{Qyix^Pvs`NizbG zalq?_Z6lK7%cOB)yh24fH0;#6+)-n!> z^!8pq)AH7TBzwJHB#Cvc#Oht#m2Tf|COd?r(8Ry6V525-BrVd4*)G|K+@X-&Q2^ zR9eaH0<5_~g0}~Ex@EYu$clTBB<8uHzsRzEE{4_5x9~nG>gX+)ut>|BR-HP+r|mln}7?=U`ogW!{kt=|nFAOFlA2_NfE(WgK8nrdX{DTTz11 z=*_+UhMocq$0{%lqwp6X1{**(dOl$2pbkJHL4j?K8iw(k2PY2l$zuT(sMTkmJ5^vr z6Dj^#Kl5y0ho)MY1rfN?NV%$!2ois#4ZvAci`f z2|MvsC=<7_M)P>78CHFX!U=J7$wFU zpi4qFf|hKOqxB@DcoDPp=9q+SqZv=}Y>A3-^sg<#=s%L)~_{ zvv3A)*V&zXnO|0+rM~u&gHaP`Yyz4FaDu?4TTKa1Qbk={ nT^4B~{2*7k`a0=UD}^!r<0TP!(m=#4VPvXJ>@EVrJyQSxb*7fc diff --git a/src/z4/z4.s b/src/z4/z4.s index 70e1c3c..dcb8117 100644 --- a/src/z4/z4.s +++ b/src/z4/z4.s @@ -335,6 +335,72 @@ slot lda $cfff sta reloc, y iny bne - + + lda $305 + eor $304 + eor $303 + eor $302 + eor $301 + eor $300 + eor #$a5 + beq + + + lda #$D9 + sta $300 ;80-cols + ldx #1 + stx $301 ;lowercase + dex + dex + stx $302 ;no load ++ + + lda #call80 + sta $ddcd + + ldx $300 + cpx #$ce + beq skip80 + lda $bf98 + and #2 + bne okay80 + +skip80 + lda #$2c + sta call80 + lda #$88 + sta bspace+1 + lda #$df + sta inversemask+1 + lda #7 + sta $dde0 + +okay80 + lda $301 + beq useupper + lda $bf98 + bmi skipupper +useupper + lda #$df + sta normalmask+1 + sta inversemask+1 + +skipupper + +;; ldx $302 +;; inx +;; beq + +;; lda $11de +;; sta loadcall1+1 +;; lda $11df +;; sta loadcall2+1 +;; lda #callback1 +;; sta $11df ++ + ldy #save_end-saveme - lda saveme-1, y sta $2ff, y @@ -363,6 +429,17 @@ slot lda $cfff jsr hddopendir jmp entry +call80 jsr $c300 + lda $36 + sta printchar + 1 + lda $37 + sta printchar + 2 + lda #casemap + sta $37 + rts + !if load_aux = 1 { sta CLRAUXWR + (load_banked * 4) ;CLRAUXWR or CLRAUXZP } ;load_aux @@ -1373,6 +1450,29 @@ unrunit = unrelochdd + (* + 1 - reloc) unrentry = unrelochdd + (* + 1 - reloc) jmp $d1d1 +casemap + cmp #8 + beq bspace + cmp #$e1 + bcc + + cmp #$fb + bcs + +normalmask + and #$ff ++ ldy $32 + bmi + + cmp #$e1 + bcc + + cmp #$fb + bcs + +inversemask + and #$ff + !byte $2c +bspace + lda #8 +printchar ++ jmp $d1d1 + hddcodeend !if swap_zp = 1 { zp_array !fill last_zp - first_zp diff --git a/src/z5/d500-ffff.pak b/src/z5/d500-ffff.pak index 337034f5aa1401d8d24f821355b1353ba598f913..687f7ea539c0b073a041f80649de94425cddc21b 100644 GIT binary patch delta 6228 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 qvoFu_dbso1N=k}0uz<_SWr)WtDq`x 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 diff --git a/src/z5/z5.s b/src/z5/z5.s index f432206..5cb88ad 100644 --- a/src/z5/z5.s +++ b/src/z5/z5.s @@ -324,6 +324,72 @@ slot lda $cfff sta reloc, y iny bne - + + lda $305 + eor $304 + eor $303 + eor $302 + eor $301 + eor $300 + eor #$a5 + beq + + + lda #$D9 + sta $300 ;80-cols + ldx #1 + stx $301 ;lowercase + dex + dex + stx $302 ;no load ++ + + lda #call80 + sta $ddcd + + ldx $300 + cpx #$ce + beq skip80 + lda $bf98 + and #2 + bne okay80 + +skip80 + lda #$2c + sta call80 + lda #$88 + sta bspace+1 + lda #$df + sta inversemask+1 + lda #7 + sta $dde0 + +okay80 + lda $301 + beq useupper + lda $bf98 + bmi skipupper +useupper + lda #$df + sta normalmask+1 + sta inversemask+1 + +skipupper + +;; ldx $302 +;; inx +;; beq + +;; lda $11de +;; sta loadcall1+1 +;; lda $11df +;; sta loadcall2+1 +;; lda #callback1 +;; sta $11df ++ + ldy #save_end-saveme - lda saveme-1, y sta $2ff, y @@ -352,6 +418,17 @@ slot lda $cfff jsr hddopendir jmp entry +call80 jsr $c300 + lda $36 + sta printchar + 1 + lda $37 + sta printchar + 2 + lda #casemap + sta $37 + rts + !if load_aux = 1 { sta CLRAUXWR + (load_banked * 4) ;CLRAUXWR or CLRAUXZP } ;load_aux @@ -1362,6 +1439,29 @@ unrunit = unrelochdd + (* + 1 - reloc) unrentry = unrelochdd + (* + 1 - reloc) jmp $d1d1 +casemap + cmp #8 + beq bspace + cmp #$e1 + bcc + + cmp #$fb + bcs + +normalmask + and #$ff ++ ldy $32 + bmi + + cmp #$e1 + bcc + + cmp #$fb + bcs + +inversemask + and #$ff + !byte $2c +bspace + lda #8 +printchar ++ jmp $d1d1 + hddcodeend !if swap_zp = 1 { zp_array !fill last_zp - first_zp @@ -1369,6 +1469,109 @@ zp_array !fill last_zp - first_zp hdddataend } ;reloc +;[music] you can't touch this [music] +;math magic to determine ideal loading address, and information dump +!ifdef PASS2 { +} else { ;PASS2 not defined + !set PASS2=1 + !if reloc < $c000 { + !if ((hdddataend + $ff) & -256) > $c000 { + !serious "initial reloc too high, adjust to ", $c000 - (((hdddataend + $ff) & -256) - reloc) + } ;hdddataend + !if load_high = 1 { + !if ((hdddataend + $ff) & -256) != $c000 { + !warn "initial reloc too low, adjust to ", $c000 - (((hdddataend + $ff) & -256) - reloc) + } ;hdddataend + hdddirbuf = reloc - $200 + !if aligned_read = 0 { + hddencbuf = hdddirbuf - $200 + } ;aligned_read + !if allow_trees = 1 { + !if aligned_read = 0 { + hddtreebuf = hddencbuf - $200 + } else { ;aligned_read = 1 + hddtreebuf = hdddirbuf - $200 + } ;aligned_read + } ;allow_trees + } else { ;load_high = 0 + !pseudopc ((hdddataend + $ff) & -256) { + hdddirbuf = * + } + !if aligned_read = 0 { + hddencbuf = hdddirbuf + $200 + !if hddencbuf >= $c000 { + !if hddencbuf < $d000 { + !set hddencbuf = reloc - $200 + } + } + } ;aligned_read + !if allow_trees = 1 { + !if aligned_read = 0 { + hddtreebuf = hddencbuf + $200 + !if hddtreebuf >= reloc { + !if hddencbuf < hddcodeend { + !set hddtreebuf = hddencbuf - $200 + } + } + } else { ;aligned_read = 1 + hddtreebuf = hdddirbuf + $200 + } ;aligned_read + } ;allow_trees + } ;load_high + } else { ;reloc > $c000 + !if ((hdddataend + $ff) & -256) < reloc { + !serious "initial reloc too high, adjust to ", (0 - (((hdddataend + $ff) & -256) - reloc)) & $ffff + } ;hdddataend + !if load_high = 1 { + !if (((hdddataend + $ff) & -256) & $ffff) != 0 { + !warn "initial reloc too low, adjust to ", (0 - (((hdddataend + $ff) & -256) - reloc)) & $ffff + } ;hdddataend + hdddirbuf = reloc - $200 + !if aligned_read = 0 { + hddencbuf = hdddirbuf - $200 + } ;aligned_read + !if allow_trees = 1 { + !if aligned_read = 0 { + hddtreebuf = hddencbuf - $200 + } else { ;aligned_read = 1 + hddtreebuf = hdddirbuf - $200 + } ;aligned_read + } ;allow_trees + } else { ;load_high = 0 + !pseudopc ((hdddataend + $ff) & -256) { + hdddirbuf = reloc - $200 + } + !if aligned_read = 0 { + hddencbuf = hdddirbuf - $200 + } ;aligned_read + !if (allow_trees + fast_trees) > 1 { + !if aligned_read = 0 { + hddtreebuf = hddencbuf + $200 + } else { ;aligned_read = 1 + hddtreebuf = hdddirbuf + $200 + } ;aligned_read + } ;allow_trees + } ;load_high + } ;reloc + !if verbose_info = 1 { + !warn "hdd code: ", reloc, "-", hddcodeend - 1 + !warn "hdd data: ", hddcodeend, "-", hdddataend - 1 + !warn "hdd dirbuf: ", hdddirbuf, "-", hdddirbuf + $1ff + !if aligned_read = 0 { + !warn "hdd encbuf: ", hddencbuf, "-", hddencbuf + $1ff + } ;aligned_read + !if (allow_trees + fast_trees) > 1 { + !warn "hdd treebuf: ", hddtreebuf, "-", hddtreebuf + $1ff + } ;allow_trees + !warn "hdd driver start: ", unrelochdd - init + !if one_page = 0 { + !if ((hddcodeend - hddopendir) < $100) { + !warn "one_page can be enabled, code is small enough" + } ;hddcodeend + } ;!one_page + } ;verbose_info +} ;PASS2 + saveme !pseudopc $300 { jsr swap_zpg @@ -1519,110 +1722,6 @@ readpart lda istree } save_end -;[music] you can't touch this [music] -;math magic to determine ideal loading address, and information dump -!ifdef PASS2 { -} else { ;PASS2 not defined - !set PASS2=1 - !if reloc < $c000 { - !if ((hdddataend + $ff) & -256) > $c000 { - !serious "initial reloc too high, adjust to ", $c000 - (((hdddataend + $ff) & -256) - reloc) - } ;hdddataend - !if load_high = 1 { - !if ((hdddataend + $ff) & -256) != $c000 { - !warn "initial reloc too low, adjust to ", $c000 - (((hdddataend + $ff) & -256) - reloc) - } ;hdddataend - hdddirbuf = reloc - $200 - !if aligned_read = 0 { - hddencbuf = hdddirbuf - $200 - } ;aligned_read - !if allow_trees = 1 { - !if aligned_read = 0 { - hddtreebuf = hddencbuf - $200 - } else { ;aligned_read = 1 - hddtreebuf = hdddirbuf - $200 - } ;aligned_read - } ;allow_trees - } else { ;load_high = 0 - !pseudopc ((hdddataend + $ff) & -256) { - hdddirbuf = * - } - !if aligned_read = 0 { - hddencbuf = hdddirbuf + $200 - !if hddencbuf >= $c000 { - !if hddencbuf < $d000 { - !set hddencbuf = reloc - $200 - } - } - } ;aligned_read - !if allow_trees = 1 { - !if aligned_read = 0 { - hddtreebuf = hddencbuf + $200 - !if hddtreebuf >= reloc { - !if hddencbuf < hddcodeend { - !set hddtreebuf = hddencbuf - $200 - } - } - } else { ;aligned_read = 1 - hddtreebuf = hdddirbuf + $200 - } ;aligned_read - } ;allow_trees - } ;load_high - } else { ;reloc > $c000 - !if ((hdddataend + $ff) & -256) < reloc { - !serious "initial reloc too high, adjust to ", (0 - (((hdddataend + $ff) & -256) - reloc)) & $ffff - } ;hdddataend - !if load_high = 1 { - !if (((hdddataend + $ff) & -256) & $ffff) != 0 { - !warn "initial reloc too low, adjust to ", (0 - (((hdddataend + $ff) & -256) - reloc)) & $ffff - } ;hdddataend - hdddirbuf = reloc - $200 - !if aligned_read = 0 { - hddencbuf = hdddirbuf - $200 - } ;aligned_read - !if allow_trees = 1 { - !if aligned_read = 0 { - hddtreebuf = hddencbuf - $200 - } else { ;aligned_read = 1 - hddtreebuf = hdddirbuf - $200 - } ;aligned_read - } ;allow_trees - } else { ;load_high = 0 - !pseudopc ((hdddataend + $ff) & -256) { - hdddirbuf = reloc - $200 - } - !if aligned_read = 0 { - hddencbuf = hdddirbuf - $200 - } ;aligned_read - !if (allow_trees + fast_trees) > 1 { - !if aligned_read = 0 { - hddtreebuf = hddencbuf + $200 - } else { ;aligned_read = 1 - hddtreebuf = hdddirbuf + $200 - } ;aligned_read - } ;allow_trees - } ;load_high - } ;reloc - !if verbose_info = 1 { - !warn "hdd code: ", reloc, "-", hddcodeend - 1 - !warn "hdd data: ", hddcodeend, "-", hdddataend - 1 - !warn "hdd dirbuf: ", hdddirbuf, "-", hdddirbuf + $1ff - !if aligned_read = 0 { - !warn "hdd encbuf: ", hddencbuf, "-", hddencbuf + $1ff - } ;aligned_read - !if (allow_trees + fast_trees) > 1 { - !warn "hdd treebuf: ", hddtreebuf, "-", hddtreebuf + $1ff - } ;allow_trees - !warn "hdd driver start: ", unrelochdd - init - !if one_page = 0 { - !if ((hddcodeend - hddopendir) < $100) { - !warn "one_page can be enabled, code is small enough" - } ;hddcodeend - } ;!one_page - !warn "save code: ", $300, "-", $300 + (save_end - saveme) - 1 - } ;verbose_info -} ;PASS2 - unpack ;unpacker entrypoint lda #0 sta last diff --git a/src/z5u/d500-ffff.pak b/src/z5u/d500-ffff.pak index 482afa0f5fb6cc6a4ba275c321eb70976eaf3d94..61d4e077859ecdcdf6420398547fcc70bb9a9e9e 100644 GIT binary patch delta 6168 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 diff --git a/src/z5u/z5u.s b/src/z5u/z5u.s index 2f98144..9f12d4c 100644 --- a/src/z5u/z5u.s +++ b/src/z5u/z5u.s @@ -324,6 +324,72 @@ slot lda $cfff sta reloc, y iny bne - + + lda $305 + eor $304 + eor $303 + eor $302 + eor $301 + eor $300 + eor #$a5 + beq + + + lda #$D9 + sta $300 ;80-cols + ldx #1 + stx $301 ;lowercase + dex + dex + stx $302 ;no load ++ + + lda #call80 + sta $ddcd + + ldx $300 + cpx #$ce + beq skip80 + lda $bf98 + and #2 + bne okay80 + +skip80 + lda #$2c + sta call80 + lda #$88 + sta bspace+1 + lda #$df + sta inversemask+1 + lda #7 + sta $dde0 + +okay80 + lda $301 + beq useupper + lda $bf98 + bmi skipupper +useupper + lda #$df + sta normalmask+1 + sta inversemask+1 + +skipupper + +;; ldx $302 +;; inx +;; beq + +;; lda $11de +;; sta loadcall1+1 +;; lda $11df +;; sta loadcall2+1 +;; lda #callback1 +;; sta $11df ++ + ldy #save_end-saveme - lda saveme-1, y sta $2ff, y @@ -352,6 +418,17 @@ slot lda $cfff jsr hddopendir jmp entry +call80 jsr $c300 + lda $36 + sta printchar + 1 + lda $37 + sta printchar + 2 + lda #casemap + sta $37 + rts + !if load_aux = 1 { sta CLRAUXWR + (load_banked * 4) ;CLRAUXWR or CLRAUXZP } ;load_aux @@ -1362,6 +1439,29 @@ unrunit = unrelochdd + (* + 1 - reloc) unrentry = unrelochdd + (* + 1 - reloc) jmp $d1d1 +casemap + cmp #8 + beq bspace + cmp #$e1 + bcc + + cmp #$fb + bcs + +normalmask + and #$ff ++ ldy $32 + bmi + + cmp #$e1 + bcc + + cmp #$fb + bcs + +inversemask + and #$ff + !byte $2c +bspace + lda #8 +printchar ++ jmp $d1d1 + hddcodeend !if swap_zp = 1 { zp_array !fill last_zp - first_zp @@ -1778,8 +1878,8 @@ getsrc sty tmp rts pakoff -!bin "bz1_d500-ffff.pak" -!bin "bz2_0800-09ff.pak" +!bin "d500-ffff.pak" +!bin "0800-09ff.pak" readbuff -!byte $D3,$C1,$CE,$A0,$C9,$CE,$C3,$AE \ No newline at end of file +!byte $D3,$C1,$CE,$A0,$C9,$CE,$C3,$AE