More samples by Golden Child

This commit is contained in:
Joshua Bell 2020-01-29 21:31:02 -08:00
parent 77b7882b12
commit 6c42af4b39
3 changed files with 329 additions and 0 deletions

View File

@ -109,6 +109,8 @@ By <a target=_blank href="mailto:inexorabletash@gmail.com">Joshua Bell</a>
<option value="sample.dbpendulum">&nbsp; Double-Buffered Physics Pendulum Simulation (Golden Child)</option>
<option value="sample.dbvectorship">&nbsp; Double-Buffered Asteroids Ship Demo (Golden Child)</option>
<option value="sample.dbvectortext">&nbsp; Double-Buffered Vector Font (Golden Child)</option>
<option value="sample.stellar7">&nbsp; STELLAR 7 Rotate 3d Objects (Golden Child)</option>
<option value="sample.functiongraphing">&nbsp; Function Graphing (Golden Child)</option>
<option disabled>____________________________________________</option>
<option disabled>Other</option>

View File

@ -0,0 +1,52 @@
10 rem Function Graphing
20 rem by Golden Child
25 rem
30 rem Use Basic as your graphing calculator
31 rem
35 rem To graph a function, have a loop that iterates over every x on screen
36 rem calculate the x coordinate from the x screen coordinate
37 rem calculate y (your function value), set color and gosub 500
38 rem
40 rem for sx=0 to wx-1 : rem for screenx = 0 to 279
50 rem x=(sx-cx)/(wx/2)*rx : rem calculate x for screenx
60 rem y = x^2 : rem calculate y (here we calc x^2)
70 rem hcolor=1:gosub 500 : rem set color and draw
80 rem next sx
90 hgr
100 wx=280:wy=140 : rem windowx windowy (screen size)
120 cx=wx/2:cy=wy/2 : rem centerx centery (screen center point)
130 hcolor=6:hplot cx,cy : rem draw centerpoint
140 rx=4:ry=rx/2 : rem rangex and rangey
141 gx=1:gy=gx : rem gridx and gridy spacing
142 for x=int(-rx) to int(rx) step gx : rem draw grid
143 for y=int(-ry) to int(ry) step gy
144 sx=cx+x*(wx/2)/rx:hcolor=6:gosub 500 : ? x,y
145 next:next
150 for sx=0 to wx-1 : rem for screenx = 0 to 279
160 x=(sx-cx)/(wx/2)*rx : rem calculate x for screenx
200 y = x^2 : rem calculate y
201 hcolor=1:gosub 500 : rem set hcolor, gosub 500 (calculate screeny and plot)
205 y = sin(x*2) : rem can draw as many functions as you like
260 hcolor=3:gosub 500 : rem just calc y, set hcolor, gosub 500
265 y=sin(x*3)
270 hcolor=2:gosub 500
271 y=0:hcolor=5:gosub 500 : rem draw x axis, set y=0, gosub 500
272 if (4-x^2)>=0 then y=sqr(4-x^2):gosub 500: y=-sqr(4-x^2):gosub 500:rem circle
273 rem tangent line to x^2 at x=1 : derivative=2x so slope = m = 2x
274 rem manually calculated formula for tangent line at x=1
275 y=1+(x-1)*(2) : gosub 500
276 rem calculating tangent line from x1 coordinate
277 x1=-1 : y1=x1^2 : m=2*x1 : y=y1 + (x-x1)*m : hcolor=1:gosub 500
400 next sx
499 print "end" : END
500 sy=cy-y*(wy/2)/ry : rem calculate screeny
505 print sx,sy
510 if sy>=0 and sy<=159 and sx>=0 and sx<=279 then hplot sx,sy
520 return

275
samples/sample.stellar7.txt Normal file
View File

