# Copyright: Public domain. # Filename: P20-P25.agc # Purpose: Part of the source code for Colossus 2A, AKA Comanche 055. # It is part of the source code for the Command Module's (CM) # Apollo Guidance Computer (AGC), for Apollo 11. # Assembler: yaYUL # Contact: Ron Burkey . # Website: www.ibiblio.org/apollo. # Pages: 562-534 # Mod history: 2009-05-10 RSB Adapted from the Colossus249/ file # of the same name, using Comanche055 page # images. # 2009-05-20 RSB Corrections: P2OS -> P20S, STO -> STQ, # GOTOPOOH -> GOTOP00H, a duplicated EXTEND # was fixed, P23.10 -> R23.10, # S22B0X44 -> S22BOX44, S22SUBSCL -> 22SUBSCL, # S22DPP -> S22DSPP, changed some instructions in # P23.152. # # This source code has been transcribed or otherwise adapted from digitized # images of a hardcopy from the MIT Museum. The digitization was performed # by Paul Fjeld, and arranged for by Deborah Douglas of the Museum. Many # thanks to both. The images (with suitable reduction in storage size and # consequent reduction in image quality as well) are available online at # www.ibiblio.org/apollo. If for some reason you find that the images are # illegible, contact me at info@sandroid.org about getting access to the # (much) higher-quality images which Paul actually created. # # Notations on the hardcopy document read, in part: # # Assemble revision 055 of AGC program Comanche by NASA # 2021113-051. 10:28 APR. 1, 1969 # # This AGC program shall also be referred to as # Colossus 2A # Page 562 # RENDEZVOUS NAVIGATION PROGRAM 20 # # PROGRAM DESCRIPTION # # MOD NO -- 1 # MOD BY -- N. BRODEUR # # FUNCTIONAL DESCRIPTION # # TO CONTROL THE CSM ATTITUDE AND OPTICS TO ACQUIRE THE LEM IN THE S+T # FIELD AND TO POINT THE CSM TRANSPONDER AT THE LEM. TO UPDATE EITHER THE # LEM OR CSM STATE VECTOR (AS SPECIFIED BY THE ASTRONAUT BY THE DSKY # ENTRY) ON THE BASIS OF OPTICAL TRACKING DATA (REQUESTED BY DSKY) # # CALLING SEQUENCE -- # # ASTRONAUT REQUEST THROUGH DSKY V37E20E # # SUBROUTINES CALLED # # R02BOTH (IMU STATUS CHECK) BANKCALL # FLAGUP 2PHCHNG LOADTIME # R61CSM (PREFERRED TRACKING ATTITUDE) FLAGDOWN # R52 (AUTO OPTICS POSITIONING ROUT) SETINTG # R22 (REND TRACK DATA PROC ROUT) PRIOCHNG # ENDOFJOB INTEGRV GRP2PC # INTPRET MKRLEES FINDVAC # # NORMAL EXIT MODES -- # # P20 MAY BE TERMINATED IN TWO WAYS -- ASTRONAUT SELECTION OF IDLING # PROGRAM (P00) BY KEYING V37E00E OR BY KEYING IN V56E # # ALARM OR ABORT EXIT MODES -- # # NONE DIRECTLY FROM P20 # # OUTPUT # # TRKMKCNT = NO OF RENDEZVOUS TRACKING MARKS TAKEN (COUNTER) # VHFCNT = NO OF VHF RANGING MARKS INCORPORATED (COUNTER) # # FLAGS SET + RESET # # RNDVZFLG,VEHUPFLG,UPDATFLG,TRACKFLG,TARG1FLG # HOLDFLAG,WBODY,WBODY1,WBODY2,DELCDUX,DELCDUY,DELCDUZ # STIKFLAG,PRFTRKAT,VINTFLAG,DIM0FLAG,R60FLAG,R61CNTR BANK 33 SETLOC P20S BANK EBANK= ESTROKER COUNT* $$/P20 PROG20 TC BANKCALL CADR R02BOTH # IMU STATUS CHECK # BLOCKING OF UPLINK IS DONE BY UPLINK PRG CAF ZERO TS TRKMKCNT # ZERO REND TRACKING MARK COUNTER TS VHFCNT # ZERO REND VHF RNG MRK COUNTER TC UPFLAG # SET PREF TRACK ATT FLAG ADRES PRFTRKAT # BIT 10 FLAG 5 TC DOWNFLAG # LEM TO BE UPDATED. VEHUPFLG RESET. ADRES VEHUPFLG # BIT 8 FLAG 1 # Page 563 TC UPFLAG # SET TRACKFLAG ADRES TRACKFLG # BIT 5 FLAG 1 TC UPFLAG # SET UPDATFLG ADRES UPDATFLG # BIT 7 FLAG 1 TC UPFLAG # SET RNDVZFLG ADRES RNDVZFLG # BIT 7 FLAG 0 TC 2PHSCHNG OCT 4 OCT 05022 OCT 26000 TC INTPRET RTB LOADTIME STCALL MARKTIME SETINTG # SET INTEGRATION FLAGS BOFF SET RENDWFLG P20.1 DIM0FLAG # SET TO INTEGRATE THE W MATRIX P20.1 BON CLEAR VEHUPFLG P20.2 VINTFLAG # SET FOR LM INTEGRATION P20.2 CALL INTEGRV CALL GRP2PC # GROUP 2 PHASE CHANGE CALL SETINTG # SET INTEGRATION FLAGS BOFF CLEAR VEHUPFLG P20.3 VINTFLAG # SET FOR LM INTEGRATION P20.3 CALL INTEGRV EXIT CAF PRIO26 TC FINDVAC EBANK= MRKBUF2 2CADR R22 TC 2PHSCHNG OCT 00072 OCT 00111 PIKUP20 CAF PRIO14 # ALLOW HIGHER PRIO THAN LAMBERT TC PRIOCHNG CAF BIT5 # IS TRACK FLAG SET MASK STATE +1 EXTEND BZF ENDOFJOB # NO # Page 564 CAF BIT13 MASK STATE +3 # IS REFSMFLG SET EXTEND BZF ENDOFJOB CAF ZERO TS R61CNTR # INITIALIZE R61 COUNTER TC BANKCALL CADR R61CSM EBANK= QMIN CAF EBANK5 TS EBANK TC UPFLAG # SET TARGET FLAG TO LEM ADRES TARG1FLG # BIT 10 FLAG 1 P20R52JB TC INTPRET CALL R52 # SET UP AUTO OPTICS JOB EXIT TC BANKCALL CADR MKRLEES CAF ONE # HOLD PRESENT ATTITUDE TS HOLDFLAG TC ENDOFJOB OCT203 OCT 00203 FIRST3 EQUALS FURST3 # Page 565 # ORBITAL NAVIGATION PROGRAM 22 BANK 31 SETLOC P20S1 BANK EBANK= LANDMARK COUNT* $$/P22 PROG22 TC DOWNFLAG # RESET RNDVZFLG BIT 7 FLAG 0 ADRES RNDVZFLG TC BANKCALL CADR R02BOTH # IMU STATUS CHECK TC INTPRET # COMPUTE ANGLE BETWEEN Y AND VXR SM RTB LOADTIME STCALL TDEC1 CSMCONIC # INTEGRATE TO PRESENT TIME VLOAD VXV # CROSS PRODUCT BETWEEN V AND R VATT RATT UNIT DOT REFSMMAT +6 ABS SL1 ARCCOS STORE +MGA CLEAR EXIT RENDWFLG CAF V06N45B TC BANKCALL CADR GOFLASHR TC GOTOP00H # TERM P22 TC PROG22A # PROC TC -5 # ENTER CAF THREE TC BLANKET # BLANK OUT R1 + R2 TC ENDOFJOB PROG22A CS PRIO7 # RESULT=70777 SET OFFSET NO.=0 MASK LANDMARK TS LANDMARK TC INTPRET CLEAR P22MKFLG SET BOFF ERADFLAG CMOONFLG PROG22B # EARTH SET # MOON LUNAFLAG DLOAD CALL # MPAC=V05N70,MPAC+1=NONZERO FOR N70 V05N7022 # Page 566 S22N7071 GOTO CALLR52 PROG22B CLEAR SET # EARTH ORBIT LUNAFLAG KNOWNFLG CALL # GET LAT/LONG/ALT FROM ASTRO P22SUBRB CALLR52 EXIT TC 2PHSCHNG OCT 00004 OCT 05022 OCT 13000 CAF FIVE TS MARKINDX # SET MARK INDEX=5 FOR R52 TC UPFLAG ADRES TARG2FLG # SET FOR SIGHTING LMK TC DOWNFLAG ADRES TARG1FLG # CLEAR FOR NON-LEM TC INTPRET CALL R52 DOV5N71 SLOAD CALL # MPAC=V05N71,MPAC+1=0 FOR N71 V05N7122 S22N7071 PROG22C LXC,2 SLOAD* MARKSTAT QPRET,2 STCALL 8NN S22.1 # ESTABLISH LANDMARK -- COMPUTE ORBITAL P22OVER EXIT TC PHASCHNG OCT 04022 TC PROG22A # POINT A ON GSOP V06N45B VN 0645 V05N7022 VN 00570 V05N7122 VN 00571 SETLOC P20S BANK SETLOC P20S1 BANK S22LSITE RTB # CONVERT RLS FROM MOON-FIXED TO BASIC REF LOADTIME STOVL 6D # 6-7D= TIME RLS STODL 0D # 0-5D= LANDING SITE VECTOR HIDPHALF # MPAC= ANY NON-ZERO FOR MOON CALL # Page 567 RP-TO-R # RLS IN BASIC REF B-27 IN MPAC VSR2 # LUNAFLAG AND ERADFLAG SET ABOVE STORE ALPHAV # SCALE RLS B-29 FOR LAT-LONG RTB LOADTIME # SET PRESENT TIME IN MPAC FOR LAT-LONG CALL LAT-LONG GOTO S22TOFF # EXIT OBTAINLL CALL # GET LAT/LONG/ALT FROM ASTRO P22SUBRB GOTO S22TOFF # EXIT P22SUBRB STQ EXIT # GET LAT/LONG/ALT FROM ASTRO S22TOFF +1 CAF V06N89B TC BANKCALL CADR GOFLASH TC GOTOP00H # TERMINATE TC +2 # PROCEED TC -5 # ENTER OR RECYCLE TC INTPRET DLOAD ABS # TEST LAT/LONG GREATER THAN 90 LANDLAT BDSU BMN # 1/4 REV - LAT DP1/4TH N89ERRX DLOAD ABS LANDLONG BDSU BPL DP1/4TH +4 N89ERRX EXIT TC FALTON TC P22SUBRB +2 # LONG GR. THAN 90 REDISPLAY CALL LLASRDA GOTO S22TOFF +1 # EXIT S22N7071 STORE 8KK # 8KK=V05N71,V05N70 8KK+1=0 N71, NOT 0 N70 STQ EXIT S22TOFF S22DSPPA CA 8KK # V05N70 OR V05N71 TC BANKCALL CADR GOFLASHR TC GOTOP00H # V34E TERMINATE TC +5 # V33E PROCEED TC -5 # V32E RECYCLE CAF FIVE # IMMEDIATE RETURN BLANK OUT R1,R3 TC BLANKET # Page 568 TC ENDOFJOB CA LANDMARK MASK PRIO7 # 07000 TS CXOFF # 08000 = OFFSET INDICATOR CS PRIO5 # 5 8-5 AD CXOFF EXTEND BZMF +2 # OFF=0 THRU 5 OK TC S22DSPP # OFF=6.7 ILLEGAL REDISPLAY TC DOWNFLAG ADRES KNOWNFLG # CLEAR KNOWNFLG CA LANDMARK # MASK A FROM ABCDE MASK 13,14,15 EXTEND BZMF S22DSPP # A=0,4,5,6,7 ILLEGAL REDISPLAY TS 22SUBSCL # TEMP CS BIT14 AD 22SUBSCL CCS A S22DSPP TC FALTON # + A=3 ILLEGAL REDISPLAY TC S22DSPPA # COMMON ERROR EXIT BACK TO DISPLAY TC +2 # - A=1 KNOWN LMK CHECK DE TC S22ABDE # -0 A=2 UNKNOWN LMK, DE MEANINGLESS TC UPFLAG ADRES KNOWNFLG # SET KNOWNFLG CS HIGH9 # RESULT= 00077 MASK LANDMARK TS 22SUBSCL # 000DE CS BIT1 AD 22SUBSCL EXTEND BZMF S22ABDE # DE=0,1 OK FOR BOTH N70,N71 CA 8KK +1 # =0 FOR N71, NOT =0 FOR N70 EXTEND BZF S22DSPP # N71 REDISPLAY DE MUST= 0 OR 1 CA BIT5 # N70 TEST DE= 50-57 OCTAL FOR ADV. ORBIT AD OCT50 # SUM=00070 MASK 22SUBSCL # 00D0 CS A AD OCT50 EXTEND BZF DE-GR-50 # D=5 OR DE=50-57, OK FOR N70 TC S22DSPP # DE NOT 50-57 ILLEGAL, REDISPLAY S22ABDE TC INTPRET BOFF SLOAD KNOWNFLG # UNKNOWN LMK, DE MEANINGLESS S22TOFF 22SUBSCL # =0 GET LLA FROM ASTRO, NOT=0 USE RLS BHIZ GOTO OBTAINLL # GET LAT/LONG/ALT FROM ASTRO N89 # Page 569 S22LSITE # GET LAT/LONG/ALT FROM RLS DE-GR-50 TC 2PHSCHNG OCT 00004 OCT 05022 OCT 13000 CA FIVE TS MARKINDX TC UPFLAG ADRES TARG2FLG TC DOWNFLAG ADRES TARG1FLG TC INTPRET CALL ADVORB GOTO DOV5N71 # Page 570 # PROGRAM NAME: OPTICS CALIBRATION ROUTINE # MOD NO: 1 # MOD BY: TOM KNATT # # FUNCTIONAL DESCRIPTION: TO MEASURE THE EFFECT OF SOLAR RADIATION ON # THE SXT TRUNNON ANGLE AND STORE THE MEASURED TRUNNION BIAS FOR P23 # # CALLING SEQUENCE: CALL # R57 # # SUBROUTINES CALLED: DISPLAY ROUTINES # # NORMAL EXIT MODES: VIA EGRESS # # ALARMS: NONE # # ABORT MODES: P23 ABORT IF MARKING SYSTEM OR EXTENDED VERB ACTIVE # # INPUT: NONE REQUIRES, NORMALLY CALLED BY P23 # # OUTPUT: TRUNNION BIAS ANGLE: ANGLE DETERMINED WHEN SHAFT LINE OF SIGHT # (SLOS) AND LANDMARK LINE OF SIGHT (LLOS) ARE SUPERIMPOSED. THIS ANGLE # MAY NOT BE EXACTLY ZERO BECAUSE OF UNEVEN HEATING OF THE OPTICS, FOR # EXAMPLE. # # ERASABLE INITIALIZATION REQUIRED: MRKBUF1, EXTVBACT # # DEBRIS: RUPTREGS USED BY MARKRUPT AND ERASABLES USED BY DISPLAYS. BANK 33 SETLOC P20S BANK COUNT* $$/R57 EBANK= MRKBUF1 R57 STQ EXIT EGRESS CAF EBANK7 TS EBANK CAF SIX # BIT2 = MARKING SYSTEM IN USE MASK EXTVBACT # BIT3 = EXTENDED VERB IN PROGRESS CCS A TC P23ABRT # SET, THEREFORE ABORT CAF BIT2 # NOT SET ADS EXTVBACT # SET IT R57A TC UPFLAG # SET V59FLAG (BIT 12 FLAG 5 TO INDICATE ADRES V59FLAG # CALIBRATION MARK CAF V59NB TC BANKCALL CADR GOMARKFR TC GOTOP00H # TERMINATE TC ENDR57 TC ENDR57 CAF SEVEN # Page 571 TC BLANKET # BLANK OUT R1,R2,R3 TC ENDOFJOB # STORE TRUNNION ANGLE (OCDU) MARKDISP CAF V06N87NB TC BANKCALL CADR GOMARKFR TC GOTOP00H # TERMINATE TC R57B # PROCEED TC R57A # ENTER (RECYCLE) CAF FIVE TC BLANKET # BLANK OUT R1,R3 TC ENDOFJOB R57B CA 19.77DEG # PUT FIXED INTO ERASABLE FOR MSU TS L # INSTRUCTION COMING UP CA MRKBUF1 +5 # CONTAINS TRUNNION EXTEND MSU L # CONNECTS TRUNBIAS FROM 2'S TO 1'S TS TRUNBIAS ENDR57 TC DOWNFLAG # RESET V59FLAG ADRES V59FLAG # BIT 12 FLAG 5 CAF EBANK5 TS EBANK CAF PRIO14 TC NOVAC # THIS JOB CLEARS BIT IN EBANK= MARKSTAT 2CADR ENDMARK # MARKING IN R57 SO R53 CAN TAKE OVER TC INTPRET GOTO EGRESS P23ABRT TC BAILOUT OCT 01211 V06N87NB VN 0687 V59NB VN 5900 V51NB VN 5100 19.77DEG OCT 61740 # Page 572 # PROGRAM DESCRIPTION # MOD NO: 1 # MOD BY: N. BRODEUR # # FUNCTIONAL DESCRIPTION # # TO PERFORM SIGHTING MARKS IN CONJUNCTION WITH THE RENDEZVOUS NAVIG- # ATION PROGRAM. CALLED BY ASTRONAUT VIA EXTENDED VERB. # # CALLING SEQUENCE: # # R21 VIA V57 # R23 VIA V 54 # # SUBROUTINES CALLED: # # FLAGUP FLAGDOWN BANKCALL # ENDOFJOB GOMARK2 GOMARKF # INTPRET GENTRAN KLEENEX # ENDMARK # # NORMAL EXIT MODES: # # MARKRUPT USED BY SXTMARK HAS BEEN MODIFIED TO STORE MARK IN MRKBUF2 # FOR USE BY R22. WHEN ASTRONAUT IS FINISHED TAKING MARKS, HE HITS AN # PROCEED, R21 IS TERMINATED THUS CAUSING THE FINAL MARK TO BE TRANSFRD # TO MRKBUF2 FOR PROCESSING BY R22 # # ALARM OR ABORT EXIT MODES: # # NONE # # OUTPUT: # # 7 REGISTER MRKBUF2 CONTAINING TIME2,TIME1,CDUY,OPTICS X,CDUZ, OPTICS Y, # CDUX. # # ERASABLE INTIALIZATION REQUIRED # # FLAGS SET AND RESET # R21MARK (COMMUNICATION TO MARKRUPT TO STORE MARKS IN MRKBUF1 +2) # R23FLG INDICATES COAS MARKING # # DEBRIS EBANK= MRKBUF1 SETLOC RENDEZ BANK COUNT* $$/R21 R21CSM TC UPFLAG # SET R21MARK ADRES R21MARK # BIT 14 FLAG 2 R23CSM CA NEGONE TS MRKBUF1 TS MRKBUF2 CA FLAGWRD1 MASK R23BIT # TEST R23FLG EXTEND BZF R21C1 # NOT SET REGULAR R21 MARKING CAF V0694 # R23 BACKUP MARKING TC BANKCALL # DISPLAY SHAFT + TRUNNION CADR GOMARKF TC R21END # TERM TC +2 # PROC # Page 573 TC -5 # ENTER R23CSM1 CAF V53 # PERFORM ALT LOST SIGHT MARK TC BANKCALL CADR GOMARK2 TC R21END # V34: TERMINATE R23 TCF R21CSMA # PROCEED: END BACK UP MARKING (R23) CAF SIX # TRANSFER MRKBUF1 TO MRKBUF2 TC GENTRAN ADRES MRKBUF1 ADRES MRKBUF2 EXTEND DCA TIME2 DXCH MRKBUF1 # READ TIME CA CDUY # READ CDU ANGLES TS MRKBUF1 +2 CA CDUZ TS MRKBUF1 +4 CA CDUX TS MRKBUF1 +6 RELINT TC R23CSM1 R21C1 CAF V51NB TC BANKCALL CADR GOMARK2 TC R21END # V34: TERMINATE R21 TCF R21CSMA # PROCEED: END R21 TCF R21C1 # RECYCLE R21CSMA CA MRKBUF1 # IF -1 NO MARK AD ONE EXTEND BZF R21END # ZERO = NO MARK CAF SIX # MARK THEREFORE TRANSFER IT TO MRKBUF2 R21CSM1 TC GENTRAN # TRANSFER MRKBUF1 TO MRKBUF2 ADRES MRKBUF1 ADRES MRKBUF2 RELINT R21END TC BANKCALL CADR KLEENEX TC DOWNFLAG # RESET R21MARK ADRES R21MARK # BIT 14 FLAG 2 TC ENDMARK # END MARKING AND ENDJOB V53 VN 5300 V0694 VN 0694 # Page 574 # PREFERRED TRACKING ATTITUDE ROUTINE R61CSM # # PROGRAM DESCRIPTION # MOD NO: 2 # MOD BY: N. BRODEUR # # FUNCTIONAL DESCRIPTION: # # TO COMPUTE THE PREFERRED TRACKING ATTITUDE OF THE CSM TO ENABLE OPTICS # TRACKING OF THE LM AND TO PERFORM THE MANEUVER TO THE PREFERRED # OR X-AXIS TRACKING ATTITUDE. # # CALLING SEQUENCE: # # TC BANKCALL # CADR R61CSM # # SUBROUTINE CALLED # # MAKECADR BANKCALL # INTPRET FLAGUP FLAGDOWN # BANKJUMP CRS61.1 R60CSM # PHASCHNG # # NORMAL EXIT MODES: # # NORMAL RETURN TO CALLER + 1 # # OUTPUT: # # SEE OUTPUT FOR CRS61.1 & ATTITUDE MANEUVER ROUTINE (R60CSM) # # ERASABLE INITIALIZATION REQUIRED # # GENRET USED TO SAVE Q FOR RETURN # R61CNTR MUST BE PRESET TO ZERO # # FLAGS SET + RESET # # 3-AXIS FLAG # # DEBRIS # # SEE SUBROUTINES EBANK= GENRET COUNT* $$/R61 # ROUTINES -- NAVIGATION -- PREF. TR. 9TT= R61CSM CAF EBANK6 # SWITCH TO EBANK 6 XCH EBANK TS SAVBNK # SAVE EBANK TC MAKECADR TS GENRET CCS R61CNTR # TEST R61DNTR TC DECRM61 # NOT READY TO DO R61 TC +2 # DO R61 TC DECRM61 +1 TC INTPRET CALL CRS61.1 # LOS DETERMINATION + VEH ATTITUDE EXIT INDEX MPAC TC +1 TC R61END # SUBROUTINE DRIVING DAP (EXIT R61) # OR AUTO MODE NOT SET (EXIT R61) # OR SKIKFLAG SET (EXIT R61) R61C1 TC DOWNFLAG # RESET 3-AXIS FLAG ADRES 3AXISFLG # BIT 6 FLAG 5 # Page 575 CS ONE # SET R61CNTR NEG. TO INDICATE KALCMANU TS R61CNTR TC UPFLAG # SET FLAG FOR PRIORITY DISPLAYS FOR R60 ADRES PDSPFLAG # BIT 12 FLAG 4 TC BANKCALL CADR R60CSM TC DOWNFLAG # RESET FLAG FOR PRIORITY DISPLAYS IN R60 ADRES PDSPFLAG # BIT 12 FLAG 4 TC PHASCHNG OCT 00111 CAF ZERO TC DECRM61 R61END CAF THREE DECRM61 TS R61CNTR CAE GENRET LXCH A # RETURN IS IN L CA SAVBNK # RESTORE EBANK XCH EBANK LXCH A # RETURN IS NOW BACK IN A TC BANKJUMP # EXIT R61 BANK 13 SETLOC P20S2 BANK EBANK= MRKBUF1 # Page 576 # BVECTOR PERFORMS COMPUTATIONS FOR # # DELTAQ, THE MEASURED DEVIATION BASED ON THE DIFFERENCE BETWEEN THE CSM-LEM # STATE VECTOR ESTIMATES AND THE ACTUAL TRACKING MEASUREMENT. # # US, THE MODIFIED FICTITIOUS STAR DIRECTION VECTOR # GEOMETRY VECTORY B ASSOCIATED WITH EACH TRACKING MEASUREMENT. # # INPUT # # UM, 1/2 UNIT VECTOR ALONG THE CSM-LM LINE-OF-SIGHT (BASIC REF. SYSTEM) # # USTAR, FICTITIOUS STAR DIRECTION (1/2 UNIT VECTOR) # # RCLP, RELATIVE CSM TO LM POSITION VECTOR # # OUTPUT # # USTAR, MODIFIED FICTITIOUS STAR DIRECTION (1/2 UNIT VECTOR) # # BVECTOR = 9 DIMENSIONAL BVECTOR (1/2 UNIT VEC.) # # DELTAQ = MEASURED DEVIATION # # CALLING SEQUENCE # # L CALL BVECTORS # # NORMAL EXIT # # L+1 OF CALLING SEQUENCE COUNT 23/20SUB BVECTORS STQ EGRESS VLOAD UNIT RCLP # RELATIVE POSITION VECTOR STODL 26D # RCLP UNIT VEC 36D # RCLP ABS VALUE STOVL TEMPOR1 # MOVE TO SAFE LOCATION USTAR VXV UNIT 26D # USTAR = UNIT(US X UCL) STCALL BVECTOR GRP2PC # PHASE CHANGE VLOAD BVECTOR STORE USTAR DOT SL1 UM # USTAR DOT UM ACOS DSU DP1/4TH NORM DMP X1 PI/4.0 DMP SRR* TEMPOR1 # RCLP ABS VALUE 0 -3,1 # ADJUST SCALING STOVL DELTAQ ZEROVECS STORE BVECTOR +6 STORE BVECTOR +12D GOTO # Page 577 EGRESS PI/4.0 2DEC .785398164 # Page 578 # GETUM: DETERMINES THE LINE OF SIGHT UNIT VECTOR UM IN THE BASIC REFERENCE # COORDINATE SYSTEM FROM THE OPTICS SHAFT AND TRUNNION ANGLES AND THE IMU # GIMBAL ANGLES. # # INPUT # # MARKDATA, BASE ADDRESS OF MARK DATA # REFSMMAT, ROTATION MATRIX FROM STABLE MEMBER TO BASIC REF. COORD. SYSTEM # # SUROUTINES CALLED: # # SXTNB -- SEXT. ANGULAR READINGS TO NAV. BASE COOR. # NBSM -- TRANSFORM FROM NAV. BASE TO STABLE MEMBER # # OUTPUT # # MPAC = LINE OF SIGHT 1/2 UNIT VECTOR IN BASIC REFERENCE SYSTEM # # CALLING SEQUENCE # # L CALL GETUM # # NORMAL EXIT # # L+1 OF CALLING SEQUENCE GETUM STQ SETPD EGRESS 0 LXC,1 VLOAD* MARKDATA # CONTAINS ADDRESS OF MARK DATA 1,1 STODL* MARKDOWN +1 # TRANSFER DATA FROM WORKING STORAGE 0,1 # TO MARKDOWN ARRAY FOR DOWNLINK STORE MARKDOWN AXT,2 2 XSU,2 SXA,2 X1 # X1 = MARKDATA S1 # S1 = MARKDATA(ADR) +2 CALL SXTNB # SEXT. ANGULAR READINGS TO NAV. BASE COOR. CALL NBSM # TRANSFORM FROM NAV. BASE TO STABLE MEM. VXM VSL1 REFSMMAT GOTO # MPAC = (UM) LINE OF SIGHT VECTOR EGRESS # EXIT # Page 579 # RENDEZVOUS TRACKING DATA PROCESSING ROUTINE (R22) # # PURPOSE (1) TO PROCESS RENDEZVOUS SIGHTING MARK DATA TO UPDATE THE STATE VECTOR OF EITHER THE CSM OR LM AS # DEFINED BY THE RENDEZVOUS NAVIGATION PROGRAM (P20). # # ASSUMPTIONS (1) THIS ROUTINE IS MANUALLY SELECTED BY THE ASTRONAUT BY V55E WHENEVER RENDEZVOUS SIGHTING MARKS # ARE DESIRED. ITS SELECTION, HOWEVER, IS LIMITED TO PERIODS WHEN THE CMC IS HOLDING FOR A V/N FLASHING # DATA DISPLAY. THIS ROUTINE RETURNS TO THE ORIGINAL PROGRAM AT THE INTERRUPTED DISPLAY. BANK 34 SETLOC P20S3 BANK COUNT 34/R22 R22 CAF PRIO26 TS PHSPRDT2 TC PRIOCHNG CA NEG3 TS MRKBUF2 TC INTPRET RTB LOADTIME STORE VHFTIME # PRESENT TIME REND1 CALL GRP2PC CALL WAITONE REND1A EXIT CA MRKBUF2 EXTEND BZF REND2 EXTEND BZMF REND3A REND2 CAF SIX TC GENTRAN ADRES MRKBUF2 ADRES MARKTIME # MARKTIME MUST BE CONTIGUOUS WITH VTEMP CAF NEG3 # NEG VALUE TO INDICATE VALUES USED TS MRKBUF2 RELINT TC INTPRET CLEAR CALL SOURCFLG # 0 = OPTICS DATA GRP2PC SSP GOTO MARKDATA ECADR VTEMP -2 REND4 REND3A TC INTPRET REND3 CALL # Page 580 GRP2PC CALL WAITONE BOFF VHFRFLAG REND1A RTB LOADTIME # PRESENT TIME DSU DSU 60SECDP # 1 MIN VHFTIME # LAST READING OF RADAR BMN CALL REND1A RANGERD # READ RADAR RANGE DLOAD MARKTIME STORE VHFTIME # FOR DOWNLINK REND4 CALL SETINTG # SET INTEGRV FLAGS BON CALL VEHUPFLG CSMUPP # BRANCH IF CSM UPDATE INTEGRV CALL GRP2PC # PHASE CHANGE CALL SETINTG # SET INTEGRV FLAGS CLEAR VINTFLAG # SET INTEGRATION VEHICLE TO LM REND5 BOFF SET RENDWFLG REND5A # DO NOT INTEGRATE W IF FLAG = 0 DIM0FLAG REND5A CALL INTEGRV CALL SHIFTNDX # SET EARTH MOON SCALING INDEX CALL CMPOS # SET CSM POSITION SET CALL INCORFLG # SET FOR 1ST PASS LMPOS # SET LM POSITION CLEAR BON ORBWFLAG # CLEAR FOR ORBITAL AND CISLUNAR RENDWFLG REND6 DLOAD WRENDPOS STCALL 0 # 0 = WRENDPOS 1 = WRENDVEL INITIALW # INTIIALIZE W MATRIX # Page 581 DLOAD ZEROVECS STORE VHFCNT # ZERO OUT VHFCNT AND TRKMKCNT REND6 SET RENDWFLG VLOAD VSU LEMPOS CSMPOS STORE RCLP # LM - CSM REND7 UNIT BON SOURCFLG REND14 # BRANCH IF DATA IS RADAR STORE UCL BOFF CALL INCORFLG REND9 GETUM # CALCULATE UM LINE OF SIGHT STOVL UM UCL VXV BOV UM # UCL X UM REND8 REND8 UNIT BOV REND3 # BRANCH IF OVERFLOW IGNORE MARK STORE USTAR REND9 CALL BVECTORS BON VLOAD VEHUPFLG REND9A BVECTOR VCOMP STORE BVECTOR REND9A CALL GRP2PC BON R23FLG REND15 # BRANCH IF BACKUP OPTICS (R23 WORKING) DLOAD DAD SXTVAR IMUVAR REND10 STOVL VARIANCE # TEMP STORAGE FOR VARIANCE CALC. RCLP ABVAL NORM X1 DSQ DMP VARIANCE XAD,1 CALL X1 SHIFTNDX # GET EARTH MOON SCALING INDEX # Page 582 XAD,1 XAD,1 X2 X2 SR* TLOAD 0 -2,1 # ADJUST SCALING TO B-40 MPAC STORE VARIANCE SLOAD SR INTVAR # INTEGRATION VARIANCE SCALED B-15 25D # SCALE IT B-40 TAD RTB VARIANCE TPMODE STORE VARIANCE BOFF TAD SOURCFLG # BRANCH IF NOT VHF RADAR REND10A RVARMIN # VHF RADAR MIN. VARIANCE BPL TLOAD REND10A RVARMIN ABS # MIN. VALUE WAS STORED AS NEG. STORE VARIANCE # STORE MIN. VALUE REND10A CLEAR CALL DMENFLG # CLEAR FOR 6 X 6 W MATRIX INCORP1 # CALCULATE UPDATE CALL GRP2PC BOFF CALL INCORFLG REND12 SHIFTNDX # GET EARTH MOON SCALING INDEX VLOAD ABVAL DELTAX +6 SR* 0,2 STOVL N49DISP +2 DELTAX ABVAL SR* 0,2 STORE N49DISP SLOAD RMAX SR DSU 10D N49DISP BMN SLOAD RENDISP # BRANCH IF POS UP. GREATER THAN MAX. VMAX DSU BMN # Page 583 N49DISP +2 RENDISP # BRANCH IF VEL. UPDATE GREATER THAN MAX. REND12 CALL INCORP2 # INCORPORATE UPDATE VALUES INTO STATE VEC BON BOFF SOURCFLG REND16 # BRANCH IF DATA IS RADAR INCORFLG REND17 CALL SHIFTNDX # GET EARTH MOON SCALING INDEX BON CALL VEHUPFLG REND18 # BRANCH IF CSM UPDATE LMPOS # GET LM POSITION REND13 CALL GRP2PC # PHASE CHANGE VLOAD VSU LEMPOS CSMPOS STORE RCLP # LM - CSM CLRGO INCORFLG REND7 # BRANCH FOR 2ND PASS THIS OPTICS MARK CSMUPP CLEAR CALL VINTFLAG # SET INTEGRATION VEHICLE EQ LM INTEGRV CALL GRP2PC # PHASE CHANGE CALL SETINTG # SET FLAGS FOR INTEGRATION GOTO REND5 REND14 STOVL BVECTOR # VHF RADAR BVECTOR ZEROVECS STORE BVECTOR +6 STOVL BVECTOR +12D RCLP UNIT DLOAD VHFRANGE # VHFRANGE SCALED B-27 BON SR2 MOONTHIS +1 DSU SET 36D # ABVAL (RCLP) INCORFLG STORE DELTAQ BOFF VLOAD VEHUPFLG REND14A # Page 584 BVECTOR VCOMP STORE BVECTOR REND14A CALL GRP2PC DLOAD GOTO RVAR REND10 REND15 SLOAD DAD # GET ALT LOS VARIANCE ALTVAR # BACKUP OPTICS IMUVAR # IMU VARIANCE GOTO REND10 REND16 LXA,1 INCR,1 VHFCNT # VHF RADAR UPDATE COUNT DEC 1 SXA,1 GOTO VHFCNT # UPDATE COUNT REND1 REND17 LXA,1 INCR,1 TRKMKCNT # OPTICS MARK COUNT DEC 1 SXA,1 GOTO TRKMKCNT # UPDATE COUNT REND3 REND18 CALL CMPOS # GET CSM POSITION GOTO REND13 CMPOS VLOAD VSR* DELTACSM 7,2 VAD RCVCSM STORE CSMPOS # CSM POSITION SCALED B-27 OR B-29 RVQ LMPOS VLOAD VSR* DELTALEM 7,2 VAD RCVLEM STORE LEMPOS # LM POSITION SCALED B-27 OR B-29 RVQ RENDISP EXIT CA FLAGWRD9 MASK SOURCBIT EXTEND BZF +3 CA BIT2 TC +2 # Page 585 CA BIT1 TS N49DISP +4 CAF ZERO # SET TEMPOR1 > ZERO TO INDICATE TS TEMPOR1 # V06 N49 DISPLAY HASN'T BEEN ANSWERED TC PHASCHNG OCT 04022 CAF PRIO27 # SET UP DISPLAY JOB WITH HIGHER PRIORITY TC NOVAC EBANK= MRKBUF1 # THAN PRESENT JOB 2CADR RENDISP2 RENDISP7 TC INTPRET STORE MPAC SLOAD BZE TEMPOR1 RENDISP7 +1 # DISPLAY HAS NOT BEEN ANSWERED YET BMN GOTO REND12 # NEG INDICATES PROCEED RENDISP3 # POS INDICATES RECYCLE RENDISP2 CAF V06N49 TC BANKCALL CADR PRIODSP TC GOTOV56 # TERM EXIT P20 VIA V56 CS ONE # NEG INDICATES PROCEED RENDISP7 JOB TS TEMPOR1 # POS INDICATES RECYCLE RENDISP7 JOB TC ENDOFJOB # GO COMPLETE ABOVE JOB RENDISP3 BON SOURCFLG REND1 # DATA WAS RADAR GO LOOK FOR OPTICS NEXT EXIT EBANK= MRKBUF1 INHINT CAF BUFBANK TS BBANK CA NEGONE TS MRKBUF1 # ERASE MARK ONE BUFFER TS MRKBUF2 # ERASE MARK TWO BUFFER RELINT RENDISP4 TC INTPRET GOTO REND3 SXTVAR 2DEC 0.04 E-6 B+16 # SXT ERROR VARIANCE = .04 (MR)SQ IMUVAR 2DEC 0.04 E-6 B+16 # IMU ERROR VARIANCE = .04 (MR)SQ V06N49 VN 0649 EBANK= MRKBUF1 BUFBANK BBCON RENDISP3 BANK 31 SETLOC R22S1 # Page 586 BANK SETINTG STQ CALL EGRESS INTSTALL # RESERVE INTEGRATION DLOAD SET MARKTIME STATEFLG STORE TDEC1 # MARKTIME CLEAR CLEAR INTYPFLG # PRECISION INTEGRATION DIM0FLAG SET CLRGO VINTFLAG # SET VEHICLE EQ. CSM D6OR9FLG # SET W MATRIX DIM. EQ 6 EGRESS # EXIT CNTCHK STQ POINTEX CONTCHK BOFF REFSMFLG # BRANCH TO END OF JOB IF REFSMMAT NO GOOD ENDPLAC SLOAD BMN R61CNTR WAITONE1 BON BOFF # IS TRACK FLAG SET UPDATFLG POINTEX TRACKFLG ENDPLAC EXIT REDOR22 TC PHASCHNG OCT 00132 CAF PRIO26 TC PRIOCHNG TC WAITONE +3 WAITONE STQ POINTEX WAITONE1 EXIT CAF 4SECS # WAIT 4 SECS. TC BANKCALL CADR DELAYJOB TC INTPRET GOTO CONTCHK # CHECK AGAIN NOW RANGERD EXIT INHINT CS OCT17 EXTEND WAND CHAN13 # ZERO OUT BITS 1-4 OF CHANNEL 13 CAF OCT11 EXTEND # Page 587 WOR CHAN13 # GENERAGE SHIFT PULSES TO RADR, SET R. BIT RELINT EXTEND DCA TIME2 DXCH MARKTIME # READ PRESENT TIME TC DOWNFLAG ADRES SKIPVHF TC BANKCALL CADR RADSTALL # WAIT FOR RANGE COMPLETE TC LIGHTON # BAD DATA GOOD BIT TC TRFAILOF # TURN TRACKER LIGHT OFF RANGERD1 CCS RM # 15 BIT UNSIGNED RANGE TC RANGERD4 # GR + 0 TC LIGHTON +4 # = + 0 TC RANGERD3 # L - 0 TC RANGERD3 # = - 0 RANGERD4 TC INTPRET SLOAD DMP RM CONVRNGE # CONVERT RANGE TO METERS B-27 RANGERD2 STORE VHFRANGE SET RVQ SOURCFLG # SOURCE OF DATA TO VHF RADAR RANGERD3 CA RM MASK POSMAX TS MPAC # MASK OUT NEG. SIGN BIT TC INTPRET DMP CONVRNGE # CONVERT FROM NM TO METERS AND SCALE B-27 DAD GOTO RANGEB14 # VALUE IN METERS OF SIGN BIT SCALED B-27 RANGERD2 LIGHTON CA VHFRANGE EXTEND BZF +2 TC TRFAILON TC INTPRET DLOAD MARKTIME STORE VHFTIME GOTO REND1 RANGEB14 2DEC 303431.7 B-27 # 16384 X 18.52 SCALED B-27 OCT17 OCT 00017 OC40200 OCT 40200 CONVRNGE 2DEC 18.52 B-13 # VHF INPUT RANGE CONV. FROM .01 NM TO M VHFREAD EXTEND ROR SUPERBNK # MUST SAVE SBANK BECAUSE OF RUPT # Page 588 TS BANKRUPT # EXITS VIA TASKOVER BADEND OR GOODEND CS ZERO TS RUPTAGN EXTEND QXCH QRUPT CS STATE +2 MASK SKIPVBIT # SKIPVHF FLAG EXTEND BZF TASKOVER # BRANCH IF VHF RESTART BIT SET CAF UPDATBIT MASK STATE +1 # UPDATEFLG EXTEND BZF BYPASS1 CS STATE +4 MASK PDSPFBIT # PDSPFLAG EXTEND BZF BYPASS1 CA RNRAD TS RM # SAVE RANGE CAF BIT2 EXTEND RAND CHAN33 # READ DATA GOOD BIT EXTEND BZF VHFGOOD # BRANCH IF DATA GOOD BIT EQUALS GOOD BYPASS TS VHFRANGE # STORE NON ZERO VALUE CAF TWO TC POSTJUMP CADR BADEND BYPASS1 CAF ZERO TC BYPASS VHFGOOD CAF TWO TC POSTJUMP CADR GOODEND SHIFTNDX AXT,2 BON 0 VEHUPFLG SHIFTA # VEHICLE IS CSM BON RVQ LMOONFLG +1 INCR,2 RVQ DEC -2 SHIFTA BON RVQ CMOONFLG +1 # MOON ORB. INCR,2 RVQ DEC -2 INITIALW AXT,1 SSP 36D S1 # Page 589 6 VLOAD ZEROVECS INITA STORE W +36D,1 # CLEAR 0 - 35 TIX,1 AXT,1 INITA 36D INITB STORE W +90D,1 # CLEAR 54 - 89 TIX,1 SLOAD INITB 0 # POSITION VALUE STORE W # INITIALIZE DIAGONAL W POSITION STORE W +8D STORE W +16D SLOAD 1 # VELOCITY VALUE STORE W +72D # INITIALIZE DIAGONAL W VELOCITY STORE W +80D STORE W +88D RVQ # Page 590 # CRS61.1 R/10/68 # # TO COMPUTE THE PREFERRED TRACKING ATTITUDE OF THE CSM WHICH ENABLES # OPTICS TRACKING OF THE LEM AND LM TRACKING OF THE CSM RADAR TRANSPONDER # AND TO COMPUTE THE X-AXIS TRACKING ATTITUDE OF THE CSM WHICH ENABLES # COAS TRACKING OF THE LM. # # TO PERFORM THE MANEUVER TO THE SELECTED TRACKING ATTITUDE IF THE # MANEUVER IS LESS THAN 10 DEGREES BUT TO CALL R60 IF THE MANEUVER IS # GREATER THAN 10 DEGREES BUT TO CALL R60 IF THE MANEUVER IS # GREATER THAN 10 DEGREES OR IF THE R60 FLAG IS SET. # # (1) EXTRAPOLATE LM AND CSM STATE VECTORS TO PRESENT TIME USING # CONIC EQUATIONS. # # (2) CALCULATE LOS FROM CSM TO LM = RL - RC. # # (3) THE PRERFERRED TRACKING ATTITUDE IS DEFINED AS FOLLOWS: # THE TRACK AXIS (I) IS ALIGNED ALONG THE LOS TO THE LM. THE # TRACK AXIS (I) IS DEFINED AS: # # UNIT(I)=UNIT(Z )COS55 & UNIT(X )SIN55 # - -SC -SC # # (4) COMPUTE DESIRED CDU ANGLES, USING VECPOINT. # # (Sorry, I don't know where (5) and (6) are. --- RSB 2009.) # (7) FORM DIFFERENCE BETWEEN DESIRED AND ACTUAL CDUS. # IF ANY OF THE THREE ANGLE DIFFERENCES EXCEEDS 10 DEGREES, # GROSS MANEUVER IS REQUIRED. SIGNAL R61 (SET MPAC=1) TO # OPERATE KALCMANU AND EXIT CRS61.1. # IF ALL DIFFERENCES ARE LESS THAN 10 DEGREES, CONTINUE. # # (8) CALCULATE ORTHOGONAL LOS RATE IN REF COORDS AS # # OMEGATH = (UNITLOS(B1) X UNITDV(B1))(ABSDV(B7)/ABSLOS(B29)) # # CONVERSION FACTOR OF 100/2PI (B4) REV CSEC PER RAD SEC IS # APPLIED TO YIELD UNITS OF REVS/SEC. SCALE IS CARRIED AS # B+1+1+7-29+4+1 PLUS RESULTS OF NORMALIZING ABSDV, ABSLOS. # THE EXTRA B+1 RESULTS FROM RESCALING ABSDV B8 AFTER NORM # TO AVOID OVFLOW ON DIVIDE. # # UNITLOS = UNIT( RL - RC ) B1. # UNITDY = UNIT( VL - VC ) B1. # ABSLOS = LENGTH OF LOS, METERS B29. # ABSDV = LENGTH OF DV, METERS/CSEC B7. # # (9) OBTAIN RATE IN SM COORDS. # # OMETATHSM = (REFSMMAT)(OMEGATH). # # (10) OBTAIN GIMBAL ANGLE INCREMENTS FOR 0.1 SECOND. # # DTHETASM = (0.1)(OMEGATHSM) # # (11) OBTAIN DELCDUX,Y,Z USING SUBR SMCDURES. # Page 591 # INPUT CONSISTS OF # # (A) VECTOR OF ANGULAR INCREMENTS, DTHETASM, STORED # IN V(DTHETASM). # (B) SIN,COS CDUX,Y,Z FROM SUBR CDUTRIG. # # TRANSFER OUTPUT OF SMCDURES FROM V(DCDU) TO VAC14D. # # (12) CALCULATE ANG LOS RATE IN BODY(NB) COORDS USING SUBR SMNB. # # OMEGANB = (SMNB)(OMETATHSM) # # SUBR SMNB REQUIRES OMEGATHSM IN V(VAC32D) AND ACTUAL CDUS # (Y,X,Z ORDER) IN V(VAC20D) WITH S1 OF VAC = BASE ADDRESS # OF CDUS (FIXLOC + 20D). # # (13) CALCULATE ANG LOS RATE IN CONTROL COORDS AS FOLLOWS # # WBODY = (MBDYTCTL)(OMEGANB) UNITS=REVS/SEC(B0) (?). # # ( 0.5 0 0 ) BODY TO # MBDYTCTL(B1) = ( 0 COS(7.25)B1 -SIN(7.25)B1 ) = CONTROL # ( 0 SIN(7.25)B1 COS(7.25)B1 ) AXES # CONVERSION # MATRIX # # (14) RESCALE WBODY TO UNITS OF 460 DEG/SEC BY APPLYING FACTOR # OF 0.8 TO REVS/SEC. # # (15) ADDRESS LIVE AUTOPILOT REGISTERS IN BASIC (UNDER INHINT). # # TRANSFER DESIRED CDUS, SCALED 180 DEGREES, FROM T(SAVEDCDU) # TO V(CDUXD). # # TRANSFER DELCDUS, SCALED 180 DEG, FROM V(VAC14D) # TO V(DELCDUX). # # TRANSFER OMEGA CONTROL, SCALED 450 DEG/SEC, FROM V(MPAC) # TO V(WBODY). # # RELINT, SET MPAC=0, EXIT CRS61.1. # # CALL: L CALL CRS61.1 # # RETURNS: ALL TO L+1. # # (1) S(MPAC)=0. NORMAL EXIT. 3 SETS OF INPUTS FED TO DAP. # (2) S(MPAC)=1. CALCULATED DESIRED CDUS,SP, SET IN T(CPHI) # FOR KALCMANU. ABS(ACDU - DCDU) EXCEEDS 10 DEGREES. # (3) S(MPAC)=2. GNCS AUTO MODE NOT SELECTED (BIT10=1). # (4) S(MPAC)=3. DAP HOLD FLAG (HOLDFLAG) NOT EQUAL -1. # Page 592 # # INPUT: (1) TIME2,TIME1. COMPUTER CLOCK TIME,DP, CENTISEC B28. # (2) CDUX,Y,Z. PRESENT CDU ANGLES,SP,2S COMPL HALF-REVS B0. # (3) M(REFSMMAT), STABLE MEMBER COORDS B1. # # OUTPUT: NORMAL. EXIT WITH S(MPAC) = 0. # # (1) CDUXD,CDUYD,CDUZD, DESIRED OUTER, INNER, MIDDLE CDU ANGLES, # DP, IS COMPL, SCALED 180 DEGREES (HALF-REVS B0). # (2) DELCDUX,DELCDUY,DELCDUZ. 0.1 SEC DCU ANGULAR INCREMENTS, # DP, IS COMPL, SCALED 180 DEG. # (3) WBODY,WBODY1,WBODY2. LOS ANGULAR RATE IN CONTROL COORDS, # DP, IS COMPL, SCALED 450 DEG/SEC. # # SPECIAL. EXIT WITH S(MPAC) = 1. # # (1) CPHI,CTHETA,CPSI. DESIRED OUTER, INNER, MIDDLE CDU ANGLES, # SP, 2'S COMPL, SCALED 180 DEGREES. # # EXTERNAL SUBROUTINES USED (B)=BASIC # # (1) CALCGA (5) LOADTIME(B) (9) SMNB # (2) CDUTRIG (6) MATMOVE # (3) CSMCONIC (7) RCDUS(B) # (4) LEMCONIC (8) SMCDURES # # ERASABLE # # (1) S(Q611),EBANK7 CRS61.1 EXIT. # (2) S(Q6111),EBANK7 CALCDCDU EXIT. # (3) T(SAVEDCDU),E6 SP VECTOR OF CDUDS. # (4) V(SAVEPOS),E7 CSM POS VEC AND D(SAVEPOS)= LENGTH OF LOS. # (5) V(SAVEVEL),E7 CSM VEL VEC. # # FLAGWDS: HOLDFLAG. USED, NOT SET. # # MISC: (1) ERASABLE ITEMP1 USED TO TEMP STORE EBANK UNDER INHINT. # (2) ERASABLE P21TIME USED AS TEMP STORE DURING CRS61.1 # (3) ERAS DTHETASM USED AS TEMP STORE DURING EARLY CRS61.1 # # DEBRIS -- CURRENT VAC AREA, CRS61.1 ERASABLES, ITEMP1, P21TIME BANK 24 SETLOC P20S4 BANK EBANK= CDUXD COUNT* $/CRS61 CRS61.1 STQ SETPD Q611 0 RTB # Page 593 LOADTIME # LOAD CLOCK TIME2,1 INTO MPAC. STORT STCALL P21TIME # STORE CLOCK TIME FOR SUBR R63 R63 # SUBR TO CALC DCDU (T=PRESENT,PASS1) TLOAD THETAD # SAVE DCDU(T) FROM CALCDCDU FOR STEP4. STORE SAVEDCDU EXIT TC STEP2CK AUTOCK CAF PRIO30 EXTEND RXOR CHAN31 MASK FURST3 EXTEND # AUTO MODE SELECTED (BITS 15-13=011) BZF DAPCK # YES -- CONTINUE. TC ASET DAPCK CS FLAGWRD1 # IS STIKFLAG SET (I.E., IS SOMEONE ON RHC) MASK STIKBIT CCS A TC STEP3CK ASET CAF ZERO TS MPAC TC INTPRET # EXIT CRS61.1 GOTO Q611 STEP2CK TC BANKCALL CADR UPACTOFF CAF TWO # SET TEMPORARY INDEX DTHETASM = 2 CDULOOP TS DTHETASM INDEX DTHETASM CA CDUX # SET A = ACTUAL CDU (ACDU). EXTEND INDEX DTHETASM # SET INDEX TO ACCESS DESIRED CDU (DCDU). MSU THETAD # A = DIFF = ACDU - DCDU. TS MPAC # RETURN TO INTERPRETER FOR 10 DEGREE CK. TC INTPRET # (DP APPROX SP OK FOR ROUGH CHECK) ABS DSU DEGREE10 # IS (ACDU - DCDU) MORE THAN 10 DEGREES. BPL EXIT # NO -- OK, CONTINUE CHECKING OTHER ANGLES. STKTEST # TEST STICK FLAG CCS DTHETASM # HAVE ALL 3 ANGLE DIFFS BEEN CHECKED. TC CDULOOP # NO -- DIM COUNT, CHECK NEXT ANGLE DIFF. TC AUTOCK STKTEST EXIT CS FLAGWRD1 MASK STIKBIT # Page 594 CCS A TC MANUEXIS # STIKFLAG IS NOT SET (DO R63) CAF BIT3 EXTEND # STIKFLG IS SET WOR DSALMOUT # TURN ON UPACTY LIGHT TC ASET # EXIT AND SET R61CNTR STEP3CK TC INTPRET SETPD 0 # * # NOW HAVE DCDUS STORED IN T(SAVEDCDU). # GO CALC OTHER DAP INPUTS (DELCDU,WBODY) CRS61.2 VLOAD VSU DCDU SAVEVEL # DV = VL - VC UNIT VCOMP # V(MPAC)=-UNITDV. VAC36D=ABSDV. VXV VXSC # (-UNITDV)CROSS(UNITLOS). SAVEPOS RVCS/RDS # (UNITLOS B1)(UNITDV B1)(CONST B4)=CROSS. PUSH # HOLD CROSS IN PUSHLIST0. SCALED B6. DLOAD NORM # OBTAIN ABS VALUE OF LOS. P21TIME # P21TIME IS TEMP STORE FOR ABSLOS. X1 PUSH # NORM ABSLOS(DENOM) AND HOLD IN PUSH1. DLOAD NORM 36D # NORM ABS VALUE OF DV(NUM). S1 XSU,1 SR1 # X1 = X1(N DENOM)-S1(N NUM). S1 # SR1 TO AVOID OFLOW ON DOV. DDV VXSC # ABSDV(MPAC)/ABSLOS(PUSH1) = QUOT. SXA,1 # QUOT(MPAC) X CROSS(PUSH0) Q6111 # SAVE SCALE OF RESULT (R-15,1X). # X1= NORM OF QUOT. QTUOT SCALE B7-B29=B-22 # CROSS IS SCALED B6. NEED SL1 TO RECOVER # SR1 SO THAT -22+6+1=-15. MPAC NOW HOLDS # ORTHO LOS RATE (OMEGA TH, B-15,X1). MXV VSL1 # OBTAIN RATE IN SM COORDS (OMEGTHSM) AND REFSMMAT # ADJUST FOR REFSMMAT SCALE OF B1. STORE 20D # OMEGTHSM = VAC20D # DELTA THETA SM = OMEGTHSM * .1B-3. VXSC TENTH STORE DTHETASM # STORE SM INCREM ANGLES FOR SMCDURES. CALL CDUTRIG # OBTAIN SIN,COSCDUS FOR SMCDURES. SETPD CALL # SMCDURES USES PUSH 0 SMCDURES # OBTAIN DELCDU IN V(DCDU). # Page 595 LXA,1 # RELOAD X1 Q6111 VLOAD VSL* # RECOVER SCALE. DCDU # (B-15,X1) + TENTH(B-3) + HALFREVS(B1) 0 -17D,1 # EQUALS B-17D,1 TO OBTAIN HALFREVS B0. STORE 14D # HOLD DELS IN V(VAC14D) FOR AUTOPILOT. CALL # COMPUTES SINES AND COSINES FOR *SMNB* CDUTRIG VLOAD CALL # LOAD VECTOR AND CALL TRANSFORMATION 20D # VECTOR FOR TRG*SMNB INTO MPAC *SMNB* # OBTAIN ANG. RATE REFERRED TO NB (BODY) MXV MBDYTCTL # CONVERT RATE(OMEGA) TO CONTROL COORDS. VXSC # MULT. BY 0.8 TO RESCALE REVS TO 450 DEG. POINT8 # RECOVER SCALE. LXA,1 VSL* # RELOAD X1 TO RECOVER NORMALIZ. Q6111 # (B-15,X1) + MBDYTCTL(B1) = B-14D,1 TO 0 -14D,1 # OBTAIN REVS SCALED AT 450 DEGREES. CRS61.2A EXIT INHINT CAF ZERO # TRANSFER DESIRED GIMBAL ANGLES TS CDUXD +1 # FROM T(SAVEDCDU) TO V(CDUXD). TS CDUYD +1 TS CDUZD +1 CA SAVEDCDU TS CDUXD CA SAVEDCDU +1 TS CDUYD CA SAVEDCDU +2 TS CDUZD EXTEND # TRANSFER OMEGA CONTROL (ANG. LOS RATE) DCA MPAC # FROM V(MPAC) TO V(WBODY) DXCH WBODY EXTEND DCA MPAC +3 DXCH WBODY1 EXTEND DCA MPAC +5 DXCH WBODY2 EXTEND # TRANSFER CDU INCREMENTS INDEX FIXLOC # FROM V(VAC14D) TO V(DELCDUX) DCA 14D DXCH DELCDUX EXTEND INDEX FIXLOC DCA 16D # Page 596 DXCH DELCDUY EXTEND INDEX FIXLOC DCA 18D DXCH DELCDUZ CS ONE # NOW DAP VARIABLES LOADED. SET HOLDFLAG. TS HOLDFLAG # TO -1. RELINT TC ASET MANUEXIS TC INTPRET MANUEXIT TLOAD # ENTER FROM STEP2. ACDU-DCDU EXCEEDS SAVEDCDU # 10 DEG. STORE DCDU(T) IN CPHI,CTHETA, STORE CPHI # CPSI FOR KALCMANU. SLOAD GOTO # SPECIAL RETURN (MPAC+0 = 1) LOONE # OCTAL 00001 Q611 R63 STQ DLOAD # SUBR TO CALC DCDUS(T) Q6111 P21TIME STCALL TDEC1 CSMCONIC HOLDATT VLOAD # HOLD EXTRAPOLATED CSM POSITION AND RATT # VELOCITY STOVL SAVEPOS VATT STORE SAVEVEL CALCLEM DLOAD # EXTRAPOLATE LEM STATE VECTOR TO SAVE P21TIME # TIME AS CSM USING LEMCONIC STCALL TDEC1 LEMCONIC VLOAD VATT STOVL DCDU # STORE VATT IN DCDU TEMPORARILY RATT # LOS = RL RC VSU UNIT SAVEPOS STORE SAVEPOS # SAVE UNITLOS FOR CRS61.2 RATE CALC. MXV VSL1 REFSMMAT # CONVERT TO STABLE MEMBER STODL POINTVSM 36D # HOLD ABS VAL OF LOS (VAC 36D) STORE P21TIME # IN D(P21TIME) FOR CRS61.2 RATE CALC. VLOAD UNITX STCALL SCAXIS # TRACK AXIS UNIT VECTOR VECPOINT # FOR +X-AXIS TRACKING ATTITUDE STORE CPHIX # STORE ANGLES FOR N96 DISPLAY VLOAD PRFUNIT # Page 597 STCALL SCAXIS VECPOINT STORE PRAXIS # STORE ANGLES FOR N95 DISPLAY BOFF PRFTRKAT CRSTOR1 CRSTOR STORE THETAD # STORE ANGLES FOR N18 DISPLAY GOTO Q6111 CRSTOR1 VLOAD UNITX STORE SCAXIS TLOAD GOTO CPHIX CRSTOR PRFUNIT 2DEC .40957602 # 55 DEG TRACK AXIS UNIT VECTOR 2DEC 0.0 # FOR USE WITH VECPOINT 2DEC .28678822 DEGREE10 DEC .05556 # 10 DEG IN REVS STEP2 RVCS/RDS 2DEC 15.915494 B-4 # 100/2PI REV-CSEC/RAD-SEC. TENTH 2DEC .1 B+3 # .1 B-3 (TO SCALE ANG. RATE TO .1 INREMS) MAT1B1 2DEC 1.0 B-1 MBDYTCTL 2DEC .5 # 7.25 DEG NEGATIVE 2DEC 0 # X-AXIS ROTATION MATRIX 2DEC 0 # CONVERTS BODY TO CTL 2DEC 0 # AXES. CAME AS QUADROT 2DEC .99200495 B-1 # COS7.25 B1 BUT SCALED B 2DEC -.12619897 B-1 # -SIN7.25 B1 2DEC 0 2DEC .12619897 B-1 # SIN7.25 B1 2DEC .99200495 B-1 # COS7.25 B1 LOONE OCT 00001 # TO SET MPAC = 00001 FOR SPECIAL EXIT. FURST3 EQUALS 13,14,15 # CONSTANT FOR AUTOCK (OCT 70000). # Page 598 # ..... S22.1 ORBITAL NAVIGATION ROUTINE # MOD 1 # # FUNCTIONAL DESCRIPTION # 1. UPDATE CSM STATE VECTOR # 2. UPDATE LANDMARK POSITION # 3. CONVERT W MATRIX FROM 9 TO 6 DIMENSIONS # # SUBROUTINES CALLED # INTSTALL,INTEGRV,GETNUM,SETRE,R-TO-TP,RP-TO-R,BVECTORS,INCORP1,INCORP2 # LALOTORV,S22F2410,LAT-LONG,ROWDOT # # ERASABLE INITIALIZATION # W=9X9 MATRIX # ORBWFLAG=0 FOR INVALID W MATRIX, =1 FOR VALID W MATRIX # ASTRONAUT ENTRY OF KNOWN,L,OFF # 8NN= NUMBER OF MARKS, DECIMAL INTEGER B-14 # REFSMMAT= TRANSFORMATION MATRIX # MARKSTAT= ADDRESS OF START OF MARK DATA (MARK DATA OF EACH MARK IS # STORED AS FOLLOWS: TIME,AIG,SA,AMG,PA,AOG) TIME IS IN DOUBLE # PRECISION, ALL OTHERS ARE IN SINGLE PRECISION # CSM STATE VECTOR # # OUTPUT # UPDATED CSM STATE VECTOR # UPDATED LANDMARK POSITION # NEW 6 DIMENSIONAL W MATRIX # # DEBRIS # PUSH LIST,CSMPOS,ALPHAV,ERADM,UM,RCLP,USTAR,VARIANCE,X789,BVECTOR,8KK, # S22LOC,SVMRKDAT TABLE,22SUBSCL,LANDMARK,CXOFF,S22C,LAT,LOG,ALT, # TEMPOR1,S22TOFF,S221OFF,DSPTEM1,S22EORM,S22TPRIM BANK 13 SETLOC P20S6 BANK EBANK= LANDMARK COUNT 35/LUORB S22.1 STQ SSP S22RTNEX S1 DEC 6 SSP SSP # SET I=1 ITEM 8KK IS I 8KK DEC 1 S22LOC ECADR SVMRKDAT # SET MARK DATA ADDRESS INTO S22LOC # Page 599 LXC,2 AXT,1 MARKSTAT DEC 36 S22.111 VLOAD* # MOVE MARK DATA (5 SETS FROM ADDR. IN 0,2 # MARKSTAT TO SVMRKDAT TABLE TO AVOID LOSS STORE SVMRKDAT +36D,1 # IF RESTART OCCURS INCR,2 TIX,1 DEC -6 S22.111 SET EXIT P22MKFLG # DOWNLINKED SVMRKDAT HOLDS PRESENT MARKS TC BANKCALL # RELEASE VAC AREA WHERE MARK DATA WAS CADR MKRELEAS TC 2PHSCHNG OCT 00004 OCT 05022 OCT 13000 TC INTPRET AXT,1 BOFF 0D CMOONFLG # =0 EARTH, =1 MOON S22SHIFT INCR,1 DEC -2 S22SHIFT SXA,1 SETPD S22EORM # SET =0 EARTH, =-2 MOON FOR SHIFTING 0D FIG2EXIT CALL INTSTALL CALL S22FLGS # FLOWCHART D=0 THEN DIM0FLAG=0, D6O9FLG NOT TESTED # FLOWCHART D=6 THEN DIM0FLAG=1, D60R9FLG=0 # FLOWCHART D=9 THEN DIM0FLAG=1, D6OR9FLG=1 BOFF CLRGO ORBWFLAG SETWW5D # BRANCH TO SET W0-W5,ORBWFLAG,D D6OR9FLG # FLOWCHART D=6 PATH SETVANDI SETWW5D CLEAR DIM0FLAG # FLOWCHART D=0 PATH AXT,1 SSP DEC 108 S1 DEC 6 CLEAR VLOAD RENDWFLG # GSOP CHANGE 8/18/67 ZEROVECS CLEARWW5 STORE W +108D,1 # Page 600 TIX,1 SLOAD CLEARWW5 WORBPOS STORE W # SET DIAGONALS OF W0 STORE W +8D STORE W +16D SLOAD WORBVEL STORE W +72D # SET DIAGONALS OF W4 STORE W +80D STORE W +88D SETVANDI CLEAR DMENFLG # 0=6X6W, 1=9X9W S22NXTIN CALL GETTF STCALL TDEC1 INTEGRV CALL S22CALRC # CALC. RC B-29 OR B-27 (CSMPOS) LXA,1 SXA,1 S22LOC # SETUP ADDR. OF MARK DATA FOR GETUM SUBR. MARKDATA CALL # COMPUTE UM S2GETUM GETUM STORE UM DMPINTEG SLOAD PUSH # TEST OFF=I 8KK SLOAD SR3 # CXOFF SCALED B-5, MUST MOVE TO B-14 CXOFF # BEFORE SUBT. SR3 SR3 DSU BHIZ BON S22OFF=I # BRANCH HERE IF OFF=I DMENFLG # 0=6X6W, 1=9X9W S22D=9 CALL GRP2PC SET ORBWFLAG SET SET DMENFLG # =0 ON FIRST PASS THRU HERE FOR D=0, OR 6 22DSPFLG # =1 TO DISPLAY DR,DV ON FIRST PASS SET BON ERADFLAG # =1 TO COMPUTE FISCHER RADIUS KNOWNFLG S22BOX22 VLOAD UNIT # UNIT ALSO PUTS ABVAL(RC) IN 36D CSMPOS STORE ALPHAV # ALPHAV +4=SINL FOR SETRE CLEAR BOFF # Page 601 LUNAFLAG CMOONFLG S22C=I SET LUNAFLAG S22C=I CALL # ERADM= R0 METERS B-29 BOTH EARTH/MOON SETRE CALL # COMPUTE RL FROM EQUATION 2.4.10 S22F2410 # STORED IN X789,MPAC B-27,B-29 BOFF VSR2 # SCALE RL B-29 FOR BOTH EARTH/MOON CMOONFLG +1 STORE S22RL DOT SL1 UM STOVL S22D # D=UM RL B-29 ZEROVECS SETPD PUSH 0D PUSH PDDL # SET 0-18D = I BACKWARDS HIDPHALF # PD 18 SR2 # B-3 STORE 4D STORE 8D STOVL 12D UM # B-1 STOVL S223X1 S22RL # B-29 CALL # (UM)(RL T) B-30 STORED IN S22UMRL THRU S2231X13 # S22UMRL +17D AXT,1 SSP DEC 18 S1 DEC 6 S22NXTU VLOAD* VSR2 # (UM)(RL T) B-32 S22UMRL +18D,1 V/SC S22D # D B-29 BVSU STADR # SUBTRACT FROM I B-3 STORE S22UMRL +18D,1 # U MATRIX B-3 TIX,1 AXT,1 # PD 0 AFTER TIX S22NXTU DEC 36 # S1 STILL 6 FROM ABOVE S22NXTWI VLOAD* MXV W +36D,1 # B-19 S22UMRL # B-3 VSL3 STORE W +144D,1 # W(I+18)= UW(I) B-19 TIX,1 DLOAD S22NXTWI # Page 602 S22RHO # B-28,B-30 BOFF SR2 # MAKE RHO B-30 CMOONFLG +1 NORM XAD,2 X2 X2 DSQ DMP SCTVAR # B+16 SR1 # ACCOUNTS FOR 1/2 IN NEXT FORMULA STORE S22RHO # 1/2(RHO SQ)(VARSCT) AXT,1 DEC 18 # S1 STILL 6 FROM ABOVE S22NXXA VLOAD* MXV S22UMRL +18D,1 # B-3 S22UMRL # B-3 VXSC VSR* S22RHO 0 -12D,2 # WITH VARRP SCALED B-28 STORE S22UUT +18D,1 # 1/2(RHO SQ)(VARSCT)(U)(U T) TIX,1 VLOAD S22NXXA UM STCALL S223X1 # UM ALSO IN MPAC FOR S2231X13 SUBR. S2231X13 # (UM)(UM T) B-2 IN S22UMRL,P17D DLOAD SR3 ERADM # B0 B-29 DDV DSQ S22D # B-29 DMP RPVAR # ***** METERS SQ STORE S22RHO # TEMP (VARRP)(R0/D) AXT,1 DEC 18 # S1 STILL 6 FROM ABOVE S22NXXB VLOAD* VXSC S22UMRL +18D,1 # (UM)(UM T) B-2 S22RHO VAD* S22UUT +18D,1 STORE S22UUT +18D,1 # SMALL E MATRIX VLOAD ZEROVECS STORE W +162D,1 # CLEAR W8 TIX,1 BOV S22NXXB +1 DLOAD BMN S22UUT +16D # E5 S22W76X SQRT BZE # Page 603 S22W76X STODL W +148D # W74= SQ ROOT E5 S22UUT +14D # E4 DDV BOV W +148D S22W72X STORE W +146D # W73= E4/W74 S22W72X DLOAD DDV S22UUT +12D # E3 W +148D BOV S22W76X STORE W +144D # W72= E4/W74 S22W76X DLOAD DSQ W +146D # W73 BDSU BMN S22UUT +8D # E2 S22W78X SQRT BZE S22W78X STODL W +152D # W76= SQ ROOT (E2-W73 SQ) W +144D # W72 DMP BDSU W +146D # W73 S22UUT +6D # E1 DDV BOV W +152D # W76 S22W78X STORE W +150D # W75= (E1-W72W73)/W76 S22W78X DLOAD DSQ W +150D PDDL DSQ W +144D # W72 DAD BDSU BMN S22UUT # E0 S22SCLW SQRT STORE W +156D # W78= SQ RT(E0-W72 SQ-W75 SQ) S22SCLW VLOAD VSR1 # SCALE W6 METERS B-19 W +144D STOVL W +144D W +150D VSR1 STOVL W +150D W +156D VSR1 STORE W +156D S22SAVET CALL GETTF # Page 604 STORE S22TPRIM # SAVE PRESENT TIME FOR PIOS S22I=N EXIT # TEST I=N TC PHASCHNG OCT 04022 CS 8KK AD 8NN EXTEND BZMF S22F244X # EXIT TO FIGURE 2.4-4 CA 8KK # I=I+1 AD ONE TS TEMPOR1 CA S22LOC # ADD 7 TO LOC TO GET ADDR. OF NEXT MARK AD SEVEN TS TEMPOR1 +1 TC PHASCHNG OCT 04022 CA TEMPOR1 TS 8KK CA TEMPOR1 +1 TS S22LOC TC INTPRET CALL # FOR ALL INTEGRATIONS OTHER THAN FIRST S2INTS1 INTSTALL CALL S22FLGS BON CLEAR DMENFLG S22NXTIN # RETURN ALWAYS EXCEPT OFFSET POINT MARK 1 DIM0FLAG BOFF SET ORBWFLAG S22NXTIN # OFFSET POINT MARK 1, NO W INTEGRATION DIM0FLAG CLRGO D6OR9FLG S22NXTIN # OFFSET POINT MARK 1, INTEGRATE W 6X6 S22OFF=I CALL GETTF STOVL S22TOFF # TIME SUB OFF UM STCALL S22UOFF # U SUB OFF S22I=N # TEST I=N S22D=9 VLOAD # D=9 PATH X789 STODL 0D # CALL PIOS TWICE TO TRANSFORM RL TO TIME S22TPRIM # T(SUB F) FROM TIME T PRIME STORE 6D SLOAD CALL S22EORM # 0=EARTH, NON-ZERO=MOON S2RTRP R-TO-RP # Page 605 PUSH CALL # R-TO-RP LEAVES PUSHLOC AT 0 GETTF STORE 6D SLOAD CALL S22EORM S2RPTR RP-TO-R S22BOX32 STORE X789 SET BOV INCORFLG # FLAG=1 +1 # CLEAR OVERFLOW VSU CSMPOS STORE RCLP # RCL=RL-RC UNIT VXV # USTAR=UNIT(UNIT(RCL)XUM) UM UNIT BOV S22SAVET # COMPUTATION OVERFLOW, SAVE TF STORE USTAR S22BOX12 SET SET DMENFLG # =1 FOR 9X9 W VEHUPFLG # =1 FOR CSM DLOAD DAD SCTVAR # B+18 IMUVARR # B+18 STOVL VARIANCE RCLP # B-29 OR B-27 ABVAL NORM X1 DSQ DMP VARIANCE XAD,1 XAD,1 X1 # DOUBLE NORM SHIFT SINCE RCLP WAS SQUARED S22EORM # DOUBLE EARTH OR MOON SHIFT, SAME REASON XAD,1 SR* S22EORM 0,1 # SCALE VARIANCE B-40 FOR BOTH EARTH, MOON TLOAD # CHANGE MODE TO TRIPLE MPAC STCALL VARIANCE # CALC B0,B1,DELTAQ, NEW USTAR S2BVTRS BVECTORS VLOAD VCOMP BVECTOR STCALL BVECTOR +12D # B2=-B0 S2INCP1 INCORP1 CALL GRP2PC BOFF CLEAR 22DSPFLG # =1 DISPLAY DELTA R,V =0 DO NOT S22BOX42 22DSPFLG # Page 606 CALL GRP2PC VLOAD ABVAL DELTAX # DELTA R LXA,1 SR* S22EORM # SCALE DELTA R ALWAYS METERS B-29 0,1 STOVL N49DISP DELTAX +6 # DELTA V ABVAL SR* # DELTA V=METERS/CSEC B-7 ALWAYS 0,1 STORE N49DISP +2 EXIT CAF V06N49EE TC BANKCALL CADR GOFLASHR TC GOTOP00H # V34E TERMINATE TC +5 # INCORPORATE CHANGES TC S22EXEX # V32E RECYCLE CAF BIT3 TC BLANKET TC ENDOFJOB TC INTPRET S22BOX42 CALL INCORP2 CALL # CSMPOS=RC B-29 OR B-27 S22CALRC DMPINCP2 BOFF CALL INCORFLG S22SAVET # SAVE TF AND TEST I=N GRP2PC CLEAR VLOAD INCORFLG # FLAG=0 X789 VSU CSMPOS STCALL RCLP # RCL=RL-RC S22BOX12 S22BOX22 AXT,1 SSP # CLEAR W6,W7,W8. (27 ELEMENTS 54 REGS) DEC 54 S1 DEC 6 VLOAD ZEROVECS CLRW678 STORE W +162D,1 TIX,1 SLOAD CLRW678 S22WSUBL STORE W +144D STORE W +152D # Page 607 STORE W +160D CLEAR BOFF # SET LUNAFLAG, TIME FOR LALOTORV LUNAFLAG # ERADFLAG,LAT,LONG,ALT SET PREVIOUSLY CMOONFLG # CHECK SCALING OF ITEMS,ALT INPUT AND S22BX22A # RL OUTPUT IN ALPHAV BOTH B-29 SET LUNAFLAG S22BX22A CALL GETTF CALL # COMPUTE RL LALOTORV VLOAD BOFF ALPHAV # RL B-29 CMOONFLG S22BX22B VSL2 # SCALE RL B-27 FOR MOON S22BX22B GOTO S22BOX32 S22F244X TC INTPRET S22F244 SLOAD BHIZ # FIG 2.4-4 TEST OFF=0 CXOFF S22BOX44 SR # SCALE OFFSET B-14 THEN GET GR. 8NN 9D STORE ALPHAV # TEMP SLOAD DSU 8NN ALPHAV BMN CALL # OFFSET GR. NO. MARKS. FORGET IT S22BOX44 GRP2PC # GROUP 2 PHASE CHANGE DLOAD S22TOFF STCALL TDEC1 # CALC RC AT OFFSET TIME CSMPREC VLOAD RATT1 # RC METERS B-29 OR B-27 STOVL CSMPOS S22UOFF STOVL UM # U=UOFF X789 ABVAL BOFF CMOONFLG +2 SR2 # SCALE MOON R0 B-29 FOR S22F2410 SUBR STCALL ERADM S22F2410 GOTO S22BX44A S22BOX44 CALL # Page 608 GETTF STORE S22TOFF # PRESENT TIME FOR LAT-LONG SETUP S22BX44A CLEAR VLOAD LUNAFLAG X789 BOFF SET CMOONFLG S22BX44B LUNAFLAG # SET = 1 FOR LAT-LONG VSR2 # SCALE RL MOON B-29 FOR LAT-LONG S22BX44B STODL ALPHAV # RL SCALED B-29 FOR LAT-LONG S22TOFF # EITHER PRESENT OR OFFSET TIME CALL LAT-LONG # **** ALT OUTPUT ALWAYS B-29 CALL # DISPLAY LAT/LONG/ALT LLASRD EXIT CAF V06N89B TC BANKCALL CADR GOFLASH TC S22GTP # V34E TERMINATE TC +2 # PROCEED SAVE LANDING SITE COORD TC S22.981X # RECYCLE POINT A IN GSOP TC INTPRET DLOAD S22TOFF # EITHER PRESENT OR OFFSET TIME STOVL 6D # 6-7D= LANDING SITE TIME FOR R-TO-RP X789 STORE 0D # 0-5D= LANDING SITE VEC FOR R-TO-RP SLOAD CALL HIDPHALF # ANY NON-ZERO FOR MOON R-TO-RP # CONVERT RLS TO MOON-FIXED COORD STORE RLS # LANDING SITE VECTOR EXIT S22.981X TC INTPRET CALL 9DWTO6DW EXIT # GO TO POINT A IN CHAPTER 5 S22EXEX TC INTPRET # WITHOUT CONVERTING W GOTO S22RTNEX S22GTP TC INTPRET # CONVERT W BEFORE TC GOTOP00H CALL 9DWTO6DW EXIT TC GOTOP00H S22F2410 SETPD VLOAD # COMPUTE FORMULA 2.4.10 0D CSMPOS # RC B-29 EARTH, B-27 MOON # Page 609 UNIT DOT # UNIT ALSO SETS 36D=ABVAL(RC) USED BELOW UM SL1 DCOMP # GSOP CHANGE 8/18/67 PUSH # PD 2D 8D=COSA=-(UM.RC)/ABVAL(RC) B-1 DSQ BDSU DEC1B2 PDDL BOFF # PD 4D 2D=1-COSA SQ=SINA SQ B-2 ERADM # R0 ALWAYS B-29 FROM SETRE CMOONFLG +2 SL2 # SCALE R0 B-27 FOR MOON SR1R DDV # (R0/RC) B-1 36D DSQ DSU # PD 2D (RP/RC) SQ - SINA SQ B-2 SQRT BDSU # PD 0D COSA-SQRT((R0/RC)SQ-SINA SQ) B-1 DMP # DMP RESULT B-28 MOON, B-30 EARTH 36D # VXSC RESULT B-29 MOON, B-31 EARTH STORE S22RHO # RHO FOR W INIT. OF UNKNOWN LMK B-28,B-30 VXSC UM VSL2 VAD # SCALE B-27 MOON, B-29 EARTH AND ADD RC CSMPOS STORE X789 RVQ # B-27 FOR EARTH OR B-29 FOR MOON S22CALRC LXA,1 VLOAD # COMPUTE RC B-29 OR B-27 S22EORM # =0 FOR EARTH, -2 FOR MOON DELTACSM VSR* VAD 7,1 RCVCSM STORE CSMPOS RVQ SETLOC P22S BANK S2231X13 STORE S221X3 # MULT 3X1 BY 1X3, STORE RESULTING 3X3 IN SSP AXT,2 # S22UMRL - S22UMRL+17D S2 DEC 2 DEC 6 AXT,1 DEC 18 S2231NXT VLOAD VXSC* S221X3 S223X1 +6,2 STORE S22UMRL +18D,1 INCR,1 TIX,2 DEC -6 S2231NXT RVQ # Page 610 GETTF LXC,1 DLOAD* # SET MPAC= TF S22LOC 0,1 RVQ S22FLGS SET SET # INTEGRATION FLAGS DIM0FLAG D6OR9FLG SET SET VINTFLAG STATEFLG CLEAR RVQ INTYPFLG # SUBROUTINE TO MODIFY ALT AND STORE LAT TO LAT+5 IN LANDLAT TO LANDLAT+5 # PRIOR TO DISPLAY. LLASRD DLOAD # ALT, LANDALT METERS B-29 ALT STODL LANDALT LONG SR1 STORE LANDLONG RVQ # SUBROUTINE TO MODIFY LANDALT AND STORE LANDALT TO LANDALT+5 IN LAT TO # LAT+5 AFTER LMK DATA LOADED BY ASTRONAUT. LLASRDA DLOAD # ALT, LANDALT METERS B-29 LANDALT STODL ALT LANDLONG SL1 STORE LONG RVQ SETLOC P20S6 BANK 9DWTO6DW STQ SETPD 9DWXX 0D VLOAD PUSH # CLEAR WORKING AREA OF PUSHLIST HI6ZEROS # INCLUDING P PUSH PUSH # PD 18D SSP 9DWJ # J=29 USE 2*29 FOR DP WORDS DEC 58 9DWI=J LXA,1 SXA,1 # SET I=J 9DWJ 9DWI 9DWEPCAL CALL # Page 611 ROWDOT LXA,1 # P VARIES 0-20 INSTEAD OF 20-0 9DWP STORE EMATRIX +40D,1 INCR,1 SXA,1 DEC 2 9DWP SLOAD BHIZ # TEST I=0 9DWI 9DWTESTJ DSU # I=I-1 9DWID STORE 9DWI DSU BHIZ # TEST I=26 9DW26D 9DWSETI2 GOTO # NEXT E SUB P 9DWEPCAL 9DWSETI2 SSP GOTO # I=2 9DWI DEC 4 9DWEPCAL 9DWTESTJ SLOAD BHIZ # TEST J=0 9DWJ 9DWFIG6 DSU 9DWID STORE 9DWJ # J=J-1 DSU BHIZ # TEST J=26 9DW26D 9DWSETJ2 GOTO 9DWI=J 9DWSETJ2 SSP GOTO # SET J=2 9DWJ DEC 4 9DWI=J 9DWFIG6 CALL GRP2PC SSP VLOAD # START OF FIGURE 2.4-6 9DWJ # J=29 DEC 58 HI6ZEROS STORE 9DWP # P,N,I=0 AXT,1 SSP DEC 108 # CLEAR W0 TO W54 S1 6 CLEARW54 STORE W +108D,1 TIX,1 # Page 612 CLEARW54 9DWI=JA LXA,1 SXA,1 # I=J 9DWJ 9DWI CALL ROWDOT LXA,1 BDSU* 9DWP EMATRIX +40D,1 INCR,1 SXA,1 # -(P+1) 2 9DWP LXC,1 XSU,1 # -(I+N) 9DWI 9DWN BPL DLOAD # TEST WSQ LTE 0 9DWAAA HI6ZEROS # W=0 GOTO 9DWAAB 9DWAAA SQRT # W= SQRT(WSQ) 9DWAAB STORE W,1 STODL WORKW 9DWJ # TEST J=0 BHIZ 9DWEXITX # EXIT TST2I=0 SLOAD BHIZ # TEST I=0 9DWI 9DWN=N+3 DSU 9DWID STORE 9DWI # I=I-1 DSU BHIZ # TEST I=26 9DW26D 9DWAAC GOTO 9DWNEXEP 9DWAAC SSP # I=2 9DWI 4 9DWNEXEP CALL ROWDOT LXA,1 BDSU* # (EP-ROWI*ROWJ)/W 9DWP EMATRIX +40D,1 DDV INCR,1 # P=P+1 WORKW 2 SXA,1 LXC,1 9DWP # Page 613 9DWI XSU,1 BOV # -(I+N) 9DWN SETWIN=0 GOTO 9DWSETWX SETWIN=0 DLOAD # W(I+N)=0 HI6ZEROS 9DWSETWX STORE W,1 GOTO TST2I=0 9DWN=N+3 LXA,1 INCR,1 # N=N+3 9DWN 6 SXA,1 SLOAD # J=J-1 9DWN 9DWJ DSU 9DWID STORE 9DWJ DSU BHIZ # TEST J=26 9DW26D SETJ=2A GOTO 9DWI=JA SETJ=2A SSP GOTO # J=2 9DWJ 4 9DWI=JA 9DWEXITX CALL GRP2PC AXT,1 SSP # CLEAR W6,W7,W8 USED TEMP FOR EMATRIX DEC 54 S1 6 VLOAD HI6ZEROS 9DWEXXXA STORE W +162D,1 TIX,1 GOTO 9DWEXXXA 9DWXX ROWDOT SSP BOV XTMP1 OCT 377 +1 LXC,1 LXC,2 9DWI 9DWJ DLOAD PUSH HI6ZEROS # Page 614 ROWDOT1 DLOAD* DMPR* W,1 W,2 DAD PUSH BOV INCR,1 ROWDOT3 DEC -6 INCR,2 SLOAD DEC -6 XTMP1 BHIZ SR1 ROWDOT2 STORE XTMP1 GOTO ROWDOT1 ROWDOT2 DLOAD RVQ ROWDOT3 CLRGO ORBWFLAG ROWDOT2 WORKW = 0D XTMP1 = 6D 9DWP = 8D # P 9DWI = 10D # I 9DWN = 12D # N 9DWJ = 14D # J 9DWXX = S22UOFF S22UMRL = BVECTOR # 18 S22UUT = DELTAX # 18 S223X1 = 18D # 6 S221X3 = 24D # 6 S22D = 30D # 2 S22RHO = 32D # 2 S22RL = W +156D # 6 9DW26D 2DEC 52 B-14 9DWID 2DEC 2 B-14 SCTVAR 2DEC 1.0 E-6 B+18 IMUVARR 2DEC 0.04 E-6 B+18 DEC1B2 2DEC 1 B-2 V06N49EE VN 00649 V06N89B VN 00689 S22UOFF = LEMPOS # 6 U SUB OFF SETLOC P20S2 BANK # Page 615 # Nothing on this page. --- RSB 2009. # Page 616 # SUBROUTINE NAME: V89CALL # MOD NO: 0 DATE: 8 FEB 1968 # MOD BY: DIGITAL DEVEL GROUP LOG SECTION: P20-P25 # # FUNCTIONAL DESCRIPTION: # # CALLED BY VERB 89 ENTER DURING P00. PRIO 10 USED. CALCULATES AND # DISPLAYS FINAL GIMBAL ANGLES TO POINT CSM +X AXIS OR PREFERRED AXIS # (UNIT(Z)COS55 DEG + UNIT(X)SIN55 DEG) AT LM. # # 1. KEY IN V89 E ONLY IF IN PROG 00. IF NOT IN P00, OPERATOR ERROR AND # EXIT R63, OTHERWISE CONTINUE. # # 2. IF IN P00, DO IMU STATUS CHECK (R02BOTH). IF IMU ON AND ITS # ORIENTATION KNOWN TO CGC, CONTINUE. # # 3. FLASH DISPLAY V 04 N 06. R2 INDICATES WHICH SPACECRAFT AXIS IS TO # BE POINTED AT LM. INITIAL CHOICE IS PREFERRED AXIS. (R2=1). # ASTRONAUT CAN CHANGE TO (+X) AXIS (R2 NOT= 1) BY V22 E 2 E. CONTINUE # AFTER KEYING IN PROCEED. # # 4. SET PREFERRED ATTITUDE FLAG ACCORDING TO OPTION DESIRED. SET FLAG # FOR PREFERRED AXIS. RESET FLAG FOR X AXIS. # # 5. CURRENT TIME IS STORED AND R63COMP IS CALLED # # R63COMP JOB: # # UPDATE CSM AND LM STATE VECTORS USING CONIC EQUATIONS # # CALCULATES BOTH PREFERRED AND X AXIS TRACKING ATT FROM CSM TO LM. # # DESIRED GIMBAL ANGLES AS INDICATED BY PREFERRED ATTITUDE FLAG # ARE STORED FOR LATER R60CSM CALL. # # 6. FLASH DISPLAY V 06 N18 AND AWAIT RESPONSE. # # 7. RECYCLE: RETURN TO STEP 5. # TERMINATE: EXIT R63 ROUTINE # PROCEED: RESET 3AXISFLG AND CALL R60CSM FOR ATTITUDE MANEUVER. # # CALLING SEQUENCE: V 89 E # # SUBROUTINES CALLED: CHKP00H, R02BOTH, GOXDSPF, R63COMP, R60CSM # # ALARMS 1. OPERATOR ERROR IF NOT IN P00 # 2. PROGRAM ALARM IF IMU IS OFF # 3. PROGRAM ALARM IF IMU ORIENTATION IS UNKNOWN # Page 617 # # ERASABLE INITIALIZATION REQUIRED: NONE # # DEBRIS: OPTION1, OPTION1+1, PRFTEXAT(PREF ATT FLAG), P21TIME, 3AXISFLG DP1MIN 2DEC 6000 EBANK= P21TIME BANK 34 SETLOC P20S4 BANK COUNT* $$/R63 V89CALL TC BANKCALL # IMU STATUS CHECK. RETURNS IF ORIENTATION CADR R02BOTH # KNOWN. ALARMS IF NOT. CAF THREE # ALLOW ASTRONAUT TO SELECT DESIRED TS OPTION1 # TRACKING ATTITUDE AXIS CAF ONE TS OPTION1 +1 CAF VB04N06 # V 04 N 06 TC BANKCALL CADR GOFLASH TC ENDEXT # TERMINATE TC +2 # PROCEED TC -5 # DATA IN. OPTION1 +1 = 1 FOR PREF AXIS # = 2 FOR X AXIS CS OPTION1 +1 # 1 FOR PREF AXIS. 2 FOR X AXIS. AD ONE EXTEND BZF SETPAF RSTPAF TC DOWNFLAG # RESET PREF ATT FLAG FOR R63COMP ADRES RNGSCFLG # TO DO X AXIS. RESET BIT 10 FLAG 5 V89RECL TC INTPRET RTB DAD LOADTIME # READ PRESENT TIME DP1MIN # INTEGRATE TO 1 MIN FROM NOW STCALL P21TIME # STORE TIME FOR CALL TO R63COMP. R63COMP R63COMP # LEAVES DESIRED GIM ANGS IN THETAD, LOS IN EXIT # POINTVSM, AND SELECTED AXIS IN SCAXIS. CAF VB06N18 # V 06 N 18 TC BANKCALL # NOUN 18 REFERS TO THE DESIRED GIMBAL CADR GOFLASH TC ENDEXT # TERMINATE TC +2 # PROCEED TC V89RECL # RECYCLE TC DOWNFLAG # RESET 3 AXIS FLAG ADRES 3AXISFLG # RESET BIT 6 FLAG 5 # Page 618 TC BANKCALL # PERFORMS CSM MANEUVER TO ALIGN SELECTED CADR R60CSM # SPACECRAFT AXIS TO LOS. TCF ENDEXT SETPAF TC UPFLAG # SET PREFERRED ATT FLAG FOR R63COMP ADRES RNGSCFLG # TO DO PREF AXIS. SET BIT 10 FLAG 5. TC V89RECL VB04N06 VN 0406 VB06N18 VN 0618 R63COMP EQUALS R63 # Page 619 # PROGRAM NAME: P23 CISLUNAR MIDCOURSE NAVIGATION # MOD NO: # MOD BY: TOM KNATT # # FUNCTIONAL DESCRIPTION: DO MIDCOURSE NAVIGATION BY INCORPORATION OF # STAR/EARTH AND STAR/MOON OPTICAL MEASUREMENTS. # # CALLING SEQUENCE: ASTRONAUT OPERATED # # SUBROUTINES CALLED: R52,R53,R57,R60,ORBITAL INTEGRATION (INTEGRV) # INCORP1,INCORP2,LALOTORV,LUNLMKLD, AND DISPLAY INTERFACE ROuTINES. # # N0RMAL EXIT MODES: VIA R00 # # ALARMS: NONE # # ABORT MODES: NONE # # ERASABLE INITIALIZATION REQUIRED: PAD-LOADED ERASABLES, ORBWFLAG RESET, # REFSMFLG=0 IF IMU OFF AND REFSMFLG=1 IF IMU ONE # # INPUTS BY USER REQUIRED: STAR NUMBER, LANDMARK LAT, LONG/2, ALT OR ID NUMB. # IF LANDMARK IS USED, NEAR OR FAR HORIzON IF HORIZON IS USED, AND # BODY TO BE MARKED ON (EARTH OR MOON). SEE GSOP CHAPT 4. # # OUTPUT: UPDATED CMC STATE VECTOR. VECTOR FROM S/C TO HORIZON OR LANDMARK # IN POINTAXS. POINTAXS CAN BE USED TO GENERATE THIS VECTOR APART FROM # P23 IF DESIRED. # # DEBRIS: NO USABLE DEBRIS IS GENERATED. RENDWFLG IS RESET FOR P20 UPON # COMPLETION OF P23. RUPTREGS AND ERASABLES USED BY DISPLAYS ARE DEBRIS. BANK 31 SETLOC RT23 BANK COUNT 31/S23 EBANK= W P23 TC DOWNFLAG ADRES RNDVZFLG TC 2PHSCHNG OCT 00004 # LEAVE GROUP 4 OCT 00012 # ENTER GROUP 2 CAF PRIO13 TS PHSPRDT2 TC INTPRET SSP CLEAR MARKINDX 1 TARG2FLG # TARGET FLAG USED R52 AND R53 CLEAR SSP TARG1FLG STARIND 0 SSP CLEAR BESTI 0 R57FLAG # SET = DO NOT REPERFORM R57 CLEAR EXIT V94FLAG # SET = ALLOW V94 P23.00 TC INTPRET # Page 620 BON CALL REFSMFLG # SET NOW AS INPUT, NORMALLY EXTERNAL CONT P23.05 # WHEN ALIGNED, PERFORM MEASUREMENT R57 # DO OPTICS CALIBRATION IF IMU NOT ALIGNED. CALL R53 GOTO P23.60 P23.05 CLEAR EXIT SAVECFLG # USED TO SAVE SPACE IN P23.65 P23.06 CAF V05N70 TC BANKCALL # IDENTIFICATION: STAR, HOR IDENT. CADR GOFLASH TC GOTOP00H # TERMINATE TC P23.15 TC -5 # REDISPLAY P23.15 CA LANDMARK # IF C=2, LUNAFLAG=1. IF C=1, LUNAFLAG=0 EXTEND BZF P23.151 CA HORIZON EXTEND BZF +2 TC R23.10 # OPERATOR DSKY ERROR CA LANDMARK TC P23.152 P23.151 CA HORIZON EXTEND BZF R23.10 P23.152 MASK BITS7-9 # IS C EQUAL TO 1 OR 2 AD NEG100 EXTEND BZF P23.16 AD NEG100 EXTEND BZF +2 TC R23.10 TC UPFLAG ADRES LUNAFLAG TCF +3 P23.16 TC DOWNFLAG ADRES LUNAFLAG CA STARCODE # IS STARCODE GREATER THAN OR EXTEND # EQUAL TO 0 AND LESS THAN 37 BZF P23.176 EXTEND BZMF R23.10 AD NEG37 EXTEND BZMF +2 TC R23.10 # Page 621 TC INTPRET P23.17 SLOAD BZE STARCODE P23.175 PUSH SLOAD DMP SPSIX LXA,1 SXA,1 MPAC +1 BESTI # BESTI = 6 X STAR NUMBER CALL LOWMEMRY # NEEDED TO RETRIEVE STAR VECTOR FROM LOW STORE STARSAV2 # STORE FOR R53,P23. US(IN P23)=STARSAV2 P23.175 EXIT P23.176 CA HORIZON EXTEND BZF P23.20 MASK BITS4-6 AD -OCT10 EXTEND BZF P23.18 AD -OCT10 EXTEND BZF +2 TC R23.10 TC UPFLAG ADRES NORFHOR TC P23.30 P23.18 TC DOWNFLAG ADRES NORFHOR TC P23.30 P23.20 TC INTPRET CALL P22SUBRB EXIT P23.30 TC INTPRET SLOAD BZE STARCODE LDPLANET P23.31 BON EXIT SAVECFLG P23.85 CAF V50N25P TC BANKCALL CADR GOPERF1 # GOPERF1 BLANKS OUT R2 AND R3 TC GOTOP00H TC V94ENTER # PROCEED. AUTOCONTROL CMC P23.55 TC INTPRET GOTO P23.56 # Page 622 # VERB 94 BEGINS HERE V94ENTER TC INTPRET RTB LOADTIME # READ CLOCK STCALL MARKTIME POINTAXS # RETURN LOS IN RCLL AND MPAC MXV UNIT REFSMMAT STOVL POINTVSM JCAXIS STORE SCAXIS EXIT TC DOWNFLAG # CLEAR AND GO TO VECPOINT IN R60 ADRES 3AXISFLG # BIT 6 FLAG 5 CAF R60ADRS TS TEMPFLSH TC PHASCHNG OCT 00012 R60CALL TC BANKCALL CADR R60CSM TC PHASCHNG OCT 04022 TC INTPRET BON R57FLAG P23.57 # DO NOT REPERFORM R57 P23.56 CALL R57 P23.57 SET SET V94FLAG R57FLAG CALL R52 CLEAR CLEAR V94FLAG R57FLAG P23.60 EXIT INHINT CA MARKSTAT MASK LOW10 TS MARKDATA EXTEND INDEX MARKDATA DCA 0 DXCH MARKTIME INDEX MARKDATA CA 5 XCH TRUNION RELINT TC INTPRET # Page 623 LXC,1 VLOAD* MARKDATA 1,1 STODL* MARKDOWN +1 0,1 STORE MARKDOWN EXIT CAF V05N71 TC BANKCALL CADR GOFLASH TC GOTOP00H # TERMINATE TC P23.65 # STORE DATA TC -5 # REDISPLAY P23.65 TC INTPRET SET EXIT SAVECFLG TC P23.15 P23.85 CLEAR CALL RENDWFLG POINTAXS GOTO R23.55 # WE BEGIN CALCULATIONS HERE # POINTAXIS SUBROUTINE POINTAXS STQ POINTEX R23.05 BON DLOAD ORBWFLAG R23.1 WMIDPOS STCALL 0 INITIALW # INITIALIZE W-MATRIX FIRST PASS IN P23 R23.1 CALL SETINTG # SETUP FOR CSM INTEGRATION BOF SET ORBWFLAG R23.2 DIM0FLAG R23.2 SET CALL ORBWFLAG INTEGRV # INTEGRATE CSM STATE VEC. TO MARKTIME EXIT TC PHASCHNG OCT 04022 TC INTPRET CALL RECT.1 # PICKUP CSM STATE VECTOR FROM PERM BOFF ZMEASURE # IN SPHERE OF INFLUENCE OF PRIMARY BODY R23.3 # Page 624 DLOAD CALL MARKTIME LUNPOS BON VCOMP CMOONFLG +1 VAD RZC STORE RZC R23.3 SLOAD BHIZ LANDMARK # IF LANDMARK = 0, USE HORIZ SUBR R23.4 SET ERADFLAG DLOAD CALL MARKTIME LALOTORV GOTO R23.5 R23.4 CALL HORIZ R23.5 VSU SETPD RZC 0 GOTO POINTEX # Page 625 R23.55 UNIT PUSH # RCLL IS IN MPAC VLOAD 34D # RCLL * RCLL STOVL 30D # PUSH 30-31 =RCLL*RCLL 32-33=ABVAL RCLL VZC VXSC VSR ONE/C 15D VAD # PUSH UP RCLL(UNIT) UNIT STOVL UCLSTAR VZC VSR2 VSU VESO VXSC VSR ONE/C 13D VAD UNIT US STORE USSTAR DOT SL1 UCLSTAR PUSH VLOAD # PD 0,1 = USSTAR(DOT)UCLSTAR UCLSTAR VXSC VCOMP VSL1 VAD USSTAR UNIT STOVL BVECTOR # USSTAR - COSQ(UCLSTAR) ZEROVECS STORE BVECTOR +6 STODL BVECTOR +12D 0 ACOS DCOMP PUSH DLOAD ZEROVECS EXIT CA VARSUBL # PUT FIXED INTO ERASABLE FOR MSU TS L # INSTRUCTION COMING UP CA TRUNION # REQUIRED TO CHANGE 2'S COMPLEMENT EXTEND # TRUNION TO 1'S COMPLEMENT MSU L # TRUNION (2'S)-00000 CONVERTS TRUNION TO TS MPAC # 1'S. VARSUBL=00000. TC INTPRET PUSH SLOAD # PUSH IS DP. WHEN BDSU IS EXECUTED, 2ND TRUNBIAS # HALF OF PUSHLIST IS GUARANTEED ZERO FROM BDSU # DLOAD ZEROVECS ABOVE SR3 DAD DAD DMP # Page 626 TRUN19 32D DMP SL3 PI/4.0 BOFF SL2 CMOONFLG R23.51 R23.51 STODL DELTAQ 30D # RCLL * RCLL DMP RTB TRUNVAR TPMODE TAD VARSUBL STORE VARIANCE CLEAR CALL DMENFLG INCORP1 CALL GRP2PC VLOAD ABVAL DELTAX +6 BOF SR2 # DISPLAY IS 2-27 IF IN LUNAR SPHERE. CMOONFLG R23.52 R23.52 STOVL N49DISP +2 DELTAX ABVAL BOF SR2 CMOONFLG R23.53 R23.53 STORE N49DISP EXIT R23.6 CAF V6N49 TC BANKCALL CADR GOFLASHR TC GOTOP00H TC R23.7 # INCORPORATE DATA TC GOTOP00H CAF BIT3 # BLAN OUT R3 TC BLANKET TC PHASCHNG OCT 00012 TC ENDOFJOB R23.7 TC INTPRET R23.8 SET CALL VEHUPFLG INCORP2 EXIT R23.END TC GOTOP00H # Page 622 R23.10 TC FALTON TC P23.06 HORIZ STQ SETPD SRRETURN 0 DLOAD PDDL # PUSH 0-1 = -AYO SCALED B0 -AYO AXO PDDL PDVL # PUSH 2-3 = +AX SCALED B0 DPPOSMAX US VXV UNIT RZC STOVL UBAR2 VXV UNIT # PUSH UP UBAR2 STOVL UBAR0 UBAR2 VXV UNIT UBAR0 STORE UBAR1 BON DOT LUNAFLAG HORIZ.6 0 # UBAR1 DOT UZ STCALL ALPHAV +4 GETERAD DAD PDDL # MPAC HAS RADIUS OF FISCHER ELLIPSOID HORIZALT # PUSH 0-1 = BH SCALED B29 AEARTH DAD PUSH # PUSH 2-3 = AH B29 HORIZALT HORIZ.1 VLOAD MXV RZC # B29 UBAR0 # B1 VSL1 PDVL # PUSH 4-9 = RH(XH,YH,ZH) B29 US MXV VSL1 UBAR0 PDDL # PUSH 10-15 = USH B1 2 # AH STODL 34D 4 # XH CALL DIVIDE SR* DMP 8D,1 # NOW SCALED B9 MPAC STODL 30D 0 # Page 628 STODL 34D 6 # YH CALL DIVIDE SR* DMP 8D,1 # B9 MPAC # B18 DAD PUSH # PUSH 16-17 =A SCALED B18 30D DSU SQRT 1.0B18 PDDL # PUSH 18-19 SQRT(A-1) B9 16D STODL 34D 4 # XH CALL DIVIDE SR* PDDL 17D,1 # PUSH 20-21 = XH/A B29 6 # YH CALL DIVIDE SR* PDDL 17D,1 # PUSH 22-23 = YH/A B29 16D # A STODL 34D 18D # SQRT(A-1) CALL DIVIDE SR* 8D,1 STODL 28D 0 # BH STODL 34D 2 # AH CALL DIVIDE SR* DMP # AH/BH SCALED B1 0,1 28D # SQRT(A-1)/A DMP SL1 6 # YH PDDL 2 # AH STODL 34D 0 CALL DIVIDE SR* DMP # BH/AH SCALED B1 0,1 # Page 629 28D # SQRT (A-1)/A DMP SL1 4 # XH PDDL DAD 20D # XH/A 24D # ALPHA PDDL DSU 22D # YH/A 26D # BETA PUSH SETPD 16D DLOAD DSU 20D # XH/A 24D # ALPHA PDDL DAD 22D # YH/A 26D # BETA PDDL PUSH ZEROVECS STOVL 32D # ZERO THIRD COMP. OF T-0 VECTOR 28D VSU UNIT 4 # RH VECTOR DOT PDVL # PUSH 22-23 A-SUB-ZERO 10D # USH VECTOR 16D # T1 VECTOR VSU UNIT 4 # RH VECTOR DOT PUSH # PUSH 24-25 A-SUB-ONE 10D BDSU BMN 22D # A-SUB-ZERO HORIZ.3 BON NORFHOR HORIZ.4 HORIZ.2 VLOAD GOTO 28D # T-0 VECTOR HORIZ.5 HORIZ.3 BON GOTO NORFHOR HORIZ.2 HORIZ.4 HORIZ.4 VLOAD 16D # T1 VECTOR HORIZ.5 VXM VSL1 UBAR0 GOTO SRRETURN HORIZ.6 DLOAD PUSH # Page 630 RADMOON PUSH GOTO HORIZ.1 DIVIDE NORM SR1 X1 STODL 36D 34D NORM BDDV S1 36D XSU,1 RVQ S1 RECT.1 BOFF AXT,2 # SR TO SET ZMEASURE = 0 IF MEASUREMENT CMOONFLG # PLANET AND PRIMARY PLANET ARE THE SAME. RECT.3 # OTHERWISE = 1 DEC -2 BOFF # VEC. AND SCALE B29 AND B7 LUNAFLAG RECT.4 RECT.2 CLEAR GOTO ZMEASURE RECT.5 RECT.3 AXT,2 BOFF 0 LUNAFLAG RECT.2 RECT.4 SET ZMEASURE RECT.5 VLOAD VSR7 DELTACSM # SCALED B22 OR B18 VSR* VAD 0,2 RCVCSM # SCALED B29 OR B27 VSR* 0,2 STOVL RZC # NOW SCALED B29 NUVCSM # SCALED B3 OR B-1 VSR4 VSR* 0,2 VAD VSR* VCVCSM # SCALED B7 OR B5 0,2 STORE VZC # NOW SCALED B7 RVQ ONE/C 2DEC* .333564049 E-6 B+21* AEARTH 2DEC 6378166 B-29 # A AXIS OF EARTH (METERS B-29) RADMOON 2DEC 1738090 B-29 # RADIUS MOON IN METERS # Page 631 TRUN19 OCT 01604 TRUN19A OCT 00000 1.0B18 2DEC 1.0 B-18 VARSUBL DEC 0 VARSUBL3 2DEC* 3.4299040 E+6 B-26* TRUNVAR 2DEC 2.5 E-9 B+18 V6N49 VN 0649 V05N70 VN 0570 V05N71 VN 0571 OCT00077 OCT 00077 V50N25P OCT 00202 SPSIX OCT 00006 JCAXIS 2DEC .2688190620 # 1/2(SIN 32.523 DEG) TRACK AXIS 2DEC 0 2DEC .4215878460 # 1/2(COS 32.523 DEG) R60ADRS CADR R60CALL +3 NEG37 DEC -37 BITS7-9 OCT 700 BITS4-6 OCT 70 SETLOC RT53 BANK LOWMEMRY VLOAD* RVQ CATLOG,1 BANK 37 SETLOC P23S1 BANK LDPLANET EXIT # KEEP THIS OPEN SUBROUTINE IN EBANK=5 CAF VNPLAN23 # BECAUSE STAR IS EBANK=5 TC BANKCALL # LDPLANET ALLOWS VECTOR TO PLANET TO BE CADR GOFLASH # STORED IN STARSAV2 IF STORED STARS ARE TC GOTOP00H # NOT VISIBLE TC +2 TC -5 TC INTPRET VLOAD STARSAV3 VXSC UNIT 1/SQR3 STORE STARSAV2 GOTO P23.31 VNPLAN23 VN 0688 BLOCK 02 GOTOV56 EXTEND # P20 TERMINATES BY GOTOV56 INSTEAD OF # Page 632 DCA VB56CADR # GOTOP00H TCF SUPDXCHZ EBANK= WHOCARES VB56CADR 2CADR TRACKTRM SETLOC FFTAG2 BANK COUNT* $$/P20 BANK 40 SETLOC ENDPINS1 BANK COUNT* $$/EXTVB V67CALL TC INTPRET CALL V67WW EXIT V06N99DS CAF V06N99A TC BANKCALL CADR GOXDSPF TCF ENDEXT TC V06N9933 TC V06N99DS V06N9933 TC INTPRET SLOAD BHIZ # IF R3 OF V67 = 0 EXIT WWOPT +3 GOTO V6N99INP EXIT TCF ENDEXT V6N99INP LXA,1 LXA,2 WWPOS WWVEL SLOAD DSU WWOPT V67DEC2 BHIZ BPL V67WORB V67WMID SXA,1 SXA,2 WRENDPOS WRENDVEL GOTO V67EXITX V67WORB SXA,1 SXA,2 WORBPOS WORBVEL GOTO V67EXITX V67WMID SXA,1 SXA,2 # Page 633 WMIDPOS WMIDVEL V67EXITX CLEAR CLEAR ORBWFLAG RENDWFLG EXIT TCF ENDEXT V67WW STQ BOV S2 +1 CALL INTSTALL SSP DLOAD S1 DEC 6 ZEROVECS STORE WWPOS STORE WWVEL STORE WWOPT AXT,1 DEC 36 NXPOSVEL VLOAD* VSQ W +36D,1 DAD WWPOS STORE WWPOS VLOAD* VSQ W +90D,1 DAD WWVEL STORE WWVEL TIX,1 SQRT NXPOSVEL STODL WWVEL WWPOS SQRT STORE WWPOS BOV GOTO +2 V67XXX DLOAD DPPOSMAX STORE WWPOS STORE WWVEL V67XXX DLOAD DSU WWPOS FT99999 BMN DLOAD +3 FT99999 # Page 634 STORE WWPOS LXA,1 SXA,1 S2 QPRET EXIT TC POSTJUMP CADR INTWAKE WWPOS = RANGE WWVEL = RRATE WWOPT = RTHETA V06N99A VN 0699 FT99999 2DEC 30479 B-19 V67DEC2 2DEC 2 B-14 SBANK= LOWSUPER