From 7df3a2e93eeb562e3c43ec25abd7b1a35113d4bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sat, 4 Jul 2020 21:00:47 +0200 Subject: [PATCH] Kernel 0.94 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes A2osX.S.txt | 8 +- BIN/BMP2PIX.S.txt | 119 +++++++++++++------------- BIN/GTEST.S.txt | 174 ++++++++++++++++++++++++++++++++------- DRV/DHGR.DRV.G.txt | 14 ++-- DRV/DHGR.DRV.S.BLT.txt | 32 ++++--- DRV/DHGR.DRV.S.RECT.txt | 18 ++-- DRV/DHGR.DRV.S.txt | 6 +- INC/GFX.I.txt | 1 + SYS/KERNEL.S.TERMX.txt | 7 +- 10 files changed, 248 insertions(+), 131 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 0c3791a3509ffb13d4cca6cd7e65bff5c6cb99e3..18f41da13cced4ae861d4e9dfb204940147dff4c 100644 GIT binary patch delta 39201 zcmeEvd0Z36`~Pf0AmK&=B;kq>5D-Jc?SXR35d=9r@B$RP@C2*2)_@hHDk@qX>BqK6 z1qH#PR3aXTtru1+-dC+!kK%(Y4}!Q&@f_lD;N9&h0~ zcYOjLXt6Fq{~mZC`2Yig5g659H0aA;XKu{Xqv>Wxe5kL)s@~CD@x3EQPoHmSY)Wx? z1_C1!GemK?dOUptzQEAP*u>PVe&)F(9&m87s6TRfBhksqv_Ad%4SnJ#p~rhx7ZzI(h~)F#b{jnwnA1|BK>Mww6PrAeO72{Z`XWcT9sgKfrDL#hy} zt7@%Et!}7B=<4>QTH77RcHG=y@Xexc_S8SBcl-7#^Y`<&+}$Rc-5UO$&^_6E8ulFA za}}SS%W;tm-&W#O)cRK$wNtj%NtD*2*Xk-2Z|;yuTd-*kC*A|-GO20BE?Kc&bMe)t zVqSCc@Mh_&$|_VQD3Kj6k%`g>-l29lUY5i0G;OKyOm8;lNx!Mgi;%YCLpdCwr{%T| zn-k`LwV1RTNqbe6ne3FA%c=~)n`eK(W?NL1EqJTOfHOtf3sboq5v9PAT#lRiO2s|b zR=sNC29*OvGdm!x|LU@uWBrB zQFn}Qk=Dt|`PYBj+Q9?SqO|3P)r)xLE)~jh--_(=x#b_0FDjRmFD;kO-&)4qDU+1Q zS`yY+l^KI>X41Lks-TK8?%miUFXJ*1kcOeiU)*L zHGiwL{}$DUxHFey@Ai__AWwQ#y1D%20q(Xu5z%F9`O=Ct72j5TRbg6jxE%g)*gTF4 zWq_y7;|y{!sMy6RH@I%Jt%vsVuLpk}{Ppy&i@x6X^_8!mel5T!=5c&D_7#;MaP;+e z`?d0<_L#SbBh^`xC?=6|Dys%U43kL`NCX>4EaJF&OslN$Z=qVbsyUS{9JqW~DN3vK z1JBqBEn!#%5R|GBc>N;IC`yCd7jXjApKod2Vo-4%er3X)vKCRR@HkwkR+Dmcpzk)2 z)OORT^^d%v<(%ub+d9m^_~3Kc*1-o~p0fOnXL)CyZ8`UPZ!M8`-9<|jmcQ~We;swT zie{?rZc@@M8)s>4m)8fkLX1dO>s!Y0UYkN*bUI)Or(&ZJPK2+m0>6MByeQ9Y$(N0+r z5okavoT{=-I&kaqGX5D^>(jjQGCmu5LOKwu+Boig&Tg%}ZT$5c?|!{e>@tE8;2IidB>v@%05%Zn;hA}dFp z@2%1al~>D$frPR?Qu)^Mc#y*QUY;;NmsZy208N*8o;Xot{%0DSw7{dnr60*l-?I3f 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 H_on{>rgpP= delta 44511 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

4jQ1KEBWH{n&MxTku{7rM(G z3mYJ}_m4${PS2Ct9V536e0?ARhgV3szGj|)#mCMSosFFh^RTU6`2PDbDjk6-2yBeN zCJ1bbz-9<+j=&ZOY>B{D2yBhOhYm8c0^z&1a?N?qX>Kq zfn5;zI0BzQ;FAb^3V~e__%s5$A+S3F!wBqwz-JKH6M?-D*c*Y*BCrnv`y%i;1U`?z z7ZCU&0$)O4KLqwiU@8J%M&JMh4n*J}1ipg6R}nZEfoTXFg215&d<}ua5coO*ha)f@ zff)!KfxtHqI1+)Q5I7ov5d@Aw;8+BXL*RG>PC(#91WrQWWCTt@;8X-oLtya6ZzAw5 z1kOO<+X$SAz*z`<2Z8S*@I3_1M&SDhoP)r*2%Lw&`3PKqz=a50guulJ`~ZPV5cnYi zmm=^Z1b&RbWeEHPfuAC9IRaN8@G}H{j=(Pv_$30rLg3d3T#3L{2>b?t-y-lk1g=Kl z8U(II;5r0mB5*wdHz05$0yiP>dj$S~z|9EUg21f^{1JiM5cm@Ue@5VT1nxlKP6X~k z;4cXL6@kAYa5n;fN8la={(-~0xu)*Uj$x3;8g@(L*R7; z{)fOD2)v2FTL`=z52KP{6o3XW02aUjcz^&90S;+T-H9#HE05pMp zfEKVHH~?q^I)E;q2j~L^fFS^`{RJNcD1b3w0+<43fH`0RSOQjnHE;+x4A=li09(Kg zum>CfN5Bbi295&902kmmZ~{09oB~{d(|{Y`4*d7|djMwuPrwWC2F?OLfG=cYKW`Q|?4a@@zz#^~&ECYXm6<`%u1J;3mzy`1h MY@wdQ+o+uX14(L)<^TWy diff --git a/A2osX.S.txt b/A2osX.S.txt index 931c0328..16bb4180 100644 --- a/A2osX.S.txt +++ b/A2osX.S.txt @@ -650,10 +650,10 @@ KM.PREFIX >PSTR "KM." SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 *-------------------------------------- -PALETTE.MAIN .HS 00.0F.05.0A.02.06.07.04 - .HS 0C.0E.01.03.0B.08.09.0D -PALETTE.AUX .HS 00.0F.0A.0A.01.03.0B.02 - .HS 06.07.08.09.0D.04.0C.0E +PALETTE.MAIN .HS 00.02.04.06.08.0A.0C.0E + .HS 01.03.05.07.09.0B.0D.0F +PALETTE.AUX .HS 00.01.02.03.04.05.06.07 + .HS 08.09.0A.0B.0C.0D.0E.0F *-------------------------------------- .EP *-------------------------------------- diff --git a/BIN/BMP2PIX.S.txt b/BIN/BMP2PIX.S.txt index 69046910..21d3f8df 100644 --- a/BIN/BMP2PIX.S.txt +++ b/BIN/BMP2PIX.S.txt @@ -66,9 +66,9 @@ CS.START cld *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN - .DA CS.DOEVENT + .DA CS.DOEVENT .DA CS.QUIT -L.MSG.USAGE .DA MSG.USAGE +L.MSG.USAGE .DA MSG.USAGE L.MSG.HEADER.OK .DA MSG.HEADER.OK L.MSG.HEADER.KO .DA MSG.HEADER.KO L.MSG.DONE .DA MSG.DONE @@ -85,7 +85,7 @@ CS.RUN lda (ZPPtr1) cmp #'-' bne .4 - ldy #1 + ldy #1 lda (ZPPtr1),y ldx OptionList @@ -93,14 +93,14 @@ CS.RUN beq .3 dex bne .2 - + .99 >PUSHW L.MSG.USAGE >PUSHBI 0 >SYSCALL PrintF lda #E.SYN sec rts - + .3 ldy OptionVars-1,x lda #$80 sta (pData),y @@ -319,21 +319,21 @@ CS.RUN.24.LOOP inc ZPLineCount jsr DEBUG.PLOT lda ZPCntX - lsr + lsr tay pla bcs .6 - + sta (ZPOutputBuf),y bra .2 - + .6 asl asl asl asl ora (ZPOutputBuf),y sta (ZPOutputBuf),y - bra .2 + bra .2 .8 jsr CS.RUN.WriteOutput bcs .9 @@ -358,7 +358,7 @@ CS.RUN.GetNearestColor ldx #2 .40 phx A = |c - C| - + dey lda PALETTE.RGB,y sec @@ -440,14 +440,14 @@ CS.RUN.GetNearestColor .8 dey bpl .30 - + lda ZPPixelIndex16 CS.RUN.GetIndexInPalette.RTS rts *-------------------------------------- CS.RUN.OpenInput >PUSHW ZPPtr1 - >PUSHBI O.RDONLY + >PUSHBI O.RDONLY >PUSHBI 0 Type >PUSHWZ Aux type >SYSCALL FOpen @@ -476,9 +476,9 @@ CS.RUN.OpenInput beq .1 cmp #24 bne .99 - + .1 >PUSHW L.MSG.HEADER.OK - + >LDA.G BMP.Header+S.BMP.W >STA.G PIX.Header+S.BM.W pha @@ -493,7 +493,7 @@ CS.RUN.OpenInput pha eor #$ff sta ZPLineCount - + >LDA.G BMP.Header+S.BMP.H+1 >STA.G PIX.Header+S.BM.H+1 >PUSHA @@ -501,9 +501,9 @@ CS.RUN.OpenInput sta ZPLineCount+1 pla >PUSHA - + >PUSHB.G BMP.Header+S.BMP.BPP - + >PUSHBI 5 >SYSCALL PrintF .9 rts @@ -533,7 +533,7 @@ CS.RUN.ReadInput *-------------------------------------- CS.RUN.CreateOutput >PUSHW ZPPtr1 - >PUSHBI O.WRONLY+O.CREATE + >PUSHBI O.WRONLY+O.CREATE >PUSHBI $CB PIX Type >PUSHWZ Aux type >SYSCALL FOpen @@ -639,7 +639,7 @@ DEBUG.PLOT php pha tax - + lda ZPCntY cmp #40 bcs .9 @@ -656,7 +656,7 @@ DEBUG.PLOT php sta SETPAGE2 lda PALETTE.AUX,x bra .2 - + .1 sta CLRPAGE2 lda PALETTE.MAIN,x @@ -693,14 +693,14 @@ SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06 CS.END *-------------------------------------- .INB usr/src/shared/x.twist.g -*-------------------------------------- +*-------------------------------------- OptionList >PSTR "Vv" OptionVars .DA #bVerbose,#bVerbose MSG.USAGE .AS "Usage : BMP2PIX BMP-File \r\n" .AZ " -V : Verbose Mode\r\n" -MSG.HEADER.OK .AZ "BMP Size : %D x %D pixels, %d bit(s)/pixel\r\n" -MSG.HEADER.KO .AZ "Invalid Input File Format" -MSG.DONE .AZ "All Done!!!" +MSG.HEADER.OK .AZ "BMP Size : %D x %D pixels, %d bit(s)/pixel\r\n" +MSG.HEADER.KO .AZ "Invalid Input File Format" +MSG.DONE .AZ "All Done!!!" *-------------------------------------- * LOWRES Patette : https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb *-------------------------------------- @@ -721,44 +721,45 @@ MSG.DONE .AZ "All Done!!!" * .HS ff6a3c00 ORANGE * .HS d0dd8d00 YELLOW *-------------------------------------- -PALETTE.RGB .HS 00000000 0 BLACK - .HS ffffff00 1 WHITE - .HS 7e7e7e00 2 DARK.GRAY - .HS 9c9c9c00 3 LIGHT.GRAY - .HS 1f35D300 4 DARK.BLUE - .HS 07a8e000 5 BLUE - .HS b5afff00 6 LIGHT.BLUE - .HS 00760c00 7 DARK.GREEN - .HS 43c80000 8 LIGHT.GREEN - .HS 5df78400 9 AQUA - .HS 930B7c00 A RED - .HS bb36ff00 B PURPLE - .HS ff81ec00 C PINK - .HS 624c0000 D BROWN - .HS f9561d00 E ORANGE - .HS dccd1600 F YELLOW -*-------------------------------------- -*PALETTE.RGB .DA #0,#0,#0,#0 0 Black -* .DA #255,#255,#255,#0 15 White -* .DA #126,#126,#126,#0 5 Grey1 -* .DA #156,#156,#156,#0 10 Grey2 +*PALETTE.RGB .DA #0,#0,#0,#0 0 Black +* .DA #255,#255,#255,#0 15 White +* .DA #126,#126,#126,#0 5 Grey1 +* .DA #156,#156,#156,#0 10 Grey2 * .DA #96,#78,#189,#0 8 Dark Blue -* .DA #20,#207,#253,#0 12 Medium Blue -* .DA #208,#195,#255,#0 13 Light Blue +* .DA #20,#207,#253,#0 12 Medium Blue +* .DA #208,#195,#255,#0 13 Light Blue * .DA #0,#163,#96,#0 4 Dark Green -* .DA #20,#245,#60,#0 6 Green -* .DA #114,#255,#208,#0 14 Aqua -* .DA #255,#68,#253,#0 9 Violet -* .DA #255,#160,#208,#0 11 Pink -* .DA #227,#30,#96,#0 1 Magenta -* .DA #96,#114,#3,#0 2 Brown -* .DA #255,#106,#60,#0 3 Orange -* .DA #208,#221,#141,#0 7 Yellow +* .DA #20,#245,#60,#0 6 Green +* .DA #114,#255,#208,#0 14 Aqua +* .DA #255,#68,#253,#0 9 Violet +* .DA #255,#160,#208,#0 11 Pink +* .DA #227,#30,#96,#0 1 Magenta +* .DA #96,#114,#3,#0 2 Brown +* .DA #255,#106,#60,#0 3 Orange +* .DA #208,#221,#141,#0 7 Yellow *-------------------------------------- -PALETTE.MAIN .HS 00.0F.05.0A.02.06.07.04 - .HS 0C.0E.01.03.0B.08.09.0D -PALETTE.AUX .HS 00.0F.0A.0A.01.03.0B.02 - .HS 06.07.08.09.0D.04.0C.0E +PALETTE.RGB .HS 00000000 BLACK + .HS 1f35D300 DARK.BLUE + .HS 00760c00 DARK.GREEN + .HS 07a8e000 BLUE + .HS 624c0000 BROWN + .HS 7e7e7e00 DARK.GRAY + .HS 43c80000 LIGHT.GREEN + .HS 5df78400 AQUA + .HS 930B7c00 RED + .HS bb36ff00 PURPLE + .HS 9c9c9c00 LIGHT.GRAY + .HS b5afff00 LIGHT.BLUE + .HS f9561d00 ORANGE + .HS ff81ec00 PINK + .HS dccd1600 YELLOW + .HS ffffff00 WHITE +*-------------------------------------- +PALETTE.MAIN .HS 00.02.04.06.08.0A.0C.0E + .HS 01.03.05.07.09.0B.0D.0F + +PALETTE.AUX .HS 00.01.02.03.04.05.06.07 + .HS 08.09.0A.0B.0C.0D.0E.0F *PALETTE.AUX .HS 00.08.01.09.02.0A.03.0B * .HS 04.0C.05.0D.06.0E.07.0F diff --git a/BIN/GTEST.S.txt b/BIN/GTEST.S.txt index d5c68135..5bbecc19 100644 --- a/BIN/GTEST.S.txt +++ b/BIN/GTEST.S.txt @@ -16,6 +16,9 @@ ZS.START hDevGFX .BS 1 hFont .BS 1 hFontB .BS 1 +bVBL .BS 1 +xDir .BS 1 +yDir .BS 1 ZS.END .ED *-------------------------------------- @@ -25,7 +28,7 @@ CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 - .DA #0 #S.PS.F.EVENT S.PS.F + .DA #S.PS.F.EVENT S.PS.F .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data Segment Size @@ -95,9 +98,6 @@ CS.RUN jsr GFX.Open .3 >LDYA L.CB.PIX jsr GFX.Write.YA - >LDYA L.CB.LOGO - jsr GFX.Write.YA - >LDYA L.CB.PALETTE jsr GFX.Write.YA @@ -131,12 +131,122 @@ CS.RUN jsr GFX.Open >LDYA L.CB.TEXT jsr GFX.Write.YA + + jsr CS.RUN.LOGO.SHOW lda #0 sec .9 rts *-------------------------------------- -CS.DOEVENT clc +CS.RUN.LOGO.SHOW + lda #S.CB.CMD.GETRECTBUFSIZE + sta CB.LOGO+S.CB.CMD + + >LDYA L.CB.LOGO + jsr GFX.Write.YA + + >SYSCALL NewStkObj + stx CB.LOGO+S.CB.DstPtr + + lda #S.CB.CMD.BITBLT + sta CB.LOGO+S.CB.CMD + +.1 lda #S.CB.OP.SET+S.CB.OP.COLOR+S.CB.OP.SAVE + sta CB.LOGO+S.CB.OP + + >LDYA L.CB.LOGO + jsr GFX.Write.YA + + ldy #S.PS.hStdIn + lda (pPS),y + + >SYSCALL feof + bcs .99 + tay + beq .80 + +.2 >SLEEP + + bit bVBL + bpl .2 + + stz bVBL + + lda #S.CB.OP.SET+S.CB.OP.COLOR+S.CB.OP.RESTORE + sta CB.LOGO+S.CB.OP + + >LDYA L.CB.LOGO + jsr GFX.Write.YA + + bit xDIR + bmi .4 + + lda CB.LOGO+S.CB.DstX + clc + adc #4 + tay + + lda CB.LOGO+S.CB.DstX+1 + adc #0 + pha + cpy #244 + sbc /244 + pla + bcc .5 + +.3 lda xDIR + eor #$ff + sta xDIR + bra .6 + +.4 lda CB.LOGO+S.CB.DstX + sec + sbc #4 + tay + lda CB.LOGO+S.CB.DstX+1 + sbc #0 + bcc .3 + +.5 sty CB.LOGO+S.CB.DstX + sta CB.LOGO+S.CB.DstX+1 + + +.6 lda CB.LOGO+S.CB.DstY + bit yDIR + bmi .8 + + inc + cmp #152 + bne .7 + +.60 lda yDIR + eor #$ff + sta yDIR + bra .1 + +.7 sta CB.LOGO+S.CB.DstY + bra .1 + +.8 sec + sbc #1 + bcc .60 + + sta CB.LOGO+S.CB.DstY + jmp .1 + +.80 >SYSCALL GetChar + + + + +.99 rts +*-------------------------------------- +CS.DOEVENT lda (pEvent) + bpl .9 + + sta bVBL + +.9 sec never discard TIME event rts *-------------------------------------- CS.QUIT lda hFont @@ -244,7 +354,7 @@ MESSAGE .AZ " 1234567890 abcdefghijklmnopqrstuvwxyz { + - * / } (SYSX7 Font, N CB.RECT .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.M.C16 - .DA #6 Color + .DA #11 Color .DA 20 .DA 10 .DA 540 @@ -254,10 +364,10 @@ CB.RECT2 .DA #S.CB.CMD.FILLRECT .DA #S.CB.OP.SET .DA #S.CB.M.C16 .DA #0 Color - .DA 70 - .DA 150 - .DA 98 - .DA 180 + .DA 60 X1 + .DA 150 Y1 + .DA 88 X2 + .DA 180 Y2 CB.Apple .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.COLOR @@ -268,9 +378,9 @@ CB.Apple .DA #S.CB.CMD.BITBLT .DA 16 SrcW .DA 7 SrcH .DA 20 DstX - .DA 184 DstY + .DA 172 DstY .BS 2 SrcPtr - .DA 0 DSTPTR + .DA 0 DstPtr CB.PIX .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.SET+S.CB.OP.COLOR @@ -280,23 +390,10 @@ CB.PIX .DA #S.CB.CMD.BITBLT .DA 20 Y1 .DA 120 SrcW .DA 100 SrcH - .DA 60 DstX + .DA 56 DstX .DA 30 DstY .BS 2 SrcPtr - .DA 0 DSTPTR - -CB.LOGO .DA #S.CB.CMD.BITBLT - .DA #S.CB.OP.SET+S.CB.OP.COLOR - .DA #S.CB.M.C16 - .DA #0 - .DA 0 X1 - .DA 0 Y1 - .DA 320 SrcW - .DA 40 SrcH - .DA 200 DstX - .DA 50 DstY - .BS 2 SrcPtr - .DA 0 DSTPTR + .DA 0 DstPtr CB.PALETTE .DA #S.CB.CMD.BITBLT .DA #S.CB.OP.SET+S.CB.OP.COLOR @@ -309,7 +406,7 @@ CB.PALETTE .DA #S.CB.CMD.BITBLT .DA 200 DstX .DA 100 DstY .BS 2 SrcPtr - .DA 0 DSTPTR + .DA 0 DstPtr CB.TEXTB .DA #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD .DA #S.CB.OP.SET+S.CB.OP.INVERSE @@ -322,7 +419,7 @@ CB.TEXTB .DA #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD .DA 7 DstX .DA 1 DstY .BS 2 TXTPTR - .DA 0 DSTPTR + .DA 0 DstPtr CB.TEXT .DA #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD .DA #S.CB.OP.SET @@ -335,7 +432,7 @@ CB.TEXT .DA #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD .DA 50 DstX .DA 184 DstY .BS 2 TXTPTR - .DA 0 DSTPTR + .DA 0 DstPtr *-------------------------------------- BM.Apple .DA #S.BM.F.BBP4 .DA #2 RowBytes @@ -346,8 +443,8 @@ BM.Apple .DA #S.BM.F.BBP4 .HS 6006 green (8) .HS EEEE yellow (15) .HS CC0C orange (14) - .HS 8808 magenta (10) - .HS 9999 violet (11) + .HS 9909 magenta (10) + .HS 8888 violet (11) .HS 1001 Dark blue (4) BM.Apple.AND .HS FFF0 .HS 0FF0 @@ -356,6 +453,19 @@ BM.Apple.AND .HS FFF0 .HS 00F0 .HS 0000 .HS 0FF0 +*-------------------------------------- +CB.LOGO .DA #S.CB.CMD.BITBLT + .DA #S.CB.OP.SET+S.CB.OP.COLOR+S.CB.OP.SAVE + .DA #S.CB.M.C16 + .DA #0 + .DA 0 X1 + .DA 0 Y1 + .DA 320 SrcW + .DA 40 SrcH + .DA 200 DstX + .DA 50 DstY + .BS 2 SrcPtr + .DA 0 DstPtr *-------------------------------------- .DUMMY .OR 0 diff --git a/DRV/DHGR.DRV.G.txt b/DRV/DHGR.DRV.G.txt index b0d14bd8..89f8b63c 100644 --- a/DRV/DHGR.DRV.G.txt +++ b/DRV/DHGR.DRV.G.txt @@ -110,21 +110,21 @@ 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 #%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 #%10110011,#%11100110,#%11001100,#%10011001 medium blue + .DA #%11000100,#%10001000,#%10010001,#%10100010 brown + .DA #%11010101,#%10101010,#%11010101,#%10101010 grey2 .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 #%11011101,#%10111011,#%11110111,#%11101110 pink - .DA #%11000100,#%10001000,#%10010001,#%10100010 brown + .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 #%11101110,#%11011101,#%10111011,#%11110111 yellow + .DA #%01111111,#%01111111,#%01111111,#%01111111 white (color bit disable) *-------------------------------------- COL.BANK .DA #SETPAGE2,#CLRPAGE2,#SETPAGE2,#CLRPAGE2 .DA #SETPAGE2,#CLRPAGE2,#SETPAGE2,#CLRPAGE2 diff --git a/DRV/DHGR.DRV.S.BLT.txt b/DRV/DHGR.DRV.S.BLT.txt index eee61278..64bfedeb 100644 --- a/DRV/DHGR.DRV.S.BLT.txt +++ b/DRV/DHGR.DRV.S.BLT.txt @@ -17,22 +17,36 @@ NEW *-------------------------------------- BITBLT ldy CB.Cache+S.CB.SrcPtr lda CB.Cache+S.CB.SrcPtr+1 - bne BITBLT.1 + bne .1 - sta SETREADAUX - sta SETWRITEAUX + sta SETREADAUX SrcPtr is AUX hMem tya >SYSCALL2 GetMemPtr - jsr BITBLT.1 + +.1 >STYA ZPBMDataPtr + + lda CB.Cache+S.CB.OP + bit #S.CB.OP.SAVE+S.CB.OP.RESTORE + beq .3 + + ldy CB.Cache+S.CB.DstPtr + lda CB.Cache+S.CB.DstPtr+1 + bne .2 + + sta SETWRITEAUX DstPtr is AUX hMem + tya + >SYSCALL2 GetMemPtr + +.2 >STYA ZPBMSavePtr + +.3 jsr BITBLT.1 sta CLRREADAUX sta CLRWRITEAUX rts -BITBLT.1 >STYA ZPBMDataPtr - - ldy #S.BM-1 +BITBLT.1 ldy #S.BM-1 .1 lda (ZPBMDataPtr),y sta BM.Cache,y @@ -61,9 +75,7 @@ BITBLT.1 >STYA ZPBMDataPtr bcc .2 inc ZPBMDataPtr+1 -.2 >LDYA CB.Cache+S.CB.DstPtr - >STYA ZPBMSavePtr - >LDYA CB.Cache+S.CB.Y1 +.2 >LDYA CB.Cache+S.CB.Y1 ldx BM.Cache+S.BM.RowBytes jsr YAMultX pha diff --git a/DRV/DHGR.DRV.S.RECT.txt b/DRV/DHGR.DRV.S.RECT.txt index b07c23f2..4965ed37 100644 --- a/DRV/DHGR.DRV.S.RECT.txt +++ b/DRV/DHGR.DRV.S.RECT.txt @@ -1,6 +1,6 @@ NEW AUTO 3,1 - .LIST OFF + .LIST OFF *-------------------------------------- * FILLRECT * 1 : OP (XOR,SET,ORA) @@ -16,7 +16,7 @@ FILLRECT jsr HLINE ldy CB.Cache+S.CB.Y1 cpy CB.Cache+S.CB.Y2 beq .8 - + .2 iny phy jsr LBUF.DrawAtY @@ -37,20 +37,12 @@ GETRECTBUFSIZE >LDYA CB.Cache+S.CB.X1 sta ZPTmpByte >LDYA CB.Cache+S.CB.X2 jsr DIVMOD7YA - inc COL2 + 1 + inc COL2 + 1 sec sbc ZPTmpByte (COL2+1)-COL1 tax - >LDYA CB.Cache+S.CB.Y1 - jsr YAMultX - - phy - ldy #S.CB.DstPtr+1 - sta (ZPIOCTL),y - pla - dey - sta (ZPIOCTL),y - rts + >LDYA CB.Cache+S.CB.SrcH + jmp YAMultX *-------------------------------------- MAN SAVE usr/src/drv/dhgr.drv.s.blt diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index b1b80d9f..f17e9bab 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -441,7 +441,7 @@ CLOSE lda #S.DIB.S.OPENED rts *-------------------------------------- WRITE >STYA ZPIOCTL NON STANDARD - sta SET80STORE + lda (ZPIOCTL) Get Cmd bmi .2 @@ -546,7 +546,7 @@ DRV.CS.END *-------------------------------------- CONTROL.80C .DA #SETIOUDIS .DA #CLRTEXT - .DA #SETHIRES +* .DA #SETHIRES .DA #CLR80DISP .DA #SETAN3 .DA #CLRAN3 @@ -562,7 +562,7 @@ CONTROL.80C .DA #SETIOUDIS CONTROL.EVE .DA #SETIOUDIS .DA #CLRTEXT - .DA #SETHIRES +* .DA #SETHIRES .DA #HR1.OFF .DA #HR2.ON .DA #HR3.ON diff --git a/INC/GFX.I.txt b/INC/GFX.I.txt index cf618e9b..8f5b0108 100644 --- a/INC/GFX.I.txt +++ b/INC/GFX.I.txt @@ -74,6 +74,7 @@ S.CB.M.C16 .EQ %00001000 16 colors (4 bits/pixel) *S.CB.M.C256 .EQ %00010000 256 colors (8 bits/pixel) S.CB.COLOR .EQ 3 xPIXEL,xLINE,FILLRECT S.CB.hFont .EQ 3 DRAWTEXT + S.CB.X1 .EQ 4 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE S.CB.Y1 .EQ 6 xPIXEL,xLINE,FILLRECT,BITBLT,GETRECTBUFSIZE,DRAWLINE diff --git a/SYS/KERNEL.S.TERMX.txt b/SYS/KERNEL.S.TERMX.txt index 6d589aa0..64d4d559 100644 --- a/SYS/KERNEL.S.TERMX.txt +++ b/SYS/KERNEL.S.TERMX.txt @@ -376,7 +376,7 @@ TERMX.COUT.BS.1 ldy #S.DCB.TTY.CV sta (ZPDCBPtr),y lda #79 - dey + ldy #S.DCB.TTY.CH sta (ZPDCBPtr),y .2 clc @@ -1367,11 +1367,12 @@ SetCharAtY.SCR pha lsr tay pla - sta SET80STORE + + sta CLRPAGE2 bcs .2 sta SETPAGE2 + .2 sta (ZPScrBaseL1),y - sta CLRPAGE2 SetCharAtYX.8 rts *--------------------------------------