Ab, Sgn, Hstick, Vstick, Frame, Box, Circle w Action!
Artykuł pod tytułem „Pożyteczne procedury” autorstwa Wojciecha Zientary opublikowany został w Bajtku numer 12/88 na stronie 5.
W artykule opisano kilka prostych procedur przydatnych chociażby przy konwersji programów z języka Basic.
int func Abs (int K)
if k<0 then return(-k) fi
return(k)
int func Sgn (int K)
if k<0 then return(-1)
elseif k>0 then return(1)
fi
return(k)
int func Hstick (byte joy)
byte array port(2)=$278
if port(joy)<8 then return(1)
elseif port(joy)>12 then return(0) fi
return(-1)
int func Vstick (byte joy)
byte array port(2)=$278
byte i
i=port(joy)&3
if i=1 then return(1)
elseif i=3 then return(0) fi
return(-1)
proc Frame (card x1 byte y1 card x2 byte y2,c)
color=c Plot(x1,y1)
Drawto(x2,y1) Drawto(x2,y2)
Drawto(x1,y2) Drawto(x1,y1)
return
proc Box (card x1 byte ya card x2 byte y2,c,f)
card aux
byte fcolor=$2FD
color=c fcolor=f
if x1>x2 then aux=x1 x1=x2 x2=aux fi
Plot(x1,y1) Drawto(x2,y1)
Drawto(x2,y2) Drawto (x1,y2)
if x1<>x2 then Fill(x1,y1) fi
return
proc Circle (card sx byte sy, r, c)
int dx,dy,dxy,pdx,pdy
color=c
dx=0 pdx=r pdy=0
do
dy=dx+pdy+pdy+1
dxy=dy-pdx-pdx+1
Plot(sx+pdx,sy+pdy)
Plot(sx-pdx,sy+pdy)
Plot(sx+pdx,sy-pdy)
Plot(sx-pdx,sy-pdy)
Plot(sx+pdy,sy+pdx)
Plot(sx-pdy,sy+pdx)
Plot(sx+pdy,sy-pdx)
Plot(sx-pdy,sy-pdx)
dx=dy pdy==+1
if Abs(dxy)+0<Abs(dy) then dx=dxy pdx==-1 fi
until pdy>pdx
od
return