ô > Graphics 1ô Test various VDU driver graphics operations : (bbfw%=(¦-256 € &DB)=&53 2&: :gap$=½3+½6+½7+½11+½14+½17 <)ç bbfw%:gap$=½3+½6+½7+½20+½21+½28+½29 Fã M%=0 ¸ 31 Pç M%=3 „ M%=6:M%=M%+1 Zç M%=7:M%=M%+1 d÷ nã R%=0 ¸ 7 xë M%:ñ:ï8:txW%=±+1 ‚õ:txH%=¼+1:ñ:ýtxH%=¼+1:Û Œï23,1,0;0;0;0; –;gap%=§gap$,½M%)<>0 € txH%<30:ç bbfw%:gap%=§gap$,½M%)<>0  $gfH%=txH%*(8-2*gap%):gfW%=txW%*8 ª(gfY%=gfH%:õ:gfY%=gfY%*2:ý gfY%>=&300 ´(gfX%=gfW%:õ:gfX%=gfX%*2:ý gfX%>=&400 ¾ô Doesn't work for MODE 22 È<ç bbfw%:gfY%=gfH%*4:gfX%=gfW%:õ:gfX%=gfX%*2:ý gfX%>=gfY% Ò: Ü$ñŠtxW%/2-3+(M%>99),1);"MODE ";M% æ/ñŠtxW%/2-9,2);txW%;" x ";txH%;" characters" ðHñŠtxW%/2-9-©ÃgfW%,3);gfW%;" x ";gfH%;" physical ";À"pixels",txW%>20) úGñŠtxW%/2-9-©ÃgfX%,4);gfX%;" x ";gfY%;" logical ";À"pixels",txW%>20) ó A$:ñŠ(txW%-©A$)/2+0,5);A$ ì 0,0:æ 0,7:ã A%=1 ¸ 7 !x%=»Á"1100101",A%,1)*(gfX%-1) "!y%=»Á"0110110",A%,1)*(gfY%-1) ,ß x%,y%:í A% 6ã K%=1 ¸ 10 @6æ 0,³(7):x%=³(1280):y%=³(1024):w%=³(256):h%=³(320) J/ç R%=0:ì x%,y%:ì ³(1280),³(1024):ð 85,w%,h% Tç R%=1:òcircle(x%,y%,w%,1) ^ç R%=2:ì x%,y%:ð 153,w%,0 hç R%=3:òcircle(x%,y%,w%,0) rç R%=4:ì x%,y%:ð 145,w%,0 |<ç R%=5:ì x%,y%:ì x%+w%,y%:ð 85,x%,y%+h%:ð 85,x%+w%,y%+h% †$ç R%=6:ì x%,y%:ð 101,x%+w%,y%+h% Jç R%=7:ì x%,y%:ð 13,x%+w%,y%:ð 13,x%+w%,y%+h%:ð 13,x%,y%+h%:ð 13,x%,y% šç ¦(50)>-1:K%=10 ¤í K% ®í R% ¸í M% Âà ÌÜ Native Triangles Ö1Ü Manual filled circles,Native filled circles à3Ü Manual outline circles,Native outline circles ê7Ü Manual filled rectangles,Native filled rectangles ôÜ Outline rectangles þ: *ô > BLib.Graphic.Circle 1.01 22May1986 0ô v1.00 15Apr1985 Code from Econet front end *ô v1.01 22May1986 Optimised MOVE/PLOTs &: 0:Ýòcircle(x%,y%,r%,f%):ô X posn, Y posn, Radius, Filled :ê step,s,c,xp,yp,xr,s%,k% DBk%=13+72*(f%€1) :ô PLOT action 13 (line) or 85 (triangle) N/step=(2*¯/90)+50 :ô Length of each arc XCs=-0.194423088762 :ô s=SINstep :REM Precalculate sin of step bFc=0.9809177653 :ô c=COSstep :REM Precalculate cosine of step l2xp=r%:yp=0 :ô Set initial position v8ì x%+r%,y% :ô Move to initial point on edge €4ã s%=1 ¸ 31 :ô We'll do 31 segments here Š:xr=xp*c-yp*s :ô Calculate next point on edge ”yp=xp*s+yp*c ž xp=xr ¨:ç f%:ì x%,y% :ô If filled, extra point at centre ²3ð k%,x%+xp,y%+yp :ô Draw a line or a segment ¼$í :ô And again Æ8ç f%:ì x%,y% :ô Do final segment back to start Ðð k%,x%+r%,y% Úá ÿ