5f3a762271d26546e1dd1121f37dc707a566e86a
[qbasicapps.git] / graphics / 3D / tank1.bas
1 ' Tank\r
2 ' made by Svjatoslav Agejenko\r
3 ' in 2000\r
4 ' H-Page: svjatoslav.eu\r
5 ' E-Mail: svjatoslavagejenko@gmail.com\r
6  \r
7 ' Use keys to move around:\r
8 ' Left, Right, Up, Down   look around\r
9 ' + move fovard\r
10 ' - move back\r
11 ' q quit\r
12 ' <space> - stop\r
13 \r
14 \r
15 DECLARE SUB start ()\r
16 DECLARE SUB savepos (x1%, y1%, x2%, y2%)\r
17 DECLARE SUB teemaad ()\r
18 DECLARE SUB setgus ()\r
19 DECLARE SUB getgus ()\r
20 DECLARE SUB getgus1 (x1%, y1%, x2%, y2%)\r
21 DECLARE SUB kiri ()\r
22 DECLARE SUB getcor ()\r
23 DECLARE SUB mulcor ()\r
24 DECLARE SUB nait3d ()\r
25 DECLARE SUB calcsin ()\r
26 DEFINT A-Y\r
27 DIM SHARED xn(1000), yn(1000), czn(1000) ' original points\r
28 DIM SHARED x(1000), y(1000), cz(1000)    ' Rotated points\r
29 DIM SHARED Xs1(1000), Ys1(1000), Xe1(1000), Ye1(1000) ' Old rotated points\r
30 DIM SHARED pointers1(1000), pointers2(1000)   ' Connected points\r
31 DIM SHARED cosine&(360), sine&(360)    ' SIN & COS table\r
32 DIM SHARED np, nl\r
33 \r
34 DIM SHARED gusx(1 TO 1000)\r
35 DIM SHARED gusy(1 TO 1000)\r
36 DIM SHARED mitgus\r
37 DIM SHARED smes\r
38 \r
39 \r
40 DIM SHARED gusalgp      '   segment\r
41 DIM SHARED gusalgl\r
42 DIM SHARED silalgp      '   segment\r
43 DIM SHARED silalgl\r
44 \r
45 DIM SHARED gusxp\r
46 DIM SHARED myx, myy, myz\r
47 DIM SHARED myxp, myyp, myzp\r
48 \r
49 DIM SHARED deg1, deg2, deg3\r
50 DIM SHARED speed\r
51 \r
52 DIM SHARED ssu\r
53 \r
54 \r
55 start\r
56 \r
57 nait3d\r
58 \r
59  \r
60 \r
61 \r
62 DATA -10,-30,-20\r
63 DATA 30,-30,-20\r
64 DATA 30,-10,-20\r
65 DATA -10,-10,-20\r
66 \r
67 DATA -10,-30,20\r
68 DATA 30,-30,20\r
69 DATA 30,-10,20\r
70 DATA -10,-10,20\r
71 \r
72 DATA -10,-40,-15\r
73 DATA 30,-40,-15\r
74 DATA -10,-40,15\r
75 DATA 30,-40,15\r
76 \r
77 DATA -20,-30,-15\r
78 DATA -20,-30, 15\r
79 \r
80 DATA -70,-10,-50\r
81 DATA 60,-10, -50\r
82 DATA 70,  0, -50\r
83 DATA 70, 20, -50\r
84 DATA 60, 30, -50\r
85 DATA -70,30, -50\r
86 DATA -80,20, -50\r
87 DATA -80, 0, -50\r
88 \r
89 DATA -70,-10,-30\r
90 DATA 60,-10, -30\r
91 DATA 70,  0, -30\r
92 DATA 70, 20, -30\r
93 DATA 60, 30, -30\r
94 DATA -70,30, -30\r
95 DATA -80,20, -30\r
96 DATA -80, 0, -30\r
97 \r
98 DATA -70,-10, 50\r
99 DATA 60,-10,  50\r
100 DATA 70,  0,  50\r
101 DATA 70, 20,  50\r
102 DATA 60, 30,  50\r
103 DATA -70,30,  50\r
104 DATA -80,20,  50\r
105 DATA -80, 0,  50\r
106 \r
107 DATA -70,-10, 30\r
108 DATA 60,-10,  30\r
109 DATA 70,  0,  30\r
110 DATA 70, 20,  30\r
111 DATA 60, 30,  30\r
112 DATA -70,30,  30\r
113 DATA -80,20,  30\r
114 DATA -80, 0,  30\r
115 \r
116 DATA -50,-7,-30\r
117 DATA  50,-7,-30\r
118 DATA  50, 15,-30\r
119 DATA -50, 15,-30\r
120 \r
121 DATA -50,-7, 30\r
122 DATA  50,-7, 30\r
123 DATA  50, 15,30\r
124 DATA -50, 15,30\r
125 \r
126 DATA -20,-20,-5\r
127 DATA -20,-20, 5\r
128 DATA -20,-30, 5\r
129 DATA -20,-30,-5\r
130 \r
131 DATA -100,-30,-5\r
132 DATA -100,-30, 5\r
133 DATA -100,-40, 5\r
134 DATA -100,-40,-5\r
135 \r
136 DATA 999,999,999\r
137 \r
138 DATA 0,1\r
139 DATA 1,2\r
140 DATA 2,3\r
141 DATA 3,0\r
142 \r
143 DATA 4,5\r
144 DATA 5,6\r
145 DATA 6,7\r
146 DATA 7,4\r
147                    \r
148 DATA 0,8\r
149 DATA 1,9\r
150 DATA 4,10\r
151 DATA 5,11\r
152 \r
153 DATA 0,12\r
154 DATA 4,13\r
155 DATA 12,8\r
156 DATA 13,10\r
157 \r
158 DATA 8,9\r
159 DATA 10,11\r
160 DATA 8,10\r
161 DATA 9,11\r
162 \r
163 DATA 12,13\r
164 DATA 12,3\r
165 DATA 13,7\r
166 DATA 3,7\r
167 DATA 1,5\r
168 DATA 2,6\r
169 \r
170 DATA 14,15\r
171 DATA 15,16\r
172 DATA 16,17\r
173 DATA 17,18\r
174 DATA 18,19\r
175 DATA 19,20\r
176 DATA 20,21\r
177 DATA 21,14\r
178 \r
179 DATA 22,23\r
180 DATA 23,24\r
181 DATA 24,25\r
182 DATA 25,26\r
183 DATA 26,27\r
184 DATA 27,28\r
185 DATA 28,29\r
186 DATA 29,22\r
187 \r
188 'DATA 14,22\r
189 'DATA 15,23\r
190 'DATA 16,24\r
191 'DATA 17,25\r
192 'DATA 18,26\r
193 'DATA 19,27\r
194 'DATA 20,28\r
195 'DATA 21,29\r
196 \r
197 DATA 30,31\r
198 DATA 31,32\r
199 DATA 32,33\r
200 DATA 33,34\r
201 DATA 34,35\r
202 DATA 35,36\r
203 DATA 36,37\r
204 DATA 37,30\r
205 \r
206 DATA 38,39\r
207 DATA 39,40\r
208 DATA 40,41\r
209 DATA 41,42\r
210 DATA 42,43\r
211 DATA 43,44\r
212 DATA 44,45\r
213 DATA 45,38\r
214 \r
215 'DATA 30,38\r
216 'DATA 31,39\r
217 'DATA 32,40\r
218 'DATA 33,41\r
219 'DATA 34,42\r
220 'DATA 35,43\r
221 'DATA 36,44\r
222 'DATA 37,45\r
223 \r
224 DATA 46,47\r
225 DATA 47,48\r
226 DATA 48,49\r
227 DATA 49,46\r
228 \r
229 DATA 50,51\r
230 DATA 51,52\r
231 DATA 52,53\r
232 DATA 53,50\r
233 \r
234 DATA 50,46\r
235 DATA 51,47\r
236 DATA 52,48\r
237 DATA 53,49\r
238 \r
239 DATA 54,55\r
240 DATA 55,56\r
241 DATA 56,57\r
242 DATA 57,54\r
243 \r
244 DATA 54,58\r
245 DATA 55,59\r
246 DATA 56,60\r
247 DATA 57,61\r
248 \r
249 DATA 58,59\r
250 DATA 59,60\r
251 DATA 60,61\r
252 DATA 61,58\r
253 \r
254 DATA 54,3\r
255 DATA 55,7\r
256 \r
257 \r
258 'DATA 62,63\r
259 \r
260 DATA 999, 999\r
261 '                                                          S  I  L  D\r
262                                 \r
263                                 \r
264                                 \r
265                                 \r
266                                 \r
267                                 \r
268                                 \r
269                                 \r
270                                 \r
271                                 \r
272                                  '  parempoolsed k�epided\r
273 DATA 100,0,100\r
274 DATA 100,50,100\r
275 \r
276 DATA 50,0,100\r
277 DATA 50,50,100\r
278 \r
279 DATA 0,0,100\r
280 DATA 0,50,100\r
281 \r
282 DATA -50,0,100\r
283 DATA -50,50,100\r
284 \r
285 DATA -100,0,100\r
286 DATA -100,50,100\r
287                        ' 5\r
288 DATA -150,0,100\r
289 DATA -150,50,100\r
290 \r
291 DATA -200,0,100\r
292 DATA -200,50,100\r
293 \r
294 DATA -250,0,100\r
295 DATA -250,50,100\r
296 \r
297 DATA -300,0,100\r
298 DATA -300,50,100\r
299 \r
300 DATA -350,0,100\r
301 DATA -350,50,100\r
302                            ' 10\r
303 \r
304 DATA -400,0,100\r
305 DATA -400,50,100\r
306 \r
307 DATA -450,0,100\r
308 DATA -450,50,100\r
309 \r
310 DATA -500,0,100\r
311 DATA -500,50,100\r
312 \r
313 DATA -550,0,100\r
314 DATA -550,50,100\r
315 \r
316 DATA -600,0,100\r
317 DATA -600,50,100\r
318 \r
319 DATA -650,0,100\r
320 DATA -650,50,100\r
321 \r
322                     '  vasak poolsed k�epided\r
323 DATA 100,0,-100\r
324 DATA 100,50,-100\r
325 \r
326 DATA 50,0,-100\r
327 DATA 50,50,-100\r
328 \r
329 DATA 0,0,-100\r
330 DATA 0,50,-100\r
331 \r
332 DATA -50,0,-100\r
333 DATA -50,50,-100\r
334 \r
335 DATA -100,0,-100\r
336 DATA -100,50,-100\r
337                        ' 5\r
338 DATA -150,0,-100\r
339 DATA -150,50,-100\r
340 \r
341 DATA -200,0,-100\r
342 DATA -200,50,-100\r
343 \r
344 DATA -250,0,-100\r
345 DATA -250,50,-100\r
346 \r
347 DATA -300,0,-100\r
348 DATA -300,50,-100\r
349 \r
350 DATA -350,0,-100\r
351 DATA -350,50,-100\r
352                            ' 10\r
353 \r
354 DATA -400,0,-100\r
355 DATA -400,50,-100\r
356 \r
357 DATA -450,0,-100\r
358 DATA -450,50,-100\r
359 \r
360 DATA -500,0,-100\r
361 DATA -500,50,-100\r
362 \r
363 DATA -550,0,-100\r
364 DATA -550,50,-100\r
365 \r
366 DATA -600,0,-100\r
367 DATA -600,50,-100\r
368 \r
369 DATA -650,0,-100\r
370 DATA -650,50,-100\r
371                 '   alumine joon\r
372 DATA 100,75,-100\r
373 DATA -650,75,-100\r
374 \r
375 DATA 100,75,100\r
376 DATA -650,75,100\r
377                 '  kallas\r
378 DATA 75,75,-100\r
379 DATA 75,75,100\r
380                    'parem\r
381 DATA -50,200,-100\r
382 DATA -50,200,100\r
383 \r
384 DATA  75,200,-190\r
385 DATA  75,200, 190\r
386                    'vasak\r
387 DATA -525,200,-100\r
388 DATA -525,200, 100\r
389 \r
390 DATA -600,200,-190\r
391 DATA -600,200, 190\r
392 \r
393 \r
394 \r
395 \r
396 DATA 999,999,999\r
397 \r
398                  'parempoolesd k�epided\r
399 'DATA 0,1\r
400 DATA 2,3\r
401 DATA 4,5\r
402 DATA 6,7\r
403 DATA 8,9\r
404 \r
405 DATA 10,11\r
406 DATA 12,13\r
407 DATA 14,15\r
408 DATA 16,17\r
409 DATA 18,19\r
410 \r
411 DATA 20,21\r
412 DATA 22,23\r
413 DATA 24,25\r
414 DATA 26,27\r
415 DATA 28,29\r
416 'DATA 30,31\r
417 \r
418                    'vasakpoolsed k�epided\r
419 'DATA 32,33\r
420 DATA 34,35\r
421 DATA 36,37\r
422 DATA 38,39\r
423 DATA 40,41\r
424 \r
425 DATA 42,43\r
426 DATA 44,45\r
427 DATA 46,47\r
428 DATA 48,49\r
429 DATA 50,51\r
430 \r
431 DATA 52,53\r
432 DATA 54,55\r
433 DATA 56,57\r
434 DATA 58,59\r
435 DATA 60,61\r
436 'DATA 62,63\r
437                ' sild ise\r
438 'DATA 0,30\r
439 'DATA 1,31\r
440 'DATA 32,62\r
441 'DATA 33,63\r
442 \r
443 '          pikad\r
444 DATA 0,4\r
445 DATA 4,8\r
446 DATA 8,12\r
447 DATA 12,16\r
448 DATA 16,20\r
449 DATA 20,24\r
450 DATA 24,28\r
451 DATA 28,30\r
452 \r
453 DATA 1,5\r
454 DATA 5,9\r
455 DATA 9,13\r
456 DATA 13,17\r
457 DATA 17,21\r
458 DATA 21,25\r
459 DATA 25,29\r
460 DATA 29,31\r
461 \r
462 DATA 32,36\r
463 DATA 36,40\r
464 DATA 40,44\r
465 DATA 44,48\r
466 DATA 48,52\r
467 DATA 52,56\r
468 DATA 56,60\r
469 DATA 60,62\r
470 \r
471 DATA 33,37\r
472 DATA 37,41\r
473 DATA 41,45\r
474 DATA 45,49\r
475 DATA 49,53\r
476 DATA 53,57\r
477 DATA 57,61\r
478 DATA 61,63\r
479 \r
480 \r
481 \r
482 '  l�pp\r
483 \r
484 DATA 1,33\r
485 DATA 31,63\r
486 \r
487 DATA 64,65\r
488 DATA 66,67\r
489 DATA 64,66\r
490 DATA 65,67\r
491 \r
492 DATA 0,66\r
493 DATA 32,64\r
494 DATA 30,67\r
495 DATA 62,65\r
496             ' kallas\r
497 DATA 68,69\r
498 DATA 70,71\r
499 DATA 68,70\r
500 DATA 69,71\r
501 \r
502 DATA 72,70\r
503 DATA 72,68\r
504 \r
505 DATA 73,71\r
506 DATA 73,69\r
507            'vasak\r
508 DATA 74,76\r
509 DATA 75,77\r
510 DATA 74,75\r
511 \r
512 DATA 74,65\r
513 DATA 76,65\r
514 \r
515 DATA 75,67\r
516 DATA 77,67\r
517 \r
518 \r
519 DATA 999, 999\r
520 \r
521 DEFINT Z\r
522 SUB calcsin\r
523 PRINT "Calculating SIN and COS data..."\r
524 \r
525 FOR a! = 0 TO 359 / 57.29577951# STEP 1 / 57.29577951#\r
526     cosine&(a) = INT(.5 + COS(a!) * 1024)\r
527     sine&(a) = INT(.5 + SIN(a!) * 1024)\r
528     a = a + 1\r
529 NEXT\r
530 CLS\r
531 END SUB\r
532 \r
533 DEFSNG Z\r
534 SUB getcor\r
535 FOR a = 0 TO 10000\r
536     READ x(a), y(a), cz(a)\r
537     IF x(a) = 999 THEN x(a) = 0: y(a) = 0: cz(a) = 0: GOTO 1\r
538 NEXT\r
539 1\r
540 np = a\r
541 FOR a = 0 TO 10000\r
542     READ pointers1(a), pointers2(a)\r
543     IF pointers1(a) = 999 THEN GOTO 2\r
544 NEXT\r
545 2\r
546 nl = a\r
547 \r
548 gusalgp = np\r
549 gusalgl = nl\r
550 \r
551 FOR a = 1 TO 48\r
552 pointers1(nl) = np\r
553 np = np + 1\r
554 pointers2(nl) = np\r
555 np = np + 1\r
556 nl = nl + 1\r
557 NEXT a\r
558 \r
559 \r
560 \r
561 END SUB\r
562 \r
563 DEFINT Z\r
564 SUB getgus\r
565 \r
566 mitgus = 1\r
567 getgus1 -70, -10, -80, 0\r
568 getgus1 -80, 0, -80, 20\r
569 getgus1 -80, 20, -70, 30\r
570 getgus1 -70, 30, 60, 30\r
571 getgus1 60, 30, 70, 20\r
572 getgus1 70, 20, 70, 0\r
573 getgus1 70, 0, 60, -10\r
574 getgus1 60, -10, -70, -10\r
575 'LOCATE 1, 1\r
576 'PRINT mitgus\r
577 'SLEEP\r
578 \r
579 \r
580 END SUB\r
581 \r
582 DEFSNG Z\r
583 SUB getgus1 (x1, y1, x2, y2)\r
584 z1 = ABS(x1 - x2)\r
585 z2 = ABS(y2 - y1)\r
586 mi = SQR(z1 ^ 2 + z2 ^ 2) * 1.017142857#\r
587 \r
588 zxp = (x1 - x2) / mi\r
589 zyp = (y2 - y1) / mi\r
590 zx = x1\r
591 zy = y1\r
592 \r
593 FOR a = 1 TO mi\r
594 zx = zx - zxp\r
595 zy = zy + zyp\r
596 gusx(mitgus) = zx\r
597 gusy(mitgus) = zy\r
598 mitgus = mitgus + 1\r
599 NEXT a\r
600 \r
601 END SUB\r
602 \r
603 DEFINT Z\r
604 SUB moveright\r
605 END SUB\r
606 \r
607 DEFSNG Z\r
608 SUB nait3d\r
609 \r
610 DO\r
611 \r
612 setgus\r
613 \r
614     deg1 = deg1 + d1\r
615     deg2 = deg2 + d2\r
616     deg3 = deg3 + d3\r
617 'LOCATE 1, 1\r
618 'PRINT deg1, deg2, deg3, speed\r
619    \r
620     IF deg1 <= 0 THEN deg1 = deg1 + 360\r
621     IF deg2 <= 0 THEN deg2 = deg2 + 360\r
622     IF deg3 <= 0 THEN deg3 = deg3 + 360\r
623   \r
624     IF deg1 >= 360 THEN deg1 = deg1 - 360\r
625     IF deg2 >= 360 THEN deg2 = deg2 - 360\r
626     IF deg3 >= 360 THEN deg3 = deg3 - 360\r
627 \r
628     c1& = cosine&(deg1): s1& = sine&(deg1)\r
629     c2& = cosine&(deg2): s2& = sine&(deg2)\r
630     c3& = cosine&(deg3): S3& = sine&(deg3)\r
631 \r
632 myx = myx - (s1& * speed / 100)\r
633 myy = myy - (c1& * speed / 100)\r
634 myz = myz - (s2& * speed / 100)\r
635 \r
636 FOR a = 0 TO np - 1\r
637 x1 = x(a) + myx\r
638 y1 = y(a) + myz\r
639 pz1 = cz(a) + myy\r
640        \r
641 x2 = (x1 * c1& - pz1 * s1&) \ 1024\r
642 pz2 = (x1 * s1& + pz1 * c1&) \ 1024\r
643       \r
644 y2 = (y1 * c2& - pz2 * s2&) \ 1024\r
645 pz3 = (y1 * s2& + pz2 * c2&) \ 1024\r
646        \r
647 x3 = (y2 * c3& - x2 * S3&) \ 1024\r
648 y3 = (y2 * S3& + x2 * c3&) \ 1024\r
649       \r
650 IF pz3 > 10 THEN\r
651 xn(a) = 320 + (x3 / pz3 * 500)\r
652 yn(a) = 240 + (y3 / pz3 * 500)\r
653 ELSE\r
654 xn(a) = -1\r
655 END IF\r
656 \r
657 \r
658 NEXT\r
659 \r
660     \r
661 FOR a1 = 0 TO nl - 1\r
662 f1 = pointers1(a1)\r
663 s1 = pointers2(a1)\r
664       \r
665 xn = xn(f1)\r
666 yn = yn(f1)\r
667           \r
668 x1 = xn(s1)\r
669 y1 = yn(s1)\r
670           \r
671 IF Xs1(a1) = -1 OR Xe1(a1) = -1 THEN  ELSE LINE (Xs1(a1), Ys1(a1))-(Xe1(a1), Ye1(a1)), 0\r
672 IF x1 = -1 OR xn = -1 THEN  ELSE LINE (x1, y1)-(xn, yn), 15\r
673 \r
674 \r
675 Xs1(a1) = x1: Ys1(a1) = y1\r
676 Xe1(a1) = xn: Ye1(a1) = yn\r
677 NEXT\r
678   \r
679 \r
680 k$ = INKEY$\r
681 IF k$ <> "" THEN\r
682 \r
683 SELECT CASE k$\r
684 \r
685 CASE CHR$(0) + "M"\r
686 d1 = d1 - 1\r
687 \r
688 CASE CHR$(0) + "K"\r
689 d1 = d1 + 1\r
690 \r
691 CASE CHR$(0) + "P"\r
692 d2 = d2 + 1\r
693 \r
694 CASE CHR$(0) + "H"\r
695 d2 = d2 - 1\r
696 \r
697 CASE "w"\r
698 d3 = d3 - 1\r
699 \r
700 CASE "z"\r
701 d3 = d3 + 1\r
702 \r
703 CASE "-"\r
704 speed = speed - 1\r
705 \r
706 CASE "+"\r
707 speed = speed + 1\r
708 \r
709 CASE " "\r
710 d1 = 0\r
711 d2 = 0\r
712 d3 = 0\r
713 speed = 0\r
714 \r
715 CASE CHR$(27)\r
716 SYSTEM\r
717 \r
718 END SELECT\r
719 k$ = ""\r
720 END IF\r
721 LOOP\r
722 END SUB\r
723 \r
724 SUB setgus\r
725 gusxp = gusxp + ssu\r
726 smes = smes + ssu\r
727 IF smes > 15 THEN smes = 1\r
728 IF smes < 1 THEN smes = 15\r
729 b = smes\r
730 \r
731 FOR a = gusalgp TO gusalgp + 48 STEP 2\r
732 x(a) = gusx(b) - gusxp\r
733 y(a) = gusy(b)\r
734 cz(a) = 50\r
735 x(a + 1) = gusx(b) - gusxp\r
736 y(a + 1) = gusy(b)\r
737 cz(a + 1) = 30\r
738 b = b + 15\r
739 NEXT a\r
740 \r
741 b = smes\r
742 FOR a = gusalgp + 48 TO gusalgp + 94 STEP 2\r
743 x(a) = gusx(b) - gusxp\r
744 y(a) = gusy(b)\r
745 cz(a) = -50\r
746 x(a + 1) = gusx(b) - gusxp\r
747 y(a + 1) = gusy(b)\r
748 cz(a + 1) = -30\r
749 b = b + 15\r
750 NEXT a\r
751 \r
752 '                                  maa\r
753 FOR a = 0 TO 84\r
754 x(a) = x(a) - ssu\r
755 NEXT a\r
756  \r
757 IF x(84) > 0 THEN ssu = 1\r
758 IF x(83) < -400 THEN ssu = -1\r
759 \r
760 \r
761 \r
762 \r
763 END SUB\r
764 \r
765 SUB start\r
766 SCREEN 12\r
767 CLS\r
768 speed = 0\r
769 \r
770 'deg1 = 270\r
771 'deg2 = 0\r
772 'deg3 = 90\r
773 \r
774 deg1 = 210\r
775 deg2 = 20\r
776 deg3 = 90\r
777 \r
778 smes = 1\r
779 gusxp = 0\r
780 \r
781 myxp = 0\r
782 myyp = 0\r
783 myzp = 0\r
784 myx = 0\r
785 myy = -300\r
786 myz = 100\r
787 smes = 1\r
788 \r
789 ssu = 1\r
790 \r
791 calcsin\r
792 \r
793 getcor\r
794 teemaad\r
795 getgus\r
796 \r
797 \r
798 END SUB\r
799 \r
800 SUB teemaad\r
801 silalgl = nl\r
802 np = np + 0\r
803 silalgp = np\r
804 \r
805 5\r
806 READ x(np), y(np), cz(np)\r
807 IF x(np) = 999 THEN x(np) = 0: y(np) = 0: cz(np) = 0: GOTO 3\r
808 np = np + 1\r
809 GOTO 5\r
810 \r
811 3\r
812 READ pointers1(nl), pointers2(nl)\r
813 IF pointers1(nl) = 999 THEN GOTO 4\r
814 pointers1(nl) = pointers1(nl) + silalgp\r
815 pointers2(nl) = pointers2(nl) + silalgp\r
816 nl = nl + 1\r
817 GOTO 3\r
818 4\r
819 \r
820 END SUB\r
821 \r