@ -0,0 +1,275 @@
1 rem STELLAR 7 Rotate 3d Objects (3d objects extracted from Stellar 7)
2 rem Double Buffering demo
3 rem by Golden Child
4 rem press any key to advance to next object
5 rem you may need to click on the window to set the keyboard focus
10 GOSUB 9000
20 gosub 8000
25 gosub 6000
26 goto 25
30 end
5000 rem init display list : rem SC = screen to draw
5001 IF NOT (dk) then dim dl(2,100,5) : dk=1
5002 hgr2:hgr
5003 SC=0 : DL(0,0,0)=0 : DL(1,0,0)=0 :gosub 5500: rem DL(X,0,0) = NUM OF POINTS
5004 return
5100 rem draw line on other screen
5110 poke 230,(SC+1) * 32
5111 if not(x1>=0 and x1 <=279 and x2 >=0 and x2<=279 and y1>=0 and y1 <=159 and y2>=0 and y2<=159) then return
5120 SP = DL(SC,0,0) + 1 : DL(SC,0,0)=SP : rem ? sp
5130 DL(SC,SP,0)=CO
5131 DL(SC,SP,1)=X1
5132 DL(SC,SP,2)=Y1
5133 DL(SC,SP,3)=X2
5134 DL(SC,SP,4)=Y2
5140 HCOLOR=CO : HPLOT X1,Y1 TO X2,Y2
5190 RETURN
5400 rem erase lines
5410 for SP = 1 TO DL(SC,0,0) : HCOLOR=0
5411 HPLOT DL(SC,SP,1),DL(SC,SP,2) TO DL(SC,SP,3),DL(SC,SP,4) : NEXT
5412 DL(SC,0,0)=0 : rem clear the list after erasing
5420 RETURN
5500 rem swap screens
5510 SC = NOT SC
5511 POKE 49236+(NOT SC),0 : rem select visible page that we're not drawing to
5515 poke 230,32*(sc+1):gosub 5400 : rem switch drawing page and erase lines
5520 RETURN
6000 GOSUB 5000: hgr:o=7:pi=3.14 : rem didn't initialize the value of pi DIDN"T work!!!
6001 FOR O=1 to p(0,0,0,0) : if p(o,1,0,0)=0 then next
6004 ss=15
6005 FOR A=0 TO 360 -ss STEP ss : ? "object="o" rot="A
6010 for nl=1 to p(o,2,0,0)
6020 p1=p(o,2,nl,1)+1
6022 p2=p(o,2,nl,2)+1 : rem add 1 since starts at 1
6025 REM ? p1,p2
6031 r1=p(o,1,p1,1)
6032 t1=p(o,1,p1,2)
6033 z1=p(o,1,p1,3)
6035 REM ? "r1= "r1" t1=" t1" z1= "z1
6041 r2=p(o,1,p2,1)
6042 t2=p(o,1,p2,2)
6043 z2=p(o,1,p2,3)
6045 REM ? "r2= "r2" t2=" t2" z2= "z2
6046 r0=180/180*pi : R0=A/180*PI
6050 x1=cos(t1/128*pi+r0)*r1:REM ?"t1="t1" t1rad="t1/128*pi"
6051 y1=sin(t1/128*pi+r0)*r1
6052 if z1>127 then z1=z1-256 : rem handle negative Z number
6053 z1=z1*1
6055 REM ?"x1="x1" y1="y1" z1="z1
6060 x2=cos(t2/128*pi+r0)*r2
6061 y2=sin(t2/128*pi+r0)*r2
6062 if z2>127 then z2=z2-256 : rem handle negative Z number
6063 z2=z2*1
6065 REM ?"x2="x2" y2="y2" z2="z2
6099 t5=(90)/180*pi
6100 z5=z1*cos(t5)+y1*sin(t5)
6110 y5=y1*cos(t5)-z1*sin(t5)
6120 z1=z5:y1=y5
6130 z5=z2*cos(t5)+y2*sin(t5)
6140 y5=y2*cos(t5)-z2*sin(t5)
6150 z2=z5:y2=y5
6299 t6=(90+90+90)/180*pi
6300 z5=z1*cos(t6)+x1*sin(t6)
6310 x5=x1*cos(t6)-z1*sin(t6)
6320 z1=z5:x1=x5
6330 z5=z2*cos(t6)+x2*sin(t6)
6340 x5=x2*cos(t6)-z2*sin(t6)
6350 z2=z5:x2=x5
7000 d=250 : rem d=50 :zo=150 too much distortion d=100,zo=200 better
7010 zo=400:x9=139:y9=79:xo=139:yo=79:
7020 xs=x1 * (d/(zo+z1)) + x9
7030 ys=y1 * (d/(zo+z1)) + y9
7040 xt=x2 * (d/(zo+z2)) + x9
7050 yt=y2 * (d/(zo+z2)) + y9
7060 if xs>0 and xs<279 and ys>0 and ys<191 and xt>0 and xt<279 and yt>0 and yt<191 then hcolor=3:hplot xs,ys to xt,yt :
7060 x1=xs:y1=ys:x2=xt:y2=yt:co=3:GOSUB 5100
7061 REM ? "xs="xs" ys="ys" xt=" xt" yt=" yt
7070 next : GOSUB 5500: if peek(49152)>128 and o<64 then o=o+1 : poke 49168,0
7071 NEXT : next
7072 if peek(49152)>128 then return
7075 goto 6001
7080 return
8000 rem print list of points
8010 no=p(0,0,0,0) : rem numobjects
8015 for o = 1 to no : ? "OBJECT "o
8020 for np = 1 to p(o,1,0,0)
8025 print "POINT "np" R="p(o,1,np,1)" THETA="p(o,1,np,2)" Z="p(o,1,np,3)
8030 next
8035 for nl = 1 to p(o,2,0,0)
8040 print "LINE "nl" "P(o,2,nl,1)" to "P(o,2,nl,2)
8045 next nl
8046 next o
8050 ? "END OBJECT" : ?
8060 return
8990 rem P(objects,points/lines,index,data) 64=num of objects ,item 0=num in list
8991 rem 1,2 1=points 2=lines,
8992 rem index of data item 0=num in list
8993 rem 1,2,3=point,line data
8994 rem p(0,0,0,0)=num of objects
8999 rem -999 = end of points -998 = end of object -997 = end of all objects
9000 if not pd then dim P(64,2,70,3) : pd=1 : rem pd=P defined already
9002 rem trace
9005 read n : ? n
9010 if n=-997 then return
9015 o=n : ? n,o:if o>p(0,0,0,0) then p(0,0,0,0)=o
9016 read n : ? n : rem read point list
9020 if n=-998 then goto 9005
9040 if n=-999 then goto 9060
9045 rem add point
9046 ? o:P(o,1,0,0)=P(o,1,0,0)+1: cp=P(o,1,0,0)
9047 P(o,1,cp,1)=n : read n
9048 P(o,1,cp,2)=n : read n
9049 P(o,1,cp,3)=n
9050 goto 9016 : rem loop and get next point
9060 read n : rem read line list
9062 if n = -998 then goto 9005
9066 P(o,2,0,0)=P(o,2,0,0)+1: cp=P(o,2,0,0)
9067 P(o,2,cp,1)=n : read n : ? cp
9068 P(o,2,cp,2)=n
9070 goto 9060 : rem get next line
10000 rem stellar 7 data is Radius, Theta and Z, followed by a list of vertices to
10001 rem to draw lines between
10050 DATA 7, 85, 44, 216, 85, 84, 216, 111, 167, 216, 111, 217, 216, 125, 47, 231, 125, 81, 231, 125, 166, 231, 125, 218, 231, 103, 171, 251, 103, 213, 251, 76, 42, 237, 76, 86, 237, 94, 174, 251, 94, 210, 251, 67, 173, 30, 67, 211, 30, 13, 192, 11, 29, 64, 252, 21, 22, 4, 21, 106, 4, 124, 64, 11, 124, 64, 252, 125, 58, 4, 125, 70, 4, 90, 192, 251, 90, 192, 40, 90, 192, 60, 125, 192, 60, 125, 192, 40, -999
10051 DATA 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 5, 8, 8, 9, 9, 4, 0, 4, 1, 5, 2, 6, 3, 7, 6, 8, 7, 9, 10, 11, 11, 12, 13, 10, 11, 14, 14, 15, 15, 10, 12, 14, 13, 15, 16, 19, 19, 17, 17, 18, 18, 16, 20, 23, 23, 21, 21, 22, 22, 20, 16, 20, 17, 21, 18, 22, 19, 23, 24, 26, 26, 27, 27, 28, 28, 25, 25, 27, 26, 28, -998
10052 DATA 6, 85, 44, 216, 85, 84, 216, 111, 167, 216, 111, 217, 216, 125, 47, 231, 125, 81, 231, 125, 166, 231, 125, 218, 231, 103, 171, 251, 103, 213, 251, 76, 42, 237, 76, 86, 237, 94, 174, 251, 94, 210, 251, 66, 174, 30, 66, 210, 30, 25, 192, 18, 26, 33, 0, 26, 95, 0, 125, 64, 6, -999
10053 DATA 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 5, 8, 8, 9, 9, 4, 0, 4, 1, 5, 2, 6, 3, 7, 6, 8, 7, 9, 10, 11, 11, 12, 13, 10, 11, 14, 14, 15, 15, 10, 12, 14, 13, 15, 16, 18, 17, 16, 16, 19, 17, 19, 18, 19, 17, 18, -998
10070 DATA 1, 126, 49, 196, 121, 55, 196, 126, 79, 196, 121, 73, 196, 123, 207, 196, 118, 201, 196, 123, 177, 196, 118, 183, 196, 106, 206, 206, 106, 178, 206, 43, 103, 206, 43, 25, 206, 75, 192, 5, 35, 192, 238, 65, 64, 234, 19, 215, 228, 19, 169, 228, -999
10071 DATA 0, 1, 2, 3, 4, 5, 6, 7, 0, 4, 1, 5, 2, 6, 3, 7, 8, 9, 9, 10, 10, 11, 11, 8, 8, 12, 9, 12, 10, 12, 11, 12, 13, 14, 13, 15, 13, 16, 15, 16, 14, 15, 14, 16, -998
10093 DATA 11, 80, 60, 244, 80, 60, 239, 80, 68, 244, 80, 68, 239, 47, 215, 239, 47, 169, 239, 25, 192, 254, 66, 6, 11, 76, 234, 11, 127, 243, 251, 66, 122, 11, 76, 150, 11, 127, 141, 251, -999
10094 DATA 0, 1, 2, 3, 0, 2, 1, 3, 1, 4, 3, 5, 0, 6, 4, 5, 4, 6, 1, 7, 4, 8, 7, 8, 7, 9, 8, 9, 3, 10, 5, 11, 10, 11, 10, 12, 11, 12, 2, 6, 6, 5, -998
10997 DATA 8, 120, 64, 251, 90, 192, 2, 90, 192, 234, 91, 197, 252, 91, 197, 240, 91, 187, 252, 91, 187, 240, 120, 192, 246, 60, 192, 50, 60, 192, 186, 85, 224, 20, 85, 224, 216, 85, 160, 20, 85, 160, 216, -999
10998 DATA 1, 3, 3, 4, 4, 2, 2, 6, 6, 5, 5, 1, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 7, 1, 7, 2, 7, 3, 7, 4, 7, 5, 7, 6, 8, 10, 10, 11, 11, 9, 9, 13, 13, 12, 12, 8, 1, 8, 2, 9, 3, 10, 4, 11, 5, 12, 6, 13, -998
11010 DATA 2, 100, 38, 196, 100, 90, 196, 100, 166, 196, 100, 218, 196, 125, 38, 226, 125, 90, 226, 125, 166, 226, 125, 218, 226, 64, 27, 241, 64, 101, 241, 78, 164, 241, 78, 220, 241, 29, 22, 20, 29, 106, 20, 51, 171, 20, 51, 213, 20, 125, 64, 3, 22, 64, 10, 34, 44, 252, 34, 84, 252, -999
11011 DATA 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 8, 9, 9, 10, 10, 11, 11, 8, 12, 13, 13, 14, 14, 15, 15, 12, 0, 4, 1, 5, 2, 6, 3, 7, 4, 8, 5, 9, 6, 10, 7, 11, 8, 12, 9, 13, 10, 14, 11, 15, 16, 17, 16, 18, 16, 19, 17, 18, 18, 19, 19, 17, -998
11012 DATA 3, 70, 64, 226, 60, 128, 226, 80, 192, 226, 60, 0, 226, 50, 64, 211, 40, 128, 241, 40, 128, 211, 60, 192, 241, 60, 192, 211, 40, 0, 241, 40, 0, 211, 27, 80, 15, 27, 48, 15, 45, 60, 251, 49, 61, 246, 45, 68, 251, 49, 67, 246, 100, 62, 251, 100, 62, 246, 100, 66, 251, 100, 66, 246, -999
11013 DATA 0, 1, 1, 2, 2, 3, 3, 0, 4, 6, 6, 8, 8, 10, 10, 4, 5, 7, 7, 9, 9, 5, 11, 12, 0, 4, 1, 6, 2, 8, 3, 10, 1, 5, 2, 7, 3, 9, 5, 11, 9, 12, 0, 11, 0, 12, 13, 17, 15, 19, 14, 18, 16, 20, 17, 19, 18, 20, 17, 18, 19, 20, 13, 15, 14, 16, 13, 14, 15, 16, -998
11014 DATA 4, 55, 97, 196, 55, 31, 196, 99, 209, 196, 99, 175, 196, 90, 91, 231, 90, 37, 231, 125, 211, 231, 125, 173, 231, 88, 175, 20, 88, 209, 20, 121, 68, 3, 121, 68, 247, 121, 60, 3, 121, 60, 247, 28, 177, 3, 19, 87, 247, 28, 207, 3, 19, 41, 247, 91, 199, 6, 91, 199, 80, -999
11015 DATA 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 8, 9, 0, 4, 1, 5, 2, 6, 3, 7, 4, 8, 7, 8, 5, 9, 6, 9, 10, 11, 12, 13, 14, 15, 16, 17, 10, 12, 11, 13, 14, 16, 15, 17, 10, 14, 12, 16, 11, 15, 13, 17, 18, 19, -998
11016 DATA 5, 92, 43, 196, 92, 85, 196, 101, 173, 196, 101, 211, 196, 125, 44, 226, 125, 84, 226, 125, 172, 226, 125, 212, 226, 47, 116, 244, 47, 12, 244, 47, 233, 25, 47, 151, 25, 89, 173, 25, 89, 211, 25, 17, 224, 12, 12, 7, 252, 17, 160, 12, 12, 121, 252, 125, 68, 12, 125, 68, 252, 125, 60, 12, 125, 60, 252, -999
11017 DATA 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7, 5, 8, 8, 6, 8, 9, 9, 7, 9, 4, 9, 10, 8, 11, 6, 12, 7, 13, 10, 11, 11, 12, 12, 13, 13, 10, 14, 15, 16, 17, 18, 19, 20, 21, 14, 16, 16, 18, 18, 20, 20, 14, 15, 17, 17, 19, 19, 21, 21, 15, -998
11022 DATA 9, 125, 64, 13, 125, 64, 253, 126, 58, 5, 126, 70, 5, 24, 192, 13, 24, 192, 253, 30, 218, 5, 30, 166, 5, 92, 221, 5, 125, 192, 5, 92, 163, 5, 70, 192, 67, 70, 192, 45, 70, 192, 221, 70, 192, 199, 122, 231, 5, 122, 153, 5, -999
11023 DATA 0, 2, 2, 1, 1, 3, 3, 0, 4, 6, 6, 5, 5, 7, 7, 4, 0, 4, 2, 6, 3, 7, 1, 5, 6, 8, 8, 9, 9, 10, 10, 7, 12, 4, 12, 8, 12, 9, 12, 10, 13, 5, 13, 8, 13, 9, 13, 10, 11, 12, 13, 14, 15, 8, 16, 10, -998
11030 DATA 10, 90, 0, 236, 90, 64, 236, 90, 128, 236, 90, 192, 236, 125, 0, 236, 125, 64, 236, 125, 128, 236, 125, 192, 236, 0, 0, 50, 0, 0, 30, 0, 0, 196, 0, 0, 176, -999
11031 DATA 0, 1, 1, 2, 2, 3, 3, 0, 0, 4, 1, 5, 2, 6, 3, 7, 9, 0, 9, 1, 9, 2, 9, 3, 10, 0, 10, 1, 10, 2, 10, 3, 8, 9, 10, 11, -998
11032 DATA 12, 125, 64, 241, 90, 192, 231, 106, 178, 10, 106, 206, 10, 127, 165, 10, 127, 219, 10, 20, 128, 0, 20, 0, 0, 80, 192, 35, -999
11033 DATA 0, 1, 0, 2, 0, 3, 1, 3, 4, 5, 6, 7, 2, 8, 3, 8, 6, 8, 7, 8, 1, 2, 4, 6, 5, 7, -998
11040 DATA 13, 106, 32, 60, 106, 32, 196, 106, 96, 60, 106, 96, 196, 106, 224, 60, 106, 224, 196, 106, 160, 60, 106, 160, 196, -999
11041 DATA 0, 1, 2, 3, 4, 5, 6, 7, 0, 2, 4, 6, 1, 3, 5, 7, 0, 4, 2, 6, 1, 5, 3, 7, -998
11038 DATA 14, 36, 32, 14, 36, 32, 242, 36, 96, 14, 36, 96, 242, 36, 160, 14, 36, 160, 242, 36, 224, 14, 36, 224, 242, 72, 32, 40, 72, 32, 216, 72, 96, 40, 72, 96, 216, 72, 160, 40, 72, 160, 216, 72, 224, 40, 72, 224, 216, 0, 0, 38, 0, 0, 218, -999
11039 DATA 0, 1, 2, 3, 4, 5, 6, 7, 0, 2, 2, 4, 4, 6, 6, 0, 1, 3, 3, 5, 5, 7, 7, 1, 0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15, 0, 16, 2, 16, 4, 16, 6, 16, 1, 17, 3, 17, 5, 17, 7, 17, -998
11040 DATA 15, 125, 64, 4, 125, 64, 252, 65, 64, 4, 65, 64, 252, 30, 64, 4, 30, 64, 252, 30, 192, 4, 30, 192, 252, 65, 192, 4, 65, 192, 252, 125, 192, 4, 125, 192, 252, -999
11041 DATA 0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11, -998
11042 DATA 16, 125, 64, 4, 125, 64, 252, 65, 64, 4, 65, 64, 252, 30, 64, 4, 30, 64, 252, 30, 192, 4, 30, 192, 252, 65, 192, 4, 65, 192, 252, 125, 192, 4, 125, 192, 252, -999
11043 DATA 0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11, -998
11044 DATA 17, 125, 64, 4, 125, 64, 252, 65, 64, 4, 65, 64, 252, 30, 64, 4, 30, 64, 252, 30, 192, 4, 30, 192, 252, 65, 192, 4, 65, 192, 252, 125, 192, 4, 125, 192, 252, -999
11045 DATA 0, 2, 1, 3, 4, 6, 5, 7, 8, 10, 9, 11, -998
11046 DATA 18, 36, 216, 15, 36, 216, 241, 36, 168, 15, 36, 168, 241, 60, 64, 0, -999
11047 DATA 0, 1, 2, 3, 0, 2, 1, 3, 0, 4, 1, 4, 2, 4, 3, 4, -998
11048 DATA 19, 36, 216, 15, 36, 216, 241, 36, 168, 15, 36, 168, 241, 60, 64, 0, -999
11049 DATA 0, 1, 2, 3, 0, 2, 1, 3, 0, 4, 1, 4, 2, 4, 3, 4, -998
15020 DATA 23, 125, 32, 40, 125, 32, 196, 125, 96, 40, 125, 96, 196, 125, 160, 40, 125, 160, 196, 125, 224, 40, 125, 224, 196, 60, 32, 226, 60, 96, 226, 60, 160, 226, 60, 224, 226, 0, 0, 125, -999
15021 DATA 0, 2, 2, 4, 4, 6, 6, 0, 1, 3, 3, 5, 5, 7, 7, 1, 0, 8, 1, 8, 2, 9, 3, 9, 4, 10, 5, 10, 6, 11, 7, 11, 8, 9, 9, 10, 10, 11, 11, 8, 0, 12, 2, 12, 4, 12, 6, 12, -998
20014 DATA 20, 45, 192, 30, 45, 192, 226, 64, 224, 0, 64, 160, 0, 60, 64, 0, -999
20015 DATA 0, 2, 2, 1, 1, 3, 3, 0, 4, 0, 4, 1, 4, 2, 4, 3, -998
20016 DATA 21, 36, 216, 15, 36, 216, 241, 36, 168, 15, 36, 168, 241, 60, 64, 0, -999
20017 DATA 0, 1, 2, 3, 0, 2, 1, 3, 0, 4, 1, 4, 2, 4, 3, 4, -998
20018 DATA 22, 106, 32, 90, 106, 32, 196, 106, 96, 90, 106, 96, 196, 106, 224, 90, 106, 224, 196, 106, 160, 90, 106, 160, 196, -999
20019 DATA 0, 1, 2, 3, 4, 5, 6, 7, 0, 2, 4, 6, 1, 3, 5, 7, 0, 4, 2, 6, 1, 5, 3, 7, -998
20020 DATA 24, 0, 0, 120, 0, 0, 156, 25, 32, 30, 25, 32, 246, 25, 96, 30, 25, 96, 246, 25, 160, 30, 25, 160, 246, 25, 224, 30, 25, 224, 246, 113, 32, 10, 113, 96, 10, 113, 160, 10, 113, 224, 10, -999
20021 DATA 0, 2, 0, 4, 0, 6, 0, 8, 1, 3, 1, 5, 1, 7, 1, 9, 2, 4, 4, 6, 6, 8, 2, 8, 3, 5, 5, 7, 7, 9, 9, 3, 10, 11, 11, 12, 12, 13, 13, 10, 2, 10, 4, 11, 6, 12, 8, 13, 3, 10, 5, 11, 7, 12, 9, 13, -998
20022 DATA 31, 8, 21, 247, 8, 21, 235, 8, 85, 247, 8, 85, 235, 8, 149, 247, 8, 149, 235, 8, 213, 247, 8, 213, 235, 12, 53, 241, 12, 117, 241, 12, 181, 241, 12, 245, 241, 0, 21, 251, 0, 21, 231, -999
20023 DATA 0, 5, 1, 4, 2, 7, 3, 6, 8, 10, 9, 11, 12, 13, -998
20024 DATA 32, 20, 21, 1, 20, 21, 225, 20, 85, 1, 20, 85, 225, 20, 149, 1, 20, 149, 225, 20, 213, 1, 20, 213, 225, 28, 53, 241, 28, 117, 241, 28, 181, 241, 28, 245, 241, 0, 21, 7, 0, 21, 219, 8, 21, 247, 8, 21, 235, 8, 85, 247, 8, 85, 235, 8, 149, 247, 8, 149, 235, 8, 213, 247, 8, 213, 235, 12, 53, 241, 12, 117, 241, 12, 181, 241, 12, 245, 241, 0, 21, 251, 0, 21, 231, -999
20025 DATA 0, 14, 1, 15, 2, 16, 3, 17, 4, 18, 5, 19, 6, 20, 7, 21, 8, 22, 9, 23, 10, 24, 11, 25, 12, 26, 13, 27, -998
20026 DATA 33, 31, 21, 10, 31, 21, 216, 31, 85, 10, 31, 85, 216, 31, 149, 10, 31, 149, 216, 31, 213, 10, 31, 213, 216, 44, 53, 241, 44, 117, 241, 44, 181, 241, 44, 245, 241, 0, 21, 20, 0, 21, 206, 20, 21, 1, 20, 21, 225, 20, 85, 1, 20, 85, 225, 20, 149, 1, 20, 149, 225, 20, 213, 1, 20, 213, 225, 28, 53, 241, 28, 117, 241, 28, 181, 241, 28, 245, 241, 0, 21, 7, 0, 21, 219, -999
20027 DATA 0, 14, 1, 15, 2, 16, 3, 17, 4, 18, 5, 19, 6, 20, 7, 21, 8, 22, 9, 23, 10, 24, 11, 25, 12, 26, 13, 27, -998
20028 DATA 34, 42, 21, 19, 42, 21, 207, 42, 85, 19, 42, 85, 207, 42, 149, 19, 42, 149, 207, 42, 213, 19, 42, 213, 207, 60, 53, 241, 60, 117, 241, 60, 181, 241, 60, 245, 241, 0, 21, 33, 0, 21, 193, 31, 21, 10, 31, 21, 216, 31, 85, 10, 31, 85, 216, 31, 149, 10, 31, 149, 216, 31, 213, 10, 31, 213, 216, 44, 53, 241, 44, 117, 241, 44, 181, 241, 44, 245, 241, 0, 21, 20, 0, 21, 206, -999
20029 DATA 0, 14, 1, 15, 2, 16, 3, 17, 4, 18, 5, 19, 6, 20, 7, 21, 8, 22, 9, 23, 10, 24, 11, 25, 12, 26, 13, 27, -998
20030 DATA 35, 54, 21, 28, 54, 21, 198, 54, 85, 28, 54, 85, 198, 54, 149, 28, 54, 149, 198, 54, 213, 28, 54, 213, 198, 76, 53, 241, 76, 117, 241, 76, 181, 241, 76, 245, 241, 0, 21, 46, 0, 21, 180, 42, 21, 19, 42, 21, 207, 42, 85, 19, 42, 85, 207, 42, 149, 19, 42, 149, 207, 42, 213, 19, 42, 213, 207, 60, 53, 241, 60, 117, 241, 60, 181, 241, 60, 245, 241, 0, 21, 33, 0, 21, 193, -999
20031 DATA 0, 14, 1, 15, 2, 16, 3, 17, 4, 18, 5, 19, 6, 20, 7, 21, 8, 22, 9, 23, 10, 24, 11, 25, 12, 26, 13, 27, -998
20032 DATA 36, 65, 21, 37, 65, 21, 189, 65, 85, 37, 65, 85, 189, 65, 149, 37, 65, 149, 189, 65, 213, 37, 65, 213, 189, 92, 53, 241, 92, 117, 241, 92, 181, 241, 92, 245, 241, 0, 21, 59, 0, 21, 167, 54, 21, 28, 54, 21, 198, 54, 85, 28, 54, 85, 198, 54, 149, 28, 54, 149, 198, 54, 213, 28, 54, 213, 198, 76, 53, 241, 76, 117, 241, 76, 181, 241, 76, 245, 241, 0, 21, 46, 0, 21, 180, -999
20033 DATA 0, 14, 1, 15, 2, 16, 3, 17, 4, 18, 5, 19, 6, 20, 7, 21, 8, 22, 9, 23, 10, 24, 11, 25, 12, 26, 13, 27, -998
20034 DATA 37, 76, 21, 46, 76, 21, 180, 76, 85, 46, 76, 85, 180, 76, 149, 46, 76, 149, 180, 76, 213, 46, 76, 213, 180, 108, 53, 241, 108, 117, 241, 108, 181, 241, 108, 245, 241, 0, 21, 71, 0, 21, 155, 65, 21, 37, 65, 21, 189, 65, 85, 37, 65, 85, 189, 65, 149, 37, 65, 149, 189, 65, 213, 37, 65, 213, 189, 92, 53, 241, 92, 117, 241, 92, 181, 241, 92, 245, 241, 0, 21, 59, 0, 21, 167, -999
20035 DATA 0, 14, 1, 15, 2, 16, 3, 17, 4, 18, 5, 19, 6, 20, 7, 21, 8, 22, 9, 23, 10, 24, 11, 25, 12, 26, 13, 27, -998
20036 DATA 38, 88, 21, 55, 88, 21, 171, 88, 85, 55, 88, 85, 171, 88, 149, 55, 88, 149, 171, 88, 213, 55, 88, 213, 171, 124, 53, 241, 124, 117, 241, 124, 181, 241, 124, 245, 241, 0, 21, 84, 0, 21, 142, 76, 21, 46, 76, 21, 180, 76, 85, 46, 76, 85, 180, 76, 149, 46, 76, 149, 180, 76, 213, 46, 76, 213, 180, 108, 53, 241, 108, 117, 241, 108, 181, 241, 108, 245, 241, 0, 21, 71, 0, 21, 155, -999
20037 DATA 0, 14, 1, 15, 2, 16, 3, 17, 4, 18, 5, 19, 6, 20, 7, 21, 8, 22, 9, 23, 10, 24, 11, 25, 12, 26, 13, 27, -998
20038 DATA 41, 48, 170, 12, 48, 170, 244, 48, 214, 12, 48, 214, 244, 48, 192, 24, 48, 192, 232, 0, 128, 0, -999
20039 DATA 0, 6, 1, 6, 2, 6, 3, 6, 4, 6, 5, 6, -998
20040 DATA 42, 59, 170, 15, 59, 170, 241, 59, 214, 15, 59, 214, 241, 59, 192, 30, 59, 192, 226, 11, 170, 2, 11, 170, 254, 11, 214, 2, 11, 214, 254, 11, 192, 5, 11, 192, 251, -999
20041 DATA 0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, -998
20042 DATA 43, 70, 170, 17, 70, 170, 239, 70, 214, 17, 70, 214, 239, 70, 192, 35, 70, 192, 221, 22, 170, 5, 22, 170, 251, 22, 214, 5, 22, 214, 251, 22, 192, 11, 22, 192, 245, -999
20043 DATA 0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, -998
20044 DATA 44, 81, 170, 20, 81, 170, 236, 81, 214, 20, 81, 214, 236, 81, 192, 40, 81, 192, 216, 33, 170, 8, 33, 170, 248, 33, 214, 8, 33, 214, 248, 33, 192, 16, 33, 192, 240, -999
20045 DATA 0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, -998
20046 DATA 45, 92, 170, 23, 92, 170, 233, 92, 214, 23, 92, 214, 233, 92, 192, 46, 92, 192, 210, 44, 170, 11, 44, 170, 245, 44, 214, 11, 44, 214, 245, 44, 192, 22, 44, 192, 234, -999
20047 DATA 0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, -998
20048 DATA 46, 103, 170, 25, 103, 170, 231, 103, 214, 25, 103, 214, 231, 103, 192, 51, 103, 192, 205, 55, 170, 13, 55, 170, 243, 55, 214, 13, 55, 214, 243, 55, 192, 27, 55, 192, 229, -999
20049 DATA 0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, -998
20050 DATA 47, 114, 170, 28, 114, 170, 228, 114, 214, 28, 114, 214, 228, 114, 192, 57, 114, 192, 199, 66, 170, 16, 66, 170, 240, 66, 214, 16, 66, 214, 240, 66, 192, 33, 66, 192, 223, -999
20051 DATA 0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, -998
20052 DATA 48, 125, 170, 31, 125, 170, 225, 125, 214, 31, 125, 214, 225, 125, 192, 62, 125, 192, 194, 77, 170, 19, 77, 170, 237, 77, 214, 19, 77, 214, 237, 77, 192, 38, 77, 192, 218, -999
20053 DATA 0, 6, 1, 7, 2, 8, 3, 9, 4, 10, 5, 11, -998
30090 data -997