home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Emulators / Ersatz-2.0 / lunar / gtlem.mac < prev    next >
Encoding:
Text File  |  2000-04-01  |  145.2 KB  |  5,102 lines

  1. ;*********************************************************************
  2. ;
  3. ;    MOONLANDER FOR THE GT40 TERMINAL, FIRST VERSION.
  4. ;    LEM.090,    FEBRUARY 25, 1973    5:55 PM
  5. ;    WRITTEN BY JACK BURNESS.
  6. ;        FOR FANTASTIC PROGRAMS AT REASONABLE PRICES,
  7. ;        OR EXPERT CONSULTING DONE IN EVERY PHASE OF SYSTEM
  8. ;        DESIGN AND IMPLEMENTATION, WRITE
  9. ;            JACK BURNESS
  10. ;            P.O. BOX 411
  11. ;            MAYNARD, MASS.
  12. ;                    01754
  13. ;*********************************************************************
  14.     IN1=R0                ;INPUT REGISTER FOR SUBROUTINE CALLING.
  15.     IN2=R1                ;SECOND VALUE.
  16.     RET1=R2                ;HIGH ORDER PORTION OF SUBROUTINE RETURN.
  17.     RET2=R3                ;LOW ORDER PORTION.
  18.     TEMP=R4                ;SCRATCH REGISTER.
  19.     TEMP2=R5            ;SECOND SCRATCH.
  20. ;
  21. ;    MAJOR DEFINITIONS FOR THE SYSTEM.
  22. ;
  23.     CLKFRQ=50.            ;FREQUENCY OF THE RUN TIME CLOCK.
  24.     FIVESECONDS=300.        ;DEFINE FIVE SECONDS WORTH OF TIME.
  25.     CLKFDG=1500.            ;CLKFRQ*25.
  26.     CLKFG2=3000.            ;CLKFRQ*50.
  27.     CLKFG3=600.            ;CLKFRQ*10.
  28.     LKS=177546            ;CLOCK ADDRESS.
  29.     G=32.                ;ACTUALLY 32.174 IN FUTURE CALCULATIONS.
  30.     G1=16087.            ;G*500
  31.     G2=2670.            ;MOON GRAVITY*500. (.166 EARTH'S).
  32.     STATUS=177776            ;WHERE STATUS IS LOCATED.
  33.     DISTOP=173400            ;THE DISPLAY STOP INSTRUCTION.
  34.     SETSVM=106120            ;INSTRUCTION TO SET SMALL VECTOR MODE.
  35.     SETPNT=114000            ;BASIC SET POINT INSTRUCTION.
  36.     DISJMP=160000            ;BASIC DISPLAY JUMP INSTRUCTION.
  37.     DPC=172000            ;DISPLAY PROGRAM COUNTER.
  38.     DSR=172002            ;DISPLAY STATUS REGISTER.
  39.     XSR=172004            ;X STATUS REGISTER.
  40.     YSR=172006            ;Y STATUS REGISTER.
  41.     INT=40000            ;INTENSITY BIT.
  42.     LEFT=20000            ;BIT TO SET FOR LEFT X IN LONG V
  43.     DOWN=20000            ;BIT TO SET FOR DOWN Y IN LONG VECTOR.
  44.     OTHER=100            ;BIT TO SET LEFT OR DOWN FOR SHORT MODE.
  45.     INTTWO=200            ;INTENSIFY BIT SHIFTED OVER.
  46.     MINTRS=10.            ;10% IS MIN. ROCKET WILL RUN AT.
  47.     MAXTRS=10500.            ;MAXIMUM THRUST OF ENGINE.
  48.     EMPTY=14300.            ;EMPTY WEIGHT OF SHIP (18200 DESCENT FUEL).
  49.     FUELS=30000.            ;INITIAL START QUANTITY OF FUEL.
  50.     DX1=0.                ;X POSITION FOR DATA MESSAGE.
  51.     DX2=250.
  52.     DX3=500.
  53.     DX4=750.
  54.     DY1=730.            ;Y POSITION FOR DATA MESSAGE.
  55.     DY2=730.
  56.     DY3=730.
  57.     DY4=730.
  58.     ITEMX1=900.            ;X POSITIONS FOR CHOICE OF DISPLAY.
  59.     ITEMX2=ITEMX1
  60.     ITEMX3=ITEMX1
  61.     ITEMX4=ITEMX1
  62.     ITEMX5=ITEMX1
  63.     ITEMX6=ITEMX1
  64.     ITEMX7=ITEMX1
  65.     ITEMX8=ITEMX1
  66.     ITEMX9=ITEMX1
  67.     ITEMXT=ITEMX1
  68.     ITEMXE=ITEMX1
  69.     ITEMXS=ITEMX1
  70.     ITEMDY=22.            ;SET UP DELTA Y VALUES NOW.
  71.     ITEMYS=5.            ;DEFINE BOTTOM Y NOW.
  72.     ITEMYE=ITEMYS+ITEMDY        ;DEFINE ALL THE OTHER Y'S AS DELTA'S.
  73.     ITEMYT=ITEMYE+ITEMDY
  74.     ITEMY9=ITEMYT+ITEMDY
  75.     ITEMY8=ITEMY9+ITEMDY
  76.     ITEMY7=ITEMY8+ITEMDY
  77.     ITEMY6=ITEMY7+ITEMDY
  78.     ITEMY5=ITEMY6+ITEMDY
  79.     ITEMY4=ITEMY5+ITEMDY
  80.     ITEMY3=ITEMY4+ITEMDY
  81.     ITEMY2=ITEMY3+ITEMDY
  82.     ITEMY1=ITEMY2+ITEMDY
  83.     SLFTAX=945.            ;COORDINATES FOR THE TURNING ARROWS.
  84.     SLFTAY=375.
  85.     BLFTAX=945.
  86.     BLFTAY=330.
  87.     SRGTAX=955.
  88.     SRGTAY=375.
  89.     BRGTAX=955.
  90.     BRGTAY=330.
  91.     BARLX=947.            ;LEFT EDGE OF THROTTLE BAR.
  92.     BARBY=450.            ;BOTTOM OF THE THROTTLE BAR.
  93.     BARTY=700.            ;TOP OF THE BAR.
  94.     BARSIZ=250.            ;LENGTH OF THE BAR.
  95.     BARFDG=BARBY+25.        ;ARITHEMENTIC FUDGE FACTOR.
  96.     BARMXR=940.            ;WHERE UNDERLINING IS TO START.
  97.     BARMXL=43.+LEFT            ;LENGTH OF UNDERLINE.
  98.     BAREST=55.+LEFT            ;WHERE TO POSITION FOR THE LEADING BLANKS.
  99.     BARADD=13.            ;AMOUNT TO ADD TO Y FOR UNDERLINE.
  100.     .PAGE
  101. ;
  102. ;
  103. ;    MISC INFORMATION.
  104. ;    ---- ------------
  105. ;        ALL VELOCITIES ARE SIGNED AND STORED IN TENTHS OF FEET PER SECOND.
  106. ;        ALL ACCELERATIONS ARE 500 TIMES ACTUAL.
  107. ;        THE HORIZONTAL AND VERTICAL DISTANCE IS IN FEET (SIGNED).
  108. ;        THE FUEL IS IN TENTHS OF POUNDS.
  109. ;        WEIGHT OF THE CRAFT IS IN POUNDS, AS IS THRUST.
  110. ;        ORIENTATION OF THE SHIP IS STRICTLY COMPASS (I.E. 
  111. ;        ZERO DEGREES IS AT THE TOP, 90 TO THE RIGHT, ETC.
  112. ;            M A I N   D A T A   A R E A .
  113. ;
  114. TURN:    .WORD    0            ;PRESENT RATE OF TURN AS SELECTED BY USER.
  115. ANGLE:    .WORD    0            ;ANGLE CURRENTLY BEING USED FOR TRIG CALCULATIONS.
  116. ANGLER:    .WORD    0            ;REMAINDER OF ANGLE FOR TURNING.
  117. SINANG:    .WORD    0            ;SINE OF THAT ANGLE
  118. COSANG:    .WORD    0            ;COSINE OF THAT ANGLE.
  119. ACCEL:    .WORD    0            ;CURRENT ACCEL OF SHIP CAUSED BY ROCKET.
  120. HORACC:    .WORD    0            ;CURRENT HORIZONTAL ACCELERATION.
  121. VERACC:    .WORD    0            ;CURRENT VERTICAL ACCELERATION (INCLUDING G).
  122. HORVEL:    .WORD    0            ;CURRENT HORIZONTAL VELOCITY>
  123. HORREM:    .WORD    0            ;REMAINDER OF HORIZONTAL VELOCITY AFTER DIVIDING.
  124. VERVEL:    .WORD    0            ;CURRENT VERTICAL VELOCTIY.
  125. VERREM:    .WORD    0            ;REMAINDER OF VERTICAL VELOCITY AFTER DIVIDING.
  126. HORDIS:    .WORD    0            ;CURRENT HORIZONTAL DISTANCE.
  127. VERDIS:    .WORD    0            ;CURRENT VERTICAL DISTANCE.
  128. PERCNT:    .WORD    0            ;% OF THRUST FROM LIGHT BAR.
  129. OLDPER:    .WORD    0            ;PREVIOUS % TO SAVE USELESS DISPLAY CALCULATION.
  130. PERTRS:    .WORD    0            ;% THRUST THE USER IS REQUESTING.
  131. THRUST:    .WORD    0            ;ACTUAL THRUST DELIVERED.
  132. FUEL:    .WORD    0            ;TENTHS OF # OF LBS (EARTH) OF FUEL REMIANING.
  133. WEIGHT:    .WORD    0            ;CURRENT EARTH WEIGHT OF SHIP.
  134. TICKS:    .WORD    0            ;# OF TICKS. MOVED OVER TO CLOCK.
  135. CLOCK:    .WORD    0            ;# OF CLOCK TICKS SINCE LAST CALCULATION.
  136. TIME:    .WORD    0            ;ACCUMULATION OF "CLOCK". I.E. TOD.
  137. BIGXCT:    .WORD    0            ;PRESENT POSITION OF SHIP (X RASTOR).
  138. LEFTED:    .WORD    0            ;LEFT EDGE OF SCREEN FOR CLOSEUP WORK (DELTA X).
  139. LEFEET:    .WORD    0            ;DISTANCE FROM LANDING THAT LEFTEDGE IS DURING CLOSEUP.
  140. INDEXL:    .WORD    0            ;INDEX FOR FEATURE JUST TO LEFT OF SHIP.
  141. AVERT:    .WORD    0            ;AVERAGE RASTOR HEIGHT OF TERAIN.
  142. AVERY:    .WORD    0            ;AVERAGE Y HEIGHT OF THE TERRAIN.
  143. RADARY:    .WORD    0            ;AVERAGE RADAR HEIGHT ABOVE THE TERRAIN.
  144. LASTX:    .WORD    0            ;USED TO KEEP TRACK OF WHERE DRAW WAS WORKING.
  145. LASTY:    .WORD    0            ;SAME FOR Y.
  146. LOWY:    .WORD    0            ;LOWER LIMIT TO SHOW INVISIBLE VECTOR.
  147. LOWEST:    .WORD    0            ;LOWEST Y COORDINATE OF PRESENT SCREEN FIGURE.
  148. SAVEY:    .WORD    0            ;LOWEST Y OF LAST DRAWN SHIP.
  149. FRAND:    .WORD    0            ;RANDOMIZER WORD FOR ROCKET FLICKER.
  150. FSHIFT:    .WORD    0            ;X SHIFTER FOR FLAME.
  151. FINT:    .WORD    0            ;INTENSITY OF FLAME.
  152. FLINE:    .WORD    0            ;LINE TYPE FOR FLAME.
  153. SHIPTP:    .WORD    0            ;FLIP-FLOP TO DETERMINE WHICH BUFFER
  154.                     ;THE USER IS DISPLAYING SHIP FROM.
  155. DNUM:    .WORD    0            ;CURRENT PICTURE WE ARE DISPALYING.
  156. DSTACK:    .WORD    STACKD            ;CURRENT DISPLAY STACK POINTER.
  157. LPFLG1:    .WORD    0            ;CURRENT ADDRESS OF VALUE TO BE DISPLAYED.
  158. OLDHIT:    .WORD    0            ;PREVIOUS LIGHT PEN ADDRESS COUNTER TO
  159. HITCNT:    .WORD    0            ;AVOID SPURIOUS HITS.
  160. MOON:    .WORD    .            ;CURRENT STATUS OF PICTURE OF MOON.
  161. DRAWCT:    .WORD    0            ;COUNTER FOR DRAWING THE MOON.
  162. DRAWTY:    .WORD    0            ;LOCAL COUNTER FOR CHANGING THE INTENSITY OF
  163. DRAWTZ:    .WORD    0            ;THE SURFACE OF THE MOON.
  164. DINT:    .WORD    0
  165. DTYPE:    .WORD    0
  166. DFUDGE:    .WORD    0            ;ADDITIONAL MOON FUDGING FOR CLOSEUP.
  167. XTYPE:    .WORD    0            ;THIS IS THE RANDOMIZING WORD FOR
  168. RADIUS:    .WORD    0            ;THE EXPLOSION, AND THE BLAST RADIUS.
  169. DUSTX:    .WORD    .            ;A RANDOM WORD FOR GENERATING DUST.
  170.     .=.+40                ; -- RESERVE 40 OCTAL WORDS FOR STACK
  171. STACKD:                    ;MAKE SURE THAT THERE IS ENOUGH SPACE FOR IT.
  172.     .PAGE
  173. ;                C  O  D  E
  174. ;                -  -  -  -
  175. ;               START OF THE SYSTEM.
  176. START:    RESET                ; DO A FEW HEAVY RESETS
  177.     RESET
  178. ;
  179. ;        INSTALL THE NEW VECTORS
  180. ;
  181.     MOV    #POWERF,24        ; PWR FAIL VECTOR
  182.     MOV    #340,26
  183.     MOV    #KBDINT,60        ; KEYBOARD
  184.     MOV    #340,62
  185.     MOV    #TIMER,100        ; LINE CLOCK
  186.     MOV    #300,102
  187.     MOV    #DISPLY,320        ; VT-11
  188.     MOV    #200,322
  189.     MOV    #LIGHT,324
  190.     MOV    #200,326
  191.     MOV    #DBUSE,330
  192.     MOV    #340,332
  193. ;
  194. ;        DISPLAY THE STARTING MESSAGE (ONCE)
  195. ;
  196.     MOV    #STACK,SP
  197.     MOV    #STARTM,DPC
  198.     MOV    #100,177560        ; ENABLE KBD INTERRUPTS
  199.     MOV    #100,LKS        ; ENABLE LINE CLOCK
  200.     JSR    PC,DELAY        ; WAIT 10 SECS AND GET STARTED
  201.     .WORD    10.
  202. ;
  203. ;        ONCE STARTED, ALL RESTARTS OCCUR HERE
  204. ;
  205. RESTAR:    MOV    #MOONST,IN1        ;NOW SET THE MOON AREA TO ALL DISTOP'S
  206.     MOV    #MOONEN,IN2        ;FOLLOWED BY A ZERO. GET LOC TO GET COUNT.
  207.     SUB    IN1,IN2            ;AND GET # OF BYTES.
  208.     ASR    IN2            ;GET NUMBER OF WORDS TO CLEAR.
  209.     ASR    IN2            ;GET NUMBER OF DOUBLE WORDS TO CLEAR.
  210. RESTL1:    MOV    #DISTOP,(IN1)+        ;PUT IN THE DISPLAY STOP INSTRUCTIONS NOW.
  211.     CLR    (IN1)+
  212.     DEC    IN2
  213.     BGT    RESTL1            ;AND LOOP TILL DONE.
  214.     CLR    STATUS            ;CLEAR CPU STUFF.
  215.     MOV    #STACK,SP        ;SET UP THE STACK POINTER NOW.
  216.     MOV    #INIT,IN1        ;INITIALIZE THE SYSTEM NOW.
  217. STARTL:    MOV    (IN1)+,IN2        ;PICK UP NEXT COMMAND.
  218.     BEQ    IDLE            ;ZERO. ALL DONE.
  219.     MOV    (IN1)+,(IN2)        ;DO COMMAND NOW.
  220.     BR    STARTL            ;AND LOOP FOREVER.
  221. ;
  222. ;        THIS IS THE MAIN WAIT POINT. IT IS
  223. ;        ACTIVATED IN THE NORMAL RUNNING MODE.
  224. ;        SUBROUTINE "EIDLE" CAN BE CALLED WHEN
  225. ;        IT IS TIME TO BLAST OFF FROM THE MOON
  226. ;        AFTER GETTING A HAMBURGER.
  227. ;
  228. IDLE:    JSR    PC,EIDLE        ;WAIT FOR AN EVENT.
  229.     BR    IDLE            ;AND LOOP FOREVER.
  230. EIDLE:    WAIT                ;WAIT FOR AN INTERUPT TO OCCUR.
  231. 1$:    CMP    TICKS,#5        ;WAIT FOR CLOCK ON THE 40AND 45
  232.     BLT    1$
  233.     MOV    TICKS,IN1        ;PICK UP THE NUMBER OF CLOCK TICKS NOW.
  234.     BEQ    EXIDLE            ;IF NONE, JUST EXIT.
  235.     CLR    TICKS            ;ELSE RESET THE LITTLE TICK COUNTER.
  236.     MOV    IN1,CLOCK        ;AND THEN PUT THE # OF TICKS AWAY FOR CALCULATIONS.
  237.     JSR    PC,SHOWSP        ;DO CALCULATIONS.
  238. EXIDLE:    RTS    PC            ;AND THEN RETURN TO CALLER.
  239.     .PAGE
  240. ;
  241. ;        THE INITIALIZATION CRAP.
  242. ;
  243. INIT:    .WORD    TURN,-1.
  244.     .WORD    ANGLE,-70.
  245.     .WORD    ANGLER,0
  246.     .WORD    HORREM,0
  247.     .WORD    VERREM,0
  248.     .WORD    HORVEL,10000.
  249.     .WORD    VERVEL,-5000.
  250.     .WORD    HORDIS,-22000.
  251.     .WORD    VERDIS,23000.
  252.     .WORD    PERCNT,75.
  253.     .WORD    LPBARY,BARFDG+150.
  254.     .WORD    OLDPER,-1.
  255.     .WORD    FUEL,FUELS
  256.     .WORD    TIME,0
  257.     .WORD    CLOCK,0
  258.     .WORD    TICKS,0
  259.     .WORD    LOWY,0
  260.     .WORD    DNUM,0
  261.     .WORD    DSTACK,STACKD
  262.     .WORD    STACKD,DTOP
  263.     .WORD    LPFLG1,0
  264.     .WORD    MOON,.
  265.     .WORD    DPC,ITEME1
  266.     .WORD    LKS,100
  267.     .WORD    FSUBC,0
  268.     .WORD    SHIPDP,0
  269.     .WORD    MOONGO,0
  270.     .WORD    SYSMES,0
  271.     .WORD    DUSTON,0
  272.     .WORD    DIALTB,ITEME1
  273.     .WORD    DIALTB+2,ITEME3
  274.     .WORD    DIALTB+4,ITEME8
  275.     .WORD    DIALTB+6,ITEME9
  276.     .WORD    ITEME1+2,117560
  277.     .WORD    ITEME2+2,117560
  278.     .WORD    ITEME3+2,117560
  279.     .WORD    ITEME4+2,117560
  280.     .WORD    ITEME5+2,117560
  281.     .WORD    ITEME6+2,117560
  282.     .WORD    ITEME7+2,117560
  283.     .WORD    ITEME8+2,117560
  284.     .WORD    ITEME9+2,117560
  285.     .WORD    ITEMET+2,117560
  286.     .WORD    ITEMEE+2,117560
  287.     .WORD    ITEMES+2,117560
  288.     .WORD    OLDHIT,.
  289.     .WORD    HITCNT,10.
  290.     .WORD    LPSW,DISTOP
  291.     .WORD    0
  292.     .PAGE
  293. ;
  294. ;        GO HERE IF THERE IS ANY ACTION FROM THE KEYBOARD
  295. ;
  296. KBDINT:    RESET
  297.     RTI
  298.     .PAGE
  299. ;
  300. ;            POWER FAIL ROUTINES HERE.
  301. ;
  302. POWERF:    MOV    #STACKD,DSTACK        ;SET UP ALL THE STACKS NOW.
  303.     MOV    #DTOP,STACKD
  304.     CLR    DNUM
  305.     MOV    #ITEME1,DPC        ;THE DISPLAY IS GOING NOW.
  306.     MOV    #100,LKS        ;SO IS THE CLOCK.
  307.     MOV    #STACK,SP        ;NOW SO IS THE PROGRAM.
  308.     CLR    STATUS
  309.     JMP    IDLE            ;AND REENTER.
  310. ;
  311. ;            DISPLAY BUS ERROR ROUTINES.
  312. ;
  313. DBUSE:    CLR    DNUM            ;RECYCLE DISPLAY TO THE TOP OF THE LIST.
  314.     MOV    IN1,-(SP)        ;MAKE IT LOOK LIKE A NORMAL INTERUPT.
  315.     MOV    IN2,-(SP)
  316.     MOV    #DITEM1,IN2
  317.     JMP    DTOPOK            ;AND REENTER IT NOW.
  318.     .PAGE
  319. ;
  320. ;    THIS ROUTINE WILL DRAW THE SHIP RELATIVE TO IT'S CENTER.
  321. ;    THE ANGLES HAVE ALREADY BEEN GOTTEN FROM SOMEWHERE
  322. ;    ELSE AND HAVE BEEN LEFT IN COSANG AND SINANG. IN ADDITION,
  323. ;    IN1 POINTS TO THE COMMANDS ON HOW TO DRAW THE SHIP, AND IN2
  324. ;    POINTS TO WHERE TO LEAVE THEM.
  325. ;    COMMAND LIST OF THE THE FORM:
  326. ;        "ADDRESS OF ROUTINE"
  327. ;        "EXTRA DATA, IF NEEDED".
  328. ;    IF IT'S A DATA POINT TO BE ROTATED, THEN THE NEXT WORD
  329. ;    HAS THE X AND Y VALUES AS SEPARATE BYTES. THE X VALUE
  330. ;    IS THE BYTE ON THE RIGHT....... REMEMBER THAT.
  331. ;
  332. DRAW:    MOV    IN1,TEMP        ;MOVE OVER THE INPUT LIST POINTER.
  333.     MOV    IN2,TEMP2        ;AND THE OUTPUT LIST POINTER.
  334.     CLR    LASTX            ;SET TO CENTER OF OBJECT.
  335.     CLR    LASTY
  336.     MOV    #77777,LOWEST        ;SET UP LOWEST POINT WE HAVE DRAWN SO FAR.
  337. DRAWLP:    MOV    (TEMP)+,PC        ;GO TO FIRST INSTRUCTION.
  338. DRAWIS:    CLR    -(SP)            ;DRAW INVISIBLE SHORT.
  339.     JSR    PC,DRAWRT        ;ROTATE NEXT SET OF POINTS.
  340.     BR    DRAWSC            ;AND THEN INSERT THEM INTO LIST.
  341. DRAWVS:    MOV    #40000,-(SP)        ;DRAW VISIBLE SHORT.
  342.     JSR    PC,DRAWRT        ;ROTATE RETURNS X IN RET1, Y IN RET2.
  343.     CMP    LASTY,LOWY        ;SEE IF THIS LINE SHOULD BE DRAWN.
  344.     BGE    DRAWV1            ;YEP.
  345.     CLR    (SP)            ;NOPE. CLEAR OUT DISPLAY BIT.
  346.     BR    DRAWSC
  347. DRAWV1:    CMP    RET2,LOWY        ;CHECK OTHER END NOW.
  348.     BGE    DRAWSC            ;IT'S ALSO OK.
  349.     CLR    (SP)            ;ELSE CLEAR THE DISPLAY BIT.
  350. DRAWSC:    MOV    RET1,IN1        ;MOVE OVER X.
  351.     SUB    LASTX,RET1        ;FIGURE OUT DELTA X.
  352.     BPL    DRAWS1            ;IF POSITIVE, OK. ELSE 
  353.     NEG    RET1            ;REVERSE SIGN AND SET MINUS BITS.
  354.     BIS    #20000,(SP)        ;IN THE NEW SHORT VECTOR COMMAND.
  355. DRAWS1:    BIC    #-100,RET1        ;REMOVE STRAY BITS (IF ANY).
  356.     SWAB    RET1            ;GET INTO CORRECT POSITION.
  357.     ROR    RET1
  358.     MOV    IN1,LASTX        ;AND FINALLY UPDATE THE NEW X POSITION.
  359.     MOV    RET2,IN2        ;AND NOW DO SAME THING WITH THE Y.
  360.     SUB    LASTY,RET2
  361.     BPL    DRAWS2
  362.     NEG    RET2
  363.     BIS    #100,(SP)
  364. DRAWS2:    BIC    #-100,RET2
  365.     MOV    IN2,LASTY        ;UPDATE THE NEW Y NOW.
  366.     CMP    IN2,LOWEST        ;SEE IF PRESENT Y IS LOWEST POINT ON SCREEN.
  367.     BGE    DRAWNL            ;NOT LOWEST.
  368.     MOV    IN2,LOWEST        ;IF LOWEST, REMEMBER IT.
  369. DRAWNL:    BIS    RET1,RET2        ;NOW CREATE THE NEW INSTRUCTION.
  370.     BIS    (SP)+,RET2
  371.     MOV    RET2,(TEMP2)+        ;AND STORE IT AWAY.
  372.     BR    DRAWLP            ;AND FINALLY LOOP AROUND AGAIN.
  373. DRAWIN:    MOV    (TEMP)+,(TEMP2)+    ;THIS MOVES OVER ONE WORD.
  374.     BR    DRAWLP
  375. DRAWDN:    MOV    #DISTOP,(TEMP2)+    ;THIS TERMINATES THE PICTURE
  376.     CLR    (TEMP2)+        ;AND WILL CAUSE THE SUBROUTINE TO EXIT.
  377.     RTS    PC
  378.     .PAGE
  379. ;
  380. ;    THIS ROTATES THE X AND Y BYTE. (TEMP) POINTS TO THE X.
  381. ;
  382. DRAWRT:    MOVB    (TEMP)+,IN1        ;PICK UP THE X.
  383.     MOV    SINANG,IN2
  384.     JSR    PC,TRGMUL        ;MULTIPLY THEM.
  385.     MOV    RET1,-(SP)        ;AND SAVE X*SINANG.
  386.     MOVB    (TEMP),IN1        ;PICK UP THE Y.
  387.     MOV    COSANG,IN2
  388.     JSR    PC,TRGMUL        ;MULTIPLY THEM OUT.
  389.     SUB    RET1,(SP)        ;X*SINANG-Y*COSANG (WE'LL REVERSE SIGNS LATER.
  390.     MOVB    -1(TEMP),IN1        ;PICK UP THE X AGAIN.
  391.     MOV    COSANG,IN2
  392.     JSR    PC,TRGMUL        ;X*COSANG
  393.     MOV    RET1,-(SP)
  394.     MOVB    (TEMP)+,IN1        ;Y ONCE AGAIN.
  395.     MOV    SINANG,IN2
  396.     JSR    PC,TRGMUL        ;Y*SINE
  397.     ADD    (SP)+,RET1        ;X*COS+Y*SIN
  398.     MOV    (SP)+,RET2        ;X*SIN-Y*COS
  399.     NEG    RET2            ;Y*COS-X*SIN
  400.     RTS    PC            ;AND EXIT NOW.
  401.     .PAGE
  402. ;
  403. ;    THIS ROUTINE FIGURES OUT THE ACCELERATION OF THE SHIP AND
  404. ;    THE AMOUNT OF FUEL REMAINING.
  405. ;
  406. ROCKET:    TST    FUEL            ;SEE HOW MUCH FUEL WE HAVE ON BOARD NOW.
  407.     BEQ    ROCKOFF            ;NONE. TURN OFF THE ENGINE.
  408.     MOV    PERTRS,IN1        ;PICK UP THE PERCENT THROTTLE NOW.
  409.     MOV    #MAXTRS,IN2        ;GET THE MAXIMUM THRUST NOW.
  410.     JSR    PC,MULTWO        ;GET PER CENT * MAXTHRUST.
  411.     MOV    #100.,IN1        ;GET %*MAXIMUM THRUST /100.
  412.     JSR    PC,DIVTWO
  413.     MOV    RET2,THRUST        ;SAVE IT AWAY NOW.
  414.     MOV    RET2,IN2
  415.     MOV    CLOCK,IN1        ;PICK UP NUMBER OF CLOCK TICKS.
  416.     JSR    PC,MULTWO
  417.     MOV    #CLKFDG,IN1        ;PICK UP FREQUENCY*25.
  418.     JSR    PC,DIVTWO        ;APPROX. 250LBS FUEL PER LB THRUST.
  419.     SUB    FUEL,RET2        ;NOW SUBTRACT OFF REMAINING FUEL.
  420.     BMI    FUELOK            ;IF NEGATIVE, THEN THE FUEL IS OK.
  421.     CLR    RET2            ;ELSE MAKE SURE TOTAL IS ZERO.
  422.     MOV    #DISTOP,LPSW        ;STOP THE LOW FUEL MESSAGE NOW.
  423.     BR    FUELKO            ;HE'S GOT NONE LEFT.
  424. FUELOK:    NEG    RET2            ;GET FUEL LEFT
  425.     TST    LPSW            ;SEE IF FUEL IS ALREADY LOW.
  426.     BEQ    FUELKO            ;IT IS.
  427.     CMP    RET2,#2000.        ;SEE IF UNDER 200 POUNDS.
  428.     BGE    FUELKO            ;NO. STILL OK.
  429.     CLR    LPSW            ;ELSE CLEAR THE SWITCH NOW.
  430.     BIS    #0,DSR            ;AND RING THE BELL <ONCE ONLY>
  431. FUELKO:    MOV    RET2,FUEL        ;AND SAVE IT AWAY.
  432.     CLR    RET1            ;NOW DIVIDE BY 10 TO CONVERT
  433.     MOV    #10.,IN1        ;TENTHS OF POUNDS TO POUNDS.
  434.     JSR    PC,DIVTWO        ;DO DIVISION NOW.
  435.     ADD    #EMPTY,RET2        ;ADD IN EMPTY WEIGHT OF SHIP.
  436.     MOV    RET2,WEIGHT        ;AND SAVE AWAY NOW.
  437.     MOV    THRUST,IN1        ;FIGURE OUT ACCELERATION NOW.
  438.     MOV    #G1,IN2
  439.     JSR    PC,MULTWO
  440.     MOV    TEMP,IN1        ;NOW DIVIDE BY WEIGHT.
  441.     JSR    PC,DIVTWO
  442.     MOV    RET2,ACCEL        ;AND SAVE THIS AWAY. A=TRS*G/W
  443.     MOV    RET2,IN1
  444.     MOV    SINANG,IN2        ;GET HORIZONTAL  ACCELERATION.
  445.     JSR    PC,TRGMUL
  446.     MOV    RET1,HORACC
  447.     MOV    ACCEL,IN1        ;AND GET THE VERTICAL ACCELERATION.
  448.     MOV    COSANG,IN2
  449.     JSR    PC,TRGMUL
  450.     SUB    #G2,RET1        ;DON'T FORGET ABOUT THE LUNAR GRAVITY.
  451.     MOV    RET1,VERACC
  452.     RTS    PC            ;AND RETURN NOW.
  453. ROCKOF:    MOV    #DISTOP,LPSW        ;TURN OFF LOW FUEL MESSAGE WHEN OUT.
  454.     CLR    THRUST            ;IF ROCKET IS OFF, TURN OFF THRUST.
  455.     MOV    #EMPTY,WEIGHT        ;UPDATE WEIGHT OF THE ROCKET NOW.
  456.     ADD    FUEL,WEIGHT
  457.     CLR    ACCEL            ;CLEAR THE ROCKET'S ACCELERATION'S NOW.
  458.     CLR    HORACC
  459.     MOV    #-G2,VERACC        ;SET ROCKET TO FREE FALL.
  460.     RTS    PC            ;AND RETURN NOW.
  461.     .PAGE
  462. ;
  463. ;    THIS ROUTINE WILL DRAW THE THRUST OF THE ROCKET, BASED ON
  464. ;    THE AMOUNT OF FUEL THAT IS BEING CONSUMED.
  465. ;
  466. FLAME:    MOV    IN1,IN2            ;MOVE OVER WHERE TO LEAVE FLAME.
  467.     MOV    PERTRS,TEMP        ;PICK UP THE PERCENTAGE THRUST NOW.
  468.     ASR    TEMP            ;DIVDE BY EIGHT FOR THE TABLE LOOKUP.
  469.     ASR    TEMP
  470.     ASR    TEMP
  471.     MOVB    YTHRST(TEMP),RET1    ;PICK UP THE Y LENGTH.
  472.     INC    FRAND            ;INCREMENT TO NEXT FLAME DIS@PLACEMENT.
  473.     MOV    FRAND,RET2
  474.     BIC    #-40,RET2        ;JUST THIRTY TWO VALUES POSSIBLE.
  475.     MOVB    YUPDWN(RET2),RET2    ;PICK UP FLAME DISPLACEMENT.
  476.     ADD    RET2,RET1        ;ADD THEM TOGETHER.
  477.     ADD    RET1,FSHIFT        ;FIX UP HORIZONTAL FLICKER NOW.
  478.     MOV    FSHIFT,RET2
  479.     BIC    #-4,RET2        ;JUST 0 TO 3.
  480.     MOV    #FLEN,TEMP        ;PICK UP #OF POINTS TO DO.
  481.     MOV    #FLAMXS,TEMP2        ;PICK UP POINTER TO WHERE TO INSERT.
  482.     ADD    #FLAMBT,RET2        ;LET RET2 POINT TO THE BYTE X TABLE.
  483. FLAMLP:    MOVB    (RET2)+,(TEMP2)+    ;INSERT X VALUE NOW.
  484.     MOVB    RET1,(TEMP2)+        ;INSERT THE Y VALUE.
  485.     ADD    #6,TEMP2        ;UPDATE PAST COMMANDS.
  486.     DEC    TEMP            ;AND LOOP TILL DONE.
  487.     BGT    FLAMLP
  488.     INC    FLINE            ;INCREMENT THE LINE TYPE NOW.
  489.     BIC    #-4,FLINE
  490.     ADD    #600,FINT        ;AND THE INTENSITY NOW.
  491.     BIC    #176177,FINT        ;AND MAKE JUST SEVEN BITS.
  492.     MOV    #106124,FLAMEX        ;SET UP PROTOTYPE COMMAND.
  493.     BIS    FLINE,FLAMEX        ;AND MOVE OVER THE DATA.
  494.     BIS    FINT,FLAMEX
  495.     MOV    #FLAMDO,IN1        ;FINALLY SET UP THE POINTER.
  496.     JMP    DRAW            ;AND DRAW THE FIGURE, AND RETURN
  497.     .PAGE
  498. ;
  499. ;    THIS ROUTINE GETS THE SINE AND COSINE FROM THE TABLES.
  500. ;
  501. TRIG:    MOV    ANGLE,IN1        ;PICK UP THE ANGLE NOW.
  502.     BPL    TRIG2            ;POSITIVE. SEE IF >180.
  503. TRIG1:    CMP    IN1,#-180.        ;NEGATIVE. SEE IF BELOW -180.
  504.     BGT    TRIG3            ;>-180. IT'S OK.
  505.     ADD    #360.,IN1        ;TOO SMALL. FUDGE IT AND LOOP.
  506.     BPL    TRIG3            ;IF STILL NEGATIVE. ELSE IT'S OK.
  507.     BR    TRIG1
  508. TRIG2:    CMP    IN1,#180.        ;POSITIVE. SEE IF IT'S >180.
  509.     BLE    TRIG3            ;NOPE. IT'S OK.
  510.     SUB    #360.,IN1        ;DECREMENT BY ONE REVOLUTION
  511.     BMI    TRIG2            ;AND LOOP IF IT'S STILL TO BIG.
  512. TRIG3:    MOV    IN1,ANGLE        ;AND NOW SAVE IT AWAY AGAIN.
  513.     BPL    TRIG4            ;CONVERT TO A GOOD COMPASS NOTATION.
  514.     ADD    #360.,IN1        ;ELSE WRAP AROUND ONCE.
  515. TRIG4:    ASL    IN1            ;SHIFT IT LEFT BECAUSE IT'S NECESSARY.
  516.     MOV    SINTAB(IN1),SINANG    ;NOW GET THE NECESSARY CONSTANTS.
  517.     CMP    IN1,#540.        ;SEE IF GREATER THEN 269 DEGREES.
  518.     BLT    TRIG5            ;NO. IT'S ALRIGHT.
  519.     SUB    #720.,IN1        ;TOO BIG. WRAP IT AROUND.
  520. TRIG5:    MOV    COSTAB(IN1),COSANG    ;NOW MOVE OVER THE COSINE.
  521.     RTS    PC            ;AND RETURN WHEN DONE.
  522.     .PAGE
  523. ;
  524. ;    THIS ROUTINE FIGURES OUT WHERE THE SHIP IS IN RELATIONSHIP TO THE MOON.
  525. ;
  526. WHERE:    MOV    HORACC,IN2        ;PICK UP THE X ACCEL.
  527.     BPL    WH1            ;IF POSITIVE, FINE.
  528.     NEG    IN2            ;ELSE NEGATE IT FOR A SECOND.
  529. WH1:    MOV    CLOCK,IN1        ;PICK UP ELAPSED TIME NOW.
  530.     JSR    PC,MULTWO        ;MULTIPLY THEM TOGETHER.
  531.     MOV    #CLKFG2,IN1        ;PICK UP TIMER FUDGE.
  532.     JSR    PC,DIVTWO        ;AND DIVIDE IT OUT NOW.
  533.     TST    HORACC            ;GET ORIGINAL SIGN OF X.
  534.     BPL    WH2
  535.     NEG    RET2
  536. WH2:    MOV    RET2,RET1        ;MOVE OVER A*T
  537.     ASR    RET2            ;GET .5*A*T
  538.     ADD    HORVEL,RET2        ;GET V0+.5*A*T
  539.     ADD    RET1,HORVEL        ;UPDATE THE HORIZONTAL VELOCITY NOW.
  540.     MOV    RET2,-(SP)        ;SAVE SIGN OF VELOCITY FOR TEST LATER.
  541.     MOV    RET2,IN2        ;VEL IN FPS*10
  542.     BPL    WH3
  543.     NEG    IN2
  544. WH3:    MOV    CLOCK,IN1        ;NOW GET THE DISTANCE COVERED.
  545.     JSR    PC,MULTWO
  546.     MOV    #CLKFG3,IN1
  547.     ADD    HORREM,RET2        ;BRING BACK THE REMAINDER FROM PREVIOUS OPERATIONS.
  548.     ADC    RET1            ;AND DON'T FORGET THE CARRY.
  549.     JSR    PC,DIVTWO        ;ACTUAL DISTANCE COVERED.
  550.     TST    (SP)+            ;RECALL OLD SIGN OF VELOCITY.
  551.     BPL    WH4
  552.     NEG    RET2
  553. WH4:    ADD    RET2,HORDIS        ;UPDATE THE DISTANCE NOW.
  554.     MOV    RET1,HORREM        ;AND SAVE THE REMAINDER NOW.
  555.     MOV    VERACC,IN2        ;NOW DO THE UP AND DOWN PART.
  556.     BPL    WH5            ;SAME SORT OF CRAP FOR THE Y.
  557.     NEG    IN2
  558. WH5:    MOV    CLOCK,IN1
  559.     JSR    PC,MULTWO
  560.     MOV    #CLKFG2,IN1
  561.     JSR    PC,DIVTWO
  562.     TST    VERACC
  563.     BPL    WH6
  564.     NEG    RET2
  565. WH6:    MOV    RET2,RET1
  566.     ASR    RET2
  567.     ADD    VERVEL,RET2
  568.     ADD    RET1,VERVEL
  569.     MOV    RET2,-(SP)        ;SAVE SIGN FOR LATER USE.
  570.     MOV    RET2,IN2
  571.     BPL    WH7
  572.     NEG    IN2
  573. WH7:    MOV    CLOCK,IN1
  574.     JSR    PC,MULTWO
  575.     MOV    #CLKFG3,IN1
  576.     ADD    VERREM,RET2        ;ADD IN PREVIOUS REMAINDER NOW.
  577.     ADC    RET1            ;AND FIDDLE IT ACCROSS.
  578.     JSR    PC,DIVTWO
  579.     TST    (SP)+
  580.     BPL    WH8
  581.     NEG    RET2
  582. WH8:    ADD    RET2,VERDIS
  583.     MOV    RET1,VERREM        ;AND SAVE THE REMAINDER NOW.
  584.     RTS    PC
  585.     .PAGE
  586. ;
  587. ;        THIS SECTION WILL FIGURE OUT THE POSITION OF THE
  588. ;    LUNAR MODULE AND WHICH VEIW TO USE.
  589. ;
  590. SHOWSP:    MOV    #-64.,LOWY        ;SET UP ABORT LIMIT OUT OF RANGE.
  591.     MOV    TURN,TEMP2        ;PICK UP THE RATE OF TURN.
  592.     CLR    TURN            ;AND TURN IT OFF NOW.
  593.     MOV    CLOCK,IN1        ;PICK UP THE NUMBER OF CLOCK TICKS.
  594.     MOV    TEMP2,IN2        ;AND MOVE OVER THE RATE OF TURN.
  595.     BPL    SHOWP1            ;IF POSITIVE, THEN OK,
  596.     NEG    IN2            ;ELSE NEGATE IT.
  597. SHOWP1:    JSR    PC,MULTWO        ;MULTIPLY THEM TOGETHER.
  598.     MOV    #CLKFRQ,IN1        ;AND THEN GET ACTUAL # OF DEGREES OF TURN.
  599.     ADD    ANGLER,RET2        ;DON'T FORGET TO ADD IN THE REMAINDER NOW.
  600.     ADC    RET1            ;AND THE CARRY, ALSO.
  601.     JSR    PC,DIVTWO
  602.     TST    TEMP2            ;AND FINALLY SET TO THE CORRECT SIGN.
  603.     BPL    SHOWP2
  604.     NEG    RET2
  605. SHOWP2:    ADD    RET2,ANGLE        ;UPDATE THE ANGLE NOW.
  606.     MOV    RET1,ANGLER        ;SAVE THE REMAINDER NOW.
  607.     JSR    PC,TRIG            ;AND GET NEW SINES AND COSINES.
  608.     ADD    #2,SHIPTP        ;GET WHICH SHIP'S
  609.     MOV    SHIPTP,IN2        ;BUFFER TO USE.
  610.     BIC    #-3,IN2            ;SO WE HAVE NO PROBLEMS.
  611.     MOV    SHIPLC(IN2),IN2        ;AND SET UP CALL.
  612.     MOV    #DESIGN,IN1        ;SET UP SHIP'S DESIGN.
  613.     MOV    IN2,-(SP)        ;REMEMBER THE BUFFER FOR LATER USE.
  614.     JSR    PC,DRAW            ;AND DRAW IT NOW.
  615.     MOV    (SP)+,SHIPDP        ;AND FINALLY MOVE OVER BUFFER POINTER TO CALL.
  616.     MOV    LOWEST,SAVEY        ;AND FINALLY SAVE THE LOWEST Y DRAWN.
  617. SHOWNT:    MOV    PERCNT,PERTRS        ;PICK UP THE PRESENT FUEL SETTING.
  618.     JSR    PC,ROCKET        ;FIGURE OUT ROCKET COMPONENTS.
  619.     JSR    PC,WHERE        ;AND NOW FIGURE OUT WHERE WE ARE ON MOON.
  620.     MOV    HORDIS,TEMP        ;PICK UP X IN FEET.
  621.     ADD    #22400.,TEMP        ;FUDGE UP DOWNRANGE CALCULATION.
  622.     ASR    TEMP            ;32 FEET PER RASTOR ON BIG SCALE.
  623.     ASR    TEMP
  624.     ASR    TEMP
  625.     ASR    TEMP
  626.     ASR    TEMP
  627.     MOV    TEMP,BIGXCT        ;AND SAVE AWAY FOR LATER USE.
  628.     MOV    TEMP,TEMP2
  629.     ASL    TEMP            ;NOW GET THE CURRENT RADAR HEIGHT.
  630.     ADD    #TERAIN,TEMP
  631.     MOV    (TEMP)+,IN1        ;LEFT TERAIN.
  632.     ADD    (TEMP),IN1        ;RIGHT TERAIN.
  633.     ASR    IN1            ;AVERAGE IT OUT.
  634.     MOV    IN1,AVERY        ;AND SAVE IT AWAY.
  635.     SUB    VERDIS,IN1        ;AND NOW GET THE RADAR HEIGHT.
  636.     NEG    IN1
  637.     MOV    IN1,RADARY        ;RADAR HEIGHT IS NOW CALCULATED.
  638.     TST    THRUST            ;NOW SEE ABOUT THE ROCKET FLAME.
  639.     BLE    NOFLAM            ;NO THRUST=NO FLAME.
  640.     MOV    #FLAMIN,IN1        ;THIS IS WHERE TO LEAVE THE FLAME.
  641.     JSR    PC,FLAME        ;GO DRAW THE FLAME NOW.
  642.     MOV    #FLAMIN,FSUBC        ;AND TURN ON THE FLAME AGAIN.
  643.     BR    YSFLAM            ;AND LEAVE FLAME ON.
  644. NOFLAM:    CLR    FSUBC            ;IF NO THRUST, TURN OF ROCKET.
  645. YSFLAM:    MOV    BIGXCT,TEMP        ;PICK UP X POSITION NOW.
  646.     BMI    OFFLFT            ;WE'RE OFF TO THE LEFT.
  647.     CMP    TEMP,#10.
  648.     BLE    OFFLFT            ;WE ARE STILL OFF TO THE LEFT.
  649.     CMP    TEMP,#890.
  650.     BGE    OFFRGT            ;SEE IF WE ARE TOO FAR TO THE RIGHT.
  651.     MOV    VERDIS,TEMP        ;WE SEEM TO BE OK. HOW ABOUT HEIGHT.
  652.     BMI    CLSEUP            ;IF MINUS, GO INTO CLOSEUP MODE.
  653.     CMP    TEMP,#25000.        ;IF OFF TOP, GIVE MESSAGE.
  654.     BGE    OFFTOP
  655.     CMP    TEMP,#450.        ;SEE IF WE SHOULD MAGNIFY.
  656.     BLE    CLSEUP            ;YES. MAGNIFY.
  657.     MOV    BIGXCT,SHOWX        ;ELSE ESTABLISH THE Y COORDINATE.
  658.     ASR    TEMP            ;NOW SCALE DOWN THE VERTICAL DISTANCE.
  659.     ASR    TEMP
  660.     ASR    TEMP
  661.     ASR    TEMP
  662.     ASR    TEMP            ;32 FEET PER RASTOR AT THIS RANGE.
  663.     ADD    #43.,TEMP        ;UPDATE
  664.     MOV    TEMP,SHOWY
  665.     TST    MOON            ;IS MOON DRAWN.
  666.     BEQ    SHWMN1            ;YES.
  667.     JSR    PC,DRAWM1        ;NO.
  668.     CLR    MOON            ;RESET FLAG.
  669. SHWMN1:    JSR    PC,DIAL            ;DISPLAY THE DIALS NOW.
  670.     MOV    RADARY,TEMP
  671.     SUB    #16.,TEMP        ;FIX FOR CENTER OF THE SHIP.
  672.     BPL    SHWOUT            ;IT'S OK.
  673.     MOV    #640.,IN1        ;NOT OK. WE'VE CRASHED. BIG DISTORTION.
  674.     JSR    PC,ALTER        ;ALTER MOON NOW.
  675.     MOV    SP,MOON            ;INDICATE THAT WE'VE ALTERED THE MOON.
  676.     JSR    PC,DRAWM1        ;NOW REDRAW IT.
  677.     CLR    MOON            ;AND REMEMBER THAT WE'VE REDRAWN IT.
  678.     JSR    PC,EXPLOD        ;GIVE AN EXPLOSION.
  679. SHWOUT:    RTS    PC            ;AND RETURN NOW.
  680.     .PAGE
  681. ;
  682. ;        OFF SCREEN ROUTINES GO HERE......
  683. ;
  684. OFFLFT:    MOV    #13.,IN1        ;PICK UP A NEW X NOW.
  685.     MOV    #LFTMSG,IN2        ;AND PICK UP A MESSAGE NOW.
  686.     BR    OFFCOM            ;AND DO THE COMMON ROUTINES NOW.
  687. OFFRGT:    MOV    #887.,IN1        ;A RIGHT X VALUE.
  688.     MOV    #RGTMSG,IN2
  689.     BR    OFFCOM            ;SAME CRAP.
  690. OFFTOP:    MOV    TEMP,IN1        ;PRESENT X VALUE.
  691.     MOV    #TOPMSG,IN2        ;TOP MESSAGE.
  692. OFFCOM:    ASL    IN1            ;GET A NEW HORDISTANCE.
  693.     ASL    IN1
  694.     ASL    IN1
  695.     ASL    IN1
  696.     ASL    IN1
  697.     SUB    #22400.,IN1
  698.     MOV    IN1,HORDIS        ;SET DISTANCE.
  699.     MOV    IN2,SYSMES        ;SET MESSAGE NOW.
  700.     CLR    FUEL            ;TURN OFF FUEL NOW.
  701.     CLR    HORVEL            ;CLEAR SIDEWAYS MOTION.
  702.     MOV    VERDIS,RET2        ;PICK UP VERTICAL DISTANCE NOW.
  703.     ASR    RET2            ;DIVIDE BY 4 TO GET A REASONALBE SPEED.
  704.     ASR    RET2
  705.     BMI    OFFCMD            ;IF GOING DOWN, WE ARE OK.
  706.     NEG    RET2            ;ELSE MAKE US GO DOWN.
  707. OFFCMD:    MOV    RET2,VERVEL        ;AND SAVE IT AWAY NOW.
  708.     JMP    SHOWSP            ;AND RELOOP AND REDISPLAY SHIP NOW.
  709.     .PAGE
  710. ;
  711. ;        THIS ROUTINE WILL DRAW THE CLOSEUP PICTURES OF
  712. ;        THE MOON, WHEN THEY BECOME NECESSARY. RETURN GOES
  713. ;        BACK TO IDLE VIA THE OLD PC ON THE STACK
  714. ;        <OR IT SHOULD, ANYWAY.>.
  715. ;
  716. CLSEUP:    CMP    MOON,(SP)        ;SEE IF WE HAVE THE MOON IN SIGHT.
  717.     BEQ    CLSEC1            ;YES.
  718.     MOV    BIGXCT,IN1        ;NO. GET CURRENT RASTOR POSITION.
  719.     SUB    #9.,IN1            ;NOW SET A GOOD LEFT EDGE.
  720. CLSEFG:    MOV    IN1,LEFTEDGE        ;LEFT EDGE ESTABLISHED NOW.
  721.     ASL    IN1            ;NOW CONVERT EDGE TO FEET.
  722.     ASL    IN1
  723.     ASL    IN1
  724.     ASL    IN1
  725.     ASL    IN1
  726.     SUB    #22400.,IN1
  727.     MOV    IN1,LEFEET        ;AND SAVE THAT AWAY.
  728.     JSR    PC,DRAWM2        ;DRAW A CLOSE-UP OF THE MOON NOW.
  729.     MOV    (SP),MOON        ;SET FLAG TO INDICATE WE HAVE DONE SO.
  730.     MOV    HORDIS,IN1        ;PICK UP THE HORIZONTAL POSITION NOW.
  731.     SUB    LEFEET,IN1        ;GET FEET FROM LEFT EDGE OF SCREEN.
  732. CLSEOK:    MOV    IN1,RET2        ;NOW GET RASTOR POSITION (3/2)
  733.     ASL    IN1
  734.     ADD    IN1,RET2
  735.     ASR    RET2            ;(3/2) OF FEET=RASTOR<X>
  736.     MOV    RET2,SHOWX        ;AND SAVE IT AWAY NOW.
  737.     CLR    RET1            ;NOW CONVERT THIS POSITION TO A GOOD.
  738.     MOV    #48.,IN1        ;NOW CONVERT BACK TO A TERAIN INDEX.
  739.     JSR    PC,DIVTWO        ;DO THE DIVISION NOW.
  740.     ADD    LEFTEDGE,RET2        ;MAKE INTO A TERAIN AND FEATURE INDEX.
  741.     MOV    RET2,INDEXL        ;SAVE AWAY INDEX TO LEFT POSTION OF SHIP.
  742.     ASL    RET2            ;MULTIPLY BY TWO FOR THE TERAIN.
  743.     MOV    RET2,TEMP        ;SAVE IT FOR A SECOND.
  744.     MOV    #48.,IN1        ;NOW FIGURE OUT HOW MUCH SHIP IS TO LEFT
  745.     SUB    RET1,IN1        ;OR RIGHT OF CENTER OF TERAIN. USE DIVISION REMAINDER.
  746.     MOV    RET1,TEMP2        ;SAVE THAT AWAY.
  747.     MOV    TERAIN(TEMP),IN2    ;PICK UP TERAIN NOW.
  748.     JSR    PC,SGNMUL        ;MULTIPLY IT OUT NOW.
  749.     MOV    RET2,-(SP)        ;SAVE FOR A SECOND NOW.
  750.     MOV    TEMP2,IN1        ;RECALL REMAINDER NOW. DO RIGHT EDGE OF "TERRAIN".
  751.     MOV    TERAIN+2(TEMP),IN2    ;OTHER HEIGHT.
  752.     JSR    PC,SGNMUL        ;MULTIPLY THEM OUT.
  753.     CLR    RET1            ;NOW SET UP DIVIDE. THIS WILL CONVERT
  754.     MOV    #48.,IN1        ;TERAIN HEIGHT*48 TO DISPLAY FUDGED HEIGHT.
  755.     ADD    (SP)+,RET2        ;OLD FUDGED WEIGHTED HEIGHT.
  756.     BPL    CLSEF1            ;AVERAGE IS POSITIVE.
  757.     NEG    RET2            ;AVERAGE IS NEGATIVE.
  758.     JSR    PC,DIVTWO        ;DO THE DIVIDE NOW.
  759.     NEG    RET2            ;AND NEGATE THE ANSWER.
  760.     BR    CLSEF2
  761. CLSEF1:    JSR    PC,DIVTWO
  762. CLSEF2:    MOV    RET2,TEMP        ;MOVE OVER HEIGHT FOR DFAKE TO USE.
  763.     ASR    RET2            ;NOW CONTINUING FUDING TERRAIN BY KNOWN STANDARDS.
  764.     ASR    RET2
  765.     MOV    RET2,AVERY        ;SAVE AWAY AVERAGE TERAIN HEIGHT.
  766.     JSR    PC,DFAKE        ;GET ACTUAL RASTER HEIGHT ABOVE THE MOON.
  767.     MOV    TEMP,AVERT        ;SAVE IT AWAY NOW.
  768.     MOV    VERDIS,IN1        ;PICK UP THE DISTANCE NOW.
  769.     MOV    IN1,RET2        ;PREPARE TO CONVERT TO RASTORS.
  770.     ASL    RET2            ; THE OLD 3/2 GAMBIT.
  771.     ADD    IN1,RET2
  772.     ASR    RET2
  773.     ADD    #23.,RET2        ;TO CONVERT TO VIEWING RASTORS.
  774.     MOV    RET2,SHOWY        ;SAVE IT AWAY NOW.
  775.     ADD    #24.,SHOWY        ;EXCEPT FOR THE FUDGE.
  776.     SUB    TEMP,RET2        ;GET # OF RASTORS TO GO.
  777.     MOV    RET2,TEMP        ;MOVE BACK OVER.
  778.     BPL    CLSEF3            ;IF POSITIVE, ALL IS WELL.
  779.     NEG    RET2            ;ELSE NEGATE IT NOW.
  780. CLSEF3:    CLR    RET1            ;PREPARE TO DO THE DIVIDE.
  781.     MOV    #3.,IN1            ;MAKE IT THREE HALFS.
  782.     ASL    RET2
  783.     JSR    PC,DIVTWO
  784.     TST    TEMP            ;GET BACK THE ORIGINAL SIGN NOW.
  785.     BPL    CLSEF4
  786.     NEG    RET2
  787. CLSEF4:    MOV    RET2,RADARY        ;AND THIS IS THE RADAR HEIGHT.
  788.     JSR    PC,INTEL        ;FIGURE OUT IF ANYTHING GREAT IS TO HAPPEN.
  789.     JSR    PC,DUST            ;AND ALSO IF WE SHOULD SHOW DUST.
  790. AHNONE:    RTS    PC            ;AND WHEN DONE, RETURN NOW.
  791. CLSEC1:    MOV    HORDIS,IN1        ;MOON ALREADY BEING DISPLAYED.
  792.     SUB    LEFEET,IN1        ;SEE IF IT'S STILL ON THE SCREEN.
  793.     CMP    IN1,#30.        ;TO CLOSE TO LEFT?
  794.     BLE    CLOL            ;YES. SHIFT TO RIGHT.
  795.     CMP    IN1,#580.        ;TOO CLOSE TO LEFT
  796.     BLT    CLSEOK            ;NOPE. DISPLAY AS IS.
  797.     MOV    BIGXCT,IN1        ;SHIFT EVERYTHING LEFT NOW.
  798.     DEC    IN1
  799.     BR    CLSEFG            ;SHOULD BE POIFECT.
  800. CLOL:    MOV    BIGXCT,IN1        ;SHIFT EVERYTHING RIGHT IF TOO CLOSE TO THE LEFT.
  801.     SUB    #17.,IN1
  802.     BR    CLSEFG            ;FUDGE IT NOW.
  803.     .PAGE
  804. ;
  805. ;        GENERAL INTELIGENCE SECTION...
  806. ;        THIS CODE GOES HERE SO THAT IT MAY BE
  807. ;        REFERENCED BY SIMPLE BRANCH INSTRUCTIONS
  808. ;        FROM THE MAIN SECTION "INTEL".
  809. ;
  810. AHMAC:    TST    #MACON            ;OVER MACDONALD'S. SEE IF DRAWN.
  811.     .=.-2                ;DEFINE MACON AS BEING HERE.
  812. MACON:    .WORD    0            ;AND INITIALIZE IT TO ZERO.
  813.     BEQ    AHNONE            ;NO, NOT DRAWN. EXIT NOW.
  814.     CMP    TEMP2,#30.        ;YES. SEE HOW CLOSE WE ARE.
  815.     BGT    AHNONE            ;NOT TOO CLOSE. ALL IS WELL.
  816.     CLR    #MACTHR            ;TOO CLOSE. WE'VE CRASHED INTO IT.
  817.     .=.-2                ;AND LIKEWISE DEFINE THE MAC DESTROYED
  818. MACTHR:    .WORD    MACTHR            ;FLAG AS STILL HAVING MACDONALDS.
  819.     MOV    #MACDED,SYSMES        ;TELL HIM WE'VE CRASHED INTO IT.
  820.     JMP    QUICK            ;AND KILL HIM OFF.
  821. AHROCK:    CMP    TEMP2,#15.        ;ARE WE TOO LOW OVER THE ROCK?
  822.     BGT    AHNONE            ;NOPE.
  823.     CMP    VERVEL,#-600.        ;GREATER THAN CRASH SPEED?
  824.     BLE    GODEAD            ;YES. HE'S DEAD.
  825.     MOV    #ROCKMS,SYSMES        ;START DISPLAYING THE ROCK MESSAGE NOW.
  826.     CLR    SHIPDP            ;STOP DISPLAYING THE SHIP NOW.
  827.     JSR    PC,EXPLOD        ;EXPLOD NOW
  828. AHSP1:    CMP    TEMP2,#26.        ;TOO HIGH?
  829.     BGT    AHNONE            ;IT'S ALRIGHT.
  830.     CMP    TEMP,#-600.        ;TOO FAST.
  831.     BLE    GODEAD
  832.     MOV    #OLDMS,SYSMES        ;DISPLAY THE OLD SHIP MESSAGE.
  833.     MOV    #3,-(SP)        ;SET UP A LEFT SHIP
  834.     TST    HORVEL            ;GET HORIZONTAL VELOCITY.
  835.     BMI    AHSP1M            ;DIRECTION OK.
  836.     INC    (SP)            ;MAKE IT RIGHT TILTING.
  837. AHSP1M:    MOV    IN1,-(SP)        ;PUSH THE INDEX ONTO THE STACK.
  838.     JSR    PC,PUTFET        ;PLACE IN FEATURE TABLE NOW.
  839.     SUB    #16.,SHOWY        ;BRING DOWN THE OLD SHIP.
  840.     JSR    PC,DRAWM2        ;REDRAW THE MOON NOW.
  841.     JSR    PC,EXPLOD        ;EXPLOD THE SHIP NOW.
  842. AHFLG:    CMP    TEMP2,#26.        ;ARE WE TOO HIGH
  843.     BGT    AHNONE            ;YEP.
  844.     TST    THRUST            ;ENGINE ON?
  845.     BEQ    AHNONE            ;NOPE. EXIT.
  846.     CLR    -(SP)            ;CLEAR THE FLAG NOW.
  847.     MOV    IN1,-(SP)
  848.     JSR    PC,PUTFET        ;CLEAR INDICATOR FLAG NOW.
  849.     MOV    #FLAGMS,SYSMES        ;GIVE THE FLAG MESSAGE NOW.
  850.     JSR    PC,DRAWM2        ;REDRAW THE MOON NOW.
  851.     BR    AHNONE            ;AND CONTINUE CHECKING CRAP.
  852. AHOLDS:    CMP    TEMP2,#17.        ;SEE IF ON CRASHED SHIP.
  853.     BGT    AHNONE            ;NOPE.
  854.     CMP    TEMP,#-600.        ;SEE IF TOO FAST.
  855. GODEAD:    BLE    DEAD            ;ELSE DEAD.
  856.     MOV    #OLDTLT,SYSMES        ;GIVE MESSAGE.
  857.     JSR    PC,EXPLOD        ;AND EXPLOD NOW.
  858.     .PAGE
  859. ;
  860. ;        ROUTINE WHICH FIGURES OUT WHAT TO DO NOW.
  861. ;
  862. INTEL:    JSR    PC,DIAL            ;DISPLAY USER'S DATA NOW.
  863.     MOV    RADARY,TEMP2        ;PICK UP ALTITUDE NOW.
  864.     BMI    INTELM            ;IT'S NEGATIVE. FIGURE OUT SOMETHING SPECIAL.
  865.     CMP    TEMP2,#3.        ;ARE WE CLOSE.
  866.     BLE    VERYLOW            ;WE CERTAINLY ARE.
  867.     MOV    VERVEL,TEMP        ;NOT TOO LOW. GET VELOCITY NOW.
  868.     CMP    TEMP,#-600.        ;SEE IF <=60 FPS
  869.     BLT    AHAH            ;YES. IS HE SCREWED UP.
  870.     CMP    TEMP,#-300.        ;HOW ABOUT 30 FPS
  871.     BLT    AHAH2            ;HE'S NOT TOO SCREWED UP <YET!>
  872.     CMP    TEMP,#-150.        ;HOW ABOUT FIFTEEN FPS.
  873.     BLT    AHAH3            ;GIVE ANOTHER MESSAGE.
  874.     CMP    SYSMES,#N2FAST        ;WAS A NOT TOO FAST MESSAGE THE
  875.     BNE    AHAHC            ;ONE ISSUED. NO.
  876.     CLR    SYSMES            ;YES. DELETE IT NOW.
  877. AHAHC:    MOV    INDEXL,IN1        ;PICK UP FEATURE INDEX NOW.
  878.     MOV    IN1,-(SP)        ;PUSH DESIRED ITEM ONTO STACK.
  879.     JSR    PC,GETFET        ;GET THE FEATURE NOW.
  880.     MOV    (SP)+,IN2        ;AND POP THE ITEM OFF THE STACK.
  881.     ASL    IN2            ;MULTIPLY IT BY TWO.
  882.     JMP    @AHTAB(IN2)        ;WE'VE GOT IT NOW.
  883. AHAH:    MOV    #VFAST,SYSMES        ;GIVE A VERY FAST MESSAGE NOW.
  884.     BR    AHAHC            ;AND DO SOMETHING ELSE.
  885. AHAH2:    MOV    #FAST,SYSMES        ;GIVE A FAST MESSAGE.
  886.     BR    AHAHC
  887. AHAH3:    MOV    #N2FAST,SYSMES        ;GIVE A "TAKE IT EASY MESSAGE".
  888.     BR    AHAHC
  889. INTELM:    CMP    TEMP2,#-10.
  890.     BLE    DEAD            ;TOO FAR DOWN. HE'S DEAD.
  891. VERYLO:    CLR    PERCNT            ;TURN OFF FUEL NOW.
  892.     MOV    #BARBY,LPBARY        ;AND INIDCATE IT TO HIM.
  893.     CLR    FSUBC            ;TERMINATE FLAMES.
  894.     CLR    DUSTON            ;AND THE DUST.
  895.     TST    TEMP2            ;GET ALTITUDE NOW.
  896.     BEQ    VD            ;WE'RE DOWN.
  897.     BPL    AHAHC            ;IF POSITIVE, LOOK FOR FEATURES.
  898. VD:    MOV    VERVEL,TEMP        ;PICK UP THE VERTICAL VELOCITY NOW.
  899.     CMP    TEMP,#-600.        ;SEE IF GREATER THAN 60 FPS.
  900.     BLE    DEAD            ;YES. SPLAT
  901.     CMP    TEMP,#-300.        ;HOW ABOUT 30FPS
  902.     BLE    CRIPPLED        ;YES. HE'S CRIPLLED.
  903.     CMP    TEMP,#-150.        ;HOW ABOUT 15FPS
  904.     BLE    ROUGH            ;IT'S A ROUGH ONE.
  905.     CMP    TEMP,#-80.        ;HOW ABOUT 8FPS.
  906.     BLE    GOOD            ;IT'S A GOOD ONE.
  907.     MOV    #GREATM,IN1        ;ISSUE GREAT MESSAGE
  908.     BR    MAYBE            ;AND NOW CHECK HORIZONTAL VELOCITY.
  909. GOOD:    MOV    #GOODM,IN1        ;A GOOD LANDING.
  910.     BR    MAYBE
  911. ROUGH:    MOV    #ROUGHM,IN1        ;A ROUGH LANDING.
  912.     BR    MAYBE
  913. CRIPPL:    MOV    #CRIPM,IN1        ;CRIPPLED. GIVE THAT MESSAGE.
  914.     BR    MAYBE
  915. DEAD:    MOV    #DEADM,SYSMES        ;ISSUE THE DEAD MESSAGE NOW.
  916. QUICK:    MOV    #32.,IN1        ;ALTER THE SURFACE NOW.
  917.     JSR    PC,ALTER
  918.     JSR    PC,DRAWM2        ;REDRAW THE MOON NOW.
  919.     CLR    SHIPDP            ;STOP DISPLAYING THE SHIP.
  920.     JSR    PC,EXPLOD        ;EXPLOD NOW.
  921. MAYBE:    CLR    FSUBC            ;TURN OFF FLAME IMAGE NOW.
  922.     MOV    IN1,SYSMES        ;DISPLAY THE CALLER'S MESSAGE NOW.
  923.     CMP    HORVEL,#100.        ;SEE IF TOO FAST SIDEWAYS.
  924.     BGT    MAYBEB            ;TOO FAST.
  925.     CMP    HORVEL,#-100.        ;HOW ABOUT LEFT.
  926.     BLT    MAYBEB            ;TOO FAST.
  927.     CMP    ANGLE,#-15.        ;SEE IF THE ANGLE IS OK.
  928.     BLT    MAYBEC            ;TOO FAR LEFT.
  929.     CMP    ANGLE,#15.        ;RIGHT OK?
  930.     BGT    MAYBEC            ;YES. TIP HIM OVER.
  931.     MOV    INDEXL,IN2        ;NOW FIGURE OUT IF TERAIN IS TOO ROUGH.
  932.     ASL    IN2
  933.     MOV    TERAIN+2(IN2),IN1    ;RIGHT TERAIN.
  934.     SUB    TERAIN(IN2),IN1        ;LEFT TERAIN.
  935.     MOV    IN1,RET1        ;MOVE OVER FOR ABSOLUTE VALUE.
  936.     BPL    MAYBEP            ;TAKE ABSOLUTE VALUE NOW.
  937.     NEG    RET1
  938. MAYBEP:    CMP    RET1,#48.        ;SEE IF GREATER THAN A 48 FOOT DROP.
  939.     BGE    MAYBED            ;YES. A BADDY.
  940.                     ;PLANT THE FLAG NOW!!!!!!!
  941.                     ; <OR GET A HAMBURGER>.
  942.     JSR    PC,PALSY        ;WITH THE SPASTIC MAN.
  943. MAYBEB:    MOV    HORVEL,IN1        ;PICK UP DIRECTION TO TIP SHIP.
  944.     MOV    #SIDEM,IN2        ;PICK UP POINTER TO THE MESSAGE.
  945.     BR    TILT            ;AND TILT THE SHIP NOW.
  946. MAYBEC:    MOV    ANGLE,IN1        ;GET THE DIRECTION TO TILT THE SHIP.
  947.     MOV    #ANGLEM,IN2        ;AND PICK UP THE MESSAGE NOW.
  948.     BR    TILT            ;AND TILT IT NOW.
  949. MAYBED:    MOV    #BUMPYM,IN2        ;PICK UP MESSAGE NOW. IN1=CORRECT SIGN.
  950. TILT:    MOV    IN2,FSUBC        ;DISPLAY MESSAGE FROM FLAME POINT.
  951.     MOV    INDEXL,IN2        ;PICK UP TERAIN INDEX AGAIN.
  952.     MOV    #3,-(SP)        ;INDICATE IT'S TIPPED TO THE LEFT.
  953.     TST    IN1            ;PICK UP DIRECTION AGAIN.
  954.     BMI    TILT1            ;NO, MAKE IT TO THE RIGHT.
  955.     INC    (SP)
  956. TILT1:    MOV    IN2,-(SP)        ;AND NOW UPDATE THE FEATURE TABLE.
  957.     JSR    PC,PUTFET
  958.     ASL    IN2            ;NOW GET TERAIN CHARACTERISTICS.
  959.     MOV    TERAIN+2(IN2),RET1    ;RIGHT TERAIN.
  960.     SUB    TERAIN(IN2),RET1    ;LEFT TERAIN.
  961.     MOV    RET1,RET2        ;NOW WE'LL CONVERT FEET DIFFERENCE TO AN ANGLE.
  962.     ASL    RET2            ;MULTIPLY IT BY 3
  963.     ADD    RET1,RET2        ;OK
  964.     ASR    RET2            ;NOW DIVIDE BY FOUR.
  965.     ASR    RET2
  966.     SUB    RET2,RET1        ;SUBTRACT FROM THE ORIGINAL.
  967.     MOV    RET1,RET2        ;NOW HALF ANSWER AGAIN.
  968.     ASR    RET2
  969.     ADD    RET2,RET1        ;AND ADD IN NEW ANSWER. RESULT
  970.                     ;IS NUMBER OF DEGREES TO TILT.
  971.     BPL    TILT2            ;NOW SEE IF RESULT IS GREATER THAN
  972.     CMP    RET1,#-45.        ;THE ABS(45).
  973.     BGE    TILT3            ;IF OK, THEN LEAVE ALONE.
  974.     MOV    #-45.,RET1        ;ELSE SET IT TO -45.
  975.     BR    TILT3
  976. TILT2:    CMP    RET1,#45.        ;SEE IF IT'S GREATER THAN 45 DEGREES.
  977.     BLE    TILT3            ;NO, IT'S OK.
  978.     MOV    #45.,RET1        ;ELSE FIX IT UP NOW.
  979. TILT3:    MOV    #90.,RET2        ;PICK UP FALLEN SHIP ANGLE.
  980.     TST    IN1            ;GET WHICH WAY TO FALL.
  981.     BPL    TILT4            ;IT'S OK.
  982.     NEG    RET2            ;NEGATE IT NOW.
  983. TILT4:    ADD    RET2,RET1        ;GET THE NEW SHIP ANGLE NOW.
  984.     MOV    RET1,ANGLE        ;UPDATE SHIP ANGLE.
  985.     MOV    SHIPTP,IN2        ;NOW TOGGLE SHIP SWITCH.
  986.     ADD    #2,IN2
  987.     BIC    #-3,IN2
  988.     MOV    IN2,SHIPTP
  989.     MOV    SHIPLC(IN2),IN2        ;PICK UP BUFER POINTER NOW.
  990.     MOV    IN2,-(SP)        ;AND SAVE IT AWAY FOR LATER USE.
  991.     JSR    PC,TRIG            ;GET THE SINE AND COSINE NOW.
  992.     MOV    #DESIGN,IN1        ;HOW TO DRAW SHIP.
  993.     JSR    PC,DRAW            ;DRAW IT NOW.
  994.     MOV    (SP)+,SHIPDP        ;SHOW NEW SHIP NOW.
  995.     SUB    #7.,SHOWY        ;BUT BRING IT DOWN A LITTLE BIT.
  996.     JSR    PC,DELAY        ;DELAY FOR A WHILE
  997.     .WORD    10.
  998.     .PAGE
  999. ;
  1000. ;        THIS ROUTINE WILL KICK UP DUST ON THE MOON.
  1001. ;
  1002. DUST:    CMP    RADARY,#150.        ;SEE IF WE ARE CLOSE TO THE MOON NOW.
  1003.     BGE    NODUST            ;DON'T GENERATE ANY DUST NOW.
  1004.     MOV    #EXLIST,TEMP2        ;PICK UP ADDRESS OF WHERE TO LEAVE DUST.
  1005.     MOV    PERTRS,TEMP        ;GET THE TRUST NOW.
  1006.     CMP    TEMP,#63.        ;SEE IF MORE THAN 63%
  1007.     BLE    DUSTB1            ;NO. OK.
  1008.     MOV    #63.,TEMP        ;IF MORE, SET TO 63% FOR SCALING.
  1009. DUSTB1:    ROL    TEMP            ;BECAUSE WE WILL USE MAGNITUDE TO
  1010.     ROL    TEMP            ;CONTROL INTENSITY.
  1011.     ROL    TEMP            ;MOVE OVER TO INTENSITY SPOT.
  1012.     ROL    TEMP
  1013.     BIC    #176177,TEMP        ;CLEAR OUT ANY STRAY BITS NOW.
  1014.     BIS    #116120,TEMP        ;NOW SET THE POSITIONING MASK.
  1015.     MOV    TEMP,(TEMP2)+        ;PLACE IN THE LIST NOW.
  1016.     CMP    ANGLE,#45.        ;SEE IF THE ANGLE IS TOO GREAT NOW.
  1017.     BGT    NODUST            ;YEP.
  1018.     CMP    ANGLE,#-45.
  1019.     BLT    NODUST            ;SAME HERE.
  1020.     MOV    SINANG,IN2        ;NOW GET THE PLACE TO PUT THE DUST
  1021.     BPL    DUSTP1            ;BY FIGURING OUT THE TANGENT OF
  1022.     NEG    IN2            ;OF THE ANGLE. MAKE POSITIVE
  1023. DUSTP1:    MOV    SHOWY,IN1        ;SO DIVIDE WON'T BLOW. GET RASTOR Y NOW.
  1024.     SUB    AVERT,IN1        ;SUBTRACT OFF THE TERAIN HEIGHT NOW.
  1025.     MOV    IN1,TEMP        ;SAVE FOR A SECOND.
  1026.     JSR    PC,MULTWO        ;GET PRODUCT.
  1027.     MOV    COSANG,IN1        ;GET COSINE NOW.
  1028.     JSR    PC,DIVTWO        ;RET2=TAN(ANGLE)*DELTAY
  1029.     ADD    RET2,TEMP        ;TEMP=DELTAX+DELTAY=TOTAL FLAME DISTANCE.
  1030.     TST    SINANG            ;FIGURE OUT WHICH WAY DUST IS TO GO.
  1031.     BMI    DUSTP2            ;CORRECT DIRECTION NOW.
  1032.     NEG    RET2            ;ELSE NEGATE IT NOW.
  1033. DUSTP2:    ADD    SHOWX,RET2        ;CENTER OF DUST NOW.
  1034.     MOV    RET2,(TEMP2)+        ;INSERT INTO THE BUFFER.
  1035.     MOV    AVERT,(TEMP2)+        ;INSERT THE Y VALUE NOW.
  1036.     MOV    #130000,(TEMP2)+    ;INSERT RELATIVE POINT COMMAND INTO THE BUFFER.
  1037.     SUB    #150.,TEMP        ;GET APPROXIMATE DISTANCE TO GROUND.
  1038.     BPL    NODUST            ;MORE THAN 50 FEET AWAY. PRODUCE NO DUST.
  1039.     NEG    TEMP            ;MAKE THE DISTANCE POSITIVE AGAIN.
  1040.     MOV    TEMP,IN1        ;NOW MULTIPLY IT BY THE % THROTTLE.
  1041.     MOV    PERTRS,IN2
  1042.     JSR    PC,MULTWO        ;NOW HAVE ANUMBER BETWEEN 0 AND 5000
  1043.     ASR    RET2            ;NOW BRING IT DOWN TO A CIVILIZED NUMBER.
  1044.     ASR    RET2            ;BY DIVIDING BY 16.
  1045.     ASR    RET2
  1046.     ASR    RET2
  1047.     BEQ    NODUST            ;IF ZERO, GENERATE NO DUST.
  1048.     MOV    RET2,-(SP)        ;SAVE THE COUNTER ON THE STACK.
  1049.     MOV    #STACK-200.-EXLIST-12.,RET1    ;PICK UP SIZE OF DUST AREA.
  1050.     ASR    RET1            ;GET NUMBER OF DOUBLE WORD ENTRIES.
  1051.     ASR    RET1
  1052.     CMP    RET1,(SP)        ;SEE IF CALCULATED NUMBER IS OK.
  1053.     BHIS    DUSTWF            ;IF GREATER OR EQUAL, ALL IS WELL.
  1054.     MOV    RET1,(SP)        ;ELSE SET A FINITE LIMIT NOW.
  1055. DUSTWF:    MOV    DUSTX,RET1        ;PICK UP A RANDOM DUST GENERATING WORD.
  1056.     MOV    #-100,RET2        ;AND LEAVE A GOOD MASK IN RET2.
  1057. DUSTL:    ADD    TIME,RET1        ;GENERATE THE RANDOM WORD NOW.
  1058.     INC    RET1
  1059.     BIC    RET2,RET1        ;NOW LEAVE JUST LOW SIX BITS.
  1060.     MOVB    YTHRST(RET1),IN1    ;PICK UP AN X NOW.
  1061.     ADD    VERACC,RET1        ;NOW A LITTLE MORE RANDOMIZING.
  1062.     BIC    RET2,RET1        ;INDEX SET TO PICK UP Y.
  1063.     BIC    RET2,IN1        ;MAKE X JUST SIX BITS.
  1064.     SWAB    IN1            ;X OVER TO LEFT.
  1065.     ROR    IN1            ;AND INTO POSITION NOW.
  1066.     COM    TEMP            ;COMPLEMENT X DIRECTION NOW.
  1067.     BIC    #-20001,TEMP        ;LEAVE JUST THE SIGN BIT.
  1068.     BIS    #40000,TEMP        ;SET THE INTENSITY BIT NOW.
  1069.     BIS    TEMP,IN1        ;AND SET THEM IN THE X NOW.
  1070.     MOVB    YTHRST(RET1),IN2    ;PICK UP THE Y NOW.
  1071.     BIC    RET2,IN2        ;Y IS ALWAYS POSITIVE.
  1072.     BIS    IN2,IN1            ;MAKE THE COMMAND NOW.
  1073.     MOV    IN1,(TEMP2)+        ;AND STICK IT AWAY.
  1074.     ADD    #20100,IN1        ;FLIP X AND Y SIGNS.
  1075.     BIC    #140000,IN1        ;TURN OFF DISPLAY BIT.
  1076.     MOV    IN1,(TEMP2)+        ;AND SAVE AWAY NOW.
  1077.     DEC    (SP)            ;DECREMENT THE COUNTER NOW.
  1078.     BGT    DUSTL            ;LOOP AROUND UNTIL DONE.
  1079.     MOV    #DISTOP,(TEMP2)+    ;TERMINATE THE LIST NOW.
  1080.     CLR    (TEMP2)            ;WITH A DISPLAY STOP INSTRUCTION
  1081.     MOV    RET1,DUSTX        ;SAVE DUSTX NOW.
  1082.     TST    (SP)+            ;INCREMENT THE COUNTER NOW.
  1083.     MOV    #EXLIST,DUSTON        ;TURN ON THE DUST NOW.
  1084.     RTS    PC            ;AND RETURN TO THE CALLER.
  1085. NODUST:    CLR    DUSTON            ;TURN OFF THE DUST DISPLAY NOW.
  1086.     RTS    PC            ;AND RETURN.
  1087.  
  1088.     .PAGE
  1089. ;
  1090. ;        THIS ROUTINE WILL PLANT AN AMERICAN FLAG ON THE MOON.
  1091. ;                <WITH A M*A*N, NO LESS>
  1092. ;                OR EVEN MORE SUPER, IT WILL BUY
  1093. ;                SOME HAMBURGERS.
  1094. ;
  1095. PALSY:    JSR    PC,DELAY        ;WAIT FOUR SECONDS BEFORE
  1096.     .WORD    -4.            ;DOING ANYTHING GREAT.
  1097.     MOV    SHOWX,MANX        ;POSITION MAN CORRECTLY.
  1098.     MOV    SHOWY,MANY
  1099.     MOV    #MAN,DUSTON        ;SHOW THE MAN NOW.
  1100. PALSY1:    BIT    #177,TIME        ;WAIT FOR CLOCK TO LINE UP NOW.
  1101.     BNE    PALSY1            ;WHICH SHOULD TAKE A RANDOM AMOUNT OF TIME.
  1102.     TST    MACON            ;SEE IF THERE'S A MACDONALD'S PRESENT.
  1103.     BEQ    PALNOR            ;NONE. NORMAL PLANT.
  1104. ;                MOVE THE MAN TO THE MACDONALD'S NOW!
  1105.     MOV    MACX,RET2        ;PICK UP THE MACDONALD'S X
  1106.     SUB    SHOWX,RET2        ;FIGURE OUT WHICH WAY TO GO.
  1107.     MOV    MACY,RET1        ;PICK UP THE HEIGHT OF THE MACDONALD'S.
  1108.     SUB    MANY,RET1        ;GET THE HEIGHT OF THE MAN NOW.
  1109.     ADD    #3,RET1            ;LIFT HIM UP OFF THE FLOOR.
  1110.     MOV    RET1,-(SP)        ;AND PUSH DIFFERENCE ONTO STACK.
  1111.     BEQ    PALMX1            ;IF NO X, THEN ONLY MOVE Y.
  1112.     JSR    PC,MOVMAN        ;MOVE THE MAN NOW.
  1113. PALMX1:    MOV    MACX,RET2        ;NOW FIGURE OUT HOW FAR TO MOVE THE MAN.
  1114.     SUB    MANX,RET2
  1115.     ADD    #25.,RET2        ;BRING HIM INTO THE PLACE.
  1116.     MOV    RET2,-(SP)        ;REMEMBER WHERE WE WERE.
  1117.     CLR    RET1            ;NO Y MOVE.
  1118.     JSR    PC,MOVMAN        ;MOVE THE MAN NOW.
  1119.     MOV    #ORDER,SYSMES        ;ORDER THE FOOD NOW.
  1120.     JSR    PC,DELAY        ;WAIT FOR AWHILE.
  1121.     .WORD    -8.
  1122.     CLR    SYSMES            ;REMOVE THE MESSAGE.
  1123.     JSR    PC,DELAY        ;WAIT SOME MORE NOW.
  1124.     .WORD    -2.            ;AND THEN FINALLY START HIM BACK.
  1125.     NEG    (SP)            ;GET THE NEGATIVE DISTANCE.
  1126.     MOV    (SP),RET2
  1127.     CLR    RET1            ;NO Y.
  1128.     JSR    PC,MOVMAN
  1129.     MOV    (SP)+,RET2        ;AND THEN GO UP INTO THE SHIP.
  1130.     MOV    (SP)+,RET1        ;BY RECALLING THE VALUES.
  1131.     NEG    RET1            ;INVERT SIGN, AND DON'T
  1132.     BEQ    PALMX2            ;FORGET POSSIBILITY OF SHIP LEVEL.
  1133.     JSR    PC,MOVMAN        ;UP HE GOES NOW.
  1134. PALMX2:    JSR    PC,DELAY        ;HOLD HIM IN SHIP A FEW SECONDS.
  1135.     .WORD    -2.
  1136.     ADD    #4.,VERDIS        ;THEN LIFT HIM UP, AND TAKE HIM OFF.
  1137.     ADD    #2000.,FUEL        ;GIVE HIM A LITTLE BIT MORE FUEL.
  1138.     CLR    VERVEL            ;AND NO UPWARD VELOCITY.
  1139.     CLR    TICKS            ;RESET NUMBER OF TICKS THAT HAVE ELAPSED.
  1140.     MOV    #STACK,SP        ;AND SET SP TO TOP OF CORE <AGAIN>.
  1141. PALOFF:    CLR    SYSMES            ;LOOP WITHOUT GIVING ANY MESSAGES.
  1142.     CLR    ANGLE            ;STRAIGHT UP.
  1143.     CLR    HORVEL            ;WITH NO SIDEWAYS MOTION.
  1144.     MOV    #30.,PERCNT        ;WITH ENOUGH THRUST TO RISE UP.
  1145.     JSR    PC,EIDLE        ;AND DO EVERYTHING RIGHT.
  1146.     TST    MOON            ;AND WAIT TILL MOON GETS BIG.
  1147.     BNE    PALOFF            ;AND THEN MAYBE WE'LL FALL THROUGH.
  1148.     CLR    SHIPDP            ;WHEN MOON IS BIG, REMOVE
  1149.     CLR    FSUBC            ;SHIP AND FLAME.
  1150.     JSR    PC,DELAY        ;AND THEN JUST WAIT FOR A FEW SECONDS.
  1151.     .WORD    3.
  1152.     .PAGE
  1153. ;
  1154. ;        THIS ROUTINE PLANTS AN AMERICAN FLAG ON THE MOON.
  1155. ;
  1156. PALNOR:    MOV    #1,-(SP)        ;INDICATE TO MEMORY THAT SHIP HAS LANDED.
  1157.     MOV    INDEXL,-(SP)
  1158.     JSR    PC,PUTFET        ;AWAY GO THE FEATURES NOW.
  1159.     MOV    #-24.,RET1        ;PREPARE TO MOVE THE MAN OUT NOW.
  1160.     MOV    #48.,RET2
  1161.     MOV    TIME,TEMP2        ;FUDGE WHICH WAY TO MOV THE MAN.
  1162.     ROR    TEMP2            ;BY DIDDLING LOW BIT OF TIME.
  1163.     BCC    PALN1            ;IF LOW BIT OFF, GO RIGHT.
  1164.     NEG    RET2            ;IF ON, GO LEFT.
  1165. PALN1:    MOV    RET2,-(SP)        ;REMEMBER IT ANYWAY.
  1166.     JSR    PC,MOVMAN        ;MOVE THE MAN NOW.
  1167.     MOV    (SP)+,RET2        ;AND THEN THE FINAL DISTANCE.
  1168.     CLR    RET1            ;WITH NO Y.
  1169.     JSR    PC,MOVMAN
  1170.     MOV    MANX,FLAGX        ;DISPLAY THE FLAG NOW.
  1171.     MOV    MANY,FLAGY
  1172.     ADD    #20.,FLAGX        ;OFFSET IT A LITTLE BIT.
  1173.     MOV    #FLAGL,FSUBC        ;PLACE FLAG IN THE FLAME LIST.
  1174.     MOV    INDEXL,IN1        ;PICK UP THE INDEX NOW.
  1175.     JSR    PC,PALSYI        ;UPDATE IT ALSO.
  1176.     JSR    PC,PALSYI        ;SO WE KNOW WHERE TO REMEMBER FLAG.
  1177.     MOV    #2,-(SP)        ;SAVE IT AWAY NOW.
  1178.     MOV    IN1,-(SP)        ;IN THE FEATURE TABLE
  1179.     JSR    PC,PUTFET
  1180.     MOV    #MANMSG,SYSMES        ;DISPLAY THE MESSAGE NOW.
  1181.     JSR    PC,DELAY        ;WAIT TEN MORE SECONDS.
  1182.     .WORD    10.
  1183.     .PAGE
  1184. ;
  1185. ;        THIS ROUTINE MOVES THE MAN ALONG THE SURFACE
  1186. ;        OF THE MOON. RET1=DELTA Y; RET2=DELTA X.
  1187. ;        IF Y=0, THEN ONLY X IS USED. IF Y<>0, THEN ONLY
  1188. ;        THE SIGN OF THE X IS USED.
  1189. ;
  1190. MOVMAN:    MOV    #INC,TEMP2        ;GET "INC IN1" TO INDICATE X TO RIGHT.
  1191.     TST    RET2            ;GET X DIRECTION NOW.
  1192.     BPL    MOVM1            ;TO THE RIGHT.
  1193.     MOV    #DEC,TEMP2        ;ELSE MAKE THE X GO THE OTHER WAY.
  1194.     NEG    RET2            ;AND SET THE COUNTER TO GO DOWN.
  1195. MOVM1:    MOV    TEMP2,PALSYI        ;SAVE AWAY THE GENERATED INSTRUCTION NOW.
  1196.     CLR    TEMP2            ;CLEAR THE DELTA Y ADD NOW.
  1197.     TST    RET1            ;NOW GET THE AMOUNT OF THE DELTA "Y".
  1198.     BEQ    MOVJX            ;NO Y. JUST X MOVE.
  1199.     INC    TEMP2            ;SOME Y. SET TO UP.
  1200.     MOV    RET1,RET2        ;AND USE THE Y AS THE COUNTER NOW.
  1201.     BPL    MOVJX            ;IF UP, ALL IS WELL,
  1202.     NEG    RET2            ;ELSE NEGATE COUNT AND THE
  1203.     NEG    TEMP2            ;AND THE DELTA Y ADD.
  1204.                     ;RET2=+COUNT TO DO, TEMP2=DELTA Y.
  1205. MOVJX:    MOV    MANX,IN1        ;PICK UP THE PRESENT POSITION NOW.
  1206. MOVLUP:    JSR    PC,PALSYI        ;MOVE OVER THE X.
  1207.     MOV    IN1,MANX        ;AND PLACE IN MEMORY.
  1208.     ADD    TEMP2,MANY        ;UPDATE THE Y ALSO.
  1209.     JSR    PC,PALSYW        ;WAIT FOR 8 CLOCK TICKS TO GO BY.
  1210.     DEC    RET2            ;ELSE DECREMENT THE COUNTER.
  1211.     BGT    MOVLUP            ;AND LOOP TILL DONE.
  1212.     RTS    PC            ;AND THEN RETURN.
  1213. PALSYI:    .WORD    0            ;EITHER AN INC OR DEC 'IN1'
  1214.     RTS    PC            ;AND THEN RETURN WITH IN1 UPDATED.
  1215. PALSYW:    BIT    #7,TIME            ;WAIT FOR NONE MULTIPLE OF 8.
  1216.     BEQ    PALSYW
  1217.     JSR    PC,DIAL            ;AND DISPLAY THE USER'S INFORMATION NOW.
  1218. PALSYV:    BIT    #7,TIME            ;AND THEN WAIT FOR 8 MORE <OR LESS>
  1219.     BNE    PALSYV
  1220.     JSR    PC,DIAL            ;WHILE DOING THIS, DISPLAY THE USER'S INFO.
  1221.     RTS    PC            ;AND THEN RETURN.
  1222.     .PAGE
  1223. ;
  1224. ;    THESE ROUTINE WILL INSERT OR CHANGE A LUNAR
  1225. ;    FEATURE OR WILL RETRIEVE IT'S VALUE.
  1226. ;
  1227. PUTFET:    MOV    TEMP,-(SP)        ;SAVE TEMPORARY NOW.
  1228.     MOV    4(SP),TEMP        ;PICK UP AN INDEX NOW.
  1229.     ASR    TEMP            ;MAKE IT A BYTE INDEX.
  1230.     BCC    FETRGT            ;IF EVEN, IT'S THE RIGHT BYTE.
  1231.     ASL    6(SP)            ;LEFT BYTE. SHIFT OVER THE VALUE.
  1232.     ASL    6(SP)
  1233.     ASL    6(SP)
  1234.     ASL    6(SP)
  1235.     BICB    #360,FEATUR(TEMP)    ;CLEAR OUT THE BYTE NOW.
  1236.     BR    PUTCOM            ;INSERT IT NOW.
  1237. FETRGT:    BICB    #17,FEATUR(TEMP)    ;CLEAR OUT THE RIGHT BYTE NOW.
  1238. PUTCOM:    BISB    6(SP),FEATUR(TEMP)    ;INSERT THE BYTE NOW.
  1239.     MOV    (SP)+,TEMP        ;RESTORE THE REGISTER NOW.
  1240.     MOV    (SP),4(SP)
  1241.     ADD    #4,SP            ;UPDATE THE STACK AFTER MOVING OVER THE PC.
  1242.     RTS    PC            ;RETURN NOW.
  1243. GETFET:    MOV    TEMP,-(SP)        ;SAVE A SCRATCH REGISTER NOW.
  1244.     MOV    4(SP),TEMP        ;PICK UP THE INDEX NOW.
  1245.     ASR    TEMP            ;BYTE ADDRESS IT.
  1246.     MOVB    FEATUR(TEMP),TEMP    ;PICK UP THE FEATUR NOW.
  1247.     BCC    GETDUN            ;IF RIGHT BYTE, NO SHIFTING IS NECESSARY.
  1248.     ASR    TEMP            ;ELSE SHIFT IT OVER.
  1249.     ASR    TEMP
  1250.     ASR    TEMP
  1251.     ASR    TEMP
  1252. GETDUN:    BIC    #177360,TEMP        ;JUST RETURN 4 BITS NOW.
  1253.     MOV    TEMP,4(SP)
  1254.     MOV    (SP)+,TEMP        ;MOVE OVER ANSWER AND RESTORE SCRATCH
  1255.     RTS    PC            ;REGISTER AND EXIT.
  1256.     .PAGE
  1257. ;
  1258. ;        THIS ROUTINE WILL "DRAW" THE MOON FROM THE TABLE OF Y VALUES.
  1259. ;
  1260. DRAWM1:    JSR    PC,DRAWMC        ;SET UP COMMON CRAP.
  1261.     MOV    TERAIN,TEMP        ;PICK UP FIRST Y POS.
  1262.     ASR    TEMP            ;DIVIDE BY 32
  1263.     ASR    TEMP
  1264.     ASR    TEMP
  1265.     ASR    TEMP
  1266.     ASR    TEMP
  1267.     ADD    #23.,TEMP
  1268.     MOV    TEMP,(TEMP2)+
  1269.     MOV    TEMP,LASTY        ;SAVE Y FOR TOP OF SCREEN CHECK.
  1270.     MOV    #SETSVM,(TEMP2)+    ;AFTER STORING Y POS, SET GRAPH PLOT MODE.
  1271.     MOV    #TERAIN,IN1        ;POINTER TO THE TERAIN.
  1272. DRAW1L:    ADD    #8.,IN1            ;POSITION TO THE NEXT Y.
  1273.     MOV    (IN1),TEMP
  1274.     ASR    TEMP
  1275.     ASR    TEMP
  1276.     ASR    TEMP
  1277.     ASR    TEMP
  1278.     ASR    TEMP
  1279.     ADD    #23.,TEMP        ;SCALE IT AROUND NOW.
  1280.     JSR    PC,DRAWIC        ;INSERT ONE Y CO-ORD
  1281.     BR    DRAW1L            ;AND LOOP TILL DONE.
  1282.     MOV    #DISTOP,(TEMP2)+    ;AND FINALLY TERMINATE THE LIST
  1283.     CLR    (TEMP2)
  1284.     MOV    #MOONST,MOONGO        ;START DISPLAYING THE MOON NOW.
  1285.     JSR    PC,DRAWRS        ;RESTORE REGISTERS
  1286.     RTS    PC            ;AND EXIT NOW.
  1287.     .PAGE
  1288. ;
  1289. ;        THIS ROUTINE WILL ITIALIZE CERTAIN
  1290. ;        REGISTERS, SAVE REGISTERS AND DO OTHER CRAP NECESSARY
  1291. ;        FOR THE MOON DRAWING ROUTINES TO WORK.
  1292. ;
  1293. DRAWMC:    MOV    RET1,-(SP)
  1294.     MOV    RET2,-(SP)
  1295.     MOV    IN1,-(SP)
  1296.     MOV    IN2,-(SP)
  1297.     MOV    TEMP,-(SP)
  1298.     MOV    #225.,DRAWCT        ;NUMBER OF VECTORS TO DRAW.
  1299.     CLR    MOONGO            ;TURN OFF DRAWING OF MOON.
  1300.     CLR    MACON            ;SET FLAG TO "NO MACDONALD'S ON SCREEN".
  1301.     MOV    #MOONST,TEMP2        ;SET UP THE POINTER NOW.
  1302.     MOV    #114124,(TEMP2)+    ;PLOT POINT MODE.
  1303.     MOV    #170240,(TEMP2)+    ;SET STATUS MODE.
  1304.     CLR    (TEMP2)+        ;SET X POSITION TO ZERO NOW.
  1305.     JMP    @10.(SP)        ;AND RETURN NOW.
  1306. DRAWRS:    MOV    (SP),12.(SP)        ;MOVE OVER RETURN ADDRESS.
  1307.     MOV    (SP)+,TEMP        ;THROW AWAY TOP ITEM.
  1308.     MOV    (SP)+,TEMP        ;AND RESTORE THE REGISTERS.
  1309.     MOV    (SP)+,IN2
  1310.     MOV    (SP)+,IN1
  1311.     MOV    (SP)+,RET2
  1312.     MOV    (SP)+,RET1
  1313.     RTS    PC            ;AND RETURN NOW.
  1314.     .PAGE
  1315. ;
  1316. ;        THIS ROUTINE WILL INSERT ONE "Y" POINT INTO THE
  1317. ;        MOON LIST. IT WILL RANDOMIZE THE LINE TYPE AND INTENSITY
  1318. ;
  1319. DRAWIC:    MOV    #1000,-(SP)        ;MAKE THE VECTOR INVISIBLE FOR NOW.
  1320.     CMP    TEMP,#1024.        ;SEE IF IT'S TOO BIG.
  1321.     BLO    DRAWI1            ;NOT TOO BIG.
  1322.     MOV    #1023.,TEMP        ;TOO BIG, SET TO TOP, AND TURN OFF
  1323.     CMP    TEMP,LASTY        ;IS IT STILL ON TOP?
  1324.     BEQ    DRAWI3            ;YES. DON'T DRAW THE MOUNTAIN.
  1325. DRAWI1:    TST    TEMP            ;SEE IF VALUE IS LESS THAN ZERO.
  1326.     BPL    DRAWI2            ;YES.
  1327.     CLR    TEMP            ;NO IT ISN'T.
  1328.     TST    LASTY            ;WAS LAST RESULT 0?
  1329.     BEQ    DRAWI3            ;YES. DO NOT PUT ON VISIBLE BIT.
  1330. DRAWI2:    BIS    #40000,(SP)        ;TURN ON VISIBLE BIT.
  1331. DRAWI3:    DEC    DRAWTY            ;SEE WHAT TYPE OF INTENSITY
  1332.     BPL    DRWIN            ;AND LINE TYPE IS REQUIRED, IF ANY.
  1333.     INC    DRAWTZ            ;COUNTER OVERFLOWED. CHANGE TYPE.
  1334.     BIC    #-4,DRAWTZ
  1335.     INC    DRAWTZ
  1336.     MOV    DRAWTZ,DRAWTY        ;RESET BIGGY AND LITTLY.
  1337.     ADD    #1200,DINT        ;RANDOMIZE INTENSITY AND TYPE.
  1338.     BIC    #176177,DINT
  1339.     INC    DTYPE
  1340.     BIC    #-4,DTYPE
  1341.     MOV    DINT,(TEMP2)        ;CREATE NEW PLOT POINT INSTRUCTION.
  1342.     BIS    DTYPE,(TEMP2)
  1343.     BIS    #106004,(TEMP2)+    ;GRAPH Y WITH BLANK INTENSITY'S AND TYPES.
  1344. DRWIN:    SUB    LASTY,TEMP        ;GET THE DELTA Y.
  1345.     BPL    DRWINP            ;FIX UP DIRECTION OF VECTOR.
  1346.     NEG    TEMP
  1347.     BIC    #-100,TEMP        ;REMOVE CRAP NOW.
  1348.     SUB    TEMP,LASTY        ;UPDATE PREVIOUS Y NOW.
  1349.     BIS    #100,TEMP
  1350.     BR    DRWINQ
  1351. DRWINP:    BIC    #-100,TEMP        ;CLEAN IT UP.
  1352.     ADD    TEMP,LASTY        ;AND UPGRADE PREVIOUS Y NOW.
  1353. DRWINQ:    BIS    (SP)+,TEMP        ;MAKE IT A GOOD INSTRUCTION NOW.
  1354.     MOV    TEMP,(TEMP2)+        ;AND SAVE IT AWAY NOW.
  1355.     DEC    DRAWCT            ;DECREMENT MASTER COUNTER.
  1356.     BGT    DRAWRR            ;NORMAL RETURN.
  1357.     ADD    #2,(SP)            ;END RETURN.
  1358. DRAWRR:    RTS    PC            ;AND EXIT NOW.
  1359.     .PAGE
  1360. ;
  1361. ;        ALTER WILL ALTER THE FACE OF THE MOON. IN1
  1362. ;        CONTAINS A NUMBER TO BE USED IN ALTERING IT.
  1363. ;
  1364. ALTER:    MOV    BIGXCT,IN2        ;PICK UP PRESENT INDEX.
  1365.     MOV    IN2,TEMP        ;WORK BOTH FORWARD AND BACKWARD.
  1366.     ASL    IN2
  1367.     ADD    #TERAIN,IN2
  1368.     MOV    #3,-(SP)        ;INDICATE A CRASHED SHIP.
  1369.     MOV    (IN2)+,TEMP2        ;PICK UP Y.
  1370.     MOV    IN2,RET2
  1371.     SUB    (IN2),TEMP2        ;FIGURE OUT WHICH WAY TO TILT SHIP.
  1372.     BMI    ALERTP            ;LEAVE TILTED TO LEFT.
  1373.     INC    (SP)
  1374. ALERTP:    MOV    TEMP,-(SP)        ;PUSH THE INDEX ONTO THE STACK.
  1375.     JSR    PC,PUTFET        ;AND PUT AWAY THE FEATURE.
  1376. ALERTL:    SUB    IN1,(IN2)+        ;NOW ALTER BOTH WAYS.
  1377.     SUB    IN1,-(RET2)
  1378.     ASR    IN1            ;DIVIDE BY TWO.
  1379.     NEG    IN1            ;AND NEGATE IT.
  1380.     BNE    ALERTL            ;AND LOOP TILL DONE.
  1381.     RTS    PC            ;ELSE RETURN NOW.
  1382.     .PAGE
  1383. ;
  1384. ;        THIS SECTION WILL CAUSE THE SKIP TO
  1385. ;        EXPLODE ON THE SCREEN BY SHOOTING OUT A SERIES OF
  1386. ;        "DOTS" FOR A GIVEN PERIOD OF TIME.
  1387. ;
  1388. EXPLOD:    CLR    RADIUS            ;SET THE RADIUS TO ZERO.
  1389.     CLR    FSUBC            ;TURN OFF THE ROCKET NOW.
  1390.     CLR    DUSTON            ;TURN OFF THE DUST, IF ANY.
  1391.     BIS    #0,DSR            ;"RING THE BELL".
  1392. EXPLD1:    MOV    #EXLIST,TEMP2        ;GET POINTER TO WHERE TO SHOW EXPLOSION.
  1393.     MOV    XTYPE,TEMP        ;PICK UP RANDOMIZING WORD NOW.
  1394.     INC    TEMP            ;AND JUST PLAY WITH YOURSELF FOR A WHILE.
  1395.     SWAB    TEMP
  1396.     ROR    TEMP
  1397.     ADD    (TEMP2),TEMP        ;ADD IN OLD COMMAND.
  1398.     BIC    #176177,TEMP        ;CLEAR OUT CRAP NOW.
  1399.     BIS    #116120,TEMP        ;MAKE IT A GOOD COMMAND NOW.
  1400.     MOV    TEMP,(TEMP2)+        ;AND INSERT IT INTO THE BUFFER.
  1401.     JSR    PC,EXGEN        ;GENERATE SOME SMOKE NOW.
  1402.     BIS    #0,DSR            ;GIVE A GOOD BEEP NOW.
  1403.     SUB    #10.,RADIUS        ;NOW PRODUCE SOME MORE DOTS.
  1404.     JSR    PC,EXGEN
  1405.     MOV    #DISTOP,(TEMP2)+    ;TERMINATE THE PICTURE NOW.
  1406.     CLR    (TEMP2)
  1407.     MOV    #EXLIST,FSUBC        ;MAKE SURE WE'RE SHOWING IT.
  1408.     BIS    #0,DSR            ;GIVE A RANDOM BEEP, AT TIMES.
  1409.     ADD    #33.,RADIUS        ;FINALLY INCREMENT RADIUS AND CHECK
  1410.     CMP    RADIUS,#300        ;DONE?
  1411.     BLE    EXPLD1            ;NOPE.
  1412.     JSR    PC,DELAY        ;DELAY NOW BEFORE RESTARTING.
  1413.     .WORD    5.            ;FIVE SECONDS.
  1414. EXGEN:    MOV    #-30.,ANGLE        ;INITIALIZE THE ANGLE NOW.
  1415.     MOV    #241.,-(SP)        ;AND SET COUNTER TO DO -30 TO 210 DEGREES.
  1416. EXGENL:    JSR    PC,TRIG            ;FIGURE OUT VARIOUS ANGLES NOW.
  1417.     MOV    -6(SP),IN1        ;PICK UP RANDOM INTERUPT NUMBER NOW.
  1418.     ASR    IN1            ;JUST IN CASE IT WAS EVEN.
  1419.     INC    IN1            ;INCREMENT IT NOW.
  1420.     ADD    TIME,IN1        ;ADD IN THE TIME ALSO.
  1421.     ADD    XTYPE,IN1        ;AND ALSO THE PREVIOUS NUMBER.
  1422.     MOV    IN1,XTYPE        ;AND SAVE IT AWAY NOW.
  1423.     BIC    #-40,IN1        ;MAKE IT BETWEEN 0 AND 31
  1424.     MOVB    YUPDWN(IN1),TEMP    ;SO THAT WE CAN USE THE FLAME TABLE.
  1425.     ADD    RADIUS,TEMP        ;GET A NEW RADIUS NOW.
  1426.     BMI    EXGENP            ;IF MINUS, FORGET ABOUT IT.
  1427.     MOV    TEMP,IN1        ;ELSE GET THE SINES AND COSINES.
  1428.     MOV    COSANG,IN2        ;SO WE CAN GET THE X AND THE
  1429.     JSR    PC,TRGMUL        ;Y POINTS FOR THE EXPLOSION.
  1430.     ADD    SHOWX,RET1        ;WE'VE GOT OUR X NOW.
  1431.     BMI    EXGENP            ;MINUS IS A BADDY.
  1432.     BIS    #INT,RET1        ;DON'T FORGET TO TURN ON INTENSIFY BIT.
  1433.     MOV    RET1,(TEMP2)+        ;AND PLACE IT AWAY NOW.
  1434.     MOV    TEMP,IN1        ;NOW GET THE Y.
  1435.     MOV    SINANG,IN2
  1436.     JSR    PC,TRGMUL
  1437.     ADD    SHOWY,RET1
  1438.     BMI    EXGENO            ;IF THIS IS BAD, WE MUST BACK UP.
  1439.     MOV    RET1,(TEMP2)+
  1440. EXGEND:    INC    ANGLE            ;NOW GET THE NEXT ANGLE.
  1441.     DEC    (SP)            ;AND WAIT TILL DONE.
  1442.     BGT    EXGENL            ;AND LOOP TILL DONE.
  1443.     TST    (SP)+            ;AND THEN EXIT.
  1444.     RTS    PC            ;THIS INSTRUCTION HELPS IF ONE LEAVES IT IN.
  1445. EXGENO:    CLR    -(TEMP2)        ;IF X IS ALREADY THERE, TAKE IT BACK.
  1446. EXGENP:    CLR    (TEMP2)+        ;INSERT DUMMY'S SO DISPLAY WON'T SCREW UP.
  1447.     CLR    (TEMP2)+
  1448.     BR    EXGEND            ;AND SEE IF ALL DONE.
  1449.     .PAGE
  1450. ;
  1451. ;        NOTE, ANY ADDITIONAL CRAP YOU WISH TO PUT
  1452. ;        IN MAY GO HERE.
  1453. ;
  1454. DRAWM2:    JSR    PC,DRAWMC        ;THIS ROUTINE WILL THE CLOSE-UP
  1455.     CLR    DFUDGE            ;VIEW OF THE MOON.
  1456.     MOV    LEFTEDGE,IN1        ;PICK UP LEFT SIDE OF THE SCREEN.
  1457.     ASL    IN1
  1458.     ADD    #TERAIN,IN1        ;GET POINTER TO LEFT Y.
  1459.     MOV    (IN1),TEMP        ;GET LEFT Y.
  1460.     JSR    PC,DFAKE        ;MAKE INTO GOOD RASTOR.
  1461.     TST    TEMP            ;SEE IF ON THE SCREEN NOW.
  1462.     BPL    DRW2L5            ;IF POSITIVE OK,
  1463.     CLR    TEMP            ;ELSE ZERO IT OUT.
  1464.     BR    DRW2M
  1465. DRW2L5:    CMP    TEMP,#1024.        ;SEE IF TOO BIG.
  1466.     BLO    DRW2M            ;NOPE. OK
  1467.     MOV    #1023.,TEMP        ;ELSE FIX IT UP.
  1468. DRW2M:    MOV    TEMP,(TEMP2)+        ;INSERT STARTING Y INTO BUFFER.
  1469.     MOV    TEMP,LASTY        ;ESTABLISH LAST Y POSITION NOW.
  1470.     MOV    #SETSVM,(TEMP2)+    ;INSERT THE GRAPH PLOT MODE COMMAND <Y>.
  1471. DRW2L:    MOV    TEMP,-(SP)        ;NOW GET Y(NEW) AND DELTA Y.
  1472.     MOV    (IN1)+,TEMP
  1473.     JSR    PC,DFAKE
  1474.     MOV    TEMP,IN2
  1475.     MOV    (SP)+,TEMP
  1476.     CLR    RET1            ;CLEAR AWAY LEFT MOST PART FOR THE DIVIDE.
  1477.     MOV    IN1,-(SP)        ;SAVE IN1 NOW.
  1478.     MOV    #12.,IN1        ;PICK UP A TWELVE FOR THE DIVIDE.
  1479.     SUB    TEMP,IN2        ;GET DELTA Y NOW.
  1480.     BPL    DRAW2G
  1481.     SUB    #6.,IN2
  1482.     NEG    IN2            ;MAKE IN2 POSITIVE NOW.
  1483.     MOV    IN2,RET2        ;MOVE OVER TO DIVISOR PART.
  1484.     JSR    PC,DIVTWO        ;DIVIDE BY TWO NOW.
  1485.     NEG    RET2            ;NEGATE THE ANSWER NOW.
  1486.     BR    DRAW2H
  1487. DRAW2G:    ADD    #6.,IN2
  1488.     MOV    IN2,RET2        ;MOVE IT OVER NOW.
  1489.     JSR    PC,DIVTWO        ;DO THE DIVISION NOW.
  1490. DRAW2H:    MOV    RET2,IN2        ;MOVE OVER THE DELTA NOW.
  1491.     MOV    IN1,RET1        ;ESTABLISH THE COUNT NOW.
  1492.     MOV    (SP)+,IN1        ;RESTORE THE REGISTER NOW.
  1493. DRAW22:    INC    @#DFUDGE        ;---<<INSTRUCTION CHANGED>>---
  1494.     CMP    DFUDGE,#3.
  1495.     BLT    DRAW2V
  1496.     MOV    (PC)+,@(PC)+
  1497.     DEC    @(PC)+
  1498.     .WORD    DRAW22
  1499.     BR    DRAW2W
  1500. DRAW2V:    CMP    DFUDGE,#-3.
  1501.     BGT    DRAW2W
  1502.     MOV    (PC)+,@(PC)+
  1503.     INC    @(PC)+
  1504.     .WORD    DRAW22
  1505. DRAW2W:    ADD    DFUDGE,TEMP        ;PERTIBATE SURFACE NOW.
  1506.     ADD    IN2,TEMP        ;UPDATE TEMP NOW.
  1507.     MOV    TEMP,-(SP)        ;SAVE Y FOR A SECOND.
  1508.     JSR    PC,DRAWIC        ;INSERT
  1509.     BR    DRAW2C            ;STILL GOING.
  1510.     BR    DRAW2X            ;GONE.
  1511. DRAW2C:    MOV    (SP)+,TEMP        ;RECALL THE Y NOW.
  1512.     DEC    RET1            ;SEE IF DONE WITH THE EIGHT.
  1513.     BGT    DRAW22            ;NO.
  1514.     BR    DRW2L            ;YES.
  1515. DRAW2X:    MOV    LEFTEDGE,RET1        ;PICK UP LEFTEDGE AGAIN.
  1516.     MOV    #19.,(SP)        ;PREPARE TO EXAMINE THE TERAIN NOW.
  1517.     MOV    #24.,IN1
  1518.     MOV    RET1,RET2        ;SET UP TWO POINTERS NOW.
  1519.     ASL    RET2
  1520.     ADD    #TERAIN,RET2
  1521. DRAW2Y:    MOV    RET1,-(SP)        ;PUSH FEATURE INDEX ONTO THE STACK.
  1522.     INC    RET1            ;INCREMENT INDEX POINTER TO NEXT FEATURE.
  1523.     JSR    PC,GETFET        ;GET THE FEATURE NOW.
  1524.     MOV    (SP)+,TEMP        ;AND PUT IT IN A USEFUL REGISTER.
  1525.     ASL    TEMP            ;MAKE IT INTO A GOOD INDEX.
  1526.     JSR    PC,@DRAWTB(TEMP)
  1527.     TST    (RET2)+            ;BYPASS
  1528.     ADD    #48.,IN1
  1529.     DEC    (SP)
  1530.     BGT    DRAW2Y            ;KEEP LOOKING NOW.
  1531.     TST    (SP)+            ;ELSE UPDATE.
  1532.     MOV    #DISTOP,(TEMP2)+    ;TERMINATE THE DISPLAY NOW.
  1533.     CLR    (TEMP2)
  1534.     JSR    PC,DRAWRS        ;RESTORE THE REGISTERS.
  1535.     MOV    #MOONST,MOONGO        ;START DISPLAYING THE MOON NOW.
  1536.     RTS    PC            ;AND RETURN NOW.
  1537.     .PAGE
  1538. ;
  1539. ;        JUMP TABLE FOR THE VARIOUS KINDS OF
  1540. ;        CRAP ONE IS LIKELY TO FIND ON THE MOON.
  1541. ;
  1542. AHTAB:    .WORD    AHNONE            ;HOW TO PROCESS THIS CRAP.
  1543.     .WORD    AHSP1
  1544.     .WORD    AHFLG
  1545.     .WORD    AHOLDS
  1546.     .WORD    AHOLDS
  1547.     .WORD    AHROCK
  1548.     .WORD    AHMAC
  1549.     .WORD    AHMAC
  1550. DRAWTB:    .WORD    DRAWRR            ;0=NOTHING=RETURN.
  1551.     .WORD    OLDSHP            ;1=OLD SPACE SHIP
  1552.     .WORD    FLAG            ;2=PLANTED FLAG.
  1553.     .WORD    LEFTSP            ;3=CRASHED SHIP ON LEFT SIDE.
  1554.     .WORD    RIGHTS            ;4=CRASHED SHIP ON RIGHT SIDE.
  1555.     .WORD    ROCK            ;5=A ROCK.
  1556.     .WORD    AHNONE            ;6=LEFT OR RIGHT OF MAC'S. RETURN.
  1557.     .WORD    MACDON            ;7=CENTER OF MAC'S. THIS COVERS 6.
  1558. DFAKE:    MOV    TEMP,-(SP)        ;THIS ROUTINE FIGURES OUT
  1559.     ASL    TEMP            ;Y*3/2/4 OR ((3*Y)/2)/4
  1560.     ADD    (SP)+,TEMP
  1561.     ASR    TEMP
  1562.     ASR    TEMP            ;ALMOST THERE.
  1563.     ASR    TEMP
  1564.     ADD    #23.,TEMP        ;AND THEN IT CORRECTS THE BASE
  1565.     RTS    PC            ;SCREEN Y.
  1566.     .PAGE
  1567. ;
  1568. ;        THESE ROUTINES WILL DRAW OLD AND CRASHED SHIPS
  1569. ;        ONE THE SURFACE OF THE MOON.
  1570. ;
  1571. OLDSHP:    JSR    PC,DEADSP
  1572.     .WORD    0            ;UPRIGHT
  1573.     .WORD    23.            ;DISTANCE ABOVE SURFACE.
  1574.     .WORD    -24.            ;LOWEST POINT TO DRAW.
  1575. LEFTSP:    JSR    PC,DEADSP        ;LEFT TILTED SHIP.
  1576.     .WORD    -90.
  1577.     .WORD    16.
  1578.     .WORD    -18.
  1579. RIGHTS:    JSR    PC,DEADSP
  1580.     .WORD    90.
  1581.     .WORD    16.
  1582.     .WORD    -18.
  1583. DEADSP:    CMP    TEMP2,#MOONEN-102.    ;SEE IF ENOUGH ROOM FOR THE SHIP.
  1584.     BHI    DEADBY            ;NOPE. EXIT.
  1585.     MOV    IN2,-(SP)
  1586.     MOV    RET1,-(SP)
  1587.     MOV    RET2,-(SP)
  1588.     MOV    TEMP,-(SP)
  1589.     MOV    IN1,-(SP)
  1590.     MOV    10.(SP),IN1        ;PICK UP OLD PC.
  1591.     MOV    #SETPNT,(TEMP2)+    ;SET POINT MODE.
  1592.     MOV    (SP),(TEMP2)+        ;MOV OVER THE X NOW.
  1593.     MOV    ANGLE,-(SP)        ;PUSH DOWN THE OLD ANGLE.
  1594.     MOV    (RET2),TEMP        ;PICK UP A Y.
  1595.     JSR    PC,DFAKE
  1596.     MOV    TEMP,-(SP)
  1597.     MOV    2(RET2),TEMP        ;NEXT Y.
  1598.     JSR    PC,DFAKE
  1599.     ADD    (SP)+,TEMP
  1600.     ASR    TEMP            ;AVERAGE OF THE Y'S, WHICH IS CENTER.
  1601.     MOV    (IN1)+,ANGLE        ;MOVE OVER THE CALLER'S ANGLE NOW.
  1602.     ADD    (IN1)+,TEMP        ;AND CENTER THE SHIP.
  1603.     MOV    (IN1),LOWY        ;AND SET THE LOW Y ALL AT THE SAME TIME.
  1604.     MOV    TEMP,(TEMP2)+        ;INSERT THE Y NOW.
  1605.     CMP    (RET2),2(RET2)        ;SEE WHICH Y IS BIGGER.
  1606.     BEQ    DEADOK
  1607.     BHI    DEADPL
  1608.     ADD    #-22.,ANGLE
  1609.     BR    DEADOK
  1610. DEADPL:    ADD    #22.,ANGLE
  1611. DEADOK:    JSR    PC,TRIG            ;FIGURE OUT SINES AND COSINES.
  1612.     MOV    TEMP2,IN2
  1613.     MOV    #DESIGN,IN1        ;SET UP DRAW CALL.
  1614.     JSR    PC,DRAW            ;DRAW THE SHIP NOW.
  1615.     CLR    -(TEMP2)        ;REMOVE THE DISPLAY STOP INSTRUCTION.
  1616.     CLR    -(TEMP2)
  1617.     MOV    (SP)+,ANGLE        ;RESTORE THE ANGLE.
  1618.     JSR    PC,TRIG            ;AND THE VALUES.
  1619.     MOV    (SP)+,IN1        ;POP THE VALUES NOW.
  1620.     MOV    (SP)+,TEMP
  1621.     MOV    (SP)+,RET2
  1622.     MOV    (SP)+,RET1
  1623.     MOV    (SP)+,IN2
  1624.     TST    (SP)+            ;IGNORE ORIGINAL CALL.
  1625. DEADBY:    RTS    PC            ;AND RETURN NOW.
  1626.     .PAGE
  1627. ;
  1628. ;        THIS ROUTINE WILL PLANT AN AMERICAN FLAG ON THE MOON.
  1629. ;
  1630. FLAG:    CMP    TEMP2,#MOONEN-FLAGEN+FLAGL-6    ;SEE IF FLAG CAN FIT.
  1631.     BHI    ROCKRT            ;NOPE. NO ROOM. DO NOT INSERT IT
  1632.     MOV    IN1,FLAGX
  1633.     MOV    (RET2),TEMP
  1634.     JSR    PC,DFAKE        ;GET THE Y'S
  1635.     MOV    TEMP,IN2
  1636.     MOV    2(RET2),TEMP
  1637.     JSR    PC,DFAKE
  1638.     ADD    IN2,TEMP
  1639.     ASR    TEMP
  1640.     MOV    TEMP,FLAGY
  1641.     MOV    #FLAGL,IN2        ;NOW FAKE OUT A ROUTINE.
  1642.     BR    ROCKLP            ;AND NOW ENTER ROCK PUTTER.
  1643.     .PAGE
  1644. ;
  1645. ;        THIS ROUTINE WILL DRAW A ROCK ON THE MOON.
  1646. ;
  1647. ROCK:    CMP    TEMP2,#MOONEN-ROCKEN+ROCKL-6    ;SEE IF THE ROCK CAN FIT.
  1648.     BHI    ROCKRT            ;CAN'T FIT NOW.
  1649.     MOV    IN1,ROCKX        ;SAVE THE ROCK'S X AND Y POINT.
  1650.     MOV    (RET2),TEMP        ;AFTER FUDGING Y.
  1651.     JSR    PC,DFAKE
  1652.     MOV    TEMP,IN2
  1653.     MOV    2(RET2),TEMP
  1654.     JSR    PC,DFAKE
  1655.     ADD    IN2,TEMP
  1656.     ASR    TEMP
  1657.     MOV    TEMP,ROCKY        ;SAVE IT AWAY NOW.
  1658.     MOV    #ROCKL,IN2        ;PICK UP POINTER TO PROTOTYPE ROCK.
  1659. ROCKLP:    MOV    (IN2)+,TEMP
  1660.     CMP    TEMP,#DISTOP        ;DONE?
  1661.     BEQ    ROCKRT            ;YES.
  1662.     MOV    TEMP,(TEMP2)+        ;NO. PUT AWAY NOW.
  1663.     BR    ROCKLP
  1664. ROCKRT:    RTS    PC            ;RETURN NOW.
  1665. MACDON:    TST    MACTHR            ;IS MACDONALD'S STILL IN EXISTANCE.
  1666.     BEQ    MACEX            ;NO. EXIT.
  1667.     CMP    IN1,#25.        ;IT IS. ARE WE CENTERED ENOUGH
  1668.     BLE    MACEX            ;TO DRAW IT. NO. TO FAR LEFT.
  1669.     CMP    IN1,#880.
  1670.     BGE    MACEX            ;NO. TO FAR TO THE RIGHT.
  1671.     MOV    2(RET2),TEMP        ;PICK UP RIGHT Y NOW.
  1672.     CMP    (RET2),TEMP        ;AND SEE IF IT'S SMALLER THAN LEFT Y.
  1673.     BGE    MACB1            ;IT IS.
  1674.     MOV    (RET2),TEMP        ;IT ISN'T. PICK SMALLEST Y NOW.
  1675. MACB1:    JSR    PC,DFAKE        ;GET SCREEN COORDINATES NOW.
  1676.     MOV    TEMP,MACY        ;SAVE AWAY THE Y
  1677.     MOV    IN1,MACX        ;AND THE X ALSO.
  1678.     MOV    SP,MACON        ;AND SET THE MAC IS DRAWN FLAG.
  1679.     MOV    #DISTOP,(TEMP2)+    ;AND PLACE CALL TO IT IN THE BUFFER.
  1680.     MOV    #MACS,(TEMP2)+
  1681. MACEX:    RTS    PC            ;AND RETURN NOW. SIMPLE, ISN'T IT.
  1682.     .PAGE
  1683. ;
  1684. ;    THESE ARE SOME MISC MULTIPLY ROUTINES (AND DIVIDE) WHICH
  1685. ;    ARE NECESSARY FOR THE SMOOTH OPERATION OF THE SYSTEM.
  1686. ;
  1687. MULTWO:    CLR    RET2            ;CLEAR LOW ORDER RETURN VALUE.
  1688.     CMP    IN2,IN1            ;SEE WHICH ONE IS SMALLER.
  1689.     BHIS    MULT1L            ;IN1 IS SMALLER (AS EXPECTED).
  1690.     MOV    IN2,RET1        ;PLACE IN2 IN RET1, AND
  1691.     BEQ    MULTDN            ;IF ZERO, EXIT. ELSE THEN PLACE
  1692.     MOV    IN1,IN2            ;IN1 IN IN2. <INVERT>.
  1693.     CLC                ;CLEAR THE CARRY BEFORE WE BLOW IT!
  1694.     BR    MULTCM            ;AND START MULTIPLY GOING.
  1695. MULT1L:    MOV    IN1,RET1        ;MOVE OVER IN1, BECAUSE IT IS SMALLEST.
  1696.     BEQ    MULTDN            ;IF IT'S ZERO, THEN WE ARE DONE.
  1697. MULTCM:    ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1698.     BCS    ADD16            ;AND START MULTIPLY WHEN SET.
  1699.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1700.     BCS    ADD15            ;AND START MULTIPLY WHEN SET.
  1701.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1702.     BCS    ADD14            ;AND START MULTIPLY WHEN SET.
  1703.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1704.     BCS    ADD13            ;AND START MULTIPLY WHEN SET.
  1705.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1706.     BCS    ADD12            ;AND START MULTIPLY WHEN SET.
  1707.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1708.     BCS    ADD11            ;AND START MULTIPLY WHEN SET.
  1709.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1710.     BCS    ADD10            ;AND START MULTIPLY WHEN SET.
  1711.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1712.     BCS    ADD9            ;AND START MULTIPLY WHEN SET.
  1713.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1714.     BCS    ADD8            ;AND START MULTIPLY WHEN SET.
  1715.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1716.     BCS    ADD7            ;AND START MULTIPLY WHEN SET.
  1717.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1718.     BCS    ADD6            ;AND START MULTIPLY WHEN SET.
  1719.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1720.     BCS    ADD5            ;AND START MULTIPLY WHEN SET.
  1721.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1722.     BCS    ADD4            ;AND START MULTIPLY WHEN SET.
  1723.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1724.     BCS    ADD3            ;AND START MULTIPLY WHEN SET.
  1725.     ROL    RET1            ;ROTATE MULTIPLIER ONE PLACE.
  1726.     BCS    ADD2            ;AND START MULTIPLY WHEN SET.
  1727.     CLR    RET1            ;RET1 MUST BE 100000, BECAUSE
  1728.     MOV    IN2,RET2        ;IF WE GOT HERE, THEN IT MUST
  1729. MULTDN:    RTS    PC            ;BE A MULTIPLY BY 1.
  1730. ADD16:    MOV    IN2,RET2        ;IF A BIGGY, JUST MOVE OVER CRAP.
  1731.     ASL    RET2            ;OK, NOW LET'S SHIFT AND START GOING.
  1732.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1733.     BCC    NADD15            ;NO. BYPASS THE ADD NOW.
  1734. ADD15:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1735.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1736. NADD15:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1737.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1738.     BCC    NADD14            ;NO. BYPASS THE ADD NOW.
  1739. ADD14:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1740.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1741. NADD14:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1742.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1743.     BCC    NADD13            ;NO. BYPASS THE ADD NOW.
  1744. ADD13:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1745.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1746. NADD13:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1747.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1748.     BCC    NADD12            ;NO. BYPASS THE ADD NOW.
  1749. ADD12:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1750.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1751. NADD12:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1752.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1753.     BCC    NADD11            ;NO. BYPASS THE ADD NOW.
  1754. ADD11:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1755.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1756. NADD11:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1757.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1758.     BCC    NADD10            ;NO. BYPASS THE ADD NOW.
  1759. ADD10:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1760.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1761. NADD10:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1762.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1763.     BCC    NADD9            ;NO. BYPASS THE ADD NOW.
  1764. ADD9:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1765.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1766. NADD9:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1767.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1768.     BCC    NADD8            ;NO. BYPASS THE ADD NOW.
  1769. ADD8:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1770.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1771. NADD8:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1772.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1773.     BCC    NADD7            ;NO. BYPASS THE ADD NOW.
  1774. ADD7:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1775.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1776. NADD7:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1777.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1778.     BCC    NADD6            ;NO. BYPASS THE ADD NOW.
  1779. ADD6:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1780.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1781. NADD6:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1782.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1783.     BCC    NADD5            ;NO. BYPASS THE ADD NOW.
  1784. ADD5:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1785.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1786. NADD5:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1787.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1788.     BCC    NADD4            ;NO. BYPASS THE ADD NOW.
  1789. ADD4:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1790.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1791. NADD4:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1792.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1793.     BCC    NADD3            ;NO. BYPASS THE ADD NOW.
  1794. ADD3:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1795.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1796. NADD3:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1797.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1798.     BCC    NADD2            ;NO. BYPASS THE ADD NOW.
  1799. ADD2:    ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1800.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1801. NADD2:    ASL    RET2            ;ALL DONE WITH PREV. OPER.
  1802.     ROL    RET1            ;DO NEXT BIT NOW. OK TO MULT?
  1803.     BCC    NADD1            ;NO. BYPASS THE ADD NOW.
  1804.     ADD    IN2,RET2        ;BIT ON. ADD IN MULTIPLICAND.
  1805.     ADC    RET1            ;DON'T FORGET ABOUT ADDING IN CARRY.
  1806. NADD1:    RTS    PC            ;AND RETURN WHEN DONE.
  1807.     .PAGE
  1808. ;
  1809. ;        THIS ROUTINE WILL MULTIPLY TWO SIGNED NUMBERS.
  1810. ;
  1811. SGNMUL:    TST    IN1            ;GET SIGN OF THE FIRST ARGUMENT.
  1812.     BPL    SGNMP1            ;IT'S OK.
  1813.     NEG    IN1            ;NOT OK.
  1814.     TST    IN2            ;HOW ABOUT SECOND.
  1815.     BPL    SGNMP2            ;IT'S POSITIVE.
  1816.     NEG    IN2            ;BOTH NEGATIVE=POSITIVE.
  1817. SGNMP3:    JSR    PC,MULTWO        ;MULTIPLY THEM OUT.
  1818.     RTS    PC            ;AND RETURN NOW.
  1819. SGNMP1:    TST    IN2            ;TEST SIGN OF THE SECOND ONE.
  1820.     BPL    SGNMP3            ;IT'S ALSO POSITIVE. DO MULTIPLY.
  1821.     NEG    IN2            ;ELSE NEGATE IT, ANDINVERT ANSWER.
  1822. SGNMP2:    JSR    PC,MULTWO        ;MULTIPLY THEM OUT.
  1823.     NEG    RET2            ;AND DO A DOUBLE PRECISION NEGATE.
  1824.     ADC    RET1
  1825.     NEG    RET1
  1826.     RTS    PC            ;AND THEN RETURN. ALL IS WELL.
  1827. TRGMUL:    JSR    PC,SGNMUL
  1828.     ASL    RET2            ;FUDGE THE RETURN ANSWER NOW.
  1829.     ROL    RET1
  1830.     ASL    RET2
  1831.     ROL    RET1
  1832.     RTS    PC
  1833.     .PAGE
  1834. ;
  1835. ;        THIS ROUTINE WILL DIVIDE RET1-RET2 BY IN1 AND LEAVE THE
  1836. ;        ANSWER IN RET2. DOES IT BY 16 SUBTRACTIONS. CRUDE BUT FAST.
  1837. ;
  1838. DIVTWO:    ASL    RET2            ;WE FORBID LEFT-MOST BIT TO BE ON.
  1839.     ROL    RET1
  1840.     SUB    IN1,RET1        ;SEE IF IT FITS.
  1841.     BPL    DVOKA            ;IT FITS. GENERATE A "1".
  1842. DVBADA:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1843.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1844.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1845.     BPL    DVOKB            ;IT FITS. GENERATE A "1".
  1846. DVBADB:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1847.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1848.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1849.     BPL    DVOKC            ;IT FITS. GENERATE A "1".
  1850. DVBADC:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1851.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1852.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1853.     BPL    DVOKD            ;IT FITS. GENERATE A "1".
  1854. DVBADD:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1855.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1856.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1857.     BPL    DVOKE            ;IT FITS. GENERATE A "1".
  1858. DVBADE:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1859.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1860.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1861.     BPL    DVOKF            ;IT FITS. GENERATE A "1".
  1862. DVBADF:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1863.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1864.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1865.     BPL    DVOKG            ;IT FITS. GENERATE A "1".
  1866. DVBADG:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1867.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1868.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1869.     BPL    DVOKH            ;IT FITS. GENERATE A "1".
  1870. DVBADH:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1871.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1872.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1873.     BPL    DVOKI            ;IT FITS. GENERATE A "1".
  1874. DVBADI:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1875.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1876.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1877.     BPL    DVOKJ            ;IT FITS. GENERATE A "1".
  1878. DVBADJ:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1879.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1880.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1881.     BPL    DVOKK            ;IT FITS. GENERATE A "1".
  1882. DVBADK:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1883.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1884.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1885.     BPL    DVOKL            ;IT FITS. GENERATE A "1".
  1886. DVBADL:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1887.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1888.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1889.     BPL    DVOKM            ;IT FITS. GENERATE A "1".
  1890. DVBADM:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1891.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1892.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1893.     BPL    DVOKN            ;IT FITS. GENERATE A "1".
  1894. DVBADN:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1895.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1896.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1897.     BPL    DVOKO            ;IT FITS. GENERATE A "1".
  1898. DVBADO:    ASL    RET2            ;NOT YET. PUT IN A ZERO.
  1899.     ROL    RET1            ;AND PICK UP THE NEXT BIT.
  1900.     ADD    IN1,RET1        ;2*(Y-X)+X=2*Y-X.
  1901.     BPL    DVOKP            ;IT FITS. GENERATE A "1".
  1902. DVBADP:    ADD    IN1,RET1        ;ON LAST FAIL, ADD BACK IN TO GET A
  1903.     RTS    PC            ;CORRECT REMAINDER, AND THEN EXIT.
  1904. DVOKA:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1905.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1906.     ROL    RET1            ;TO SEE IF IT GOES.
  1907.     SUB    IN1,RET1
  1908.     BMI    DVBADB            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1909. DVOKB:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1910.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1911.     ROL    RET1            ;TO SEE IF IT GOES.
  1912.     SUB    IN1,RET1
  1913.     BMI    DVBADC            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1914. DVOKC:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1915.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1916.     ROL    RET1            ;TO SEE IF IT GOES.
  1917.     SUB    IN1,RET1
  1918.     BMI    DVBADD            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1919. DVOKD:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1920.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1921.     ROL    RET1            ;TO SEE IF IT GOES.
  1922.     SUB    IN1,RET1
  1923.     BMI    DVBADE            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1924. DVOKE:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1925.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1926.     ROL    RET1            ;TO SEE IF IT GOES.
  1927.     SUB    IN1,RET1
  1928.     BMI    DVBADF            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1929. DVOKF:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1930.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1931.     ROL    RET1            ;TO SEE IF IT GOES.
  1932.     SUB    IN1,RET1
  1933.     BMI    DVBADG            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1934. DVOKG:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1935.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1936.     ROL    RET1            ;TO SEE IF IT GOES.
  1937.     SUB    IN1,RET1
  1938.     BMI    DVBADH            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1939. DVOKH:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1940.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1941.     ROL    RET1            ;TO SEE IF IT GOES.
  1942.     SUB    IN1,RET1
  1943.     BMI    DVBADI            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1944. DVOKI:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1945.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1946.     ROL    RET1            ;TO SEE IF IT GOES.
  1947.     SUB    IN1,RET1
  1948.     BMI    DVBADJ            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1949. DVOKJ:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1950.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1951.     ROL    RET1            ;TO SEE IF IT GOES.
  1952.     SUB    IN1,RET1
  1953.     BMI    DVBADK            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1954. DVOKK:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1955.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1956.     ROL    RET1            ;TO SEE IF IT GOES.
  1957.     SUB    IN1,RET1
  1958.     BMI    DVBADL            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1959. DVOKL:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1960.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1961.     ROL    RET1            ;TO SEE IF IT GOES.
  1962.     SUB    IN1,RET1
  1963.     BMI    DVBADM            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1964. DVOKM:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1965.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1966.     ROL    RET1            ;TO SEE IF IT GOES.
  1967.     SUB    IN1,RET1
  1968.     BMI    DVBADN            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1969. DVOKN:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1970.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1971.     ROL    RET1            ;TO SEE IF IT GOES.
  1972.     SUB    IN1,RET1
  1973.     BMI    DVBADO            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1974. DVOKO:    INC    RET2            ;SUBTRACTION IS GOOD. INSERT A "1".
  1975.     ASL    RET2            ;NOW CHECK THE NEXT ONE.
  1976.     ROL    RET1            ;TO SEE IF IT GOES.
  1977.     SUB    IN1,RET1
  1978.     BMI    DVBADP            ;GOES NOT GO. INSERT A ZERO AND START ADDING.
  1979. DVOKP:    INC    RET2            ;LAST SUBTRACTION SUCCESSFULL.
  1980. DVOKX:    RTS    PC            ;INSERT A "1" AND RETURN. ALL IS WELL.
  1981.     .PAGE
  1982. ;
  1983. ;        THIS IS THE CLOCK INTERUPT ROUTINE.
  1984. ;
  1985. TIMER:    BIS    #100,LKS        ;JUST MAKE SURE CLOCK IS STILL GOING.
  1986.     INC    TICKS            ;UPDATE CLOCKS.
  1987.     INC    TIME            ;INCREMENT BOTH CLOCKS.
  1988.     BIT    #17,TIME            ;SEE IF IT'S TIME TO CLEAR ARROWS.
  1989.     BNE    TIMERT            ;NOPE. EXIT.
  1990.     CLR    DLIST1            ;YES. CLEAR THEM.
  1991.     CLR    DLIST2
  1992. TIMERT:    RTI                ;AND RETURN NOW.
  1993.     .PAGE
  1994. ;
  1995. ;                    THIS IS THE DELAY ROUTINE.
  1996. ;            IT WILL WAIT "N" SECONDS BEFORE RESTARTING THE SYSTEM.
  1997. ;
  1998. DELAY:    MOV    #DISTOP,LPSW        ;IF DELAYED CALLED, TURN OFF LOW FUEL MESSAGE.
  1999.     MOV    @0(SP),IN1        ;PICK UP THE TIME.
  2000.     MOV    TIME,IN2        ;GET CURRENT TIME.
  2001.     MOV    IN1,RET1        ;MOVE OVER TIME REQUESTED.
  2002.     BPL    DELAY1            ;IF POSITIVE, IT'S ALRIGHT.
  2003.     NEG    IN1            ;ELSE NEGATE IT NOW.
  2004. DELAY1:    ADD    #CLKFRQ,IN2        ;CALCULATE FUTURE TIME
  2005.     DEC    IN1            ;WAIT TILL MULTIPLICATION IS DONE.
  2006.     BGT    DELAY1
  2007. DELAY2:    WAIT                ;WAIT FOR AN INTERUPT TO OCCUR.
  2008.     JSR    PC,DIAL            ;WHILE WAITING, DISPLAY THE USER'S DATA.
  2009.     CMP    IN2,TIME        ;CHECK THE TIMES NOW.
  2010.     BHI    DELAY2
  2011.     ADD    #2,(SP)            ;UPDATE THE RETURN PC NOW.
  2012.     TST    RET1            ;TEST SIGN OF THE WAIT.
  2013.     BMI    DVOKX            ;IF NEGATIVE, THEN RETURN.
  2014.     JMP    RESTART            ;ELSE RESTART THE SYSTEM.
  2015.     .PAGE
  2016. ;
  2017. ;    THIS IS THE START OF THE DISPLAY SECTION. PLEASE BE MERICFUL.
  2018. ;
  2019. DISPLY:    MOV    IN1,-(SP)        ;COMES HERE ON AN INTERUPT.
  2020.     MOV    IN2,-(SP)
  2021.     MOV    DSTACK,IN1        ;PICK UP OLD STACK.
  2022.     MOV    @DPC,IN2        ;FIND OUT WHY WE STOPPED.
  2023.     BEQ    DSUBRT            ;DISPLAY SUBROUTINE RETURN.
  2024.     MOV    DPC,-(IN1)        ;SUBROUTINE CALL. PUSH RETURN DPC ON STACK.
  2025.     ADD    #2,(IN1)        ;AND FUDGE PAST POINTER.
  2026.     MOV    #GOTSUB,-(IN1)        ;AND PUSH RETURN ADDRESS ONTO STACK.
  2027. DISRT:    CMP    (IN2),#DISTOP        ;SEE IF WHERE HE WANTS TO START IS
  2028.     BNE    DISRST            ;ANOTHER SUBROUTINE CALL.
  2029.     TST    2(IN2)            ;IF IT IS, THEN FIGURE OUT WHETHER
  2030.     BEQ    DSUBRT            ;TO RETURN OR GO DOWN ONE LEVEL.
  2031.     MOV    IN2,-(IN1)        ;PUSH NEXT DPC ONTO STACK.
  2032.     ADD    #4,(IN1)        ;AND FUDGE IT UP A BIT.
  2033.     MOV    #GOTSUB,-(IN1)        ;PUT ADDRESS ONTO STACK.
  2034.     MOV    2(IN2),IN2        ;UPDATE NEW PC NOW.
  2035.     BR    DISRT            ;AND LOOP AGAIN.
  2036. DISRST:    MOV    IN1,DSTACK        ;SAVE THE STACK NOW.
  2037.     MOV    IN2,DPC            ;START THE DISPLAY GOING NOW.
  2038.     MOV    (SP)+,IN2        ;RESTORE SAVED REGISTERS.
  2039.     MOV    (SP)+,IN1
  2040.     RTI                ;AND RETURN NOW.
  2041. DSUBRT:    MOV    (IN1)+,PC        ;GO TO SUBROUTINE NOW.
  2042. GOTSUB:    MOV    (IN1)+,IN2        ;PICK UP OLD DPC
  2043.     BR    DISRT            ;AND RESTART AND CONTINUE.
  2044. DTOP:    INC    DNUM            ;THIS ROUTINE GOES DOWN THE MASTER LIST.
  2045. DTOP2:    MOV    DNUM,IN2
  2046.     ASL    IN2            ;MAKE INTO A GOOD INDEX.
  2047.     MOV    DLIST(IN2),IN2
  2048.     BNE    DTOPOK            ;IT'S OK TO START NOW.
  2049.     CLR    DNUM            ;AT BOTTOM. LOOP.
  2050.     BR    DTOP2
  2051. DTOPOK:    MOV    #DTOP,STACKD
  2052.     MOV    #STACKD,IN1
  2053.     BR    DISRT
  2054.     .PAGE
  2055. ;
  2056. ;        LIGHT PEN HIT ROUTINE.
  2057. ;
  2058. LIGHT:    MOV    IN1,-(SP)
  2059.     MOV    IN2,-(SP)        ;SAVE REGISTERS NOW.
  2060.     MOV    DNUM,IN2        ;PICK UP THE INDEXED NUMBER NOW.
  2061.     CMP    IN2,OLDHIT        ;SEE IF INDEX IS SAME AS PREVIOUS.
  2062.     BEQ    LIGHTG            ;YES. MAYBE WE CAN PROCESS IT.
  2063.     MOV    #15.,HITCNT        ;NOT SAME. SET UP HIT COUNTER
  2064.     MOV    IN2,OLDHIT        ;AND THE OLD REGISTER  NOW.
  2065.     BR    LPRESM            ;AND EXIT NOW.
  2066. LIGHTG:    DEC    HITCNT            ;HAVE WE BEEN HIT ENOUGH?
  2067.     BPL    LPRESM            ;NO. GET OUT NOW.
  2068.     ASL    IN2            ;ELSE SHIFT THE INDEX OVER
  2069.     JMP    @LPTAB(IN2)        ;AND GO PROCESS INTERUPT.
  2070.     .PAGE
  2071. ;
  2072. ;        THIS ROUTINE IS CALLED WHENEVER THE LIGHT PEN HITS
  2073. ;        THE THROTTLE BAR.
  2074. ;
  2075. LPBARH:    MOV    YSR,IN2            ;GET THE Y COORDINATE.
  2076.     BIC    #-2000,IN2        ;MAKE IT JUST 10 BITS.
  2077.     ADD    #BARADD,IN2        ;ADD FUDGE FACTOR NOW.
  2078.     MOV    LPBARY,IN1        ;PICK UP OLD Y NOW.
  2079.     ASL    IN1            ;AND MULTIPLY IT BY 8.
  2080.     ASL    IN1
  2081.     ASL    IN1
  2082.     SUB    LPBARY,IN1        ;WE REALLY ONLY WANTED 7.
  2083.     ADD    IN1,IN2            ;NOW MAKE IT 7*OLD+NEW Y.
  2084.     ASR    IN2
  2085.     ASR    IN2
  2086.     ASR    IN2            ;NOW AVERAGE IT OUT.
  2087.     MOV    IN2,LPBARY        ;SAVE THE Y VALUE NOW.
  2088.     SUB    #BARFDG,IN2        ;SUBTRACT BASE Y NOW.
  2089.     ASR    IN2            ;DIVIDE BY TWO.
  2090.     CMP    IN2,#MINTRS        ;COMPARE AGAINST MINIMUM THRUST.
  2091.     BPL    LPBARP            ;GREATER OR EQUAL. IT'S OK.
  2092.     MOV    #MINTRS,IN2        ;ELSE SET TO THE MINIMUM THRUST.
  2093. LPBARP:    CMP    #100.,IN2        ;LIKEWISE IF GREATER THEN 100, MAKE
  2094.     BGE    LPBARQ            ;IT ONLY 100.
  2095.     MOV    #100.,IN2
  2096. LPBARQ:    MOV    IN2,PERCNT        ;SAVE AWAY THE VALUE NOW.
  2097. LPRESM:    BIS    #1,DPC            ;RESUME THE DISPLAY NOW.
  2098.     MOV    (SP)+,IN2        ;RESTORE THE REGISTERS NOW.
  2099.     MOV    (SP)+,IN1        ;AND THEN EXIT.
  2100.     RTI
  2101. LPIT1:    MOV    DLIST(IN2),IN2        ;GET POINTER TO USER'S DISPAY ITEM.
  2102.     MOV    LPFLG1,IN1        ;AND PICK UP PREVIOUS ITEM NOW.
  2103.     BEQ    LPIT1P            ;IF ZERO, NO PREVIOUS BLINKING.
  2104.     BIC    #10,2(IN1)        ;ELSE CLEAR OUT THE BLINK BITS.
  2105. LPIT1P:    MOV    IN2,LPFLG1        ;SAVE IT AWAY FOR DISPLAY TRANSFER.
  2106.     BIS    #30,2(IN2)        ;SET IT BLINKING NOW.
  2107.     BR    LPRESM            ;AND RESUME THE DISPLAY NOW.
  2108. LPIT2:    MOV    LPFLG1,IN1        ;GET HIS POINTER.
  2109.     BEQ    LPRESM            ;NONE SPECIFIED.
  2110.     CLR    LPFLG1            ;CLEAR POINTER NOW.
  2111.     MOV    IN1,DIALTB-LPBASE+DLIST(IN2)    ;CHANGE OUR POINTER NOW.
  2112.     BIC    #10,2(IN1)        ;AND CLEAR THE BLINK FLAG NOW.
  2113.     BR    LPRESM            ;AND RESUME THE DISPLAY NOW.
  2114. ARROW:    MOV    DLIST(IN2),IN2        ;ON ARROW HIT, COME HERE. PICK UP ADDRESS.
  2115.     MOV    -2(IN2),TURN        ;AND MOVE OVER RATE OF TURN.
  2116.     MOV    IN2,DLIST1        ;AND ALSO MAKE IT BRIGHTER.
  2117.     MOV    IN2,DLIST2
  2118.     BR    LPRESM            ;AND RESUME NOW.
  2119.     .PAGE
  2120. ;
  2121. ;        DISPLAY POINTERS.
  2122. ;
  2123. LPBASE:
  2124. DLIST:    .WORD    DITEM1
  2125.     .WORD    DITEM2
  2126.     .WORD    DITEM3
  2127.     .WORD    DITEM4
  2128.     .WORD    ITEME1
  2129.     .WORD    ITEME2
  2130.     .WORD    ITEME3
  2131.     .WORD    ITEME4
  2132.     .WORD    ITEME5
  2133.     .WORD    ITEME6
  2134.     .WORD    ITEME7
  2135.     .WORD    ITEME8
  2136.     .WORD    ITEME9
  2137.     .WORD    ITEMET
  2138.     .WORD    ITEMEE
  2139.     .WORD    ITEMES
  2140.     .WORD    DRWSHP
  2141.     .WORD    ONFIRE
  2142.     .WORD    INFO
  2143.     .WORD    DRWDST
  2144.     .WORD    DRWLUN
  2145.     .WORD    SLEFTA
  2146.     .WORD    SRGTA
  2147.     .WORD    BLEFTA
  2148.     .WORD    BRGTA
  2149.     .WORD    LPBAR
  2150. DLIST1:    .WORD    0            ;EXTRA BRIGHTNESS WORD
  2151. DLIST2:    .WORD    0            ;IF DISPLAYING THE ARROWS.
  2152.     .WORD    0
  2153.     .PAGE
  2154. ;
  2155. ;        ;LIGHT PEN VECTORS.
  2156. ;
  2157. LPTAB:    .WORD    LPIT2,LPIT2,LPIT2,LPIT2
  2158.     .WORD    LPIT1,LPIT1,LPIT1,LPIT1
  2159.     .WORD    LPIT1,LPIT1,LPIT1,LPIT1
  2160.     .WORD    LPIT1,LPIT1,LPIT1,LPIT1
  2161.     .WORD    DSUBRT,DSUBRT,DSUBRT,DSUBRT,DSUBRT
  2162.     .WORD    ARROW,ARROW,ARROW,ARROW
  2163.     .WORD    LPBARH
  2164.     .WORD    ARROW,ARROW        ;TERMINATING LIGHT PEN HITS.
  2165.     .PAGE
  2166. ;
  2167. ;        THIS ROUTINE WILL CALCULATE THE VALUES THAT THE
  2168. ;        USER WISHES TO HAVE DISPLAYED.
  2169. ;
  2170. DIAL:    MOV    IN1,-(SP)        ;SAVE ALL THE IMPORTANT REGISTERS NOW.
  2171.     MOV    IN2,-(SP)
  2172.     MOV    RET1,-(SP)
  2173.     MOV    RET2,-(SP)
  2174.     MOV    TEMP,-(SP)
  2175.     MOV    TEMP2,-(SP)
  2176.     CLR    TEMP            ;NOW SET POINTER TO FIRST ITEM.
  2177. DIALL:    MOV    DIALTB(TEMP),TEMP2    ;PICK UP POINTER TO AN ITEM ENTRY.
  2178.     BEQ    DIALD1            ;IF ZERO, THEN END OF LIST.
  2179.     MOV    DIALTC(TEMP),IN2    ;PICK UP POINTER TO WHERE TO
  2180.     MOV    TEMP2,RET2        ;DISPLAY CALCULATED VALUES.
  2181.     ADD    #10.,RET2        ;CALCULATE "ITEMFX" ENTRY ADDRESS.
  2182.     MOV    RET2,18.(IN2)        ;AND INSERT IT IN THE DISJMP OF
  2183.     MOV    @-4(TEMP2),RET2        ;THE DITEMX TABLE. PICK UP USERS NUMBER NOW.
  2184.     MOV    -2(TEMP2),IN1        ;PICK UP THE DIVISOR <IF ANY>.
  2185.     BEQ    DIALND            ;NONE. DO NOT DIVIDE. DISPLAY AS IS.
  2186.     TST    RET2            ;NOW MAKE ANSWER POSITIVE.
  2187.     BPL    DIALLP
  2188.     NEG    RET2
  2189. DIALLP:    CLR    RET1            ;GET RID OF THE HIGH PART.
  2190.     JSR    PC,DIVTWO        ;DO THE DIVISION NOW.
  2191.     TST    @-4(TEMP2)        ;NOW RESTORE THE SIGN.
  2192.     BPL    DIALND
  2193.     NEG    RET2
  2194. DIALND:    MOV    DIALTC(TEMP),TEMP2    ;PICK UP DITEMX POINTER AGAIN.
  2195.     MOV    RET2,IN1        ;MOVE OVER NUMBER NOW.
  2196.     MOV    #10.,IN2        ;NOW CREATE ADDRESS OF WHERE TO LEAVE ANSWER
  2197.     ADD    TEMP2,IN2        ;AFTER CONVERTING TO ASCII STRING.
  2198.     JSR    PC,SASCII        ;DO THE CONVERSION NOW.
  2199.     TST    (TEMP)+            ;FINALLY INCREMENT POINTER TO NEXT ITEM.
  2200.     BR    DIALL            ;AND GO BACK UP TO TOP AND GET NEXT VALUE.
  2201. DIALD1:    CMP    PERCNT,OLDPER        ;CONVERT PERCENTAGE NOW. ANY CHANGE?
  2202.     BEQ    DIALRT            ;NO. JUST EXIT.
  2203.     MOV    #LPBARC,IN2        ;YES. GET ADDRESS OF WHERE TO PLACE STRING.
  2204.     MOV    PERCNT,IN1        ;GET THE NUMBER NOW.
  2205.     MOV    IN1,OLDPER        ;UPDATE OLD PERCENTAGE NOW.
  2206.     JSR    PC,SASCII        ;AND CONVERT IT NOW.
  2207. DIALRT:    MOV    (SP)+,TEMP2        ;RESTORE ALL THE ACTIVE REGISTERS NOW.
  2208.     MOV    (SP)+,TEMP
  2209.     MOV    (SP)+,RET2
  2210.     MOV    (SP)+,RET1
  2211.     MOV    (SP)+,IN2
  2212.     MOV    (SP)+,IN1
  2213.     RTS    PC            ;AND RETURN NOW.
  2214.     .PAGE
  2215. ;
  2216. ;        THIS ROUTINE CONVERT THE BINARY NUMBER (UNSIGNED)
  2217. ;        IN THE REGISTER "IN1" INTO AN ASCII STRING SIX
  2218. ;        CHARACTERS LONG AND LEAVES THE ANSWER TO WHERE "IN2"
  2219. ;        POINTS TO. THE ANSWER IS PUT RIGHT JUSTIFIED WITH
  2220. ;        LEADING BLANKS.
  2221. ;
  2222. ASCII:    MOVB    #' ,(IN2)+        ;FIRST CHARACTER WILL BE BLANK ALWAYS.
  2223.     CMP    IN1,#10000.        ;IS IT GREATER THEN 9999.?
  2224.     BHIS    ASCIIG            ;YES. DO SOMETHING SPECIAL.
  2225.     MOVB    #' ,(IN2)+        ;NO. JUST INSERTA BLANK.
  2226.     CLR    -(SP)            ;AND REMEMBER TO DELETE LEADING ZEROS.
  2227. ASCIIL:    CMP    IN1,#100.        ;IS IT GREATER THAN 99?
  2228.     BLT    ASCIID            ;NO! NO DIVIDE IS NECESSARY.
  2229.     MOV    IN1,RET2        ;GREATER THAN 99. DIVIDE.
  2230.     CLR    RET1            ;CLEAR HIGH ORDER WORD OF AC-MQ.
  2231.     MOV    #100.,IN1        ;DIVIDE BY 100.
  2232.     JSR    PC,DIVTWO        ;DIVIDE NOW.
  2233.     ASL    RET2            ;NOW LOOK UP ANSWER IN TABLE.
  2234.     ADD    #TENTAB,RET2        ;TWO BYTES WHICH COMPOSE NEXT TWO DIGITS.
  2235. ASCIIB:    JSR    PC,ASCDO        ;INSERT FIRST.
  2236.     JSR    PC,ASCDO        ;INSERT SECOND.
  2237.     MOV    RET1,RET2        ;GET THE REMAINDER NOW.
  2238.     ASL    RET2
  2239.     ADD    #TENTAB,RET2        ;AND MAKE IT A GOOD ADDRESS.
  2240.     JSR    PC,ASCDO        ;AND DO THE NEXT TWO DIGITS.
  2241.     MOV    PC,(SP)            ;BUT MAKE SURE WE GET A GOOD ZERO.
  2242.     JSR    PC,ASCDO
  2243.     ADD    #2,SP            ;BUMP THE STACK NOW.
  2244.     RTS    PC            ;AND RETURN.
  2245. ASCIIG:    MOV    PC,-(SP)        ;UPDATE LEADING ZERO FLAG TO NO DELETE.
  2246.     MOVB    #'0,(IN2)+        ;INSERT IT INTO THE BUFFER NOW.
  2247. ASCIIM:    CMP    IN1,#10000.        ;SEE IF IT'S STILL ABOVE 9999.
  2248.     BLO    ASCIIL            ;NO. EXIT
  2249.     INCB    -1(IN2)            ;YES CHANGE DIGIT AND UPDATE.
  2250.     SUB    #10000.,IN1
  2251.     BR    ASCIIM            ;AND LOOP TILL DONE.
  2252. ASCIID:    MOV    IN1,RET1        ;SMALL NUMBER. SET UP REMAINDER.
  2253.     MOV    #TENTAB,RET2        ;AND ADDRESS FOR THE FIRST 0.
  2254.     BR    ASCIIB            ;AND INSERT THEM NOW.
  2255. ASCDO:    TST    2(SP)            ;INSERT ANYTHING?
  2256.     BNE    ASCDBP            ;YES.
  2257.     CMPB    (RET2),#'0        ;NO. IS THIS CHARACTER A ZERO?
  2258.     BNE    ASCDO1            ;NO. FIRST GOOD CHARACTER.
  2259.     MOVB    #' ,(IN2)+        ;STILL ZERO. INSERT A BLANK.
  2260.     INC    RET2            ;AND BOP INPUT POINTER.
  2261.     RTS    PC            ;AND RETURN NOW.
  2262. ASCDO1:    MOV    SP,2(SP)        ;GOOD CHARACTER. CLEAR ZERO FLAG.
  2263. ASCDBP:    MOVB    (RET2)+,(IN2)+        ;AND MOVE OVER THE CHARACTER NOW.
  2264.     RTS    PC            ;AND THEN RETURN.
  2265.     .PAGE
  2266. ;
  2267. ;        THIS ROUTINE WILL CONVERT A SIGNED NUMBER TO AN ASCII
  2268. ;        STRING ACCORDING TO THE RULES USED IN "ASCII".
  2269. ;
  2270. SASCII:    TST    IN1            ;GET THE SIGN OF THE INPUT.
  2271.     BPL    ASCII            ;IF POSITIVE, NOTHING SPECIAL.
  2272.     NEG    IN1            ;ELSE NEGATE IT.
  2273.     JSR    PC,ASCII        ;AND CONVERT IT.
  2274.     MOV    IN2,IN1            ;MOV BACK LAST POINTER.
  2275. SASCIL:    CMPB    #' ,-(IN1)        ;AND LOOK FOR THE FIRST BACKWARD BLANK.
  2276.     BNE    SASCIL
  2277.     MOVB    #'-,(IN1)        ;WHEN FOUND, CHANGE IT.
  2278.     RTS    PC            ;AND RETURN NOW.
  2279.     .PAGE
  2280. ;
  2281. ;        THESE LISTS ARE USED IN PRINTING OUT THE USER
  2282. ;        REQUESTED VALUES.
  2283. ;
  2284. DIALTB:    .WORD    ITEME1
  2285.     .WORD    ITEME2
  2286.     .WORD    ITEME3
  2287.     .WORD    ITEME4
  2288.     .WORD    0            ;0=END OF LIST.
  2289. DIALTC:    .WORD    DITEM1            ;WHERE OUR TABLES ARE.
  2290.     .WORD    DITEM2
  2291.     .WORD    DITEM3
  2292.     .WORD    DITEM4
  2293. ;
  2294. ;        VALUE DISPLAY ITEMS.
  2295. ;
  2296. DITEM1:    .WORD    170240            ;ENABLE LIGHT PEN STUFF.
  2297.     .WORD    117560            ;AND MOVE THE POINTER AROUND.
  2298.     .WORD    DX1
  2299.     .WORD    DY1
  2300.     .WORD    100000            ;ENTER CHARACTER MODE NOW.
  2301.     .ASCII    '      '        ;SIX CHARACTERS OF ZERO,
  2302.     .WORD    DISJMP            ;AND NOW CALL THE NEXT SUBROUTINE.
  2303.     .WORD    ITEMF1
  2304. DITEM2:    .WORD    170240
  2305.     .WORD    117560
  2306.     .WORD    DX2
  2307.     .WORD    DY2
  2308.     .WORD    100000
  2309.     .ASCII    '      '
  2310.     .WORD    DISJMP
  2311.     .WORD    ITEMF2
  2312. DITEM3:    .WORD    170240
  2313.     .WORD    117560
  2314.     .WORD    DX3
  2315.     .WORD    DY3
  2316.     .WORD    100000
  2317.     .ASCII    '      '
  2318.     .WORD    DISJMP
  2319.     .WORD    ITEMF3
  2320. DITEM4:    .WORD    170240
  2321.     .WORD    117560
  2322.     .WORD    DX4
  2323.     .WORD    DY4
  2324.     .WORD    100000
  2325.     .ASCII    '      '
  2326.     .WORD    DISJMP
  2327.     .WORD    ITEMF4
  2328. ;
  2329. ;        THESE TABLES CONTAIN THE ACTUAL MESSAGES THAT THE
  2330. ;        USER HAS A CHOICE OF SEEING.
  2331. ;
  2332. ITEM1:    .WORD    RADARY
  2333.     .WORD    0            ;WHERE ITEM IS AND WHAT TO DIVIDE IT BY.
  2334. ITEME1:    .WORD    170260            ;ACTUALLY DISPLAY PORTION HERE.
  2335.     .WORD    117560
  2336.     .WORD    ITEMX1
  2337.     .WORD    ITEMY1
  2338.     .WORD    100000
  2339. ITEMF1:    .ASCII    ' HEIGHT '
  2340.     .WORD    DISTOP
  2341.     .WORD    0
  2342. ITEM2:    .WORD    VERDIS
  2343.     .WORD    0
  2344. ITEME2:    .WORD    170260
  2345.     .WORD    117560
  2346.     .WORD    ITEMX2
  2347.     .WORD    ITEMY2
  2348.     .WORD    100000
  2349. ITEMF2:    .ASCII    ' ALTITUDE '
  2350.     .WORD    DISTOP
  2351.     .WORD    0
  2352. ITEM3:    .WORD    HORDIS
  2353.     .WORD    0
  2354. ITEME3:    .WORD    170260
  2355.     .WORD    117560
  2356.     .WORD    ITEMX3
  2357.     .WORD    ITEMY3
  2358.     .WORD    100000
  2359. ITEMF3:    .ASCII    ' DISTANCE '
  2360.     .WORD    DISTOP
  2361.     .WORD    0
  2362. ITEM4:    .WORD    FUEL
  2363.     .WORD    10.
  2364. ITEME4:    .WORD    170260
  2365.     .WORD    117560
  2366.     .WORD    ITEMX4
  2367.     .WORD    ITEMY4
  2368.     .WORD    100000
  2369. ITEMF4:    .ASCII    ' FUEL LEFT'
  2370.     .WORD    DISTOP
  2371.     .WORD    0
  2372. ITEM5:    .WORD    WEIGHT
  2373.     .WORD    0
  2374. ITEME5:    .WORD    170260
  2375.     .WORD    117560
  2376.     .WORD    ITEMX5
  2377.     .WORD    ITEMY5
  2378.     .WORD    100000
  2379. ITEMF5:    .ASCII    ' WEIGHT '
  2380.     .WORD    DISTOP
  2381.     .WORD    0
  2382. ITEM6:    .WORD    THRUST
  2383.     .WORD    0
  2384. ITEME6:    .WORD    170260
  2385.     .WORD    117560
  2386.     .WORD    ITEMX6
  2387.     .WORD    ITEMY6
  2388.     .WORD    100000
  2389. ITEMF6:    .ASCII    ' THRUST '
  2390.     .WORD    DISTOP
  2391.     .WORD    0
  2392. ITEM7:    .WORD    ANGLE
  2393.     .WORD    0
  2394. ITEME7:    .WORD    170260
  2395.     .WORD    117560
  2396.     .WORD    ITEMX7
  2397.     .WORD    ITEMY7
  2398.     .WORD    100000
  2399. ITEMF7:    .ASCII    ' ANGLE'
  2400.     .WORD    DISTOP
  2401.     .WORD    0
  2402. ITEM8:    .WORD    VERVEL
  2403.     .WORD    10.
  2404. ITEME8:    .WORD    170260
  2405.     .WORD    117560
  2406.     .WORD    ITEMX8
  2407.     .WORD    ITEMY8
  2408.     .WORD    100000
  2409. ITEMF8:    .ASCII    ' VER VEL'
  2410.     .WORD    DISTOP
  2411.     .WORD    0
  2412. ITEM9:    .WORD    HORVEL
  2413.     .WORD    10.
  2414. ITEME9:    .WORD    170260
  2415.     .WORD    117560
  2416.     .WORD    ITEMX9
  2417.     .WORD    ITEMY9
  2418.     .WORD    100000
  2419. ITEMF9:    .ASCII    ' HOR VEL'
  2420.     .WORD    DISTOP
  2421.     .WORD    0
  2422. ITEM10:    .WORD    VERACC
  2423.     .WORD    500.
  2424. ITEMET:    .WORD    170260
  2425.     .WORD    117560
  2426.     .WORD    ITEMXT
  2427.     .WORD    ITEMYT
  2428.     .WORD    100000
  2429. ITEMFT:    .ASCII    ' VER ACC'
  2430.     .WORD    DISTOP
  2431.     .WORD    0
  2432. ITEM11:    .WORD    HORACC
  2433.     .WORD    500.
  2434. ITEMEE:    .WORD    170260
  2435.     .WORD    117560
  2436.     .WORD    ITEMXE
  2437.     .WORD    ITEMYE
  2438.     .WORD    100000
  2439. ITEMFE:    .ASCII    ' HOR ACC'
  2440.     .WORD    DISTOP
  2441.     .WORD    0
  2442. ITEM12:    .WORD    TIME
  2443.     .WORD    60.
  2444. ITEMES:    .WORD    170260
  2445.     .WORD    117560
  2446.     .WORD    ITEMXS
  2447.     .WORD    ITEMYS
  2448.     .WORD    100000
  2449. ITEMFS:    .ASCII    ' SECONDS'
  2450.     .WORD    DISTOP
  2451.     .WORD    0
  2452.     .PAGE
  2453. ;
  2454. ;        THIS IS WHERE THE MOON GOES, WHEN IT IS CORRECTLY
  2455. ;        DRAWN. IT IS PLACED HERE SO NO CODE GOES OVER 15000-20000
  2456. ;        AND SO THAT NO CODE GOES OVER 35000-37776 EITHER. THIS AREA
  2457. ;        IS INITIALIZED TO ALL "DISTOP,0" BY THE RESTART ROUTINE.
  2458. ;
  2459. MOONST:                    ;DEFINE IT AS STARTING HERE.
  2460.     .=.+2002.            ;AND BEING 1000 DECIMAL WORDS LONG.
  2461. MOONEN:                    ;NEXT WORD AFTER MOON TO DETERMINE
  2462.                     ;HOW FAR TO INITIALIZE THIS SECTION.
  2463. ;
  2464. ;        MESSAGES FOR GOING OFF SCREEN <LEFT,RIGHT AND TOP.>.
  2465. ;
  2466. LFTMSG:    .WORD    117520
  2467.     .WORD    30.
  2468.     .WORD    600.
  2469.     .WORD    100000
  2470.     .ASCII    'BOY, ARE YOU'
  2471.     .BYTE    0
  2472.     .=.-1
  2473.     .EVEN
  2474.     .WORD    103730
  2475.     .ASCII    ' INEPT'
  2476.     .BYTE    0
  2477.     .=.-1
  2478.     .EVEN
  2479.     .WORD    DISTOP
  2480.     .WORD    0
  2481. RGTMSG:    .WORD    117520
  2482.     .WORD    525.
  2483.     .WORD    600.
  2484.     .WORD    100000
  2485.     .ASCII    '  YOU HAVE JUST CRASHED'
  2486.     .BYTE    0
  2487.     .=.-1
  2488.     .EVEN
  2489.     .WORD    117520
  2490.     .WORD    525.
  2491.     .WORD    570.
  2492.     .WORD    100000
  2493.     .ASCII    'INTO THE EDGE OF THE MOON'
  2494.     .BYTE    0
  2495.     .=.-1
  2496.     .EVEN
  2497.     .WORD    DISTOP
  2498.     .WORD    0
  2499. TOPMSG:    .WORD    117520
  2500.     .WORD    50.
  2501.     .WORD    650.
  2502.     .WORD    100000
  2503.     .ASCII    'SORRY, BUT WHEN YOU LOSE TV COVERAGE, YOU ALSO LOSE YOUR FUEL'
  2504.     .BYTE    0
  2505.     .=.-1
  2506.     .EVEN
  2507.     .WORD    DISTOP
  2508.     .WORD    0
  2509.     .PAGE
  2510. ;
  2511. ;        SPEED WARNING MASSAGES...
  2512. ;
  2513. VFAST:    .WORD    117530
  2514.     .WORD    100.
  2515.     .WORD    2.
  2516.     .WORD    100000
  2517.     .ASCII    "TOO FAST. YOU'RE GOING TO CRASH"
  2518.     .BYTE    0
  2519.     .=.-1
  2520.     .EVEN
  2521.     .WORD    DISTOP
  2522.     .WORD    0
  2523. FAST:    .WORD    117520
  2524.     .WORD    100.
  2525.     .WORD    700.
  2526.     .WORD    100000
  2527.     .ASCII    'BETTER START SLOWING IT UP PRETTY SOON'
  2528.     .BYTE    0
  2529.     .=.-1
  2530.     .EVEN
  2531.     .WORD    DISTOP
  2532.     .WORD    0
  2533. N2FAST:    .WORD    117520
  2534.     .WORD    100.
  2535.     .WORD    2.
  2536.     .WORD    100000
  2537.     .ASCII    'TAKE IT NICE AND EASY. A PERFECT LANDING IS UNDER 8 FPS'
  2538.     .BYTE    0
  2539.     .=.-1
  2540.     .EVEN
  2541.     .WORD    DISTOP
  2542.     .WORD    0
  2543. GREATM:    .WORD    117520
  2544.     .WORD    100.
  2545.     .WORD    600.
  2546.     .WORD    100000
  2547.     .ASCII    'FANTASTIC, A PERFECT LANDING'
  2548.     .BYTE    0
  2549.     .=.-1
  2550.     .EVEN
  2551.     .WORD    DISTOP
  2552.     .WORD    0
  2553. GOODM:    .WORD    117520
  2554.     .WORD    100.
  2555.     .WORD    600.
  2556.     .WORD    100000
  2557.     .ASCII    'CONGRATULATIONS ON A GOOD LANDING'
  2558.     .BYTE    0
  2559.     .=.-1
  2560.     .EVEN
  2561.     .WORD    DISTOP
  2562.     .WORD    0
  2563. ROUGHM:    .WORD    117520
  2564.     .WORD    100.
  2565.     .WORD    600.
  2566.     .WORD    100000
  2567.     .ASCII    'THE LANDING WAS A LITTLE FAST'
  2568.     .BYTE    0
  2569.     .=.-1
  2570.     .EVEN
  2571.     .WORD    DISTOP
  2572.     .WORD    0
  2573. CRIPM:    .WORD    117520
  2574.     .WORD    100.
  2575.     .WORD    600.
  2576.     .WORD    100000
  2577.     .ASCII    'THE LANDING WAS TOO FAST AND DAMAGE WAS DONE TO THE SHIP'
  2578.     .BYTE    0
  2579.     .=.-1
  2580.     .EVEN
  2581.     .WORD    DISTOP
  2582.     .WORD    0
  2583. DEADM:    .WORD    117530
  2584.     .WORD    100.
  2585.     .WORD    550.
  2586.     .WORD    100000
  2587.     .ASCII    'WELL, YOU CERTAINLY BLEW THAT ONE. THERE WERE NO SURVIVORS'
  2588.     .BYTE    0
  2589.     .=.-1
  2590.     .EVEN
  2591.     .WORD    DISTOP
  2592.     .WORD    0
  2593. ANGLEM:    .WORD    117520
  2594.     .WORD    100.
  2595.     .WORD    570.
  2596.     .WORD    100000
  2597.     .ASCII    'BUT THE ANGLE WAS TOO GREAT AND THE SHIP TIPPED OVER'
  2598.     .BYTE    0
  2599.     .=.-1
  2600.     .EVEN
  2601. ANGLEJ:    .WORD    117520
  2602.     .WORD    100.
  2603.     .WORD    540.
  2604.     .WORD    100000
  2605.     .ASCII    'SORRY, BUT THERE WERE '
  2606.     .BYTE    0
  2607.     .=.-1
  2608.     .EVEN
  2609.     .WORD    103630
  2610.     .ASCII    'NO'
  2611.     .WORD    103520
  2612.     .ASCII    ' SURVIVORS'
  2613.     .BYTE    0
  2614.     .=.-1
  2615.     .EVEN
  2616.     .WORD    DISTOP
  2617.     .WORD    0
  2618. SIDEM:    .WORD    117520
  2619.     .WORD    100.
  2620.     .WORD    570.
  2621.     .WORD    100000
  2622.     .ASCII    'BUT THE HORIZONTAL VELOCITY WAS TOO GREAT, AND YOU CRASHED ANYWAY'
  2623.     .BYTE    0
  2624.     .=.-1
  2625.     .EVEN
  2626.     .WORD    DISJMP
  2627.     .WORD    ANGLEJ            ;DO A DISPLAY JUMP INTO ANGLEM.
  2628. BUMPYM:    .WORD    117520
  2629.     .WORD    100.
  2630.     .WORD    570.
  2631.     .WORD    100000
  2632.     .ASCII    'BUT THE TERRAIN IS TOO ROUGH, AND YOU TIPPED OVER'
  2633.     .BYTE    0
  2634.     .=.-1
  2635.     .EVEN
  2636.     .WORD    DISJMP
  2637.     .WORD    ANGLEJ
  2638. ROCKMS:    .WORD    117520
  2639.     .WORD    100.
  2640.     .WORD    570.
  2641.     .WORD    100000
  2642.     .ASCII    'YOU JUST CRASHED INTO THAT ROCK'
  2643.     .BYTE    0
  2644.     .=.-1
  2645.     .EVEN
  2646.     .WORD    DISJMP
  2647.     .WORD    ANGLEJ
  2648. OLDMS:    .WORD    117520
  2649.     .WORD    100.
  2650.     .WORD    570.
  2651.     .WORD    100000
  2652.     .ASCII    'YOU JUST CRASHED ON TOP OF AN OLD LUNAR MODULE'
  2653.     .BYTE    0
  2654.     .=.-1
  2655.     .EVEN
  2656.     .WORD    DISJMP
  2657.     .WORD    ANGLEJ
  2658. FLAGMS:    .WORD    117520
  2659.     .WORD    50.
  2660.     .WORD    3.
  2661.     .WORD    100000
  2662.     .ASCII    'YOU HAVE JUST VAPORIZED A PREVIOUSLY PLANTED AMERICAN FLAG'
  2663.     .BYTE    0
  2664.     .=.-1
  2665.     .EVEN
  2666.     .WORD    DISTOP
  2667.     .WORD    0
  2668. OLDTLT:    .WORD    117520
  2669.     .WORD    100.
  2670.     .WORD    570.
  2671.     .WORD    100000
  2672.     .ASCII    'NICE WORK. YOU JUST CRASHED INTO A PREVIOUSLY CRASHED SHIP'
  2673.     .BYTE    0
  2674.     .=.-1
  2675.     .EVEN
  2676.     .WORD    DISJMP
  2677.     .WORD    ANGLEJ
  2678. MACDED:    .WORD    117520
  2679.     .WORD    10.
  2680.     .WORD    570.
  2681.     .WORD    100000
  2682.     .ASCII    'W'
  2683.     .BYTE    145,154,154
  2684.     .ASCII    ', '
  2685.     .BYTE    171,157,165
  2686.     .ASCII    "'"
  2687.     .BYTE    166,145,40,152,165,163,164,40,144,145,163
  2688.     .BYTE    164,162,157,171,145,144,40,164,150,145,40
  2689.     .BYTE    157,156,154,171
  2690.     .ASCII    ' M'
  2691.     .BYTE    141,143
  2692.     .ASCII    'D'
  2693.     .BYTE    157,156,141,154,144
  2694.     .ASCII    "'"
  2695.     .BYTE    163
  2696.     .BYTE    0
  2697.     .=.-1
  2698.     .EVEN
  2699.     .WORD    117520
  2700.     .WORD    10.
  2701.     .WORD    540.
  2702.     .WORD    100000
  2703.     .BYTE    157,156,40,164,150,145,40,155,157,157,156
  2704.     .ASCII    '. W'
  2705.     .BYTE    150,141,164,40,141
  2706.     .ASCII    ' CLOD.'
  2707.     .BYTE    0
  2708.     .=.-1
  2709.     .EVEN
  2710.     .WORD    DISTOP
  2711.     .WORD    0
  2712. ORDER:    .WORD    117520
  2713.     .WORD    150.
  2714.     .WORD    2.
  2715.     .WORD    100000
  2716.     .WORD    170260
  2717.     .ASCII    'TWO CHEESEBURGERS AND A BIG MAC TO GO.'
  2718.     .BYTE    0
  2719.     .=.-1
  2720.     .EVEN
  2721.     .WORD    DISTOP
  2722.     .WORD    0
  2723. MANMSG:    .WORD    117520
  2724.     .WORD    50.
  2725.     .WORD    2.
  2726.     .WORD    100000
  2727.     .WORD    170260
  2728.     .ASCII    "THAT'S ONE SMALL STEP FOR A MAN, ONE GIANT LEAP FOR MANKIND."
  2729.     .BYTE    0
  2730.     .=.-1
  2731.     .EVEN
  2732.     .WORD    DISTOP
  2733.     .WORD    0
  2734.     .PAGE
  2735. ;
  2736. ;        THIS LITTLE SECTION CONTAINS THE CODE
  2737. ;        FOR DRAWING THE CONTROLLING ARROWS
  2738. ;        FOR HANDLING THE DEGREES OF ROTATION.
  2739. ;        SMALL LEFT ARROW.
  2740. ;
  2741.     .WORD    -15.
  2742. SLEFTA:    .WORD    114020
  2743.     .WORD    170240
  2744.     .WORD    SLFTAX
  2745.     .WORD    SLFTAY
  2746.     .WORD    113144
  2747.     .WORD    20.+LEFT+INT
  2748.     .WORD    0.
  2749. LEFTC:    .WORD    12.+INT
  2750.     .WORD    8.
  2751.     .WORD    12.+LEFT
  2752.     .WORD    8.+DOWN
  2753.     .WORD    12.+INT
  2754.     .WORD    8.+DOWN
  2755.     .WORD    DISTOP
  2756.     .WORD    0
  2757.     .WORD    -100.
  2758. BLEFTA:    .WORD    114020
  2759.     .WORD    170240
  2760.     .WORD    BLFTAX
  2761.     .WORD    BLFTAY
  2762.     .WORD    113144
  2763.     .WORD    40.+LEFT+INT
  2764.     .WORD    0
  2765.     .WORD    DISJMP
  2766.     .WORD    LEFTC
  2767.     .WORD    15.
  2768. SRGTA:    .WORD    114020            ;SMALL RIGHT ARROW.
  2769.     .WORD    170240
  2770.     .WORD    SRGTAX
  2771.     .WORD    SRGTAY
  2772.     .WORD    113144
  2773.     .WORD    20.+INT
  2774.     .WORD    0
  2775. RGTC:    .WORD    12.+INT+LEFT
  2776.     .WORD    8.
  2777.     .WORD    12.
  2778.     .WORD    8.+DOWN
  2779.     .WORD    12.+LEFT+INT
  2780.     .WORD    8.+DOWN
  2781.     .WORD    DISTOP
  2782.     .WORD    0
  2783.     .WORD    100.
  2784. BRGTA:    .WORD    114020
  2785.     .WORD    170240
  2786.     .WORD    BRGTAX
  2787.     .WORD    BRGTAY
  2788.     .WORD    113144
  2789.     .WORD    40.+INT
  2790.     .WORD    0
  2791.     .WORD    DISJMP
  2792.     .WORD    RGTC
  2793.     .PAGE
  2794. ;
  2795. ;        THIS IS THE LIGHT PEN BAR WHICH CONTROLS THE
  2796. ;        THRUST OF THE ROCKET ENGINE.
  2797. ;
  2798. LPBAR:    .WORD    116764
  2799.     .WORD    170200
  2800.     .WORD    BARLX+0
  2801.     .WORD    BARTY
  2802.     .WORD    110140
  2803.     .WORD    INT
  2804.     .WORD    BARSIZ+DOWN
  2805.     .WORD    3
  2806.     .WORD    BARSIZ
  2807.     .WORD    INT
  2808.     .WORD    BARSIZ+DOWN
  2809.     .WORD    3
  2810.     .WORD    BARSIZ
  2811.     .WORD    INT
  2812.     .WORD    BARSIZ+DOWN
  2813.     .WORD    114100
  2814.     .WORD    BARMXR            ;NOW MOVE OVER TO THE BAR POSITION.
  2815. LPBARY:    .WORD    0            ;VERTICAL HEIGHT GOES HERE.
  2816.     .WORD    110000
  2817.     .WORD    BARMXL+INT        ;BE CAREFULL OF SIGN OF THIS ONE.
  2818.     .WORD    0
  2819.     .WORD    BAREST
  2820.     .WORD    0
  2821.     .WORD    100000            ;ENTER CHARACTER MODE NOW.
  2822. LPBARC:    .ASCII    '      % '        ;OVERLAYED WITH A NUMBER.
  2823. LPSW:    .WORD    DISTOP            ;0 ON FUEL LOW--FALL TO NEXT MSG
  2824.     .WORD    0
  2825.     .WORD    117130
  2826.     .WORD    350.
  2827.     .WORD    700.
  2828.     .WORD    100000
  2829.     .ASCII    'FUEL LOW'
  2830.     .WORD    DISTOP
  2831.     .WORD    0
  2832.     .PAGE
  2833. ;
  2834. ;            ;THIS IS THE BASIC ROCK COMMANDS.
  2835. ;
  2836. ROCKL:    .WORD    116727
  2837.     .WORD    170240
  2838. ROCKX:    .WORD    0
  2839. ROCKY:    .WORD    0
  2840.     .WORD    104000
  2841.     .WORD    14.+OTHER*200+8.+OTHER
  2842.     .WORD    OTHER+6+INTTWO*200+8.
  2843.     .WORD    4+INTTWO*200+6
  2844.     .WORD    0+INTTWO*200+6
  2845.     .WORD    2+INTTWO*200+2
  2846.     .WORD    2+INTTWO*200+4
  2847.     .WORD    6+INTTWO*200+6
  2848.     .WORD    INTTWO*200+4
  2849.     .WORD    4+INTTWO*200+2
  2850.     .WORD    2+INTTWO*200+0
  2851.     .WORD    2+INTTWO*200+2+OTHER
  2852.     .WORD    6+INTTWO*200+2+OTHER
  2853.     .WORD    4+INTTWO*200+2+OTHER
  2854.     .WORD    2+INTTWO*200+6+OTHER
  2855.     .WORD    6+INTTWO*200+6+OTHER
  2856.     .WORD    INTTWO*200+4+OTHER
  2857.     .WORD    2+INTTWO*200+4+OTHER
  2858.     .WORD    2+OTHER+INTTWO*200+4+OTHER
  2859.     .WORD    2+OTHER+INTTWO*200+8.+OTHER
  2860.     .WORD    DISTOP
  2861.     .WORD    0
  2862. ROCKEN:                    ;NEXT LOCATION AFTER ROCKS.
  2863.     .PAGE
  2864. ;
  2865. ;        THIS LIST EXPLAINS HOW TO DRAW THE MACDONALD'S.
  2866. ;
  2867. MACS:    117724
  2868.     170240
  2869. MACX:    .WORD    0
  2870. MACY:    .WORD    0
  2871.     .WORD    104000
  2872.     .WORD    18.*200
  2873.     .WORD    107000
  2874.     .WORD    30.+INT
  2875.     .WORD    54.*200+INT
  2876.     .WORD    30.+OTHER+INT
  2877.     .WORD    54.+OTHER*200+INT
  2878.     .WORD    105324
  2879.     .WORD    12.*200
  2880.     .WORD    8.+INT
  2881.     .WORD    6.*200+INT
  2882.     .WORD    8.+OTHER+INT
  2883.     .WORD    19.+OTHER*200
  2884.     .WORD    110000
  2885.     .WORD    73.+LEFT
  2886.     .WORD    0.
  2887.     .WORD    DISTOP
  2888.     .WORD    ARCH
  2889.     .WORD    104000
  2890.     .WORD    22.*200
  2891. ;
  2892. ;        NOTICE HOW I FALL THROUGH TO DRAW THE
  2893. ;        SECOND ARCH. CLEVER, CLEVER.
  2894. ;
  2895. ARCH:    .WORD    107724
  2896.     .WORD    17.+OTHER*200+OTHER+3.
  2897.     .WORD    1*200+10.+INT
  2898.     .WORD    1*200+9.+INT
  2899.     .WORD    1*200+6+INT
  2900.     .WORD    1*200+5+INT
  2901.     .WORD    1*200+4+INT
  2902.     .WORD    1*200+2+INT
  2903.     .WORD    1*200+4+INT
  2904.     .WORD    2*200+5+INT
  2905.     .WORD    1*200+1+INT
  2906.     .WORD    2*200+4+INT
  2907.     .WORD    3*200+2+INT
  2908.     .WORD    1*200+1+INT
  2909.     .WORD    2*200+0+INT
  2910.     .WORD    1*200+1+INT+OTHER
  2911.     .WORD    3*200+2+INT+OTHER
  2912.     .WORD    2*200+4+INT+OTHER
  2913.     .WORD    1*200+1+INT+OTHER
  2914.     .WORD    2*200+5+INT+OTHER
  2915.     .WORD    1*200+4+INT+OTHER
  2916.     .WORD    1*200+2+INT+OTHER
  2917.     .WORD    1*200+4+INT+OTHER
  2918.     .WORD    1*200+5+INT+OTHER
  2919.     .WORD    1*200+6+INT+OTHER
  2920.     .WORD    1*200+9.+INT+OTHER
  2921.     .WORD    1*200+10.+INT+OTHER
  2922.     .WORD    17.+OTHER*200+3.
  2923.     .WORD    DISTOP
  2924.     .WORD    0
  2925.     .PAGE
  2926. ;
  2927. ;        THIS LIST EXPLAINS HOW TO DRAW A MAN.
  2928. ;
  2929. MAN:    .WORD    116720            ;DON'T MAKE HIM TOO BRIGHT.
  2930. MANX:    .WORD    0
  2931. MANY:    .WORD    0
  2932.     .WORD    104000            ;ALL SHORT VECTORS.
  2933.     .WORD    400            ;INVISIBLE 2 RIGHT.
  2934.     .WORD    INT+20000+404        ;LEFT TWO, UP FOUR.
  2935.     .WORD    INT+20000+1104        ;LEFT FOUR, DOWN 4.
  2936.     .WORD    1004            ;INVISIBLE, UP 4, RIGHT 4
  2937.     .WORD    INT+5            ;UP FIVE.
  2938.     .WORD    INT+200            ;RIGHT ONE
  2939.     .WORD    INT+201            ;RIGHT ONE, UP ONE.
  2940.     .WORD    INT+1            ;UP ONE
  2941.     .WORD    INT+20000+201        ;LEFT ONE, UP ONE.
  2942.     .WORD    INT+20000+400        ;LEFT TWO.
  2943.     .WORD    INT+20000+301        ;LEFT ONE, DOWN ONE.
  2944.     .WORD    INT+101            ;DOWN ONE.
  2945.     .WORD    INT+301            ;DOWN ONE, RIGHT ONE.
  2946.     .WORD    INT+200            ;RIGHT ONE.
  2947.     .WORD    101            ;DOWN ONE.
  2948.     .WORD    INT+1203        ;RIGHT FIVE, UP THREE.
  2949.     .WORD    20000+1305        ;LEFT FIVE, DOWN FIVE.
  2950.     .WORD    INT+20000+1403        ;LEFT SIX, UP THREE.
  2951.     .WORD    DISTOP
  2952.     .WORD    0
  2953.     .PAGE
  2954. ;
  2955. ;        THIS LIST EXPLAINS HOW TO DRAW A FLAG.
  2956. ;
  2957. FLAGL:    .WORD    115324
  2958.     .WORD    170240
  2959. FLAGX:    .WORD    0
  2960. FLAGY:    .WORD    0
  2961.     .WORD    104000
  2962.     .WORD    18.+INT
  2963.     .WORD    112727
  2964.     .WORD    16.+INT
  2965.     .WORD    0
  2966.     .WORD    INT
  2967.     .WORD    8.+DOWN
  2968.     .WORD    16.+INT+LEFT
  2969.     .WORD    0
  2970.     .WORD    112326
  2971.     .WORD    0
  2972.     .WORD    3
  2973.     .WORD    16.+INT
  2974.     .WORD    0
  2975.     .WORD    0
  2976.     .WORD    2
  2977.     .WORD    16.+INT+LEFT
  2978.     .WORD    0
  2979.     .WORD    DISTOP
  2980.     .WORD    0
  2981. FLAGEN:                    ;NEXT LOCATION AFTER FLAG.
  2982.     .PAGE
  2983. ;
  2984. ;    COMMANDS FOR DISPLAYING THE LUNAR MODULE.
  2985. ;
  2986. DESIGN:    .WORD    DRAWIN,170200        ;LOAD STATUS.
  2987.     .WORD    DRAWIN,107124        ;AND SHORT VECTORS, INTENSITY 4.
  2988.     .WORD    DRAWIS            ;DRAW BODY OF SHIP NOW.
  2989.     .BYTE    -6.,0.
  2990.     .WORD    DRAWVS
  2991.     .BYTE    -14.,8.
  2992.     .WORD    DRAWVS
  2993.     .BYTE    -14.,20.
  2994.     .WORD    DRAWVS
  2995.     .BYTE    -6.,29.
  2996.     .WORD    DRAWVS
  2997.     .BYTE    6.,29.
  2998.     .WORD    DRAWVS
  2999.     .BYTE    14.,20.
  3000.     .WORD    DRAWVS
  3001.     .BYTE    14.,8.
  3002.     .WORD    DRAWVS
  3003.     .BYTE    6.,0.
  3004.     .WORD    DRAWVS
  3005.     .BYTE    -6.,0.            ;TOP OF SHIP DONE <OCTAGON>.
  3006.     .WORD    DRAWIS
  3007.     .BYTE    -17.,0.
  3008.     .WORD    DRAWVS
  3009.     .BYTE    -17.,-16.
  3010.     .WORD    DRAWVS
  3011.     .BYTE    17.,-16.
  3012.     .WORD    DRAWVS
  3013.     .BYTE    17.,0.
  3014.     .WORD    DRAWVS
  3015.     .BYTE    -17.,0.            ;LOWER BODY OF SHIP DONE.
  3016.     .WORD    DRAWIN,107524        ;CHANGE TO LEVEL 3 INTENSITY.
  3017.     .WORD    DRAWVS            ;DRAW LANDING LEGS NOW.
  3018.     .BYTE    -32.,-24.
  3019.     .WORD    DRAWIS            ;POSITION OVER TO OTHER SIDE.
  3020.     .BYTE    17.,0.
  3021.     .WORD    DRAWVS
  3022.     .BYTE    32.,-24.
  3023.     .WORD    DRAWIN,106324        ;LEVEL ONE INTENSITY.
  3024.     .WORD    DRAWIS
  3025.     .BYTE    -17.,-14.
  3026.     .WORD    DRAWVS
  3027.     .BYTE    -28.,-18.
  3028.     .WORD    DRAWIS
  3029.     .BYTE    17.,-14.
  3030.     .WORD    DRAWVS
  3031.     .BYTE    28.,-18.        ;LOWER LANDING BRACE DONE.
  3032.     .WORD    DRAWIN,107124        ;INTENSITY 4 FOR LANDING PODS.
  3033.     .WORD    DRAWIS
  3034.     .BYTE    36.,-24.
  3035.     .WORD    DRAWVS
  3036.     .BYTE    28.,-24.
  3037.     .WORD    DRAWIS
  3038.     .BYTE    -28.,-24.
  3039.     .WORD    DRAWVS
  3040.     .BYTE    -36.,-24.        ;END OF LANDING PODS.
  3041.     .WORD    DRAWIS            ;DRAW THE ENGINE NOW.
  3042.     .BYTE    -3.,-16.
  3043.     .WORD    DRAWVS
  3044.     .BYTE    -7.,-21.
  3045.     .WORD    DRAWVS
  3046.     .BYTE    7.,-21.
  3047.     .WORD    DRAWVS
  3048.     .BYTE    3.,-16.            ;END OF THE ENGINE.
  3049.     .WORD    DRAWIS            ;NOW BRING VECTOR BACK UP TO CENTER
  3050.     .BYTE    0,0            ;OF THE LUNAR MODULE.
  3051.     .WORD    DRAWDN            ;AND TERMINATE THE PICTURE.
  3052.     .PAGE
  3053. ;
  3054. ;    THESE TABLES CONTROL THE DRAWING OF THE ROCKET
  3055. ;    ENGINE FLAME, AND ALL IT'S PURTIBATIONS.
  3056. ;    Y THRUST TABLE ACCORDING TO PERCENTAGE THROTTLE.
  3057. ;    13 SEGMENTS, EACH ONE APPROX 8% THROTTLE.
  3058. ;
  3059. YTHRST:    .BYTE    0.,-30.,-31.,-32.,-34.,-36.,-38.,-41.,-44.,-47.,-50.,-53.,-56.
  3060.  
  3061. ;
  3062. ;    Y UP DOWN IS A TABLE WHICH WILL SORT OF
  3063. ;    RANDOMIZE THE HEIGHT OF THE FLAME AND SHOULD ENHANCE THE
  3064. ;    FLICKERING APPEARANCE.
  3065. ;
  3066. YUPDWN:    .BYTE    0,1,3,6,4,3,1,-2,-6,-7,-5,-2,2,3,5,6,2,1
  3067.     .BYTE    -1,-4,-6,-5,-3,0,4,5,7,4,0,-1,-3,-1
  3068. ;
  3069. ;    "FLAME BOTTOM" CONTAINS THE TABLE OF THE X VALUES
  3070. ;    FOR THE BOTTOM OF THE ROCKET FLAME. THEY ARE INDEXED SLIGHTLY
  3071. ;    RANDOMLY AT TIMES.
  3072. ;
  3073. FLAMBT:    .BYTE    -20.,-16.,-13.,-10.,-7.,-4.,-2.
  3074.     .BYTE    0.,2.,4.,7.,10.,13.,16.,20.
  3075. ;
  3076. ;    THIS SECTION CONTAINS THE ACTUAL LIST OF COMMANDS TO
  3077. ;    BE FOLLOWED WHEN DRAWING THE ROCKET FLAME.
  3078. ;
  3079.     .EVEN                ;REALIGN NOW IF NECESSARY.
  3080. FLAMDO:    .WORD    DRAWIN,170200        ;LOAD STATUS PROPERLY.
  3081.     .WORD    DRAWIN            ;INSERT COMMAND NOW.
  3082. FLAMEX:    .WORD    0            ;FLAME COMMAND GOES HERE.
  3083.     .WORD    DRAWIS            ;MOVE POINTER OVER TO BOTTOM
  3084.     .BYTE    -6.,-21.        ;OFF THE ROCKET ENGINE.
  3085.     .WORD    DRAWVS            ;NOW DRAW THE VECTORS
  3086. FLAMXS:    .BYTE    0.,0.            ;WHICH WE SHOULD SET UP HERE.
  3087.     .WORD    DRAWVS            ;AND MOVE BACK UP AGAIN.
  3088.     .BYTE    -5.,-21.        ;BOTTOM OF THE ENGINE.
  3089.     .WORD    DRAWVS
  3090.     .BYTE    0.,0.            ;OVERLAYED HERE ALSO.
  3091.     .WORD    DRAWVS
  3092.     .BYTE    -4.,-21.
  3093.     .WORD    DRAWVS
  3094.     .BYTE    0.,0.
  3095.     .WORD    DRAWVS
  3096.     .BYTE    -3.,-21.
  3097.     .WORD    DRAWVS
  3098.     .BYTE    0.,0.
  3099.     .WORD    DRAWVS
  3100.     .BYTE    -2.,-21.
  3101.     .WORD    DRAWVS
  3102.     .BYTE    0.,0.
  3103.     .WORD    DRAWVS
  3104.     .BYTE    -1.,-21.
  3105.     .WORD    DRAWVS
  3106.     .BYTE    0.,0.
  3107.     .WORD    DRAWVS
  3108.     .BYTE    0.,-21.
  3109.     .WORD    DRAWVS
  3110.     .BYTE    0.,0.
  3111.     .WORD    DRAWVS
  3112.     .BYTE    1.,-21.
  3113.     .WORD    DRAWVS
  3114.     .BYTE    0.,0.
  3115.     .WORD    DRAWVS
  3116.     .BYTE    2.,-21.
  3117.     .WORD    DRAWVS
  3118.     .BYTE    0.,0.
  3119.     .WORD    DRAWVS
  3120.     .BYTE    3.,-21.
  3121.     .WORD    DRAWVS
  3122.     .BYTE    0.,0.
  3123.     .WORD    DRAWVS
  3124.     .BYTE    4.,-21.
  3125.     .WORD    DRAWVS
  3126.     .BYTE    0.,0.
  3127.     .WORD    DRAWVS
  3128.     .BYTE    5.,-21.
  3129.     .WORD    DRAWVS
  3130.     .BYTE    0.,0.
  3131.     .WORD    DRAWVS
  3132.     .BYTE    6.,-21.
  3133.     .WORD    DRAWIS            ;RETURN TO CENTER NOW.
  3134.     .BYTE    0.,0.
  3135.     .WORD    DRAWDN            ;AND END THE COMMAND LIST.
  3136.     FLEN=12.            ;NUMBER OF ITEMS TO INSERT IN THE TABLE.
  3137.     .PAGE
  3138. ;
  3139. ;        THESE ARE THE HIDEOUS TABLES THAT THE
  3140. ;        SYSTEM NEEDS TO FUNCTION PROPERLY. THEY INCLUDE
  3141. ;        TERRAIN TABLES (ALTITUDE), FEATURE TABLES (ROCKS,
  3142. ;        OLD SHIPS, ETC.), CONVERSION TABLES, AND THE
  3143. ;        SINE AND COSINE TABLES. THEY SHOULD BE BETWEEN
  3144. ;        20000 AND 35000 OCTAL (LOCATION), OR YOU CAN BE SCREWED.
  3145. ;        THIS IS THE CONVERSION TABLE FROM A BINARY
  3146. ;        NUMBER LESS THAN 100 TO AN ASCII STRING. SEE THE
  3147. ;        SUBROUTINE "ASCII".
  3148. ;
  3149. TENTAB:    .BYTE    '0,'0
  3150.     .BYTE    '0,'1
  3151.     .BYTE    '0,'2
  3152.     .BYTE    '0,'3
  3153.     .BYTE    '0,'4
  3154.     .BYTE    '0,'5
  3155.     .BYTE    '0,'6
  3156.     .BYTE    '0,'7
  3157.     .BYTE    '0,'8
  3158.     .BYTE    '0,'9
  3159.     .BYTE    '1,'0
  3160.     .BYTE    '1,'1
  3161.     .BYTE    '1,'2
  3162.     .BYTE    '1,'3
  3163.     .BYTE    '1,'4
  3164.     .BYTE    '1,'5
  3165.     .BYTE    '1,'6
  3166.     .BYTE    '1,'7
  3167.     .BYTE    '1,'8
  3168.     .BYTE    '1,'9
  3169.     .BYTE    '2,'0
  3170.     .BYTE    '2,'1
  3171.     .BYTE    '2,'2
  3172.     .BYTE    '2,'3
  3173.     .BYTE    '2,'4
  3174.     .BYTE    '2,'5
  3175.     .BYTE    '2,'6
  3176.     .BYTE    '2,'7
  3177.     .BYTE    '2,'8
  3178.     .BYTE    '2,'9
  3179.     .BYTE    '3,'0
  3180.     .BYTE    '3,'1
  3181.     .BYTE    '3,'2
  3182.     .BYTE    '3,'3
  3183.     .BYTE    '3,'4
  3184.     .BYTE    '3,'5
  3185.     .BYTE    '3,'6
  3186.     .BYTE    '3,'7
  3187.     .BYTE    '3,'8
  3188.     .BYTE    '3,'9
  3189.     .BYTE    '4,'0
  3190.     .BYTE    '4,'1
  3191.     .BYTE    '4,'2
  3192.     .BYTE    '4,'3
  3193.     .BYTE    '4,'4
  3194.     .BYTE    '4,'5
  3195.     .BYTE    '4,'6
  3196.     .BYTE    '4,'7
  3197.     .BYTE    '4,'8
  3198.     .BYTE    '4,'9
  3199.     .BYTE    '5,'0
  3200.     .BYTE    '5,'1
  3201.     .BYTE    '5,'2
  3202.     .BYTE    '5,'3
  3203.     .BYTE    '5,'4
  3204.     .BYTE    '5,'5
  3205.     .BYTE    '5,'6
  3206.     .BYTE    '5,'7
  3207.     .BYTE    '5,'8
  3208.     .BYTE    '5,'9
  3209.     .BYTE    '6,'0
  3210.     .BYTE    '6,'1
  3211.     .BYTE    '6,'2
  3212.     .BYTE    '6,'3
  3213.     .BYTE    '6,'4
  3214.     .BYTE    '6,'5
  3215.     .BYTE    '6,'6
  3216.     .BYTE    '6,'7
  3217.     .BYTE    '6,'8
  3218.     .BYTE    '6,'9
  3219.     .BYTE    '7,'0
  3220.     .BYTE    '7,'1
  3221.     .BYTE    '7,'2
  3222.     .BYTE    '7,'3
  3223.     .BYTE    '7,'4
  3224.     .BYTE    '7,'5
  3225.     .BYTE    '7,'6
  3226.     .BYTE    '7,'7
  3227.     .BYTE    '7,'8
  3228.     .BYTE    '7,'9
  3229.     .BYTE    '8,'0
  3230.     .BYTE    '8,'1
  3231.     .BYTE    '8,'2
  3232.     .BYTE    '8,'3
  3233.     .BYTE    '8,'4
  3234.     .BYTE    '8,'5
  3235.     .BYTE    '8,'6
  3236.     .BYTE    '8,'7
  3237.     .BYTE    '8,'8
  3238.     .BYTE    '8,'9
  3239.     .BYTE    '9,'0
  3240.     .BYTE    '9,'1
  3241.     .BYTE    '9,'2
  3242.     .BYTE    '9,'3
  3243.     .BYTE    '9,'4
  3244.     .BYTE    '9,'5
  3245.     .BYTE    '9,'6
  3246.     .BYTE    '9,'7
  3247.     .BYTE    '9,'8
  3248.     .BYTE    '9,'9
  3249.     .PAGE
  3250. ;
  3251. ;        THIS TABLE HOLDS THE TERAIN OF THE MOON IN
  3252. ;        FEET ABOVE THE MEAN HEIGHT. IT GOES SOMEEWHAT FORWARD AND
  3253. ;        BACKWARD BECAUSE THE PROGRAM MAY "SCAN" A LITTLE BIT.
  3254. ;
  3255.     .WORD       718.            ;X=-10
  3256.     .WORD       718.            ;X= -9
  3257.     .WORD       718.            ;X= -8
  3258.     .WORD       750.            ;X= -7
  3259.     .WORD       750.            ;X= -6
  3260.     .WORD       750.            ;X= -5
  3261.     .WORD       782.            ;X= -4
  3262.     .WORD       782.            ;X= -3
  3263.     .WORD       782.            ;X= -2
  3264.     .WORD       814.            ;X= -1
  3265. TERAIN:    .WORD       780.            ;X=  0
  3266.     .WORD       750.            ;X=  1
  3267.     .WORD       703.            ;X=  2
  3268.     .WORD       650.            ;X=  3
  3269.     .WORD       620.            ;X=  4
  3270.     .WORD       575.            ;X=  5
  3271.     .WORD       500.            ;X=  6
  3272.     .WORD       420.            ;X=  7
  3273.     .WORD       400.            ;X=  8
  3274.     .WORD       350.            ;X=  9
  3275.     .WORD       270.            ;X= 10
  3276.     .WORD       246.            ;X= 11
  3277.     .WORD       200.            ;X= 12
  3278.     .WORD       180.            ;X= 13
  3279.     .WORD       107.            ;X= 14
  3280.     .WORD        24.            ;X= 15
  3281.     .WORD        54.            ;X= 16
  3282.     .WORD        53.            ;X= 17
  3283.     .WORD        51.            ;X= 18
  3284.     .WORD        82.            ;X= 19
  3285.     .WORD        80.            ;X= 20
  3286.     .WORD        78.            ;X= 21
  3287.     .WORD       109.            ;X= 22
  3288.     .WORD       107.            ;X= 23
  3289.     .WORD        74.            ;X= 24
  3290.     .WORD        72.            ;X= 25
  3291.     .WORD        70.            ;X= 26
  3292.     .WORD        69.            ;X= 27
  3293.     .WORD        99.            ;X= 28
  3294.     .WORD        98.            ;X= 29
  3295.     .WORD       128.            ;X= 30
  3296.     .WORD       126.            ;X= 31
  3297.     .WORD       125.            ;X= 32
  3298.     .WORD       123.            ;X= 33
  3299.     .WORD       122.            ;X= 34
  3300.     .WORD       152.            ;X= 35
  3301.     .WORD       182.            ;X= 36
  3302.     .WORD       174.            ;X= 37
  3303.     .WORD       166.            ;X= 38
  3304.     .WORD       158.            ;X= 39
  3305.     .WORD       181.            ;X= 40
  3306.     .WORD       173.            ;X= 41
  3307.     .WORD       165.            ;X= 42
  3308.     .WORD       156.            ;X= 43
  3309.     .WORD       148.            ;X= 44
  3310.     .WORD       140.            ;X= 45
  3311.     .WORD       131.            ;X= 46
  3312.     .WORD        91.            ;X= 47
  3313.     .WORD        83.            ;X= 48
  3314.     .WORD        75.            ;X= 49
  3315.     .WORD       182.            ;X= 50
  3316.     .WORD       161.            ;X= 51
  3317.     .WORD       236.            ;X= 52
  3318.     .WORD       120.            ;X= 53
  3319.     .WORD        67.            ;X= 54
  3320.     .WORD       174.            ;X= 55
  3321.     .WORD       153.            ;X= 56
  3322.     .WORD       197.            ;X= 57
  3323.     .WORD        80.            ;X= 58
  3324.     .WORD        59.            ;X= 59
  3325.     .WORD       866.            ;X= 60
  3326.     .WORD       123.            ;X= 61
  3327.     .WORD       201.            ;X= 62
  3328.     .WORD       250.            ;X= 63
  3329.     .WORD       275.            ;X= 64
  3330.     .WORD       300.            ;X= 65
  3331.     .WORD       375.            ;X= 66
  3332.     .WORD       410.            ;X= 67
  3333.     .WORD       579.            ;X= 68
  3334.     .WORD      926.            ;X= 69
  3335.     .WORD      1832.            ;X= 70
  3336.     .WORD      1907.            ;X= 71
  3337.     .WORD      2013.            ;X= 72
  3338.     .WORD      2119.            ;X= 73
  3339.     .WORD      2257.            ;X= 74
  3340.     .WORD      2395.            ;X= 75
  3341.     .WORD      2533.            ;X= 76
  3342.     .WORD      2639.            ;X= 77
  3343.     .WORD      2745.            ;X= 78
  3344.     .WORD      2883.            ;X= 79
  3345.     .WORD      3021.            ;X= 80
  3346.     .WORD      3128.            ;X= 81
  3347.     .WORD      3226.            ;X= 82
  3348.     .WORD      3197.            ;X= 83
  3349.     .WORD      3231.            ;X= 84
  3350.     .WORD      3170.            ;X= 85
  3351.     .WORD      3140.            ;X= 86
  3352.     .WORD      3143.            ;X= 87
  3353.     .WORD      3145.            ;X= 88
  3354.     .WORD      3180.            ;X= 89
  3355.     .WORD      3246.            ;X= 90
  3356.     .WORD      3153.            ;X= 91
  3357.     .WORD      3252.            ;X= 92
  3358.     .WORD      3286.            ;X= 93
  3359.     .WORD      3353.            ;X= 94
  3360.     .WORD      3387.            ;X= 95
  3361.     .WORD      3390.            ;X= 96
  3362.     .WORD      3424.            ;X= 97
  3363.     .WORD      3523.            ;X= 98
  3364.     .WORD      3429.            ;X= 99
  3365.     .WORD      3440.            ;X=100
  3366.     .WORD      3450.            ;X=101
  3367.     .WORD      3429.            ;X=102
  3368.     .WORD      3407.            ;X=103
  3369.     .WORD      3386.            ;X=104
  3370.     .WORD      3396.            ;X=105
  3371.     .WORD      3375.            ;X=106
  3372.     .WORD      3321.            ;X=107
  3373.     .WORD      3300.            ;X=108
  3374.     .WORD      3246.            ;X=109
  3375.     .WORD      3257.            ;X=110
  3376.     .WORD      3203.            ;X=111
  3377.     .WORD      3182.            ;X=112
  3378.     .WORD      3128.            ;X=113
  3379.     .WORD      3107.            ;X=114
  3380.     .WORD      3085.            ;X=115
  3381.     .WORD      3064.            ;X=116
  3382.     .WORD      3074.            ;X=117
  3383.     .WORD      3085.            ;X=118
  3384.     .WORD      3095.            ;X=119
  3385.     .WORD      3195.            ;X=120
  3386.     .WORD      3167.            ;X=121
  3387.     .WORD      3139.            ;X=122
  3388.     .WORD      3239.            ;X=123
  3389.     .WORD      2954.            ;X=124
  3390.     .WORD      2926.            ;X=125
  3391.     .WORD      2834.            ;X=126
  3392.     .WORD      2710.            ;X=127
  3393.     .WORD      2746.            ;X=128
  3394.     .WORD      2718.            ;X=129
  3395.     .WORD      2753.            ;X=130
  3396.     .WORD      2469.            ;X=131
  3397.     .WORD      2569.            ;X=132
  3398.     .WORD      2509.            ;X=133
  3399.     .WORD      2513.            ;X=134
  3400.     .WORD      2580.            ;X=135
  3401.     .WORD      2584.            ;X=136
  3402.     .WORD      2620.            ;X=137
  3403.     .WORD      2720.            ;X=138
  3404.     .WORD      2820.            ;X=139
  3405.     .WORD      2919.            ;X=140
  3406.     .WORD      2859.            ;X=141
  3407.     .WORD      2703.            ;X=142
  3408.     .WORD      2739.            ;X=143
  3409.     .WORD      2967.            ;X=144
  3410.     .WORD      2906.            ;X=145
  3411.     .WORD      3134.            ;X=146
  3412.     .WORD      3042.            ;X=147
  3413.     .WORD      2918.            ;X=148
  3414.     .WORD      2858.            ;X=149
  3415.     .WORD      2759.            ;X=150
  3416.     .WORD      2468.            ;X=151
  3417.     .WORD      2498.            ;X=152
  3418.     .WORD      2399.            ;X=153
  3419.     .WORD      2396.            ;X=154
  3420.     .WORD      2362.            ;X=155
  3421.     .WORD      2071.            ;X=156
  3422.     .WORD      1940.            ;X=157
  3423.     .WORD      1970.            ;X=158
  3424.     .WORD      2063.            ;X=159
  3425.     .WORD      2028.            ;X=160
  3426.     .WORD      1930.            ;X=161
  3427.     .WORD      1799.            ;X=162
  3428.     .WORD      1668.            ;X=163
  3429.     .WORD      1762.            ;X=164
  3430.     .WORD      1823.            ;X=165
  3431.     .WORD      1660.            ;X=166
  3432.     .WORD      1626.            ;X=167
  3433.     .WORD      1527.            ;X=168
  3434.     .WORD      1428.            ;X=169
  3435.     .WORD      1650.            ;X=170
  3436.     .WORD      1615.            ;X=171
  3437.     .WORD      1676.            ;X=172
  3438.     .WORD      1770.            ;X=173
  3439.     .WORD      1703.            ;X=174
  3440.     .WORD      1636.            ;X=175
  3441.     .WORD      1666.            ;X=176
  3442.     .WORD      1599.            ;X=177
  3443.     .WORD      1436.            ;X=178
  3444.     .WORD      1402.            ;X=179
  3445.     .WORD      1431.            ;X=180
  3446.     .WORD      1332.            ;X=181
  3447.     .WORD      1426.            ;X=182
  3448.     .WORD      1647.            ;X=183
  3449.     .WORD      1516.            ;X=184
  3450.     .WORD      1354.            ;X=185
  3451.     .WORD      1319.            ;X=186
  3452.     .WORD      1380.            ;X=187
  3453.     .WORD      1090.            ;X=188
  3454.     .WORD      1055.            ;X=189
  3455.     .WORD      1148.            ;X=190
  3456.     .WORD      1146.            ;X=191
  3457.     .WORD      1207.            ;X=192
  3458.     .WORD      1172.            ;X=193
  3459.     .WORD      1202.            ;X=194
  3460.     .WORD      1071.            ;X=195
  3461.     .WORD       780.            ;X=196
  3462.     .WORD       746.            ;X=197
  3463.     .WORD       711.            ;X=198
  3464.     .WORD       933.            ;X=199
  3465.     .WORD      1092.            ;X=200
  3466.     .WORD      1348.            ;X=201
  3467.     .WORD      1539.            ;X=202
  3468.     .WORD      1827.            ;X=203
  3469.     .WORD      1858.            ;X=204
  3470.     .WORD      2114.            ;X=205
  3471.     .WORD      2337.            ;X=206
  3472.     .WORD      2497.            ;X=207
  3473.     .WORD      2624.            ;X=208
  3474.     .WORD      2752.            ;X=209
  3475.     .WORD      2847.            ;X=210
  3476.     .WORD      3007.            ;X=211
  3477.     .WORD      3166.            ;X=212
  3478.     .WORD      3422.            ;X=213
  3479.     .WORD      3581.            ;X=214
  3480.     .WORD      3709.            ;X=215
  3481.     .WORD      3964.            ;X=216
  3482.     .WORD      4124.            ;X=217
  3483.     .WORD      4315.            ;X=218
  3484.     .WORD      4443.            ;X=219
  3485.     .WORD      4449.            ;X=220
  3486.     .WORD      4711.            ;X=221
  3487.     .WORD      4845.            ;X=222
  3488.     .WORD      4883.            ;X=223
  3489.     .WORD      4985.            ;X=224
  3490.     .WORD      5055.            ;X=225
  3491.     .WORD      5061.            ;X=226
  3492.     .WORD      5260.            ;X=227
  3493.     .WORD      5362.            ;X=228
  3494.     .WORD      5592.            ;X=229
  3495.     .WORD      5726.            ;X=230
  3496.     .WORD      5860.            ;X=231
  3497.     .WORD      5994.            ;X=232
  3498.     .WORD      6160.            ;X=233
  3499.     .WORD      6259.            ;X=234
  3500.     .WORD      6422.            ;X=235
  3501.     .WORD      6584.            ;X=236
  3502.     .WORD      6715.            ;X=237
  3503.     .WORD      6877.            ;X=238
  3504.     .WORD      7008.            ;X=239
  3505.     .WORD      7138.            ;X=240
  3506.     .WORD      7301.            ;X=241
  3507.     .WORD      7432.            ;X=242
  3508.     .WORD      7562.            ;X=243
  3509.     .WORD      7693.            ;X=244
  3510.     .WORD      7791.            ;X=245
  3511.     .WORD      7954.            ;X=246
  3512.     .WORD      8084.            ;X=247
  3513.     .WORD      8215.            ;X=248
  3514.     .WORD      8345.            ;X=249
  3515.     .WORD      8400.            ;X=250
  3516.     .WORD      8678.            ;X=251
  3517.     .WORD      8765.            ;X=252
  3518.     .WORD      8851.            ;X=253
  3519.     .WORD      9033.            ;X=254
  3520.     .WORD      9152.            ;X=255
  3521.     .WORD      9366.            ;X=256
  3522.     .WORD      9388.            ;X=257
  3523.     .WORD      9539.            ;X=258
  3524.     .WORD      9945.            ;X=259
  3525.     .WORD     10191.            ;X=260
  3526.     .WORD     10377.            ;X=261
  3527.     .WORD     10659.            ;X=262
  3528.     .WORD     10781.            ;X=263
  3529.     .WORD     11063.            ;X=264
  3530.     .WORD     11312.            ;X=265
  3531.     .WORD     11370.            ;X=266
  3532.     .WORD     11396.            ;X=267
  3533.     .WORD     11646.            ;X=268
  3534.     .WORD     11768.            ;X=269
  3535.     .WORD     11985.            ;X=270
  3536.     .WORD     12203.            ;X=271
  3537.     .WORD     12357.            ;X=272
  3538.     .WORD     12607.            ;X=273
  3539.     .WORD     12857.            ;X=274
  3540.     .WORD     12965.            ;X=275
  3541.     .WORD     13073.            ;X=276
  3542.     .WORD     13117.            ;X=277
  3543.     .WORD     13193.            ;X=278
  3544.     .WORD     13238.            ;X=279
  3545.     .WORD     13282.            ;X=280
  3546.     .WORD     13358.            ;X=281
  3547.     .WORD     13434.            ;X=282
  3548.     .WORD     13478.            ;X=283
  3549.     .WORD     13555.            ;X=284
  3550.     .WORD     13631.            ;X=285
  3551.     .WORD     13707.            ;X=286
  3552.     .WORD     13815.            ;X=287
  3553.     .WORD     13923.            ;X=288
  3554.     .WORD     13967.            ;X=289
  3555.     .WORD     14029.            ;X=290
  3556.     .WORD     13996.            ;X=291
  3557.     .WORD     14121.            ;X=292
  3558.     .WORD     14215.            ;X=293
  3559.     .WORD     14308.            ;X=294
  3560.     .WORD     14466.            ;X=295
  3561.     .WORD     14591.            ;X=296
  3562.     .WORD     14749.            ;X=297
  3563.     .WORD     14874.            ;X=298
  3564.     .WORD     15000.            ;X=299
  3565.     .WORD     14754.            ;X=300
  3566.     .WORD     14604.            ;X=301
  3567.     .WORD     14326.            ;X=302
  3568.     .WORD     14176.            ;X=303
  3569.     .WORD     14090.            ;X=304
  3570.     .WORD     13940.            ;X=305
  3571.     .WORD     13662.            ;X=306
  3572.     .WORD     13480.            ;X=307
  3573.     .WORD     13394.            ;X=308
  3574.     .WORD     13116.            ;X=309
  3575.     .WORD     12548.            ;X=310
  3576.     .WORD     11469.            ;X=311
  3577.     .WORD     10582.            ;X=312
  3578.     .WORD     10015.            ;X=313
  3579.     .WORD      9160.            ;X=314
  3580.     .WORD      8960.            ;X=315
  3581.     .WORD      8696.            ;X=316
  3582.     .WORD      8432.            ;X=317
  3583.     .WORD      8200.            ;X=318
  3584.     .WORD      7936.            ;X=319
  3585.     .WORD      7770.            ;X=320
  3586.     .WORD      7509.            ;X=321
  3587.     .WORD      7375.            ;X=322
  3588.     .WORD      7210.            ;X=323
  3589.     .WORD      7076.            ;X=324
  3590.     .WORD      6911.            ;X=325
  3591.     .WORD      6745.            ;X=326
  3592.     .WORD      6644.            ;X=327
  3593.     .WORD      6478.            ;X=328
  3594.     .WORD      6185.            ;X=329
  3595.     .WORD      6019.            ;X=330
  3596.     .WORD      5758.            ;X=331
  3597.     .WORD      5656.            ;X=332
  3598.     .WORD      5491.            ;X=333
  3599.     .WORD      5261.            ;X=334
  3600.     .WORD      5096.            ;X=335
  3601.     .WORD      4867.            ;X=336
  3602.     .WORD      4712.            ;X=337
  3603.     .WORD      4398.            ;X=338
  3604.     .WORD      4020.            ;X=339
  3605.     .WORD      3834.            ;X=340
  3606.     .WORD      3296.            ;X=341
  3607.     .WORD      3014.            ;X=342
  3608.     .WORD      2668.            ;X=343
  3609.     .WORD      2642.            ;X=344
  3610.     .WORD      2424.            ;X=345
  3611.     .WORD      2398.            ;X=346
  3612.     .WORD      2212.            ;X=347
  3613.     .WORD      2186.            ;X=348
  3614.     .WORD      1840.            ;X=349
  3615.     .WORD      1828.            ;X=350
  3616.     .WORD      2008.            ;X=351
  3617.     .WORD      2156.            ;X=352
  3618.     .WORD      2272.            ;X=353
  3619.     .WORD      2356.            ;X=354
  3620.     .WORD      2312.            ;X=355
  3621.     .WORD      2268.            ;X=356
  3622.     .WORD      2224.            ;X=357
  3623.     .WORD      2276.            ;X=358
  3624.     .WORD      2328.            ;X=359
  3625.     .WORD      2413.            ;X=360
  3626.     .WORD      2511.            ;X=361
  3627.     .WORD      2673.            ;X=362
  3628.     .WORD      2836.            ;X=363
  3629.     .WORD      2998.            ;X=364
  3630.     .WORD      3129.            ;X=365
  3631.     .WORD      3227.            ;X=366
  3632.     .WORD      3390.            ;X=367
  3633.     .WORD      3488.            ;X=368
  3634.     .WORD      3586.            ;X=369
  3635.     .WORD      3717.            ;X=370
  3636.     .WORD      3879.            ;X=371
  3637.     .WORD      4010.            ;X=372
  3638.     .WORD      4108.            ;X=373
  3639.     .WORD      4239.            ;X=374
  3640.     .WORD      4369.            ;X=375
  3641.     .WORD      4531.            ;X=376
  3642.     .WORD      4694.            ;X=377
  3643.     .WORD      4824.            ;X=378
  3644.     .WORD      4987.            ;X=379
  3645.     .WORD      5117.            ;X=380
  3646.     .WORD      5216.            ;X=381
  3647.     .WORD      5314.            ;X=382
  3648.     .WORD      5445.            ;X=383
  3649.     .WORD      5543.            ;X=384
  3650.     .WORD      5705.            ;X=385
  3651.     .WORD      5804.            ;X=386
  3652.     .WORD      5966.            ;X=387
  3653.     .WORD      6097.            ;X=388
  3654.     .WORD      6195.            ;X=389
  3655.     .WORD      6294.            ;X=390
  3656.     .WORD      6392.            ;X=391
  3657.     .WORD      6522.            ;X=392
  3658.     .WORD      6685.            ;X=393
  3659.     .WORD      6815.            ;X=394
  3660.     .WORD      6914.            ;X=395
  3661.     .WORD      7076.            ;X=396
  3662.     .WORD      7239.            ;X=397
  3663.     .WORD      7337.            ;X=398
  3664.     .WORD      7436.            ;X=399
  3665.     .WORD      7074.            ;X=400
  3666.     .WORD      6809.            ;X=401
  3667.     .WORD      6448.            ;X=402
  3668.     .WORD      6118.            ;X=403
  3669.     .WORD      5629.            ;X=404
  3670.     .WORD      5268.            ;X=405
  3671.     .WORD      5002.            ;X=406
  3672.     .WORD      4769.            ;X=407
  3673.     .WORD      4535.            ;X=408
  3674.     .WORD      4270.            ;X=409
  3675.     .WORD      3909.            ;X=410
  3676.     .WORD      3515.            ;X=411
  3677.     .WORD      3108.            ;X=412
  3678.     .WORD      2796.            ;X=413
  3679.     .WORD      2389.            ;X=414
  3680.     .WORD      2077.            ;X=415
  3681.     .WORD      1509.            ;X=416
  3682.     .WORD      1326.            ;X=417
  3683.     .WORD      1078.            ;X=418
  3684.     .WORD       895.            ;X=419
  3685.     .WORD       583.            ;X=420
  3686.     .WORD       144.            ;X=421
  3687.     .WORD        64.            ;X=422
  3688.     .WORD       -15.            ;X=423
  3689.     .WORD      -127.            ;X=424
  3690.     .WORD      -114.            ;X=425
  3691.     .WORD      -101.            ;X=426
  3692.     .WORD       -56.            ;X=427
  3693.     .WORD       -10.            ;X=428
  3694.     .WORD         2.            ;X=429
  3695.     .WORD       -15.            ;X=430
  3696.     .WORD        29.            ;X=431
  3697.     .WORD        74.            ;X=432
  3698.     .WORD        56.            ;X=433
  3699.     .WORD        69.            ;X=434
  3700.     .WORD        82.            ;X=435
  3701.     .WORD        95.            ;X=436
  3702.     .WORD        88.            ;X=437
  3703.     .WORD        49.            ;X=438
  3704.     .WORD        73.            ;X=439
  3705.     .WORD        34.            ;X=440
  3706.     .WORD        59.            ;X=441
  3707.     .WORD        51.            ;X=442
  3708.     .WORD        44.            ;X=443
  3709.     .WORD        68.            ;X=444
  3710.     .WORD        29.            ;X=445
  3711.     .WORD        22.            ;X=446
  3712.     .WORD        14.            ;X=447
  3713.     .WORD         7.            ;X=448
  3714.     .WORD        32.            ;X=449
  3715.     .WORD        85.            ;X=450
  3716.     .WORD       171.            ;X=451
  3717.     .WORD       256.            ;X=452
  3718.     .WORD       310.            ;X=453
  3719.     .WORD       460.            ;X=454
  3720.     .WORD       555.            ;X=455
  3721.     .WORD       618.            ;X=456
  3722.     .WORD       681.            ;X=457
  3723.     .WORD       776.            ;X=458
  3724.     .WORD       839.            ;X=459
  3725.     .WORD       870.            ;X=460
  3726.     .WORD       933.            ;X=461
  3727.     .WORD       996.            ;X=462
  3728.     .WORD      1092.            ;X=463
  3729.     .WORD      1187.            ;X=464
  3730.     .WORD      1250.            ;X=465
  3731.     .WORD      1345.            ;X=466
  3732.     .WORD      1408.            ;X=467
  3733.     .WORD      1471.            ;X=468
  3734.     .WORD      1566.            ;X=469
  3735.     .WORD      1597.            ;X=470
  3736.     .WORD      1628.            ;X=471
  3737.     .WORD      1692.            ;X=472
  3738.     .WORD      1755.            ;X=473
  3739.     .WORD      1818.            ;X=474
  3740.     .WORD      1881.            ;X=475
  3741.     .WORD      1944.            ;X=476
  3742.     .WORD      2007.            ;X=477
  3743.     .WORD      2070.            ;X=478
  3744.     .WORD      2133.            ;X=479
  3745.     .WORD      2196.            ;X=480
  3746.     .WORD      2260.            ;X=481
  3747.     .WORD      2323.            ;X=482
  3748.     .WORD      2386.            ;X=483
  3749.     .WORD      2481.            ;X=484
  3750.     .WORD      2544.            ;X=485
  3751.     .WORD      2607.            ;X=486
  3752.     .WORD      2670.            ;X=487
  3753.     .WORD      2733.            ;X=488
  3754.     .WORD      2764.            ;X=489
  3755.     .WORD      2828.            ;X=490
  3756.     .WORD      2859.            ;X=491
  3757.     .WORD      2922.            ;X=492
  3758.     .WORD      2985.            ;X=493
  3759.     .WORD      3080.            ;X=494
  3760.     .WORD      3111.            ;X=495
  3761.     .WORD      3174.            ;X=496
  3762.     .WORD      3237.            ;X=497
  3763.     .WORD      3300.            ;X=498
  3764.     .WORD      3396.            ;X=499
  3765.     .WORD      3356.            ;X=500
  3766.     .WORD      3252.            ;X=501
  3767.     .WORD      2957.            ;X=502
  3768.     .WORD      3173.            ;X=503
  3769.     .WORD      3390.            ;X=504
  3770.     .WORD      3446.            ;X=505
  3771.     .WORD      3406.            ;X=506
  3772.     .WORD      3303.            ;X=507
  3773.     .WORD      3231.            ;X=508
  3774.     .WORD      3448.            ;X=509
  3775.     .WORD      3142.            ;X=510
  3776.     .WORD      3156.            ;X=511
  3777.     .WORD      3107.            ;X=512
  3778.     .WORD      3089.            ;X=513
  3779.     .WORD      2944.            ;X=514
  3780.     .WORD      2835.            ;X=515
  3781.     .WORD      2726.            ;X=516
  3782.     .WORD      2617.            ;X=517
  3783.     .WORD      2476.            ;X=518
  3784.     .WORD      2367.            ;X=519
  3785.     .WORD      2373.            ;X=520
  3786.     .WORD      2410.            ;X=521
  3787.     .WORD      2511.            ;X=522
  3788.     .WORD      2580.            ;X=523
  3789.     .WORD      2618.            ;X=524
  3790.     .WORD      2719.            ;X=525
  3791.     .WORD      2724.            ;X=526
  3792.     .WORD      2793.            ;X=527
  3793.     .WORD      2798.            ;X=528
  3794.     .WORD      2772.            ;X=529
  3795.     .WORD      2740.            ;X=530
  3796.     .WORD      2709.            ;X=531
  3797.     .WORD      2645.            ;X=532
  3798.     .WORD      2614.            ;X=533
  3799.     .WORD      2582.            ;X=534
  3800.     .WORD      2551.            ;X=535
  3801.     .WORD      2519.            ;X=536
  3802.     .WORD      2488.            ;X=537
  3803.     .WORD      2456.            ;X=538
  3804.     .WORD      2425.            ;X=539
  3805.     .WORD      2393.            ;X=540
  3806.     .WORD      2362.            ;X=541
  3807.     .WORD      2362.            ;X=542
  3808.     .WORD      2363.            ;X=543
  3809.     .WORD      2363.            ;X=544
  3810.     .WORD      2296.            ;X=545
  3811.     .WORD      2228.            ;X=546
  3812.     .WORD      2224.            ;X=547
  3813.     .WORD      2092.            ;X=548
  3814.     .WORD      2153.            ;X=549
  3815.     .WORD      2032.            ;X=550
  3816.     .WORD      2072.            ;X=551
  3817.     .WORD      2144.            ;X=552
  3818.     .WORD      2248.            ;X=553
  3819.     .WORD      2128.            ;X=554
  3820.     .WORD      1976.            ;X=555
  3821.     .WORD      2016.            ;X=556
  3822.     .WORD      1864.            ;X=557
  3823.     .WORD      1936.            ;X=558
  3824.     .WORD      1912.            ;X=559
  3825.     .WORD      1856.            ;X=560
  3826.     .WORD      1704.            ;X=561
  3827.     .WORD      1616.            ;X=562
  3828.     .WORD      1496.            ;X=563
  3829.     .WORD      1344.            ;X=564
  3830.     .WORD      1320.            ;X=565
  3831.     .WORD      1232.            ;X=566
  3832.     .WORD       952.            ;X=567
  3833.     .WORD       992.            ;X=568
  3834.     .WORD      1032.            ;X=569
  3835.     .WORD      1136.            ;X=570
  3836.     .WORD      1048.            ;X=571
  3837.     .WORD      1056.            ;X=572
  3838.     .WORD       968.            ;X=573
  3839.     .WORD       688.            ;X=574
  3840.     .WORD       792.            ;X=575
  3841.     .WORD       768.            ;X=576
  3842.     .WORD       744.            ;X=577
  3843.     .WORD       624.            ;X=578
  3844.     .WORD       343.            ;X=579
  3845.     .WORD       298.            ;X=580
  3846.     .WORD       444.            ;X=581
  3847.     .WORD       494.            ;X=582
  3848.     .WORD       289.            ;X=583
  3849.     .WORD       211.            ;X=584
  3850.     .WORD       165.            ;X=585
  3851.     .WORD       152.            ;X=586
  3852.     .WORD        74.            ;X=587
  3853.     .WORD       156.            ;X=588
  3854.     .WORD       174.            ;X=589
  3855.     .WORD       225.            ;X=590
  3856.     .WORD       147.            ;X=591
  3857.     .WORD       -58.            ;X=592
  3858.     .WORD       -39.            ;X=593
  3859.     .WORD       -85.            ;X=594
  3860.     .WORD      -163.            ;X=595
  3861.     .WORD       143.            ;X=596
  3862.     .WORD       449.            ;X=597
  3863.     .WORD       755.            ;X=598
  3864.     .WORD       934.            ;X=599
  3865.     .WORD       787.            ;X=600
  3866.     .WORD       673.            ;X=601
  3867.     .WORD       654.            ;X=602
  3868.     .WORD       636.            ;X=603
  3869.     .WORD       618.            ;X=604
  3870.     .WORD       471.            ;X=605
  3871.     .WORD       325.            ;X=606
  3872.     .WORD       403.            ;X=607
  3873.     .WORD       416.            ;X=608
  3874.     .WORD       270.            ;X=609
  3875.     .WORD       220.            ;X=610
  3876.     .WORD       105.            ;X=611
  3877.     .WORD        87.            ;X=612
  3878.     .WORD       101.            ;X=613
  3879.     .WORD       -13.            ;X=614
  3880.     .WORD       -63.            ;X=615
  3881.     .WORD        46.            ;X=616
  3882.     .WORD       155.            ;X=617
  3883.     .WORD       137.            ;X=618
  3884.     .WORD       183.            ;X=619
  3885.     .WORD       164.            ;X=620
  3886.     .WORD        50.            ;X=621
  3887.     .WORD        31.            ;X=622
  3888.     .WORD        13.            ;X=623
  3889.     .WORD       123.            ;X=624
  3890.     .WORD       104.            ;X=625
  3891.     .WORD       214.            ;X=626
  3892.     .WORD       228.            ;X=627
  3893.     .WORD       273.            ;X=628
  3894.     .WORD       287.            ;X=629
  3895.     .WORD       141.            ;X=630
  3896.     .WORD       250.            ;X=631
  3897.     .WORD       328.            ;X=632
  3898.     .WORD       278.            ;X=633
  3899.     .WORD       323.            ;X=634
  3900.     .WORD       401.            ;X=635
  3901.     .WORD       511.            ;X=636
  3902.     .WORD       364.            ;X=637
  3903.     .WORD       218.            ;X=638
  3904.     .WORD       200.            ;X=639
  3905.     .WORD       212.            ;X=640
  3906.     .WORD       160.            ;X=641
  3907.     .WORD       172.            ;X=642
  3908.     .WORD       152.            ;X=643
  3909.     .WORD       132.            ;X=644
  3910.     .WORD       112.            ;X=645
  3911.     .WORD        92.            ;X=646
  3912.     .WORD        72.            ;X=647
  3913.     .WORD        52.            ;X=648
  3914.     .WORD        63.            ;X=649
  3915.     .WORD        94.            ;X=650
  3916.     .WORD        93.            ;X=651
  3917.     .WORD        92.            ;X=652
  3918.     .WORD        90.            ;X=653
  3919.     .WORD        89.            ;X=654
  3920.     .WORD       120.            ;X=655
  3921.     .WORD       119.            ;X=656
  3922.     .WORD       117.            ;X=657
  3923.     .WORD       116.            ;X=658
  3924.     .WORD        83.            ;X=659
  3925.     .WORD        81.            ;X=660
  3926.     .WORD        80.            ;X=661
  3927.     .WORD        79.            ;X=662
  3928.     .WORD       110.            ;X=663
  3929.     .WORD       108.            ;X=664
  3930.     .WORD       139.            ;X=665
  3931.     .WORD       138.            ;X=666
  3932.     .WORD       136.            ;X=667
  3933.     .WORD       103.            ;X=668
  3934.     .WORD       134.            ;X=669
  3935.     .WORD       165.            ;X=670
  3936.     .WORD       131.            ;X=671
  3937.     .WORD       162.            ;X=672
  3938.     .WORD       193.            ;X=673
  3939.     .WORD       159.            ;X=674
  3940.     .WORD       185.            ;X=675
  3941.     .WORD       179.            ;X=676
  3942.     .WORD       140.            ;X=677
  3943.     .WORD       102.            ;X=678
  3944.     .WORD       128.            ;X=679
  3945.     .WORD       153.            ;X=680
  3946.     .WORD       147.            ;X=681
  3947.     .WORD       172.            ;X=682
  3948.     .WORD       134.            ;X=683
  3949.     .WORD       160.            ;X=684
  3950.     .WORD       153.            ;X=685
  3951.     .WORD       179.            ;X=686
  3952.     .WORD       204.            ;X=687
  3953.     .WORD       166.            ;X=688
  3954.     .WORD       160.            ;X=689
  3955.     .WORD       153.            ;X=690
  3956.     .WORD       179.            ;X=691
  3957.     .WORD       172.            ;X=692
  3958.     .WORD       166.            ;X=693
  3959.     .WORD       160.            ;X=694
  3960.     .WORD       153.            ;X=695
  3961.     .WORD       125.            ;X=696
  3962.     .WORD       110.            ;X=697
  3963.     .WORD       95.            ;X=698
  3964.     .WORD       80.            ;X=699
  3965.     .WORD       85.            ;X=700
  3966.     .WORD        82.            ;X=701
  3967.     .WORD        87.            ;X=702
  3968.     .WORD       84.            ;X=703
  3969.     .WORD       81.            ;X=704
  3970.     .WORD       86.            ;X=705
  3971.     .WORD       103.            ;X=706
  3972.     .WORD       125.            ;X=707
  3973.     .WORD       140.            ;X=708
  3974.     .WORD       152.            ;X=709
  3975.     .WORD       135.            ;X=710
  3976.     .WORD       130.            ;X=711
  3977.     .WORD       125.            ;X=712
  3978.     .WORD        88.            ;X=713
  3979.     .WORD        83.            ;X=714
  3980.     .WORD        46.            ;X=715
  3981.     .WORD        40.            ;X=716
  3982.     .WORD        35.            ;X=717
  3983.     .WORD        30.            ;X=718
  3984.     .WORD        25.            ;X=719
  3985.     .WORD        52.            ;X=720
  3986.     .WORD        47.            ;X=721
  3987.     .WORD        42.            ;X=722
  3988.     .WORD        37.            ;X=723
  3989.     .WORD        63.            ;X=724
  3990.     .WORD        61.            ;X=725
  3991.     .WORD        90.            ;X=726
  3992.     .WORD       120.            ;X=727
  3993.     .WORD       117.            ;X=728
  3994.     .WORD       115.            ;X=729
  3995.     .WORD       112.            ;X=730
  3996.     .WORD        78.            ;X=731
  3997.     .WORD        75.            ;X=732
  3998.     .WORD       104.            ;X=733
  3999.     .WORD        70.            ;X=734
  4000.     .WORD        67.            ;X=735
  4001.     .WORD        33.            ;X=736
  4002.     .WORD        62.            ;X=737
  4003.     .WORD        60.            ;X=738
  4004.     .WORD        57.            ;X=739
  4005.     .WORD        55.            ;X=740
  4006.     .WORD        52.            ;X=741
  4007.     .WORD        81.            ;X=742
  4008.     .WORD       111.            ;X=743
  4009.     .WORD       140.            ;X=744
  4010.     .WORD       138.            ;X=745
  4011.     .WORD       167.            ;X=746
  4012.     .WORD       165.            ;X=747
  4013.     .WORD       162.            ;X=748
  4014.     .WORD       192.            ;X=749
  4015.     .WORD       137.            ;X=750
  4016.     .WORD       179.            ;X=751
  4017.     .WORD       124.            ;X=752
  4018.     .WORD       230.            ;X=753
  4019.     .WORD       336.            ;X=754
  4020.     .WORD       377.            ;X=755
  4021.     .WORD       387.            ;X=756
  4022.     .WORD       301.            ;X=757
  4023.     .WORD       406.            ;X=758
  4024.     .WORD       288.            ;X=759
  4025.     .WORD       426.            ;X=760
  4026.     .WORD       467.            ;X=761
  4027.     .WORD       541.            ;X=762
  4028.     .WORD       423.            ;X=763
  4029.     .WORD       528.            ;X=764
  4030.     .WORD       506.            ;X=765
  4031.     .WORD       452.            ;X=766
  4032.     .WORD       365.            ;X=767
  4033.     .WORD       311.            ;X=768
  4034.     .WORD       193.            ;X=769
  4035.     .WORD       298.            ;X=770
  4036.     .WORD       436.            ;X=771
  4037.     .WORD       510.            ;X=772
  4038.     .WORD       487.            ;X=773
  4039.     .WORD       465.            ;X=774
  4040.     .WORD       347.            ;X=775
  4041.     .WORD       260.            ;X=776
  4042.     .WORD       334.            ;X=777
  4043.     .WORD       440.            ;X=778
  4044.     .WORD       417.            ;X=779
  4045.     .WORD       427.            ;X=780
  4046.     .WORD       341.            ;X=781
  4047.     .WORD       318.            ;X=782
  4048.     .WORD       232.            ;X=783
  4049.     .WORD       146.            ;X=784
  4050.     .WORD        27.            ;X=785
  4051.     .WORD        69.            ;X=786
  4052.     .WORD       175.            ;X=787
  4053.     .WORD       280.            ;X=788
  4054.     .WORD       258.            ;X=789
  4055.     .WORD       204.            ;X=790
  4056.     .WORD       277.            ;X=791
  4057.     .WORD       415.            ;X=792
  4058.     .WORD       425.            ;X=793
  4059.     .WORD       466.            ;X=794
  4060.     .WORD       412.            ;X=795
  4061.     .WORD       326.            ;X=796
  4062.     .WORD       463.            ;X=797
  4063.     .WORD       537.            ;X=798
  4064.     .WORD       547.            ;X=799
  4065.     .WORD       798.            ;X=800
  4066.     .WORD       665.            ;X=801
  4067.     .WORD       660.            ;X=802
  4068.     .WORD       592.            ;X=803
  4069.     .WORD       555.            ;X=804
  4070.     .WORD       646.            ;X=805
  4071.     .WORD       514.            ;X=806
  4072.     .WORD       765.            ;X=807
  4073.     .WORD       760.            ;X=808
  4074.     .WORD       755.            ;X=809
  4075.     .WORD       875.            ;X=810
  4076.     .WORD       994.            ;X=811
  4077.     .WORD      1081.            ;X=812
  4078.     .WORD      1136.            ;X=813
  4079.     .WORD      1223.            ;X=814
  4080.     .WORD      1311.            ;X=815
  4081.     .WORD      1398.            ;X=816
  4082.     .WORD      1485.            ;X=817
  4083.     .WORD      1604.            ;X=818
  4084.     .WORD      1691.            ;X=819
  4085.     .WORD      1747.            ;X=820
  4086.     .WORD      1834.            ;X=821
  4087.     .WORD      1921.            ;X=822
  4088.     .WORD      1976.            ;X=823
  4089.     .WORD      2095.            ;X=824
  4090.     .WORD      2183.            ;X=825
  4091.     .WORD      2238.            ;X=826
  4092.     .WORD      2357.            ;X=827
  4093.     .WORD      2412.            ;X=828
  4094.     .WORD      2468.            ;X=829
  4095.     .WORD      2422.            ;X=830
  4096.     .WORD      2440.            ;X=831
  4097.     .WORD      2523.            ;X=832
  4098.     .WORD      2381.            ;X=833
  4099.     .WORD      2336.            ;X=834
  4100.     .WORD      2380.            ;X=835
  4101.     .WORD      2392.            ;X=836
  4102.     .WORD      2404.            ;X=837
  4103.     .WORD      2449.            ;X=838
  4104.     .WORD      2493.            ;X=839
  4105.     .WORD      2505.            ;X=840
  4106.     .WORD      2517.            ;X=841
  4107.     .WORD      2562.            ;X=842
  4108.     .WORD      2574.            ;X=843
  4109.     .WORD      2586.            ;X=844
  4110.     .WORD      2598.            ;X=845
  4111.     .WORD      2643.            ;X=846
  4112.     .WORD      2687.            ;X=847
  4113.     .WORD      2731.            ;X=848
  4114.     .WORD      2775.            ;X=849
  4115.     .WORD      2849.            ;X=850
  4116.     .WORD      2890.            ;X=851
  4117.     .WORD      2932.            ;X=852
  4118.     .WORD      2781.            ;X=853
  4119.     .WORD      2759.            ;X=854
  4120.     .WORD      2832.            ;X=855
  4121.     .WORD      2810.            ;X=856
  4122.     .WORD      2787.            ;X=857
  4123.     .WORD      2509.            ;X=858
  4124.     .WORD      2742.            ;X=859
  4125.     .WORD      2752.            ;X=860
  4126.     .WORD      2825.            ;X=861
  4127.     .WORD      2899.            ;X=862
  4128.     .WORD      2844.            ;X=863
  4129.     .WORD      2822.            ;X=864
  4130.     .WORD      2543.            ;X=865
  4131.     .WORD      2777.            ;X=866
  4132.     .WORD      2882.            ;X=867
  4133.     .WORD      2892.            ;X=868
  4134.     .WORD      2773.            ;X=869
  4135.     .WORD      2879.            ;X=870
  4136.     .WORD      2792.            ;X=871
  4137.     .WORD      2770.            ;X=872
  4138.     .WORD      2747.            ;X=873
  4139.     .WORD      2629.            ;X=874
  4140.     .WORD      2670.            ;X=875
  4141.     .WORD      2391.            ;X=876
  4142.     .WORD      2497.            ;X=877
  4143.     .WORD      2570.            ;X=878
  4144.     .WORD      2804.            ;X=879
  4145.     .WORD      2781.            ;X=880
  4146.     .WORD      2823.            ;X=881
  4147.     .WORD      2544.            ;X=882
  4148.     .WORD      2490.            ;X=883
  4149.     .WORD      2435.            ;X=884
  4150.     .WORD      2477.            ;X=885
  4151.     .WORD      2518.            ;X=886
  4152.     .WORD      2368.            ;X=887
  4153.     .WORD      2313.            ;X=888
  4154.     .WORD      2419.            ;X=889
  4155.     .WORD      2524.            ;X=890
  4156.     .WORD      2502.            ;X=891
  4157.     .WORD      2479.            ;X=892
  4158.     .WORD      2553.            ;X=893
  4159.     .WORD      2562.            ;X=894
  4160.     .WORD      2540.            ;X=895
  4161.     .WORD      2549.            ;X=896
  4162.     .WORD      2591.            ;X=897
  4163.     .WORD      2664.            ;X=898
  4164.     .WORD      2386.            ;X=899
  4165.     .WORD      2455.            ;X=900
  4166.     .WORD      2428.            ;X=901
  4167.     .WORD      2145.            ;X=902
  4168.     .WORD      2119.            ;X=903
  4169.     .WORD      2156.            ;X=904
  4170.     .WORD      2001.            ;X=905
  4171.     .WORD      1974.            ;X=906
  4172.     .WORD      2204.            ;X=907
  4173.     .WORD      2145.            ;X=908
  4174.     .WORD      2374.            ;X=909
  4175.     .WORD      2476.            ;X=910
  4176.     .PAGE
  4177. ;
  4178. ;        THIS TABLE HOLDS THE FEATURES OF THE MOON
  4179. ;        THAT MAY CHANGE FROM TIME TO TIME.
  4180. ;        0=NOTHING SPECIAL.
  4181. ;        1=LANDED SHIP.
  4182. ;        2=PLANTED AMERICAN FLAG.
  4183. ;        3=DEAD SHIP TILTED LEFT.
  4184. ;        4=DEAD SHIP TILTED RIGHT.
  4185. ;        5=BOULDER. <ROCK TO YOU STUPID PEOPLES>
  4186. ;        6=MACDONALD'S <LEFT OR RIGHT EDGES ONLY>
  4187. ;        7=CENTER OF MACDONALD'S <WHERE TO DRAW CENTER OF IT>
  4188. ;
  4189.     .BYTE    0*20+0            ;X= -9    X=-10
  4190.     .BYTE    5*20+0            ;X= -7    X= -8
  4191.     .BYTE    0*20+0            ;X= -5    X= -6
  4192.     .BYTE    0*20+0            ;X= -3    X= -4
  4193.     .BYTE    0*20+0            ;X= -1    X= -2
  4194. FEATUR:    .BYTE    0*20+5            ;X=  1    X=  0
  4195.     .BYTE    0*20+0            ;X=  3    X=  2
  4196.     .BYTE    0*20+0            ;X=  5    X=  4
  4197.     .BYTE    0*20+0            ;X=  7    X=  6
  4198.     .BYTE    0*20+0            ;X=  9    X=  8
  4199.     .BYTE    0*20+0            ;X= 11    X= 10
  4200.     .BYTE    0*20+0            ;X= 13    X= 12
  4201.     .BYTE    0*20+0            ;X= 15    X= 14
  4202.     .BYTE    0*20+0            ;X= 17    X= 16
  4203.     .BYTE    0*20+0            ;X= 19    X= 18
  4204.     .BYTE    0*20+0            ;X= 21    X= 20
  4205.     .BYTE    0*20+0            ;X= 23    X= 22
  4206.     .BYTE    0*20+0            ;X= 25    X= 24
  4207.     .BYTE    0*20+5            ;X= 27    X= 26
  4208.     .BYTE    5*20+5            ;X= 29    X= 28
  4209.     .BYTE    0*20+0            ;X= 31    X= 30
  4210.     .BYTE    0*20+0            ;X= 33    X= 32
  4211.     .BYTE    0*20+0            ;X= 35    X= 34
  4212.     .BYTE    0*20+0            ;X= 37    X= 36
  4213.     .BYTE    0*20+0            ;X= 39    X= 38
  4214.     .BYTE    0*20+0            ;X= 41    X= 40
  4215.     .BYTE    0*20+0            ;X= 43    X= 42
  4216.     .BYTE    0*20+5            ;X= 45    X= 44
  4217.     .BYTE    0*20+0            ;X= 47    X= 46
  4218.     .BYTE    0*20+0            ;X= 49    X= 48
  4219.     .BYTE    5*20+5            ;X= 51    X= 50
  4220.     .BYTE    0*20+5            ;X= 53    X= 52
  4221.     .BYTE    5*20+5            ;X= 55    X= 54
  4222.     .BYTE    0*20+0            ;X= 57    X= 56
  4223.     .BYTE    0*20+0            ;X= 59    X= 58
  4224.     .BYTE    0*20+5            ;X= 61    X= 60
  4225.     .BYTE    0*20+5            ;X= 63    X= 62
  4226.     .BYTE    5*20+5            ;X= 65    X= 64
  4227.     .BYTE    5*20+0            ;X= 67    X= 66
  4228.     .BYTE    0*20+5            ;X= 69    X= 68
  4229.     .BYTE    5*20+5            ;X= 71    X= 70
  4230.     .BYTE    5*20+5            ;X= 73    X= 72
  4231.     .BYTE    5*20+0            ;X= 75    X= 74
  4232.     .BYTE    0*20+5            ;X= 77    X= 76
  4233.     .BYTE    0*20+5            ;X= 79    X= 78
  4234.     .BYTE    0*20+0            ;X= 81    X= 80
  4235.     .BYTE    0*20+5            ;X= 83    X= 82
  4236.     .BYTE    5*20+0            ;X= 85    X= 84
  4237.     .BYTE    0*20+5            ;X= 87    X= 86
  4238.     .BYTE    0*20+0            ;X= 89    X= 88
  4239.     .BYTE    0*20+5            ;X= 91    X= 90
  4240.     .BYTE    0*20+0            ;X= 93    X= 92
  4241.     .BYTE    0*20+0            ;X= 95    X= 94
  4242.     .BYTE    5*20+5            ;X= 97    X= 96
  4243.     .BYTE    0*20+0            ;X= 99    X= 98
  4244.     .BYTE    0*20+5            ;X=101    X=100
  4245.     .BYTE    5*20+5            ;X=103    X=102
  4246.     .BYTE    0*20+5            ;X=105    X=104
  4247.     .BYTE    5*20+5            ;X=107    X=106
  4248.     .BYTE    0*20+5            ;X=109    X=108
  4249.     .BYTE    0*20+5            ;X=111    X=110
  4250.     .BYTE    5*20+0            ;X=113    X=112
  4251.     .BYTE    5*20+5            ;X=115    X=114
  4252.     .BYTE    5*20+5            ;X=117    X=116
  4253.     .BYTE    5*20+5            ;X=119    X=118
  4254.     .BYTE    0*20+5            ;X=121    X=120
  4255.     .BYTE    5*20+5            ;X=123    X=122
  4256.     .BYTE    5*20+5            ;X=125    X=124
  4257.     .BYTE    5*20+5            ;X=127    X=126
  4258.     .BYTE    0*20+5            ;X=129    X=128
  4259.     .BYTE    5*20+5            ;X=131    X=130
  4260.     .BYTE    0*20+5            ;X=133    X=132
  4261.     .BYTE    5*20+5            ;X=135    X=134
  4262.     .BYTE    5*20+5            ;X=137    X=136
  4263.     .BYTE    5*20+5            ;X=139    X=138
  4264.     .BYTE    0*20+5            ;X=141    X=140
  4265.     .BYTE    0*20+5            ;X=143    X=142
  4266.     .BYTE    5*20+5            ;X=145    X=144
  4267.     .BYTE    5*20+5            ;X=147    X=146
  4268.     .BYTE    5*20+0            ;X=149    X=148
  4269.     .BYTE    5*20+5            ;X=151    X=150
  4270.     .BYTE    5*20+5            ;X=153    X=152
  4271.     .BYTE    5*20+5            ;X=155    X=154
  4272.     .BYTE    5*20+0            ;X=157    X=156
  4273.     .BYTE    0*20+0            ;X=159    X=158
  4274.     .BYTE    5*20+5            ;X=161    X=160
  4275.     .BYTE    0*20+5            ;X=163    X=162
  4276.     .BYTE    0*20+5            ;X=165    X=164
  4277.     .BYTE    5*20+5            ;X=167    X=166
  4278.     .BYTE    5*20+5            ;X=169    X=168
  4279.     .BYTE    5*20+5            ;X=171    X=170
  4280.     .BYTE    5*20+5            ;X=173    X=172
  4281.     .BYTE    0*20+5            ;X=175    X=174
  4282.     .BYTE    5*20+5            ;X=177    X=176
  4283.     .BYTE    0*20+5            ;X=179    X=178
  4284.     .BYTE    5*20+0            ;X=181    X=180
  4285.     .BYTE    0*20+5            ;X=183    X=182
  4286.     .BYTE    5*20+5            ;X=185    X=184
  4287.     .BYTE    5*20+5            ;X=187    X=186
  4288.     .BYTE    5*20+5            ;X=189    X=188
  4289.     .BYTE    5*20+5            ;X=191    X=190
  4290.     .BYTE    5*20+5            ;X=193    X=192
  4291.     .BYTE    5*20+5            ;X=195    X=194
  4292.     .BYTE    5*20+5            ;X=197    X=196
  4293.     .BYTE    0*20+5            ;X=199    X=198
  4294.     .BYTE    0*20+0            ;X=201    X=200
  4295.     .BYTE    5*20+0            ;X=203    X=202
  4296.     .BYTE    0*20+0            ;X=205    X=204
  4297.     .BYTE    0*20+0            ;X=207    X=206
  4298.     .BYTE    0*20+0            ;X=209    X=208
  4299.     .BYTE    0*20+5            ;X=211    X=210
  4300.     .BYTE    0*20+0            ;X=213    X=212
  4301.     .BYTE    0*20+0            ;X=215    X=214
  4302.     .BYTE    0*20+0            ;X=217    X=216
  4303.     .BYTE    0*20+0            ;X=219    X=218
  4304.     .BYTE    5*20+0            ;X=221    X=220
  4305.     .BYTE    5*20+5            ;X=223    X=222
  4306.     .BYTE    0*20+0            ;X=225    X=224
  4307.     .BYTE    0*20+0            ;X=227    X=226
  4308.     .BYTE    0*20+0            ;X=229    X=228
  4309.     .BYTE    0*20+0            ;X=231    X=230
  4310.     .BYTE    0*20+0            ;X=233    X=232
  4311.     .BYTE    0*20+5            ;X=235    X=234
  4312.     .BYTE    0*20+0            ;X=237    X=236
  4313.     .BYTE    0*20+0            ;X=239    X=238
  4314.     .BYTE    0*20+5            ;X=241    X=240
  4315.     .BYTE    0*20+0            ;X=243    X=242
  4316.     .BYTE    0*20+5            ;X=245    X=244
  4317.     .BYTE    0*20+0            ;X=247    X=246
  4318.     .BYTE    0*20+0            ;X=249    X=248
  4319.     .BYTE    0*20+5            ;X=251    X=250
  4320.     .BYTE    0*20+5            ;X=253    X=252
  4321.     .BYTE    0*20+0            ;X=255    X=254
  4322.     .BYTE    0*20+0            ;X=257    X=256
  4323.     .BYTE    0*20+0            ;X=259    X=258
  4324.     .BYTE    0*20+0            ;X=261    X=260
  4325.     .BYTE    0*20+0            ;X=263    X=262
  4326.     .BYTE    0*20+0            ;X=265    X=264
  4327.     .BYTE    0*20+5            ;X=267    X=266
  4328.     .BYTE    0*20+0            ;X=269    X=268
  4329.     .BYTE    0*20+0            ;X=271    X=270
  4330.     .BYTE    0*20+0            ;X=273    X=272
  4331.     .BYTE    0*20+0            ;X=275    X=274
  4332.     .BYTE    0*20+0            ;X=277    X=276
  4333.     .BYTE    0*20+0            ;X=279    X=278
  4334.     .BYTE    5*20+0            ;X=281    X=280
  4335.     .BYTE    0*20+0            ;X=283    X=282
  4336.     .BYTE    0*20+0            ;X=285    X=284
  4337.     .BYTE    0*20+0            ;X=287    X=286
  4338.     .BYTE    0*20+0            ;X=289    X=288
  4339.     .BYTE    0*20+0            ;X=291    X=290
  4340.     .BYTE    0*20+0            ;X=293    X=292
  4341.     .BYTE    0*20+0            ;X=295    X=294
  4342.     .BYTE    0*20+0            ;X=297    X=296
  4343.     .BYTE    0*20+0            ;X=299    X=298
  4344.     .BYTE    5*20+5            ;X=301    X=300
  4345.     .BYTE    5*20+5            ;X=303    X=302
  4346.     .BYTE    5*20+0            ;X=305    X=304
  4347.     .BYTE    5*20+5            ;X=307    X=306
  4348.     .BYTE    0*20+5            ;X=309    X=308
  4349.     .BYTE    5*20+5            ;X=311    X=310
  4350.     .BYTE    0*20+5            ;X=313    X=312
  4351.     .BYTE    5*20+5            ;X=315    X=314
  4352.     .BYTE    5*20+5            ;X=317    X=316
  4353.     .BYTE    5*20+5            ;X=319    X=318
  4354.     .BYTE    5*20+5            ;X=321    X=320
  4355.     .BYTE    5*20+5            ;X=323    X=322
  4356.     .BYTE    5*20+5            ;X=325    X=324
  4357.     .BYTE    5*20+5            ;X=327    X=326
  4358.     .BYTE    5*20+5            ;X=329    X=328
  4359.     .BYTE    5*20+5            ;X=331    X=330
  4360.     .BYTE    5*20+5            ;X=333    X=332
  4361.     .BYTE    5*20+5            ;X=335    X=334
  4362.     .BYTE    5*20+5            ;X=337    X=336
  4363.     .BYTE    5*20+5            ;X=339    X=338
  4364.     .BYTE    5*20+5            ;X=341    X=340
  4365.     .BYTE    5*20+5            ;X=343    X=342
  4366.     .BYTE    5*20+5            ;X=345    X=344
  4367.     .BYTE    5*20+5            ;X=347    X=346
  4368.     .BYTE    5*20+5            ;X=349    X=348
  4369.     .BYTE    0*20+0            ;X=351    X=350
  4370.     .BYTE    0*20+0            ;X=353    X=352
  4371.     .BYTE    0*20+0            ;X=355    X=354
  4372.     .BYTE    5*20+0            ;X=357    X=356
  4373.     .BYTE    5*20+5            ;X=359    X=358
  4374.     .BYTE    5*20+5            ;X=361    X=360
  4375.     .BYTE    0*20+0            ;X=363    X=362
  4376.     .BYTE    0*20+0            ;X=365    X=364
  4377.     .BYTE    0*20+0            ;X=367    X=366
  4378.     .BYTE    0*20+0            ;X=369    X=368
  4379.     .BYTE    0*20+0            ;X=371    X=370
  4380.     .BYTE    0*20+0            ;X=373    X=372
  4381.     .BYTE    0*20+0            ;X=375    X=374
  4382.     .BYTE    0*20+0            ;X=377    X=376
  4383.     .BYTE    0*20+5            ;X=379    X=378
  4384.     .BYTE    0*20+0            ;X=381    X=380
  4385.     .BYTE    0*20+5            ;X=383    X=382
  4386.     .BYTE    0*20+0            ;X=385    X=384
  4387.     .BYTE    0*20+5            ;X=387    X=386
  4388.     .BYTE    0*20+0            ;X=389    X=388
  4389.     .BYTE    0*20+0            ;X=391    X=390
  4390.     .BYTE    0*20+0            ;X=393    X=392
  4391.     .BYTE    0*20+0            ;X=395    X=394
  4392.     .BYTE    0*20+0            ;X=397    X=396
  4393.     .BYTE    0*20+0            ;X=399    X=398
  4394.     .BYTE    5*20+5            ;X=401    X=400
  4395.     .BYTE    5*20+5            ;X=403    X=402
  4396.     .BYTE    5*20+5            ;X=405    X=404
  4397.     .BYTE    5*20+5            ;X=407    X=406
  4398.     .BYTE    5*20+5            ;X=409    X=408
  4399.     .BYTE    5*20+5            ;X=411    X=410
  4400.     .BYTE    5*20+5            ;X=413    X=412
  4401.     .BYTE    5*20+5            ;X=415    X=414
  4402.     .BYTE    5*20+0            ;X=417    X=416
  4403.     .BYTE    5*20+5            ;X=419    X=418
  4404.     .BYTE    5*20+5            ;X=421    X=420
  4405.     .BYTE    0*20+5            ;X=423    X=422
  4406.     .BYTE    0*20+5            ;X=425    X=424
  4407.     .BYTE    0*20+0            ;X=427    X=426
  4408.     .BYTE    0*20+0            ;X=429    X=428
  4409.     .BYTE    0*20+5            ;X=431    X=430
  4410.     .BYTE    0*20+0            ;X=433    X=432
  4411.     .BYTE    5*20+0            ;X=435    X=434
  4412.     .BYTE    5*20+0            ;X=437    X=436
  4413.     .BYTE    0*20+0            ;X=439    X=438
  4414.     .BYTE    0*20+0            ;X=441    X=440
  4415.     .BYTE    0*20+0            ;X=443    X=442
  4416.     .BYTE    0*20+0            ;X=445    X=444
  4417.     .BYTE    0*20+0            ;X=447    X=446
  4418.     .BYTE    0*20+0            ;X=449    X=448
  4419.     .BYTE    5*20+0            ;X=451    X=450
  4420.     .BYTE    5*20+0            ;X=453    X=452
  4421.     .BYTE    0*20+5            ;X=455    X=454
  4422.     .BYTE    0*20+0            ;X=457    X=456
  4423.     .BYTE    5*20+0            ;X=459    X=458
  4424.     .BYTE    0*20+5            ;X=461    X=460
  4425.     .BYTE    0*20+5            ;X=463    X=462
  4426.     .BYTE    5*20+5            ;X=465    X=464
  4427.     .BYTE    0*20+5            ;X=467    X=466
  4428.     .BYTE    0*20+0            ;X=469    X=468
  4429.     .BYTE    0*20+5            ;X=471    X=470
  4430.     .BYTE    0*20+5            ;X=473    X=472
  4431.     .BYTE    0*20+5            ;X=475    X=474
  4432.     .BYTE    0*20+0            ;X=477    X=476
  4433.     .BYTE    0*20+5            ;X=479    X=478
  4434.     .BYTE    0*20+0            ;X=481    X=480
  4435.     .BYTE    0*20+0            ;X=483    X=482
  4436.     .BYTE    0*20+0            ;X=485    X=484
  4437.     .BYTE    0*20+0            ;X=487    X=486
  4438.     .BYTE    0*20+0            ;X=489    X=488
  4439.     .BYTE    0*20+0            ;X=491    X=490
  4440.     .BYTE    5*20+0            ;X=493    X=492
  4441.     .BYTE    0*20+0            ;X=495    X=494
  4442.     .BYTE    0*20+0            ;X=497    X=496
  4443.     .BYTE    0*20+0            ;X=499    X=498
  4444.     .BYTE    5*20+5            ;X=501    X=500
  4445.     .BYTE    5*20+5            ;X=503    X=502
  4446.     .BYTE    5*20+5            ;X=505    X=504
  4447.     .BYTE    5*20+5            ;X=507    X=506
  4448.     .BYTE    5*20+5            ;X=509    X=508
  4449.     .BYTE    5*20+5            ;X=511    X=510
  4450.     .BYTE    5*20+5            ;X=513    X=512
  4451.     .BYTE    5*20+0            ;X=515    X=514
  4452.     .BYTE    5*20+0            ;X=517    X=516
  4453.     .BYTE    5*20+5            ;X=519    X=518
  4454.     .BYTE    5*20+5            ;X=521    X=520
  4455.     .BYTE    5*20+5            ;X=523    X=522
  4456.     .BYTE    5*20+5            ;X=525    X=524
  4457.     .BYTE    5*20+0            ;X=527    X=526
  4458.     .BYTE    5*20+5            ;X=529    X=528
  4459.     .BYTE    5*20+5            ;X=531    X=530
  4460.     .BYTE    5*20+5            ;X=533    X=532
  4461.     .BYTE    0*20+5            ;X=535    X=534
  4462.     .BYTE    5*20+5            ;X=537    X=536
  4463.     .BYTE    5*20+0            ;X=539    X=538
  4464.     .BYTE    5*20+0            ;X=541    X=540
  4465.     .BYTE    5*20+5            ;X=543    X=542
  4466.     .BYTE    5*20+5            ;X=545    X=544
  4467.     .BYTE    5*20+5            ;X=547    X=546
  4468.     .BYTE    5*20+5            ;X=549    X=548
  4469.     .BYTE    5*20+5            ;X=551    X=550
  4470.     .BYTE    5*20+5            ;X=553    X=552
  4471.     .BYTE    5*20+0            ;X=555    X=554
  4472.     .BYTE    5*20+5            ;X=557    X=556
  4473.     .BYTE    5*20+5            ;X=559    X=558
  4474.     .BYTE    5*20+5            ;X=561    X=560
  4475.     .BYTE    5*20+5            ;X=563    X=562
  4476.     .BYTE    5*20+5            ;X=565    X=564
  4477.     .BYTE    5*20+5            ;X=567    X=566
  4478.     .BYTE    5*20+5            ;X=569    X=568
  4479.     .BYTE    5*20+5            ;X=571    X=570
  4480.     .BYTE    5*20+0            ;X=573    X=572
  4481.     .BYTE    5*20+5            ;X=575    X=574
  4482.     .BYTE    0*20+5            ;X=577    X=576
  4483.     .BYTE    0*20+5            ;X=579    X=578
  4484.     .BYTE    0*20+5            ;X=581    X=580
  4485.     .BYTE    5*20+0            ;X=583    X=582
  4486.     .BYTE    5*20+0            ;X=585    X=584
  4487.     .BYTE    5*20+5            ;X=587    X=586
  4488.     .BYTE    5*20+5            ;X=589    X=588
  4489.     .BYTE    5*20+5            ;X=591    X=590
  4490.     .BYTE    5*20+5            ;X=593    X=592
  4491.     .BYTE    5*20+5            ;X=595    X=594
  4492.     .BYTE    5*20+5            ;X=597    X=596
  4493.     .BYTE    5*20+5            ;X=599    X=598
  4494.     .BYTE    0*20+0            ;X=601    X=600
  4495.     .BYTE    0*20+0            ;X=603    X=602
  4496.     .BYTE    0*20+0            ;X=605    X=604
  4497.     .BYTE    0*20+0            ;X=607    X=606
  4498.     .BYTE    0*20+0            ;X=609    X=608
  4499.     .BYTE    0*20+0            ;X=611    X=610
  4500.     .BYTE    0*20+0            ;X=613    X=612
  4501.     .BYTE    0*20+0            ;X=615    X=614
  4502.     .BYTE    5*20+0            ;X=617    X=616
  4503.     .BYTE    5*20+0            ;X=619    X=618
  4504.     .BYTE    0*20+0            ;X=621    X=620
  4505.     .BYTE    0*20+0            ;X=623    X=622
  4506.     .BYTE    0*20+0            ;X=625    X=624
  4507.     .BYTE    0*20+0            ;X=627    X=626
  4508.     .BYTE    0*20+0            ;X=629    X=628
  4509.     .BYTE    0*20+0            ;X=631    X=630
  4510.     .BYTE    5*20+0            ;X=633    X=632
  4511.     .BYTE    0*20+0            ;X=635    X=634
  4512.     .BYTE    0*20+0            ;X=637    X=636
  4513.     .BYTE    0*20+0            ;X=639    X=638
  4514.     .BYTE    0*20+0            ;X=641    X=640
  4515.     .BYTE    0*20+0            ;X=643    X=642
  4516.     .BYTE    0*20+5            ;X=645    X=644
  4517.     .BYTE    0*20+0            ;X=647    X=646
  4518.     .BYTE    0*20+0            ;X=649    X=648
  4519.     .BYTE    0*20+5            ;X=651    X=650
  4520.     .BYTE    0*20+0            ;X=653    X=652
  4521.     .BYTE    0*20+0            ;X=655    X=654
  4522.     .BYTE    0*20+0            ;X=657    X=656
  4523.     .BYTE    0*20+0            ;X=659    X=658
  4524.     .BYTE    0*20+0            ;X=661    X=660
  4525.     .BYTE    0*20+0            ;X=663    X=662
  4526.     .BYTE    0*20+0            ;X=665    X=664
  4527.     .BYTE    0*20+0            ;X=667    X=666
  4528.     .BYTE    5*20+0            ;X=669    X=668
  4529.     .BYTE    5*20+5            ;X=671    X=670
  4530.     .BYTE    0*20+0            ;X=673    X=672
  4531.     .BYTE    0*20+0            ;X=675    X=674
  4532.     .BYTE    0*20+0            ;X=677    X=676
  4533.     .BYTE    0*20+0            ;X=679    X=678
  4534.     .BYTE    0*20+0            ;X=681    X=680
  4535.     .BYTE    0*20+0            ;X=683    X=682
  4536.     .BYTE    0*20+0            ;X=685    X=684
  4537.     .BYTE    0*20+0            ;X=687    X=686
  4538.     .BYTE    5*20+5            ;X=689    X=688
  4539.     .BYTE    0*20+5            ;X=691    X=690
  4540.     .BYTE    0*20+0            ;X=693    X=692
  4541.     .BYTE    0*20+0            ;X=695    X=694
  4542.     .BYTE    0*20+0            ;X=697    X=696
  4543.     .BYTE    0*20+0            ;X=699    X=698
  4544.     .BYTE    0*20+0            ;X=701    X=700
  4545.     .BYTE    7*20+6            ;X=703    X=702
  4546.     .BYTE    0*20+6            ;X=705    X=704
  4547.     .BYTE    5*20+0            ;X=707    X=706
  4548.     .BYTE    5*20+5            ;X=709    X=708
  4549.     .BYTE    5*20+0            ;X=711    X=710
  4550.     .BYTE    0*20+0            ;X=713    X=712
  4551.     .BYTE    5*20+0            ;X=715    X=714
  4552.     .BYTE    5*20+0            ;X=717    X=716
  4553.     .BYTE    0*20+0            ;X=719    X=718
  4554.     .BYTE    5*20+5            ;X=721    X=720
  4555.     .BYTE    5*20+5            ;X=723    X=722
  4556.     .BYTE    0*20+0            ;X=725    X=724
  4557.     .BYTE    0*20+5            ;X=727    X=726
  4558.     .BYTE    0*20+0            ;X=729    X=728
  4559.     .BYTE    5*20+0            ;X=731    X=730
  4560.     .BYTE    0*20+5            ;X=733    X=732
  4561.     .BYTE    5*20+5            ;X=735    X=734
  4562.     .BYTE    5*20+0            ;X=737    X=736
  4563.     .BYTE    0*20+0            ;X=739    X=738
  4564.     .BYTE    5*20+0            ;X=741    X=740
  4565.     .BYTE    5*20+0            ;X=743    X=742
  4566.     .BYTE    0*20+5            ;X=745    X=744
  4567.     .BYTE    0*20+0            ;X=747    X=746
  4568.     .BYTE    0*20+0            ;X=749    X=748
  4569.     .BYTE    5*20+0            ;X=751    X=750
  4570.     .BYTE    0*20+5            ;X=753    X=752
  4571.     .BYTE    0*20+0            ;X=755    X=754
  4572.     .BYTE    5*20+0            ;X=757    X=756
  4573.     .BYTE    5*20+0            ;X=759    X=758
  4574.     .BYTE    0*20+0            ;X=761    X=760
  4575.     .BYTE    0*20+0            ;X=763    X=762
  4576.     .BYTE    5*20+0            ;X=765    X=764
  4577.     .BYTE    0*20+0            ;X=767    X=766
  4578.     .BYTE    5*20+5            ;X=769    X=768
  4579.     .BYTE    5*20+0            ;X=771    X=770
  4580.     .BYTE    0*20+0            ;X=773    X=772
  4581.     .BYTE    5*20+0            ;X=775    X=774
  4582.     .BYTE    0*20+0            ;X=777    X=776
  4583.     .BYTE    5*20+0            ;X=779    X=778
  4584.     .BYTE    0*20+0            ;X=781    X=780
  4585.     .BYTE    0*20+0            ;X=783    X=782
  4586.     .BYTE    0*20+5            ;X=785    X=784
  4587.     .BYTE    0*20+0            ;X=787    X=786
  4588.     .BYTE    0*20+0            ;X=789    X=788
  4589.     .BYTE    0*20+0            ;X=791    X=790
  4590.     .BYTE    0*20+0            ;X=793    X=792
  4591.     .BYTE    0*20+0            ;X=795    X=794
  4592.     .BYTE    0*20+0            ;X=797    X=796
  4593.     .BYTE    0*20+0            ;X=799    X=798
  4594.     .BYTE    0*20+0            ;X=801    X=800
  4595.     .BYTE    0*20+0            ;X=803    X=802
  4596.     .BYTE    0*20+0            ;X=805    X=804
  4597.     .BYTE    0*20+5            ;X=807    X=806
  4598.     .BYTE    0*20+0            ;X=809    X=808
  4599.     .BYTE    0*20+0            ;X=811    X=810
  4600.     .BYTE    0*20+0            ;X=813    X=812
  4601.     .BYTE    0*20+0            ;X=815    X=814
  4602.     .BYTE    0*20+0            ;X=817    X=816
  4603.     .BYTE    0*20+0            ;X=819    X=818
  4604.     .BYTE    0*20+0            ;X=821    X=820
  4605.     .BYTE    0*20+0            ;X=823    X=822
  4606.     .BYTE    0*20+0            ;X=825    X=824
  4607.     .BYTE    5*20+0            ;X=827    X=826
  4608.     .BYTE    0*20+5            ;X=829    X=828
  4609.     .BYTE    0*20+0            ;X=831    X=830
  4610.     .BYTE    0*20+0            ;X=833    X=832
  4611.     .BYTE    0*20+0            ;X=835    X=834
  4612.     .BYTE    5*20+5            ;X=837    X=836
  4613.     .BYTE    0*20+0            ;X=839    X=838
  4614.     .BYTE    5*20+0            ;X=841    X=840
  4615.     .BYTE    0*20+5            ;X=843    X=842
  4616.     .BYTE    0*20+0            ;X=845    X=844
  4617.     .BYTE    0*20+0            ;X=847    X=846
  4618.     .BYTE    5*20+0            ;X=849    X=848
  4619.     .BYTE    5*20+5            ;X=851    X=850
  4620.     .BYTE    5*20+5            ;X=853    X=852
  4621.     .BYTE    5*20+0            ;X=855    X=854
  4622.     .BYTE    5*20+5            ;X=857    X=856
  4623.     .BYTE    5*20+5            ;X=859    X=858
  4624.     .BYTE    5*20+5            ;X=861    X=860
  4625.     .BYTE    5*20+5            ;X=863    X=862
  4626.     .BYTE    5*20+5            ;X=865    X=864
  4627.     .BYTE    5*20+5            ;X=867    X=866
  4628.     .BYTE    5*20+0            ;X=869    X=868
  4629.     .BYTE    5*20+0            ;X=871    X=870
  4630.     .BYTE    5*20+5            ;X=873    X=872
  4631.     .BYTE    0*20+5            ;X=875    X=874
  4632.     .BYTE    5*20+5            ;X=877    X=876
  4633.     .BYTE    5*20+5            ;X=879    X=878
  4634.     .BYTE    5*20+5            ;X=881    X=880
  4635.     .BYTE    5*20+5            ;X=883    X=882
  4636.     .BYTE    0*20+0            ;X=885    X=884
  4637.     .BYTE    5*20+5            ;X=887    X=886
  4638.     .BYTE    5*20+5            ;X=889    X=888
  4639.     .BYTE    5*20+5            ;X=891    X=890
  4640.     .BYTE    5*20+5            ;X=893    X=892
  4641.     .BYTE    5*20+5            ;X=895    X=894
  4642.     .BYTE    5*20+5            ;X=897    X=896
  4643.     .BYTE    5*20+5            ;X=899    X=898
  4644.     .BYTE    5*20+5            ;X=901    X=900
  4645.     .BYTE    5*20+5            ;X=903    X=902
  4646.     .BYTE    5*20+5            ;X=905    X=904
  4647.     .BYTE    5*20+5            ;X=907    X=906
  4648.     .BYTE    5*20+5            ;X=909    X=908
  4649.     .BYTE    0*20+5            ;X=911    X=910
  4650.     .EVEN                ;MAKE SURE TO BRING TO BRING BYTES BACK.
  4651.     .PAGE
  4652. ;
  4653. ;        SINE AND COSINE TABLES FROM 0 TO 359 DEGREES.
  4654. ;
  4655. SINTAB:    000000            ;    0 DEGREES.
  4656.     000436            ;    1 DEGREES.
  4657.     001074            ;    2 DEGREES.
  4658.     001531            ;    3 DEGREES.
  4659.     002167            ;    4 DEGREES.
  4660.     002624            ;    5 DEGREES.
  4661.     003261            ;    6 DEGREES.
  4662.     003715            ;    7 DEGREES.
  4663.     004350            ;    8 DEGREES.
  4664.     005003            ;    9 DEGREES.
  4665.     005435            ;   10 DEGREES.
  4666.     006066            ;   11 DEGREES.
  4667.     006516            ;   12 DEGREES.
  4668.     007146            ;   13 DEGREES.
  4669.     007574            ;   14 DEGREES.
  4670.     010220            ;   15 DEGREES.
  4671.     010644            ;   16 DEGREES.
  4672.     011266            ;   17 DEGREES.
  4673.     011707            ;   18 DEGREES.
  4674.     012326            ;   19 DEGREES.
  4675.     012744            ;   20 DEGREES.
  4676.     013360            ;   21 DEGREES.
  4677.     013772            ;   22 DEGREES.
  4678.     014402            ;   23 DEGREES.
  4679.     015010            ;   24 DEGREES.
  4680.     015414            ;   25 DEGREES.
  4681.     016016            ;   26 DEGREES.
  4682.     016416            ;   27 DEGREES.
  4683.     017014            ;   28 DEGREES.
  4684.     017407            ;   29 DEGREES.
  4685.     020000            ;   30 DEGREES.
  4686.     020366            ;   31 DEGREES.
  4687.     020752            ;   32 DEGREES.
  4688.     021333            ;   33 DEGREES.
  4689.     021712            ;   34 DEGREES.
  4690.     022265            ;   35 DEGREES.
  4691.     022636            ;   36 DEGREES.
  4692.     023204            ;   37 DEGREES.
  4693.     023547            ;   38 DEGREES.
  4694.     024107            ;   39 DEGREES.
  4695.     024443            ;   40 DEGREES.
  4696.     024775            ;   41 DEGREES.
  4697.     025323            ;   42 DEGREES.
  4698.     025646            ;   43 DEGREES.
  4699.     026165            ;   44 DEGREES.
  4700.     026501            ;   45 DEGREES.
  4701.     027012            ;   46 DEGREES.
  4702.     027316            ;   47 DEGREES.
  4703.     027620            ;   48 DEGREES.
  4704.     030115            ;   49 DEGREES.
  4705.     030407            ;   50 DEGREES.
  4706.     030675            ;   51 DEGREES.
  4707.     031157            ;   52 DEGREES.
  4708.     031435            ;   53 DEGREES.
  4709.     031707            ;   54 DEGREES.
  4710.     032155            ;   55 DEGREES.
  4711.     032417            ;   56 DEGREES.
  4712.     032655            ;   57 DEGREES.
  4713.     033106            ;   58 DEGREES.
  4714.     033334            ;   59 DEGREES.
  4715.     033555            ;   60 DEGREES.
  4716.     033772            ;   61 DEGREES.
  4717.     034202            ;   62 DEGREES.
  4718.     034406            ;   63 DEGREES.
  4719.     034606            ;   64 DEGREES.
  4720.     035001            ;   65 DEGREES.
  4721.     035170            ;   66 DEGREES.
  4722.     035352            ;   67 DEGREES.
  4723.     035527            ;   68 DEGREES.
  4724.     035700            ;   69 DEGREES.
  4725.     036044            ;   70 DEGREES.
  4726.     036203            ;   71 DEGREES.
  4727.     036336            ;   72 DEGREES.
  4728.     036464            ;   73 DEGREES.
  4729.     036605            ;   74 DEGREES.
  4730.     036722            ;   75 DEGREES.
  4731.     037031            ;   76 DEGREES.
  4732.     037134            ;   77 DEGREES.
  4733.     037232            ;   78 DEGREES.
  4734.     037323            ;   79 DEGREES.
  4735.     037407            ;   80 DEGREES.
  4736.     037466            ;   81 DEGREES.
  4737.     037541            ;   82 DEGREES.
  4738.     037606            ;   83 DEGREES.
  4739.     037646            ;   84 DEGREES.
  4740.     037702            ;   85 DEGREES.
  4741.     037730            ;   86 DEGREES.
  4742.     037752            ;   87 DEGREES.
  4743.     037766            ;   88 DEGREES.
  4744.     037776            ;   89 DEGREES.
  4745. COSTAB:    040000            ;   90 DEGREES.
  4746.     037776            ;   91 DEGREES.
  4747.     037766            ;   92 DEGREES.
  4748.     037752            ;   93 DEGREES.
  4749.     037730            ;   94 DEGREES.
  4750.     037702            ;   95 DEGREES.
  4751.     037646            ;   96 DEGREES.
  4752.     037606            ;   97 DEGREES.
  4753.     037541            ;   98 DEGREES.
  4754.     037466            ;   99 DEGREES.
  4755.     037407            ;  100 DEGREES.
  4756.     037323            ;  101 DEGREES.
  4757.     037232            ;  102 DEGREES.
  4758.     037134            ;  103 DEGREES.
  4759.     037031            ;  104 DEGREES.
  4760.     036722            ;  105 DEGREES.
  4761.     036605            ;  106 DEGREES.
  4762.     036464            ;  107 DEGREES.
  4763.     036336            ;  108 DEGREES.
  4764.     036203            ;  109 DEGREES.
  4765.     036044            ;  110 DEGREES.
  4766.     035700            ;  111 DEGREES.
  4767.     035527            ;  112 DEGREES.
  4768.     035352            ;  113 DEGREES.
  4769.     035170            ;  114 DEGREES.
  4770.     035001            ;  115 DEGREES.
  4771.     034606            ;  116 DEGREES.
  4772.     034406            ;  117 DEGREES.
  4773.     034202            ;  118 DEGREES.
  4774.     033772            ;  119 DEGREES.
  4775.     033555            ;  120 DEGREES.
  4776.     033334            ;  121 DEGREES.
  4777.     033106            ;  122 DEGREES.
  4778.     032655            ;  123 DEGREES.
  4779.     032417            ;  124 DEGREES.
  4780.     032155            ;  125 DEGREES.
  4781.     031707            ;  126 DEGREES.
  4782.     031435            ;  127 DEGREES.
  4783.     031157            ;  128 DEGREES.
  4784.     030675            ;  129 DEGREES.
  4785.     030407            ;  130 DEGREES.
  4786.     030115            ;  131 DEGREES.
  4787.     027620            ;  132 DEGREES.
  4788.     027316            ;  133 DEGREES.
  4789.     027012            ;  134 DEGREES.
  4790.     026501            ;  135 DEGREES.
  4791.     026165            ;  136 DEGREES.
  4792.     025646            ;  137 DEGREES.
  4793.     025323            ;  138 DEGREES.
  4794.     024775            ;  139 DEGREES.
  4795.     024443            ;  140 DEGREES.
  4796.     024107            ;  141 DEGREES.
  4797.     023547            ;  142 DEGREES.
  4798.     023204            ;  143 DEGREES.
  4799.     022636            ;  144 DEGREES.
  4800.     022265            ;  145 DEGREES.
  4801.     021712            ;  146 DEGREES.
  4802.     021333            ;  147 DEGREES.
  4803.     020752            ;  148 DEGREES.
  4804.     020366            ;  149 DEGREES.
  4805.     020000            ;  150 DEGREES.
  4806.     017407            ;  151 DEGREES.
  4807.     017014            ;  152 DEGREES.
  4808.     016416            ;  153 DEGREES.
  4809.     016016            ;  154 DEGREES.
  4810.     015414            ;  155 DEGREES.
  4811.     015010            ;  156 DEGREES.
  4812.     014402            ;  157 DEGREES.
  4813.     013772            ;  158 DEGREES.
  4814.     013360            ;  159 DEGREES.
  4815.     012744            ;  160 DEGREES.
  4816.     012326            ;  161 DEGREES.
  4817.     011707            ;  162 DEGREES.
  4818.     011266            ;  163 DEGREES.
  4819.     010644            ;  164 DEGREES.
  4820.     010220            ;  165 DEGREES.
  4821.     007574            ;  166 DEGREES.
  4822.     007146            ;  167 DEGREES.
  4823.     006516            ;  168 DEGREES.
  4824.     006066            ;  169 DEGREES.
  4825.     005435            ;  170 DEGREES.
  4826.     005003            ;  171 DEGREES.
  4827.     004350            ;  172 DEGREES.
  4828.     003715            ;  173 DEGREES.
  4829.     003261            ;  174 DEGREES.
  4830.     002624            ;  175 DEGREES.
  4831.     002167            ;  176 DEGREES.
  4832.     001531            ;  177 DEGREES.
  4833.     001074            ;  178 DEGREES.
  4834.     000436            ;  179 DEGREES.
  4835.     000000            ;  180 DEGREES.
  4836.     177344            ;  181 DEGREES.
  4837.     176706            ;  182 DEGREES.
  4838.     176247            ;  183 DEGREES.
  4839.     175613            ;  184 DEGREES.
  4840.     175156            ;  185 DEGREES.
  4841.     174521            ;  186 DEGREES.
  4842.     174065            ;  187 DEGREES.
  4843.     173430            ;  188 DEGREES.
  4844.     172775            ;  189 DEGREES.
  4845.     172343            ;  190 DEGREES.
  4846.     171712            ;  191 DEGREES.
  4847.     171262            ;  192 DEGREES.
  4848.     170634            ;  193 DEGREES.
  4849.     170206            ;  194 DEGREES.
  4850.     167560            ;  195 DEGREES.
  4851.     167134            ;  196 DEGREES.
  4852.     166512            ;  197 DEGREES.
  4853.     166073            ;  198 DEGREES.
  4854.     165452            ;  199 DEGREES.
  4855.     165036            ;  200 DEGREES.
  4856.     164421            ;  201 DEGREES.
  4857.     164010            ;  202 DEGREES.
  4858.     163400            ;  203 DEGREES.
  4859.     162772            ;  204 DEGREES.
  4860.     162364            ;  205 DEGREES.
  4861.     161762            ;  206 DEGREES.
  4862.     161362            ;  207 DEGREES.
  4863.     160766            ;  208 DEGREES.
  4864.     160371            ;  209 DEGREES.
  4865.     160002            ;  210 DEGREES.
  4866.     157412            ;  211 DEGREES.
  4867.     157026            ;  212 DEGREES.
  4868.     156445            ;  213 DEGREES.
  4869.     156070            ;  214 DEGREES.
  4870.     155513            ;  215 DEGREES.
  4871.     155142            ;  216 DEGREES.
  4872.     154574            ;  217 DEGREES.
  4873.     154233            ;  218 DEGREES.
  4874.     153673            ;  219 DEGREES.
  4875.     153335            ;  220 DEGREES.
  4876.     153005            ;  221 DEGREES.
  4877.     152455            ;  222 DEGREES.
  4878.     152134            ;  223 DEGREES.
  4879.     151613            ;  224 DEGREES.
  4880.     151277            ;  225 DEGREES.
  4881.     150770            ;  226 DEGREES.
  4882.     150462            ;  227 DEGREES.
  4883.     150162            ;  228 DEGREES.
  4884.     147663            ;  229 DEGREES.
  4885.     147373            ;  230 DEGREES.
  4886.     147105            ;  231 DEGREES.
  4887.     146623            ;  232 DEGREES.
  4888.     146345            ;  233 DEGREES.
  4889.     146073            ;  234 DEGREES.
  4890.     145625            ;  235 DEGREES.
  4891.     145363            ;  236 DEGREES.
  4892.     145125            ;  237 DEGREES.
  4893.     144672            ;  238 DEGREES.
  4894.     144446            ;  239 DEGREES.
  4895.     144225            ;  240 DEGREES.
  4896.     144010            ;  241 DEGREES.
  4897.     143576            ;  242 DEGREES.
  4898.     143372            ;  243 DEGREES.
  4899.     143174            ;  244 DEGREES.
  4900.     143001            ;  245 DEGREES.
  4901.     142612            ;  246 DEGREES.
  4902.     142430            ;  247 DEGREES.
  4903.     142253            ;  248 DEGREES.
  4904.     142102            ;  249 DEGREES.
  4905.     141736            ;  250 DEGREES.
  4906.     141575            ;  251 DEGREES.
  4907.     141442            ;  252 DEGREES.
  4908.     141314            ;  253 DEGREES.
  4909.     141173            ;  254 DEGREES.
  4910.     141060            ;  255 DEGREES.
  4911.     140747            ;  256 DEGREES.
  4912.     140644            ;  257 DEGREES.
  4913.     140550            ;  258 DEGREES.
  4914.     140457            ;  259 DEGREES.
  4915.     140371            ;  260 DEGREES.
  4916.     140312            ;  261 DEGREES.
  4917.     140241            ;  262 DEGREES.
  4918.     140174            ;  263 DEGREES.
  4919.     140132            ;  264 DEGREES.
  4920.     140100            ;  265 DEGREES.
  4921.     140050            ;  266 DEGREES.
  4922.     140030            ;  267 DEGREES.
  4923.     140012            ;  268 DEGREES.
  4924.     140004            ;  269 DEGREES.
  4925.     140000            ;  270 DEGREES.
  4926.     140004            ;  271 DEGREES.
  4927.     140012            ;  272 DEGREES.
  4928.     140030            ;  273 DEGREES.
  4929.     140050            ;  274 DEGREES.
  4930.     140100            ;  275 DEGREES.
  4931.     140132            ;  276 DEGREES.
  4932.     140174            ;  277 DEGREES.
  4933.     140241            ;  278 DEGREES.
  4934.     140312            ;  279 DEGREES.
  4935.     140371            ;  280 DEGREES.
  4936.     140457            ;  281 DEGREES.
  4937.     140550            ;  282 DEGREES.
  4938.     140644            ;  283 DEGREES.
  4939.     140747            ;  284 DEGREES.
  4940.     141060            ;  285 DEGREES.
  4941.     141173            ;  286 DEGREES.
  4942.     141314            ;  287 DEGREES.
  4943.     141442            ;  288 DEGREES.
  4944.     141575            ;  289 DEGREES.
  4945.     141736            ;  290 DEGREES.
  4946.     142102            ;  291 DEGREES.
  4947.     142253            ;  292 DEGREES.
  4948.     142430            ;  293 DEGREES.
  4949.     142612            ;  294 DEGREES.
  4950.     143001            ;  295 DEGREES.
  4951.     143174            ;  296 DEGREES.
  4952.     143372            ;  297 DEGREES.
  4953.     143576            ;  298 DEGREES.
  4954.     144010            ;  299 DEGREES.
  4955.     144225            ;  300 DEGREES.
  4956.     144446            ;  301 DEGREES.
  4957.     144672            ;  302 DEGREES.
  4958.     145125            ;  303 DEGREES.
  4959.     145363            ;  304 DEGREES.
  4960.     145625            ;  305 DEGREES.
  4961.     146073            ;  306 DEGREES.
  4962.     146345            ;  307 DEGREES.
  4963.     146623            ;  308 DEGREES.
  4964.     147105            ;  309 DEGREES.
  4965.     147373            ;  310 DEGREES.
  4966.     147663            ;  311 DEGREES.
  4967.     150162            ;  312 DEGREES.
  4968.     150463            ;  313 DEGREES.
  4969.     150770            ;  314 DEGREES.
  4970.     151277            ;  315 DEGREES.
  4971.     151613            ;  316 DEGREES.
  4972.     152134            ;  317 DEGREES.
  4973.     152455            ;  318 DEGREES.
  4974.     153005            ;  319 DEGREES.
  4975.     153335            ;  320 DEGREES.
  4976.     153673            ;  321 DEGREES.
  4977.     154233            ;  322 DEGREES.
  4978.     154574            ;  323 DEGREES.
  4979.     155142            ;  324 DEGREES.
  4980.     155513            ;  325 DEGREES.
  4981.     156070            ;  326 DEGREES.
  4982.     156445            ;  327 DEGREES.
  4983.     157026            ;  328 DEGREES.
  4984.     157412            ;  329 DEGREES.
  4985.     160000            ;  330 DEGREES.
  4986.     160371            ;  331 DEGREES.
  4987.     160766            ;  332 DEGREES.
  4988.     161362            ;  333 DEGREES.
  4989.     161762            ;  334 DEGREES.
  4990.     162364            ;  335 DEGREES.
  4991.     162772            ;  336 DEGREES.
  4992.     163400            ;  337 DEGREES.
  4993.     164010            ;  338 DEGREES.
  4994.     164422            ;  339 DEGREES.
  4995.     165036            ;  340 DEGREES.
  4996.     165452            ;  341 DEGREES.
  4997.     166073            ;  342 DEGREES.
  4998.     166512            ;  343 DEGREES.
  4999.     167134            ;  344 DEGREES.
  5000.     167560            ;  345 DEGREES.
  5001.     170206            ;  346 DEGREES.
  5002.     170634            ;  347 DEGREES.
  5003.     171262            ;  348 DEGREES.
  5004.     171712            ;  349 DEGREES.
  5005.     172343            ;  350 DEGREES.
  5006.     172775            ;  351 DEGREES.
  5007.     173430            ;  352 DEGREES.
  5008.     174065            ;  353 DEGREES.
  5009.     174521            ;  354 DEGREES.
  5010.     175156            ;  355 DEGREES.
  5011.     175613            ;  356 DEGREES.
  5012.     176247            ;  357 DEGREES.
  5013.     176706            ;  358 DEGREES.
  5014.     177344            ;  359 DEGREES.
  5015.     .PAGE
  5016. ;
  5017. ;        THIS IS THE SHIP BUFFER FOR STORING THE SPACE SHIP.
  5018. ;        THERE ARE TWO OF THEM TO AVOID PROBLEMS.
  5019. ;
  5020. SHIPLC:    .WORD    SHIPB1            ;BUFFER POINTERS.
  5021.     .WORD    SHIPB2
  5022. DRWSHP:    .WORD    114120            ;BASIC SHIP START.
  5023.     .WORD    170200
  5024. SHOWX:    .WORD    0
  5025. SHOWY:    .WORD    0
  5026.     .WORD    DISTOP            ;THE SUBROUTINE CALL NOW.
  5027. SHIPDP:    .WORD    0
  5028.     .WORD    DISTOP
  5029.     .WORD    0
  5030. ;
  5031. ;        ROCKET FLAME CONTROL, AND BUFFER.
  5032. ;
  5033. ONFIRE:    .WORD    DISTOP
  5034. FSUBC:    .WORD    0
  5035.     .WORD    DISTOP
  5036.     .WORD    0
  5037. ;
  5038. ;        MESSAGE DISPLAY CONTROL.
  5039. ;
  5040. INFO:    .WORD    DISTOP
  5041. SYSMES:    .WORD    0
  5042.     .WORD    DISTOP
  5043.     .WORD    0
  5044. ;
  5045. ;        THIS SECTION CONTROLS THE DUST WHEN THE
  5046. ;        ROCKET FLAME HITS THE SURFACE OF THE MOON.
  5047. ;
  5048. DRWDST:    .WORD    DISTOP
  5049. DUSTON:    .WORD    0
  5050.     .WORD    DISTOP
  5051.     .WORD    0
  5052. ;
  5053. ;        THIS SECTION DRAWS AND STORES THE MOON, WHEN NECESSARY.
  5054. ;
  5055. DRWLUN:    .WORD    DISTOP
  5056. MOONGO:    .WORD    0            ;OVERLAYED BY POINTER
  5057.     .WORD    DISTOP
  5058.     .WORD    0
  5059. SHIPB1:    
  5060.     .=.+84.
  5061. SHIPB2:
  5062.     .=.+84.
  5063. FLAMIN:
  5064.     .=.+66.
  5065. ;
  5066. ;        THIS SECTION IS WHERE THE EXPLOSION GOES (ALSO THE
  5067. ;        DUST FROM THE ROCKET ENGINE).
  5068. ;
  5069. EXLIST:
  5070.     .=.+2602.            ;IT'S BIG (241*2*2+1) BUT NOT USED
  5071.                     ;JUST TO GIVE US A SIZE FEELING.
  5072.     .=.+100.            ;ALLOCATE 100 WORDS FOR THE STACK
  5073. STACK:    .WORD                ;DO NOT PUT ANYTHING IN IT
  5074.                     ;JUST DEFINE IT.
  5075.     .PAGE
  5076. ;
  5077. ;        THIS IS THE MESSAGE THAT IS DISPLAYED WHEN
  5078. ;        STARTING UP THE FIRST TIME
  5079. ;
  5080. STARTM:    .WORD    116720
  5081.     .WORD    0.
  5082.     .WORD    650.
  5083.     .WORD    170240
  5084.     .WORD    100000
  5085.     .ASCII    '            R T - 1 1  L U N A R  L A N D E R'
  5086.     .BYTE    15,12
  5087.     .ASCII    '              -----------------------------'
  5088.     .BYTE    15,12,12,12
  5089.     .ASCII    '    ALL INTERNAL NAVIGATIONAL SYSTEMS HAVE DIED ON YOU'
  5090.     .BYTE    15,12
  5091.     .ASCII    /       IT LOOKS AS THOUGH YOU'RE GOING TO HAVE TO/
  5092.     .BYTE    15,12
  5093.     .ASCII    '             LAND THIS THING ON YOUR OWN'
  5094.     .BYTE    15,12,12
  5095.     .ASCII    '       ***** GOOD BYE, GOOD LUCK, AND SORRY  *****'
  5096.     .BYTE    0
  5097.     .=.-1
  5098.     .EVEN
  5099.     .WORD    DISJMP
  5100.     .WORD    STARTM
  5101.     .END    START            ;RESTART ADDRESS.
  5102.