From 5a73be34b7b8411ee162cd5f068021a268eca963 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 2 Feb 2022 23:29:50 -0500 Subject: [PATCH] orb: making sure we don't forget what we've learned --- basic/appleiibot/Makefile | 9 +- basic/appleiibot/horror.bas | 2 + demos/l/flyer_512/Makefile | 7 +- demos/l/flyer_512/file_id.diz | 2 + demos/l/flyer_512/flux_image/desire2.bmp | Bin 0 -> 152238 bytes demos/l/orb_256/Makefile | 14 +- graphics/hgr/circles/Makefile | 24 ++- graphics/hgr/circles/horror.s | 179 ++++++++++++++++++++ graphics/hgr/circles/orb_tiny.s | 197 +++++++++++++++++++++++ 9 files changed, 422 insertions(+), 12 deletions(-) create mode 100644 basic/appleiibot/horror.bas create mode 100644 demos/l/flyer_512/flux_image/desire2.bmp create mode 100644 graphics/hgr/circles/horror.s create mode 100644 graphics/hgr/circles/orb_tiny.s diff --git a/basic/appleiibot/Makefile b/basic/appleiibot/Makefile index 0831eb53..432a097a 100644 --- a/basic/appleiibot/Makefile +++ b/basic/appleiibot/Makefile @@ -20,7 +20,8 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \ STAROOPS.BAS HGRSTARFIELD.BAS COOL_BOT.BAS WEB.BAS ORB.BAS \ FIREWORKS.BAS THINKING.BAS ARCS.BAS WIRE_HGR.BAS STATIC.BAS \ OVAL.BAS OVAL_HGR.BAS MOVING.BAS THICK_SINE.BAS TURKEY.BAS \ - FLAME_HGR.BAS RECT.BAS SNOWY.BAS EDGAR.BAS OOPS4.BAS OOPS3.BAS + FLAME_HGR.BAS RECT.BAS SNOWY.BAS EDGAR.BAS OOPS4.BAS OOPS3.BAS \ + HORROR.BAS # cp $(EMPTY_DISK)/empty.dsk appleiibot.dsk cp empty.dsk appleiibot.dsk $(DOS33) -y appleiibot.dsk BSAVE -a 0x0300 LOAD @@ -110,6 +111,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \ $(DOS33) -y appleiibot.dsk SAVE A EDGAR.BAS $(DOS33) -y appleiibot.dsk SAVE A OOPS4.BAS $(DOS33) -y appleiibot.dsk SAVE A OOPS3.BAS + $(DOS33) -y appleiibot.dsk SAVE A HORROR.BAS #### @@ -621,5 +623,10 @@ FLAME_HGR.BAS: flame_hgr.bas #### +HORROR.BAS: horror.bas + $(TOKENIZE) < horror.bas > HORROR.BAS + +#### + clean: rm -f *~ *.o *.lst convert_to convert_from convert_qkumba convert_vmw make_boxes convert_back convert_tgreene LOAD *.BAS diff --git a/basic/appleiibot/horror.bas b/basic/appleiibot/horror.bas new file mode 100644 index 00000000..755993f4 --- /dev/null +++ b/basic/appleiibot/horror.bas @@ -0,0 +1,2 @@ +1FORI=0TO134:POKE1013+I,4*PEEK(2126+I)-204+(PEEK(2261+I/3)-35)/4^(I-INT(I/3)*3):NEXT +2&"/fo]UTjTrY2TjSqZ3AhqleQq_8lcYpY404WCZ+V)(5-8Z@*5XLY<9L$P=3&/CDuK`xFA{oDQ3FUP1VkZ3 zdLZ;FNIOVVn)LR7_jo_gdT%k#>^*yS`@Z?kT|4)FnLT@E)>{AdpFVq^Z*Fke##2xF z_jMfq59R;U|M!2YNplmLG-+X;&oR@a@&Dry<3Arynk4_m@4mUt#`}EoEG;BbKS}$s zU4}s32u#XbJ=4w*_}DmVB*+~B<7n<4GX0FB#(~@sFplQ#A=A$|Y8=QN0pn=y9y0xm zqsD>U5ipMC?jh69IBFco9RcHL?jADzjHAYZ+z~L2=I$ZW&p2uv$Q=RWXzm^|{fwi= zf!q-=j^^$m)6Y0+9LOC3<7n<4GX0FB#(~@sFplQ#A=A$|Y8=QN0pn=y9y0xmqsD>U z5ipMC?jh69IBFco9RcHL?jADzjHAYZ+z~L2=I$ZW&p2uv$Q=RWXzm^|{fwi=f!q-= zj^^$m)6Y0+9LOC3<7n<4GX0FB#(~@sFplQ#A=A$|Y8=QN0pn=y9y0xmqsD>U5ipMC z?jh69IBFco9RcHL?jADzjHAYZ+z~L2=I$ZWuXm3APuG{{v%1B5*|}{~LV8|TZrxmx zUQ0;NPD;%sfm(Sh6MKdCblWdSD~)WB;O)2He)ZK?pC7*neDJ{swF)7-Stuf6tKGV+Ti#AxC10D3<5*kfqUFS)QK zo?f1cv1CCms$wr;xSEn3yU327Vkv-;Juz>JZlv+Z)YI)SIjSb5BLeQY`Q(#No-}@) zaKZ`7l@zzp8sVp-k3L$m^Gj*z9L42$TJll|qM;6D#zpf~$t@BqvnU{FOBQ}1=}!h0sK8k%(zzq2Z@K?7jEigi$y} zA~cdFpDbiVC?%xiRsKl;#BdY8g>LGVnp*g9IEs^KlcdK?X^I3dlva+OamE?6EBuNJ z0g=XG zpAF%Jqh;d4c+!&#hanoqpaaaS6s;z!wkhqXMpg0i+l;0}U#8dD3wawAFOaTJzF>k`7}X4Ejr#OvhZB8(%c zGbz$3gzTsaza=}4Cq@e|3sAUJ%UT?zG;+DxB9yw(pdD3hL60)a^mOCV8Ds=r$xay2 z9#Gs4;2Hu)feBBG!}z6b01ixbF)9p`#^b1Zy)H+o7}OJ*^AwV)GNhLl6t|%^R*=2Y z>!?i{@~XBeZ6QL*B^;$0lTi)7v~7S8hfAJnJ4!38wNY(}2Lx&=A)+ysiI-GJPcF9u zxCYHpfd(hxGpeQ#G|^|kp&X?#!{ySXQAj#Rr3oi545MK{blh9=6w%5UnQ!5B87)+n zAbHzxl!}4cI{2=v(nv&Y<*1BDfv8edg+g=&ZK#Qx_?7lsN_LYG)AuzTj$$NuVK!GS z;FO~fg-g02{6`@mrP!4P@RM*9w<*ag8$wE>aF?Tu(vXhx5?eL$w&5t^sExu=^ar%K zvGPIog^k5ZLCIZ04Eo}g(x9t0N2nsDvlQm%P8f=lUPY6?4%cy77+w_>ZK2F z$u7MoZo}oQ3`iFiru1Sc91(b0h$7NObY=CByl|BEo{aofW)bN~L_LuuztjpDV5Are zx5QZ1p2$dJOlhz!C9j%KV!bp{1Nx}fz%V(grX~ge0`IzRQ=cW4Kz5I3c#&qQu#s@f z6d#b1>_QhBHo_F>CMyh+mv|V1=Fpno#2Q5|7>OWi6j!=LQ3E=nA-R<0DQ$3}31yMJ zQd0{bC60m=-i0W%NjQ&-08L{Vf?>Ry9shCF>i*p9h=v4+P$=U8*o@|g<2OAQB3xr7 zZ)jIxjA|>E0+$$zo`vZfM8-|->S@0m?GO${(6e0Q(*te^>A6VhW>nL>$X;*TXe)}< zDxorQuf}TOy>nD0S-=ozhJbOj8E%$qa0nPj2ZyyuYKDMuv>9%eYj6k{M+b+sNot0G zakLq3mTPbb7)J+(wMlA*fN``LZkB6s2pC5PhqXy+hJbOj8E%$qa0qvOhmL(ku0>;syz-~foAW+OvjkSOwkPia?F&@oFEz`shPy~#l z3WWtSMZh?ksbfqnMZh?!P*@;S1dOAZI>yve1dO8!g#|K2z&M(zV@xeYz&NT-jH3#L1u{jzIGU+rOf5ygII2)sAX5a4qnSF!)KUbDqY8xuGDW~RnyF(< zEk(dMs!&)UQv{5onL5VQQUr{n3WWtSMZh?ksbfqnMZh?!P*@;S1dOAZI>yve1dO8! zg#|K2z&M(zV@xeYz&NT-jH3#L1u{jzIGU+rOf5ygII2)sAX5a4 zqnSF!)KUbDqY8xuGDW~RnyF(yve1bmKqf15$`Nt zjH45PhcOea530iI>cymZBkqZ5FK zF%#0MkZnriXw1PA;90iJOIOS|IsteXGa;P{*`_p(#vD8Wo@L9tbj3!Squ4nCXw;Pn z>0TeLl*ZAn7&82FMvHmr+8RfP&#kUBNcZ}1Q~uZZg$_60eDhmxz4g*dFMasohyOi( z6)I*N?TR78FQ?GKSw+6{&O2|v{r1*dZ~fWNesXPj}yQAZv1^wUoZ zh@Q^I(cyEeD-Ar?=5q@#UwiGfS6_W~%PqH@ZMNB_pMLtOrkYAP>i&N9t6zQWvB$2v z?z%VMeDmFR-~H&LkHiGyXjcpwemVJ&QZ<2>|M^L*VG&|NeKHaR$g8g4nH_ zN4m5QQEgTfvmabMHa51&CY#JU>#SuIjK`mH$|;mnyRXM{&6M_XU3~GyPd)Y2`|rQ+ z#kaW~X;yWvd>bTN=7pV`Zn|k>Y6@`=I_RJ~@4S=o>jxivz(ikE5|m2M;nQgEwbx#k zU3M87z%5xLXk*MxH{HZ?Lz@!3yq&vwbPL2;D6jaaAsW+P;EF4*_|liYH1o_ePd)Y2 z@n*8@DHA5R;p(s2iXo*Og_Ij^xFO~K@|VA4cmct6wxvbX3T(ICcBh?oTA?bn%F)E? z2@BkE%PllNAr6XFPXQ!uzy0>J&pvzIai`1I-~RTuue|a~p@w2nDM!ge3o2zTx7>16 z7e=z=DJ&}`@}Y+wT6EDx*IaYWKmYm9Iw(%bSe7PqiN$ybltI^3{I%C!yY|{^&oav_ z(@s0BOS|;&0S6o)U3{TRVor>sWMheSrIl8iamE?H_r34^{`bFc*`V&R#~x^pTC!$a zs8)KU=MTFL5l9EKK}v1H(i!Qc+;`u7pL_1PNEe;NQ4)ELIjnv8<(G+XVAYE+z9?EQ zx#W^3pM3Je4?oN#u0c7HC3K0!cnCDcwlX6V@UMUU>mKLo-bye3-h1zr4I{;ziguJl zlP6D}XP$XJ{pnB34#E8M&%fDbn+d}xz3yD z0?!|I8zK;b)=3P4_Sq$(#s)b=n{(&1Zu(9An{ncbx>S? z#1Ti}aW?U3LED}w5t~ms>7*4_Sbo%B-bgHr< z8M-e$M!R2aM0L^LvqGSY_4R-G%U{w3a~j~Hi!S2y3hPRhd!8)jFS5uYpZUyZ!n(M| z8fzSO*kKG-o_OL3_6|f#PxTybm3h=mtY)}!_St7MZrNs=ZPr<59hTVUo_p@4mtOiC z-}nY$VyJ$M<9FF*7t%1A$3SXhT|*dFv9yBdx*0o3kKFddP)_2d>n|V|bChTBY?)=2 zN$04hlr{fKJu1gEKmPHLFS+Cre9y($Mc1h7!dXDKeCsL>qqDC#v+b7nOA`L8+EYww+o^(yb%u}Mp}xchBGPd_WVO!It!UI%`{WvwR%zeSHJodvzNFa_o?`?l%waLfBqN0_{Bt^ z3zN}nA9&z_aGgO6-j%_Js{t$djJ^x=Mj{zhFc{crr=8#mEj`B#VIi#=9Vn4E-gqPa zW5jd(@yFv)M$#0;@o)AZ2*C10LWrIurW#NbqwNzdri`Z{$>91z3oR5Wt&>Moq{=oPWzgIc$1*b&GSM8*y7XJh zcb5x29nxN>-QcnO_9Wd`X!f0O;&Zo5qdwF#Vc)>({1 z-Sf*X2g<_Zc$9PW)KgELZ@&53sO9D5tt+ib>Injz%VO-yO9BkZy)3=n7Sa@bAZTHW z)vGd6_=Oi<$ap$DWs6oUY(*4cT+TR8Q7vkm3hy(=bp&D@i;CGp8oWwKmGjYKTk$BsJw-Y@JK*|^6O@C57+_+Ri$nTou}t8r0Y4f zV#Jvu1s=10;^u7}MkwnfE3UX=;Rbk$GMa|>=qat4CS>F)_SR+()QpMLu32xUCi zrjX9_s%z1W$$NVFV90vkGtWE|cYoPa_7^)OD1E}Ck3L!^t1`Ztqa2+|ho)9aX3b>_ znYuy6KH=BC_BGC})+)JKVs-&I7Sk+mf4Nxhz)9%VKmB~wcgmLBv|GV_kwB9WW5*H(&KktH&lUM11Nvxl~=MhB1b3$ zYx%9UHNg0??nW02XV+hUJ*(wH1rf>&ojOlA!jH%jY%{DF)Lnh`)otFd6y;;%QS2d+ zj1J4rkBaszfWhNE_uLaZ8Q@=f>7@iXxWt+$D@x(GQ*!aj6?K4xCl+`a4xV@3c@IAL zAQCy-&-Q6ET!x;DI!0qjyCrYYxUCnabeUB|eZMgxEQ+uyvR z+TS+V{8W7;ASP6Bl%%o<6*+g!JNz(Aj^Rk5{Hicsdj9pVf2|$2x84M5h39wDXR_^~ z?5YGBNGK=>sQGSyM|ApKi7PBe6+jlNk~HUDGKL(kcSOCe*6LkZumaw*ZeMwr*oDXo z3z*d$CELzB@63i<*?N$iz6mXN#n<~5}~+A4AT)1p$pUw-+z%cAjP!W7>5_7!fBYEWjH#*6fjCEdo*Sfr07Xge90*4i4VrETL4dIe1a zK*yEJQSwknt#v~vt!IPxP)1htl&ybbP9 zA2gxgSG8-wU6>ex(n}WF?nx(2g9Xk)q47vsbVO4X9eA%PJ4?jGjJde^Fm@*M= zJalJx6Org5Mz`SR?I|pK$RZaO%96Gxi-8%PJ8HvGmZ-urJzo08x9lyYfTJiy0+hp5 zgQJusvl)Ho_~$?WIYoprn8Gtw+hU6??!W(jdEYHe zgJR3F(4R!asZaugX+hDGj$TzFz~v#yXNz8V;RTr?mD$x*JV!1)=Qh3-Tk3HXVXQRq z(Ffk7VN@QeG1OGvxnmihgWN1YRBDMfBx8bE7bym>tizR+PqEGRyUWzj^_?<_#3K|o z4D2L7uR|41TXl_@0RTHs%uvgWs*GQ3vBeS(YLZMFrj%h`1V%v;Fl%#^oE%k_-BAwF z(Qy=xI~g9ySNrLPIM=M_TgyJ2f-0<@F1+xjThD7Qw&6?tAm7z1R0swwH$r2P_^u`%ckhO+itrRDif-g5<^j3O*qQ3 z5nZ{wkjaW8dquL+=Dr3%(Lem*59RfF&S_V}O&y?KT^K`plFZPMH@Rpk3d=-RhmB}imnx!>#aN|% z|IYCSPJ1b6l>s(8Lfbi1$)~26t~L04fh!S{aWtmUdvG}2eN-5ZkGn!WD`ODN)sUl< zE_mX_YBy zja;2omgvw`^T`RDTKgC7=7nfNjV+wlR~i^5ki94@#b2CL3ln%T`ci{}(=s3yHRq@| zeB|>X^a!CB!xN}%e$qWj6G+qBxI1P}5QK++HjJK+)=5sAQy$@6A%Rx-lw5tJ;g22s<~P471XiGC1Vv?LYQcdDZ@(Jlad+ALHS|KMN0nFfn9!gkSM)w=c@vbI(1Yk=O%*Z2HOHgsA03w=1VH@QBFE z#L$%PtX7#RiK)q`jV=5_);^BOrKllkq*)1pbz|ru*+*n)T(=v^%UAVaXW7D{o4r;T zOt?DWs7Q6E`5q{AA8a_44fVXlDYxN5u^0nEQ?iF?7*KWrL7lZihcb&4cNe-thh zGgN2JkzRtAl733ykY9E(Y5N;9-YdNDmZbo9&WBvivlXW7JCYOoR27(n4z>8iWM97$ z5_waqR+(O6aYttyrF2>Xbmem+eH?dJSLs4A20%@|*2H>so1>6$k)n7tfJKQj&ph+c zLl0G1Jq2_CsxCo+UaLfzA$%B~lfg(=O=<=7Pu;QGS1V&;Vie=*lA{Qw#PlzSmjM@v zr%PhC#3CH*WbnjzxBW1eliHl_qZ8mmRN>4oqD-?#ZvU>XqUEkt8pEer>Al3@#z=;0 zIW{(iXjP*@fL4i$UF!?t=~Bii+BHWJkIjs1XxO|%`yNcqZaKSo51ko z057JeTc(xlv@zxjoy4)5$kJn|5374r(J($GhI4wn>nrXLHK`lZRXK%n`{Jkyi_D@@ zpqzMVSW=||gS$c`0b*(`i_!|RtU<2Go6zjz%h@YttH&I3jO;?OufaH*y=d=qmYzQO z-1g2yLES5xW?P>Kugv znfgQ$%OkcVw4UToP1SI492JpM=J1rt$&#FcP5|5?ZY8VA56;n#7?TrvUTWv}0*0?-rL%ry9|pVn%y?9bTXuYdh3ZK|tJ zw&6i@RDeM0fIrjhQh~z*gL#?Q6-t=y7{gsEaLc(*FImbhZ6OCF_)K%-HGka%arMbF zJRFXK1$$`hPtd0F;jspXKT;f7n1(SK-7aQ#c&v^|NujJTQs?!`h6b9TIk{Lf=Q|6b zh{PD3a;YZS28PB_K?L!fD`i~}H?vUE-*ifL6KK4VD56=5p+QabXjw8!;AB3pYLq1i zb#jG@jnI~VbVu6!X!)o(oFVX%;wxH*r<5)#8fctcwVFXO$KyxSlirORVPp~Jz+lP4Fx2&(Rf*|OZjSAfXa zezK({4ca{pUkQl6pvQ2Qj2*s2 z;HlB;Eq#l=BOk{n&!?lu(Uv&ku#gZNZ@jU-@DM&7-5A$&+Xv57u#c>pa8}H4G z5Ls#XEcI-aCKGXkG3)Ro&f9={=_&c&nAqiT4At= zX;vSv$=4-QAL(g9S+?WD*=q0T29$vW{5g~ROv9sVYN$D1F*)q8!}_4e5X)pofE6*S z9|xM;ufT@pk4lVkuYjXsgPXz)kBWs6Ju#={7SRy77>edNDQ`H+=0e2k{2#eA^TK{R z>KWsumRm2)$lYQEYpVnM960L#-1wbFqn4%$zErz<^nvCcmhwH?IQ3PLfPT`oOY0goVG3qeU8Z|p^9HEguVrvSZ zfQVmuWcF0swBOVyUS>k!Q8`E-azkm89_WChA}rKqRANMbmZjW-0ZOtq0qE#~AhIAC zC!SogvX#I=QU;eq@;WjHtXPES%pT(eNJ)FoeylpxD|57N)r#~$XB<_LqXn6(EhaF? z>+mzm@=a4$goG6}aKr!}{yi+Op_w_EGnTJP`qb{cD zWa>2~Dsd!5`~A-Ul6y<#UBpH%Jn|e35pU_v#@W$?rBgQg`6Ivl@n${|+PJ8e8AD7) zI%WcLw9FqZ9iNgN(UOcmj>^Xu^fo1L-85xpPQ3Ujh@&aat4owfdfDHPBnTg+XgCF? lF^*1wP9HIojiV#xuqjYo 64? + + lda #0 + sta XX ; XX = 0 + + stx YY ; YY =R (X is R here) + + lda #3 ; D=3-2*R + sec + sbc R + sbc R + sta D + + ; always odd, never zero + + bne do_plots ; bra skip ahead first time through + +circle_loop: + inc XX ; XX=XX+1 + + lda XX ; XX is common both paths + ldy #6 ; default path add 6 + + ; IF D>0 THEN Y=Y-1:D=D+4*(X-Y)+10 + bit D ; check if negative w/o changing A + bmi d_negative + + dec YY ; YY=YY-1 + +d_positive: + ; D=D+4*(XX-YY)+10 + + ; XX is already in A + sec + sbc YY + ldy #10 +d_negative: + ; ELSE D=D+4*(XX)+6 +common_D: + sty DADD + asl + asl + clc + adc DADD + adc D + sta D + +do_plots: + ; setup constants + + lda XX + eor #$FF + sta MINUSXX + inc MINUSXX + + lda YY + eor #$FF + sta MINUSYY + inc MINUSYY + + ; HPLOT CX+X,CY+Y + ; HPLOT CX-X,CY+Y + ; HPLOT CX+X,CY-Y + ; HPLOT CX-X,CY-Y + ; HPLOT CX+Y,CY+X + ; HPLOT CX-Y,CY+X + ; HPLOT CX+Y,CY-X + ; HPLOT CX-Y,CY-X + + lda #3 + sta COUNT +pos_loop: + + ; calc left side + + ; calc X co-ord + + lda COUNT + ora #$1 + eor #$2 + tax +; lda CX + + + lda #128 + clc + adc XX,X + tax + + ; calc y co-ord + + ldx COUNT +; lda CY + lda #96 + clc + adc XX,X + + ldy #0 + + jsr HPLOT0 ; plot at (Y,X), (A) + + + ; calc right side + lda COUNT + and #$2 + eor #$2 + tax + lda XX,X + asl + + ldy #0 + ldx #0 + jsr HLINRL ; plot relative (X,A), (Y) + ; so in our case (0,XX*2),0 + + + dec COUNT + bpl pos_loop + + ; IF YY>=XX THEN 4 + ; equivelant to IF XX 64? + + lda #0 + sta XX ; XX = 0 + + stx YY ; YY =R (X is R here) + + lda #3 ; D=3-2*R + sec + sbc R + sbc R + + ; D is now in A + + ; always odd, never zero + + bne do_plots ; bra skip ahead first time through + +circle_loop: + inc XX ; XX=XX+1 + + lda XX ; XX is common both paths + ldy #6 ; default path add 6 + + ; IF D>0 THEN Y=Y-1:D=D+4*(X-Y)+10 + bit D ; check if negative w/o changing A + bmi d_negative + + dec YY ; YY=YY-1 + +d_positive: + ; D=D+4*(XX-YY)+10 + + ; XX is already in A +; sec ; saves a byte, seems to be OK? + sbc YY + ldy #10 +d_negative: + ; ELSE D=D+4*(XX)+6 +common_D: + sty DADD + asl + asl + clc + adc DADD + adc D + +do_plots: + ; D is always in A here + + sta D + + ; setup plus/minus XX/YY + + ldx #2 +plus_minus_loop: + lda XX,X + eor #$FF + sta MINUSXX,X + inc MINUSXX,X + dex + dex + bpl plus_minus_loop + + ; HPLOT CX+X,CY+Y + ; HPLOT CX-X,CY+Y + ; HPLOT CX+X,CY-Y + ; HPLOT CX-X,CY-Y + ; HPLOT CX+Y,CY+X + ; HPLOT CX-Y,CY+X + ; HPLOT CX+Y,CY-X + ; HPLOT CX-Y,CY-X + + ldx #3 + +pos_loop: + ; calc left side + + ; COUNT already in X here + + stx COUNT + + ; calc y co-ord + + lda #96 ; center around y=96 + clc + adc XX,X ; index with COUNT + tay ; save for later + + ; calc x co-ord + + txa ; get count + ora #$1 ; generate pattern + eor #$2 ; ??? + tax ; offset in array + + lda #128 ; center around x=128 + clc + adc XX,X + + tax + + tya ; restore Y co-ordinate + ldy #0 ; always 0 + + jsr HPLOT0 ; plot at (Y,X), (A) + + + ; calc right side + lda COUNT + and #$2 + eor #$2 + tax + lda XX,X + asl + + ldy #0 + ldx #0 + jsr HLINRL ; plot relative (X,A), (Y) + ; so in our case (0,XX*2),0 + + ; X/A/Y saved to zero page + ; X/Y were zero + ldx COUNT + dex ; decrement count + + bpl pos_loop + + + ; IF YY>=XX THEN 4 + ; should be equivelant to IF XX