sw: Added FORTRAN IV and Spacewar
[pdp8.git] / sw / spacewar / klemens / space.pa
1 / SPACE WAR
2 /
3 / INTERPLANETARY DEATH AND DESTRUCTION ON YOUR
4 / LAB-8
5 /
6 /
7 / KK, 21-APR-2005
8 / CHANGED THE PROGRAM FOR MY LAB-8/E
9 / IT HAS:
10 / REAL-TIME PROGRAMMABLE CLOCK (DK8-EP)
11 / BUFFERED DIGITAL I/O (DR8-EA)
12 / POINT-PLOT DISPLAY CONTROL (VC8-E)
13 /
14 / MAIN DIFFERENCES TO LAB-8:
15 / * CLOCK IS PROGRAMMABLE. INTERRUPT-RATE HAS TO BE TO PROGRAMMED
16 / TO 10KC/S.
17 / * DIGITAL I/O HAS 12BIT INPUT.
18 / * POINT-PLOT DISPLAY HAS 10BIT RESOLUTION, BUT CANNOT INTENSIFY.
19 / ALSO INTENSITY-PULSE (DIXY) DOESN'T WORK SATISFACTORING.
20 / SO I ADDED STARS IN THE SKY, TO EMPLOY THE ELECTRON-BEAM WHILE
21 / WAITING FOR NEXT INTERRUPT.
22 / STARS COME FROM A STAR-MAP IN THE 20-VOL. "DTV-LEXIKON" FROM
23 / 1972. ISBN 3-423-03067-4. THE MAP IS IN VOL. 17 ON PAGE 283.
24 / I MADE A PHOTOCOPY FROM THIS BOOK IN SCALE 1:2 FOR BETTER
25 / ACCURACY. TO AVOID NEGATIVE COORDINATES, I LAID 0:0 IN THE
26 / LOWER LEFT CORNER OF THE MAP.
27 /
28 / I ALSO ADDED A SCORE COUNTER.
29 /
30 /
31 /
32 / EVAN SUITS
33 /
34 / THIS VERSION WORKS OFF EITHER THE BLUE RIBBON CONNECTOR OR THE
35 / SR. WHEN THE PROGRAM IS STARTED (AT 0200) OR RESTARTED THE
36 / SR WILL BE TESTED AND IF =0000 WILL BE USED FOR THE COMMAND
37 / INPUT. OTHERWISE, THE BLUE RIBBON CONNECTOR (AX08 * C0-C7 *
38 / XR OPTION ONLY) CONTINGENCY INPUTS WILL BE USED.
39 /
40 / WHEN THE PROGRAM IS STARTED THE TWO SHIPS SHOULD
41 / APPEAR ON THE SCREEN WITH SHIP 'ONE' ON THE LEFT, SHIP
42 / 'TWO' ON THE RIGHT.
43 /
44 / THE COMMAND WORD BIT ASSIGNMENTS ARE:
45 /
46 / SR BIT: C: FUNCTION:
47 /
48 / 0 0 SHIP ONE ROTATES LEFT
49 /
50 / 1 1 SHIP ONE ROTATES RIGHT
51 /
52 / 2 2 SHIP ONE ACCELERATES
53 /
54 / 3 3 SHIP ONE FIRES
55 /
56 /
57 /
58 / 8 4 SHIP TWO ROTATES LEFT
59 /
60 / 9 5 SHIP TWO ROTATES RIGHT
61 /
62 / 10 6 SHIP TWO ACCELERATES
63 /
64 / 11 7 SHIP TWO FIRES
65 /
66 /
67 /
68 / NOTE THAT TURNING RIGHT AND LEFT SIMULTANEOUSLY THROWS
69 / THE SHIP INTO HYPERSPACE. IN THE CURRENT VERSION THE ODDS
70 / ARE IN FAVOR OF YOUR MAKING IT BACK SAFELY. THE GAME IS OVER
71 / WHEN ONE OR BOTH OF THE SHIPS HAVE BEEN DESTROYED AND THE
72 / WINNER (IF ANY) IS IN NORMAL SPACE. WHEN THE WINNER
73 / HAS BEEN ANNOUNCED, HIT ANY TTY KEY TO RESTART.
74 /
75
76 \f
77
78 / SYMBOL DEFINITIONS FOR PAL8-PAL10
79
80 DXC=6301 /CLEAR X REGISTER
81 DYC=6311 /CLEAR Y REGISTER
82 DYL=6312 /LOAD Y FROM AC
83 DXL=6302 /LOAD X FROM AC
84 DIS=6304 /INTENSIFY POINT
85 SKXK=6321 /SKIP ON CRYSTAL CLK FLAG
86 DSB=6324 /SET BRIGHTNESS (BRIGHT)
87 XRIN=6331 /OR EXTERNAL SENSE REGISTER IN AC
88 XRCL=6334 /SET BITS IN AC CLEAR CORRESP. BITS IN SENSE REG.
89 ZTEN=6342 /ZEROS IN AC CLEAR BITS IN ENABLE REGISTER
90 OTEN=6344 /ONES IN AC SET BIS IN ENABLE REG. THEN CLA
91 CLXK=6352 /CLEAR CRYSTAL CLK FLAG
92 CRF=6072 /CLEAR SOME UNKNOWN FLAGS
93 CCF=6052 /CLEAR SOME UNKNOWN FLAGS
94
95 CLZE=6130 /CLEAR CLOCK ENA REG. PER 1 IN AC
96 CLSK=6131 /SKIP ON CLOCK FLAG
97 CLOE=6132 /SET CLOCK REG PER 1 IN AC
98 CLAB=6133 /AC TO CLOCK COUNTER
99 CLSA=6135 /STATUS TO AC, CLEAR CLK FLAG
100
101 DISD=6052 /SKIP ON DONE
102 DILX=6053 /LOAD X REGISTER
103 DILY=6054 /LOAD Y REGISTER
104 DIXY=6055 /CLEAR DONE AND INTENSIFY
105
106 DBRI=6514 /LOAD CONTENT OF INPUT REGISTER TO AC
107 \f/
108 / THIS PROGRAM RELIES ON THE PROGRAM INTERUPT FACILITY FOR
109 / REAL WORLD TIMING PURPOSES.
110 /
111
112 *0
113
114 0 /EFFECTIVE JMS 0 ON PROGRAM INTERUPT
115 JMP I 2 /EXIT IMMEDIATLY TO SERVICE ROUTINE
116 INTSER
117
118 EMPTY, 0 /THESE LOCATIONS ARE RESERVED FOR
119 ODT1, 0 /DEBUGGERS, ETC.
120 ODT2, 0
121 ODT3, 0
122
123 /
124 / ALL THE AUTO INDEX REGISTERS ARE NAMED BUT NOT ALL OF
125 / THEM ARE USED. THE STATUS OF ANY GIVEN REGISTER CANNOT
126 / BE DETERMINED AT ANY TIME EXCEPT BY CAREFUL INSPECTION OF
127 / THE CODE.
128 /
129
130 *10
131
132 AUTO10, 0
133 AUTO11, 0
134 AUTO12, 0
135 AUTO13, 0
136 AUTO14, 0
137 AUTO15, 0
138 AUTO16, 0
139 AUTO17, 0
140
141 /
142 / THE FOLLOWING ARE THE DATA FILES FOR THE TWO SPACE SHIPS
143 / AS WELL AS CERTAIN OTHER PARAMETERS FOR CALCULATING POSITIONS
144 / AND SO ON. THE ORDER OF THE LOCATIONS MUST BE PRESERVED
145 / ALTHOUGH THE SIZE OF THE TABLES MAY BE VARIED
146 /
147
148 *20
149
150 ONEOUT, 0 /IF NON-ZERO CONTAINS REAMINING TIME OF EXPLOSION
151 ONECNT, 0 /NUMBER OF POINTS IN FIGURE TO BE DISPLAYED
152 ONEFLG, 0 /IN OR OUT OF NORMAL SPACE
153 ONETHE, 0 /ANGLE OF ORIENTATION ON SCREEN
154 ONEVEX, 0 /X COMPONENT OF VELOCITY
155 ONEVEY, 0 /Y COMPONENT OF VELOCITY
156 ONEPEX, 0 /X POSITION (12 BITS)
157 ONEPEY, 0 /Y POSITION (12 BITS)
158 ONESIN, 0 /SINE OF ANGLE
159 ONECOS, 0 /COSINE OF ANGLE
160 ONEFIN, 0 /SET WHEN EXPLOSION DIES OUT
161
162 TWOOUT, 0 /SAME CONTENT AND ORDER
163 TWOCNT, 0 /AS ABOVE
164 TWOFLG, 0
165 TWOTHE, 0
166 TWOVEX, 0
167 TWOVEY, 0
168 TWOPEX, 0
169 TWOPEY, 0
170 TWOSIN, 0
171 TWOCOS, 0
172 TWOFIN, 0
173
174 LASTX, 0 /KKKK
175 LASTY, 0
176 LASTX1, 0
177 LASTY1, 0
178 /
179 / THESE LOCATIONS ARE USED BY THE "VECTOR GENERATOR" IN
180 / DISPLAYING THE FIGURES. A FOUR DOT VECTOR WILL BE DRAWN
181 / FROM XONE,YONE TO XTWO,YTWO WITH STEPS OF SIZE DIXTEM,DIYTEM
182 /
183
184 XONEDS, 0
185 YONEDS, 0
186 XTWODS, 0
187 YTWODS, 0
188 DIXTEM, 0
189 DIYTEM, 0
190 DISCNT, 0
191 PNTCNT, 1
192
193 /
194 / THE NEXT LOCATIONS ARE USED BY CALPOS TO DO A FAST
195 / MULTIPLY TO HELP CALCULATE THE DISPLAY FILES.
196 /
197 T10SIN, 0
198 T20SIN, 0
199 T30SIN, 0
200 T10COS, 0
201 T20COS, 0
202 T30COS, 0
203
204 CALSIN, 0
205 CALCOS, 0
206
207 \f
208 /
209 / NOW COME THE VARIOUS ODDS AND ENDS ONE USUALLY FINDS ON
210 / PAGE ZERO
211 /
212
213 SINE, SINEIN
214 COSINE, COSINI
215 MULT, MULTI
216 RSHIFT, SHIFTR
217 VECTOR, DISPLY
218 CALPOS, POSCAL
219 INTWRD, 0
220 INTCNT, 0
221 CLOCK, 0
222 HYPER, HYPSET
223 MESOUT, CHARS
224 THEADJ, THEAJI
225 VEESCL, VEELIM
226 ISHFT, DISHFT
227 RESET1, RESE1
228 GAMOVR, -3
229 ACCFLG, 0
230 ACCPER, -30
231 MEXP, -400
232
233 PROX, 0
234 PROY, 0
235 PROLIF, -360
236 BUFTMP, 0
237 ONEFIL, DISBUF
238 TWOFIL, DISBUF+40
239
240 P5, 5
241 P10, 10
242 P17, 17
243 P20, 20
244 P37, 37
245 P40, 40
246 P65, 65
247 P100, 100
248 P6601, 6601
249 P132, 132
250 P200, 200
251 P400, 400
252 P550, 550
253 P600, 600
254 P3777, 3777
255
256 M3, -3
257 M4, -4
258 M6, -6
259 M10, -10
260 M11, -11
261 M264, -264
262 M100, -100
263 M200, -200
264 M400, -400
265 M550, -550
266 M600, -600
267 M1000, -1000
268 M7605, 7605
269 SB, 0
270 SBI, STARS
271 MESS, 0
272 IDLE, NOP / HLT
273 DBRI
274 TAD M0021
275 SNA CLA
276 JMP I RESTR
277 JMP I BACK
278 BACK, JOBLOP+1
279 M0021, -0021
280 RESTR, RESTRT\f
281 /
282 / THE PROGRAM MAY BE STARTED OR RESTARTED AT ANYTIME AT 0200.
283 / THE DATA FILE ON PAGE ZERO IS CLEARED, ALL FLAGS INITIALIZED,
284 / AND THE SR EXAMINED. IF THE SR=0 THE DISPLAY UPDATE ROUTINES
285 / ARE SET TO PICK UP THE STATUS WORD FROM THE SR. IF THE SR
286 / DOES NOT EQUAL ZERO, THE STATUS WORD IS READ FROM THE EIGHT
287 / CONTINGENCY INPUTS ON THE BLUE RIBBON CONNECTOR OF THE AX08
288 / (XR OPTION ONLY). JUMP IS THEN TO THE DISPLAY
289 / FILE UPDATE TO START OFF THE GAME.
290 /
291
292 *200
293
294 START, CLA CLL /START OR RESTART HERE ANY OLD TIME
295 LAS /SR
296 SNA CLA
297 TAD SWRD /USE THE SR
298 TAD XROPT /USE THE BLUE RIBBON CONNECTOR
299 DCA COLDST /AND LEAVE IN THE TRAP LOCATION
300
301 RESTRT, CLA CMA
302 / XRCL / ORG
303 CLZE / KKKK
304 CLAB
305 CLA CLL
306
307 TAD P17 /FIRST CLEAR THE POSITION AND DATA
308 DCA AUTO10 /TABLES OF THE TWO SHIPS
309 TAD TABLEN
310 DCA AUTO11
311 DCA I AUTO10
312 ISZ AUTO11
313 JMP .-2
314
315 TAD STRT1 /SET THE STARTING POSITIONS OF THE
316 DCA ONEPEX /TWO SHIPS
317 TAD STRT2
318 DCA TWOPEX
319 TAD P37 /SET TRIG FUNCTIONS JUST IN CASE
320 DCA ONECOS
321 TAD P37
322 DCA TWOCOS /ZERO DEGREES IS POINTING STRAIGHT UP
323 IAC
324 DCA PNTCNT
325 TAD ACCPER /SET COUNT FOR VELOCITY INCREASE
326 DCA ACCFLG
327 DCA ONEFIN /CLEAR ALL GAME END FLAGS
328 DCA TWOFIN
329 DCA GAMOVR
330 JMS I BUFSET /RESET ALL PROJECTILE DISPLAY BUFFERS
331 / ZTEN /ORG
332 / OTEN
333 / RRB
334 / CRF /UNKNOWN FLAG
335 / CCF /UNKNOWN FLAG
336 TAD P5410 /START UP THE CRYSTAL CLOCK IN THE AX08
337 CLOE /KK
338 TCF /CLEAR OTHER REMAINING LIKELY FLAGS
339 KCF
340 CLA
341 JMP COLDST /AND GO TO IT
342 P5410, 5410
343 \f
344 /
345 / UPDATE IS REACHED WHENEVER THE PROGRAM IS STARTED OR THE
346 / CLOCK COUNT OVERFLOWS INDICATING TIME TO RECALCULATE THE
347 / THE DISPLAY FILES AND REFRESH THE DISPLAY. THE INTERUPT
348 / COUNT IS RESTORED, THE STATUS WORD IS PICKED UP FROM EITHER
349 / THE SR OR BRC, AND THE RECALCULATION PROCESS BEGUN.
350 /
351
352 UPDATE, CLA CLL /HERE ON CLOCK COUNT OVERFLOW.
353 /START NEXT SWEEP
354 COLDST, 0 /TRAP TO READ SR OR BRC
355 LAS /HERE FOR SR
356 / SWITCHES FOR SHIP 1 AND 2 WERE WRONG! KKK
357 DCA INTWRD /STORE TEMPORARILY
358 TAD INTWRD
359 JMS CLRV
360 TAD INTWRD /MASK OUT LEFTMOST 4 BITS
361 RTR /FOR NUMBER ONE
362 BSW
363 AND RYTHAF
364 DCA INTTEM /AND STORE
365 TAD INTWRD /MASK OUT RIGHTMOST BITS FOR NUMBER TWO
366 BSW
367 RTR
368 AND LFTHAF
369 TAD INTTEM /ADD TOGETHER
370 JMP CODST1 /AND CONTINUE
371
372 CODST,
373 / XRIN /HERE FOR BRC - PICK UP AND CLEAR
374 / XRCL
375 DBRI / KKKK
376 RAL
377 SNL
378 JMP CODST2
379 AND M0600
380 TAD P0600
381 CODST2, SMA
382 JMP CODST3
383 AND M0030
384 TAD P0030
385 CODST3, RAR
386 CODST1, DCA INTWRD /CONTINUE
387 TAD M550 /RESTORE INTERUPT COUNT BEFORE NEXT
388 DCA INTCNT /UPDATE
389 ION /GET READY FOR THE NEXT CYCLE
390 TAD ACCFLG /ALLOW VELOCITY INCREASE THIS TIME?
391 IAC /ONLY WHEN ACCFLG=0
392 SMA SZA
393 TAD ACCPER /IF ZERO, RESET COUNT
394 DCA ACCFLG
395
396 JMP I .+1 /NOW GET DOWN TO WORK.
397 ONEUP
398
399 BUFSET, SETBUF
400 TABLEN, AUTO17-CALCOS
401 INTTEM, 0
402 LFTHAF, 0360
403 RYTHAF, 0017
404 M0600, 7177
405 P0600, 0600
406 M0030, 7747
407 P0030, 0030
408 STRT1, 1000
409 STRT2, -1000
410 SWRD, 2000-CODST
411 XROPT, JMP CODST
412
413 \f
414 /
415 / THIS IS THE INTERUPT SERVICE ROUTINE. MOST OF THE
416 / INTERUPTS WILL BE FROM THE CRYSTAL CLOCK WHICH WILL BE
417 / COUNTED AND UNLESS THE COUNT OVERFLOWS THE INTERUPT IS
418 / DISMISSED IMMEDIATLY. IF THE COUNT OVER FLOWS, JMP IS TO
419 / UPDATE WITH IOF.
420 /
421 / SPECIAL CASE IS KEYBOARD INTERUPT WHEN THE GAMOVR FLAG IS
422 / SET IN WHICH CASE THE GAME IS RESTARTED.
423 /
424 / UNEXPECTED INTERUPTS ARE COUNTED AND AFTER ENOUGH OF THEM
425 / HAPPEN THE PROGRAM HALTS. IF THIS HAPPENS RELOAD OR FIND THE
426 / STRANGE FLAG
427 /
428
429 INTSER, DCA INTACC /HERE RIGHT AFTER INTERUPT - STORE
430 RAR /AC AND LINK
431 DCA INTLNK /FOR POSSIBLE CONTINUATION
432 / SKXK /WAS IT THE CRYSTAL CLOCK?
433 CLSK /KKKK
434 JMP INTBUS /NO TRY SOMETHING ELSE
435 / CLXK /YES CLEAR THE FLAG
436 CLSA
437 ISZ CLOCK /AND BUMP CLOCK COUNTER
438 NOP /IGNORE OVERFLOW
439 ISZ INTCNT /TIME FOR AN UPDATE?
440 JMP INTRET /NO, DISMISS THE INTERUPT
441 JMP UPDATE /YES, GO TO IT
442
443 INTBUS, KSF /HERE ON NON-CLOCK INTERUPT
444 JMP .+5 /NOT THE KEYBOARD
445 KRB /READ KEYBOARD
446 TAD M3 /CTRL-C ?
447 SNA CLA
448 JMP OS8
449 TAD GAMOVR /IS THE GAMEOVER
450 SZA CLA
451 JMP RESTRT /YES, RESTART
452 TCF /NO, HELL WITH IT
453 ISZ INTGLH /COUNT ONE BADDIE
454 SKP
455 HLT /HALT IF TOO MANY BADDIES
456
457 INTRET, CLA CLL /HERE TO DISMISS THE INTERUPT
458 TAD INTLNK
459 RAL
460 TAD INTACC
461 ION
462 JMP I 0
463 /
464 OS8, IOF
465 JMP I M7605
466 /
467 INTACC, 0
468 INTLNK, 0
469 INTGLH, 0
470
471 \f
472 /
473 / NOW BEGINS THE GREAT UPDATE PROCEEDURE, FIRST FOR SHIP
474 / NUMBER ONE (THE DELTA SHAPED SHIP WHICH APPEARS ON
475 / THE LEFT AT THE START OF THE GAME). IF ALIVE THE STATUS
476 / WORD (INTWRD) IS TESTED FOR REQUESTS FOR LEFT TURN,
477 / RIGHT TURN, THRUST ON, AND LAUNCH PROJECTILE. THESE ACTIONS
478 / MAY OR MAY NOT BE ACTED UPON DEPENDING ON COUNTS AND FLAGS.
479 / WHEN THIS IS COMPLETE THE SAME OPERATION IS PERFORMED FOR
480 / NUMBER TWO.
481 /
482 *400
483
484 ONEUP, TAD ONEFLG /FIRST SEE IF IT'S IN NORMAL SPACE
485 SNA
486 JMP ONEOK /YES IT IS
487 IAC /NO, BUT IS IT JUST COMING OUT?
488 SNA
489 TAD ONEFIN /YES, THROW BACK IN IF ALREADY DESTROYED
490 DCA ONEFLG /OTHERWISE JUST COUNT ONE
491 JMP I ITWOUP /AND GO TO FIX UP NUMBER TWO
492
493 ONEOK, TAD ONEOUT /IN NORMAL SPACE - IS IT EXPLODING?
494 SZA CLA
495 JMP ONEFIG /IF YES, ALLOW NO CONTROLS
496 TAD TWOFIN /HAS THE ENEMY BEEN VANQUISHED?
497 SZA CLA
498 JMS I ONEWN /YES, SIGNAL VICTORY
499 TAD INTWRD /NOW BEGIN TEST OF REQUEST
500 AND OP300 /LEFT AND RIGHT TURN TOGETHER MEAN HYPERSPACE!
501 TAD OM300 /TEST BITS 4 AND 5
502 SZA CLA
503 JMP ONELEF /NOPE, CONTINUE
504 CMA /YES, CALL HYPER WITH AC=-1 FOR NUMBER ONE
505 JMP I HYPER
506 ONELEF, TAD INTWRD /REQUEST FOR LEFT TURN?
507 AND P200 /TEST BIT 4
508 SNA CLA
509 JMP ONERYT /NO
510 CLA CLL CMA /YES DECREMENT ANGLE
511 JMP ONEFIG
512
513 ONERYT, TAD INTWRD /HOW ABOUT RIGHT TURN
514 AND P100 /TEST BIT 5
515 SZA CLA
516 IAC /YES, INCREMENT ANGLE
517
518 ONEFIG, TAD ONETHE /PICK UP AND ADJUST ANGLE (MAYBE)
519 JMS I THEADJ /BRING BACK WITHIN LIMITS OF TRIG FUNCTIONS
520 DCA ONETHE /AND STORE
521 TAD ONETHE /FIND THEM TRIG FUNCTIONS
522 JMS I SINE /AND STORE ONCE AND FOR ALL
523 DCA ONESIN /IN THE APPROPRIATE PLACES
524 TAD ONETHE
525 JMS I COSINE
526 DCA ONECOS
527 TAD ONEOUT /DO NOT ALLOW THRUST IF EXPLODING
528 SZA CLA
529 JMP ONEVEL
530
531 \f
532
533 ONEMOV, TAD ACCFLG /ALLOW ANY VELOCITY INCREASE THIS CYCLE?
534 SZA CLA
535 JMP ONEVEL /NOPE
536 TAD INTWRD /YES, ANY REQUESTED?
537 AND P40 /TEST BIT 6
538 SNA CLA
539 JMP ONEVEL /NONE REQUESTED
540 TAD ONECOS /YES, ADD IN VELOCITY INCREMENT DEPENDING
541 TAD ONEVEY /ON ORIENTATION
542 JMS I VEESCL /BUT DO NOT ALLOW TO EXCEED MAXIMUM
543 DCA ONEVEY /AND STORE
544 TAD ONESIN /DO THE SAME FOR THE OTHER (X) COMPONENT
545 TAD ONEVEX
546 JMS I VEESCL
547 DCA ONEVEX
548
549
550
551 ONEVEL, TAD ONEVEX /NOW UPDATE THE POSITION WITH THE
552 JMS I ISHFT /VELOCITY COMPONENTS DIVIDED BY 4
553 JMS I ISHFT /THIS MAINTAINS MAXIMUM RESOLUTION
554 TAD ONEPEX
555 DCA ONEPEX /IGNORE ANY OVERFLOW
556 TAD ONEVEY /DO THE SAME FOR Y COORDINATE
557 JMS I ISHFT /AND VELOCITY COMPONENT
558 JMS I ISHFT
559 TAD ONEPEY
560 DCA ONEPEY
561 TAD ONEOUT /DO NOT ALLOW PROJECTILE LAUNCH IF
562 SZA CLA /EXPLODING
563 JMP I ITWOUP
564
565 \f
566
567 ONELNC, TAD LNC1FG /OTHERWISE, SEE IF RELOAD IS FINISHED
568 SNA CLA
569 JMP .+3
570 ISZ LNC1FG /NO, CONTINUE RELOADING
571 JMP I ITWOUP /AND EXIT
572 TAD INTWRD /YES, READY TO LAUNCH, TRIGGER BEEN PULLED?
573 AND P20 /TEST BIT7
574 SNA CLA
575 JMP I ITWOUP /NO, WAIT FOR A BETTER SHOT
576 /.....I GUESS.....
577 TAD PROLIF /YES, SET CYCLE COUNT FOR THIS LAUNCH
578 DCA I AUTO16 /AUTO16 ALWAYS POINTS AT THE NEXT SLOT IN THE FILE
579 TAD ONEVEX /ADD SHIPS VELOCITY (SCALED OF COURSE)
580 JMS I ISHFT /TO ORIENTATION TO EXTABLISH X VELOCITY
581 JMS I RSHIFT /COMPONENT OF PROJECTILE
582 TAD ONESIN
583 JMS I RSHIFT /AND STICK IT IN THE FILE
584 DCA I AUTO16
585 TAD ONESIN /MOVE THE LAUNCH POINT OUTSIDE THE
586 CLL RTL /SHIP OF ORIGIN
587 TAD ONEPEX
588 DCA I AUTO16 /AND STORE X POSITION
589 TAD ONEVEY /NOW DO THE SAME FOR THE Y VELOCITY AND
590 JMS I ISHFT /POSITION
591 JMS I RSHIFT
592 TAD ONECOS
593 JMS I RSHIFT
594 DCA I AUTO16
595 TAD ONECOS
596 CLL RTL
597 TAD ONEPEY
598 DCA I AUTO16
599 TAD M200 /START RELOAD CYCLE
600 DCA LNC1FG
601 JMS I RESET1 /RESET AUTO16 TO NEXT HOLE
602
603 JMP I .+1 /NOW TO FIX IT UP WITH NUMBER TWO
604 ITWOUP, TWOUP
605
606 LNC1FG, 0 /PROJECTILE LAUNCH ENABLE
607
608 OP300, 300 /HYPERSPACE REQUEST CODE BITS 4 AND 5
609 OM300, -300
610 ONEWN, ONEWIN /POINTER TO VICTORY MESSAGE
611
612 \f
613 /
614 / HERE BEGINS THE UPDATE PROCEEDURE FOR SHIP NUMBER TWO.
615 / OPERATION IS THE SAME AS FOR NUMBER ONE ABOVE.
616 /
617 CLRV, 0
618 BSW
619 SMA CLA
620 JMP I CLRV
621 DCA ONEVEX
622 DCA ONEVEY
623 DCA TWOVEX
624 DCA TWOVEY
625 JMP I CLRV
626 *600
627
628 TWOUP, TAD TWOFLG /FIRST SEE IF IT'S IN NORMAL SPACE
629 SNA
630 JMP TWOOK /YES, CONTINUE
631 IAC /NO, BUMP COUNT AND TEST FOR REENTRY
632 SNA
633 TAD TWOFIN /IF RE-ENTERING THROW BACK OUT IF FINISHED
634 DCA TWOFLG /AND CONTINUE
635 JMP I IONEST
636
637 TWOOK, TAD TWOOUT /HERE WHEN READY TO UPDATE IN NORMAL SPACE
638 SZA CLA /IS IT EXPLODING?
639 JMP TWOFIG /YES DO NOT ALLOW HYPERSPACE
640 TAD ONEFIN /DID WE JUST WIN?
641 SZA CLA
642 JMS I TWOWN /YES ENABLE END OF GAME MESSAGE
643 TAD INTWRD /TEST FOR HYPERSPACE REQUEST
644 AND OP14
645 TAD OM14 /BITS 8 AND 9 MUST BE SET
646 SNA CLA
647 JMP I HYPER /8 AND 9 SET. ENTER HYPER ROUTINE WITH AC=0
648 /FOR SHIP NUMBER 2
649 TWOLEF, TAD INTWRD /TEST FOR LEFT TURN - BIT 8
650 AND P10
651 SNA CLA
652 JMP TWORYT /NOT SET
653 CLA CLL CMA /SET, DECREMENT TWOTHE BY 1 DEGREE
654 JMP TWOFIG /SKIP TEST FOR RIGHT TURN
655
656 TWORYT, CLA CLL IAC RTL /TEST FOR RIGHT TURN - BIT 9
657 AND INTWRD
658 SZA CLA
659 IAC /IF SET INCREMENT TWOTHE BY 1 DEGREE
660
661 TWOFIG, TAD TWOTHE /UPDTAE TWOTHE
662 JMS I THEADJ /BRING TO WITHIN LIMITS OF SINE,COSINE
663 DCA TWOTHE /AND STORE
664 TAD TWOTHE
665 JMS I SINE /CALCULATE SINE AND COSINE FUNCTIONS
666 DCA TWOSIN /AND STORE IN DATA TABLE
667 TAD TWOTHE
668 JMS I COSINE
669 DCA TWOCOS
670 TAD TWOOUT /DO NOT ALLOW VELOCITY CHANGE IF EXPLODING
671 SZA CLA
672 JMP TWOVEL
673
674 \f
675
676 TWOMOV, TAD ACCFLG /NOW FOR ACCELERATION. TEST TO SEE IF ALLOWED
677 SZA CLA /DURING THIS UPDATE CYCLE
678 JMP TWOVEL /NOPE
679 CLL IAC RAL /YES, TEST FOR BIT 2 SET
680 AND INTWRD
681 SNA CLA
682 JMP TWOVEL /NOT SET
683
684 TAD TWOSIN /UPDATE X VELOCITY COMPONENT BY SINE OF
685 TAD TWOVEX /ANGLE OF ORIENTATION
686 JMS I VEESCL /AND SCALE TO NOT EXCEED MAX
687 DCA TWOVEX /UPDATE Y COMPONENT WITH COSINE
688
689 TAD TWOCOS
690 TAD TWOVEY
691 JMS I VEESCL
692 DCA TWOVEY
693
694
695
696 TWOVEL, TAD TWOVEX /NOW UPDATE THE POSITION WITH THE VELOCITY
697 JMS I ISHFT /COMPONENTS/16
698 JMS I ISHFT
699 TAD TWOPEX
700 DCA TWOPEX
701 TAD TWOVEY
702 JMS I ISHFT
703 JMS I ISHFT
704 TAD TWOPEY
705 DCA TWOPEY
706 TAD TWOOUT
707 SZA CLA
708 JMP I IONEST
709
710 \f
711
712 TWOLNC, TAD LNC2FG /NOW CHECK FOR PROJECTILE LAUNCH. FIRST
713 SNA CLA /TEST TO SEE IF RELOAD COMPLETE
714 JMP .+3
715 ISZ LNC2FG /NO, COUNT ONE CYCLE AND EXIT
716 JMP I IONEST
717 IAC /YES, TEST TRIGGER BIT 11
718 AND INTWRD
719 SNA CLA
720 JMP I IONEST /NOT SET, HELL WITH IT
721
722 TAD PROLIF /OK, SET PROJECTILE LIFE
723 DCA I AUTO16 /AUTO16 IS ALWAYS POINTING AT THE NEXT SLOT
724 TAD TWOVEX /ADD SHIPS VELOCITY
725 JMS I ISHFT /(ADJUSTED)
726 JMS I RSHIFT
727 TAD TWOSIN /TO THAT OF PROJECTILE - AGAIN X COMPONENT
728 JMS I RSHIFT /FROM SINE OF ANGLE OF ORIENTATION
729 DCA I AUTO16
730 TAD TWOSIN /SET INITIAL POSITION TO BE JUST AHEAD
731 CLL RTL /OF THE SHIP
732 TAD TWOPEX /X COMPONENT
733 DCA I AUTO16
734 TAD TWOVEY /NOW THE Y COMPONENTS FROM Y VELOCITY
735 JMS I ISHFT /Y POSITION AND COSINE
736 JMS I RSHIFT
737 TAD TWOCOS
738 JMS I RSHIFT
739 DCA I AUTO16
740 TAD TWOCOS
741 CLL RTL
742 TAD TWOPEY
743 DCA I AUTO16
744 TAD M200
745 DCA LNC2FG /200 CYCLES OF RELOAD
746 JMS I RESET1 /DRINK LEADEN DEATH, NUMBER ONE!
747
748 JMP I .+1 /FINAL EXIT TO DISPLAY FILE CALCULATIONS
749 IONEST, ONESET
750
751 LNC2FG, 0 /RELOAD COUNT
752
753 OP14, 14 /HYPERSPACE CODE
754 OM14, -14
755 TWOWN, TWOWIN
756
757 \f
758 /
759 / HERE BEGINS THE DISPLAY CALCULATIONS FOR THE TWO SHIPS. AT
760 / THIS POINT ONLY THE POSITION AND ORIENTATION OF EACH VESSEL
761 / IS ONF INTEREST SINCE THE VELOCITY AND ALL THAT HAVE ALREADY
762 / BEEN TAKEN CARE OF. FOR THE BOTH SHIPS THE DISPLAY FILES ARE
763 / CALCULATED AS A SERIES OF PAIRS OF X,Y COORDINATES. BETWEEN
764 / EACH PAIR OF POINTS A FOUR POINT VECTOR WILL BE DRAWN. THE
765 / ACTUAL COORDINATES ARE CALCULATED AS DISPLACEMENTS
766 / FROM THE CENTRAL PSOTION OF THE SHIP, TAKING INTO ACCOUNT THE
767 / ANGLE OF ORIENTATION. THE FORMULAS FOLLOWED ARE:
768 /
769 / X(POINT)=X(BASE)+X(REL)*COS[THE]+Y(REL)*SINE[THE]
770 /
771 / Y(POINT)=Y(BASE)+Y(REL)*COS[THE]-X(REL)*SINE[THE]
772 /
773 / WHERE SINE[THE] AND COS[THE] ARE THE FUNCTIONS OF THE
774 / ANGLE OF ORIENTATION, X(BASE) AND Y(BASE) ARE THE
775 / COORDINATES OF THE SHIPS POSITION AND X(REL) AND Y(REL)
776 / CORRESPOND TO DISPLACEMENT PAIRS DEPENDING ON THE SHAPE
777 / OF THE FIGURE. ALL X AND Y RELS LIE WITHIN THE RANGE 0-3 AND
778 / THERE FORE ALL NECESSARY DISPLACEMENTS FROM BASE COORDINATES
779 / MAY BE CALCULATEDFROM DIFFERENT COMBINATIONS OF T10SIN, T20COS
780 / ETC. THESE VALUES ARE CALCULATED BY A CALL TO POSCAL WITH THE SINE
781 / AND COSINE OF THE ANGLE OF INTEREST IN CALSIN AND CALCOS.
782 /
783 / FOLLOWING THIS METHOD ANY FIGURE DESCRIBABLE WITH A 7 BY 7
784 / MATRIX OF POINTS MAY BE QUICKLY CALCULATED.
785 /
786 / BEGINNING AT ONESET DIFFERENT DISPLACEMENT PAIRS ARE CALCULATED
787 / AND DEPOSITIED THROUGH AUTO10 TO FORM THE DISPLAY FILE FOR SHIP NUMBER ONE.
788 /
789
790
791 *1000
792
793 ONESET, CLA CLL /BEGIN DISPLAY FILE FOR NUMBER ONE
794 TAD ONEFLG /DONT BOTHER IF NOT IN NORMAL SPACE
795 SZA CLA
796 JMP I ITWOST
797 TAD ONESIN /SET UP FOR MATRIX COMPONENT CALCULATIONS
798 DCA CALSIN
799 TAD ONECOS
800 DCA CALCOS
801 JMS I CALPOS /CALL THE CALCULATOR
802
803 /
804 / CONSIDER THE 7 BY 7 MATRIX OF DISPLACEMENT POINTS WITH THE
805 / CENTER AT 0,0 CORRESPONDING TO THE SHIPS POSITION. A SERIES
806 / OF POINTS IS NOW DESCRIBED AROUND THIS CENTER USING THE
807 / MULTIPLES OF THE TRIG FUNCTIONS JUST CALCULATED
808 / SO THAT ANY POINT ON THE OUTLINE IS DESCRIBABLE AS X,Y
809 / DISPLACED BY X,Y OF THE SHIP ITSELF
810 /
811
812 TAD ONEFIL /SET UP AUTO10 AS THE DISPLAY FILE
813 DCA AUTO10 /POINTER
814 TAD ONEPEX /THE FIRST POINT OF THE OUTLINE IS
815 TAD T30SIN
816 DCA I AUTO10 / 0,3 OR TOP CENTER
817 TAD ONEPEY
818 TAD T30COS
819 DCA I AUTO10
820
821 TAD T10COS
822 CIA /THE SECOND IS
823 TAD ONEPEX
824 DCA I AUTO10 / -1,0
825 TAD T10SIN /OR JUST LEFT OF DEAD CENTER
826 TAD ONEPEY /AND SO ON
827 DCA I AUTO10
828
829 TAD T30SIN
830 TAD T30COS /THE THIRD POINT IS
831 CIA
832 TAD ONEPEX / -3,-3
833 DCA I AUTO10
834 TAD T30COS /OR BOTTOM LEFT HAND CORNER
835 CIA
836 TAD T30SIN
837 TAD ONEPEY
838 DCA I AUTO10
839
840 \f
841
842 TAD T10SIN
843 CIA /FOURTH POINT
844 TAD ONEPEX
845 DCA I AUTO10 / 0,-1
846 TAD T10COS
847 CIA /OR JUST BELOW CENTER
848 TAD ONEPEY
849 DCA I AUTO10
850
851 FLAM1, TAD INTWRD /TEST FOR POWER ON. IF ON, DRAW THE
852 AND P40 /FLAME WITH AN EXTRA POINT SOME
853 SNA CLA /DISTANCE DIRECTLY BELOW THE SHIP
854 JMP ONECON /POWER NOT ON - CONTINUE
855 TAD ONEOUT /DO NOT ALLOW IF EXPLODING
856 SZA CLA
857 JMP ONECON
858
859 TAD ONFG1 /USE ONFG1 TO TURN THE FLAME ON AND
860 SNA /OFF TO MAKE IT FLICKER. DISPLAY THE
861 CLA CLL CMA RAL /FLAME ONE TIME OUT OF THREE
862 DCA ONFG1
863
864 ISZ ONFG1
865 JMP ONECON /ONE OUT OF THREE TIMES THIS WILL SKIP
866
867 TAD ONFG2 /VARY ALSO THE LENGHT OF THE FLAME
868 CMA /WITH LONG SHORT LONG SHORT
869 DCA ONFG2
870
871 TAD ONFG2 /TIP OF FLAME AT EITHER
872 SNA CLA
873 TAD T10SIN / 0,-4 OR
874 TAD T30SIN / 0,-3
875 CIA
876 TAD ONEPEX
877 DCA I AUTO10
878 TAD ONFG2
879 SNA CLA
880 TAD T10COS
881 TAD T30COS
882 CIA
883 TAD ONEPEY
884 DCA I AUTO10
885
886 TAD T10SIN
887 CIA
888 TAD ONEPEX /RETURN DISPLAY TO 0,-1
889 DCA I AUTO10
890 TAD T10COS
891 CIA
892 TAD ONEPEY
893 DCA I AUTO10
894 CLA CLL CMA RAL /ADD -2 TO POINT COUNT
895
896 \f
897
898 ONECON, TAD M6 /SET POINT COUNT TO -6 OR -8
899 DCA ONECNT
900
901 TAD T30SIN /CONTINUE WITH DISPLAY FILE - THIS POINT
902 CIA
903 TAD T30COS / AT 3,-3
904 TAD ONEPEX /
905 DCA I AUTO10 /OR LOWER RIGHT HAND CORNER
906 TAD T30SIN
907 TAD T30COS
908 CIA
909 TAD ONEPEY
910 DCA I AUTO10
911
912 TAD T10COS /NEXT
913 TAD ONEPEX /
914 DCA I AUTO10 / 1,0
915 TAD T10SIN /
916 CIA / OR JUST RIGHT OF CENTER
917 TAD ONEPEY
918 DCA I AUTO10
919
920 TAD T30SIN /FINALLY BACK TO
921 TAD ONEPEX /
922 DCA I AUTO10 / 0,3
923 TAD T30COS /
924 TAD ONEPEY / TOP CENTE
925 DCA I AUTO10
926
927 JMP I ITWOST /NOW FOR NUMBER TWO
928 ITWOST, TWOSET
929
930 ONFG1, 0 /USED TO COUNT FLICKERS
931 ONFG2, 0 /SHORT OR LONG FLAG
932
933 \f
934 /
935 / HERE BEGINS THE DISPLAY FILE GENERATOR FOR SHIP TWO.
936 / IT WORKS JUST LIKE THE ONE FOR NUMBER ONE BUT WITH
937 / DIFFERENT DISPLACEMENT PAIRS AND TWO EXTRA POINTS
938 /
939
940 *1200
941
942 TWOSET, CLA CLL /DONT BOTHER IF NOT IN NORMAL SPACE
943 TAD TWOFLG
944 SZA CLA
945 JMP I IFILDS
946 TAD TWOSIN /SET UP TO HAVE DISPLACEMENT INCREMENTS
947 DCA CALSIN /CALCULATED
948 TAD TWOCOS
949 DCA CALCOS
950 JMS I CALPOS
951
952 TAD TWOFIL /SET AUTO10 TO POINT TO SECOND DISPLAY
953 DCA AUTO10 /FILE
954 TAD T30SIN /FIRST POINT AT
955 TAD TWOPEX /
956 DCA I AUTO10 / 0,3
957 TAD T30COS /
958 TAD TWOPEY / OR TOP CENTER
959 DCA I AUTO10
960
961 TAD T20COS
962 CIA
963 TAD T20SIN
964 TAD TWOPEX
965 DCA I AUTO10
966 TAD T20SIN
967 TAD T20COS /SECOND POINT
968 TAD TWOPEY / -2,2
969 DCA I AUTO10
970
971 TAD T20COS /THIRD POINT
972 CIA / -2,0
973 TAD TWOPEX
974 DCA I AUTO10
975 TAD T20SIN
976 TAD TWOPEY
977 DCA I AUTO10
978
979
980
981 TAD T20COS
982 TAD T30SIN
983 CIA
984 TAD TWOPEX /FOURTH POINT
985 DCA I AUTO10 / -2,-3
986 TAD T30COS
987 CIA
988 TAD T20SIN
989 TAD TWOPEY
990 DCA I AUTO10
991
992 \f
993
994 TAD T20SIN
995 CIA /NEXT
996 TAD TWOPEX / 0,-2
997 DCA I AUTO10
998 TAD T20COS
999 CIA
1000 TAD TWOPEY
1001 DCA I AUTO10
1002
1003 FLAM2, CLA CLL IAC RAL /NOW THE FLAME BIT. CHECK FOR POWER ON
1004 AND INTWRD
1005 SNA CLA
1006 JMP TWOCON /NO, FORGET IT
1007 TAD TWOOUT /NOT ALLOWED IF EXPLODING
1008 SZA CLA
1009 JMP TWOCON
1010
1011 TAD TWFG1 /SET THE 1-3 FLICKER AS WITH #1
1012 SNA
1013 CLA CLL CMA RAL
1014 DCA TWFG1
1015
1016 ISZ TWFG1 /ALSO THE LENGHT VARIATION
1017 JMP TWOCON
1018
1019 TAD TWFG2 /EVERY OTHER TIME LONG
1020 CMA
1021 DCA TWFG2
1022 /FLAME TIP AT EITHER
1023 TAD TWFG2 / 0,-3
1024 SNA CLA /OR
1025 TAD T20SIN / 0,-5
1026 TAD T30SIN
1027 CIA
1028 TAD TWOPEX
1029 DCA I AUTO10
1030 TAD TWFG2
1031 SNA CLA
1032 TAD T20COS
1033 TAD T30COS
1034 CIA
1035 TAD TWOPEY
1036 DCA I AUTO10
1037
1038 TAD T20SIN /NOW BACK UP TO THE SHIP
1039 CIA
1040 TAD TWOPEX
1041 DCA I AUTO10
1042 TAD T20COS
1043 CIA
1044 TAD TWOPEY
1045 DCA I AUTO10
1046
1047 CLA CLL CMA RAL /ADD -2 TO POINT COUNT
1048
1049 \f
1050
1051 TWOCON, TAD M10 /SET POINT COUNT TO -8 OR -10
1052 DCA TWOCNT
1053
1054 TAD T30SIN /CONTINUE WITH DISPLAY FILE
1055 CIA /NEXT POINT AT 2,-3
1056 TAD T20COS
1057 TAD TWOPEX
1058 DCA I AUTO10
1059 TAD T30COS
1060 TAD T20SIN
1061 CIA
1062 TAD TWOPEY
1063 DCA I AUTO10
1064
1065
1066
1067 TAD T20COS /NEXT POINT
1068 TAD TWOPEX /
1069 DCA I AUTO10 / 2,0
1070 TAD T20SIN
1071 CIA
1072 TAD TWOPEY
1073 DCA I AUTO10
1074
1075 TAD T20COS /AND THE NEXT AT
1076 TAD T20SIN
1077 TAD TWOPEX / 2,2
1078 DCA I AUTO10
1079 TAD T20SIN
1080 CIA
1081 TAD T20COS
1082 TAD TWOPEY
1083 DCA I AUTO10
1084
1085 TAD T30SIN
1086 TAD TWOPEX
1087 DCA I AUTO10
1088 TAD T30COS /AND THE LAST AT
1089 TAD TWOPEY /
1090 DCA I AUTO10 / 0,3
1091
1092 JMP I IFILDS /NOW TO DISPLAY THE WHOLE MESS
1093 IFILDS, FILDIS
1094
1095 TWFG1, 0 /FLIK THE FLAME
1096 TWFG2, 0 /LONG OR SHORT
1097
1098 \f
1099 /
1100 / HERE TO DISPLAY THE TWO SHIPS. CHECK FIRST FOR COLLISION
1101 / AND THEN SET THE TWO PAIRS OF COORDENATES FOR THE END
1102 / POINTS AND CALL THE "VECTOR GENERATOR" TO DRAW THE DOTS
1103 / IN BETWEEN. WHEN THE COUNT OVERFLOWS DO THE SAME FOR
1104 / NUMBER TWO. THEN EXIT TO DISPLAY ALL THE PROJECTILES.
1105 /
1106
1107 *1400
1108
1109 FILDIS, CLA CLL /ALL SET TO GO
1110 JMS I COLIDE /TEST FOR COLLISION FIRST
1111 / DSB 1 /IF NO COLLISION
1112 NOP /KKKK
1113 TAD ONEFLG /SKIP NUMBER ONE IF NOT IN NORMAL
1114 SZA CLA /SPACE
1115 JMP TWODIS
1116
1117 TAD ONEFIL /SET UP POINTERS TO DISPLAY FILE
1118 DCA AUTO10 /FOR NUMBER ONE
1119 TAD ONECNT /ALONG WITH VECTOR COUNT
1120 DCA AUTO11
1121 TAD I AUTO10 /SET OUT THE FIRST POINT PAIR
1122 DCA XONEDS
1123 TAD I AUTO10
1124 DCA YONEDS
1125 TAD ONEOUT /NORMAL DISPLAY OR EXPLOSION?
1126 SZA CLA
1127 JMP I IONEEX /GO ELSE WHERE FOR EXPLOSION
1128
1129 FILONE, TAD I AUTO10 /STEP TO NEXT PAIR OF POINTS
1130 DCA XTWODS /SET X AND Y TO NEW POINT
1131 TAD I AUTO10
1132 DCA YTWODS
1133 JMS I VECTOR /CALL THE DOT DRAWING MACHINE
1134 TAD LASTX
1135 DCA LASTX1
1136 TAD LASTY
1137 DCA LASTY1
1138 ISZ AUTO11
1139 SKP /COUNT
1140 JMP TWODIS /DO NUMBER TWO ON OVERFLOW
1141 TAD XTWODS /SWAP POINTS FOR NEXT PAIR
1142 DCA XONEDS
1143 TAD YTWODS /THE GENERATOR DRAWS FROM ONE
1144 DCA YONEDS /TOWARDS TWO
1145 JMP FILONE
1146
1147 \f
1148
1149 TWODIS, TAD TWOFLG /HERE TO DO NUMBER TWO
1150 SZA CLA /BUT NOT IF IN HYPER SPACE
1151 JMP I IPRODS
1152
1153 TAD TWOFIL /SET UP FILE POINTER AS IN ONE
1154 DCA AUTO10
1155 TAD TWOCNT /AND THE COUNT
1156 DCA AUTO11
1157 TAD I AUTO10 /I SUPPOSE THIS COULD BE A SUBROUTINE TOO
1158 DCA XONEDS
1159 TAD I AUTO10
1160 DCA YONEDS
1161 TAD TWOOUT /IS IT EXPLODING?
1162 SZA CLA
1163 JMP I ITWOEX /YES, HOW EXCITING
1164
1165 TWDLOP, TAD I AUTO10 /NO HOW DULL, STICK IN NEXT PAIR OF
1166 DCA XTWODS /POINTS
1167 TAD I AUTO10
1168 DCA YTWODS /AND CALL THE VECTOR SEQUENCE
1169 JMS I VECTOR
1170 ISZ AUTO11
1171 JMP .+3
1172
1173 JMP I .+1 /WHEN COUNT OVERFLOWS GO ON TO
1174 IPRODS, PRODIS /DO THE PROJECTILE THING
1175
1176 TAD XTWODS /OTHERWISE SWAP ON TO THE NEXT PAIR
1177 DCA XONEDS /OF POINTS
1178 TAD YTWODS
1179 DCA YONEDS
1180 JMP TWDLOP
1181
1182 COLIDE, COLLID
1183 IONEEX, ONEEXP
1184 ITWOEX, TWOEXP
1185
1186 \f
1187 /
1188 / THIS IS THE SO CALLED "VECTOR GENERATOR" WHICH DRAWS A
1189 / SERIES OF DOTS FROM XONEDS,YONEDS TO XTWODS,YTWODS.
1190 / THE COORDINATE COMPONENTS ARE DIVIDED INTO FOURTHS AND
1191 / FOUR DOTS DRAWN ON THE SCOPE SCREEN. NOTE THAT NO DOT
1192 / IS DRAWN AT XONEDS,YONEDS. THIS IS COMPENSATED FOR ELSEWHERE.
1193 /
1194
1195
1196 DISPLY, 0 /ENTER TO DRAW A FOUR POINT VECTOR
1197 TAD XONEDS /FROM XONEDS,YONEDS
1198 CIA /TO XTWODS,YTWODS
1199 TAD XTWODS /DIVIDE COORDINATE DIFERENCES INTO
1200 JMS DISHFT /FOURTHS
1201 DCA DIXTEM /AND STORE INCREMENT
1202 TAD YONEDS
1203 CIA
1204 TAD YTWODS
1205 JMS DISHFT
1206 DCA DIYTEM
1207 TAD M4 /FOR FOUR DOTS
1208 DCA DISCNT
1209
1210 DISLOP, TAD XONEDS /ADD INCREMENT TO CURRENT X AND Y
1211 TAD DIXTEM
1212 DCA XONEDS /NOTE THAT THIS ROUTINE DESTROYS
1213 TAD YONEDS /XONEDS AND YONEDS
1214 TAD DIYTEM
1215 DCA YONEDS
1216 TAD XONEDS
1217 RTR /DIVIDE BY 8 TO FIT SCREEN SIZE
1218 / RAR
1219 NOP
1220 / DXC DXL /SET X VALUE
1221 DILX /KKKK
1222 / CLA
1223 DCA LASTX
1224 TAD YONEDS /DO THE SAME FOR Y
1225 RTR
1226 / RAR
1227 NOP
1228 / DYC DYL DIS /AT LAST SOMETHING TO SEE!!
1229 DILY /KKKK
1230 / CLA
1231 DCA LASTY
1232 ISZ DISCNT /DONE YET?
1233 JMP DISLOP /NOPE
1234 JMP I DISPLY /YUP
1235
1236
1237 DISHFT, 0 /A GENERALIZED SHIFT ROUTINE CALLED
1238 CLL /FROM EVERYWHERE TO DIVIDE THE
1239 SPA /AC BY FOUR WITH AN ASR RIGHT
1240 CML IAC /NOTE THAT NEGATIVE NUMBERS ARE
1241 RAR /ROUNDED UPWARDS (TOWARD ZERO)
1242 CLL /TO MAKE IT COME OUT RIGHT
1243 SPA
1244 CML IAC /EVEN SO THERE ARE SOME ROUNDING ERRORS
1245 RAR /SOMEWHERE. SO MUCH FOR 12 BIT MACHINES
1246 JMP I DISHFT
1247
1248 \f
1249 /
1250 / HERE TO DISPLAY ALL THE PROJECTILES AND TEST FOR HITS.
1251 / THE PROJECTILE DISPLAY FILE IS SEARCHED FOR PROJECTILES WITH
1252 / NON-ZERO COUNTS AND WHEN ONE IS FOUND THE POSITION IS
1253 / UPDATED BY THE VELOCITY, THE POINT DISPLAYED AND TESTED FOR
1254 / A HIT.
1255 /
1256
1257 *1600
1258
1259 PRODIS, CLA CLL / BEGIN DISPLAY OF THE PROJECTILES
1260 TAD BUFST /POINT TO BEGINNING OF DISPLAY FILE
1261 DCA BUFTMP
1262 NOP / DSB 2 KKKK /SET EXTRA BRIGHT FOR SINGLE POINTS
1263
1264 PROLOP, TAD I BUFTMP /PICK UP NEXT COUNT
1265 SNA
1266 JMP EXPIRE /THIS ONE IS DEAD - GO TO THE NEXT
1267 IAC /INCREMENT COUNT AND REPLACE
1268 DCA I BUFTMP
1269 ISZ BUFTMP /BUMP POINTER TO X VELOCITY
1270 TAD I BUFTMP
1271 ISZ BUFTMP /THEN TO XPOSITION AND UPDATE X POSITION
1272 TAD I BUFTMP /WITH THE VELOCITY WHICH IS CONSTANT
1273 DCA I BUFTMP
1274 TAD I BUFTMP
1275 DCA PROX /AND STORE X POSITION FOR DISPLAY AND TEST
1276 ISZ BUFTMP /NOW TO Y POSITION AND VELOCITY
1277 TAD I BUFTMP
1278 ISZ BUFTMP
1279 TAD I BUFTMP /SAME LITTLE GAME
1280 DCA I BUFTMP
1281 TAD I BUFTMP
1282 DCA PROY /STORE THE NEW Y VALUE
1283
1284 TAD PROX /DISPLAY THE POINT WITH
1285 RTR /THE SAME SHIFT AS FOR THE SHIPS
1286 / RAR /FOR THE SMALL SCREEN
1287 / DXC DXL
1288 DILX /KKKK
1289 CLA
1290 TAD PROY
1291 RTR /
1292 / RAR
1293 / DYC DYL DIS /THERE IT IS!!
1294 DILY /KKKK
1295 CLA
1296 JMS I CHKOUT /TEST FOR A HIT
1297 ISZ BUFTMP /MOVE POINTER ON AND TEST FOR END
1298 TAD BUFTMP /OF BUFFER
1299 TAD BUFLIM
1300 SZA CLA
1301 JMP PROLOP /NOT AT END - CONTINUE
1302
1303 \f/
1304 / HERE AT THE END OF THE PROJECTILE DISPLAY. IF THE GAMOVR
1305 / FLAG IS SET, GO ON TO THE MESSAGE DISPLAY - VICTORY LAP
1306 / SECTION. OTHERWISE PICK UP THE REMAINING CLOCK COUNT
1307 / TO GIVE THE FANS SOMETHING TO LOOK AT, AND MOVE THE
1308 / ELECTRON BEAM TO A LOWER CORNER. THE COUNT DISPLAYED
1309 / IN THE AC IS THE NUMBER OF 100 USEC CLOCK TICKS REMAINING
1310 / WHEN THIS CODE IS REACHED BEFORE THE NEXT UPDATE WOULD
1311 / BEGIN. TURNS OUT THAT ROUGHLY 2/3 OF THE CPU IS LEFT
1312 / OVER SHOULD ANYONE WANT TO DO ANYTHING VERY FANCY.
1313 /
1314
1315
1316 FINISH, TAD GAMOVR /IS THIS THE VICTORY LAP OR WHAT?
1317 SZA CLA
1318 JMP I ENDGAM /YES, GO TO PUT UP THE MESSAGE
1319 JMP I .+1
1320 FINIS1
1321 TAD M1000 /MOVE THE BEAM OFF SCREEN
1322 DILX / DYC DYL KKKK
1323 CLA CLL
1324 TAD M1000
1325 DILY / DXC DXL
1326 DILX
1327 JMP .-1
1328 /
1329 ENDGAM, JOBLOP
1330
1331 \f
1332
1333 EXPIRE, TAD BUFTMP /HERE TO ADVANCE THE BUFFER
1334 TAD P5 /POINTER TO THE NEXT PROJECTILE
1335 DCA BUFTMP /UNLESS THE END
1336 TAD BUFTMP /OF THE BUFFER
1337 TAD BUFLIM /IS REACHED
1338 SZA CLA /IN WHICH CASE
1339 JMP PROLOP /IT
1340 JMP FINISH /QUITS
1341
1342 BUFST, DISBUF+101
1343 BUFLIM, -DISBUF-175
1344 CHKOUT, CHECK
1345
1346 RESE1, 0 /THIS IS CALLED TO SET THE POINTER
1347 TAD MRES /(AUTO16) TO THE NEXT FREE SLOT
1348 DCA RESCNT /FOR A PROJECTILE LAUNCH. 12 POSSIBLE
1349
1350 RESLOP, TAD RESPNT /MOVE THE POINTER TO THE NEXT SLOT
1351 TAD P5
1352 DCA RESPNT
1353 TAD RESPNT /RESTE IF AT END OF BUFFER
1354 TAD BUFLIM
1355 SZA CLA
1356 JMP RESCON
1357 TAD BUFST
1358 DCA RESPNT
1359
1360 RESCON, TAD I RESPNT /FIND A HOLE YET?
1361 SNA CLA
1362 JMP RESFND /YES, SET UP AUTO16
1363 ISZ RESCNT /NO COUNT
1364 JMP RESLOP /AND TRY AGAIN
1365 HLT /NO HOLES AT ALL?
1366
1367 RESFND, CMA /BACK THE POINTER FOR AUTO INDEXING
1368 TAD RESPNT
1369 DCA AUTO16
1370 JMP I RESE1
1371
1372 MRES, -14
1373 RESCNT, 0
1374 RESPNT, 0
1375
1376 SETBUF, 0
1377 CMA /THIS ROUTINE IS CALLED FROM THE
1378 TAD BUFST /STARTING SEQUENCE TO INITIALIZE ALL
1379 DCA AUTO16 /THE BUFFER POINTERS AND SO ON
1380 TAD BUFST
1381 DCA BUFTMP
1382 TAD BUFST
1383 DCA RESPNT
1384 TAD BUFST
1385 DCA SETPNT
1386 SETLOP, DCA I SETPNT
1387 ISZ SETPNT
1388 TAD SETPNT
1389 TAD BUFLIM
1390 SZA CLA
1391 JMP SETLOP
1392 JMP I SETBUF
1393
1394 SETPNT, 0
1395
1396 \f
1397 /
1398 / THIS HERE NOW THING CHECKS THE COORDINATES OF THE MOST RECENTLY
1399 / DISPLAYED PROJECTILE AGAINST THOSE OF THE SHIPS ON THE SCREEN.
1400 / IF WITH A COLLISION LIMIT A HIT IS RECORDED AND THE LIFE
1401 / COUNT OF THE PROJECTILE ZEROED TO REMOVE IT. A HIT SHIP
1402 / IS SUITABLY FLAGGED
1403 /
1404
1405 *2000
1406
1407 CHECK, 0 /HERE TO TEST FOR A PROJECTILE HIT
1408 TAD ONEFLG /CANT HIT SOMETHING IN HYPERSPACE
1409 SZA CLA
1410 JMP CHECK2
1411 TAD ONEOUT /OR SOMETHING THAT'S BEEN HIT
1412 SZA CLA
1413 JMP CHECK2
1414
1415 TAD PROX /CHECK X COORDINATES OF SHIP ONE
1416 CIA /AND PROJECTILE
1417 TAD ONEPEX /THIS SORT OF THING IS WHY THE
1418 SPA /COORDINATES HAVE TO BE MAINTAINED TO 12
1419 CIA /BITS
1420 TAD LIMIT /CLOSE ENOUGH?
1421 SMA CLA
1422 JMP CHECK2 /IF X ISN' CLOSE ENOUGH THEN NO HIT
1423 TAD PROY /X WAS CLOSE ENOUGH, HOW ABOUT Y?
1424 CIA
1425 TAD ONEPEY
1426 SPA
1427 CIA
1428 TAD LIMIT
1429 SMA CLA
1430 JMP CHECK2 /NO HIT
1431
1432 TAD MEXP /DEPOSIT EXPLOSION COUNT IN ONEOUT
1433 DCA ONEOUT /ALL THAT IS NECESSARY
1434 JMS CUTOUT /REMOVE PROJECTILE
1435
1436 \f
1437
1438 CHECK2, TAD TWOFLG /NO HIT ON NUMBER ONE, TRY NUMBER TWO
1439 SZA CLA
1440 JMP I CHECK /BUT NOT IF IN HYPERSPACE
1441 TAD TWOOUT /OR IF ALREADY HIT
1442 SZA CLA
1443 JMP I CHECK
1444
1445 TAD PROX /CHECK X'S FIRST
1446 CIA
1447 TAD TWOPEX
1448 SPA /GET ABSOLUTE VALUE OF DIFFERENCE
1449 CIA
1450 TAD LIMIT /AND TEST MAGNITUDE AGAINST PROXIMITY
1451 SMA CLA /LIMIT
1452 JMP I CHECK /NOWHERE NEAR CLOSE
1453
1454 TAD PROY /NYAH, NYAH
1455 CIA /TRY THE Y'S
1456 TAD TWOPEY
1457 SPA
1458 CIA /ABSOLUTE VALUE OF DIFFERENCE
1459 TAD LIMIT
1460 SMA CLA
1461 JMP I CHECK /CLEAN MISS!
1462
1463 TAD MEXP /HIT ON TWO - END EVERYTHING BY SETTING
1464 DCA TWOOUT /TWOOUT TO NON-ZERO EXPLOSION COUNT
1465 JMS CUTOUT
1466 JMP I CHECK /EXIT AFTER DESTOYING PROJECTILE
1467
1468 LIMIT, -120 /PROXIMITY LIMIT FOR WHAT CONSTITUTES A HIT
1469
1470 CUTOUT, 0 /THIS ROUTINE ZEROES OUT THE MOST RECENTLY
1471 TAD M4 /DISPLAYED PROJECTILE BY ZEROEING THE
1472 TAD BUFTMP /COUNT
1473 DCA CUTPNT
1474 DCA I CUTPNT
1475 JMP I CUTOUT
1476
1477 CUTPNT, 0
1478
1479 \f
1480 /
1481 / THIS ROUTINE IS CALLED TO TEST FOR A COLLISION BETWEEN THE
1482 / TWO SHIPS. THE COORDINATES OF BOTH ARE COMPARED
1483 / AND IFF SUFFICIENTLY CLOSE BOTH ARE DESTROYED BY SETTING
1484 / THEIR EXPLOSION COUNTS NON-ZERO.
1485 /
1486
1487
1488 COLLID, 0 /HERE TO TEST FOR COLLISION
1489 TAD ONEFLG /NO TEST IF EITHER SHIP IS IN
1490 SZA CLA /HYPERSPACE OR EXPLODING
1491 JMP I COLLID
1492 TAD TWOFLG
1493 SZA CLA
1494 JMP I COLLID
1495 TAD ONEOUT
1496 SZA CLA
1497 JMP I COLLID
1498 TAD TWOOUT
1499 SZA CLA
1500 JMP I COLLID
1501
1502 TAD ONEPEX /BOTH SHIPS AVAILABLE FOR COLLISION
1503 CIA /CHECK X COORDINATES FIRST
1504 TAD TWOPEX
1505 SPA /GET ABSOLUTE VALUE OF DIFFERENCE
1506 CIA
1507 TAD COLLIM /CLOSE ENOUGH?
1508 SMA CLA
1509 JMP I COLLID /NOPE, FORGET IT
1510
1511 TAD ONEPEY /YES, NOW TRY THE Y COORDINATES
1512 CIA
1513 TAD TWOPEY
1514 SPA
1515 CIA /GET MAGNITUDE ONLY
1516 TAD COLLIM
1517 SMA CLA /CLOSE ENOUGH?
1518 JMP I COLLID
1519 TAD MEXP /YES, SET BOTH EXPLOSION COUNTS
1520 DCA ONEOUT
1521 TAD MEXP
1522 DCA TWOOUT
1523 JMP I COLLID
1524
1525 COLLIM, -300
1526 \f
1527 /
1528 / THIS ROUTINE IS CALLED TO SET ONE OF THE TWO SHIPS INTO
1529 / HYPERSPACE. ON ENTRY THE AC=-1 FOR SHIP #1, 0 FOR SHIP
1530 / NUMBER 2. THE LOCATION CLOCK IS USED FOR A RANDOM
1531 / ADDRESS POINTER FROM WHICH WILL BE DRAWN THE
1532 / VARIOUS PARAMETERS FOR REENTRY.
1533 /
1534
1535 *2200
1536
1537 HYPSET, DCA RTNFLG /HERE WITH AC=-1 OR 0
1538 TAD RTNFLG /SET UP LIST POINTER
1539 SZA CLA
1540 TAD ONEDIF /TO APPROPRIATE SHIP FILE
1541 TAD TWOLST
1542 DCA AUTO15
1543
1544 TAD CLOCK /SET UP "RANDOM NUMBER GENERATOR"
1545 DCA AUTO17
1546 TAD I AUTO17 /PICK UP FIRST THE AMOUNT OF TIME
1547 AND TIMOUT /OUT OF NOMAL SPACE LIMITED TO -777
1548 CIA /UPDATE CYCLES ( ABOUT 15 SECONDS)
1549 DCA I AUTO15 /AND STORE IN ONEOUT OR TWO OUT
1550
1551 TAD I AUTO17 /THE NEXT RANDOM NUMBER BECOMES THE
1552 JMS I THEADJ /ANGLE OR ORIENTATION ON REENTRY
1553 DCA I AUTO15
1554 TAD I AUTO17 /AND THE NEXT BECOMES THE X VELOCITY
1555 JMS VEESET /COMPONENT
1556 DCA I AUTO15
1557 TAD I AUTO17 /AND THEN THE Y COMPONENT
1558 JMS VEESET
1559 DCA I AUTO15
1560 TAD I AUTO17
1561 DCA I AUTO15
1562
1563 TAD I AUTO17
1564 DCA I AUTO15
1565
1566 TAD I AUTO17 /FINALLY SEE IF RETURN WILL BE SUCCESSFLY
1567 AND TIMOUT
1568 TAD MHYP /ABOUT 3/4 CHANCE
1569 SMA CLA
1570 JMP HYPRET /OK
1571 TAD RTNFLG /THIS IS THE ONE TIME IN FOUR. SET
1572 SZA CLA /UP FOR EXPLOSION ON REENTRY
1573 TAD ONEDIF
1574 TAD OUTLOC
1575 DCA VEESET
1576 TAD MEXP
1577 DCA I VEESET
1578
1579 HYPRET, ISZ RTNFLG
1580 JMP I TWORTN
1581 JMP I ONERTN
1582
1583 TIMOUT, 777
1584 ONEDIF, ONEFLG-TWOFLG
1585 TWOLST, TWOFLG-1
1586 RTNFLG, 0
1587 ONERTN, TWOUP
1588 TWORTN, ONESET
1589 OUTLOC, TWOOUT
1590 MHYP, -200
1591
1592 \f
1593
1594 VEESET, 0 /HERE TO LIMIT VELOCITY COMPONENTS
1595 CLL
1596 SPA /GET MAGNITUDE
1597 CML
1598 AND HM177 /LIMIT TO 177
1599 SZL CLL
1600 CIA
1601 JMP I VEESET /AND EXIT
1602
1603 HM177, 177
1604
1605 ONEEXP, CLA CLL /HERE TO DISPLAY SHIP NUMBER ONE AS
1606 TAD ONETHE /AN EXPLOSION
1607 TAD INCONE /FIRST ROTATE IT BY A GOOD DOLLOP
1608 DCA ONETHE
1609 JMS I IXPDIS /THEN CALL THE EXPLOSION GENERATOR
1610 ISZ ONEOUT /DONE WITH THE EXPLOSION?
1611 JMP I NOWTWO /NO, NORMAL RETURN
1612
1613 IAC /YES, SET INTO PSEUDO HYPER SPACE
1614 DCA ONEFLG
1615 IAC /DISABLE RETURN FROM HYPER SPACE
1616 DCA ONEFIN
1617
1618 TAD TWOFIN /IS NUMBER TWO STILL AROUND?
1619 SNA CLA
1620 JMP I NOWTWO /YES, RETURN
1621 JMP I TIEUP /NO, TIE BALL GAME
1622 \f
1623
1624 TWOEXP, CLA CLL /HERE TO DISPLAY SHIP NUMBER TWO
1625 TAD TWOTHE /AS AN EXPLOSION. BASH IT AROUND
1626 TAD INCTWO
1627 DCA TWOTHE
1628 JMS I IXPDIS /THEN DISPLAY IT
1629 ISZ TWOOUT /DONE WITH EXPLOSION?
1630 JMP I NOWPRO /NO, NORMAL RETURN
1631
1632 IAC /YES, SEND INTO PSEUDO HYPER SPACE
1633 DCA TWOFLG
1634 IAC /DISABLE NORMAL RETURN FROM HYPERSPACE
1635 DCA TWOFIN
1636 /CHECK NUMBER ONE
1637 TAD ONEFIN
1638 SZA CLA /STILL ALIVE AND WELL?
1639 JMP I TIEUP /NO, TIE GAME
1640 JMP I NOWPRO /YES, CONTINUE ON
1641 NOWTWO, TWODIS
1642 NOWPRO, PRODIS
1643 TIEUP, NOWIN
1644 IXPDIS, EXPDIS
1645 INCONE, 55
1646 INCTWO, 55
1647
1648 \f
1649 /
1650 / HERE TO DISPLAY THE FIGURE POINTED TO BY AUTO10 AS
1651 / AN EXPLOSION. THIS WORKS THE SAME WAY AS THE NORMAL
1652 / DISPLAY ROUTINE EXCEPT THAT THE COORDINATE INCREMENTS
1653 / ARE INVERTED TURNING THE FIGURE INSIDE OUT FOR S
1654 / A SORT OF CLOBBY EXPLOSION.
1655 /
1656
1657 *2400
1658
1659 EXPDIS, 0 /HERE TO DISPLAY A FIGURE INSIDE OUT
1660 TAD I AUTO10 /WITH THE POINTERS AND COUNTS ALREADY
1661 DCA XTWODS /SET UP BY FILDIS OR TWODIS
1662 TAD I AUTO10 /STICK NEXT TWO POINTS INTO LINE
1663 DCA YTWODS
1664
1665 TAD XTWODS
1666 CIA /CALCULATE INCREMENT THE WRONG WAY
1667 TAD XONEDS
1668 DCA DIXTEM /AND STORE
1669 TAD YTWODS
1670 CIA
1671 TAD YONEDS
1672 DCA DIYTEM /SAME FOR Y
1673
1674 TAD M4 /4 DOTS IN THE VECTOR"
1675 DCA DISCNT /COULD HAVE CALLED THE OTHER
1676 /VECTOR GENERATOR I SUPPOSE
1677 EXPLOP, TAD XONEDS
1678 TAD DIXTEM /ADD X AND Y INCREMENTS TO THE RUNNING
1679 DCA XONEDS /TOTALS AND DISPLAY THE RUNNING
1680 TAD YONEDS /TOTALS NORMAL SIZE
1681 TAD DIYTEM
1682 DCA YONEDS
1683
1684 TAD XONEDS
1685 RTR /COULD MAKE TWICE AS BIG BY NOP-ING
1686 NOP / RAR /THE RAR'S BUT THE SCREEN IS SMALL ENOUGH
1687 DILX / DXC DXL KKKK /AS IT IS
1688 CLA
1689 TAD YONEDS
1690 RTR
1691 NOP / RAR
1692 DILY / DYC DYL DIS
1693 CLA
1694 ISZ DISCNT /DONE 4 DOTS?
1695 JMP EXPLOP /NO
1696
1697 ISZ AUTO11 /DONE ALL VECTORS IN THE FILE?
1698 SKP
1699 JMP I EXPDIS /YES, EXIT
1700
1701 TAD XTWODS /NO SWAP TO NEXT PAIR OF POINTS
1702 DCA XONEDS
1703 TAD YTWODS
1704 DCA YONEDS
1705 JMP EXPDIS+1
1706
1707
1708 \f
1709 /
1710 / VEELIM IS THE SCALING ROUTINE FOR VELOCITY COMPONENTS.
1711 / THE COMPONENTS ARE SCALED TO REMAIN IN THE RANGE 140
1712 / TO -140. THIS IS NECESSARY TO AVOID ASTRONOMICAL SPPED
1713 / BUILDUP ON THE SMALL SCREEN. UNFORTUNATELY THE X AND Y
1714 / COMPONENTS ARE SCALED SEPARATELY WHICH GIVES SLIGHT BUT
1715 / NOTICABLE DISTORTIONS IN DIAGONAL FLIGHT PATHS. IN THE
1716 / NORMAL HEAT OF THE BATTLE NO ONE WILL REALLY NOTICE.
1717 /
1718
1719
1720 VEELIM, 0 /ENTER TO SCALE VELOCITY HELD IN
1721 DCA VEEHLD /AC
1722 TAD VEEHLD
1723 SMA /BRANCH FOR POSITIVE OR NEGATIV
1724 JMP VEEPOS
1725 TAD VEEMAX
1726 SMA CLA /GREATER THAN MAXIMUM POSITIVE?
1727 JMP VEECLR /NO
1728 TAD VEEMIN /I MEAN MAXIMUM NEGATIVE - YES SET
1729 JMP I VEELIM /TO MAX NEGATIV
1730
1731 VEEPOS, TAD VEEMIN /GREATER THAN MAX?
1732 SPA CLA
1733 JMP VEECLR /NO
1734 TAD VEEMAX /YES SET TO MAX
1735 JMP I VEELIM
1736
1737 VEECLR, TAD VEEHLD /IT WAS IN RANGE ALL ALONG
1738 JMP I VEELIM
1739
1740 VEEHLD, 0
1741 VEEMIN, -140
1742 VEEMAX, 140
1743
1744 THEAJI, 0 /HERE TO ADJUST THE ANGLE TO A RANGE
1745 SMA /0-550 OR 0-360 DEGREES. THIS IS
1746 JMP .+3 /NECESSARY TO INSURE THAT PUSHDOWN OVERFLOW
1747 TAD P550 /WILL NOT HAPPEN IN THE SINE AND COSINE
1748 JMP .-3 /ROUTINES. THIS SIMPLY TAKES THE AC
1749 TAD M550 /MODULO 360 AND EXITS
1750 SMA
1751 JMP .-2
1752 TAD P550 /FOLLOW IT THROUGH AND SEE IF IT DOESN'T
1753 JMP I THEAJI
1754
1755 \f
1756 /
1757 / ONE OF THESE ROUTINE IS ENTERED WHEN A WINNER IS DECLARED.
1758 / THE ADDRESS OF THE VICTORY MESSAGE IS PLACED IN MESS AND
1759 / THE GAMOVR FLAG SET TO CAUSE A BRANCH TO JOBLOP WHEN THE
1760 / DISPLAY CYCLE IS COMPLETED. THE ROUTINE WILL THEN DISPLAY
1761 / THE APPROPRIATE MESSAGE OVER THE REMAINING SHIPS IF
1762 / ANY UNTIL THE KEYBOARD IS MOLESTED OR THE CLOCK RUNS OUT
1763 / AND THE NEXT DISPLAY UPDATE CYCLE IS SET. AT ANY RATE THE
1764 / PROGRAM WILL REACH HERE ONLY WHEN SOMEONE HAS BITTEN THE
1765 / INTERGALACTIC DUST.
1766 /
1767
1768
1769 ONEWIN, 0 /THIS IS CALLED WHEN TWOFIN IS SET
1770 TAD MES1 /AND ONE FIN IS NOT. SET ONE TO VICTOR
1771 DCA MESS /AND SET GAMOVR FLAG
1772 IAC
1773 DCA GAMOVR
1774 TAD MESS6+3
1775 JMS INCREM
1776 DCA MESS6+3
1777 DCA PNTCNT
1778 JMP I ONEWIN /THEN RETURN TO UPDATE CYCLE
1779
1780 TWOWIN, 0 /THIS IS CALLED WHEN ONEFIN IS SET
1781 TAD MES2 /AND TWO FIN IS NOT
1782 DCA MESS /SET ALSO GAMOVR
1783 IAC
1784 DCA GAMOVR
1785 TAD MESS6+1
1786 JMS INCREM
1787 DCA MESS6+1
1788 DCA PNTCNT
1789 JMP I TWOWIN
1790 /
1791 INCREM, 0
1792 TAD PNTCNT
1793 BSW
1794 TAD P600
1795 SMA
1796 TAD P6601
1797 TAD M600
1798 BSW
1799 JMP I INCREM
1800 /
1801 NOWIN, TAD MES4 /GET HERE WHEN BOTH ONEFIN AND TWOFIN
1802 DCA MESS /ARE SET .
1803 IAC
1804 DCA GAMOVR /NOBODY EVER REALLY WINDS
1805 /UP THE WINNER IN THESE THINGS
1806 JOBLOP, JMP IDLE / DSB 1 KKKK /THIS IS ENTERED FROM FINISH WH
1807 TAD MES0 /GAMOVR IS SET AND SERVES TO DISPLAY
1808 JMS I MESOUT /THE VICTORY MESSAGE ON THE SCREEN
1809 TAD MESS /USING THE CHARACTER GENERATOR SOMEWHAT
1810 JMS I MESOUT /FURTHER ON UNTIL THE GAME IS RESTARTED
1811 TAD MES5 /OR UNTIL THE INTERRUPT COUNT OVERFLOWS
1812 JMS I MESOUT /AND THE UPDATE CYCLE IS RESTARTED
1813 TAD MES3
1814 JMS I MESOUT
1815 TAD MES6
1816 JMS I MESOUT
1817 FINITO, JMP JOBLOP
1818
1819 MES0, MESS0
1820 MES1, MESS1
1821 MES2, MESS2
1822 MES3, MESS3
1823 MES4, MESS4
1824 MES5, MESS5
1825 MES6, MESS6
1826 MESS6, 5473
1827 6060
1828 4040
1829 6060
1830 0
1831 \f
1832 /
1833 / THE FOLLOWING ARE THE SINE AND COSINE ROUTINES CUSTOMIZED
1834 / FOR THIS PROGRAM FROM ANOTHER I WORKED ON. CALL EITHER
1835 / SINE OR COSINE WITH ANGLE IN DEGREES IN AC. THE ARGUEMENT
1836 / IS REDUCED THROUGH RECURSION UNTIL BETWEEN 0-89 DEGREES
1837 / AND THEN A TABLE LOOKUP DONE TO OBTAIN THE VALUE. IT TAKES
1838 / UP A FAIR AMOUNT OF SPACE BUT IT WORKS JUST FASTER
1839 / THAN SHEEP. THE COSINE CALL JUST TRANSFORMS THE ARGUEMENT
1840 / THROUGH SOME TRIGONOMETRIC GARBAGE AND CALLS THE SINE
1841 / ROUTINE. NOTE THAT CALLING EITHER ROUTINE WITH TOO
1842 / LARGE AN ARGUEMENT WILL CAUSE PUSHDOWN OVERFLOW AND THEN
1843 / ALL HELL WILL BREAK LOOSE. THE ORIGINAL ROUTINE FROM WHICH
1844 / THIS WAS STOLEN HAD FULL WORD PRECISION.
1845 /
1846
1847 *6400
1848
1849 SINEIN, 0 /I REALLY CANT BRING MYSELF TO COMMENT
1850 DCA SINARG /THIS. IT'S VERY STRAIGHFORWARD
1851 TAD SINEIN
1852 DCA I SINPSH
1853 ISZ SINPSH
1854 TAD SINARG
1855 SZA
1856 JMP SINNG2
1857
1858 SINPOP, CLA CLL CMA
1859 TAD SINPSH
1860 DCA SINPSH
1861 TAD I SINPSH
1862 DCA SINEIN
1863 TAD SINARG
1864 JMP I SINEIN
1865
1866 SINNG2, SMA
1867 JMP SINPOS
1868 CIA
1869 JMS SINEIN
1870
1871 SINNEG, CIA
1872 DCA SINARG
1873 JMP SINPOP
1874
1875 SINPOS, TAD M264
1876 SPA
1877 JMP .+2
1878 JMP SINNEG-1
1879 TAD P132
1880 SPA
1881 JMP SINELK
1882 SZA CLA
1883 JMP .+3
1884 TAD P37
1885 JMP SINNEG+1
1886
1887 TAD SINARG
1888 TAD M264
1889 JMP SINNEG-1
1890
1891 SINELK, TAD P132
1892 TAD SINTAB
1893 DCA SINEIN
1894 TAD I SINEIN
1895 DCA SINARG
1896 JMP SINPOP
1897
1898 \f
1899
1900 SINARG, 0
1901 SINPSH, SINLST
1902 SINLST, 0
1903 0
1904 0
1905 0
1906 0
1907 0
1908
1909 SINTAB, SINES-1
1910
1911 COSINI, 0
1912 CIA
1913 TAD P132
1914 JMS SINEIN
1915 JMP I COSINI
1916
1917
1918
1919 SINES, 00 /1
1920 01 /2
1921 01 /3
1922 02 /4
1923 02 /5
1924 03 /6
1925 03 /7
1926 04 /8
1927 05 /9
1928 05 /10
1929 06 /11
1930 06 /12
1931 07 /13
1932 07 /14
1933 10 /15
1934 10 /16
1935 11 /17
1936 11 /18
1937 12 /19
1938 12 /20
1939 13 /21
1940 13 /22
1941 14 /23
1942 15 /24
1943 15 /25
1944 16 /26
1945 16 /27
1946 17 /28
1947 17 /29
1948 20 /30
1949 20 /31
1950 20 /32
1951 21 /33
1952 21 /34
1953 22 /35
1954 22 /36
1955 23 /37
1956 23 /38
1957 24 /39
1958 24 /40
1959 25 /41
1960 25 /42
1961 25 /43
1962 26 /44
1963 26 /45
1964 27 /46
1965 27 /47
1966 27 /48
1967 30 /49
1968 30 /50
1969 30 /51
1970 31 /52
1971 31 /53
1972 31 /54
1973 32 /55
1974 32 /56
1975 32 /57
1976 33 /58
1977 33 /59
1978 33 /60
1979 33 /61
1980 34 /62
1981 34 /63
1982 34 /64
1983 35 /65
1984 35 /66
1985 35 /67
1986 35 /68
1987 35 /69
1988 36 /70
1989 36 /71
1990 36 /72
1991 36 /73
1992 36 /74
1993 36 /75
1994 37 /76
1995 37 /77
1996 37 /78
1997 37 /79
1998 37 /80
1999 37 /81
2000 37 /82
2001 37 /83
2002 37 /84
2003 37 /85
2004 37 /86
2005 37 /87
2006 37 /88
2007 37 /89
2008
2009 \f
2010
2011 MULTI, 0 /THIS IS STANDARD SINGLE PRECISION
2012 CLL /MULTIPLY ROUTINE WHICH WAS ONCE
2013 SPA /USED. I'VE LEFT IT IN SINCE
2014 CMA CML IAC /THERE IS LOTS OF CORE LEFT OVER AND
2015 DCA MULMP1 /MAYBLE SOMEDAY I'LL NEED IT TO PUT
2016 DCA MULMP5 /IN A SUN OR SOMETHING. THIS IS THE
2017 TAD I MULTI /STANDARD DEC SUBROUTINE WITH DIFFERENT
2018 SNA /LABELS
2019 JMP MULPSN+2
2020 SPA
2021 CMA CML IAC
2022 DCA MULMP2
2023 TAD MULTHR
2024 DCA MULMP3
2025
2026 MULMP4, TAD MULMP1
2027 RAR
2028 DCA MULMP1
2029 TAD MULMP5
2030 SZL
2031 TAD MULMP2
2032 CLL RAR
2033 DCA MULMP5
2034 ISZ MULMP3
2035 JMP MULMP4
2036 TAD MULMP1
2037 RAR
2038 MULPSN, SZL
2039 JMP MULCMP
2040 DCA MULMP1
2041 TAD MULMP5
2042 MULMPZ, ISZ MULTI
2043 JMP I MULTI
2044
2045 MULCMP, CMA CLL IAC
2046 DCA MULMP1
2047 TAD MULMP5
2048 CMA
2049 SZL
2050 IAC
2051 JMP MULMPZ
2052
2053 MULTHR, 7764
2054 MULMP1, 0
2055 MULMP5, 0
2056 MULMP2, 0
2057 MULMP3, 0
2058
2059 \f
2060 /
2061 / SHIFTR DIVIDES THE AC BY TWO WHETHER POSITIVE OR NEGATIVE
2062 / AND IS CALLED FROM VARIOUS PLACES. NOT ENTIRELY MYSTERIOUS
2063 /
2064
2065
2066 SHIFTR, 0
2067 CLL
2068 SPA
2069 CML IAC
2070 RAR
2071 JMP I SHIFTR
2072
2073
2074 /
2075 / POSCAL IS CALLED TO CALCULATE THE COORDINATE INCREMENTS
2076 / NECESSARY TO PRODUCE THE SHIP FIGURES. RATHER THAN DOING
2077 / A LOT OF EXPENSIVE MATH THIS DOES A QUICK PRODUCTION
2078 / OF 1, 2, AND 3 TIMES THE SIN AND COSINE VALUES FOUND
2079 / IN CALSIN AND CALCOS LEAVING THEM IN THE TABLE FOR
2080 / ONESET AND TWOSET. IF THE SCOPE WERE ANY BETTER
2081 / THIS PROBABLY WOULDN'T BE NEAR GOOD ENOUGH BUT....
2082 /
2083
2084 POSCAL, 0
2085 TAD CALSIN
2086
2087 DCA T10SIN
2088 TAD T10SIN
2089 CLL RAL
2090 DCA T20SIN
2091 TAD T10SIN
2092 TAD T20SIN
2093 DCA T30SIN
2094
2095 TAD CALCOS
2096
2097 DCA T10COS
2098 TAD T10COS
2099 CLL RAL
2100 DCA T20COS
2101 TAD T10COS
2102 TAD T20COS
2103 DCA T30COS
2104 JMP I POSCAL
2105
2106 \f
2107 *7000
2108
2109 /GENERAL PURPOSE SYMBOL GENERATOR
2110 /
2111 CHARS, 0 /ENTRY TO PLOT CHARACTER STRING
2112 DCA ADDR /STORE STRING ADDRESS
2113 TAD I ADDR /FETCH DOUBLE CHARACTER
2114 RTR /SHIFT
2115 RTR / FOR FIRST
2116 RTR / CHARACTER
2117 JMS CHAR /PLOT CHARACTER
2118 SKP /NORMAL RETURN -- SKIP
2119 JMP I CHARS /TERMINATION RETURN -- EXIT
2120 TAD I ADDR /RECALL DOUBLE CHARACTER
2121 ISZ ADDR /ADVANCE STRING ADDRESS
2122 JMS CHAR /PLOT CHARACTER
2123 JMP CHARS+2 /NORMAL RETURN -- REPEAT
2124 JMP I CHARS /TERMINATION RETURN -- EXIT
2125 /
2126 CHAR, 0 /ENTRY TO PLOT SINGLE CHARACTER
2127 AND K77 /MASK OUT UPPER BITS
2128 CLL RAL /MULTIPLY CODE BY TWO
2129 TAD TABLE /ADD TABLE BASE ADDRESS
2130 DCA POINT /CONSTRUCT POINTER TO 24-BIT CODE
2131 CMA /INITIALIZE COUNTER FOR
2132 DCA COUNT2 / TWO PLOT WORDS
2133 TAD I POINT /FETCH FIRST PLOT WORD
2134 ISZ POINT /INCREMENT POINTER FOR NEXT ONE
2135 SNA /SKIP IF NOT SPECIAL CHARACTER
2136 JMP SPCHAR /ELSE GO PROCESS IT
2137 DCA CURPLT /SAVE CURRENT PLOT BITS
2138 XPLOT, TAD KM6 /INITIALIZE 6-BIT
2139 DCA COUNT6 / COUNTER
2140 TAD YVALUE /RESET Y TEMPORARY
2141 DCA YTEMP / VALUE FOR CHARACTER
2142 TAD XVALUE /OUTPUT CURRENT
2143 RAL
2144 MQL
2145 MQA
2146 / DILX / DXC DXL / KKKK X-VALUE TO CRT
2147 RAR
2148 TAD XINCR /INCREMENT
2149 DCA XVALUE / ABSCISSA
2150 YPLOT, TAD CURPLT /RECALL CURRENT PLOT BITS
2151 CLL RAL /GET NEXT BIT
2152 DCA CURPLT /SAVE REMAINING PLOT BITS
2153 SNL /SKIP IF POINT TO PLOT
2154 JMP CNTINU /ELSE JUMP AHEAD
2155 TAD YTEMP /OUTPUT CURRENT
2156 RAL
2157 DILY / DYC DYL DIS /KKKK / Y-VALUE TO CRT
2158 MQA CLA
2159 DILX
2160 CLA CLL /CLEAR AC
2161 TAD CURPLT /RECALL CURRENT PLOT BITS
2162 SNA CLA /SKIP IF POINTS REMAINING
2163 JMP WRDEND /ELSE WORD IS FINISHED
2164 CNTINU, TAD YTEMP /INCREMENT TEMPORARY
2165 TAD YINCR / Y-VALUE FOR NEXT
2166 DCA YTEMP / CHARACTER STEP
2167 ISZ COUNT6 /SKIP IF 6 BITS PLOTTED
2168 JMP YPLOT /ELSE PLOT NEXT ONE
2169 JMP XPLOT /GO UPDATE X-VALUE
2170 WRDEND, ISZ COUNT2 /SKIP IF ANOTHER BIT WORD
2171 \f JMP EXIT /ELSE EXIT
2172 TAD I POINT /FETCH SECOND BIT WORD
2173 SZA /SKIP IF NO PLOT POINTS
2174 JMP XPLOT-1 /ELSE GO PLOT THEM
2175 EXIT, TAD XVALUE /INCREMENT ABSCISSA
2176 TAD XINCR / FOR SPACE BETWEEN
2177 DCA XVALUE / SYMBOLS
2178 JMP I CHAR /EXIT FROM CHAR
2179 /
2180 SPCHAR, TAD I POINT /FETCH TRANSFER VECTOR
2181 DCA POINT /STORE AS INDIRECT ADDRESS
2182 \f JMP I POINT /GO TO APPROPRIATE ROUTINE
2183 SPACE, TAD XINCR /FETCH BASIC ABSCISSA INCREMENT
2184 CLL RTL /MULTIPLY BY FOUR AND
2185 JMP EXIT / GO CREATE SPACE
2186 CRLF, TAD INITX /"CARRIAGE RETURN" RESETS X
2187 DCA XVALUE / TO ITS ORIGINAL VALUE
2188 LF, TAD YINCR /"LINE FEED"
2189 CLL RTL / DECREMENTS THE
2190 CLL CIA RAL / Y-VALUE BY
2191 TAD YVALUE / EIGHT SCALE
2192 DCA YVALUE / STEPS
2193 JMP I CHAR /EXIT FROM CHAR
2194 RESET, TAD INITX /"RESET" RESETS
2195 DCA XVALUE / X AND Y TO
2196 TAD INITY / THEIR ORIGINAL
2197 JMP RESET-2 / VALUES
2198 TERM, ISZ CHAR /TERMINATE CODE CAUSES
2199 JMP I CHAR / EXIT TO P+2
2200 /
2201 INITX, -150 /INITIAL X-VALUE
2202 INITY, 327 /INITIAL Y-VALUE
2203 XVALUE, 0 /CURRENT X-VALUE
2204 YVALUE, 0 /CURRENT Y-VALUE
2205 XINCR, 6 /BASIC X INCREMENT VALUE
2206 YINCR, 10 /BASIC Y INCREMENT VALUE
2207 YTEMP, 0 /TEMPORARY Y-VALUE
2208 CURPLT, 0 /CURRENT PLOT BITS
2209 ADDR, 0 /CURRENT STRING ADDRESS
2210 COUNT6, 0 /6-BIT COUNTER
2211 COUNT2, 0 /2-WORD COUNTER
2212 KM6, -6 /CONSTANT FOR COUNT6
2213 K77, 77 /CHARACTER CODE MASK
2214 POINT, 0 /TABLE POINTER
2215 /
2216 \f
2217 /
2218 TABLE, .+1 /TABLE BASE ADDRESS
2219 0 /SPECIAL CHARACTER (00)
2220 TERM /TERMINATION CODE
2221 7611 / A
2222 1176
2223 7745 / B
2224 4532
2225 3641 / C
2226 4122
2227 7741 / D
2228 4136
2229 7745 / E
2230 4541
2231 7705 / F
2232 501
2233 7741 / G
2234 5173
2235 7710 / H
2236 1077
2237 4177 / I
2238 4100
2239 2040 / J
2240 4037
2241 7714 / K
2242 2241
2243 7740 / L
2244 4040
2245 7702 / M
2246 277
2247 7706 / N
2248 3077
2249 7741 / O
2250 4177
2251 7705 / P
2252 502
2253 3641 / Q
2254 6176
2255 7715 / R
2256 2542
2257 2245 / S
2258 5122
2259 177 / T
2260 100
2261 3740 / U
2262 4037
2263 1720 / V
2264 4037
2265 7730 / W
2266 3077
2267 4136 / X
2268 3641
2269 374 / Y
2270 7403
2271 6151 / Z
2272 4543
2273 7741 / [
2274 0
2275 204 / \
2276 1020
2277 4177 / ]
2278 0
2279 436 / ^
2280 400
2281 0 /SPECIAL CHARACTER (37)
2282 RESET /RESET
2283 0 /SPECIAL CHARACTER (40)
2284 SPACE /SPACE
2285 5600 / !
2286 0
2287 303 / "
2288 0
2289 1477 / #
2290 7714
2291 2277 / MARKER
2292 2200
2293 2313 / %
2294 6462
2295 7777 / BLOCK
2296 7777
2297 300 / '
2298 0
2299 3641 / (
2300 0
2301 4136 / )
2302 0
2303 4040 / UNDERSCORE (52)
2304 4040
2305 1034 / +
2306 1000
2307 0 /SPECIAL CHARACTER (54)
2308 LF /LINE FEED
2309 1010 / -
2310 1000
2311 4000 / .
2312 0
2313 2010 / /
2314 402
2315 3641 / 0
2316 4136
2317 4442 / 1
2318 7740
2319 4261 / 2
2320 5146
2321 2145 / 3
2322 5321
2323 1710 / 4
2324 1077
2325 4745 / 5
2326 4531
2327 7750 / 6
2328 5070
2329 6111 / 7
2330 503
2331 2255 / 8
2332 5522
2333 705 / 9
2334 577
2335 2400 / :
2336 0
2337 0 /SPECIAL CHARACTER (73)
2338 CRLF /CARRIAGE RETURN; LINE FEED
2339 1024 / >
2340 4200
2341 1212 / =
2342 1200
2343 4224 / <
2344 1000
2345 255 / ?
2346 300
2347
2348 \f
2349 /
2350 / HERE FOLLOW THE PACKED ASCII TEXTS FOR THE VARIOUS
2351 / VICTORY MESSAGES. PERSONS ADVENTEROUS TO FIND THIS MIGH CARE
2352 / TO TOGGLE IN SOME CUTE LITTLE MESSAGES OF THEIR OWN.
2353 /
2354
2355 MESS0, 3773
2356 MESS5, 7340
2357 0
2358 / 4040
2359 / 4040
2360 / 4000
2361
2362 MESS1, 2427 /"TW"
2363 1700 /"O\"
2364
2365 MESS2, 1716 /"ON"
2366 0500 /"E\"
2367
2368 MESS3, 2711 /"WI"
2369 1623 /"NS"
2370 4100 /"!\"
2371
2372 MESS4, 1617 /"NO"
2373 0217 /"BO"
2374 0431 /"DY"
2375 0000 /"\"
2376
2377 \f
2378 *4000
2379 / KK: ADDED STARS IN THE SKY
2380 /
2381 FINIS1, TAD I SB
2382 RAR / SCALE COORDINATES
2383 TAD M1000 / SHIFT TO LEFT
2384 MQL
2385 CLA CLL
2386 ISZ SB
2387 TAD I SB
2388 SNA
2389 JMP FINIS3 / END OF STARS
2390 RAR / SCALE COORDINATES
2391 TAD M1000 / SHIFT DOWN
2392 DILY
2393 MQA CLA
2394 DILX
2395 ISZ SB
2396 CLA CLL
2397 TAD M100 / A LITTLE DELAY
2398 FINIS2, IAC
2399 SZA
2400 JMP FINIS2
2401 JMP FINIS1
2402 /
2403 FINIS3, TAD SBI / REINITIALIZE STAR-POINTER
2404 DCA SB
2405 TAD ONE2 / AT THE REAL END:
2406 CMA / POSITION DOT EITHER TO
2407 DCA ONE2 / SHIP1 OR SHIP2
2408 TAD ONE2
2409 SNA CLA
2410 JMP FINIS4
2411 TAD LASTX
2412 DILX
2413 CLA
2414 TAD LASTY
2415 DILY
2416 JMP .
2417 FINIS4, TAD LASTX1
2418 DILX
2419 CLA
2420 TAD LASTY1
2421 DILY
2422 JMP .
2423 ONE2, 0
2424 /
2425 / STARS COME FROM THE 24-VOLUME "DTV-TASCHENLEXIKON"
2426 /
2427 *4200
2428 DECIMAL
2429 STARS, / PEGASUS
2430 425; 1665
2431 490; 1730
2432 615; 1740
2433 682; 1735
2434 920; 1770
2435 725; 1615
2436 680; 1575
2437 425; 1665
2438 682; 1735
2439 725; 1615
2440 /CANCER
2441 1500; 632
2442 1365; 615
2443 1445; 585
2444 1445; 545
2445 /URSA MAJ.
2446 725; 640
2447 725; 640
2448 800; 665
2449 800; 665
2450 855; 660
2451 855; 660
2452 885; 685
2453 975; 740
2454 975; 740
2455 925; 640
2456 925; 640
2457 990; 690
2458 990; 690
2459 1000; 570
2460 1110; 560
2461 1150; 590
2462 1140; 700
2463 1200; 700
2464 1200; 730
2465 /ORION
2466 1710; 1180
2467 1710; 1180
2468 1680; 1130
2469 1730; 1080
2470 1730; 1080
2471 /SERPENS
2472 190; 520
2473 230; 510
2474 230; 510
2475 280; 490
2476 300; 560
2477 /OPHIUCHUS
2478 100; 1000
2479 60; 880
2480 130; 885
2481 130; 885
2482 130; 750
2483 /ERIDANUS
2484 1660; 1730
2485 1700; 1680
2486 1740; 1630
2487 1810; 1600
2488 /POLARSTERN
2489 950; 1025
2490 950; 1025
2491 859; 1011
2492 810; 975
2493 719; 939
2494 800; 932
2495 750; 882
2496 790; 870
2497 790; 870
2498 /EICHUNG
2499 / 1; 1
2500 / 2000; 1
2501 / 2000; 2000
2502 / 1; 2000
2503 0; 0
2504 OCTAL
2505 *7400
2506
2507 DISBUF, 0
2508
2509 / THE DISPLAY BUFFERS BEGIN HERE AND EXTEND UP SOMEWHERE TO
2510 / AROUND 7575 OR SO.
2511 /
2512 /
2513 /
2514 /
2515 /
2516
2517
2518
2519 $
2520
2521 ////////////////////////////
2522 /
2523 / THIS IS THE END
2524 /
2525 ///////////////////////////
2526
2527 \f