diff --git a/Luminary099/POWERED_FLIGHT_SUBROUTINES.agc b/Luminary099/POWERED_FLIGHT_SUBROUTINES.agc index 2ddb517..ba6b64c 100644 --- a/Luminary099/POWERED_FLIGHT_SUBROUTINES.agc +++ b/Luminary099/POWERED_FLIGHT_SUBROUTINES.agc @@ -1,6 +1,6 @@ # Copyright: Public domain. # Filename: POWERED_FLIGHT_SUBROUTINES.agc -# Purpose: Part of the source code for Luminary 1A build 099. +# 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 @@ -35,33 +35,33 @@ EBANK= DEXDEX COUNT* $$/POWFL -# CDUTRIG, CDUTRIG1, CDUTRIG2, AND CD*TR*GS ALL COMPUTE THE SINES AND +# CDUTRIG, CDUTRIG1, CDUTRIG2, AND CD*TR*GS ALL COMPUTE THE SINES AND # COSINES OF THREE 2'S COMPLEMENT ANGLES AND PLACE THE RESULT, DOUBLE -# PRECISION, IN THE SAME ORDER AS THE INPUTS, AT SINCDU AND COSCDU. AN -# ADDITIONAL OUTPUT IS THE 1'S COMPLEMENT ANGLES AT CDUSPOT. THESE +# PRECISION, IN THE SAME ORDER AS THE INPUTS, AT SINCDU AND COSCDU. AN +# ADDITIONAL OUTPUT IS THE 1'S COMPLEMENT ANGLES AT CDUSPOT. THESE # ROUTINES GO OUT OF THEIR WAY TO LEAVE THE MPAC AREA AS THEY FIND IT, -# EXCEPT FOR THE GENERALLY UNIMPORTANT MPAC +2. THEY DIFFER ONLY IN +# EXCEPT FOR THE GENERALLY UNIMPORTANT MPAC +2. THEY DIFFER ONLY IN # WHERE THEY GET THE ANGLES, AND IN METHOD OF CALLING. # -# CDUTRIG (AND CDUTRIG1, WHICH CAN BE CALLED IN BASIC) COMPUTE THE +# CDUTRIG (AND CDUTRIG1, WHICH CAN BE CALLED IN BASIC) COMPUTE THE # SINES AND COSINES FROM THE CURRENT CONTENTS OF THE CDU REGISTERS. # THE CONTENTS OF CDUTEMP, ETC., ARE NOT TOUCHED SO THAT THEY MAY # CONTINUE TO FORM A CONSISTENT SET WITH THE LATEST PIPA READINGS. # -# CDUTRIG1 IS LIKE CDUTRIG EXCEPT THAT IT CAN BE CALLED IN BASIC. +# CDUTRIG1 IS LIKE CDUTRIG EXCEPT THAT IT CAN BE CALLED IN BASIC. # -# CD*TR*GS FINDS CDU VALUES IN CDUSPOT RATHER THAN IN CDUTEMP. THIS +# CD*TR*GS FINDS CDU VALUES IN CDUSPOT RATHER THAN IN CDUTEMP. THIS # ALLOWS USERS TO MAKE TRANSFORMATIONS USING ARBITRARY ANGLES, OR REAL -# ANGLES IN AN ORDER OTHER THAN X Y Z. A CALL TO THIS ROUTINE IS +# ANGLES IN AN ORDER OTHER THAN X Y Z. A CALL TO THIS ROUTINE IS # NECESSARY IN PREPARATION FOR A CALL TO AX*SR*T IN EITHER OF ITS TWO -# MODES (SMNB OR NBSM). SINCE AX*SR*T EXPECTS TO FIND THE SINES AND +# MODES (SMNB OR NBSM). SINCE AX*SR*T EXPECTS TO FIND THE SINES AND # COSINES IN THE ORDER Y Z X THE ANGLES MUST HAVE BEEN PLACED IN CDUSPOT -# IN THIS ORDER. CD*TR*GS NEED NOT BE REPEATED WHEN AX*SR*T IS CALLED -# MORE THAN ONCE, PROVIDED THE ANGLES HAVE NOT CHANGED. NOTE THAT SINCE +# IN THIS ORDER. CD*TR*GS NEED NOT BE REPEATED WHEN AX*SR*T IS CALLED +# MORE THAN ONCE, PROVIDED THE ANGLES HAVE NOT CHANGED. NOTE THAT SINCE # IT CLOBBERS BUF2 (IN THE SINE AND COSINE ROUTINES) CD*TR*GS CANNOT BE -# CALLED USING BANKCALL. SORRY. +# CALLED USING BANKCALL. SORRY. # -# CD*TR*G IS LIKE CD*TR*GS EXCEPT THAT IT CAN BE CALLED IN +# CD*TR*G IS LIKE CD*TR*GS EXCEPT THAT IT CAN BE CALLED IN # INTERPRETIVE. CDUTRIG EXIT @@ -90,7 +90,7 @@ TR*GL**P MASK SIX # MAKE IT EVEN AND SMALLER INDEX TEM3 CA CDUSPOT DXCH MPAC # STORING 2'S COMP ANGLE, LOADING MPAC - DXCH VBUF +4 # STORING MPAC FOR LATER RESTORATION + DXCH VBUF +4 # STORING MPAC FOR LATER RESTORATION TC USPRCADR CADR CDULOGIC EXTEND @@ -106,8 +106,8 @@ TR*GL**P MASK SIX # MAKE IT EVEN AND SMALLER INDEX TEM3 DCA CDUSPOT # LOADING 1'S COMPLEMENT ANGLE TC USPRCADR - CADR SINE +1 # SINE +1 EXPECTS ARGUMENT IN A AND L - DXCH VBUF +4 # BRINGING UP PRIOR MPAC TO BE RESTORED + CADR SINE +1 # SINE +1 EXPECTS ARGUMENT IN A AND L + DXCH VBUF +4 # BRINGING UP PRIOR MPAC TO BE RESTORED DXCH MPAC INDEX TEM3 DXCH SINCDU @@ -116,10 +116,10 @@ TR*GL**P MASK SIX # MAKE IT EVEN AND SMALLER TC TEM2 # Page 1261 # ******************************************************************************************************* -# QUICTRIG, INTENDED FOR GUIDANCE CYCLE USE WHERE TIME IS CRITICAL, IS A MUCH FASTER VERSION OF CD*TR*GS. +# QUICTRIG, INTENDED FOR GUIDANCE CYCLE USE WHERE TIME IS CRITICAL, IS A MUCH FASTER VERSION OF CD*TR*GS. # QUICTRIG COMPUTES AND STORES THE SINES AND COSINES OF THE 2'S COMPLEMENT ANGLES AT CDUSPOT, CDUSPOT +2, -# AND CDUSPOT +4. UNLIKE CD*TR*GS, QUICTRIG DOES NOT LEAVE THE 1'S COMPLEMENT VERSIONS OF THE ANGLES IN -# CDUSPOT. QUICTRIG'S EXECUTION TIME IS 4.1 MS; THIS IS 10 TIMES AS FAST AS CD*TR*GS. QUICTRIG MAY BE +# AND CDUSPOT +4. UNLIKE CD*TR*GS, QUICTRIG DOES NOT LEAVE THE 1'S COMPLEMENT VERSIONS OF THE ANGLES IN +# CDUSPOT. QUICTRIG'S EXECUTION TIME IS 4.1 MS; THIS IS 10 TIMES AS FAST AS CD*TR*GS. QUICTRIG MAY BE # CALLED FROM INTERPRETIVE AS AN RTB OP-CODE, OR FROM BASIC VIA BANKCALL OR IBNKCALL. QUICTRIG INHINT # INHINT SINCE DAP USES THE SAME TEMPS @@ -150,23 +150,23 @@ QUICTRIG INHINT # INHINT SINCE DAP USES THE SAME TEMPS # Page 1262 #**************************************************************************** -# THESE INTERFACE ROUTINES MAKE IT POSSIBLE TO CALL AX*SR*T, ETC., IN -# INTERPRETIVE. LATER, WHERE POSSIBLE, THEY WILL BE ELIMINATED. +# THESE INTERFACE ROUTINES MAKE IT POSSIBLE TO CALL AX*SR*T, ETC., IN +# INTERPRETIVE. LATER, WHERE POSSIBLE, THEY WILL BE ELIMINATED. # -# THESE INTERFACE ROUTINES ARE PERMANENT. ALL RESTORE USER'S EBANK -# SETTING. ALL ARE STRICT INTERPRETIVE SUBROUTINES, CALLED USING "CALL", -# RETURNING VIA QPRET. ALL EXPECT AND RETURN THE VECTOR TO BE TRANSFOR- +# THESE INTERFACE ROUTINES ARE PERMANENT. ALL RESTORE USER'S EBANK +# SETTING. ALL ARE STRICT INTERPRETIVE SUBROUTINES, CALLED USING "CALL", +# RETURNING VIA QPRET. ALL EXPECT AND RETURN THE VECTOR TO BE TRANSFOR- # MED INTERPRETER-STYLE IN MPAC; COMPONENTS AT MPAC, MPAC +3, AND MPAC +5. # -# TRG*SMNB AND TRG*NBSM BOTH EXPECT TO SEE THE 2'S COMPLEMENT ANGLES +# TRG*SMNB AND TRG*NBSM BOTH EXPECT TO SEE THE 2'S COMPLEMENT ANGLES # AT CDUSPOT (ORDER Y Z X, AT CDUSPOT, CDUSPOT +2, AND CDUSPOT +4; ODD -# LOCATIONS NEED NOT BE ZEROED). TRG*NBSM DOES THE NB TO SM TRANSFOR- +# LOCATIONS NEED NOT BE ZEROED). TRG*NBSM DOES THE NB TO SM TRANSFOR- # MATION; TRG*SMNB, VICE VERSA. # -# CDU*NBSM DOES ITS TRANSFORMATION USING THE PRESENT CONTENTS OF -# THE CDU COUNTERS. OTHERWISE IT IS LIKE TRG*NBSM. +# CDU*NBSM DOES ITS TRANSFORMATION USING THE PRESENT CONTENTS OF +# THE CDU COUNTERS. OTHERWISE IT IS LIKE TRG*NBSM. # -# CDU*SMNB IS THE COMPLEMENT OF CDU*NBSM. +# CDU*SMNB IS THE COMPLEMENT OF CDU*NBSM. CDU*SMNB EXIT TC CDUTRIGS @@ -191,14 +191,14 @@ C*MM*N3 TC MPACVBUF # FOR AX*SR*T CA THREE # SIGNAL FOR NB TO SM TRANSFORMATION TCF C*MM*N2 -# *NBSM* AND *SMNB* EXPECT TO SEE THE SINES AND COSINES (AT SINCDU -# AND COSCDU) RATHER THAN THE ANGLES THEMSELVES. OTHERWISE THEY ARE +# *NBSM* AND *SMNB* EXPECT TO SEE THE SINES AND COSINES (AT SINCDU +# AND COSCDU) RATHER THAN THE ANGLES THEMSELVES. OTHERWISE THEY ARE # LIKE TRG*NBSM AND TRG*SMNB. # -# NOTE THAT JUST AS CD*TR*GS NEED BE CALLED ONLY ONCE FOR EACH SERIES +# NOTE THAT JUST AS CD*TR*GS NEED BE CALLED ONLY ONCE FOR EACH SERIES # OF TRANSFORMATIONS USING THE SAME ANGLES, SO TOO ONLY ONE OF TRG*NBSM # Page 1263 -# AND TRG*SMNB NEED BE CALLED FOR EACH SERIES. FOR SUBSEQUENT TRANFOR- +# AND TRG*SMNB NEED BE CALLED FOR EACH SERIES. FOR SUBSEQUENT TRANFOR- # MATIONS USE *NBSM* AND *SMNB*. *SMNB* EXIT @@ -207,21 +207,21 @@ C*MM*N3 TC MPACVBUF # FOR AX*SR*T *NBSM* EXIT TCF C*MM*N3 -# AX*SR*T COMBINES THE OLD SMNB AND NBSM. FOR THE NB TO SM -# TRANSFORMATION, ENTER WITH +3 IN A. FOR SM TO NB, ENTER WITH -3. +# AX*SR*T COMBINES THE OLD SMNB AND NBSM. FOR THE NB TO SM +# TRANSFORMATION, ENTER WITH +3 IN A. FOR SM TO NB, ENTER WITH -3. # THE VECTOR TO BE TRANSFORMED ARRIVES, AND IS RETURNED, IN VBUF. # AX*SR*T EXPECTS TO FIND THE SINES AND COSINES OF THE ANGLES OF ROTATION -# AT SINCDU AND COSCDU, IN THE ORDER Y Z X. A CALL TO CD*TR*GS, WITH +# AT SINCDU AND COSCDU, IN THE ORDER Y Z X. A CALL TO CD*TR*GS, WITH # THE 2'S COMPLEMENT ANGLES (ORDER Y Z X) AT CDUSPOT, WILL TAKE CARE OF -# THIS. HERE IS A SAMPLE CALLING SEQUENCE:- +# THIS. HERE IS A SAMPLE CALLING SEQUENCE:- # TC CDUTRIGS # CS THREE # ("CA THREE" FOR NBSM) # TC AX*SR*T # THE CALL TO CD*TR*GS NEED NOT BE REPEATED, WHEN AX*SR*T IS CALLED MORE # THAN ONCE, UNLESS THE ANGLES HAVE CHANGED. # -# AX*SR*T IS GUARANTEED SAFE ONLY FOR VECTORS OF MAGNITUDE LESS THAN -# UNITY. A LOOK AT THE CASE IN WHICH A VECTOR OF GREATER MAGNITUDE +# AX*SR*T IS GUARANTEED SAFE ONLY FOR VECTORS OF MAGNITUDE LESS THAN +# UNITY. A LOOK AT THE CASE IN WHICH A VECTOR OF GREATER MAGNITUDE # HAPPENS TO LIE ALONG AN AXIS OF THE SYSTEM TO WHICH IT IS TO BE TRANS- # FORMED CONVINCES ONE THAT THIS IS A RESTRICTION WHICH MUST BE ACCEPTED. @@ -229,7 +229,7 @@ AX*SR*T TS DEXDEX # WHERE IT BECOMES THE INDEX OF INDEXES EXTEND QXCH RTNSAVER -R*TL**P CCS DEXDEX # +3 --> 0 -3 --> 2 +R*TL**P CCS DEXDEX # +3 --> 0 -3 --> 2 CS DEXDEX # THUS: +2 --> 1 -2 --> 1 AD THREE # +1 --> 2 -1 --> 0 EXTEND @@ -304,7 +304,7 @@ INDEXI DEC 4 # ********** DON'T *********** BANK COUNT* $$/POWFL -# ROUTINE FLESHPOT COMPUTES THE BODY-STABLE MEMBER TRANSFORMATION MATRIX (COMMONLY CALLED XNB) AND STORES +# ROUTINE FLESHPOT COMPUTES THE BODY-STABLE MEMBER TRANSFORMATION MATRIX (COMMONLY CALLED XNB) AND STORES # IT IN THE LOCATIONS SPECIFIED BY THE ECADR ENTERING IN A. CALCSMSC EXIT @@ -364,13 +364,13 @@ FLESHPOT TS TEM2 ADRES SINCDUZ EXTEND DCS MPAC - DXCH MPAC +5 + DXCH MPAC +5 TC DMP ADRES SINCDUY DXCH MPAC DDOUBL DDOUBL - DXCH MPAC +5 + DXCH MPAC +5 DXCH MPAC TC DMP @@ -387,7 +387,7 @@ FLESHPOT TS TEM2 ADRES COSCDUX DXCH MPAC DDOUBL - DAS MPAC +5 + DAS MPAC +5 EXTEND DCA SINCDUY @@ -397,7 +397,7 @@ FLESHPOT TS TEM2 # Page 1267 DDOUBL - DAS BUF + DAS BUF DXCH BUF DXCH MPAC @@ -408,12 +408,12 @@ FLESHPOT TS TEM2 DXCH 14 # = SINY COSX + SINX SINZ COSY EXTEND - DCA MPAC +3 + DCA MPAC +3 INDEX TEM1 DXCH 16 # = - SINX COSZ EXTEND - DCA MPAC +5 + DCA MPAC +5 INDEX TEM1 DXCH 20 # = COSX COSY - SINX SINY SINZ @@ -431,14 +431,14 @@ FLESHPOT TS TEM2 INDEX TEM1 DXCH 6 - DXCH MPAC +3 + DXCH MPAC +3 DDOUBL - INDEX TEM1 + INDEX TEM1 DXCH 10 - DXCH MPAC +5 + DXCH MPAC +5 DDOUBL - INDEX TEM1 + INDEX TEM1 DXCH 12 CA TEM2