549 lines
16 KiB
Plaintext
549 lines
16 KiB
Plaintext
# Copyright: Public domain.
|
|
# Filename: UPDATE_PROGRAM.agc
|
|
# Purpose: Part of the source code for Luminary 1A build 099.
|
|
# It is part of the source code for the Lunar Module's (LM)
|
|
# Apollo Guidance Computer (AGC), for Apollo 11.
|
|
# Assembler: yaYUL
|
|
# Contact: Ron Burkey <info@sandroid.org>.
|
|
# Website: www.ibiblio.org/apollo.
|
|
# Pages: 1386-1396
|
|
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
|
|
# from the Luminary131/ file of the same
|
|
# name, using Luminary099 page images.
|
|
# 2009-06-07 RSB Added an SBANK= to account for incompatibilities
|
|
# between YUL and yaYUL.
|
|
# 2011-01-06 JL Fixed pseudo-label indentation.
|
|
# 2011-05-07 JL Flag SBANK= workaround.
|
|
|
|
# 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 001 of AGC program LMY99 by NASA 2021112-61
|
|
# 16:27 JULY 14, 1969
|
|
|
|
# Page 1386
|
|
# PROGRAM NAME: P27
|
|
# WRITTEN BY: KILROY/ DE WOLF
|
|
#
|
|
# MOD NO: 6
|
|
# MOD BY: KILROY
|
|
# DATE: 01DEC67
|
|
#
|
|
# LOG SECTION: UPDATE PROGRAM.
|
|
#
|
|
# FUNCT. DESCR.: P27 (THE UPDATE PROGRAM) PROCESSES COMMANDS AND DATA
|
|
# INSERTIONS REQUESTED BY THE GROUND VIA UPLINK.
|
|
# THE P27 PROGRAM WILL ACCEPT UPDATES
|
|
# ONLY DURING P00 FOR THE LM, AND ONLY DURINT P00,
|
|
# P02, AND FRESH START FOR THE CSM
|
|
#
|
|
# CALLING SEQ: PROGRAM IS INITIATED BY UPLINK ENTRY OF VERBS 70, 71, 72, AND 73.
|
|
#
|
|
# SUBROUTINES: TESTXACT, NEWMODEX, NEWMODEX +3, GOXDSPF, BANKCALL, FINDVAC, INTPRET, INTSTALL, TPAGREE,
|
|
# INTWAKEU, ENDEXT, POSTJUMP, FALTON, NEWPHASE, PHASCHNG
|
|
#
|
|
# NORMAL EXIT: TC ENDEXT
|
|
#
|
|
# ALARM/ABORT: TC FALTON FOLLOWED BY TC ENDEXT
|
|
#
|
|
# RESTARTS: P27 IS RESTART PROTECTED IN TWO WAYS ...
|
|
# 1. PRIOR TO VERIFLAG INVERSION (WHICH IS CAUSED BY THE GROUND/ASTRONAUT'S VERIFICATION OF UPDATE
|
|
# DATA BY SENDING A V33E WHEN V21N02 IS FLASHING)---
|
|
# NO PROTECTION EXCEPT PRE-P27 MODE IS RESTROED, COAST + ALIGN DOWNLIST IS SELECTED AND UPLINK
|
|
# ACTIVITY LIGHT IS TURNED OFF. (JUST AS IF A V34E WAS SENT DURING P27 DATA LOADS).
|
|
# V70,V71,V72, OR V73 WILL HAVE TO BE COMPLETELY RESENT BY USER.
|
|
# 2. AFTER VERIFLAG INVERSION (WHEN UPDATE OF THE SPECIFIED ERASABLES IS BEING PERFORMED)---
|
|
# PROTECTED AGAINST RESTARTS.
|
|
#
|
|
# DEBRIS: UPBUFF (20D) TEMP STORAGE FOR ADDRESSES AND CONTENTS.
|
|
# UPVERB (1) VERB NUMBER MINUS 70D (E.G., FOR V72, UPVERB = 72D - 70D = 2)
|
|
# UPOLDMOD(1) FOR MAJOR MODE INTERRUPTED BY P27.
|
|
# COMPNUMB(1) TOTAL NUMBER OF COMPONENTS TO BE TRANSMITTED.
|
|
# UPCOUNT (1) ACTUAL NUMBER OF COMPONENTS RECEIVED.
|
|
# UPTEMP (1) SCRATCH, BUT USUALLY CONTAINS COMPONENT NUMBER TO BE CHANGED DURING VERIFY CYCLE
|
|
#
|
|
# INPUT:
|
|
#
|
|
# ENTRY DESCRIPTION
|
|
# V70EXXXXXEXXXXXE (LIFTOFF TIME INCREMENT) DOUBLE PRECISION OCTAL TIME INCREMENT, XXXXX XXXXX,
|
|
# IS ADDED TO TEPHEM, SUBTRACTED FROM AGC CLOCK(TIME2,TIME1), SUBTRACTED FROM CSM STATE
|
|
# VECTOR TIME(TETCSM) AND SUBTRACTED FROM LEM STATE VECTOR TIME(TETLEM).
|
|
# THE DP OCTAL TIME INCREMENT IS SCALED AT 2(28).
|
|
# Page 1387
|
|
# V71EIIEAAAAE (CONTIGUOUS BLOCK UPDATE) II-2 OCTAL COMPONENTS, XXXXX,
|
|
# XXXXXE ARE LOADED INTO ERASABLE STARTING AT ECADR, AAAA.
|
|
# XXXXXE IT IS .GE. 3 .AND. .LE. 200.,
|
|
# ... AND (AAAA + II -3) DOES NOT PRODUCE AN ADDRESS IN THE
|
|
# NEXT BANK.
|
|
# SCALING IS SAME AS INTERNAL REGISTERS.
|
|
# V72EIIE (SCATTER UPDATE) (II-1)/2 OCTAL COMPONENTS, XXXXX, ARE
|
|
# AAAAEXXXXXE LOADED INTO ERASABLE LOCATIONS, AAAA.
|
|
# AAAAEXXXXXE II IS .GE. 3 .AND. .LE. 19D, AND MUST BE ODD.
|
|
# ... SCALING IS SAME AS INTERNAL REGISTERS.
|
|
#
|
|
# V73EXXXXXEXXXXXE (OCTAL CLOCK INCREMENT) DOUBLE PRECISION OCTAL TIME
|
|
# INCREMENT XXXXX XXXXX, IS ADDED TO THE AGC CLOCK, IN
|
|
# CENTISECONDS SCALED AT (2)28).
|
|
# THIS LOAD IS THE OCTAL EQUIVALENT OF V55.
|
|
#
|
|
# OUTPUT: IN ADDITION TO THE ABOVE REGISTER LOADS, ALL UPDATES
|
|
# COMPLEMENT BIT3 OF FLAGWORD7.
|
|
#
|
|
# ADDITIONAL NOTES: VERB 71, JUST DEFINED ABOVE WILL BE USED TO PERFORM BUT NOT LIMITED TO THE FOLLOWING UPDATES --
|
|
# 1. CSM/LM STATE VECTOR UPDATE
|
|
# 2. REFSMMAT UPDATE
|
|
#
|
|
# THE FOLLOWING COMMENTS DELINEATE EACH SPECIAL UPDATE ---
|
|
#
|
|
# 1. CSM/LM STATE VECTOR UPDATE (ALL DATA ENTRIES IN OCTAL)
|
|
# ENTRIES: DATA DEFINITION: SCALE FACTORS:
|
|
# V71E CONTIGUOUS BLOCK UPDATE VERB
|
|
# 21E NUMBER OF COMPONENTS FOR STATE VECTOR UPDATE
|
|
# AAAAE ECADR OF `UPSVFLAG'
|
|
# XXXXXE STATE VECTOR IDENTIFIER: 00001 FOR CSM, 77776 FOR LEM -- EARTH SPHERE OF INFLUENCE SCALING
|
|
# 00002 FOR CSM, 77775 FOR LEM -- LUNAR SPHERE OF INFLUENCE SCALING
|
|
# XXXXXEXXXXXE X POSITION
|
|
# XXXXXEXXXXXE Y POSITION
|
|
# XXXXXEXXXXXE Z POSITION
|
|
# XXXXXEXXXXXE X VELOCITY
|
|
# XXXXXEXXXXXE Y VELOCITY
|
|
# XXXXXEXXXXXE Z VELOCITY
|
|
# XXXXXEXXXXXE TIME FROM AGC CLOCK ZERO
|
|
# V33E VERB 33 TO SIGNAL THAT THE STATE VECTOR IS READY TO BE STORED.
|
|
#
|
|
# 2. REFSMMAT (ALL DATA ENTRIES IN OCTAL)
|
|
# ENTRIES: DATA DEFINITITIONS: SCALE FACTORS:
|
|
# Page 1388
|
|
# V71E CONTIGUOUS BLOCK UPDATE VERB
|
|
# 24E NUMBER OF COMPONENTS FOR REFSMMAT UPDATE
|
|
# AAAAE ECADR OF `REFSMMAT'
|
|
# XXXXXEXXXXXE ROW 1 COLUMN 1 2(-1)
|
|
# XXXXXEXXXXXE ROW 1 COLUMN 2 2(-1)
|
|
# XXXXXEXXXXXE ROW 1 COLUMN 3 2(-1)
|
|
# XXXXXEXXXXXE ROW 2 COLUMN 1 2(-1)
|
|
# XXXXXEXXXXXE ROW 2 COLUMN 2 2(-1)
|
|
# XXXXXEXXXXXE ROW 2 COLUMN 3 2(-1)
|
|
# XXXXXEXXXXXE ROW 3 COLUMN 1 2(-1)
|
|
# XXXXXEXXXXXE ROW 3 COLUMN 2 2(-1)
|
|
# XXXXXEXXXXXE ROW 3 COLUMN 3 2(-1)
|
|
# V33E VERB 33 TO SIGNAL THAT REFSMMAT IS READY TO BE STORED
|
|
|
|
|
|
|
|
BANK 07
|
|
SETLOC EXTVERBS
|
|
BANK
|
|
|
|
EBANK= TEPHEM
|
|
|
|
COUNT* $$/P27
|
|
V70UPDAT CAF UP70 # COMES HERE ON V70E
|
|
TCF V73UPDAT +1
|
|
|
|
V71UPDAT CAF UP71 # COMES HERE ON V71E
|
|
TCF V73UPDAT +1
|
|
|
|
V72UPDAT CAF UP72 # COMES HERE ON V72E
|
|
TCF V73UPDAT +1
|
|
|
|
V73UPDAT CAF UP73 # COMES HERE ON V73E
|
|
|
|
+1 TS UPVERBSV # SAVE UPVERB UNTIL IT'S OK TO ENTER P27
|
|
|
|
TC TESTXACT # GRAB DISPLAY IF AVAILABLE, OTHERWISE
|
|
# TURN*OPERATOR ERROR* ON AND TERMINATEJOB
|
|
|
|
CA MODREG # CHECK IF UPDATE ALLOWED
|
|
EXTEND # FIRST CHECK FOR MODREG = +0, -0
|
|
BZF +3 # (+0 = P00, -0 = FRESHSTART)
|
|
UPERROR TC POSTJUMP # TURN ON 'OPERATOR ERROR' LIGHT
|
|
CADR UPERROUT +2 # GO TO COMMON UPDATE PROGRAM EXIT
|
|
|
|
CAE MODREG # UPDATE ALLOWED.
|
|
CKMDMORE = UPERROR
|
|
TS UPOLDMOD # SAVE CURRENT MAJOR MODE
|
|
# Page 1389
|
|
CAE UPVERBSV # SET UPVERB TO INDICDATE TO P27
|
|
|
|
TS UPVERB # WHICH EXTENDED VERB CALLED IT.
|
|
|
|
CAF ONE
|
|
TS UPCOUNT # INITIALIZE UPCOUNT TO 1
|
|
|
|
TC POSTJUMP # LEAVE EXTENDED VERB BANK AND
|
|
CADR UPPART2 # GO TO UPDATE PROGRAM (P27) BANK.
|
|
|
|
UP70 EQUALS ZERO
|
|
UP71 EQUALS ONE
|
|
UP72 EQUALS TWO
|
|
UP73 EQUALS THREE
|
|
|
|
BANK 04
|
|
SETLOC UPDATE2
|
|
BANK
|
|
|
|
COUNT* $$/P27
|
|
|
|
UPPART2 EQUALS # UPDATE PROGRAM -- PART 2
|
|
|
|
TC PHASCHNG # SET RESTART GROUP 6 TO RESTORE OLD MODE
|
|
OCT 07026 # AND DOWNLIST AND EXIT IF RESTART OCCURS.
|
|
OCT 30000 # PRIORITY SAME AS CHRPRIO
|
|
## [WORKAROUND] RSB 2009
|
|
SBANK= PINSUPER
|
|
## [WORKAROUND]
|
|
EBANK= UPBUFF
|
|
2CADR UPOUT +1
|
|
|
|
CAF ONE
|
|
TS DNLSTCOD # DOWNLIST
|
|
|
|
TC NEWMODEX # SET MAJOR MODE = 27
|
|
DEC 27
|
|
|
|
INDEX UPVERB # BRANCH DEPENDING ON WHETHER THE UPDATE
|
|
TCF +1 # VERB REQUIRES A FIXED OR VARIABLE NUMBER
|
|
TCF +3 # V70 FIXED (OF COMPONENTS)
|
|
TCF OHWELL1 # V71 VARIABLE -- GO GET NO. OF COMPONENTS
|
|
TCF OHWELL1 # V72 VARIABLE -- GO GET NO. OF COMPONENTS
|
|
CA TWO # V73 (AND V70) FIXED
|
|
TS COMPNUMB # SET NUMBER OF COMPONENTS TO 2.
|
|
TCF OHWELL2 # GO GET THE TWO UPDATE COMPONENTS
|
|
|
|
OHWELL1 CAF ADUPBUFF # * REQUEST USER TO SEND NUMBER *
|
|
TS MPAC +2 # * OF COMPONENTS PARAMETER(II).*
|
|
+2 CAF UPLOADNV # (CKV432 RETURNS HERE IF V32 ENCOUNTERED)
|
|
TC BANKCALL # DISPLAY A FLASHING V21N01
|
|
# Page 1390
|
|
CADR GOXDSPF # TO REQUEST II.
|
|
|
|
TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
|
|
TCF OHWELL1 +2
|
|
TC CK4V32 # DATA OR V32 RETURN
|
|
CS BIT2
|
|
AD UPBUFF # IS II (NUMBER OF COMPONENTS PARAMETER)
|
|
EXTEND # .GE. 3 AND .LE. 20D.
|
|
BZMF OHWELL1 +2
|
|
CS UPBUFF
|
|
AD UP21
|
|
EXTEND
|
|
BZMF OHWELL1 +2
|
|
CAE UPBUFF
|
|
TS COMPNUMB # SAVE II IN COMPNUMB
|
|
|
|
# UPBUFF LOADING SEQUENCE
|
|
|
|
INCR UPCOUNT # INCREMENT COUNT OF COMPONENTS RECEIVED.
|
|
OHWELL2 CAF ADUPBFM1 # CALCULATE LOCATION (ECADR) IN UPBUFF
|
|
AD UPCOUNT # WHERE NEXT COMPONENT SHOULD BE STORED
|
|
+2 TS MPAC +2 # PLACE ECADR INTO R3.
|
|
+3 CAF UPLOADNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
|
|
TC BANKCALL # DISPLAY A FLASHING V21N01
|
|
CADR GOXDSPF # TO REQUEST DATA.
|
|
TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN.
|
|
TCF OHWELL2 +3 # V33 PROCEED RETURN
|
|
TC CK4V32 # DATA OR V32 RETURN
|
|
CS UPCOUNT # HAVE WE FINISHED RECEIVING ALL
|
|
AD COMPNUMB # THE DATA WE EXPECTED.
|
|
EXTEND
|
|
BZMF UPVERIFY # YES -- GO TO VERIFICATION SEQUENCE
|
|
TCF OHWELL2 -1 # NO -- REQUEST ADDITIONAL DATA.
|
|
|
|
# VERIFY SEQUENCE
|
|
|
|
UPVERIFY CAF ADUPTEMP # PLACE ECADR WHERE COMPONENT NO. INDEX
|
|
TS MPAC +2 # IS TO BE STORED INTO R3.
|
|
CAF UPVRFYNV # (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
|
|
TC BANKCALL # DISPLAY A FLASHING V21N02 TO REQUEST
|
|
CADR GOXDSPF # DATA CORRECTION OR VERIFICATION.
|
|
TCF UPOUT4 # V34 TERMINATE UPDATE (P27) RETURN
|
|
TCF UPSTORE # V33 DATA SENT IS GOOD. GO STORE IT.
|
|
TC CK4V32 # COMPONENT NO. INDEX OR V32 RETURN
|
|
CA UPTEMP # DOES THE COMPONENT NO. INDEX JUST SENT
|
|
EXTEND # SPECIFY A LEGAL COMPONENT NUMBER?
|
|
BZMF UPVERIFY # NO, IT IS NOT POSITIVE NONZERO
|
|
CS UPTEMP
|
|
AD COMPNUMB
|
|
# Page 1391
|
|
AD BIT1
|
|
EXTEND
|
|
BZMF UPVERIFY # NO
|
|
CAF ADUPBFM1 # YES -- BASED ON THE COMPONENT NO. INDEX
|
|
AD UPTEMP # CALCULATE THE ECADR OF LOCATION IN
|
|
TCF OHWELL2 +2 # UPBUFF WHICH USER WANTS TO CHANGE.
|
|
|
|
UPOUT4 EQUALS UPOUT +1 # COMES HERE ON V34 TO TERMINATE UPDATE
|
|
|
|
# CHECK FOR VERB 32 SEQUENCE
|
|
|
|
CK4V32 CS MPAC # ON DATA RETURN FROM `GOXDSPF'
|
|
MASK BIT6 # ON DATA RETURN FROM "GOXDSP" & THE CON-
|
|
CCS A # TENTS OF MPAC = VERB. SO TEST FOR V32.
|
|
TC Q # IT'S NOT A V32, IT'S DATA. PROCEED.
|
|
INDEX Q
|
|
TC 0 -6 # V32 ENCOUNTERED -- GO BACK AND GET DATA
|
|
|
|
ADUPTEMP ADRES UPTEMP # ADDRESS OF TEMP STORAGE FOR CORRECTIONS
|
|
ADUPBUFF ADRES UPBUFF # ADDRESS OF UPDATE DATA STORAGE BUFFER
|
|
UPLOADNV VN 2101 # VERB 21 NOUN 01
|
|
UPVRFYNV VN 2102 # VERB 21 NOUN 02
|
|
UP21 = MD1 # DEC 21 = MAX NO OF COMPONENTS +1
|
|
UPDTPHAS EQUALS FIVE
|
|
|
|
# PRE-STORE AND FAN TO APPROPRIATE BRANCH SEQUENCE
|
|
|
|
UPSTORE EQUALS # GROUND HAS VERIFIED UPDATE. STORE DATA.
|
|
|
|
INHINT
|
|
|
|
CAE FLAGWRD7 # INVERT VERIFLAG (BIT 3 OF FLAGWRD7) TO
|
|
XCH L # INDICATE TO THE GROUND (VIA DOWNLINK)
|
|
CAF VERIFBIT # THAT THE V33 (WHICH THE GROUND SENT TO
|
|
EXTEND # VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
|
|
RXOR LCHAN # RECEIVED BY THE UPDATE PROGRAM
|
|
TS FLAGWRD7
|
|
|
|
TC PHASCHNG # SET RESTART GROUP 6 TO REDO THE UPDATE
|
|
OCT 04026 # DATA STORE IF A RESTART OCCURS.
|
|
INHINT # (BECAUSE PHASCHNG DID A RELINT)
|
|
|
|
CS TWO # GO TO UPFNDVAC IF INSTALL IS REQUIRED.
|
|
AD UPVERB # THAT IS, IF IT'S A V70 - V72.
|
|
EXTEND # GO TO UPEND73 IF IT'S A V73.
|
|
BZMF UPFNDVAC
|
|
|
|
# VERB 73 BRANCH
|
|
# Page 1392
|
|
UPEND73 EXTEND # V73 -- PERFORM DP OCTAL AGC CLOCK INCREMENT
|
|
|
|
DCA UPBUFF
|
|
DXCH UPBUFF +8D
|
|
TC TIMEDIDL
|
|
TC FALTON # ERROR -- TURN ON *OPERATOR ERROR* LIGHT
|
|
TC UPOUT +1 # GO TO COMMON UPDATE PROGRAM EXIT
|
|
|
|
UPFNDVAC CAF CHRPRIO # (USE EXTENDED VERB PRIORITY)
|
|
TC FINDVAC # GET VAC AREA FOR 'CALL INTSTALL'
|
|
EBANK= TEPHEM
|
|
2CADR UPJOB # (NOTE: THIS WILL ALSO SET EBANK FOR
|
|
TC ENDOFJOB # 'TEPHEM' UPDATE BY V70)
|
|
|
|
UPJOB TC INTPRET # THIS COULD BE A STATE VECTOR UPDATE -- SO
|
|
CALL # WAIT (PUT JOB TO SLEEP) IF ORBIT INT(OI)
|
|
INTSTALL # IS IN PROGRESS -- OR -- GRAB OI AND RETURN
|
|
# TO UPWAKE IF OI IS NOT IN PROGRESS.
|
|
|
|
UPWAKE EXIT
|
|
|
|
TC PHASCHNG # RESTART PROTECT (GROUP 6)
|
|
OCT 04026
|
|
|
|
TC UPFLAG # SET INTEGRATION RESTART BIT
|
|
ADRES REINTFLG
|
|
INHINT
|
|
UPPART3 EQUALS
|
|
|
|
INDEX UPVERB # BRANCH TO THE APPROPRIATE UPDATE VERB
|
|
TCF +1 # ROUTINE TO ACTUALLY PERFORM THE UPDATE
|
|
TCF UPEND70 # V70
|
|
TCF UPEND71 # V71
|
|
TCF UPEND72 # V72
|
|
|
|
# ROUTINE TO INCREMENT CLOCK (TIME2,TIME1) WITH CONTENTS OF DP WORD AT UPBUFF.
|
|
|
|
TIMEDIDL EXTEND
|
|
QXCH UPTEMP # SAVE Q FOR RETURN
|
|
CAF ZERO # ZERO AND SAVE TIME2,TIME1
|
|
ZL
|
|
DXCH TIME2
|
|
DXCH UPBUFF +18D # STORE IN CASE OF OVERFLOW
|
|
|
|
CAF UPDTPHAS # SO
|
|
TS L # A
|
|
COM # QUICK
|
|
DXCH -PHASE6 # PHASCHNG
|
|
# Page 1393
|
|
TIMEDIDR INHINT
|
|
|
|
CAF ZERO
|
|
ZL # PICK UP INCRMENTER (AND ZERO
|
|
TS MPAC +2 # IT IN CASE OF RESTARTS) AND
|
|
DXCH UPBUFF +8D # STORE IT
|
|
DXCH MPAC # INTO MPAC FOR TPAGREE.
|
|
|
|
EXTEND
|
|
DCA UPBUFF +18D
|
|
DAS MPAC # FORM SUM IN MPAC
|
|
EXTEND
|
|
BZF DELTAOK # TEST FOR OVERFLOW
|
|
CAF ZERO
|
|
DXCH UPBUFF +18D # OVERFLOW, RESTORE OLD VALUE OF CLOCK
|
|
DAS TIME2 # AND TURN ON OPERATOR ERROR
|
|
|
|
TC PHASCHNG # RESTART PROTECT (GROUP 6)
|
|
OCT 04026
|
|
|
|
TC UPTEMP # GO TO ERROR EXIT
|
|
|
|
DELTAOK TC TPAGREE # FORCE SIGN AGREEMENT
|
|
DXCH MPAC
|
|
DAS TIME2 # INCREMENT TIME2,TIME1
|
|
|
|
TC PHASCHNG # RESTART PROTECT (GROUP 6)
|
|
OCT 04026
|
|
|
|
INHINT
|
|
INDEX UPTEMP # (CODED THIS WAY FOR RESTART PROTECTION)
|
|
TC 1 # NORMAL RETURN
|
|
|
|
# VERB 71 BRANCH
|
|
|
|
UPEND71 CAE UPBUFF +1 # SET EBANK
|
|
TS EBANK # AND
|
|
MASK LOW8 # CALCULATE
|
|
TS UPTEMP # S-REG VALUE OF RECEIVING AREA
|
|
|
|
AD NEG3 # IN THE PROCESS OF
|
|
AD COMPNUMB # PERFORMING
|
|
EXTEND # THIS UPDATE
|
|
BZF STORLP71 # WILL WE
|
|
MASK BIT9 # OVERFLOW
|
|
CCS A # INTO THE NEXT EBANK....
|
|
TCF UPERROUT # YES
|
|
|
|
CA NEG3 # NO -- CALCULATE NUMBER OF
|
|
AD COMPNUMB # WORDS TO BE STORED MINUS ONE
|
|
STORLP71 TS MPAC # SAVE NO. OF WORDS REMAINING MINUS ONE
|
|
# Page 1394
|
|
INDEX A # TAKE NEXT UPDATE WORD FROM
|
|
CA UPBUFF +2 # UPBUFF AND
|
|
|
|
TS L # SAVE IT IN L
|
|
CA MPAC # CALCULATE NEXT
|
|
AD UPTEMP # RECEIVING ADDRESS
|
|
INDEX A
|
|
EBANK= 1400
|
|
LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
|
|
EBANK= TEPHEM
|
|
CCS MPAC # ARE THERE ANY WORDS LEFT TO BE STORED
|
|
TCF STORLP71 # YES
|
|
TCF UPOUT # NO -- THEN EXIT UPDATE PROGRAM
|
|
ADUPBFM1 ADRES UPBUFF -1 # SAME AS ADUPBUFF BUT LESS 1 (DON'T MOVE)
|
|
TCF UPOUT # NO -- EXIT UPDATE (HERE WHEN COMPNUMB = 3)
|
|
|
|
# VERB 72 BRANCH
|
|
|
|
UPEND72 CAF BIT1 # HAVE AN ODD NO. OF COMPONENTS
|
|
MASK COMPNUMB # BEEN SENT FOR A V72 UPDATE ...
|
|
CCS A
|
|
TCF +2 # YES
|
|
TCF UPERROUT # ERROR -- SHOULD BE ODD NO. OF COMPONENTS
|
|
CS BIT2
|
|
AD COMPNUMB
|
|
LDLOOP72 TS MPAC # NOW PERFORM THE UPDATE
|
|
INDEX A
|
|
CAE UPBUFF +1 # PICK UP NEXT UPDATE WORD
|
|
LXCH A
|
|
CCS MPAC # SET POINTER TO ECADR (MUST BE CCS)
|
|
TS MPAC
|
|
INDEX A
|
|
CAE UPBUFF +1 # PICK UP NEXT ECADR OF REG TO BE UPDATED
|
|
TS EBANK # SET EBANK
|
|
MASK LOW8 # ISOLATE RELATIVE ADDRESS
|
|
INDEX A
|
|
EBANK= 1400
|
|
LXCH 1400 # UPDATE THE REGISTER BY CONTENTS OF L
|
|
EBANK= TEPHEM
|
|
CCS MPAC # ARE WE THORUGH THE V72 UPDATE...
|
|
TCF LDLOOP72 # NO
|
|
|
|
# NORMAL FINISH OF P27
|
|
|
|
UPOUT EQUALS
|
|
TC INTWAKEU # RELEASE GRAB OF ORBITAL INTEGRATION
|
|
+1 CAE UPOLDMOD # RESTORE PRIOR P27 MODE
|
|
TC NEWMODEX +3
|
|
CAF ZERO
|
|
# Page 1395
|
|
TS DNLSTCOD
|
|
TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
|
|
|
|
EXTEND # KILL GROUP 6.
|
|
DCA NEG0
|
|
DXCH -PHASE6
|
|
|
|
TC ENDEXT # EXTENDED VERB EXIT
|
|
|
|
# VERB TO BRANCH
|
|
|
|
UPEND70 EXTEND # V70 DOES THE FOLLOWING WITH DP DELTA
|
|
DCS UPBUFF # TIME IN UPBUFF
|
|
DXCH UPBUFF +8D
|
|
TC TIMEDIDL # DECREMENT AGC CLOCK
|
|
|
|
TC UPERROUT # ERROR WHILE DECREMENTING CLOCK -- EXIT
|
|
|
|
EBANK= TEPHEM
|
|
EXTEND
|
|
DCS UPBUFF # COPY DECREMENTERS FOR
|
|
DXCH UPBUFF +10D # RESTART PROTECTION
|
|
EXTEND
|
|
DCS UPBUFF
|
|
DXCH UPBUFF +12D
|
|
|
|
TC PHASCHNG # RESTART PROTECT (GROUP 6)
|
|
OCT 04026
|
|
|
|
CAF ZERO
|
|
ZL
|
|
DXCH UPBUFF +10D # DECREMENT CSM STATE VECTOR TIME
|
|
DAS TETCSM
|
|
|
|
CAF ZERO
|
|
ZL
|
|
DXCH UPBUFF +12D # DECREMENT LEM STATE VECTOR TIME
|
|
DAS TETLEM
|
|
|
|
CAF ZERO
|
|
ZL
|
|
DXCH UPBUFF
|
|
DAS TEPHEM +1 # INCREMENT TP TEPHEM
|
|
ADS TEPHEM
|
|
|
|
TC PHASCHNG # RESTART PROTECT (GROUP 6)
|
|
OCT 04026
|
|
|
|
EBANK= UPBUFF
|
|
# Page 1396
|
|
TC UPOUT # GO TO STANDARD UPDATE PROGRAM EXIT
|
|
|
|
|
|
# ERROR SEQUENCE
|
|
|
|
UPERROUT TC FALTON # TURN ON *OPERATOR ERROR* LIGHT
|
|
TCF UPOUT # GO TO COMMON UPDATE PROGRAM EXIT
|
|
|
|
+2 TC FALTON # TURN ON 'OPERATOR ERROR' LIGHT
|
|
TC UPACTOFF # TURN OFF 'UPLINK ACTIVITY' LIGHT
|
|
TC ENDEXT # EXTENDED VERB EXIT
|
|
# (THE PURPOS OF UPERROUT +2 EXIT IS
|
|
# TO PROVIDE AN ERROR EXIT WHICH DOES NOT
|
|
# RESET ANY RESTART GROUPS)
|
|
|
|
# 'UPACTOFF' IS A ROUTINE TO TURN OFF UPLINK ACTIVITY LIGHT ON ALL EXITS FROM UPDATE PROGRAM (P27).
|
|
|
|
UPACTOFF CS BIT3
|
|
EXTEND # TURN OFF UPLINK ACTIVITY LIGHT
|
|
WAND DSALMOUT # (BIT 3 OF CHANNEL 11)
|
|
TC Q
|
|
|