# Copyright: Public domain. # Filename: SERVICER207.agc # Purpose: Part of the source code for Comanche, build 055. It # is part of the source code for the Command Module's # (CM) Apollo Guidance Computer (AGC), Apollo 11. # Assembler: yaYUL # Reference: pp. 819-836 # Contact: Ron Burkey <info@sandroid.org> # Website: http://www.ibiblio.org/apollo. # Mod history: 2009-05-12 RSB Adapted from Colossus249 file of the same # name and Comanche 055 page images. # # The contents of the "Comanche055" files, in general, are transcribed # from scanned documents. # # Assemble revision 055 of AGC program Comanche by NASA # 2021113-051. April 1, 1969. # # This AGC program shall also be referred to as Colossus 2A # # Prepared by # Massachusetts Institute of Technology # 75 Cambridge Parkway # Cambridge, Massachusetts # # under NASA contract NAS 9-4065. # # Refer directly to the online document mentioned above for further # information. Please report any errors to info@sandroid.org.
# Page 819 # SERVICER207
# PROGRAM NAME - PREREAD, READACCS, SERVICER, AVERAGE G.
# MOD NO. 00 BY M.HAMILTON DEC.12, 1966
# FUNCTIONAL DESCRIPTION
# THE ROUTINES DESCRIBED BELOW ARE USED TO CALCULATE VALUES OF RN, VN, AND GDT/2 DURING ACCELERATED FLIGHT. # THE SEVERAL ROUTINES COMPRISE A PACKAGE AND ARE NOT MEANT TO BE USED AS SEPARATE SUBROUTINES.
# GENERAL REFERENCES TO SERVICER OR AVERAGE G ARE UNDERSTOOD TO REFER TO THE ENTIRE SET OF ROUTINES INCLUDING # READACCS, SERVICER, AVERAGE G, INTEREAD, SMOOTHER, AND ANY ADDITIONAL ROUTINES ATTACHED AT AVGEXIT (SEE BELOW).
# PROGRAMS INITIATING SERVICER ARE REQUIRED TO MAKE A WAITLIST CALL FOR PREREAD (OR, IF LIFTOFF, FOR BIBIBIAS) # AT 2 SECONDS BEFORE THE FIRST AVERAGE G UPDATE IN ORDER TO INITIALIZE THE SEQUENCE, WHICH WILL RECUR EVERY # 2 SECONDS FROM THAT TIME ON AS LONG AS AVEGFLAG REMAINS SET.
# THE USE OF ERASABLE AVGEXIT ALLOWS VARIOUS ROUTINES TO BE PERFORMED AS PART OF THE NORMAL CYCLE (SEE # EXPLANATION OF AVGEXIT BELOW).
# DESCRIPTIONS OF INDIVIDUAL ROUTINES FOLLOW.
# PREREAD
# PREVIOUSLY EXTRAPOLATED VALUES COPIED FROM RN1, VN1, AND PIPTIME1 INTO RN, VN, AND PIPTIME. # LASTBIAS JOB SCHEDULED. # PIPS READ AND CLEARED VIA PIPASR SUBROUTINE. # AVERAGE G FLAG SET ON. # DRIFT FLAG SET OFF. # V37 FLAG SET ON. # INITIALIZATION OF 1) THRUST MONITOR (DVMON) - DVCNTR SET TO ONE. # 2) TOTAL ACCUMULATED DELV VALUE (DVTOTAL) - SET TO ZERO. # 3) AXIS VECTOR (AXIS) - SET TO (.5,0,0). # NORMLIZE JOB SCHEDULED. # READACCS TASH CALLED IN 2 SECONDS.
# NORMLIZE # # GDT/2 INITIALIZED VIA CALCGRAV SUBROUTINE.
# READACCS
# IF ONMON FLAG SET QUIKREAD ROUTINE IS PERFORMED BEFORE PIPASR ZEROS THE PIPA REGISTERS, AND THE 1/2 SEC # ONMONITOR LOOP IS INITIATED TO PROVIDE DOWNLINK INFORMATION DURING ENTRY. # PIPS READ AND CLEARED BY PIPASR SUBROUTINE. # IF CM/DSTBY IS ON, ENTRY VARIABLES INITIALIZED AND SETJTAG TASK CALLED. # Page 820 # SERVICER207
# IF AVERAGEG FLAG ON READACCS CALLED TO RECYCLE IN 2 SECONDS. # IF AVERAGEG FLAG OFF AVERAGE G EXIT (AVGEXIT) SET TO 2CADR AVGEND FOR FINAL PASS. # SERVICER JOB SCHEDULED.
# TEST CONNECTOR OUTBIT TURNED ON.
# ONMNITOR
# A SEQUENCE OF THREE PASSES THROUGH QUICREAD FOLLOWING A CALL TO READACCS WITH ONMONFLG SET AT 1/2 # SEC INTERVALS. INTERVALS ARE COUNTED OUT BY PIPCTR, INITIALISED AT 3 BY READACCS
# QUIKREAD
# READS CURRENT PIPS INTO X,Y,ZPIPBUF. READS OLD X,Y,ZPIPBUF INTO X,Y,ZOLDBUF. VALUES ARE SENT TO # DOWNLIST DURING ENTRY. # SERVICER # DELV VALUES CHECKED TO DETECT RUNAWAY PIP - # IF BAD PIP 1) ALARM SENT. # 2) COMPENSATION, DVTOTAL ACCUMULATION, AND DVMON BYPASSED. CONTROL # TRANSFERRED TO AVERAGE G. # PIPS COMPENSATED VIA 1/PIPA SUBROUTINE. # DVTOTAL INCREMENTED BY ABSOLUTE VALUE OF DELV. # THRUST MONITOR (DVMON) PERFORMED UNLESS IDLE FLAG IS ON. # CONTROL TRANSFERRED TO AVERAGE Q.
# DVMON
# THRESHOLD VALUD (PLACED IN DVTHRUSH BY USER) CHECKED AGAINST ABSOLUTE VALUE OF DELV TO CHECK # THRUST LEVEL. # IF THRUST 1) ULLAGE OFF ROUTINE PERFORMED. # 2) STEERING FLAG TURNED ON AT FIRST DETECTION OF THRUST. # 3) CONTROL TRANSFERRED TO AVERAGE G. # IF NO THRUST 1) ON FIRST PASS THROUGH MONITOR, CONTROL TRANSFERRED TO AVERAGE G. # 2) ON SUBSEQUENT PASSES, CONTROL TRANSFERRED TO ENGINE FAIL ROUTINE IF THRUST # HAS FAILED FOR 3 CONSECUTIVE PASSES.
# ENGINE FAIL
# ENGFAIL1 TASK CALLED IN 2.5 SECONDS. THIS WILL RETURN CONTROL TO TIG-5 SO THAT THE IGNITION # SEQUENCE MAY BE REPEATED. # ENGINOF3 PERFORMED. # DAP SET UP FOR RCS.
# AVERAGE G # Page 821 # RN1, VN1, GDT1/2 CALCULATED VIA CALCRVG ROUTINE BY UPDATING RN, VN WITH DELV AND AN AVERAGED VALUE # OF GDT/2. # RN1, VN1, GDT1/2, PIPTIME1 COPIED INTO RN, VN, GDT/2, PIPTIME FOR RESTART PROTECTION. # CONTROL TRANSFERRED TO ADDRESS SPECIFIED BY USER (OR BY READACCS FOR LAST PASS) IN AVGEXIT. # LAST PASS (AVGEND) 1) FREE FALL GYRO COMPENSATION SET UP. # 2) DRIFT FLAG TURNED ON. # 3) STATE VECTOR TRANSFERRED VIA AVETOMID ROUTINE. # 4) ONMONITOR FLAG RESET. # 5) V37 FLAG RESET. # 6) TEST CONNECTOR OUTBIT RESET. # 7) CONTROL TRANSFERRED TO CANV37 TO CONTINUE MM CHANGE ROUTINE (R00).
# CALLING SEQUENCE
# PREREAD ENTERED DIRECTLY FROM TIG-30 VIA POSTJUMP. # READACCS CALLED AS WAITLIST TASK.
# AVGEXIT - THIS IS A DOUBLE PRECISION ERASABLE LOCATION BY WHICH CONTROL IS TRANSFERRED AT THE END # OF EACH CYCLE OF AVERAGE G. # THE 2CADR OF A ROUTINE TO BE PERFORMED AT THAT TIME (E.G., STEERING EQUATIONS TO BE PERFORMED # AT 2 SECOND INTERVALS) MAY BE SET BY THE USER INTO AVGEXIT. # ALL SUCH ROUTINES SHOULD RETURN TO SERVEXIT, WHICH IS THE NORMAL EXIT FROM AVERAGE G.
# SERVEXIT - DOES A PHASE CHANGE FOR RESTART PROTECTION AND GOES TO ENDOFJOB. # THE 2CADR OF SERVEXIT IS SET INTO AVGEXIT BY THE USER IF NO OTHER ROUTINE (SEE ABOVE). # # AVGEND - LAST PASS OF AVERAGE G EXITS HERE, BYPASSING SPECIAL ROUTINE (SEE ABOVE UNDER READACCS). # FINAL EXIT IS TO CANV37. F AVERAGE G).
# OUTPUT
# DVTOTAL(2) PIPTIME(2) XPIPBUF(2) YPIPBUF(2) ZPIPBUF(2) # RN(6) REFERENCE COORD. SCALED AT 2(+29) M/CS # VN(6) REFERENCE COORD. SCALED AT 2(+7) M/CS # GDT/2(6) REFERENCE COORD. SCALED AT 2(+7) M/CS # DELV(6) STABLE MEMB. COORD.SCALED AT 2(+14)*5.85*10(-4)M/CS (KPIP1 USED TO GET DV/2 AT 2(+7)) # Page 822 # DELVREF(6) REFERENCE COORD. SCALED AT 2(+7) M/CS
# INITIALIZATION
# ONMONITOR FLAG SET BY ENTRY TO SHOW PIPBUF VALUES REQUIRED. # IDLE FLAG ON IF DVMON TO BE BYPASSED. # DVTHRUSH SET TO APPROPRIATE VALUE FOR DVMON. # AVGEXIT SET TO 2CADR OF ROUTINE, IF ANY, TO BE PERFORMED AFTER EACH CYCLE OF AVERAGE G. IF NO ROUTINE # TO BE DONE, AVGEXIT SET TO SERVEXIT. # VALUES NEEDED # REFSMMAT # UNITW - FULL UNIT VECTOR, IN REFERENCE COORD., OF EARTH S ROTATIONAL VECTOR # RN1, VN1, PIPTIME1 - IN REFERENCE COORD., CONSISTENT WITH TIME OF EXECUTION OF PREREAD
# DEBRIS
# CENTRALS A, L, Q # OTHER INTERNAL - DVCNTR(1) PIPAGE(1) PIPCTR(1) AVGEXIT(2) # EXTERNAL - ITEMP1(1) ITEMP2(1) RUPTREG1(1) TEMX(1) TEMY(1) TEMZ(1) # USEFUL DEBRIS # RN1(6) VN1(6) GDT1/2 PIPTIME1(2) # THESE LOCATIONS USED AS BUFFER STORAGE FOR NEWLY CALCULATED VALUES OF RN, VN, GDT/2, # AND PIPTIME DURING PERFORMANCE OF SERVICER ROUTINES. # UNITR - HALF UNIT VECTOR OF RN, REFERENCE COORD. # RMAG SCALED AT 2(+58) IN 36D. # RMAGSQ SCALED AT 2(+58) IN 34D. # (RE/RMAG)SQ IN 32D.
PREREAD CAF PRIO21 # CALLER MUST PROTECT PREREAD TC NOVAC EBANK= NBDX 2CADR LASTBIAS # DO LAST GYRO COMPENSATION IN FREE FALL
# CALL-TO AND LASTBIAS ITSELF ARE NOT # PROTECTED. REREADAC SETS 1/PIPADT # TO 2.0 SECS IN CASE LASTBIAS LOST. # (REDUNDANT IF LASTBIAS IS AOK) # Page 823
REDO5.31TC PREREAD1
CAF PRIO32 TC FINDVAC # SET UP NORMLIZE JOB REQUIRED PRIOR TO EBANK= DVCNTR # FIRST AVERAGE G PASS 2CADR NORMLIZE
CAF2SECS TC WAITLIST EBANK= AOG 2CADR READACCS
CS TWO TC NEWPHASE OCT5
TCF TASKOVER
PREREAD1 EXTEND QXCH RUPTREG1
TC PIPASR # CLEAR + READ PIPS LAST TIME IN FREE FALL
CAF ONE # SET UP PIPAGE FOR REREADAC IN CASE A TS PIPAGE # RESTART OCCURS BEFORE READACCS
CS FLAGWRD1 # SET AVEG FLAG MASK BIT1 ADS FLAGWRD1
CA POSMAX MASK FLAGWRD2 TS FLAGWRD2 # KNOCK DOWN DRIFT FLAG
# Page 827 # ROUTINE NAME: ONMNITOR # MOD 04 BY BAIRNSFATHER 30 APR 1968 REDO ONMNITOR TO SAVE PIPS EACH 0.5 SEC FOR TM,ENTRY. # MOD 03 BY FISHER DECEMBER 1967 # MOD 02 BY RYE SEPT 1967 # MOD 01 BY KOSMALA 23 MAR 1967 # MOD 00 BY KOSMALA 27 FEB 1967
# FUNCTIONAL DESCRIPTION
# THE PURPOSE OF ONMONITOR IS TO PROVIDE 1/2 SEC.READING OF PIPAS FOR DOWNLIST DURING ENTRY. # X,Y,ZPIPBUF CONTAIN PRESET VALUES X,Y,ZOLDBUF CONTAIN VALUES FROM PREVIOUS READING.
# CALLING SEQUENCE
# CALL AS WAITLIST TASK. TERMINATES ITSELF IN TASKOVER
# INITIALISATION
# PIPCTR = 2 (FOR DT = 0.5 SEC) # X,Y,ZPIPBUF SET TO PREVIOUS PIPAX,Y,Z
QUIKREAD CAF TWO TS RUPTREG1 INDEX A CA PIPAX # SAVE ACTUAL PIPAS FOR TM. INDEX RUPTREG1 XCH XPIPBUF # UPDATE X,Y,ZPIPBUF INDEX RUPTREG1 TS XOLDBUF # AND X,Y,ZOLDBUF
CHKCTR CCS RUPTREG1 TCF QUIKREAD +1# LOOP AGAIN CCS PIPCTR TCF ONMNITOR TC TASKOVER
# Page 830 CAF BIT7 # RESTORE GROUP 1 + 2 IF P20 IS RUNNING. MASK FLAGWRD0 EXTEND BZF +4
TC2PHSCHNG OCT111# 1.11SPOT OCT132# 2.13SPOT
TC POSTJUMP CADR CANV37
SERVEXIT TC PHASCHNG OCT00035# A, 5.3 = REREADAC (ONLY)
TCF ENDOFJOB
DVTHRUSH EQUALS ELEVEN # 15 PERCENT OF 2SEC PIPA ACCUMULATION, # FOR 503-FULL CSM/LEM....DELV SC.AT # 5.85 CM/SEC.
-MAXDELV DEC -6398# 3200 PPS FOR 2 SEC CCS TAKES 1
JTAGTIME DEC120# = 1 SEC + T CDU, T CDU = .1 SEC
2.5SEC DEC250
MDOTFAIL DEC144.0 B-16# 5 SEC MASS LOSS AT 28.8 KG/SEC # SHOULD BE 2-4 SECS FOR NO START # 6-8 SECS FOR FAILURE
# Page 831 # NORMLIZE PERFORMS THE INITIALIZATION REQUIRED PRIOR TO THE FIRST ENTRY TO AVERAGEG, AND SCALES RN SO THAT IT # HAS 1 LEADING BINARY ZERO. IN MOST MISSIONS, RN WILL BE SCALED AT 2(+29), BUT IN THE 206 MISSION, RN WILL BE # SCALED AT 2(+24)M.
NORMLIZE CAF THIRTEEN # SET UP TO COPY 14 REGS- RN1,VN1,PIPTIME1 TC GENTRAN # INTO RN,VN, PIPTIME ADRES RN1 # FROM HERE ADRES RN # TO HERE
STOVL GDT/2
GOBL1/2 STORE GOBL/2 EXIT TCF ENDOFJOB
# Page 832 # ***** PIPA READER *****
# MOD NO. 00 BY D. LICKLY DEC.9 1966
# FUNCTIONAL DESCRIPTION
# SUBROUTINE TO READ PIPA COUNTERS, TRYING TO BE VERY CAREFUL SO THAT IT WILL BE RESTARTABLE. # PIPA READINGS ARE STORED IN THE VECTOR DELV. THE HIGH ORDER PART OF EACH COMPONENT CONTAINS THE PIPA READING, # RESTARTS BEGIN AT REREADAC.
# AT THE END OF THE PIPA READER THE CDUS ARE READ AND STORED AS A # VECTOR IN CDUTEMP. THE HIGH ORDER PART OF EACH COMPONENT CONTAINS # THE CDU READING IN 2S COMP IN THE ORDER CDUX,Y,Z. THE THRUST # VECTOR ESTIMATOR IN FINDCDUD REQUIRES THE CDUS BE READ AT PIPTIME.
# CALLING SEQUENCE AND EXIT
# CALL VIA TC, ISWCALL, ETC.
# EXIT IS VIA Q.
# INPUT
# INPUT IS THROUGH THE COUNTERS PIPAX, PIPAY, PIPAZ, AND TIME2.
# OUTPUT
# HIGH ORDER COMPONENTS OF THE VECTOR DELV CONTAIN THE PIPA READINGS. # PIPTIME CONTAINS TIME OF PIPA READING.
# DEBRIS (ERASABLE LOCATIONS DESTROYED BY THE PROGRAM)
# LOW ORDER DELV'S ARE ZEROED FOR TM INDICATION. # TEMX TEMY TEMZ PIPAGE
PIPASR EXTEND DCA TIME2 DXCH PIPTIME1 # CURRENT TIME POSITIVE VALUE CS ZERO # INITIALIZE THESE AT NEG ZERO. TS TEMX TS TEMY TS TEMZ # Page 833 CA ZERO TS DELVZ # OTHER DELVS OK INCLUDING LOW ORDER TS DELVY
TS DELVX +1# LOW ORDER DELV'S ARE ZEROED FOR TM: THUS TS DELVY +1# IF DNLNK'D LOW ORDER DELVS ARE NZ, THEY TS DELVZ +1# CONTAIN PROPER COMPENSATION. IF=0, THEN # THE TM VALUES ARE BEFORE COMPENSATION.
TS PIPAGE # SHOW PIPA READING IN PROGRESS
REPIP1 EXTEND
DCS PIPAX # X AND Y PIPS READ DXCH TEMX DXCH PIPAX # PIPAS SET TO NEG ZERO AS READ. TS DELVX LXCH DELVY
REPIP3 CS PIPAZ # REPEAT PROCESS FOR Z PIP XCH TEMZ XCH PIPAZ
DODELVZ TS DELVZ
CAF PRIO31 # RESTART MAY HAVE WIPED OUT LASTBIAS, AN TS1/PIPADT # UNPROTECTED NOVAC FROM PREREAD, # WHICH SET(S) UP 1/PIPADT (THUSLY) # FOR NON-COASTING COMPENSATION....BE # SURE 1/PIPADT IS AOK. (PRIO31 IS # 2.0SEC SC.AT B+8CS)
CCS PIPAGE TCF READACCS # PIP READING NOT STARTED. GO TO BEGINNING
CAF DONEADR # SET UP RETURN FROM PIPASR TS Q
CCS DELVZ TC Q # Z DONE, GO DO CDUS TCF +3# Z NOT DONE, CHECK Y. TC Q TC Q # Page 834
ZL CCS DELVY TCF +3 TCF CHKTEMX # Y NOT DONE, CHECK X. TCF +1 LXCH PIPAZ # Y DONE, ZERO Z PIP.
CCS TEMZ CS TEMZ # TEMZ NOT = -0, CONTAINS -PIPAZ VALUE. TCF DODELVZ TCF -2 LXCH DELVZ # TEMZ = -0, L HAS ZPIP VALUE. TC Q
CHKTEMX CCS TEMX # HAS THIS CHANGED CS TEMX # YES TCF +3# YES TCF -2# YES TCF REPIP1 # NO TS DELVX
CS TEMY TS DELVY
CS ZERO # ZERO X AND Y PIPS DXCH PIPAX # L STILL ZERO FROM ABOVE
# ROUTINE CALCRVG INTEGRATES THE EQUATIONS OF MOTION BY AVERAGING THE THRUST AND GRAVITATIONAL # ACCELERATIONS OVER A TIME INTERVAL OF 2 SECONDS. # # FOR THE EARTH-CENTERED GRAVITATIONAL FIELD, THE PERTURBATION DUE TO OBLATENESS IS COMPUTED TO THE FIRST # HARMONIC COEFFICIENT J.
# ROUTINE CALCRVG REQUIRES... # 1) THRUST ACCELERATION INCREMENTS IN DELV SCALED SAME AS PIPAX,Y,Z IN STABLE MEMBER COORDS. # 2) VN SCALED 2(+7)M/CS IN REFERENCE COORDS. # 3) RN SCALED AT 2(+29) METERS IN REFERENCE COORDS. # 4) UNITW THE EARTH S UNIT ROTATIONAL VECTOR (SCALED AS A FULL UNIT VECTOR) IN REFERENCE COORDS.
# IT LEAVES RN1 UPDATED (SCALED AT 2(+29)M, VN1 (SCALED AT 2(+7)M/CS), AND GDT1/2 (SCALED AT 2(+7)M/CS). ALSO HALF # UNIT VECTOR UNITR, RMAG IN 36D SCALED AT 2(+29)M, R MAG SQ. IN 34D SCALED AT 2(+58) M SQ.
CALCGRAV UNIT PUSH# ENTER WITH RN IN MPAC STORE UNITR
LXC,1SLOAD
RTX2
X1
BMN VLOAD
ITISMOON
DOT PUSH
UNITW
DSQ BDSU
DP1/20
PDDL DDV
RESQ 34D # (RN)SQ STORE32D # TEMP FOR (RE/RN)SQ
DMP DMP 20J VXSC PDDL
UNITR
DMP DMP 2J 32D VXSC VAD
UNITW STADR STORE GOBL1/2
VAD PUSH
UNITR
ITISMOON DLOAD NORM 34D
X2
BDDV* SLR* # Page 836
-MUDT(E),1 0 -21D,2 VXSCSTADR STORE GDT1/2# SCALED AT 2(+7) M/CS
RVQ
CALCRVG VLOAD VXSC
DELV
KPIP1
VXM VSL1
REFSMMAT STORE DELVREF # DELV IN REF COORDS AT 2(+7)
VSR1 PUSH
VAD PUSH# (DV-OLDGDT)/2 TO PD SCALED AT 2(+7)M/CS
GDT/2
VAD VXSC VN 2SEC(22)
VAD STQ
RN 31D
STCALL RN1 # TEMP STORAGE OF RN SCALED 2(+29)M
CALCGRAV
VAD VAD
VAD VN
STCALL VN1 # TEMP STORAGE OF VN SCALED 2(+7)M/CS. 31D
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.