From 2a14a04de4f611d5774f96363bc524cf73646553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 27 Nov 2017 17:39:09 +0100 Subject: [PATCH] Kernel 0.9.1 : DHGR Driver, BitBLT, mouse pointer --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes DRV/DHGR.DRV.S.BLT.txt | 173 ++++++++++++++++++++++++++++----------- DRV/DHGR.DRV.S.LBUF.txt | 27 +++--- DRV/DHGR.DRV.S.txt | 14 ++-- INC/LIBGUI.I.txt | 10 ++- LIB/LIBGUI.S.txt | 30 ------- SBIN/GUI.S.txt | 72 +++++++++++++++- 8 files changed, 227 insertions(+), 99 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ef5170ef541df24e10ef40124afb2b7acfce4f99..f5fc84548828cd76a098d581fe71255313463389 100644 GIT binary patch delta 3295 zcmcImdr(x@89(>lMOIwcB|O|Li`=~zm8*h#j;M|O?BsxoC6I(7_LAB(ld2b0iA#$rZsCsmVlRQlb^vOcP& z{}krDzVG+_zQ=y&>{eBgsw&btsMEd6Q;DAIx}~s5P4LW#;bAi|(X&2guO?}~7qfT_ zW%Lvo-tmZr`1T${%kQ2Whvq+rf?S%BM_(dVWoWPY{W02fnns&=qah+qO=w?nXc?2F zLlzy#$B)VSWGXtyfsn>CM zTu&)`lG_H`&}~s!g##-wOL1}rQA%-Ojk>ouZe)-{%4--bB$nk$eM!6RWi`9)q6&23 z;5O9Xi<76FtGXAPG>BI>A_UQId*?A0@rVqD9H z;%iM|2DXCn(DscsvBiZu2ZVj7yVE|Ujbv9~h$$!?$Jv{3d z$ML8<^mSAU##=OFu-!Up`(*l2_6T=st3ApB+#r>}W$1cT_+Qk!$+L+QpAz<{{8?eE z80iuEU?q;Pz?i6&c`Wp_R>wn8=2zl$Eq*ope?}Fm{gwyzT5%u)r3Cj?sZ0^{!(9v&qLkB~$H_(ilE{T=oxkYmSyAo-yophvOSBEjGg_VTYIXFHVu*){AZfX4J1tf5SxG)4N9q5Vq^P`!1M6{hp4;Jz zZFB6~fNM}x)zvSNdycUn4x4+=1L)ehdsd8V8@M>SRSuF zfHziQ*-Vr-aA2+4(e>#PQPyI!YdrCT&}AlSYrhT#tFc9Xp0uQsa9rnP?4H$`gWa>? z82YjLw&}y!N-7DY5H&Z&LgX~^p_M@Y*H0iHRbuuZSuGRD{z^PFfv6YsrjkqoNlygB z`xikUkD?2kvqqd02JM18FDp1(ke6lsfWrb|*xxn_+@@Dz@LZ-H_x}tJLP%;1{VLZk zjcZ@lgLtIJqu1hjKz1C%U5=3b9fmKNp>_Do^CTRJ)~KWqv+FG!Eqv0*G4h!d zelpoC2CSsb(UJx>OHYQUb?PVl$o77SU52FVu$e_3MgnKU8_Qd4X_ ztRJQk(0YD;=8MB28gY(dE@^(x)OZk-+5?Vf=?)=*yY6SQ#r2&U;A z?J=C6OU>~VoOiT0oZrmssbH*!FP^ZOYGY9apK5}i1Mj@8{<>(t@cp;HZ8y;~sGSYe z!3Mh9GykmJ<379n$O^_u87~%E*!2`byU;9ZG1c!i7Bd{}Al@0pjNR-Y^++c>yX#;^ z-C0Ts8%SoSf%e^E=C9H&n<1$F{~6XsTR+U7!?-!|+$1q`Aae=#w@Ghs*SID8$NccH zy58e!rs=b5vh_JNIr`}w@d*ei)wY1!W)|fyyPA-X3jWfzZ!#WKmmECUGhhha0Pz_0 zJaa_+0v@ah-SnYp4n48cK2w(-dp|8ve>#h3D7b;p9H9F2n)sEZ3w5Y!ia1+U90`mNr)Yp6h}6-`adno9}aq zjSa9YfX{NuZ7y(&Ym#&<6Fi(cR^OP)E`s_g16{pLXq|G03zsT98{pU`8qlrFlwqz` z2j6UnmoM=O#mkp@h34feyu$EuKi`bx3w$#rf2K|sd1W$t!rEw6CTWZ6NDqF@Vl5kH zG(Qdzd`)CeNGdAx5md8YWkJBwoDBTUR&WSM@b^Sg!5o<42&@_VqxfEjD-;gW86{3VYs*CKYupO^Z)<= delta 3066 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

bFVT`XCApl<0Rr_T*` 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 CB.CACHE+S.CB.SrcPtr lda CB.Cache+S.CB.X2+1 sbc CB.Cache+S.CB.X1+1 sta BLT.DX+1 - + >LDYA CB.Cache+S.CB.DestX jsr LBUF.SetBounds1YA stx BLT.SCRBitOfs @@ -128,10 +128,111 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr ldy Shift.L.HI,x X = 1->6 sty ZPScrShiftPtr+1 -BITBLT.LOOP >LDYA BLT.BMDataPtr - >STYA ZPBMDataPtr +BITBLT.LOOP ldx BLT.SCRBitOfs + bne BITBLT.LOOPx + +*------------ Shift 0 + +BITBLT.LOOP0 lda CB.Cache+S.CB.OP + bit #S.CB.OP.MASK + beq .2 + >LDYA BLT.BMMaskPtr - >STYA ZPBMMaskPtr + >STYA ZPBMDataPtr + + lda BLT.BMBitOfs + sta BLT.BMBitOfsL + stz BLT.BMIdx + + ldx LBUF.C1 + stx BLT.ScrColIdx + stz LBUF.MASK,x make sure C1 not ORed with trash in "ora LBUF.DATA,x" + +.1 jsr BLT.Get7BMDBits we have 0xxxxxxxx in A + + ldx BLT.ScrColIdx + sta LBUF.MASK,x + inc BLT.ScrColIdx + cpx LBUF.C2 + bne .1 + +.2 >LDYA BLT.BMDataPtr + >STYA ZPBMDataPtr + + lda BLT.BMBitOfs + sta BLT.BMBitOfsL + stz BLT.BMIdx + + ldx LBUF.C1 + stx BLT.ScrColIdx + stz LBUF.DATA,x make sure C1 not ORed with trash in "ora LBUF.DATA,x" + +.3 jsr BLT.Get7BMDBits we have 0xxxxxxxx in A + + ldx BLT.ScrColIdx + sta LBUF.DATA,x + inc BLT.ScrColIdx + cpx LBUF.C2 + bne .3 + + jmp BITBLT.DRAW + +*------------ Shift 1->6 Comment : SCRBitOfs=X=3 + +BITBLT.LOOPx lda CB.Cache+S.CB.OP + bit #S.CB.OP.MASK + beq .4 + + lda Shift7BitsCol1,x get #%00001111, BM bits that go in Col1 + sta .2+1 + lda Shift7BitsCol2,x get #%01110000, BM bits that go in Col2 + sta .3+1 + + >LDYA BLT.BMMaskPtr + >STYA ZPBMDataPtr + + lda BLT.BMBitOfs + sta BLT.BMBitOfsL + stz BLT.BMIdx + + ldx LBUF.C1 + stx BLT.ScrColIdx + stz LBUF.MASK,x make sure C1 not ORed with trash in "ora LBUF.DATA,x" + +.1 jsr BLT.Get7BMDBits we have c6543210 in A, destination : COL=3210xxx, COL+1=xxxx654 + + pha save BM byte for 2nd col + +.2 and #$ff SELF MODIFIED : MASK WITH #%00001111, keep col1 bits only + tay + + lda (ZPScrShiftPtr),y make 0000dddd Shift left 3 : 0dddd000 + + ldx BLT.ScrColIdx Get actual COL index + ora LBUF.MASK,x Light proper bits : 0dddd??? + sta LBUF.MASK,x store 0xdddd??? + + pla Get back BM Byte + +.3 and #$ff SELF MODIFIED : #%01110000 get only col2 bites + tay + + lda (ZPScrShiftPtr),y shift right 4 (=shift left 3!!!) : 00000ddd + + sta LBUF.MASK+1,x + + inx + stx BLT.ScrColIdx + cpx LBUF.C2 + bne .1 + +.4 lda Shift7BitsCol1,x get #%00001111, BM bits that go in Col1 + sta .6+1 + lda Shift7BitsCol2,x get #%01110000, BM bits that go in Col2 + sta .7+1 + + >LDYA BLT.BMDataPtr + >STYA ZPBMDataPtr lda BLT.BMBitOfs sta BLT.BMBitOfsL @@ -141,33 +242,11 @@ BITBLT.LOOP >LDYA BLT.BMDataPtr stx BLT.ScrColIdx stz LBUF.DATA,x make sure C1 not ORed with trash in "ora LBUF.DATA,x" - ldx BLT.SCRBitOfs - bne .2 - -*------------ Shift 0 - -.1 jsr BLT.Get7BMDBits we have 0xxxxxxxx in A - - ldx BLT.ScrColIdx - sta LBUF.DATA,x - inc BLT.ScrColIdx - cpx LBUF.C2 - bne .1 - - bra BITBLT.DRAW - -*------------ Shift 1->6 Comment : SCRBitOfs=X=3 - -.2 lda Shift7BitsCol1,x get #%00001111, BM bits that go in Col1 - sta .4+1 - lda Shift7BitsCol2,x get #%01110000, BM bits that go in Col2 - sta .5+1 - -.3 jsr BLT.Get7BMDBits we have c6543210 in A, destination : COL=3210xxx, COL+1=xxxx654 +.5 jsr BLT.Get7BMDBits we have c6543210 in A, destination : COL=3210xxx, COL+1=xxxx654 pha save BM byte for 2nd col -.4 and #$ff SELF MODIFIED : MASK WITH #%00001111, keep col1 bits only +.6 and #$ff SELF MODIFIED : MASK WITH #%00001111, keep col1 bits only tay lda (ZPScrShiftPtr),y make 0000dddd Shift left 3 : 0dddd000 @@ -178,7 +257,7 @@ BITBLT.LOOP >LDYA BLT.BMDataPtr pla Get back BM Byte -.5 and #$ff SELF MODIFIED : #%01110000 get only col2 bites +.7 and #$ff SELF MODIFIED : #%01110000 get only col2 bites tay lda (ZPScrShiftPtr),y shift right 4 (=shift left 3!!!) : 00000ddd @@ -188,43 +267,46 @@ BITBLT.LOOP >LDYA BLT.BMDataPtr inx stx BLT.ScrColIdx cpx LBUF.C2 - bne .3 + bne .5 BITBLT.DRAW ldy CB.Cache+S.CB.DestY jsr LBUF.DrawAtY inc CB.Cache+S.CB.DestY + dec BLT.DY + beq .8 - lda BLT.BMDataPtr - clc - adc BM.Cache+S.BM.RowBytes - sta BLT.BMDataPtr - bcc .6 + lda CB.Cache+S.CB.OP + bit #S.CB.OP.MASK + beq .1 - inc BLT.BMDataPtr+1 - -.6 lda BLT.BMMaskPtr + lda BLT.BMMaskPtr clc adc BM.Cache+S.BM.RowBytes sta BLT.BMMaskPtr - bcc .7 - + bcc .1 + inc BLT.BMMaskPtr+1 + +.1 lda BLT.BMDataPtr + clc + adc BM.Cache+S.BM.RowBytes + sta BLT.BMDataPtr + bcc .2 -.7 dec BLT.DY - beq .8 - jmp BITBLT.LOOP + inc BLT.BMDataPtr+1 + +.2 jmp BITBLT.LOOP .8 clc rts *-------------------------------------- -* BMD/BMM bits : +* BM Data/Mask bits : * 76543210 76543210 * ^ * BMBitOfsL (0->7) * LBUF DATA/MASK Bits * c6543210 c6543210 * ^ -* SCRBitOfs (0->6) *-------------------------------------- BLT.Get7BMDBits ldy BLT.BMIdx lda (ZPBMDataPtr),y @@ -258,7 +340,6 @@ BLT.Get7BMDBits ldy BLT.BMIdx pla get back right part bits 000xxxxx ora (ZPBMShiftPtr),y shift right 000000yy and ORA with 000xxxxx=0yyxxxxx - dec BLT.BMBitOfsL X = 1->6, ADD 7 MOD 8..... rts diff --git a/DRV/DHGR.DRV.S.LBUF.txt b/DRV/DHGR.DRV.S.LBUF.txt index 08984d17..7f20b0f3 100644 --- a/DRV/DHGR.DRV.S.LBUF.txt +++ b/DRV/DHGR.DRV.S.LBUF.txt @@ -51,13 +51,14 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr lda CB.Cache+S.CB.OP -.1 and #$f +.1 and #$F tax jmp (J.LBUF.DrawAtY,x) .8 rts *-------------------------------------- LBUF.DrawAtY.XOR +LBUF.DrawAtY.AND.XOR ldx LBUF.C1 x C1->C2 ldy COL.BANK,x @@ -106,6 +107,7 @@ LBUF.DrawAtY.XOR .8 rts *-------------------------------------- LBUF.DrawAtY.SET +LBUF.DrawAtY.AND.SET ldx LBUF.C1 x C1->C2 ldy COL.BANK,x @@ -198,20 +200,21 @@ LBUF.DrawAtY.ORA .8 rts *-------------------------------------- -LBUF.DrawAtY.AND +LBUF.DrawAtY.AND.ORA ldx LBUF.C1 x C1->C2 ldy COL.BANK,x sta $C000,y ldy COL.OFS,x - lda (ZPBasePtr),y Get C1 - and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7 + lda LBUF.MASK,x get MASK bits + ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7 + and (ZPBasePtr),y Clear screen at C1 sta GBYTE + lda LBUF.DATA,x get DATA bits and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 - ora GBYTE - and (ZPBasePtr),y + ora GBYTE ora with screen bits sta (ZPBasePtr),y update screen inx @@ -223,8 +226,9 @@ LBUF.DrawAtY.AND sta $C000,y ldy COL.OFS,x - lda LBUF.DATA,x set all bytes between C1+1 & C2-1 - and (ZPBasePtr),y + lda (ZPBasePtr),y + and LBUF.MASK,x + ora LBUF.DATA,x set all bytes between C1+1 & C2-1 sta (ZPBasePtr),y inx @@ -235,13 +239,14 @@ LBUF.DrawAtY.AND sta $C000,y ldy COL.OFS,x - lda (ZPBasePtr),y Get C2 - and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7 + lda LBUF.MASK,x get MASK bits + ora LBUF.C2.MASK + and (ZPBasePtr),y sta GBYTE + lda LBUF.DATA,x get DATA bits and LBUF.C2.DATA set ONLY bits ending at X2 mod 7 ora GBYTE - and (ZPBasePtr),y sta (ZPBasePtr),y update screen .8 rts diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index 7d1f0300..240986e6 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -18,11 +18,10 @@ AUTO 6 ZPCmdPtr .EQ ZPDRV ZPBasePtr .EQ ZPDRV+2 ZPBMShiftPtr .EQ ZPDRV+4 - -ZPScrShiftPtr .EQ ZPDRV+8 -ZPBMDataPtr .EQ ZPDRV+10 -ZPBMMaskPtr .EQ ZPDRV+12 -ZPBMSavePtr .EQ ZPDRV+14 +ZPScrShiftPtr .EQ ZPDRV+6 +ZPBMDataPtr .EQ ZPDRV+8 +ZPBMMaskPtr .EQ ZPDRV+10 +ZPBMSavePtr .EQ ZPDRV+12 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -146,7 +145,10 @@ J.Cmds .DA SETPIXEL J.LBUF.DrawAtY .DA LBUF.DrawAtY.XOR .DA LBUF.DrawAtY.SET .DA LBUF.DrawAtY.ORA - .DA LBUF.DrawAtY.AND + .DA $ffff + .DA LBUF.DrawAtY.AND.XOR + .DA LBUF.DrawAtY.AND.SET + .DA LBUF.DrawAtY.AND.ORA L.SHIFT .DA SHIFT.L1 .DA SHIFT.L2 .DA SHIFT.L3 diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 0496ae37..b36362ee 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -16,10 +16,10 @@ S.CB.CMD.BITBLT .EQ 10 S.CB.CMD.GETRECTBUFSIZE .EQ 12 S.CB.CMD.DRAWLINE .EQ 14 S.CB.OP .EQ 1 -S.CB.OP.XOR .EQ %00000000 screen EOR bitmap -> Screen -S.CB.OP.SET .EQ %00000010 replace screen with bitmap -S.CB.OP.ORA .EQ %00000100 combine screen & bitmap -> Screen -S.CB.OP.AND .EQ %00000110 Apply BitMap mask before painting +S.CB.OP.XOR .EQ 0 screen EOR bitmap -> Screen +S.CB.OP.SET .EQ 2 replace screen with bitmap +S.CB.OP.ORA .EQ 4 combine screen & bitmap -> Screen +S.CB.OP.MASK .EQ %00001000 Apply BitMap mask before painting S.CB.OP.SAVE .EQ %00010000 Save Screen to DstPtr before painting S.CB.OP.RESTORE .EQ %00100000 Restore Screen From DstPtr S.CB.OP.COLOR .EQ %01000000 Assume BitMap is COLOR @@ -85,3 +85,5 @@ LIBGUI.ShowCursor .EQ 16 *-------------------------------------- MAN SAVE /A2OSX.BUILD/INC/LIBGUI.I +LOAD /A2OSX.SRC/LIB/LIBGUI.S +ASM diff --git a/LIB/LIBGUI.S.txt b/LIB/LIBGUI.S.txt index 1c072dc0..36d55b39 100644 --- a/LIB/LIBGUI.S.txt +++ b/LIB/LIBGUI.S.txt @@ -430,36 +430,6 @@ CB.CmdLen .DA S.CB.Y1+1 SETPIXEL *-------------------------------------- CB.Cache .BS S.CB *-------------------------------------- -CUR.Arrow .DA #S.BM.F.BBP1 - .DA #2 RowBytes - .DA 12 W - .DA 12 H - .DA CUR.Arrow.MASK-CUR.Arrow -CUR.Arrow.DATA .DA %00000001.000000000 - .DA %00000011.000000000 - .DA %00000101.000000000 - .DA %00001001.000000000 - .DA %00010001.000000000 - .DA %00100011.000000000 - .DA %01110101.000000000 - .DA %00011000.000000000 - .DA %00000000.000000000 - .DA %00000000.000000000 - .DA %00000000.000000000 - .DA %00000000.000000000 -CUR.Arrow.MASK .DA %00000000.000000000 - .DA %00000000.000000000 - .DA %00000010.000000000 - .DA %00000110.000000000 - .DA %00001110.000000000 - .DA %00011100.000000000 - .DA %00001000.000000000 - .DA %00000000.000000000 - .DA %00000000.000000000 - .DA %00000000.000000000 - .DA %00000000.000000000 - .DA %00000000.000000000 -*-------------------------------------- MAN SAVE /A2OSX.SRC/LIB/LIBGUI.S ASM diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index b7eafef2..b6e6c938 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -45,6 +45,8 @@ L.SetPixel.CB .DA SetPixel.CB L.DrawLines.CB .DA DrawLines.CB L.Filename .DA Filename L.BitBlT.CB .DA BitBlT.CB +L.MousePtr.CB .DA MousePtr.CB +L.BM.Arrow .DA BM.Arrow .DA 0 *-------------------------------------- CS.INIT >LDYA L.MSG.INIT @@ -252,6 +254,21 @@ Destop.Paint >PUSHW L.Rect.CB >PUSHW L.BitBlt.CB >LIBCALL hLIBGUI,LIBGUI.Draw + >LDYA L.BM.Arrow + >STYA MousePtr.CB+S.CB.SrcPtr + >PUSHW L.MousePtr.CB + >LIBCALL hLIBGUI,LIBGUI.Draw + + >LDYAI 128 + >STYA MousePtr.CB+S.CB.DestX + >PUSHW L.MousePtr.CB + >LIBCALL hLIBGUI,LIBGUI.Draw + + >LDYAI 182 + >STYA MousePtr.CB+S.CB.DestX + >PUSHW L.MousePtr.CB + >LIBCALL hLIBGUI,LIBGUI.Draw + rts *-------------------------------------- *-------------------------------------- @@ -392,8 +409,23 @@ BitBlT.CB .DA #S.CB.CMD.BITBLT .DA 0 Y1 .DA 140 X2 .DA 149 y2 - .DA 196 DestX - .DA 21 DestY + .BS 2 DestX + .DA 24 DestY + .BS 2 SrcPtr + .DA 0 + + .DA #0 +*-------------------------------------- +MousePtr.CB .DA #S.CB.CMD.BITBLT + .DA #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE + .DA #S.CB.MODE.MONO + .DA #0 + .DA 0 X1 + .DA 0 Y1 + .DA 11 X2 + .DA 12 y2 + .DA 112 DestX + .DA 24 DestY .BS 2 SrcPtr .DA 0 @@ -407,6 +439,42 @@ SetPixel.X .BS 2 SetPixel.Y .BS 2 .DA #0 +*-------------------------------------- + .LIST ON +BM.Arrow .DA #S.BM.F.BBP1 + .DA #2 RowBytes + .DA 12 W + .DA 13 H + .DA BM.Arrow.MASK-BM.Arrow + +BM.Arrow.DATA .DA %0000.00000000 + .DA %0000.00000010 + .DA %0000.00000110 + .DA %0000.00001110 + .DA %0000.00011110 + .DA %0000.00111110 + .DA %0000.01111110 + .DA %0000.11111110 + .DA %0001.11111110 + .DA %0010.01110010 + .DA %0100.11110010 + .DA %0000.11100000 + .DA %0000.00000000 + +BM.Arrow.MASK .DA %1111.11111100 + .DA %1111.11111000 + .DA %1111.11110000 + .DA %1111.11100000 + .DA %1111.11000000 + .DA %1111.10000000 + .DA %1111.00000000 + .DA %1110.00000000 + .DA %1100.00000000 + .DA %1000.00000000 + .DA %0000.00000000 + .DA %0000.00000000 + .DA %1110.00001111 + .LIST OFF *-------------------------------------- .DUMMY .OR 0