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