From c19f98bd81d8d29e3c14b3d45120b80d99b49fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 27 Nov 2017 08:11:31 +0100 Subject: [PATCH] Kernel 0.9.1 : GUI, BitBlt debugging.... --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes DRV/DHGR.DRV.S.BLT.txt | 193 +++++++++++++++++++++------------------ DRV/DHGR.DRV.S.LBUF.txt | 19 +++- DRV/DHGR.DRV.S.txt | 23 +++-- DRV/DHGR.DRV.T.txt | 87 ++++++++++++------ INC/LIBGUI.I.txt | 2 +- SBIN/GUI.S.txt | 94 ++++++++++++++----- marilyn.bmp | Bin 0 -> 3062 bytes 9 files changed, 260 insertions(+), 158 deletions(-) create mode 100644 marilyn.bmp diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index dc5f8b6cf5483e3f75712d5437a23caa905366d7..ef5170ef541df24e10ef40124afb2b7acfce4f99 100644 GIT binary patch delta 2824 zcmb_ee^8U>9ey3)I*dhyKRRax{1;`hWfJ2k)SCE=ylfi zMH@13c`-n@kWEW2cVfWzNr{|pSb|v5!q(aMkFl{Ez2(-9qdld$n`?WwUfuUi2t!Y8 z|5z^hKHum2{d|8u-{-kBHkun7&3)54-7#L1(Q#XM7?}0x{gn$cd?~M|q7b(%nMWTW zR#o>mpU+sB`eO#w@EMC|rR&pQ=+J0)_v->*J}r)$tXqfvx<(k7Fj=#QCV}~rX=q}N z&{|KN4MaLZyr{D=wYXDnYao7$?Ff0Yfvi13cGQ!;kClH3Y+1H^0l)hujyy41&W>=$ zfK~o2&|WO}VD>)-sh-dPmZ{2T=HIC&y;R0v!De#h-lc6=v^2M2K?PpJp?0J6HV%1= z()E~V1po0Gjw}gzjnWMqI&YM2VgW#fu#e&jW1@k{wN2)MGwYh3quscLRhG1*L>ORA z$-T#`4MN}=9?Ua&(D0z$6g20)jUlH{2FbmSm(&w+r@75MeR~8)^nH1AFi^+k%Exn3 zFuoBtzNs3kn8&-H^_|}LzZAfCOsd=l&*EHO_q+Zo$ElA?n;ilV2a1+NB~$j}h}J6x#A~?oYzBb?n09>%b5SzF(H?C2 z!Vi`#m{Gil@q;l7mVTU+q_;I1r0d!Agu#lWk!(2IQzphgaPMB+NhIcEHi4sagXkZy zo8aIF@=ShcIZQ`nGdNVl6@b^n1lj7z>=0cv7Y2;&W*FpA*Oc&pYWbx{s`k!PK@B^4 zakcvM!-Yx;T)?lWQyNmIbYNmlQc`cU9KRTvFh-VcxNC&mq_Sa%J!pit4dbRl*jf{t3S8Q$jZ_xZ z$0%?`eUIRcJ5V515liubjgp0Q9@r#ViRD0{R864LVpD?jBC*6zRb7kqwkiS!E@s9; zEH*0vJn#UgIR8!$mJX_K-<@789U}B1mV@dpEm~T z2;762I`uv&pETl--6;KYb?6sH>F#P!7n|<+gZThjo}uC_uoZ*(XZ2(n+^8m#azBPg ze5N1MDx$Yt!SU*-HMX5C@Rp54n37+u)(dhi2^IuuNW{49_mP~z7HrQObYc7Rg-4D4 zU|#V|Er}uuUorYEsd=|*h+q4&m-aC7>&z1w%^*3*E`-j4&UB3-$--+)VrRyKAU+T*fwDM zfqknP6dq8#4+;?bKs?p)-Yw;%;!rf*ing(%>%Gd$-($KoDHA1`Y^4UFQ)s>BI~tte zPAO#!8mHS_%8(2vX+=6|_plQv8aC3WSUHW&ak`I{GXGfl;mUVbm1U1-7jdJj_HZ9? zMZAaqjGuhAB4;wEB6l*kV(n3K*L`9ala61;)1f+p=OmsU4KG&i_>gy@x^IbzU3j`# z`NWHIoCIsVDMJ<5{mw3C#X>g@V$ZqX-rmJzWr>Hh2&KRev*T=`VYA@~cZjRyUgg?2 z5BCOF&i{?W{I_|8=n7VThV|`XQHVax%6it<39Qu0(PgZh$@;dz&ZQArPjixmb5?Pu ze2dwia&$Q>XU!@X&opqffg8(LK8kEB@ z`g)YQqqLKw23BTS09!eFnv+{OpN?fh7tNy?_oa05Z%Y?tvUd~T?f!U zerz}0&wqqm%8bBMfgc-=JZVZ$em4VI?d8W(lmIow;u`Odi`0yJV)PGDUK6e1*%*3F zbn*QJ&gqozL-p)l;GJa^yw?iZmGaJ=Jk5$F!f!a_3NHsbndRd tz;2RBV>(i_3*2dcXB>_&;|S{<;RTNHLPt2k5l(c37dgU7-Qg#^{{`Hui$(wd delta 2516 zcmcIk4{Q_H8GrT}`{LM%Gcsb*w7qu@>6r$2&#=Tvnw6?6gbYvx>1dg@o@uisovd!G zS~{}n%ockI;>QDw&@qwijy7g_R8r_V7}{~ z?pQ1K+UemUDi_lz8VZy&4LSWqG|}cSrbR_`eKFl>r^nw{uZY~EmC0suYA4YOXZLa^ z`2)bJS4CwTNj4E~8OwI6>>$bQI$!Snz)nY$FB7of%K5#~mHk9&>+UC_4iriHi-PPU z>Bj_lUrzK4IV}>+p57wJ&yw`Rg4{|(05!rsi)+k@COg*$J(CR^f*X~`NDrsldmI`A zth;#R2hU+KC6cMPgb13Ma=Ax6>wE-qN>7k=`-t66rGC%irDuq?>i8!hQ0AoSrP~dk zy=B;{8}@rX+woocl^~=4i{rcWD}B<6yUh6094lMMoI%}~KlKowKk^63=Y-%0q%rx@!M&BVx%!o z;|^iK17kbew;WlI(Rhax{CTPa)qe_5ocJVBBzB-qeZAGM6uN1i0z zj%)FHXFD6L?=vnmZ=-BE9_vFo7}OEv3MIgz?HO<~gY1=y=AxyuivY!qgD z$wuLlsFwp9LDU4g##$jUx+!U+t0zcgg0unP6uercjU+DzVNRx=K5B+{c)=X6ar&Pk z!5Y1UxHrpZtC%mOYQIw)t4~>|ChTecy;eOX5J+PKq>=O2v{0`?`^M_^ux%xq<}Flo zOEF6?&{r%prxmwudFY&$*^CT@&+qxBC2;V^Kl$mauiw0J{hF4U2@Iy@cW&yBo$Q8R z|Mk+UPfj{j}x-Pd4yG6D(^oqY`iAYOPEm_hQUdgO7&_ail=8jh*PzzN^u z%&UeYZ!|(H?D(un7^#~VwG0DU+>9JJ>?7%9n5j#aCGd;(sPb*ikwpVd+ zNuG-t0eyUjas&66;03*jWq6noFTcbq23~%dSB$*;3O|hGBmA&I4(rPhuROrLQ87@V zRAq@Ch=n*#v4_)`Y#gr$vDR>JNII(W4%9HKdqLo3xD@;kS3p46LcC9Pszi8ay9qFT z%o1QC{9KFj68|3RQN||@*g3{@!uJkS%7hR6nF$R#jNb@lm{7(P%B%=w%%O}Wlwm`ef>6eK IEK?Z$C-aHaVgLXD diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index d35de2c71501bfa8e0a29e92e9f47d0a0154fb20..87fa7ea5078c9e24ef41889d17abf669df5ca54b 100644 GIT binary patch delta 15555 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 LpCgT)W1aE;bs{V6 diff --git a/DRV/DHGR.DRV.S.BLT.txt b/DRV/DHGR.DRV.S.BLT.txt index 136e17ae..bd5fea36 100644 --- a/DRV/DHGR.DRV.S.BLT.txt +++ b/DRV/DHGR.DRV.S.BLT.txt @@ -19,7 +19,7 @@ AUTO 6 *-------------------------------------- BITBLT >LDYA CB.CACHE+S.CB.SrcPtr >STYA ZPBMDataPtr - + ldy #S.BM-1 .1 lda (ZPBMDataPtr),y @@ -27,6 +27,14 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr dey bpl .1 + lda ZPBMDataPtr + clc + adc BM.Cache+S.BM.MASK.OFS + sta ZPBMMaskPtr + lda ZPBMDataPtr+1 + adc BM.Cache+S.BM.MASK.OFS+1 + sta ZPBMMaskPtr+1 + lda ZPBMDataPtr clc adc #S.BM @@ -43,19 +51,19 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr pha tya clc - adc ZPBMDataPtr0 - sta ZPBMDataPtr0 + adc ZPBMDataPtr + sta BLT.BMDataPtr pla pha - adc ZPBMDataPtr0+1 - sta ZPBMDataPtr0+1 + adc ZPBMDataPtr+1 + sta BLT.BMDataPtr+1 tya - adc BM.Cache+S.BM.MASK.OFS - sta ZPBMMaskPtr0 + adc ZPBMMaskPtr + sta BLT.BMMaskPtr pla - adc BM.Cache+S.BM.MASK.OFS+1 - sta ZPBMMaskPtr0+1 + adc ZPBMMaskPtr+1 + sta BLT.BMMaskPtr+1 lda CB.Cache+S.CB.X1 pha @@ -72,133 +80,141 @@ BITBLT >LDYA CB.CACHE+S.CB.SrcPtr pha clc - adc ZPBMDataPtr0 - sta ZPBMDataPtr0 + adc BLT.BMDataPtr + sta BLT.BMDataPtr bcc .3 - inc ZPBMDataPtr0+1 + inc BLT.BMDataPtr+1 .3 pla - adc ZPBMMaskPtr0 - sta ZPBMMaskPtr0 + adc BLT.BMMaskPtr + sta BLT.BMMaskPtr bcc .4 - inc ZPBMMaskPtr0+1 + inc BLT.BMMaskPtr+1 -.4 lda S.CB.X2 +.4 lda CB.Cache+S.CB.X2 sec - sbc S.CB.X1 + sbc CB.Cache+S.CB.X1 sta BLT.DX - lda S.CB.X2+1 - sbc S.CB.X1+1 + lda CB.Cache+S.CB.X2+1 + sbc CB.Cache+S.CB.X1+1 sta BLT.DX+1 - >LDYA S.CB.DestX + >LDYA CB.Cache+S.CB.DestX jsr LBUF.SetBounds1YA stx BLT.SCRBitOfs - lda S.CB.DestX + lda CB.Cache+S.CB.DestX clc adc BLT.DX tay - lda S.CB.DestX+1 + lda CB.Cache+S.CB.DestX+1 adc BLT.DX+1 jsr LBUF.SetBounds2YA - lda S.CB.Y2 + lda CB.Cache+S.CB.Y2 sec - sbc S.CB.Y1 + sbc CB.Cache+S.CB.Y1 + inc sta BLT.DY - lda BLT.BMBitOfs - sta BLT.BMBitOfsL - lda LBUF.C1 - sta BLT.ScreenC - - >LDYA ZPBMDataPtr0 - >STYA ZPBMDataPtr - >LDYA ZPBMMaskPtr0 - >STYA ZPBMMaskPtr - ldx BLT.SCRBitOfs beq BITBLT.LOOP ldy Shift.L.LO,x X = 1->6 - sty ZPShiftPtr - + sty ZPScrShiftPtr ldy Shift.L.HI,x X = 1->6 - sty ZPShiftPtr+1 - + sty ZPScrShiftPtr+1 -BITBLT.LOOP ldx BLT.SCRBitOfs +BITBLT.LOOP >LDYA BLT.BMDataPtr + >STYA ZPBMDataPtr + >LDYA BLT.BMMaskPtr + >STYA ZPBMMaskPtr + + 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" + + ldx BLT.SCRBitOfs bne .2 +*------------ Shift 0 + .1 jsr BLT.Get7BMDBits we have 0xxxxxxxx in A - ldx BLT.ScreenC + ldx BLT.ScrColIdx sta LBUF.DATA,x - inc BLT.ScreenC + inc BLT.ScrColIdx cpx LBUF.C2 bne .1 bra BITBLT.DRAW + +*------------ Shift 1->6 Comment : SCRBitOfs=X=3 -.2 jsr BLT.Get7BMDBits we have 0xxxxxxxx in A +.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 - pha save it for 2nd part + pha save BM byte for 2nd col - ldx BLT.SCRBitOfs - and Mask7BitsH,x 0000xxxx, keep col1 bits only +.4 and #$ff SELF MODIFIED : MASK WITH #%00001111, keep col1 bits only tay - lda (ZPShiftPtr),y make 0xxxx000 + lda (ZPScrShiftPtr),y make 0000dddd Shift left 3 : 0dddd000 - ldy BLT.ScreenC - ora LBUF.DATA,y - sta LBUF.DATA,y + ldx BLT.ScrColIdx Get actual COL index + ora LBUF.DATA,x Light proper bits : 0dddd??? + sta LBUF.DATA,x store 0xdddd??? - pla + pla Get back BM Byte - inc BLT.ScreenC - cpy LBUF.C2 - beq BITBLT.DRAW - - and Mask7BitsL,x 0yyy0000 +.5 and #$ff SELF MODIFIED : #%01110000 get only col2 bites tay - lda (ZPShiftPtr),y 00000yyy + lda (ZPScrShiftPtr),y shift right 4 (=shift left 3!!!) : 00000ddd - ldy BLT.ScreenC - sta LBUF.DATA,y + sta LBUF.DATA+1,x - inc BLT.ScreenC - cpy LBUF.C2 - bne .2 - -BITBLT.DRAW ldy S.CB.Y1 + inx + stx BLT.ScrColIdx + cpx LBUF.C2 + bne .3 + +BITBLT.DRAW ldy CB.Cache+S.CB.DestY jsr LBUF.DrawAtY - inc S.CB.Y1 + inc CB.Cache+S.CB.DestY - lda ZPBMDataPtr0 + lda BLT.BMDataPtr clc adc BM.Cache+S.BM.RowBytes - sta ZPBMDataPtr0 + sta BLT.BMDataPtr bcc .6 - inc ZPBMDataPtr0+1 + inc BLT.BMDataPtr+1 -.6 lda ZPBMMaskPtr0 +.6 lda BLT.BMMaskPtr clc adc BM.Cache+S.BM.RowBytes - sta ZPBMMaskPtr0 + sta BLT.BMMaskPtr bcc .7 - inc ZPBMMaskPtr0+1 + inc BLT.BMMaskPtr+1 .7 dec BLT.DY - bne BITBLT.LOOP - clc + beq .8 + jmp BITBLT.LOOP + +.8 clc rts *-------------------------------------- * BMD/BMM bits : @@ -210,8 +226,9 @@ BITBLT.DRAW ldy S.CB.Y1 * ^ * SCRBitOfs (0->6) *-------------------------------------- -BLT.Get7BMDBits lda (ZPBMDataPtr) - +BLT.Get7BMDBits ldy BLT.BMIdx + lda (ZPBMDataPtr),y + ldx BLT.BMBitOfsL beq BLT.Get7BMBits0 OFS=0, done! and no need to advance ZPBMDataPtr lsr OFS=1->7, shift one (Range 0->127) @@ -219,28 +236,28 @@ BLT.Get7BMDBits lda (ZPBMDataPtr) beq BLT.Get7BMBits1 OFS was 1....done and go to next byte, OFS=0 ldy Shift.R.LO,x X = 1->6 - sty ZPShiftPtr + sty ZPBMShiftPtr ldy Shift.R.HI,x X = 1->6 - sty ZPShiftPtr+1 + sty ZPBMShiftPtr+1 - and Mask7BitsL,x Get only left upper X bits + and Mask7BitsH,x Get only left upper X bits tay xxxxx000 - lda (ZPShiftPtr),y shift'em RIGHT 000xxxxx + lda (ZPBMShiftPtr),y shift'em RIGHT 000xxxxx pha - inc ZPBMDataPtr Next BM data byte - bne .2 - inc ZPBMDataPtr+1 + inc BLT.BMIdx Next BM data byte -.2 lda (ZPBMDataPtr) get next byte - and Mask7BitsH,x only first Y bits 000000yy + ldy BLT.BMIdx + lda (ZPBMDataPtr),y get next byte + + and Mask7BitsL,x only first Y bits 000000yy tay pla get back right part bits 000xxxxx - ora (ZPShiftPtr),y shift right 000000yy and ORA with 000xxxxx=0yyxxxxx + ora (ZPBMShiftPtr),y shift right 000000yy and ORA with 000xxxxx=0yyxxxxx dec BLT.BMBitOfsL X = 1->6, ADD 7 MOD 8..... rts @@ -251,12 +268,8 @@ BLT.Get7BMBits0 and #%01111111 Get only 7 needed bits rts BLT.Get7BMBits1 stz BLT.BMBitOfsL Was 1, add 7 bits, MOD 8=0 - - inc ZPBMDataPtr go to next byte - bne .1 - inc ZPBMDataPtr+1 - -.1 rts LSR did already 0xxxxxxx + inc BLT.BMIdx go to next byte in BM line + rts LSR did already 0xxxxxxx *-------------------------------------- MAN SAVE /A2OSX.SRC/DRV/DHGR.DRV.S.RECT diff --git a/DRV/DHGR.DRV.S.LBUF.txt b/DRV/DHGR.DRV.S.LBUF.txt index cfb1d0bd..08984d17 100644 --- a/DRV/DHGR.DRV.S.LBUF.txt +++ b/DRV/DHGR.DRV.S.LBUF.txt @@ -18,10 +18,10 @@ LBUF.SetBounds1YA LBUF.SetBounds2YA jsr DIVMOD7YA A=DIV, X=MOD sta LBUF.C2 - + cmp LBUF.C1 C1=C2, go combine in C1 beq .1 - + lda C2.MASK,x sta LBUF.C2.MASK lda C2.DATA,x @@ -70,6 +70,7 @@ LBUF.DrawAtY.XOR lda LBUF.DATA,x get DATA bits and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 ora GBYTE + eor (ZPBasePtr),y sta (ZPBasePtr),y update screen inx @@ -81,7 +82,8 @@ LBUF.DrawAtY.XOR sta $C000,y ldy COL.OFS,x - lda LBUF.DATA,x set all bytes between C1+1 & C2-1 + lda LBUF.DATA,x + eor (ZPBasePtr),y sta (ZPBasePtr),y inx @@ -98,6 +100,7 @@ LBUF.DrawAtY.XOR lda LBUF.DATA,x get DATA bits and LBUF.C2.DATA set ONLY bits ending at X2 mod 7 ora GBYTE + eor (ZPBasePtr),y sta (ZPBasePtr),y update screen .8 rts @@ -109,7 +112,7 @@ LBUF.DrawAtY.SET sta $C000,y ldy COL.OFS,x - lda (ZPBasePtr),y Get C1 + lda (ZPBasePtr),y data for Get C1 and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7 sta GBYTE lda LBUF.DATA,x get DATA bits @@ -121,7 +124,7 @@ LBUF.DrawAtY.SET cpx LBUF.C2 beq .2 C1=C2, go setup C2 bcs .8 C1+1 > C2, we are done... - + .1 ldy COL.BANK,x sta $C000,y ldy COL.OFS,x @@ -160,6 +163,7 @@ LBUF.DrawAtY.ORA lda LBUF.DATA,x get DATA bits and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 ora GBYTE + ora (ZPBasePtr),y sta (ZPBasePtr),y update screen inx @@ -172,6 +176,7 @@ LBUF.DrawAtY.ORA ldy COL.OFS,x lda LBUF.DATA,x set all bytes between C1+1 & C2-1 + ora (ZPBasePtr),y sta (ZPBasePtr),y inx @@ -188,6 +193,7 @@ LBUF.DrawAtY.ORA lda LBUF.DATA,x get DATA bits and LBUF.C2.DATA set ONLY bits ending at X2 mod 7 ora GBYTE + ora (ZPBasePtr),y sta (ZPBasePtr),y update screen .8 rts @@ -205,6 +211,7 @@ LBUF.DrawAtY.AND lda LBUF.DATA,x get DATA bits and LBUF.C1.DATA set ONLY bits starting at X1 mod 7 ora GBYTE + and (ZPBasePtr),y sta (ZPBasePtr),y update screen inx @@ -217,6 +224,7 @@ LBUF.DrawAtY.AND ldy COL.OFS,x lda LBUF.DATA,x set all bytes between C1+1 & C2-1 + and (ZPBasePtr),y sta (ZPBasePtr),y inx @@ -233,6 +241,7 @@ LBUF.DrawAtY.AND 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 7f1331d6..7d1f0300 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -17,9 +17,9 @@ AUTO 6 *-------------------------------------- ZPCmdPtr .EQ ZPDRV ZPBasePtr .EQ ZPDRV+2 -ZPShiftPtr .EQ ZPDRV+4 -ZPBMDataPtr0 .EQ ZPDRV+6 -ZPBMMaskPtr0 .EQ ZPDRV+8 +ZPBMShiftPtr .EQ ZPDRV+4 + +ZPScrShiftPtr .EQ ZPDRV+8 ZPBMDataPtr .EQ ZPDRV+10 ZPBMMaskPtr .EQ ZPDRV+12 ZPBMSavePtr .EQ ZPDRV+14 @@ -171,7 +171,7 @@ OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A inx lda L.SHIFT,x Get relocated HI BYTE - sta Shift.L.LO,y + sta Shift.L.HI,y inx iny cpx #12 @@ -181,11 +181,11 @@ OPEN sta A2osX.SCRNDEVS+2 DEV.ID in A ldy #6 .2 lda L.SHIFT,x Get relocated LO BYTE - sta Shift.L.LO,y + sta Shift.R.LO,y inx lda L.SHIFT,x Get relocated HI BYTE - sta Shift.L.LO,y + sta Shift.R.HI,y inx dey bne .2 @@ -402,12 +402,15 @@ LBUF.C2.DATA .BS 1 LBUF.MASK .BS 80 LBUF.DATA .BS 80 *-------------------------------------- -BLT.BMBitOfs .BS 1 -BLT.BMBitOfsL .BS 1 -BLT.SCRBitOfs .BS 1 +BLT.BMDataPtr .BS 2 +BLT.BMMaskPtr .BS 2 BLT.DX .BS 2 BLT.DY .BS 1 -BLT.ScreenC .BS 1 +BLT.BMBitOfs .BS 1 +BLT.BMBitOfsL .BS 1 +BLT.BMIdx .BS 1 +BLT.SCRBitOfs .BS 1 +BLT.ScrColIdx .BS 1 *-------------------------------------- GBYTE .BS 1 GWORD .BS 2 diff --git a/DRV/DHGR.DRV.T.txt b/DRV/DHGR.DRV.T.txt index b43ab504..4825578e 100644 --- a/DRV/DHGR.DRV.T.txt +++ b/DRV/DHGR.DRV.T.txt @@ -5,36 +5,69 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -Mask7BitsL .DA #01111111 Useless - .DA #01111110 - .DA #01111100 - .DA #01111000 - .DA #01110000 - .DA #01100000 - .DA #01000000 -Mask7BitsH .DA #00000000 Useless - .DA #00000001 - .DA #00000011 - .DA #00000111 - .DA #00001111 - .DA #00011111 - .DA #00111111 +Mask7BitsH .DA #%01111111 Useless + .DA #%01111110 + .DA #%01111100 + .DA #%01111000 + .DA #%01110000 + .DA #%01100000 + .DA #%01000000 + +Mask7BitsL .DA #%00000000 Useless + .DA #%00000001 + .DA #%00000011 + .DA #%00000111 + .DA #%00001111 + .DA #%00011111 + .DA #%00111111 *-------------------------------------- -C1.MASK .DA #%10000000 mod 0..... -C2.DATA .DA #%10000001 ->C1.DATA +Shift7BitsCol1 .DA #%01111111 Useless + .DA #%00111111 + .DA #%00011111 + .DA #%00001111 + .DA #%00000111 + .DA #%00000011 + .DA #%00000001 + +Shift7BitsCol2 .DA #%00000000 Useless + .DA #%01000000 + .DA #%01100000 + .DA #%01110000 + .DA #%01111000 + .DA #%01111100 + .DA #%01111111 +*-------------------------------------- +C1.MASK .DA #%10000000 Clear (AND) Col 1 bits + .DA #%10000001 .DA #%10000011 .DA #%10000111 .DA #%10001111 .DA #%10011111 - .DA #%10111111 ...to 6 -C1.DATA .DA #%11111111 -C2.MASK .DA #%11111110 + .DA #%10111111 + +C1.DATA .DA #%11111111 set (ORA) COL 1 bits + .DA #%11111110 .DA #%11111100 .DA #%11111000 .DA #%11110000 .DA #%11100000 .DA #%11000000 - .DA #%10000000 +*-------------------------------------- +C2.MASK .DA #%11111110 Clear (AND) Col 1 bits + .DA #%11111100 + .DA #%11111000 + .DA #%11110000 + .DA #%11100000 + .DA #%11000000 + .DA #%10000000 + +C2.DATA .DA #%10000001 set (ORA) COL 1 bits + .DA #%10000011 + .DA #%10000111 + .DA #%10001111 + .DA #%10011111 + .DA #%10111111 + .DA #%11111111 *-------------------------------------- Mono.NMasks .DA #%01111110 .DA #%01111101 @@ -82,19 +115,19 @@ Color.Masks .DA #%10001111,#%00000000,#%00000000,#%00000000 * c1110000 c3322221 c5444433 c6666555 Color.Pixels .DA #%00000000,#%00000000,#%00000000,#%00000000 black (color bit disable) .DA #%01111111,#%01111111,#%01111111,#%01111111 white (color bit disable) - .DA #%10010001,#%10100010,#%11000100,#%10001000 dark blue - .DA #%10100010,#%11000100,#%10001000,#%10010001 dark green - .DA #%10110011,#%11100110,#%11001100,#%10011001 medium blue - .DA #%11000100,#%10001000,#%10010001,#%10100010 brown + .DA #%10101010,#%11010101,#%10101010,#%11010101 grey1 .DA #%11010101,#%10101010,#%11010101,#%10101010 grey2 + .DA #%10010001,#%10100010,#%11000100,#%10001000 dark blue + .DA #%10110011,#%11100110,#%11001100,#%10011001 medium blue + .DA #%10111011,#%11110111,#%11101110,#%11011101 light blue + .DA #%10100010,#%11000100,#%10001000,#%10010001 dark green .DA #%11100110,#%11001100,#%10011001,#%10110011 green .DA #%11110111,#%11101110,#%11011101,#%10111011 aqua .DA #%10001000,#%10010001,#%10100010,#%11000100 Magenta .DA #%10011001,#%10110011,#%11100110,#%11001100 violet - .DA #%10101010,#%11010101,#%10101010,#%11010101 grey1 - .DA #%10111011,#%11110111,#%11101110,#%11011101 light blue - .DA #%11001100,#%10011001,#%10110011,#%11100110 orange .DA #%11011101,#%10111011,#%11110111,#%11101110 pink + .DA #%11000100,#%10001000,#%10010001,#%10100010 brown + .DA #%11001100,#%10011001,#%10110011,#%11100110 orange .DA #%11101110,#%11011101,#%10111011,#%11110111 yellow *-------------------------------------- COL.BANK .DA #SETPAGE2,#CLRPAGE2,#SETPAGE2,#CLRPAGE2 diff --git a/INC/LIBGUI.I.txt b/INC/LIBGUI.I.txt index 8a345f98..0496ae37 100644 --- a/INC/LIBGUI.I.txt +++ b/INC/LIBGUI.I.txt @@ -21,7 +21,7 @@ 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.SAVE .EQ %00010000 Save Screen to DstPtr before painting -S.CB.OP.RESTORE .EQ %00100000 Restore Screen From DstPtr before painting +S.CB.OP.RESTORE .EQ %00100000 Restore Screen From DstPtr S.CB.OP.COLOR .EQ %01000000 Assume BitMap is COLOR S.CB.MODE .EQ 2 S.CB.MODE.MONO .EQ %00000001 b/w (1 bit/pixel) diff --git a/SBIN/GUI.S.txt b/SBIN/GUI.S.txt index 9e7ae4cb..b7eafef2 100644 --- a/SBIN/GUI.S.txt +++ b/SBIN/GUI.S.txt @@ -43,6 +43,8 @@ L.MouseData .DA MouseData L.Rect.CB .DA Rect.CB L.SetPixel.CB .DA SetPixel.CB L.DrawLines.CB .DA DrawLines.CB +L.Filename .DA Filename +L.BitBlT.CB .DA BitBlT.CB .DA 0 *-------------------------------------- CS.INIT >LDYA L.MSG.INIT @@ -222,8 +224,32 @@ Destop.Paint >PUSHW L.Rect.CB cmp #16 bne .1 -.4 - >PUSHW L.DrawLines.CB +.4 >PUSHW L.DrawLines.CB + >LIBCALL hLIBGUI,LIBGUI.Draw + + >PUSHWI 0 Aux type + >PUSHBI $CB Type + >PUSHBI SYS.FOpen.R + >PUSHW L.FILENAME + >SYSCALL LoadFile + + txa + >SYSCALL GetMemPtr.A + >STYA BitBlT.CB+S.CB.SrcPtr + + >LDYAI 105 + >STYA BitBlT.CB+S.CB.DestX + >PUSHW L.BitBlt.CB + >LIBCALL hLIBGUI,LIBGUI.Draw + + >LDYAI 246 + >STYA BitBlT.CB+S.CB.DestX + >PUSHW L.BitBlt.CB + >LIBCALL hLIBGUI,LIBGUI.Draw + + >LDYAI 387 + >STYA BitBlT.CB+S.CB.DestX + >PUSHW L.BitBlt.CB >LIBCALL hLIBGUI,LIBGUI.Draw rts @@ -247,7 +273,7 @@ MouseData .BS 5 Rect.CB .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.MODE.C16 - .DA #11 + .DA #2 .DA 0 .DA 0 .DA 559 @@ -258,36 +284,36 @@ Rect.CB .DA #S.CB.CMD.FILLRECT .DA #S.CB.MODE.MONO .DA #1 .DA 10 - .DA 10 - .DA 550 - .DA 180 - - .DA #S.CB.CMD.FILLRECT - .DA #S.CB.OP.ORA - .DA #S.CB.MODE.C16 - .DA #0 - .DA 20 - .DA 20 - .DA 540 - .DA 170 + .DA 5 + .DA 549 + .DA 186 .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.MODE.C16 - .DA #9 - .DA 30 - .DA 30 - .DA 530 - .DA 160 + .DA #7 + .DA 20 + .DA 10 + .DA 539 + .DA 181 .DA #S.CB.CMD.FILLRECT - .DA #S.CB.OP.XOR + .DA #S.CB.OP.SET .DA #S.CB.MODE.C16 - .DA #8 + .DA #4 + .DA 30 + .DA 15 + .DA 529 + .DA 176 + + .DA #S.CB.CMD.FILLRECT + .DA #S.CB.OP.SET + .DA #S.CB.MODE.MONO + .DA #0 .DA 40 - .DA 40 - .DA 520 - .DA 150 + .DA 20 + .DA 519 + .DA 171 .DA #0 *-------------------------------------- @@ -356,12 +382,30 @@ DrawLines.CB .DA #S.CB.CMD.DRAWLINE .DA #0 *-------------------------------------- +Filename >CSTR "/A2OSX.BUILD/MARILYN" +*-------------------------------------- +BitBlT.CB .DA #S.CB.CMD.BITBLT + .DA #S.CB.OP.SET + .DA #S.CB.MODE.MONO + .DA #0 + .DA 0 X1 + .DA 0 Y1 + .DA 140 X2 + .DA 149 y2 + .DA 196 DestX + .DA 21 DestY + .BS 2 SrcPtr + .DA 0 + + .DA #0 +*-------------------------------------- SetPixel.CB .DA #S.CB.CMD.SETPIXEL SetPixel.OP .BS 1 SetPixel.Mode .BS 1 SetPixel.Color .BS 1 SetPixel.X .BS 2 SetPixel.Y .BS 2 + .DA #0 *-------------------------------------- .DUMMY diff --git a/marilyn.bmp b/marilyn.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8a34be16d5a123aad9ac8ca7d799b272c32acb8a GIT binary patch literal 3062 zcma);!D}Q%6vkhtLpr))Cwnre&>IlklMxRRVM%3G@FZRYkIsS~yvV{HRz<8@v!EVi zRK)AX|3L5}D5OFJJuJq9dbLBu%yD!;J3F0ze(zOR_avEvFX^82ufJFI>b+MrdG^JB zE|A&=?pJVqjOz+qp}mlPgGi9ViUK0VLec~;YTR#A4& zx17O7GgvW$`5Da3n3vA8`hT(t89W>FEQXAo%bzgYI)|K&!15U^BxZs)oi0pVwyc0} z7;t2xPMN8IMIs>sFm_80K`;3(R$lDGRJYT0562i{Z^=l7E+|E`tsY%;AtUofnB9sn8(v%ft&blbnL;aE$fNS z;c-Qf=nQ3%J*6xMbIRoLv6lH%bR9z>ca&)go=_bMxl<(2Da(azAgO_A3YO==_*fW0 zr%bYva0NCJhF_vSu9Ry##n3;xMa%@gZv|a%%b|&w?~YlSq^~ys!>s$l)`^5!<0)~> zM~BD~SOK(K(`Wf21QAI%E!AMv-}lh?mAa~pgJ#e+}cJzpK$F^ z7x)U}ueYg(G;2N<8}=`k$RfBBj0!S6l9uVxn(-wdUHyLs#TEHzGH@Hu0mHK%dJTa%3Oycv}lm>n6^ccmZMQiijpunxX0yOcRH*kmu% zbR+8KZ#gNHPb0(QmCViKut7~49oUVryNK{gs^-u@FtE4B(WqsUVS3qeo%8&nuPhRSMf{J@e)WHK*UiFDo^X5w4pyM~(cAbDjd&5V^maE4WP5>=ql4ON{5*@fY|P;lc~0b+8WxE@m$+0GO365pD^jAYezp(51AI9cuua4`OCF6 z-j(5$IUKmhe9vyx+J2e%g5@QDXt!VPLnfO{&+)uA7x_-ou>$Y-gU@+4Fj*giWxVnD z;oddXDZ^wbyO$0JzbZ4L!1;7wMU``+P*8X2obS#fL9Vu`V8AgbPIKy~4 zu~J!2VBN&B?uPm3D(79pipWgI@G6+?Se!(rh`!QCVw&z|JT4R=Ia4}Km(*~I1!r|_ W#|!l~r**OvEnYV-s;0GT#`_N!?I>*k literal 0 HcmV?d00001