https://github.com/virtualagc/virtualagc
Revision 078c79d8734a9ed2860303a7c1662004284fe853 authored by Ron Burkey on 07 August 2022, 15:04:04 UTC, committed by Ron Burkey on 07 August 2022, 15:04:04 UTC
assembly listings from yaASM and yaLEMAP. Added some debugging messages
to 'make install'.  Tweaked debugging messages that VirtualAGC embeds in
'simulate'.  Verified buildability in Mint 21, 20, 19, 17, and verified
buildability using clang in Mint 17.
1 parent 6bb1acc
Raw File
Tip revision: 078c79d8734a9ed2860303a7c1662004284fe853 authored by Ron Burkey on 07 August 2022, 15:04:04 UTC
Fixed a potential string-overflow bug in yaASM. Removed timestamps from
Tip revision: 078c79d
UPDATE_PROGRAM.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:	UPDATE_PROGRAM.agc
## Purpose:     Part of the source code for Colossus build 237.
##              This is for the Command Module's (CM) Apollo Guidance
##              Computer (AGC), for Apollo 8.
## Assembler:   yaYUL
## Contact:     Jim Lawton <jim DOT lawton AT gmail DOT com>
## Website:     www.ibiblio.org/apollo/index.html
## Page Scans:  www.ibiblio.org/apollo/ScansForConversion/Colossus237/
## Mod history: 2011-04-17 JL	Adapted from corresponding Colossus 249 file.
##		2017-01-01 RSB	Proofed comment text using octopus/ProoferComments,
##				and fixed errors found.
##		2017-01-20 RSB	Fixed comment-text errors noted while diff'ing
##				vs Colossus 249.
##		2017-02-09 RSB	Comment-text fixes identified for Artemis 72.

## Page 1461
# 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 DURING 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 RESTORED, 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 1462
#  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. 20D.,
#                   AND (AAAA + II - 3) DOES NOT PRODUCE AN ADDRESS IN THE
# 9 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 DEFINITIONS:                                       SCALE FACTORS:
## Page 1463
# 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	+2		# (+0 = P00, -0 = FRESH START)
		TC	CKMDMORE	# NOW CHECK FOR PROGRAM WHICH CAN BE
#					  INTERRUPTED BY P27.

		CAE	MODREG		# UPDATE ALLOWED.
		TS	UPOLDMOD	# SAVE CURRENT MAJOR MODE

## Page 1464
		CAE	UPVERBSV	# SET UPVERB TO INDICATE 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.

CKMDMORE	CS	FLAGWRD5
		MASK	BIT8		# CHECK IF COMPUTER IS LGC
		CCS	A		# IS COMPUTER LGC OR AGC
UPERLEM		TCF	UPERROR		# ERROR- IT'S THE LEM + MODE IS NOT POO.
		CS	TWO
		MASK	MODREG
		CCS	A
UPERCMC		TCF	UPERROR		# ERROR- IT'S THE CMC AND MODE IS NOT
#					  P00 OR P02.
		TC	Q		# ALLOW UPDATE TO PROCEED

UPERROR		TC	POSTJUMP	# TURN ON 'OPERATOR ERROR' LIGHT
		CADR	UPERROUT +2	# GO TO COMMON UPDATE PROGRAM EXIT

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
		EBANK=	UPBUFF
		2CADR	UPOUT +1

		CAF	ONE
		TS	DNLSTCOD	# DOWNLIST

		TC	NEWMODEX	# SET MAJOR MODE = 27
		DEC	27
## Page 1465
		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	# (CK4V32 RETURNS HERE IF V32 ENCOUNTERED)
		TC	BANKCALL	# DISPLAY A FLASHING V21N01
		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

## Page 1466
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
		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	BIT3		# THAT THE V33(WHICH THE GROUND SENT TO
		EXTEND			# VERIFY THE UPDATE) HAS BEEN SUCCESSFULLY
		RXOR	LCHAN		# RECEIVED BY THE UPDATE PROGRAM
## Page 1467
		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

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.
## Page 1468
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	# DO
		TS	L		# A
		COM			# QUICK
		DXCH	-PHASE6		# PHASCHNG

TIMEDIDR	INHINT

		CAF	ZERO
		ZL			# PICK UP INCREMENTER(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	DELTATOK	# 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

DELTATOK	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
## Page 1469
		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
		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
## Page 1470
		CCS	MPAC		# ARE WE THROUGH 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
		TS	DNLSTCOD
		TC	UPACTOFF	# TURN OFF 'UPLINK ACTIVITY' LIGHT

		EXTEND			# KILL GROUP 6.
		DCA	NEG0
		DXCH	-PHASE6

		TC	ENDEXT		# EXTENDED VERB EXIT


#          VERB 70 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
## Page 1471
		CAF	ZERO
		ZL
		DXCH	UPBUFF
		DAS	TEPHEM +1	# INCREMENT TP TEPHEM
		ADS	TEPHEM

		TC	PHASCHNG	# RESTART PROTECT(GROUP 6)
		OCT 	04026

		EBANK=	UPBUFF

		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 PURPOSE 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
back to top