Source Code
These source-code files were obtained by digitally photographing
a Solarium 55 (Apollo 6) program listing from the American Computer Museum in
Bozeman, Montana. Photography was by Ron Burkey, with assistance from
museum curator George Keremedjiev and Montana
State University curator Kim Scott. The listing originally belonged to Eldon C. Hall,
who donated it to the museum. Volunteers then manually typed in the
source code or else modified similar pre-existing Colossus 249
(Apollo 9) source files to incorporate changes, although this transcription was
principally done by Jim Lawton and corrected by Ron Burkey.
Notations on the program listing read, in part:YUL SYSTEM FOR AGC4: REVISION 0 OF PROGRAM SOLRUM55 BY NASA 1021108-021 DEC. 4, 1966Note that the date is the date of the printout, not the date of the program revision. Due to statements by Jay Sampson, the original contractor from AC Electronics who created Solarium 54 (Apollo 4) from the earlier Corona (AS-202 mission) program, it is believed that Solarium 54 and Solarium 55 (Apollo 6) are actually identical programs. The change in numbering, from 54 to 55, is believed to be for some administrative purpose. Thus, it is believed that the source-code represented here is equally appropriate for both Apollo 4 and Apollo 6 missions. |
014518,000002: ## Copyright: Public domain.
014519,000003: ## Filename: RTB_OP_CODES.agc
014520,000004: ## Purpose: Part of the source code for Solarium build 55. This
014521,000005: ## is for the Command Module's (CM) Apollo Guidance
014522,000006: ## Computer (AGC), for Apollo 6.
014523,000007: ## Assembler: yaYUL --block1
014524,000008: ## Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
014525,000009: ## Website: www.ibiblio.org/apollo/index.html
014526,000010: ## Page Scans: www.ibiblio.org/apollo/ScansForConversion/Solarium055/
014527,000011: ## Mod history: 2009-09-29 JL Adapted from corresponding Artemis072 file.
014528,000012: ## 2016-12-28 RSB Proofed comment text using octopus/ProoferComments,
014529,000013: ## and fixed errors found.
014530,000014:
Page 374 |
014532,000016:
014533,000017: 30,6252 BANK 30
014534,000018: # ROUTINE TO LOAD TIME OF DAY INTO MPAC
014535,000019:
014536,000020: 30,6252 02676 LOADTIME TC READTIME
014537,000021: 30,6253 40572 CS RUPTSTOR
014538,000022: 30,6254 50115 TS MPAC
014539,000023: 30,6255 40573 CS RUPTSTOR +1
014540,000024: 30,6256 50116 TS MPAC +1
014541,000025: 30,6257 20016 RELINT
014542,000026: 30,6260 35501 CAF ZERO
014543,000027: 30,6261 50066 TS NEWEQIND
014544,000028: 30,6262 50117 TS MPAC +2
014545,000029: 30,6263 05237 TC DPEXIT
014546,000030:
Page 375 |
014548,000032:
014549,000033: # ROUTINE TO RESET THE PUSHDOWN POUNTER
014550,000034:
014551,000035: 30,6264 40067 FRESHPD CS FIXLOC
014552,000036: 30,6265 40000 COM
014553,000037: 30,6266 50123 TS PUSHLOC
014554,000038: 30,6267 04703 TC RE-ENTER
014555,000039:
Page 376 |
014557,000041:
014558,000042: # ROUTINE TO ZERO OUT THE FIRST 38 LOCS OF A VAC AREA
014559,000043:
014560,000044: 30,6270 36302 ZEROVAC CAF 37DEC
014561,000045: 30,6271 50102 ZVLOOP TS TEM2
014562,000046: 30,6272 60067 AD FIXLOC
014563,000047: 30,6273 50001 TS Q
014564,000048: 30,6274 35501 CAF ZERO
014565,000049: 30,6275 20001 INDEX Q
014566,000050: 30,6276 50000 TS 0
014567,000051: 30,6277 10102 CCS TEM2
014568,000052: 30,6300 06271 TC ZVLOOP
014569,000053: 30,6301 04703 TC RE-ENTER
014570,000054:
014571,000055: 30,6302 00045 37DEC DEC 37 B-14
014572,000056:
Page 377 |
014574,000058:
014575,000059: # ROUTINE TO CONVERT IS COMP. NOS. TO 1S COMP.
014576,000060:
014577,000061: 30,6303 10115 CDULOGIC CCS MPAC # THIS BASIC ROUTINE TESTS CDU ANGLES FOR
014578,000062: 30,6304 06311 TC CDULOG1 # +OR-SIGN INCLUDING ZERO AND FORMS A DP
014579,000063: 30,6305 06311 TC CDULOG1 # NUMBER CORRESPONDING TO ANGLE
014580,000064: 30,6306 06307 TC +1
014581,000065: 30,6307 44522 CS HALF # USE SMOVE 1
014582,000066: 30,6310 06312 TC +2 # RTB
014583,000067: 30,6311 45501 CDULOG1 CS ZERO # CDUXYZ
014584,000068: 30,6312 30034 XCH OVCTR # CDULOGIC
014585,000069: 30,6313 30115 XCH MPAC
014586,000070: 30,6314 25777 EXTEND
014587,000071: 30,6315 44522 MP HALF
014588,000072: 30,6316 30034 XCH OVCTR
014589,000073: 30,6317 60003 AD LP
014590,000074: 30,6320 30116 XCH MPAC +1
014591,000075: 30,6321 30034 XCH OVCTR
014592,000076: 30,6322 30115 XCH MPAC
014593,000077: 30,6323 05237 TC DPEXIT
014594,000078:
Page 378 |
014596,000080:
014597,000081: # ROUTINE TO CONVERT 1S COMP. NOS. TO 2S COMP.
014598,000082:
014599,000083: 30,6324 35501 1STO2S CAF ZERO
014600,000084: 30,6325 30116 XCH MPAC +1
014601,000085: 30,6326 60000 DOUBLE
014602,000086: 30,6327 50034 TS OVCTR
014603,000087: 30,6330 35501 CAF ZERO
014604,000088: 30,6331 60115 AD MPAC
014605,000089: 30,6332 60115 AD MPAC
014606,000090: 30,6333 10000 CCS A
014607,000091: 30,6334 64516 AD ONE
014608,000092: 30,6335 06337 TC +2
014609,000093: 30,6336 40000 COM
014610,000094: 30,6337 50115 ZYXR TS MPAC # AND MAYBE OVERFLOW.
014611,000095: 30,6340 05237 TC DPEXIT
014612,000096:
014613,000097: 30,6341 20000 INDEX A # HANDLE OVERFLOW IN STANDARD ANGULAR WAY.
014614,000098: 30,6342 34477 CAF LIMITS
014615,000099: 30,6343 60115 AD MPAC # GUARANTEED NO OVERFLOW.
014616,000100: 30,6344 06337 TC ZYXR
014617,000101:
Page 379 |
014619,000103:
014620,000104: 30,6345 20017 READPIPS INHINT
014621,000105: 30,6346 40044 CS PIPAX
014622,000106: 30,6347 40000 CS A
014623,000107: 30,6350 20067 INDEX FIXLOC
014624,000108: 30,6351 50040 TS VAC
014625,000109: 30,6352 40045 CS PIPAY
014626,000110: 30,6353 40000 CS A
014627,000111: 30,6354 20067 INDEX FIXLOC
014628,000112: 30,6355 50042 TS VAC +2
014629,000113: 30,6356 40046 CS PIPAZ
014630,000114: 30,6357 40000 CS A
014631,000115: 30,6360 20067 INDEX FIXLOC
014632,000116: 30,6361 50044 TS VAC +4
014633,000117: 30,6362 20016 RELINT
014634,000118: 30,6363 35501 CAF ZERO
014635,000119: 30,6364 20067 INDEX FIXLOC
014636,000120: 30,6365 50041 TS VAC +1
014637,000121: 30,6366 20067 INDEX FIXLOC
014638,000122: 30,6367 50043 TS VAC +3
014639,000123: 30,6370 20067 INDEX FIXLOC
014640,000124: 30,6371 50045 TS VAC +5
014641,000125: 30,6372 50066 TS NEWEQIND # LOAD INDICATOR OFF.
014642,000126: 30,6373 45501 VMODE CS ZERO
014643,000127: 30,6374 05240 TC DPEXIT +1
014644,000128:
014645,000129:
014646,000130:
014647,000131: 30,6375 20067 PULSEIMU INDEX FIXLOC # ADDRESS OF GYRO COMMANDS SHOULD BE IN X1
014648,000132: 30,6376 40046 CS X1
014649,000133: 30,6377 40000 COM
014650,000134: 30,6400 05654 TC BANKCALL
014651,000135: 30,6401 31433 CADR GYRODPNT
014652,000136:
014653,000137: 30,6402 04703 TC RE-ENTER
014654,000138:
Page 380 |
014656,000140:
014657,000141: 30,6403 05654 SGNAGREE TC BANKCALL
014658,000142: 30,6404 07154 CADR TPAGREE
014659,000143: 30,6405 05237 TC DPEXIT
014660,000144:
014661,000145:
014662,000146:
014663,000147: # ROUTINE TO COMPLETE OPTICS TRUNNION ANGLE CONVERSION FROM COUNTER
014664,000148: # READING TO DP REVOLUTIONS. CALLS TO TRUNLOG SHOULD BE IMMEDIATELY
014665,000149: # PRECEDED BY A CALL TO CDULOGIC. (NO NEED TO CHECK SXT POWER-ON BIT.)
014666,000150: 30,6406 36414 TRUNLOG CAF 10DEGS # CORRECT FOR 20 DEG OFFSET (CDULOGIC
014667,000151: 30,6407 60115 AD MPAC # ALREADY SHIFTED IT RIGHT ONE) AND SHIFT
014668,000152: 30,6410 50115 TS MPAC # RIGHT TWO ADDITIONAL PLACES.
014669,000153: 30,6411 34502 CAF QUARTER
014670,000154: 30,6412 05416 TC SHORTMP
014671,000155: 30,6413 04024 TC DANZIG # WITH PD IF AT END W/ NO ADDRESSES.
014672,000156:
014673,000157: 30,6414 07020 10DEGS DEC 3600 B-14 # HALF OF SXT TRUNION OFFSET
014674,000158:
Page 381 |
014676,000160:
014677,000161: 30,6415 36435 INCRCDUS CAF LOCTHETA
014678,000162: 30,6416 50077 TS BUF
014679,000163: 30,6417 35503 CAF TWO
014680,000164: 30,6420 50100 INCRCDU2 TS BUF +1
014681,000165: 30,6421 60000 DOUBLE
014682,000166: 30,6422 60070 AD VACLOC
014683,000167: 30,6423 20000 INDEX A
014684,000168: 30,6424 40000 CS 0
014685,000169: 30,6425 40000 COM
014686,000170: 30,6426 05654 TC BANKCALL
014687,000171: 30,6427 30361 CADR CDUINC
014688,000172:
014689,000173: 30,6430 10077 CCS BUF
014690,000174: 30,6431 50077 TS BUF
014691,000175: 30,6432 10100 CCS BUF +1
014692,000176: 30,6433 06420 TC INCRCDU2
014693,000177: 30,6434 06373 TC VMODE
014694,000178:
014695,000179: 30,6435 00702 LOCTHETA ADRES THETAD +2
014696,000180:
Page 382 |
014698,000182:
014699,000183: # LOG FUNCTION SUBROUTINE
014700,000184:
014701,000185: # INPUT... X (IN IMPAC)
014702,000186: # OUTPUT... -LN(X)/32 ( IN MPAC. SCALED BY 32TO FIT LOG OF 2EXP-28.
014703,000187:
014704,000188: 30,6436 06563 LOG TC SWAPLOC # CALLED BY RTB LOG
014705,000189: 30,6437 04000 TC INTPRET
014706,000190:
014707,000191: 30,6440 47574 NOLOD 2 # GENERATES LOG BY SHIFTING ARG UNTIL
014708,000192: 30,6441 57726 TSLC BDSU # IT LIES BETWEEN .5 AND1. THE LOG OF
014709,000193: 30,6442 77576 EXIT # THIS PART IS FOUND AND THE LOG OF THE
014710,000194: # SHIFTED PART IS COMPUTED AND ADDED IN.
014711,000195: 30,6443 00040 31D # SHIFT COUNT STORED IN LOC 31 OF VAC AREA
014712,000196: 30,6444 21043 NEARONE
014713,000197:
014714,000198: 30,6445 05554 TC POLY # GETS LOG OF PRINCIPLE PART.
014715,000199: 30,6446 00006 DEC 6 B-14
014716,000200: 30,6447 00000 00000 2DEC 0 B-28
014717,000201: 30,6451 01001 14636 2DEC .031335467
014718,000202: 30,6453 00325 07310 2DEC .0130145859
014719,000203: 30,6455 00541 16735 2DEC .0215738898
014720,000204: 30,6457 35501 CAF ZERO
014721,000205: 30,6460 50117 TS MPAC +2
014722,000206: 30,6461 36502 CAF CLOG1/2 +1
014723,000207: 30,6462 30116 XCH MPAC +1
014724,000208: 30,6463 50100 TS LOGTEM +1
014725,000209: 30,6464 36501 CAF CLOG1/2
014726,000210: 30,6465 30115 XCH MPAC
014727,000211: 30,6466 30077 XCH LOGTEM
014728,000212: 30,6467 20067 INDEX FIXLOC
014729,000213: 30,6470 40037 CS 31D # LOAD POSITIVE SHIFT COUNT IN A.
014730,000214: 30,6471 05422 TC SHORTMP2 # MULTIPLY BY SHIFT COUNT.
014731,000215:
014732,000216: 30,6472 30117 XCH MPAC +2
014733,000217: 30,6473 30116 XCH MPAC +1
014734,000218: 30,6474 30115 XCH MPAC # RESULT WAS IN MPAC +1 AND MPAC +2.
014735,000219: 30,6475 05171 TC DAD # ADD IN PREVIOUS RESULT. LEFT IN LOGTEM.
014736,000220: 30,6476 00077 ADRES LOGTEM
014737,000221: 30,6477 06563 TC SWAPLOC
014738,000222: 30,6500 05237 TC DPEXIT
014739,000223:
014740,000224: 30,6501 00542 34414 CLOG1/2 2DEC .0216608494
014741,000225:
Page 383 |
014743,000227:
014744,000228: # SUBROUTINE TO COMPUTE THE ARCTAN OF THE RATIO OF TWO FUNCTIONS.
014745,000229:
014746,000230: # CALLED AS THOUGH A BASIC SUBR... RTB ARCTAN
014747,000231:
014748,000232: 30,6503 06563 ARCTAN TC SWAPLOC # ARCTAN COMPUTES ARCTAN(VACZ/VACX)
014749,000233: 30,6504 04000 TC INTPRET # ---------
014750,000234: 30,6505 51176 INATAN DSQ 0 # RESULT HAS VALUE BETWEEN + AND - 1/2
014751,000235: 30,6506 00045 VACZ # (180 DEG. SCALED) IS LEFT IN MPAC.
014752,000236:
014753,000237: 30,6507 51172 DSQ 4
014754,000238: 30,6510 70746 DAD BOV
014755,000239: 30,6511 47653 BZE SQRT
014756,000240: 30,6512 61746 BDDV BOV
014757,000241: 30,6513 56713 TSRT ASIN
014758,000242: 30,6514 00041 VACX
014759,000243: 30,6515 77777 -
014760,000244: 30,6516 20547 2BIG
014761,000245: 30,6517 20553 ATAN0/0
014762,000246: 30,6520 00045 VACZ
014763,000247: 30,6521 20557 ATAN=90
014764,000248: 30,6522 00002 1 # AND PUSH IT DOWN
014765,000249:
014766,000250: 30,6523 73774 BMN 2
014767,000251: 30,6524 41423 LODON DMOVE
014768,000252: 30,6525 77576 EXIT
014769,000253: 30,6526 00041 VACX
014770,000254: 30,6527 20534 NEGVX
014771,000255: 30,6530 77777 - # (INACTIVE NEEDED FOR PUSH-UP).
014772,000256:
014773,000257: 30,6531 06563 ATANDUN TC SWAPLOC
014774,000258: 30,6532 05237 TC DPEXIT
014775,000259:
014776,000260:
014777,000261:
014778,000262: 30,6533 47174 NEGVX COMP 2 # IF VACX NEGATIVE, CHNAGE RESULT.
014779,000263: 30,6534 43742 BPL DAD
014780,000264: 30,6535 76576 RTB
014781,000265: 30,6536 77777 -
014782,000266: 30,6537 20543 NEGOUT
014783,000267: 30,6540 21174 HALVE
014784,000268: 30,6541 20532 ATANDUN
014785,000269: 30,6542 47575 NEGOUT NOLOD 1
014786,000270: 30,6543 66771 DSU RTB
014787,000271: 30,6544 21174 HALVE
014788,000272: 30,6545 20532 ATANDUN
014789,000273:
014790,000274: 30,6546 47575 2BIG NOLOD 1
014791,000275: 30,6547 45772 VSRT ITC
014792,000276: 30,6550 00002 1
014793,000277: 30,6551 20506 INATAN
Page 384 |
014795,000279:
014796,000280: 30,6552 45175 ATAN0/0 DMOVE 1
014797,000281: 30,6553 76576 RTB
014798,000282: 30,6554 21057 3ZEROS # WHAT SHOULD ARCTAN(0/0) =
014799,000283: 30,6555 20532 ATANDUN
014800,000284:
014801,000285: 30,6556 53775 ATAN=90 SIGN 1
014802,000286: 30,6557 76576 RTB
014803,000287: 30,6560 21055 FOURTH
014804,000288: 30,6561 00045 VACZ
014805,000289: 30,6562 20532 ATANDUN
014806,000290:
Page 385 |
014808,000292:
014809,000293: # BASIC SUBROUTINE TO SAVE INTERPRETER REGISTERS (SAME BANK AS RTBS).
014810,000294:
014811,000295: 30,6563 30120 SWAPLOC XCH LOC # SUBROUTINE TO SWAP LOC, ADRLOC, AND
014812,000296: 30,6564 20067 INDEX FIXLOC # ORDER REGISTERS WITH LOCATIONS 28,
014813,000297: 30,6565 30034 XCH 28D # 29, AND 30 IN TEMP AREA.
014814,000298: 30,6566 50120 TS LOC
014815,000299: 30,6567 30121 XCH ADRLOC # USEFUL FOR USING INTERPRETER IN SUBROUT
014816,000300: 30,6570 20067 INDEX FIXLOC # AND THEN ABLE TO CONTINUE IN MIDDLE OF
014817,000301: 30,6571 30035 XCH 29D # CURRENT EQUATIONS.
014818,000302: 30,6572 50121 TS ADRLOC # USE... TC SWAPLOC
014819,000303: 30,6573 40061 CS BANKSET # PACK INTERPRETIVE BANK AND ORDER IN 30D.
014820,000304: 30,6574 60063 AD ORDER
014821,000305: 30,6575 20067 INDEX FIXLOC # .........
014822,000306: 30,6576 30036 XCH 30D # TC SWAPLOC
014823,000307: 30,6577 50063 TS ORDER # TC DANZIG
014824,000308: 30,6600 74720 MASK LOW7
014825,000309: 30,6601 30063 XCH ORDER
014826,000310: 30,6602 72261 MASK BANKMASK
014827,000311: 30,6603 40000 COM
014828,000312: 30,6604 50061 TS BANKSET
014829,000313: 30,6605 00001 TC Q
014830,000314:
Page 386 |
014832,000316:
014833,000317: # SUBROUTINE TO SET MPACS TO POS OR NEG MAX DEPENDING ON SIGN MPAC
014834,000318: 30,6606 10115 SIGNMPAC CCS MPAC
014835,000319: 30,6607 06621 TC SETPOS
014836,000320: 30,6610 06621 TC SETPOS
014837,000321: 30,6611 06612 TC +1
014838,000322: 30,6612 34500 CAF NEGSIGN
014839,000323: 30,6613 50115 TS MPAC
014840,000324: 30,6614 50116 TS MPAC +1
014841,000325: 30,6615 50117 TS MPAC +2
014842,000326: 30,6616 35501 CAF ZERO
014843,000327: 30,6617 50066 TS NEWEQIND
014844,000328: 30,6620 05237 TC DPEXIT
014845,000329:
014846,000330: 30,6621 34476 SETPOS CAF POSMAX
014847,000331: 30,6622 06613 TC -7
014848,000332:
Page 387 |
014850,000334:
014851,000335: 30,6623 35503 V1STO2S CAF TWO # THIS ROUTINE TAKES GIMBAL ANGLES SCALED
014852,000336: 30,6624 50071 TS VBUF # 2PI IN THE VAC AND LEAVES 2S COMPLIMENT
014853,000337: 30,6625 60000 DOUBLE # ANSWERS IN MPAC.....MPAC +2
014854,000338: 30,6626 60070 AD VACLOC # BASE ADDRESS OF VECTOR ACCUMULATOR
014855,000339: 30,6627 50072 TS VBUF +1
014856,000340: 30,6630 20072 INDEX VBUF +1
014857,000341: 30,6631 40001 CS Q
014858,000342: 30,6632 40000 COM
014859,000343: 30,6633 60000 DOUBLE
014860,000344: 30,6634 50034 TS OVCTR # SKIPS ON OVERFLOW
014861,000345: 30,6635 35501 CAF ZERO
014862,000346: 30,6636 20072 INDEX VBUF +1
014863,000347: 30,6637 60000 AD A
014864,000348: 30,6640 20072 INDEX VBUF +1
014865,000349: 30,6641 60000 AD A
014866,000350: 30,6642 10000 CCS A # TEZT FOR NEGATIVE MAJOR PART
014867,000351: 30,6643 64516 AD ONE
014868,000352: 30,6644 06646 TC +2
014869,000353: 30,6645 40000 COM
014870,000354: 30,6646 20071 ZYXW INDEX VBUF
014871,000355: 30,6647 50115 TS MPAC
014872,000356: 30,6650 06656 TC ZYXWV
014873,000357: 30,6651 20000 INDEX A
014874,000358: 30,6652 34477 CAF LIMITS # NORMAL PROCEDURE FOR ANGLE OVERFLOW
014875,000359: 30,6653 20071 INDEX VBUF
014876,000360: 30,6654 60115 AD MPAC
014877,000361: 30,6655 06646 TC ZYXW
014878,000362:
014879,000363: 30,6656 10071 ZYXWV CCS VBUF
014880,000364: 30,6657 06624 TC V1STO2S +1
014881,000365: 30,6660 50066 TS NEWEQIND
014882,000366: 30,6661 45503 CS TWO
014883,000367: 30,6662 05240 TC DPEXIT +1
014884,000368: 30,6663 35503 V2STOD1S CAF TWO # THIS ROUTINE TAKES CDU ANGLES IN MPAC...
014885,000369: 30,6664 50071 TS VBUF # MPAC +2 AND CONVERTS TO ANGLES SCALED
014886,000370: 30,6665 60000 DOUBLE # 2PI IN THE VAC LOCATIONS
014887,000371: 30,6666 60070 AD VACLOC
014888,000372: 30,6667 50072 TS VBUF +1
014889,000373:
014890,000374:
014891,000375:
014892,000376: 30,6670 20071 INDEX VBUF
014893,000377: 30,6671 40115 CS MPAC
014894,000378: 30,6672 25777 EXTEND
014895,000379: 30,6673 44520 MP NEG1/2
014896,000380: 30,6674 50073 TS VBUF +2 # UNCORRECTED UPPER PARTS
014897,000381: 30,6675 10003 CCS LP # TEST SIGN OF LOWER WORD
014898,000382: 30,6676 35501 CAF ZERO
014899,000383: 30,6677 06702 TC +3 # POSITIVE CASE OK
014900,000384: 30,6700 06701 TC +1
Page 388 |
014902,000386: 30,6701 44522 CS HALF # NEGATIVE CASE
014903,000387: 30,6702 60003 AD LP # CORRECT LOWER WORD
014904,000388: 30,6703 20072 INDEX VBUF +1
014905,000389: 30,6704 50001 TS Q # STORE LOWER WORD
014906,000390: 30,6705 35501 CAF ZERO # DEAL WITH OVERFLOW STANDARD WAY
014907,000391: 30,6706 60073 AD VBUF +2
014908,000392: 30,6707 20072 INDEX VBUF +1
014909,000393: 30,6710 50000 TS A # STORE UPPER WORD
014910,000394:
014911,000395: 30,6711 10071 CCS VBUF
014912,000396: 30,6712 06664 TC V2STOD1S +1
014913,000397:
014914,000398: 30,6713 45501 CS ZERO
014915,000399: 30,6714 50065 TS MODE
014916,000400: 30,6715 04024 TC DANZIG
014917,000401:
Page 389 |
014919,000403:
014920,000404: # ROUTINE TO FREE DSKY
014921,000405:
014922,000406:
014923,000407:
014924,000408: 30,6716 03362 DSPFREE TC FREEDSP
014925,000409: 30,6717 04703 TC RE-ENTER
014926,000410:
Page 390 |
014928,000412:
014929,000413: # FINAGLE TO GET OGC CORRECTED TO NEAREST POINT ON 16 SPEED.
014930,000414:
014931,000415: 30,6720 41520 CDUXFIX CS OGC # INTERPRETIVE SCALING. (REVS)
014932,000416: 30,6721 25777 EXTEND
014933,000417: 30,6722 44503 MP BIT12 # MULTIPLY BY 1/8 TH.
014934,000418: 30,6723 50116 TS MPAC +1 # SAVE RESULT.
014935,000419:
014936,000420: 30,6724 34504 CAF BIT11 # 1/16 TH.
014937,000421: 30,6725 60700 AD THETAD # TO FIND NEAREST ZERO POINT.
014938,000422: 30,6726 76771 MASK HI4 # DROPS BACK TO LOWER (MORE NEG) 1/8TH.
014939,000423: 30,6727 51450 TS K1ROLL
014940,000424: 30,6730 06733 TC +3 # SKIPS THIS IF ADDITION OVERFLEW.
014941,000425: 30,6731 34476 CAF POSMAX # IN THAT CASE, USE POSMAX.
014942,000426: 30,6732 51450 TS K1ROLL
014943,000427:
014944,000428: 30,6733 41450 CS K1ROLL # THE CURRENT NEAREST ZERO POINT ON 16 SPD
014945,000429: 30,6734 60700 AD THETAD # DELTA FROM ZERO POINT.
014946,000430: 30,6735 60116 AD MPAC +1 # MINUS NEW COMMAND
014947,000431: # A = DELTHETAD -DELNEWCOMMAND
014948,000432: 30,6736 64504 AD BIT11 # PLUS 1/16 TH. (180 DEG SCALED.)
014949,000433: 30,6737 10000 CCS A # IF NEG, CHANGE IS MORE THAN + 180 DEG.
014950,000434: 30,6740 06751 TC CHECKNEG # OK, CHECK OTHER WAY.
014951,000435: 30,6741 74000 NEG1/8+1 OCT 74000
014952,000436: 30,6742 44503 CS BIT12 # CHANGE TOO BIG, MOVE TO NEXT LOWER 0-PT.
014953,000437: 30,6743 61450 NEWBIAS AD K1ROLL # (NEG ZERO OF CCS COMES HERE ALSO, SO..)
014954,000438: 30,6744 51450 TS K1ROLL
014955,000439: 30,6745 06756 TC GETNUOGC # SKIPPING ON OVERFLOW.
014956,000440:
014957,000441: 30,6746 20000 INDEX A
014958,000442: 30,6747 44477 CS LIMITS
014959,000443: 30,6750 06744 TC NEWBIAS +1 # AND SET PROPER LIMIT VALUE.
014960,000444:
014961,000445: 30,6751 66741 CHECKNEG AD NEG1/8+1
014962,000446: 30,6752 10000 CCS A # CHECK OTHER SIDE.
014963,000447: 30,6753 34503 CAF BIT12 # ADD 108 TH TO K1ROLL.
014964,000448: 30,6754 06743 TC NEWBIAS # (+ 0 IMPOSSIBLE.)
014965,000449: 30,6755 06756 TC +1 # NO NEED TO CHANGE BIAS.
014966,000450:
014967,000451: 30,6756 40116 GETNUOGC CS MPAC +1 # NEW DELTA.
014968,000452: 30,6757 61450 AD K1ROLL # AS MODIFIES IF IT WAS NEC.
014969,000453: 30,6760 50115 TS MPAC
014970,000454: 30,6761 06765 TC +4 # DETECT OVERFLOW.
014971,000455:
014972,000456: 30,6762 20000 INDEX A
014973,000457: 30,6763 34477 CAF LIMITS # GO TO POSMAX FROM NEGMAX. (AND VICEVERSA
014974,000458: 30,6764 60115 AD MPAC # AND GET NEW ANGLE.
014975,000459:
014976,000460: 30,6765 25777 EXTEND
014977,000461: 30,6766 44501 MP BIT14 # RESCALE TO REVS.
014978,000462: 30,6767 51520 TS OGC
Page 391 |
014980,000464: 30,6770 04703 TC RE-ENTER # TO NEXT EQUATION WITHOUT PUSHING DOWN.
014981,000465:
014982,000466:
014983,000467:
014984,000468: 30,6771 74000 HI4 OCT 74000
End of include-file RTB_OP_CODES.agc. Parent file is MAIN.agc