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
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
Fixed a potential string-overflow bug in yaASM. Removed timestamps from
Tip revision: 078c79d
IMU_MODE_SWITCHING_ROUTINES.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: IMU_MODE_SWITCHING_ROUTINES.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 <info@sandroid.org>.
## Website: www.ibiblio.org/apollo.
## Pages: 1420-1448
## Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting from
## the Colossus249/ file of the same name,
## using Comanche055 page images.
## 2010-08-20 JL Fixed page number comment (p1447).
## Fixed some pseudo-label indents.
## 2016-12-10 RSB All of the GOTOPOOH's should have been
## GOTOPOOH, and I've changed them back.
## 2016-12-22 RSB Proofed comment text using octopus/ProoferComments
## and corrected the errors found.
## 2017-03-15 RSB Comment-text fixes identified in 6-way
## side-by-side diff of Sunburst 120 and Luminary
## 69/99/116/131/210.
## 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 1420
BLOCK 02
SETLOC FFTAG3
BANK
EBANK= COMMAND
# FIXED-FIXED ROUTINES.
COUNT 02/IMODE
ZEROICDU CAF ZERO # ZERO ICDU COUNTERS.
TS CDUX
TS CDUY
TS CDUZ
TC Q
SPSCODE = BIT9
## Page 1421
# IMU ZEROING ROUTINE.
BANK 11
SETLOC MODESW
BANK
COUNT 07/IMODE
IMUZERO INHINT # ROUTINE TO ZERO ICDUS.
CS DSPTAB +11D # DONT ZERO CDUS IF IMU IN GIMBAL LOCK AND
MASK BITS4&6 # COARSE ALIGN (GIMBAL RUNAWAY PROTECTION)
CCS A
TCF IMUZEROA
TC ALARM # IF SO.
OCT 00206
TCF CAGETSTJ +4 # IMMEDIATE FAILURE.
IMUZEROA TC CAGETSTJ
# DO ALL THE WORK.
CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES
MASK SUPER011 # BIT5 FOR GROUND
ADS IMODES33
CS IMODES30 # INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE
MASK BITS3&4 # JUST CAME OUT OF COARSE ALIGN).
ADS IMODES30
CS BITS4&6 # SEND ZERO ENCODE WITH COARSE AND ERROR
EXTEND # COUNTER DISABLED.
WAND CHAN12
TC NOATTOFF # TURN OFF NO ATT LAMP.
CAF BIT5
EXTEND
WOR CHAN12
TC ZEROICDU
CAF BIT6 # WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO
TC WAITLIST # RECEIVE ITS PULSE TRAIN.
EBANK= CDUIND
2CADR IMUZERO2
CS IMODES30 # SEE IF IMU OPERATING AND ALARM IF NOT.
MASK BIT9
CCS A
TCF MODEEXIT
## Page 1422
TC ALARM
OCT 210
MODEEXIT RELINT # GENERAL MODE-SWITCHING EXIT.
TCF SWRETURN
IMUZERO2 TC CAGETEST
TC ZEROICDU # ZERO CDUX, CDUY, CDUZ
CS BIT5 # REMOVE ZERO DISCRETE.
EXTEND
WAND CHAN12
CAF BIT11 # WAIT 10 SECS FOR CTRS TO FIND GIMBALS
TC VARDELAY
IMUZERO3 TC CAGETEST
CS BITS3&4 # REMOVE IMUFAIL AND ICDUFAIL INHIBIT.
MASK IMODES30
TS IMODES30
CS SUPER011 # ENABLE DAP AUTO AND HOLD MODES
MASK IMODES33 # BIT5 FOR GROUND
TS IMODES33
TC IBNKCALL # SET ISS WARNING IF EITHER OF ABOVE ARE
CADR SETISSW # PRESENT.
TCF ENDIMU
## Page 1423
# IMU COARSE ALIGN MODE.
IMUCOARS INHINT
TC CAGETSTJ
TC SETCOARS
CAF SIX
TC WAITLIST
EBANK= CDUIND
2CADR COARS
TCF MODEEXIT
COARS TC CAGETEST
CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS
EXTEND
WOR CHAN12
CAF TWO # SET CDU INDICATOR
COARS1 TS CDUIND
INDEX CDUIND # COMPUTE THETAD - THETAA IN 1:S
CA THETAD # COMPLEMENT FORM
EXTEND
INDEX CDUIND
MSU CDUX
EXTEND
MP BIT13 # SHIFT RIGHT 2
XCH L # ROUND
DOUBLE
TS ITEMP1
TCF +2
ADS L
INDEX CDUIND # DIFFERENCE TO BE COMPUTED
LXCH COMMAND
CCS CDUIND
TC COARS1
CAF TWO # MINIMUM OF 4 MS WAIT
TC VARDELAY
## Page 1424
COARS2 TC CAGETEST # DONT CONTINUE IF CAGED.
TS ITEMP1 # SETS TO +0.
CAF TWO # SET CDU INDICATOR
+3 TS CDUIND
INDEX CDUIND
CCS COMMAND # NUMBER OF PULSES REQUIRED
TC COMPOS # GREATER THAN MAX ALLOWED
TC NEXTCDU +1
TC COMNEG
TC NEXTCDU +1
COMPOS AD -COMMAX # COMMAX = MAX NUMBER OF PULSES ALLOWED
EXTEND # MINUS ONE
BZMF COMZERO
INDEX CDUIND
TS COMMAND # REDUCE COMMAND BY MAX NUMBER OF PULSES
CS -COMMAX- # ALLOWED
NEXTCDU INCR ITEMP1
AD NEG0
INDEX CDUIND
TS CDUXCMD # SET UP COMMAND REGISTER.
CCS CDUIND
TC COARS2 +3
CCS ITEMP1 # SEE IF ANY PULSES TO GO OUT.
TCF SENDPULS
TC FIXDELAY # WAIT FOR GIMBALS TO SETTLE.
DEC 150
CAF TWO # AT END OF COMMAND, CHECK TO SEE THAT
CHKCORS TS ITEMP1 # GIMBALS ARE WITHIN 2 DEGREES OF THETAD.
INDEX A
CA CDUX
EXTEND
INDEX ITEMP1
MSU THETAD
CCS A
TCF COARSERR
TCF CORSCHK2
TCF COARSERR
## Page 1425
CORSCHK2 CCS ITEMP1
TCF CHKCORS
TCF ENDIMU # END OF COARSE ALIGNMENT.
COARSERR AD COARSTOL # 2 DEGREES.
EXTEND
BZMF CORSCHK2
TC ALARM # COARSE ALIGN ERROR.
OCT 211
TCF IMUBAD
COARSTOL DEC -.01111 # 2 DEGREES SCALED AT HALF-REVOLUTIONS
COMNEG AD -COMMAX
EXTEND
BZMF COMZERO
COM
INDEX CDUIND
TS COMMAND
CA -COMMAX-
TC NEXTCDU
COMZERO CAF ZERO
INDEX CDUIND
XCH COMMAND
TC NEXTCDU
SENDPULS CAF 13,14,15
EXTEND
WOR CHAN14
CAF 600MS
TCF COARS2 -1 # THEN TO VARDELAY
CA+ECE CAF BIT6 # ENABLE ALL THREE ISS CDU ERROR COUNTERS
EXTEND
WOR CHAN12
TC TASKOVER
## Page 1426
SETCOARS CAF BIT4 # BYPASS IF ALREADY IN COARSE ALIGN
EXTEND
RAND CHAN12
CCS A
TC Q
CS BIT6 # CLEAR ISS ERROR COUNTERS
EXTEND
WAND CHAN12
CS BIT10 # KNOCK DOWN GYRO ACTIVITY
EXTEND
WAND CHAN14
CS ZERO
TS GYROCMD
CAF BIT4 # PUT ISS IN COARSE ALIGN
EXTEND
WOR CHAN12
CS DSPTAB +11D # TURN ON NO ATT LAMP
MASK OCT40010
ADS DSPTAB +11D
CS IMODES33 # DISABLE DAP AUTO AND HOLD MODES
MASK BIT6
ADS IMODES33
CS IMODES30 # DISABLE IMUFAIL
MASK BIT4
ADS IMODES30
RNDREFDR CS BIT5 # KNOCK DOWN TRACK FLAG
MASK FLAGWRD1
TS FLAGWRD1
CS BIT15 # KNOCK DOWN DRIFT FLAG
MASK FLAGWRD2
TS FLAGWRD2
CS BIT13 # KNOCK DOWN REFSMMAT FLAG
MASK FLAGWRD3
TS FLAGWRD3
TC Q
OCT40010 OCT 40010
## Page 1427
# IMU FINE ALIGN MODE SWITCH.
IMUFINE INHINT
TC CAGETSTJ # SEE IF IMU BEING CAGED.
CS BITS4-5 # RESET ZERO AND COARSE
EXTEND
WAND CHAN12
CS BIT6 # INSURE DAP AUTO AND HOLD MODES ENABLED
MASK IMODES33
TS IMODES33
TC NOATTOFF
CAF BIT10 # IMU FAIL WAS INHIBITED DURING THE
TC WAITLIST # PRESUMABLY PRECEDING COARSE ALIGN. LEAVE
EBANK= CDUIND
2CADR IFAILOK # IT ON FOR THE FIRST 5 SECS OF FINE ALIGN
CAF 2SECS
TC WAITLIST
EBANK= CDUIND
2CADR IMUFINED
TCF MODEEXIT
IMUFINED TC CAGETEST # SEE THAT NO ONE HAS CAGED THE IMU.
TCF ENDIMU
## Page 1428
IFAILOK TC CAGETSTQ # ENABLE IMU FIAL UNLESS IMU BEING CAGED.
TCF TASKOVER # IT IS.
CAF BIT4 # DONT RESET IMU FAIL INHIBIT IF SOMEONE
EXTEND # HAS GONE INTO COARSE ALIGN.
RAND CHAN12
CCS A
TCF TASKOVER
CS IMODES30 # RESET IMUFAIL.
MASK BIT13
ADS IMODES30
CS BIT4
PFAILOK2 MASK IMODES30
TS IMODES30
TC IBNKCALL # THE ISS WARNING LIGHT MAY COME ON NOW
CADR SETISSW # THAT THE INHIBIT HAS BEEN REMOVED.
TCF TASKOVER
PFAILOK TC CAGETSTQ # ENABLE PIP FAIL PROG ALARM.
TCF TASKOVER
CS IMODES30 # RESET IMU AND PIPA FAIL BITS.
MASK BIT10
ADS IMODES30
CS IMODES33
MASK BIT13
ADS IMODES33
CS BIT5
TCF PFAILOK2
NOATTOFF CS OCT40010 # SUBROUTINE TO TURN OFF NO ATT LAMP.
MASK DSPTAB +11D
AD BIT15
TS DSPTAB +11D
TC Q
## Page 1429
# ROUITNES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE.
PIPUSE CS ZERO
TS PIPAX
TS PIPAY
TS PIPAZ
PIPUSE1 TC CAGETSTQ # DO NOT ENABLE PIPA FAIL IF IMU IS CAGED
TCF SWRETURN
INHINT
CS BIT1 # IF PIPA FAILS FROM NOW ON (UNTIL
MASK IMODES30 # PIPFREE), LIGHT ISS WARNING.
TS IMODES30
PIPFREE2 TC IBNKCALL # ISS WARNING MIGHT COME ON NOW.
CADR SETISSW # (OR GO OFF ON PIPFREE).
TCF MODEEXIT
PIPFREE INHINT # PROGRAM DONE WITH PIPAS. DONT LIGHT
CS IMODES30 # ISS WARNING.
MASK BIT1
ADS IMODES30
MASK BIT10 # IF PIP FAIL ON, DO PROG ALSRM AND RESET
CCS A # ISS WARNING.
TCF MODEEXIT
TC ALARM
OCT 212
INHINT
TCF PIPFREE2
## Page 1430
# THE FOLLOWING ROUTINE TORQUES THE IRIGS ACCORDING TO DOUBLE PRECISION INPUTS IN THE SIX REGISTERS
# BEGINNING AT THE ECADR ARRIVING IN A. THE MINIMUM SIZE OF ANY PULSE TRAIN IS 16 PULSES (.25 CDU COUNTS). THE
# UNSENT PORTION OF THE COMMAND IS LEFT INTACT IN THE INPUT COMMAND REGISTERS.
EBANK= 1400 # VARIABLE, ACTUALLY.
IMUPULSE TS MPAC +5 # SAVE ARRIVING ECADR.
TC CAGETSTJ # DONT PROCEED IF IMU BEING CAGED.
CCS LGYRO # SEE IF GYROS BUSY.
TC GYROBUSY # SLEEP.
TS MPAC +2
CAF BIT6 # ENABLE THE POWER SUPPLY.
EXTEND
WOR CHAN14
CAF FOUR
GWAKE2 TC WAITLIST # (IF A JOB WAS PUT TO SLEEP, THE POWER
EBANK= CDUIND # SUPPLY IS LEFT ON BY THE WAKING JOB).
2CADR STRTGYRO
CA MPAC +5 # SET UP EBANK, SAVING CALLER'S EBANK FOR
XCH EBANK # RESTORATION ON RETURN.
XCH MPAC +5
TS LGYRO # RESERVES GYROS.
MASK LOW8
TS ITEMP1
CAF TWO # FORCE SIGN AGREEMENT ON INPUTS.
GYROAGRE TS MPAC +3
DOUBLE
AD ITEMP1
TS MPAC +4
EXTEND
INDEX A
DCA 1400
DXCH MPAC
TC TPAGREE
DXCH MPAC
INDEX MPAC +4
DXCH 1400
CCS MPAC +3
TCF GYROAGRE
CA MPAC +5 # RESTORE CALLER'S EBANK.
TS EBANK
TCF MODEEXIT
## Page 1431
# ROUTINES TO ALLOW TORQUING BY ONLY ONE JOB AT A TIME.
GYROBUSY EXTEND # SAVE RETURN 2FCADR.
DCA BUF2
DXCH MPAC
REGSLEEP CAF LGWAKE
TCF JOBSLEEP
GWAKE CCS LGYRO # WHEN AWAKENED, SEE IF GYROS STILL BUSY.
TCF REGSLEEP # IF SO, SLEEP SOME MORE.
TS MPAC +2
EXTEND
DCA MPAC
DXCH BUF2 # RESTORE SWRETURN INFO.
CAF ONE
TCF GWAKE2
LGWAKE CADR GWAKE
## Page 1432
# GYRO-TORQUING WAITLIST TASKS.
STRTGYRO CS GDESELCT # DE-SELECT LAST GYRO.
EXTEND
WAND CHAN14
TC CAGETEST
STRTGYR2 CA LGYRO # JUMP ON PHASE COUNTER IN BITS 13-14.
EXTEND
MP BIT4
INDEX A
TCF +1
TC GSELECT # =0. DO Y GYRO.
OCT 00202
TC GSELECT # =1. DO Z GYRO.
OCT 00302
TC GSELECT -2 # =2. DO X GYRO.
OCT 00100
CAF ZERO # =3. DONE
TS LGYRO
CAF LGWAKE # WAKE A POSSIBLE SLEEPING JOB.
TC JOBWAKE
NORESET TCF IMUFINED # DO NOT RESET POWER SUPPLY
## Page 1433
-2 CS FOUR # SPECIAL ENTRY TO REGRESS LGYRO FOR X.
ADS LGYRO
GSELECT INDEX Q # SELECT GYRO.
CAF 0 # PACKED WORD CONTAINS GYRO SELECT BITS
TS ITEMP4 # AND INCREMENT TO LGYRO.
MASK SEVEN
AD BIT13
ADS LGYRO
TS EBANK
MASK LOW8
TS ITEMP1
CS SEVEN
MASK ITEMP4
TS ITEMP4
EXTEND # MOVE DP COMMAND TO RUPTREGS FOR TESTING.
INDEX ITEMP1
DCA 1400
DXCH RUPTREG1
CCS RUPTREG1
TCF MAJ+
TCF +2
TCF MAJ-
CCS RUPTREG2
TCF MIN+
TCF STRTGYR2
TCF MIN-
TCF STRTGYR2
## Page 1434
MIN+ AD -GYROMIN # SMALL POSITIVE COMMAND. SEE IF AT LEAST
EXTEND # 16 GYRO PULSES.
BZMF STRTGYR2
MAJ+ EXTEND # DEFINITE POSITIVE OUTPUT.
DCA GYROFRAC
DAS RUPTREG1
CA ITEMP4 # SELECT POSITIVE TORQUING FOR THIS GYRO.
EXTEND
WOR CHAN14
CAF LOW7 # LEAVE NUMBER OF POSSIBLE 8192 AUGMENTS
MASK RUPTREG2 # TO INITIAL COMMAND IN MAJOR PART OF LONG
XCH RUPTREG2 # TERM STORAGE AND TRUNCATED FRACTION
GMERGE EXTEND # IN MINOR PART. THE MAJOR PART WILL BE
MP BIT8 # COUNTED DOWN TO ZERO IN THE COURSE OF
TS ITEMP2 # PUTTING OUT THE ENTIRE COMMAND.
CA RUPTREG1
EXTEND
MP BIT9
TS RUPTREG1
CA L
EXTEND
MP BIT14
ADS ITEMP2 # INITIAL COMMAND.
EXTEND # SEE IF MORE THAN ONE PULSE TRAIN NEEDED
DCA RUPTREG1 # (MORE THAN 16383 PULSES).
AD MINUS1
CCS A
TCF LONGGYRO
-GYROMIN OCT -176 # MAY BE ADJUSTED TO SPECIFY MINIMUM CMD
TCF +4
CAF BIT14
ADS ITEMP2
CAF ZERO
+4 INDEX ITEMP1
DXCH 1400
## Page 1435
CA ITEMP2 # ENTIRE COMMAND.
LASTSEG TS GYROCMD
EXTEND
MP BIT10 # WAITLIST DT
AD THREE # TRUNCATION AND PHASE UNCERTAINTIES.
TC WAITLIST
EBANK= CDUIND
2CADR STRTGYRO
GYROEXIT CAF BIT10
EXTEND
WOR CHAN14
TCF TASKOVER
LONGGYRO INDEX ITEMP1
DXCH 1400 # INITIAL COMMAND OUT PLUS N AUGMENTS OF
CAF BIT14 # 8192. INITIAL COMMAND IS AT LEAST 8192.
AD ITEMP2
TS GYROCMD
AUG3 EXTEND # GET WAITLIST DT TO TIME WHEN TRAIN IS
MP BIT10 # ALMOST OUT.
AD NEG3
TC WAITLIST
EBANK= CDUIND
2CADR 8192AUG
TCF GYROEXIT
8192AUG TC CAGETEST
CAF BIT4
EXTEND
RAND CHAN12
CCS A
TCF IMUBAD
CA LGYRO # ADD 8192 PULSES TO GYROCMD
TS EBANK
MASK LOW8
TS ITEMP1
INDEX ITEMP1 # SEE IF THIS IS THE LAST AUG.
CCS 1400
TCF AUG2 # MORE TO COME.
CAF BIT14
ADS GYROCMD
TCF LASTSEG +1
## Page 1436
AUG2 INDEX ITEMP1
TS 1400
CAF BIT14
ADS GYROCMD
TCF AUG3 # COMPUTE DT.
## Page 1437
MIN- AD -GYROMIN # POSSIBLE NEGATIVE OUTPUT.
EXTEND
BZMF STRTGYR2
MAJ- EXTEND # DEFINITE NEGATIVE OUTPUT.
DCS GYROFRAC
DAS RUPTREG1
CA ITEMP4 # SELECT NEGATIVE TORQUING FOR THIS GYRO.
AD BIT9
EXTEND
WOR CHAN14
CS RUPTREG1 # SET UP RUPTREGS TO FALL INTO GMERGE.
TS RUPTREG1 # ALL NUMBERS PUT INTO GYROCMD ARE
CS RUPTREG2 # POSITIVE - BIT9 OF CHAN 14 DETERMINES
MASK LOW7 # THE SIGN OF THE COMMAND.
COM
XCH RUPTREG2
COM
TCF GMERGE
GDESELCT OCT 1700 # TURN OFF SELECT AND ACTIVITY BITS.
GYROFRAC 2DEC .215 B-21
## Page 1438
# IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE.
ENDIMU EXTEND # MODE IS BAD IF CAGE HAS OCCURED OR IF
READ DSALMOUT # ISS WARNING IS ON.
MASK BIT1
CCS A
TCF IMUBAD
IMUGOOD TCF GOODEND # WITH C(A) = 0.
IMUBAD CAF ZERO
TCF BADEND
CAGETEST CAF BIT6 # SUBROUTINE TO TERMINATE IMU MODE
MASK IMODES30 # SWITCH IF IMU HAS BEEN CAGED.
CCS A
TCF IMUBAD # DIRECTLY.
TC Q # WITH C(A) = +0.
CAGETSTQ CS IMODES30 # SKIP IF IMU NOT BEING CAGED.
MASK BIT6
CCS A
INCR Q
TC Q
CAGETSTJ CS IMODES30 # IF DURING MODE SWITCH INITIALIZATION
MASK BIT6 # IT IS FOUND THAT THE IMU IS BEING CAGED,
CCS A # SET IMUCADR TO -0 TO INDICATE OPERATION
TC Q # COMPLETE BUT FAILED. RETURN IMMEDIATELY
CS ZERO # TO SWRETURN.
TS IMUCADR
TCF MODEEXIT
## Page 1439
# GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION
# OR AT BADEND FOR AN UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR OPTICS.
BADEND TS RUPTREG2 # DEVICE INDEX.
CS ZERO # FOR FAILURE.
TCF GOODEND +2
GOODEND TS RUPTREG2
CS ONE # FOR SUCCESS.
TS RUPTREG3
INDEX RUPTREG2 # SEE IF USING PROGRAM ASLEEP.
CCS MODECADR
TCF +2 # YES - WAKE IT UP.
TCF ENDMODE # IF 0, PROGRAM NOT IN YET.
CAF ZERO # WAKE SLEEPING PROGRAM.
INDEX RUPTREG2
XCH MODECADR
TC JOBWAKE
CS RUPTREG3 # ADVANCE LOC IF SUCCESSFUL.
INDEX LOCCTR
ADS LOC
TCF TASKOVER
ENDMODE CA RUPTREG3 # -0 INDICATES OPERATION COMPLETE BUT
INDEX RUPTREG2 # UNSUCCESSFUL - -1 INDICATES COMPLETE AND
TS MODECADR # SUCCESSFUL.
TCF TASKOVER
## Page 1440
# GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION.
#
# PROGRAM DESCRIPTION DATE - 21 FEB 1967
# LOG SECTION IMU MODE SWITCHING
# MOD BY - R. MELANSON TO ADD DOCUMENTATION ASSEMBLY SUNDISK REV. 82
#
# FUNCTIONAL DESCRIPTION -
# TO DELAY FURTHER EXECUTION OF THE CALLING ROUTINE UNTIL ITS SELECTED
# I/O FUNCTION IS COMPLETE. THE FOLLOWING CHECKS ON THE CALLING ROUTINE:S
# MODECADR ARE MADE AND ACTED UPON.
# 1) +0 INDICATES INCOMPLETE I/O OPERATION. CALLING ROUTINE IS PUT TO
# SLEEP.
# 2) -1 INDICATES COMPLETED I/O OPERATION. STALL BYPASSES JOBSLEEP
# CALL AND RETURNS TO CALLING ROUTINE AT L+3
# 3) -0 INDICATES COMPLETED I/O WITH FAILURE. STALL CLEARS MODECADR
# AND RETURNS TO CALLING ROUTINE AT L+2.
# 4) VALUE GREATER THAN 0 INDICATES TWO ROUTINES CALLING FOR USE OF
# SAME DEVICE. STALL EXITS TO ABORT WHICH EXECUTES A PROGRAM
# RESTART WHICH IN TURN CLEARS ALL MODECADR REGISTERS.
#
# CALLING SEQUENCE -
# L TC BANKCALL
# L+1 CADR (ONE OF 5 STALL ADDRESSES I.E. IMUSTALL, OPTSTALL, RADSTALL,
# AOTSTALL, OR ATTSTALL)
#
# NORMAL-EXIT MODE -
# TCF JOBSLEEP OR TCF MODEXIT
#
# ALARM OR ABORT EXIT MODE -
# TC ABORT
#
# OUTPUT -
# MODECADR=CADR IF JOBSLEEP
# MODECADR=+0 IF I/O COMPLETE
# BUF2=L+3 IF I/O COMPLETE AND GOOD.
# BUF2=L+2 IF I/O COMPLETE BUT FAILED.
#
# ERASABLE INITIALIZATION -
# BUF2 CONTAINS RETURN ADDRESS PLUS 1,(L+2)
# BUF2+1 CONTAINS FBANK VALUE OF CALLING ROUTINE.
# MODECADR OF CALLING ROUTINE CONTAINS +0,-1,-0 OR CADR RETURN ADDRESS.
#
# DEBRIS -
# RUPTREG2 AND CALLING ROUTINE MODECADR.
AOTSTALL CAF ONE # AOT.
TC STALL
RADSTALL CAF TWO
TCF STALL
## Page 1441
OPTSTALL EQUALS AOTSTALL
IMUSTALL CAF ZERO # IMU.
STALL INHINT
TS RUPTREG2 # SAVE DEVICE INDEX.
INDEX A # SEE IF OPERATION COMPLETE.
CCS MODECADR
TCF MODABORT # ALLOWABLE STATES ARE +0, -1, AND -0.
TCF MODESLP # OPERATION INCOMPLETE.
TCF MODEGOOD # COMPLETE AND GOOD IF = -1.
MG2 INDEX RUPTREG2 # COMPLETE AND FAILED IF -0. RESET TO +0.
TS MODECADR # RETURN TO CALLER.
TCF MODEEXIT
MODEGOOD CCS A # MAKE SURE INITIAL STATE -1.
TCF MODABORT
INCR BUF2 # IF SO, INCREMENT RETURN ADDRESS AND
TCF MG2 # RETURN IMMEDIATELY, SETTING CADR = +0.
MODESLP TC MAKECADR # CALL FROM SWITCHABLE FIXED ONLY.
INDEX RUPTREG2
TS MODECADR
TCF JOBSLEEP
MODABORT TC POODOO # TWO PROGRAMS USING SAME DEVICE.
OCT 1210
## Page 1442
# CONSTANTS FOR MODE SWITCHING ROUTINES
BITS3&4 = OCT14
BITS4&6 = OCT50
BITS4-5 EQUALS BITS4&5
IMUSEFLG EQUALS BIT8 # INTERPRETER SWITCH 7.
-COMMAX DEC -191
-COMMAX- DEC -192
600MS DEC 60
IMUFIN20 = IMUFINE
GOMANUR CA ATTCADR # IS KALCMANU FREE
EXTEND
BZF +3
TC POODOO # NO
OCT 1210 # 2 TRYING TO USE SAME DEVICE
+3 EXTEND
DCA BUF2
DXCH ATTCADR # SAVE FINAL RETURN FOR KALCMAN3
CA BBANK
MASK SEVEN
ADS ATTCADR +1
CA PRIORITY
MASK PRIO37
TS ATTPRIO # SAVE USERS PRIO
CAF KALEBCON # SET EBANK FOR KALCMAN3
TS EBANK
TC POSTJUMP
CADR KALCMAN3
KALEBCON ECADR BCDU
## Page 1443
# PROGRAM DESCRIPTION
# IMU STATUS CHECK ROUTINE R02 (SUBROUTINE UTILITY)
# MOD NO - 1
# MOD BY - N.BRODEUR
#
# FUNCTIONAL DESCRIPTION
# TO CHECK WHETHER IMU IS ON AND IF ON WHETHER IT IS ALIGNED TO AN
# ORIENTATION KNOWN BY THE CMC. TO REQUEST SELECTION OF THE APPROPRIATE
# PROGRAM IF THE IMU IS OFF OR NOT ALIGNED TO AN ORIENTATION KNOWN BY THE
# CMC. CALLED THROUGH BANKCALL
#
# CALLING SEQUENCE -
# L TC BANKCALL
# L+1 CADR R02BOTH
#
# SUBROUTINES CALLED
# VARALARM
# FLAGUP
#
# NORMAL EXIT MODES
# AT L+2 OF CALLING SEQUENCE
#
# ALARM OR ABORT EXIT MODES
# GOTOPOOH, WITH ALARM
#
# ERASABLE INITIALIZATION REQUIRED
# NONE
#
# DEBRIS
# CENTRALS - A,Q,L
BANK 34
SETLOC R02
BANK
COUNT 04/R02 # COUNT*
DEC51 DEC 51
R02BOTH CAF BIT13
MASK STATE +3 # REFSMFLG
CCS A
TC R02ZERO # ZERO IMUS
CA IMODES30
MASK BIT9 # IS ISS INITIALIZED
EXTEND
BZF +2
CS BIT4 # SEND IMU ALARM CODE 210
AD OCT220 # SEND REFSMM ALARM
TC VARALARM
TC GOTOPOOH
## Page 1444
R02ZERO TC UPFLAG
ADRES IMUSE
TCF SWRETURN
OCT220 OCT 220
## Page 1445
# PROGRAM DESCRIPTION P06 10FEB67
#
# TRANSFER THE ISS/CMC FROM THE OPERATE TO THE STANDBY CONDITION.
#
# THE NORMAL CONDITION OF READINESS OF THE GNCS WHEN NOT IN USE IS STANDBY. IN THIS CONDITION THE IMU
# HEATER POWER IS ON. THE IMU OPERATE POWER IS OFF. THE COMPUTER POWER IS ON. THE OPTICS POWER IS OFF. THE
# CMC STANDBY ON THE MAIN AND LEB DISKYS IS ON.
#
# CALLING SEQUENCE:
# ASTRONAUT REQUEST THROUGH DSKY V37E 06E.
#
# SUBROUTINES CALLED:
# GOPERF1
# BANKCALL
# FLAGDOWN
#
## Page 1446
# PRESTAND PREPARES FOR STANDBY BY SNAPSHOTTING THE SCALER AND TIME1 TIME2
# THE LOW 5 BITS OF THE SCALER ARE INSPECTED TO INSURE COMPATABILITY
# BETWEEN THE SCALER READING AND THE TIME1 TIME2 READING.
SETLOC P05P06
BANK
EBANK= TIME2SAV
COUNT* $$/P06
P06 TC UPFLAG # SET NODOV37 BIT
ADRES NODOFLAG
PRESTAND INHINT
EXTEND
DCA TIME2 # SNAPSHOT TIME1 TIME2
DXCH TIME2SAV
TC SCALPREP
TC PRESTAND # T1,T2,SCALER NOT COMPATIBLE
DXCH MPAC # T1,T2 AND SCALER OK
DXCH SCALSAVE # STORE SCALER
INHINT
TC BANKCALL
CADR RNDREFDR # REFSMM, DRIFT, TRACK FLAGS DOWN
TC DOWNFLAG
ADRES IMUSE # IMUSE DOWN
TC DOWNFLAG
ADRES RNDVZFLG # RNDVZFLG DOWN
CAF BIT11
EXTEND
WOR CHAN13 # SET STANDBY ENABLE BIT
TC PHASCHNG # SET RESTART TO POSTAND WHEN STANDBY
OCT 07024 # RECOVERS
OCT 20000
EBANK= SCALSAVE
2CADR POSTAND
CAF OCT62
TC BANKCALL
CADR GOPERF1
TCF -3
TCF -4
TCF -5
OCT62 EQUALS .5SEC # DEC 50 = OCT 62
# THE LOW 5 BITS OF THE SCALER READS 10000 FOR THE FIRST INTERVAL AFTER A
## Page 1447
# T1 INCREMENT. IF SCALPREP DETECTS THIS INTERVAL THE T1,T2 AND SCALER
# DATA ARE NOT COMPATABLE AND RETURN IS TO L+1 FOR ANOTHER READING OF THE
# DATA. OTHERWISE, THE RETURN IS TO L+2 TO PROCEED. ROUTINE ALSO PREPARES
# THE SCALER READING FOR COMPUTATION OF THE INCREMENT TO UPDATE T1T2. (THE
# 10 MS BIT (BIT 6) OF THE SCALER IS INCREMENTED 5 MS OUT OF PHASE FROM
# T1.) ADDITION OF 5 MS (BIT 5) TO THE SCALER READING HAS THE EFFECT OF
# ADJUSTING BIT 6 IN THE SCALER TO BE IN PHASE WITH BIT 1 OF T1. THE LOW 5
# BITS OF THE SCALER READING ARE THEN SET TO ZERO, TO TRUNCATE THE SCALER
# DATA TO 10 MS. RESULTS ARE STORED IN MPAC, +1.
SCALPREP EXTEND
QXCH MPAC +2
TC FINETIME +1
RELINT
DXCH MPAC
CA BIT5 # ADD 5 MS TO THE SCALER READING.
TS L
CA ZERO
DAS MPAC
CS LOW5 # SET LOW 5 BITS OF (SCALER+5MS) TO ZERO
MASK MPAC +1 # AND STORE RESULTS IN MPAC,+1.
XCH MPAC +1
MASK LOW5 # TEST LOW 5 BITS OF SCALER FOR THE FIRST
# INTERVAL AFTER THE T1 INCREMENT
# (NOW = 00000, SINCE BIT 5 ADDED).
CCS A # IS IT 1ST INTERVAL AFTER T1 INCREMENT
INCR MPAC +2 # NO
TC MPAC +2 # YES
# POSTAND RECOVERS TIME AFTER STANDBY. THE SCALER IS SNAPSHOTTED AND THE
# TIME1 TIME2 COUNTER IS SET TO ZERO. THE LOW 5 BITS OF THE SCALER ARE
# INSPECTED TO INSURE COMPATABILITY BETWEEN THE SCALER READING AND THE
# CLEARING OF THE TIME COUNTER. IT THEN COMPUTES THE DIFFERENCE IN SCALER
# VALUES (IN DP) AND ADDS THIS TO THE PREVIOUSLY SNAPSHOTTED VALUES OF
# TIME1 TIME2 AND PLACES THIS NEW TIME INTO THE TIME1 TIME2 COUNTER.
COUNT* $$/P05
POSTAND CS BIT11 # RECOVER TIME AFTER STANDBY.
EXTEND
WAND CHAN13 # CLEAR STANDBY ENABLE BIT
INHINT
CA ZERO
TS L
DXCH TIME2 # CLEAR TIME1 TIME2
TC SCALPREP # STORE SCALER IN MPAC, MPAC+1
TC POSTAND +3 # T1,T2,SCALER NOT COMPATIBLE
EXTEND # T1,T2 AND SCALER OK
DCS SCALSAVE
DAS MPAC # FORM DP DIFFERENCE OF POSTSTANDBY SCALER
## Page 1448
CAF BIT10 # MINUS PRESTANDBY SCALER AND SHIFT RIGHT
TC SHORTMP # 5 TO ALIGN BITS WITH TIME1 TIME2.
CAF ZERO
TS MPAC +2 # NEEDED FOR TP AGREE
TC TPAGREE # MAKE DP DIFF AGREE
CCS MPAC
TC POSTCOM # IF DP DIFF NET +, NO SCALER OVERFLOW
TC POSTCOM # BETWEEN PRE AND POST STANDBY.
TC +1 # IF DP DIFF NET -, SCALER OVERFLOWED. ADD
CAF BIT10 # BIT 10 TO HIGH DIFF TO CORRECT.
ADS MPAC
POSTCOM EXTEND # C(MPAC,+1) IS MAGNITUDE OF DELTA SCALER.
DCA TIME2SAV # PRESTANDBY TIME1 TIME2
DAS MPAC
TC TPAGREE # FORCE SIGN AGREEMENT
DXCH MPAC # UPDATED VALUE FOR T1,T2.
DAS TIME2 # LOAD UPDATED VALUE INTO T1,T2, WITH
TC DOWNFLAG # CLEAR NODOFLAG
ADRES NODOFLAG
TC GOTOPOOH
Computing file changes ...