; MISC1 (LISTING 2)››MODULE:BYTE st:INT ARRAY › jx=[1 1 1 1 1 2 2 2 1 0 0 0 1 1 1 1]› ,jy=[1 1 1 1 1 2 0 1 1 2 0 1 1 2 0 1]›BYTE ARRAY b=" "››PROC Setjxjy(BYTE i)›FOR i=0 TO 15 DO jx(i)==-1:jy(i)==-1 OD›RETURN››PROC Pb(BYTE i):b(0)=i:Print(b):RETURN››PROC Wait(CARD w,j)›FOR j=0 TO w DO w==+1:w==-1 OD RETURN››; TRIG›MODULE:BYTE ARRAY Si(91)››PROC SetTrig(BYTE t INT y)›FOR t=0 TO 90 DO y=(t*t)/45› y=(y*t)/5:y=100*t-y:y==/45:Si(t)=y›OD RETURN››INT FUNC sin(INT t,y):t==MOD 360›IF t<91 THEN y=Si(t)›ELSEIF t<181 THEN y=Si(180-t)›ELSEIF t<271 THEN y=-Si(t-180)›ELSE y=-Si(360-t) FI RETURN(y)››INT FUNC cos(INT t,y):t==MOD 360›IF t<91 THEN y=Si(90-t)›ELSEIF t<181 THEN y=-Si(t-90)›ELSEIF t<271 THEN y=-Si(270-t)›ELSE y=Si(t-270) FI RETURN(y)››; VECTOR ›INT FUNC ABS(INT x)›IF x<0 THEN x=-x FI RETURN(x)››INT FUNC SQR(INT x):INT y›IF x=0 THEN RETURN(0) FI:x=ABS(x):y=0›DO y==+1:IF y*y+y>x THEN RETURN(y) FI OD››INT FUNC Vdot(INT ARRAY v,w):INT x›x=v(0)*w(0):x==+v(1)*w(1)›x==+v(2)*w(2):RETURN(x)››PROC Vprod(INT ARRAY v,w,u)›u(0)=v(1)*w(2):u(0)==-v(2)*w(1)›u(1)=v(2)*w(0):u(1)==-v(0)*w(2)›u(2)=v(0)*w(1):u(2)==-v(1)*w(0)›RETURN››PROC Normize(INT ARRAY v):INT i,j,s›i=ABS(v(0))›j=ABS(v(1)):IF i100 THEN j=1+i/100› FOR i=0 TO 2 DO v(i)==/j OD›FI›FOR j=0 TO 1 DO s=Vdot(v,v):s=SQR(s)› FOR i=0 TO 2 DO v(i)=v(i)*128/s OD›OD RETURN››