From aa7272a1cf597372c38c0e114a295214d6df5540 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Tue, 10 Jan 2023 16:45:18 -0500 Subject: [PATCH] Another cursor refactoring/fix. I *think* it is okay now. --- applecorn.po | Bin 819200 -> 819200 bytes auxmem.chario.s | 14 +++++++------- auxmem.init.s | 2 +- auxmem.shr.s | 27 +++++++++++++++++--------- auxmem.vdu.s | 50 +++++++++++++++++++++++++++++++++++++++--------- 5 files changed, 67 insertions(+), 26 deletions(-) diff --git a/applecorn.po b/applecorn.po index 6502fb5b719305fb09869b9cb8b29ecd564a4078..68dc60b3b7ebecc2a03b7333d2b8facf057b8827 100644 GIT binary patch delta 13179 zcma)i3tSV&*7#Z7h1Yav^tN5h8pz>H0MN!HB%!VlTw!iyNve`3d&YW{* z=FFLyGsAH&bKJ|0g+4l4A~A62ARWP7ClChyzS8F(D}6NZknm9O;IuD1e(?CiqlG76 z?@Ax~)W-GT`OC=IP$~pVPF4?DLke^b0z= z%j)J_f-KcFN~4@%oTUO)Jw=xqQH*f>3%cvj{Z9w`aZB5k>h2Sd-dci;@1-tW{@%h5 z2)!1mS+SKOVRaeT%P8AX_Vtsfv&`Ag&brQ?J@?yLOWC$E;{5FMe?6anzU}!9 zWpADFl+^C$!0>d-g|X?c~49 zK0jBgdt@>obe8LY|6AcgASq1CrH`1$ViCixGyTr$0+IHHsPKK9IU}8RKat4&2@JSN zQv;Ju`Ny z*hw0oH9cK$@DkTMwih~Ao?%~$4WX+r*G4a-ae6{_4P}2{Xt$H@7{u6!qVGvn>=u_$ zYon)Y&I#kbq(i%AUsSPqW&CG}d1v@diC7m?hTSBr{*vzflICJcK4~c{A}=NpmNSe> zTez9b{vxq(E14~*)EV|em^h@zpXBz&iX?tvr$b)RTm&)2C_GJGBcWQ2SB(#@X${zo$P1*?q>GgOL?1iL`G}hp32~%jSPbGY;UH6uqsJ*K6-&>YjcU7vr zDwI{09Iv@5*D-2_+@`qh8LmOgm`tDmK?wDEbO*lyxToieq45BW#ir&5VyRTsl5Fk~|FB7%=(CdPdPj?AVfxak#pQpD2ByYNs zyNXIGP7b{;yH0K;86v~}SKK!yPv5*L((OAoUD-%FDmGG%3O?m3V+so{C~gv1k?vrA z@VgwUpcqgD5NjM2jA8d_(n-q0!Z@WPl*%t^y5bqA7d?aU1>A+i>`NZBhn&hUdhmPl zRydXXeLN_@v#E7bNE@;fMgMnY2eG}Pvg8_)?=hRhdggmF2W5r%6|`jT&~C5Tp@T=i zy`pIEl^q%Y1K?=~PuJ}gOjcM=FKN+UVL<^s)i0tNJmMHZE>MTv2@Hg2a)dhtH0m03 z*Vaa@*Pgpu4p8fK4_h24DVV?7s&MZJNc6; z=?yjE=a#`k98l#2Vlk?(L^(prZn|gBh-zCqkFL%wKeWSW{+dC6y#LSF#Z}@G}jOb{0{%`Ry@y2L( z)g8Ct_Tt;yZ}ae6zdc#~URNPkl`F{6*>Y&DbIn1zpt#d*LvhF3LX<>z3VHwbY}4)0 z>c8bWGxpTIC&b$YZfJxAwKi(&nF}@>bE;9$UHd89E%b(>6e9Aj*lftIB{$TOfZubs z#MRsJXdSAnhn%%1*PJrNJPr>)zubOZp^W2ii*CMwgcQ1RTO=5Jt&KEZc8i*bf z^NzqodE{t`d?v$wPncCm$C!^-_B#~rXIxNayzRF2wo@X3imSvysMc-kf*e)oNEKR8 z)$e+Epp6E&#Hq7BWNf|Bua!1E{6Qg1aij`5j&$z%F^6)78p3*^c~vE?FtlkPe8PeO z-3n`P#fn`8^es(yjKwTUS{FgF!kBOA-kMl}`IdfV@;6nAfAOv=(5j?VS7$t4Ipdx2 z#)%pdISD(}iYNN@$+}XxmJyM$)(uUibVte6cv@=4?G-N+?*Xg74~#oPE4}eN`yV*_ zZBO(TWj^KeE;V9X2@IX`LH7y`W^Y;@4weBY?fuxAP1I@Ix2>Y%&F z(0A-nwmWG56IG`|!n#{y#ccwu3R#nFcZ~a=taYs^wH!l|+a9ix&M)zE4JaLO%wA&C zBKH&fYnVzHwukOD6tsA4zH852SCG=VB zKhv_S@cACPyFV0!O2-TP_Ru5rkO+fjkUgFtCyMe6&?y4-PkIy?bXR!epLEX-wrbGX z$C*v2*;x$OtB?#C8k?~GpLCBdr>k=b4Q$j*hAHqtN2__Q#)OUv2mVP9oBgobP~2E; z(2kp26IwUBW`0d3yw}0=Ma|Bd|E)P(bFStlJojtJ+MwDVwJ+CBsEw`tpfnug#Y}K_xH};#-U6w&V~i8I_=X8E z4bijy$F0P?HECLwTQN?H znz;Jl-KlSSN=}Q7Uq7OL#@lbLaVs;T--?f>ixN7TEgPK$FV z-JKKz&g%WUhG}u}lgx4MckjB_-dc0pPS}VqZ-tMXemCr@?1y$MC9(qcF;wXcu$074OAWh;;!o>rPeh}(LoXH`9|96!1Kv810+h5 zNXmh*F7rY4vQi^b1|TwpnUO{C*-H-|J-;5d5kYq?b+Cz7EcK|eUg?PD*IN_}(HN=+ z6=lcH`dvz19cpkd&12ApddF_ic!Q9#m+m^cu0HQh1OpWdw?1^e?r10p3&teYwqaLY zQP!KT$qt{YQ6+i?ZLN2_41osNtZB$xlFX$@v{g8~7q;2G>xIg_^su*E;sy|FFly_K zrE&y11isDfxDHOoI0#n`^*C+sXH&3eKPmZf;X&xO+a6%!&^9+fP|pBky^MXoOxwrX z>SQ0-9VG9gyS)TGaZg0RXPx{I+S&6{NZln-3rNhr>`8|G6`^n+9ij(059{S1buKU| zvqZCT8tpMj4FC8_+Lqhu%di zjRoksyPsQEht}OA+C`_m|K3u;Tm<|0a$$cFjWkDu%SE)lOl5lE$hjIiFxC0QUzj-ySQh_>La0xg->QM|T@l z-T-Pa;yBPJUv9*@acxF9At*HTKI(Me>dVh@IwtdTos7tJALX3if*0uT=`rS+jWZf& z!FMKn;~vC4h;Q_KG3@z%`^XD<-anuI%j4&mIgjT)j(Ys}#=kw;@^EqE(#GZR?R@sa znKxB#nd*P3TrWQ_@d7mPnHZ%!p^<%X`oXUc?!mX=0cza&*!}oUd3AYBd2M-J`81*a zdwQaN@_ozWqDl8HO?h?Lz8$_cVviDmQiZAe=`PxJjdpjaX>h8Lyq}(=`9}EHe!9=p zooSyaB~D-K1DH`5aMgR1Ej!aZ2wx||pw}85KL2d8`Xb*(o6jc-lh?HKafaQF=Z3$$ zxKcQbUK9Eh)26Op+ZwO=D?Xyb)(9&F7-YXb5sNS^d{sfumQNbho z;p}V@B1!1uCWjA1tqQWBD-!ZKO~S15gnn{tTl6d(b_Sg)Ll*?}1KmrrQyBLHt=Ie{ z%>IEMJZ~q?%Bw;DdnVN3o9CuYO_|K*@U}?%uwZkzpN+7Rwr;u$&=39PuYUJ znuwd#`AV;~)w^mE%8Tu+p%ngdzhc+P4@^+JsWS6u^>F!Si;$c(BvVlQDGMV&Z>3g! z%0i^5z{E&vNTrKCID3sJ?6Lh*;rj#hU>!(@#X{|e*&mX; ziR7|eE~T9zuNv(JHL6~xg4)(j+3bE`EEUs1w{2_Wqn_r(~scR2dNY)8= z4$*IE>V(%1(-YxkK1}x;l=@&PC7Sn@_}ck_v9KP)@cZ?N@$wU+`w76KAW&}n_Nno}X`_F$anw`ex~G5h z3_umR1@jSlz`%BFv4z4xea=oqKv3W0p!mO28HMYe@UvgW)qe`EBVzDV;nWfOaXVdH zx48as!{f%pO^ur!XNp@XTs%r=3|JJOofMz5I3A?0CUeJAmDL<+Z73}sPq~K452bdj zB~oh73LpMN_cFsV0+xtYrCDDMwc>zdaY{TiU(M4>?!K4QG8#HAl2495o*b`eOZG%U zHg^wYKSh@xbInpGmLJZBY8}2}A!MNSX^vN64G}3?Eu-N*M*P$=R!WMujF%S07cP#! zMku}^A*EcSWkRU7i^CV$m%+lL-Qn8B@!a>A*K8K85r&q~FPS$Qw8_oS>OT|Lzu8m& zcpUC)X&3G9@ZV(<8flhON^nZ=I;Foj;k?94N?=m?Ig5y#Rq?1-v%?=9%cxxy&!9yg zFU< z0SblGE-8R!r%gJo7-cXSrFTp&PHvZ__#!F6@haXYpt!k?p&mt#tBOW?6oocxsYOdY z13=}%6gfXvxF6pXO6(~Z$6jrHO&nz9N2sZteGUj>Qz`>7W_d0p0I9sQBax#HUi#aDSs@- zJd0n#@{6#xr&B@JC;(0+0Wc&&TFTZeX8EP8#IiNXEYGsiGPWj#<(ILL6~wYZ%UFdJ z-7&By@Jd;OrQH65+RVWcP9(6#K?&X(0^($n8Ds3EOxlSJi&z8rFfCRkiRJt}nlw2= zwHeZSC;V~(oYG?Ub3#gHKi5bp?B`@Um7{e^tMLzF4_+k}U?pz-rxIvEf|q2UmqhjX zLr=o`e!(2$r3AEKuCY@Z{G(231|$gyCn0V>;9Y}>fzDG$ns<~jKm-n;gBZm3WyN6C z5EJHt=Sjw88M{xhllnZoRQC`&Ik4m8xh~`gaA_3nz!=}8DC596c_S5Ca#EIX=^$kp zj?&T`dhpU{&>Vx;S*Mv~U(_iiP1GRTEMId;?g}%5j-Lc!2$0|87%Ll_#Y|hLzX{C@kgkfLsZUDD(5hj z^AjblU|r+FC@p`SqTv(jAOo~P$0jcC8 zz`{P85BWj!z@<^f^Y2OorF3esm!@TkAJ~^USPY7pBpcC|G<%&bh4TSJqq5tv8`PzR zM>UUW=)Jbx1>1JzbMyBYM=PW95(fN^5G3RI4va(YD^Bthd&4sYo$wA?NmVurxl$ch zrPWJZZg9k|RBMBmXKUfYz0Yx0K1cg5{plUs-U3(nl<>v0_so%~os(lvO0uo*3v=^f0dcA1o*g z&MG2d1s(x-`VD65fuff*MJ4ni9t`qykUCvucWlu@_o8JnIA>i&#V z2h8cp9|!}guK!QO;mTb6&&t#aiEw7J87PalBw8j^R$@33!=vrQ?k^Je zM1C^9(3VN7$7;-zjjSG?_k47Lzgk#^`pC_uk6Xl1uCV0O1=0c^n zCl~&%CkbKh&-DCm9p4WD|MJjFH6K&K>9RWWUHqBu5p1(W=8aA=dp0BJ8^QkjL!M;{!Ueil{}Xt;5K3PZy+8sOE-}EY z{mMeFy=$EOGS=?baI{Fcc!3TXJLPvxVuFuUp2%NFg* zU6kx6T?8s&WH~*++fYn7-EmP#B3>M4O$pN!6dzl_`9pxTp!mcBgLEk|%%3hWeRO(( z66_3bLscxOU+`#wZlQkRkcC6xDTr~uI?fWAHRM8~Z=^7efp?d2@GkIT`$s}9CThtR zu9VYLJ8xWwRxC7bT$nfO$QT`EtXGruLexciwq}vA?IJyV*Co1EIDU~H329AfVBapT zMEYY_VzCR4l4FVVDtKu47v3lheA(>j^hK5^xau$->i8q;@E69F{K#_mD{st`FH33# zd*sbkYuG;t4NBU%WL;i@n(T#>T-Ut0xY92@%fqSOICUue=)9wITba-#-2B&{8-d## z>>e9T5enf{o)~s9#V@F1GI-j^WEgT$Z6vJGCDXHc+hcgpVJBRP))*Jz>zF8=N<48a z(HiL@eDL0cK<}9HA}tAdV=S;BY)Q?9)Vvm@2I25SG1ltBbFEq_yth@B@Wrvfk!?a- zVfOxfEO4u4+{?+5hH||wzjBR&_0sFf5=BK+4KI*Lc!i^x$!J~64=*ngV1qIr(+`v1 zg$!;A+9Ehk1P(F-(HKmJiF7~|;vwpQiHguy$!Kc|l9SQ*$$E%fM=*tTDN6g&;<^+# z6!9;;rjZ*sD!VR)QIBu0X%>0!RKVg^J}J8is^oZ|6yf5@!0^;U%Xl%xG6D5XVZ=g+ousI-lkp<; zJ6sgdd2u+#0_#w*H7=?JN3^1=`wxDfO&{CqGaWhKj293vpEEhzQmxd2y@v2OJe$l01&E@dx;$#!e1as%QFj$mn9s)Cc?L?$lb+Sm(iDd=xYtZh-^ z5=?ZU3F0Ms#6r*-cOe+TmTyx^JY+ObK}zlB!juo_MheG-jXJVw(?q#j03~jtA*mzfg?0Cg!Y>Iqx2LvUN}#GfuD-I*o=Bz7=}5U}CCmlanaax>mnuzJhRp^vQ!thV z-q6(T9eyV8FB&*={^V?6gzot|RwNt&Ql@a>Y#=hHv5XqZfi?1B2KUVtW0NV5QFv@Gs$|wX-|0An^TVH53Wa9-YeK_$>8R z8m_*M8PwNL@3UY_&p)5d8{7V0I-s; zPo8^0ZAS5a!S?0P z6Hpi!TuDRd z(jI8c#{n~nOc#KNZMhXu>aQRGU;WVC+y<}gK`jo+{9bRn>`!24f= z=+3>6&UJ)8QImT)eS1av_M7S3Ytr#M+LUvxmHV zGhG=0#~LI;8O=A-8Jn*M*ULse$N711?QPUET(jCt;3Gj8C)aygjme&psb5u<4o#Jh zl2&>(Dy~U4gCF#W?eC(L!Hmrx%-I&Whs;D-84gfIi_>jd(p?!_z#cLmS}QAqvC&@8 z;mb5byQv+9Me(H>;EzUzceq@iF2mHfS-+}2{X}VoqYI~RjdJ*(=uw(sC1Lkgnvq)% zx}~qwGjN?q&INkGOf>zPM)rplF*uz}Lw?bszv9YF%mf+} zq%!m2j)0oVOn@_R6|%iez=d)TNQlm7kj(>eQHC%d#m5GLYMaK+VMbwa5iwZho|$h) zfXT#i;KKRzO#8UZ1pIQ^c3leei}%5>O;r&Ovd=$wg(y#GtyCtYS}BEZ1$y;@yL;zR z%8JGMlqs173?W52!yhvS^yXglYv69pt{Z_q!tv{YBfqE&oZU8_&t}C{{6_3}$88W6 zRtEMrFIa{Cz6u{KN7((*f>mNiNHXaAk3=)y_D6|l`A;x)l$B)+3Hj*3N115kDic!< zZP@c!8;)3&^*UWpWcwHxR2JD*!K;bcjO!o13Wl*h$qn%;yB~0FV%!`-;L^ca`Xv8? z&3$kvOQpBdn^hPSotJ`s3>&9t2mAbpQiLH@fjf5n7TEEN`=o7ea&sUBTwzr?9HZ?v=@X-~uDn6-Jp#m<7qKM|3vmuJM{r*46X6MYAnKNh3 zIdf*`ti>|OVj1L|uT-Zb6a5DCXhT@85C{XGELHw*)B- z;~wP^WU0DA7~+n!SS!$X4^cq_>ct&dM~4kq@vwiO#n`q~eTTUJ=0c=@H*NmncjwO~ zG%6%lO{nAv>qFjRePnNiMsn>r`nk?>g*p&XmO?3DTYagz#!y~}R&e7u`UNuT6)uaT za}>k4R_keI_?hyIvM8SWFCwV05biKV% zBhkY~=kTakJ?+Jz07eaR-uJW>?^yZ?gj?Mw!Gg9o0#z7PYgn}#BOfGKJZ+^Qw4Hlr z1N|I%_XPLp2D;y?Jx*B7^(0$BqUuwOz>`NekkSjaJee;>BB>_`ozOMYaXzPpa?Hu8rGCg!D2fP$ z=6ijI{Y47J#;J^c+DXi{i4;2u1?187q^L%Fo`~eaH__b`eYlE^bT~J06FpF26-*Az+bk~6L z(^&JdxpYF{IZXWxw;`9FW>%f{5ij=WDi%r4(u$k`k zM%tBv;(s1j^^15<|N42sO?uQ)J7Et=7XnNd$gSQ4xqHdT&;lQRAAmG`*nMX}RAgw# zzB4kJmg};G?jN`jPk{y8LOb1&QlfU;+%0sx;@{l%Ep+!bYm+N4tHe9G0q%%Q2jWg| zp+^S3TW+DyFs_H4elDW^EKJ}8OB4mOnsHDrH>m?d`s}~)yrt)a9;m21(=idxk}&QQ zJ3T)DmqWRmcDj#ZE!S}?{g$GLo4=Kg2%CRSm6@w_=a;eXBBzx6&xJmXtii|*kyucn z%;zdEhqhej%Aqls;_SQ0!bXzy%V@{FY1B-@^u8WPFQ+ z(ecD(rAYD$St2_#nGIOuGuO{Dqgkdis6*xYNHaS_R?(+8JKa}6s*5mGk(7rJDSh1q z3`-tDdczYdg?bpky?()CgWKv0K0Y8|XC=dcvw>@1q}iY~!akB!H8=b+9#E!vO>-On zO}AA8vGO7&4!DSk13A;b>8^?pF6ZBLx4)^($CcslKgD(t+Q6;0UgOgMcQo>zXT8)p z(=n}OtA09~bwayU0>8{Nmetm5VQikjR z1P#YQg4Is4)S;&gwb~5x2fI7$!qAH3z5hxOx>jj`j zM!EqCm!W+Cb(JATSy9{_AP#*^cMiOTZ9JPB{xv;l>i?}eR@kRHR@0|CR?eq7R>`M2 zR>Y?|ZXK)6{rolEoxE~!*Y&UIXvG`LD&~~&Dz@>r+KnVExI%izanenS3c8?rBkAla zjKSuHpKl~vJuX*TE}=CQ#~ObVJ;yeZ43X)0otwwgFT8r<;wsWvv5In5uwyPUhRD!D z7oZ40DV!Bdq(y3Ph@=W#zdS>RQQQ%p?lR}ZMc=yp+P4rvLP4<~m!F(d;6sC;4j`zY z_?KtNTi~9M+X=Y?5@|;cqIebeMj_qx|R*xBQ3UZ8w=@iT4gmjK^hO%lxG%1renijq2<+u3|x=xG$PN|adF$}PJzc{ zN^a(MdSKt17@qo!ux74mjUlU%DNo9D{KS2`9h|g*JG-5Z7(48m#|sOt^ELf|Yv86d zF!%q9#Y}rfj7K33l1;jDi0M0m9cubc!D>z4k?bobpIh9*y|IJt@~ZPMnY|)-lF$FD z3Tx%>*w!6%cZHI3@1Q%ILospEGfMdTqO-Rxt|eEySE%n{{{mu69_a7NtTjdFHcCzmK%>C(Jy3kc|P3O9NO_#s#tG(OYjMV9J zfU|>J=~U-m89wm(wCL-;f9n-y#4op-h_?&9VA1C}b~_zrE?loSRHL(Xj!pJ!C`giu z(6KuHkuIl}TzQiO{LWh?o}SM8E70ybsQK*Jr@t5y9z?Z5|GqvprBc&fk~m=zz^P^J()1`vO1&I&9`%FQWT)*V-%5 zznZjYbfqT$z=FQk1NjGG_dR&1L_Cq{*u$+Xq7%&PD|_#Y3e*p((qH%5dpandK>w=Z zUqH29duQ}v6^PgGQC*T5ezVT#pNFn37z&I7rWJ3<%P z1NEyaX@Q{){ooTB3g{MCoo50c7V9K=gbKZev8XGSQ__+TQ2a2^WJL?ELVm+N%>o5P zZD;g_UeuLa^B;Qf>r1PoAlITQpe-p?-_)*?Y1j~@5PNq05>`iCRL zegmy&l9ewaY&#S-Y+M)~sA_M&ptQ5#9ZmK>fOJktpy&D0=MOtd>?(A) z$q^t^q2!c>v)@lg1WI0(F&FOh7R{X-LM%?7J0}EdD!nqtv-6fGMCw!$dC8%?u&7E5 za&=x>72vUYO4W5ySMxmy?o7wt#~lshJUi*GLBI)iLvpmV?i;#?1`v^8O|dnotaRtb zQ9j4fi5vP2Jp?grMk8FJk zx91zWTj#v$JOW0&!Jr!pAM`~vt5O)y7u@Y{=z-G?RO?*(t97c__BHjjeQKg=#=t!h zuH+hHjiqK)&DNToaP6%*R&%zds^(EmXl>Wpmukn$enR5s zUTNanZ+?1Mni&6P+_?Ca7#KHxa{On?+mqrZ$A7%))+F-iV*({ra9h;mvr9rs1u(6B4~k zZcQ9Nj`d2DbmOOZx80khhg(T~V%&uIm0l@vvdt@b$Bm!l9eis{0{G2=w{+ttC5|yq z@kh(BY`qp0{no9>OJX3(luASiCeHw=6Ts>R@aOx96fU1&fcA!5QzFtb z-5F1u^CX%gfrA4#s8wyfX2k?LxC#vsrF^XNY*;^-#V!SimJ0p7@{#$2P%rruj;l*`8QF$*On=KM_-@cs%RtAXZ1+6Fob@GHD?sc@XThJyiK+w-t`Z^KsJtFOBW4|dX9ba(v@98enU?gsXlLbF2 z-UB=PeiErZ&#M55jyl-rpvUuy>F#~!Rr5pv zI_703lk60dk@}-;_2{(MsqxTKLm|52?d?_HM2Xz?VtTY<8z(_qiq%}(A81X7)m4>; zD#aR&trOqR*9Eki8~y_%GZMMfALyQn0&dk0bZ6!2Do0nY@CSM%AZmV~yA0V@53MnL zEHqmnHt0bGOY0$S$YV9uql$W406X37e4U-)W_U~2A?`WNcyNkwh zFaAVpbdM8sCm=h7pj2(?uHhAsHd4^3u_PM{nGi87zq)@cPDQOgVF?kwC!v-SiXp3a zg72$=G+l4>CCC0m_aC_$OUbVRx(H`LzLz#MW-;rd+MtsSh3lgN?SzfAcVR9o9E4Mi zZ1)`f3nZ0eKxC*yI{MiO4U_43N8aDK&^>gJB8uz0hmJ7MzW-UZwPtR0L2;TXFU?e0 zBHrD0WAiK%-xkfj&r)s{o~}Qu$pSCpU&HNu+gh3&N>_^2`koKP2id>ZNHN=Ps4`il znxMpJjresL;R&pOR8%M`+Hcq}=T0S=`M%bbmFp4)H_nGV+*#1do)!z2K(D zPM>`rV{?{~tbw#-dpuHGU4Au~%YeT2SzpWa7KQi8318<|>yZ6~JR$~hgI1r>^u3%! z@>rbbjpdLN)uERjOc-E@qCJc)u+X)f6W#PW8jozFGoTz?rg1ObB{;j@;nmFZGLU2C z*6pQVhTLxHUb=70!3U^oQ`Xc>oLOze^Z!#f?!|p{ z?~cdQallbh>24!dGrIDm@~lip5SO!$)^H!~qeB(jF+50-!0p{fPi$S(lr2XR5S8xc zdhDm)RP5%`_JgO{&3(I{?*06*yGDvPe_s;tyN1cH*R6+~^g~!ccN!s&Gd?p0` z+1$hZbcA98_xu5Rbo7dcjfSZyBnb~;W3e+${EGlDtI-ha7;1lnop$UaeKfcE06Y!p zAN6|_3Ez*Uvv+>Fv!dZxL+rK1zmNI7$M1WtF1gxxP5@GF}1QFZ#PIt;_F zs7cQ^=?^ynJY?J>{Ra>AdyeZ*Jk*m9_3a<(S2XC4HKcSUQ^Ls<4Vlu3OzA+TaM1_p zu5BV8ML#<85KV1z5Uvw%akCE6J=#u~J%%CBOIfD~(hjKYT)0&_QMr(|4(Z~ru(>)U5Bm>Jw3F)?>5jF(_ z`n{4U1)`dVm6kg~GpThrj7|)zO+2DalvE`YH6^J!c-`25d;Tq_ty?hwCu*reN1Qqms~>k z)lJu_QXW0-UN1b*k9^%rgdDuT+b1!;x!V~3Lk^)3rn-eBw=mN!yyHgy!yN|=%pP2+ z%}q!|JsvrO5SLk-kjS7RA2J(@K6b-zDthmIM5dyNsTg=I6?IDG3HBbg$bBOp$2MZ< zff3Gs_B9y&jmxJ4RZo=i%M#)!F$9G03YMVwSXM!qL8>zl-J7Yun)v_XZdRk8tVvTU zI<$!GFu5gCio04i#knq4o8MG=SxDz$!r{D`4)Y=@b9#QDt?Tm0^ep? z%JGe`oY2ADU^zk%V6#{gdj%US&ct3dqC1P6W5Il8z}{)b-o;kjTW{op*bydvKRXhi zs<}s)Ac-@=B*ZDMewl{z!#Q^XtDd~-+>fd-m`cGq{bGx5OH`dlw*h8^H zOm?!kgxWCFv_jngIvg8pvQhdaQ=xODtq-OMz~(7cnw%+uo3cg;dnxNnobCwyLYs~z znB*E0^dZcIW^o@Mq5G0|r*MTwXsua^*XHj}RQ9*K(l4$6$4UZW^Y`(czhPhr+sdaK zN{4g?;b(j0ui4B~*;h@_IZ*xhFjIkZ2mrqf2H-`l5M!ztYGPwd!f;cK*2E4s39p%I zUNNz+nV>3UxGCf{lSJ~~1PJ&2txUkJT>p#S^u;Y4ecq&RnC9;xAdU?-V~m3oNe2PR zJ{@>I6;@@i$r9+(q|q6n$`n3#!!Ng$TNr9uO9)!iT7~e6X)T#S<*MAm$M^@y2)`18 zuoBn)tOOdAk100$b^D+*l%T29~DplXZ z&Jz}cc7_KzTX__cs$W9Df;j!%r2J@!elmB^h;*k0+&yYY()qo9xR7ko>XR__h3;SFq4#^1-M3I!Wwp;Q4?kY4K+du z1$_c!2~{X~DCk!hH$bGjyge)3N$LMPodF-Jz(x*atBpA|#+9{3eMma=0`_BQF4iP_ zR&cAZLT}9wMw?hS#U7x9coVyqVh>We`>5PQRPKH%_h(8N$!!+tu)wh<-Frd;=Mw3c z20`bdvBiDMVz3Ej9jF4+j`dJ5@7Pi*_b~N%NO(oj7!Dn$JDIyKt*xinL^s>U4U>27 zTc*bwC)+R+JRPO~YNkL?Qpe^QaA=Vf2s0*>4@np!>e1YE$8LM7MF}&9%DG@%DMuMT zO?+dm@lW3?&nz?FXq#IMg`e`&GnCLW-Wg%I#pn1jK0e>Zbkx5t1zFc@v^LFoNf@^f zRz(27wtBzFXB#IRifV##ww1W(GP(=)_&s2H^8=ikEH?pu|K3a(lb7+BL}Mp#XpqS- z>2E^=0_JCJb5sBtJ74w*c`~rhp28TDCsgb%ylw)=C+JM9!iEQ$q-;Vwcf1UunN_&! zfBe}E=&(eU2FC}1wqQQi65-pfdp)Tr30k&arSW^ke(P zKrJQ;hzXGExpwF1ah;~mM%=xyie zS||=K4Sufk+GP5pwaKovc#Uw$^m4dp_~#au1`m3=XVBvVCT9>ATXMi;xl?&{mUzL} z!EX68 zQ16IPijWAm)TGO0$}kdI2XR)?uyAKGCX$!nPJwT5hzMq^-`fg!YvB*NuYa0^5s(`#3=d~_r}6{YA5-&OsSw<^a*ZJKeoQU3 z+-8b!AY_MlI=EBE-Kp@@4Q1M;pf>!NDnE7a=8BI6_a1a0#n#@fkXjXcNobO^1oCep zF{Px$a*lyRjzBoe@uixaW5!_x?D9x`pC;iVxD@q5OKV4#Jr%vV(AEYG zScr-CG(xsT!}tQSYmHinfs3-RN!6|_7z{D66k4&EsZvWdW>W!M3x;YKxj$3?iCD|n z<#Ff=;{evCQDxeO=|&iiKUO9|`T)Zk#t&*4&j&C7@7l=7OOOVuPBKdENY`{O>UeNR za~6#Hh7VG4HU;psYq}9i^0;QDGCNw-`g1K$Y6${&Qi9OfD|NE;dJ+kD#38qSq3^-R z)(V1GDtFvMNFT3R$f$IJexcOL_fVg!e{rE9f+-re@UjF`rjwwwMPBw?hC?WY1s*iZ z(Vm5kPF3aQ5E18pbH;IX$Ae#v?rv1&$B5*i;fG=(Y#JOO!0VKoj0LdosdmO}*koK` zsn^2ug`HR(qk#_Fz0ldIWx?I)=|-tBTen^ZuO3^# zw(^7%UP$6XP6Z?L2oobGcOWF*4=ElR@;nT{|9~j83MYa7FhbhrhEcHXVI`xmdJkJ? z6u#KQ-ZBbb?qP4^bdS5zh#z$4iTmYN_*eG-dJnNJ*TA z@59vUaEKUSJEe8JH!nZK(gFT>MIN7F-YjHn-kGtvI0HXzOj(>H)8}o?Fywugk%js$ zEmd!XhVnC_g3%jGZGp(T6g>cB4XmOmi+#WKKyEpWZY{Qy1puYTD~4=#WhB`NNXzwI zn#J%`UU3FfUJ0M?HDJ5!Mh_JQr#O&yOfV-(ls;;ie(Q%iAt6yx8uYI&GwA>4LtLQr zmzL@GHG_|q>51hR`3wmk|4dn`WuT=3WLOHzj*K)zPZ<8VmE_Z{6f8e=KB-v{VkPq_ zh&rhimTEt>OURIL1|%qUv@?UT2kew_J?!KYT%Zrv z&Q3kXJ(3Lv{tw!>h;=?YGC7^HG|Rus0OJ*)!Al=ETbv<D;OE;3?+dRWA}1 zeAcP~@K3B7NK`l~;JvACSum2l97^=+GRIf&ZjM~G!0di?+2*Yoa2U!Uglh<>!6#Rs z7wj@`T~>%e5c|T}$1+_(@sJO2XVh6hV}Mdt0UYVerK}`4&z2#(nSgiLeIUWRA47H@ zWQo&7DkY^I^3`^Q!-56jmm|-~(z6O22ryZ=9e5e1Tb3g>D+%A+b|t>qW$o~iTRV3! zQJ&ONpDZZJ`p`aw@QaAs&Ibn~zhdwb-x>7ElJ_;Kow5oULWprkJz#XG^RC3-f_Es^ zRYDkhHCV|-R|ZdOgV-b!znq$460 ; $460 is seven rows STA VDUADDR+1 LDY #$00 + LDX #$00 PLA ; Recover character PLP ; Recover flags - BCC :CURSOROFF + BVC :S2 ; VC: Write cursor + INX ; Advance to 2nd half of :SAVEBYTES + INX + INX + INX +:S2 BCC :CURSOROFF ; CC: Remove cursor :CURSORON LDA [VDUADDR],Y ; See if cursor shown CMP :CURSBYTE - BEQ :DONE - LDX :CURSBYTE + BEQ :DONE ; Cursor shown already, skip :L1 LDAL [VDUADDR],Y - STA :SAVEBYTES,Y ; Preserve bytes under cursor - TXA ; Byte of cursor data + STA :SAVEBYTES,X ; Preserve bytes under cursor + LDA :CURSBYTE ; Byte of cursor data STAL [VDUADDR],Y + INX INY CPY :BYTES BNE :L1 @@ -201,9 +209,10 @@ SHRCURSOR PHP ; Preserve flags :CURSOROFF LDA [VDUADDR],Y ; See if cursor shown CMP :CURSBYTE - BNE :DONE -:L2 LDA :SAVEBYTES,Y ; Restore bytes under cursor + BNE :DONE ; Cursor not shown, skip +:L2 LDA :SAVEBYTES,X ; Restore bytes under cursor STAL [VDUADDR],Y + INX INY CPY :BYTES BNE :L2 @@ -213,7 +222,7 @@ SHRCURSOR PHP ; Preserve flags RTS :BYTES DB $00 ; 2 for 640-mode, 4 for 320-mode :CURSBYTE DB $00 ; Cursor byte for mode -:SAVEBYTES DS 4 ; Bytes under cursor +:SAVEBYTES DS 8 ; Bytes under cursors * Write character to SHR screen in 320 pixel mode diff --git a/auxmem.vdu.s b/auxmem.vdu.s index 3829e79..97a743e 100644 --- a/auxmem.vdu.s +++ b/auxmem.vdu.s @@ -280,7 +280,7 @@ COPYMOVE PHA JSR GETCHRC STA COPYCHAR LDA CURSORED - JSR SHOWCURSOR ; Edit cursor [ON] + JSR SHOWWTCURSOR ; Show write cursor SEC JSR COPYSWAP2 ; Initialise copy cursor ROR FLASHER @@ -390,36 +390,68 @@ PRCHR7 PLA :NOTSHR RTS -* Wrapper around PUTCHRC used when showing cursor -SHOWCURSOR TAX ; Preserve character +* Wrapper around PUTCHRC used when showing the read cursor +* On entry: A - character used for cursor +SHOWRDCURSOR TAX ; Preserve character BIT VDUSCREEN BVS :SHR TXA JMP PUTCHRC :SHR TXA ; Recover character - SEC ; Show cursor + SEC ; CS: Show cursor + CLV ; VC: Read cursor JMP SHRCURSOR -* Wrapper around PUTCHRC used when removing cursor -REMCURSOR TAX ; Preserve character +* Wrapper around PUTCHRC used when showing the write cursor +* On entry: A - character used for cursor +SHOWWTCURSOR TAX ; Preserve character BIT VDUSCREEN BVS :SHR TXA JMP PUTCHRC :SHR TXA ; Recover character - CLC ; Remove cursor + SEC ; CS: Show cursor + BIT SETV ; VS: Write cursor JMP SHRCURSOR -* Wrapper around OUTCHARCP used when drawing copy cursor +* Wrapper around PUTCHRC used when removing the read cursor +* On entry: A - character which was obscured by cursor +REMRDCURSOR TAX ; Preserve character + BIT VDUSCREEN + BVS :SHR + TXA + JMP PUTCHRC +:SHR TXA ; Recover character + CLC ; CC: Remove cursor + CLV ; VC: Read cursor + JMP SHRCURSOR + + +* Wrapper around PUTCHRC used when removing the write cursor +* On entry: A - character which was obscured by cursor +REMWTCURSOR TAX ; Preserve character + BIT VDUSCREEN + BVS :SHR + TXA + JMP PUTCHRC +:SHR TXA ; Recover character + CLC ; CC: Remove cursor + BIT SETV ; VS: Write cursor + JMP SHRCURSOR + + +* Wrapper around OUTCHARCP used when drawing the read cursor +* On entry: A - character which was obscured by cursor PUTCOPYCURS TAX ; Preserve character BIT VDUSCREEN BVS :SHR TXA JMP OUTCHARCP :SHR TXA ; Recover character - CLC ; Remove cursor + CLC ; CC: Remove cursor + CLV ; VC: Read cursor JSR SHRCURSOR JMP OUTCHARCP2