From ae3f4f491ea59b0ba8a98cb9cbb6d99696837cc1 Mon Sep 17 00:00:00 2001 From: Quinn Dunki Date: Sun, 7 Sep 2014 16:25:26 -0700 Subject: [PATCH] - Added desktop painting - Fixed WGEraseView corrupting the X register - WGPaintAll now renders contents cleanly --- gui.s | 2 +- guidemo.dsk | Bin 143360 -> 143360 bytes painting.s | 37 +++++++++++++++++++++++++++++++++++++ views.s | 5 +++-- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/gui.s b/gui.s index 0eee19c..1590716 100644 --- a/gui.s +++ b/gui.s @@ -24,7 +24,7 @@ main: ;jmp tortureTestPrint ;jmp tortureTestRects - jsr WGClearScreen + jsr WGDesktop lda #{JpADlrq9ok5!jo=GB%xZB|v*2A!FkHBY>M^puNy zgAJq?8(F2B^g#C@bZ>jeHBGv)hy0**PxX+)WrI(l+Xl84FS%Yec(Y`{o|oS~{q(a| z5C2XZdrYmrq&3mA88^G+hOUowuK75^NJBH9pN`h~!HwqG@m}nRHj(Ifvvgz*s>5>u z%k2fruR>f%2tICzo8&+iYn)wg{f25yUf1mZTCgk^?6FOqad7~Z?UNXJto_ZnnK1nh z?0}&|w^%D3G0#OA#Wvo||15ttwxi}O+6X0)g%S(u_6@7 zbO)PjEByFtya0vllt<;R#`|>79iTe?Te*AU17AJ z&yFdRqLIPR#fN_1a8mMqWX_faq7G^8K~3^s33hMaCMdt@&^%n+54fdtPoVqd`MHM>54H!5PcCm zJ%RFO2o2cCioZYLwmLr@MD8`aG+g3VD)=1noo`y6iXNOp8GYW6smgB_pMvGxy7jK6r%=9D%6Zb$NV?@=|MsY{sa`>z{WJvN zSg~=6ol8d$Hl)J{cHE0D54J;Wo|YSSX%LY$DS%)D3D_=RTj}H}22L?@iiuOqrOX1a zPHdQ08zXJ(c5KpGb1VwyM8IYNn*?kWu-~BNk2>@Sv;r7bu?k4|0UQlRI*aK2F^H(Q zm%YX9{OAPu1xOs5LD&Y4LhR!ZJ4B65X&GU&V$10A^>D1Aqt9;whU-NO%XG1fTQsqU zII)VwoJL7GChCh1;3SLyPZ~gw6Nk81Pa9o+1L+hWBT=zV9r|J1CF%*wo_Ep9>_78> z?P_dLL3F#l1z02dM?1h(v$=M{#+X%mst&Mn807|0md|jIw67=7fc@eix=(ilTsIZd zDW3>$k;PE8+fff&obK!dyWJHDqO8^s9Uag=(W^C68b725I{A3Gks=;@6k-K1srp}_ zSyEg~qdhL`KG`hKO&S}tTPuC;Zg$nSnBY6Q<)P`V{yw`=?)el5)ay!+TohgxVztk8ONX{wcguK0LMMnFe*X zChY(U#pQ?L?Qgu)S;ji9@tff9$Y-b7mTYI4`=YLjzthQ|=q$4&_y%k$v@=n1bS1J~ zCgC0Cy9=wv)EE3%2ZY4Rp0K5Qtb;dq!1mfsKUClgK@EK>{IVaO=2dG)mq2w^!{DUYCE!+>{tI1$59e-y}y%mQ(l?jv9_kz8}QJ;qJXR?4$3)K&~G)ODcq6f`aV2wwnrFI;Y#s&Ud~Thwfm)nrg8@F>sQ@>dHu8x->vvzRRL!%R#c zTb?1ts&KOfq;3t%BfVrb7+kiR_~(Nrg+$XOevxgNb1dm*AWgP?nM>HY@4Xhv_^=na z_r7y}=bU?f=iGNIJ+VknEYqZ{wAjXRzi^@5RmJ3LS#5>O#=%mR)xl!sS=rXpeI5@z zFPo@eHlx!`)CS7{EbsW}s4ksvqMz%_+Gbj{0{9Y^b%6cBM<-VRJMsW@k{lb{`N~3z zaJ&w^>SN;|8>ta}+JYvTIE38GA)a!Pj+w6pV;c^C=$ET+_4s91Y&VS!S4X<;!q9nl z$o9va?Wq_Sr^Jx#;Lr1;{53zml}9Hq_SpxjTx9Z8DyL8hpWx0z z*>aZ2a4*i9(Dmkw^qW=}s7X$#8YhFeW!V|v?v>c+aYO@h2;u^UGY;~^c=m4_Ts z_lKY*Ipl6d?X9#~X9rr7V_kE-nQ}Z&m-#S%bEyL-I@FrRlf5`y!rF*Q0GI5?R%xss z1D<89CXmPWV^JFxAgiHeJb?uzE5MGdmbaK&ku^&-nTw}T^i)|fTT7G*a{ zJ0N_EVReY)F`O-r-1H@n<4DqnZu?etr58&vjh(=Xd2E1Dpu1jC9cQXzDmxbg_(B^F z1z2o{j#Ny%V&)YKuUPX%0CL^3DWy(kHaVTLMW3w`F?7FPl&zv{5oNO|o5VPgK6^3O zRDjk@Wz|x%lh?Ci8;G=Hc7y{s(#9G|qXlGnYSt1iM${s$((Am2wQ8+mb**Wdmn>)p zFBPFKUX-1p>?q7a48h*v3?zGS#E+p4E-78XCPTKEdZmptCT+;QHcCc{&?ygV55>VN zPClGG0f{FEFr3FXJwDk9edVk9)hRpG{9u3#|M6*V&FGtYa94tE*HbjXEjXt)fU_lx zmjXB=jPY=sZ};MJ&T9d@M)!4Y>#WYX*erDSI{Jd4fP|4wt1LQ;iNgHMgPlbhU&q{qtTuD#yNszhuS?*0ND)m z$(CdvmaU3o){w1$4<;;(*%#oLR7f_I_9CY*PJ4!{|IREp(nZ3iCP8XcOm3*4Vs=9X zX%BF!nCt@<5YhJ-!60mBLbKaGU}catbZVz64ukk1zyhibGw|yY=0#`0+Ne_?`rzRU z87O=c3yCOD<~ZHFKBwfn=xE=0OZ#L;Zf6^#n+*rZo@ll4Xaj5?kuyx(B)!RSTee5|Kl~qye6f`aIMJu;6&0|bz;9Vw9mphhsw5l eDqp&d(QPw(i+T(*!(W`Tv0nurPft!8q<;ZiILqY# diff --git a/painting.s b/painting.s index a5aa498..e7ad659 100644 --- a/painting.s +++ b/painting.s @@ -43,6 +43,43 @@ WGClearScreen_charLoop: rts +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; WGDesktop +; Paints the desktop pattern (assumes 80 cols) +; Side effects: Clobbers BASL,BASH +; +WGDesktop: + + SAVE_AXY + SETSWITCH PAGE2OFF + ldx #23 + +WGDesktop_lineLoop: + lda TEXTLINES_L,x ; Compute video memory address of line + sta BASL + lda TEXTLINES_H,x + sta BASH + + ldy #39 + +WGDesktop_charLoop: + lda #'W' + sta (BASL),y + SETSWITCH PAGE2ON + lda #'V' + sta (BASL),y + SETSWITCH PAGE2OFF + dey + bpl WGDesktop_charLoop + + dex + bpl WGDesktop_lineLoop + + RESTORE_AXY + rts + + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; WGPlot ; Plots a character at current cursor position (assumes 80 cols) diff --git a/views.s b/views.s index 7e9d4d3..5588d61 100644 --- a/views.s +++ b/views.s @@ -442,7 +442,7 @@ paintWindowTitle_done: ; Erases the current view (including decoration) ; WGEraseView: - SAVE_AY + SAVE_AXY SAVE_ZPP LDY_ACTIVEVIEW @@ -470,7 +470,7 @@ WGEraseView: WGEraseView_done: RESTORE_ZPP - RESTORE_AY + RESTORE_AXY rts @@ -859,6 +859,7 @@ WGViewPaintAll_loop: lda WG_VIEWRECORDS+2,y ; Last view? beq WGViewPaintAll_done + jsr WGEraseViewContents jsr WGPaintView inx bra WGViewPaintAll_loop