Raw File
SERVICE_ROUTINES.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    SERVICE_ROUTINES.agc
## Purpose:     A section of Luminary revision 173.
##              It is part of the reconstructed source code for the second
##              (unflown) release of the flight software for the Lunar
##              Module's (LM) Apollo Guidance Computer (AGC) for Apollo 14.
##              The code has been recreated from a reconstructed copy of
##              Luminary 178, as well as Luminary memo 167 (revision 1).
##              It has been adapted such that the resulting bugger words
##              exactly match those specified for Luminary 173 in NASA
##              drawing 2021152N, which gives relatively high confidence
##              that the reconstruction is correct.
## Reference:   pp. 1362-1368
## Assembler:   yaYUL
## Contact:     Ron Burkey <info@sandroid.org>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2019-09-18 MAS  Created from Luminary 178.

## Page 1362
                BANK            10                              
                SETLOC          DISPLAYS                        
                BANK                                            
                COUNT*          $$/DSPLA                        

UPENT2          INHINT                                          
                MASK            OCT77770                        
                TS              L                               
                CS              FLAGWRD4                        
                MASK            L                               
                ADS             FLAGWRD4                        
JOIN            RELINT                                          
                TCF             Q+1                             

DOWNENT2        INHINT                                          
                MASK            OCT77770                        
                COM                                             
                MASK            FLAGWRD4                        
                TS              FLAGWRD4                        
                TCF             JOIN                            

OCT7            EQUALS          SEVEN                           

## Page 1363
#     UPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES.   USING THEM, WHETHER OR
# NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO
# EBANK SETTING.   A "NAMED" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL
# ASSEMBLER.

#     AT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS.   ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO
# NAME ANY BIT IN ERASABLE MEMORY.

#     CALLING SEQUENCES ARE AS FOLLOWS:-

#                     TC     UPFLAG                    TC     DOWNFLAG
#                     ADRES  NAME OF FLAG              ADRES  NAME OF FLAG

#     RETURN IS TO THE LOCATION FOLLOWING THE "ADRES" ABOUT .58 MS AFTER THE "TC".

#     UPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.

                BLOCK           02                              
                SETLOC          FFTAG1                          
                BANK                                            
                COUNT*          $$/FLAG                         

UPFLAG          CA              Q                               
                TC              DEBIT                           
                COM                                             # +(15 - BIT)
                EXTEND                                          
                ROR             LCHAN                           # SET BIT
COMFLAG         INDEX           ITEMP1                          
                TS              FLAGWRD0                        
                LXCH            ITEMP3                          
                RELINT                                          
                TC              L                               


DOWNFLAG        CA              Q                               
                TC              DEBIT                           
                MASK            L                               # RESET BIT
                TCF             COMFLAG                         


DEBIT           AD              ONE                             # GET DE BITS
                INHINT                                          
                TS              ITEMP3                          
                CA              LOW4                            # DEC15
                TS              ITEMP1                          
                INDEX           ITEMP3                          
                CA              0               -1              # ADRES
                TS              L                               
                CA              ZERO                            
## Page 1364
                EXTEND                                          
                DV              ITEMP1                          # A = FLAGWRD, L = (15 - BIT)
                DXCH            ITEMP1                          
                INDEX           ITEMP1                          
                CA              FLAGWRD0                        
                TS              L                               # CURRENT STATE
                INDEX           ITEMP2                          
                CS              BIT15                           # -(15 - BIT)
                TC              Q                               

## Page 1365
# DELAYJOB- A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.

# ENTRANCE REQUIREMENTS...
#                                                  CAF    DT              DELAY JOB FOR DT CENTISECS
#                                                  TC     BANKCALL
#                                                  CADR   DELAYJOB

                BANK            06                              
                SETLOC          DLAYJOB                         
                BANK                                            

# THIS MUST REMAIN IN BANK 0 *****************************************
                COUNT*          $$/DELAY                        
2SECDELY        CAF             2SECS                           
DELAYJOB        INHINT                                          
                TS              Q                               # STORE DELAY DT IN Q FOR DLY -1 IN
                
                CAF             DELAYNUM                        # WAITLIST
DELLOOP         TS              RUPTREG1                        
                INDEX           A                               
                CA              DELAYLOC                        # IS THIS DELAYLOC AVAILABLE
                EXTEND                                          
                BZF             OK2DELAY                        # YES

                CCS             RUPTREG1                        # NO, TRY NEXT DELAYLOC
                TCF             DELLOOP                         

                DXCH            BUF2                            
                TC              BAILOUT1                        # NO AVAILABLE LOCS.
                OCT             31104                           

OK2DELAY        CA              TCSLEEP                         # SET WAITLIST IMMEDIATE RETURN
                TS              WAITEXIT                        

                CA              FBANK                           
                AD              RUPTREG1                        # STORE BBANK FOR TASK CALL
                TS              L                               

                CAF             WAKECAD                         # STORE CADR FOR TASK CALL
                TCF             DLY2            -1              # DLY IS IN WAITLIST ROUTINE

TCGETCAD        TC              MAKECADR                        # GET CALLERS FCADR

                INDEX           RUPTREG1                        
                TS              DELAYLOC                        # SAVE DELAY CADRS

                TC              JOBSLEEP                        

WAKER           CAF             ZERO                            
                INDEX           BBANK                           

## Page 1366
                XCH             DELAYLOC                        # MAKE DELAYLOC AVAILABLE
                TC              JOBWAKE                         

                TC              TASKOVER                        

TCSLEEP         GENADR          TCGETCAD        -2              
WAKECAD         GENADR          WAKER                           

## Page 1367
# GENTRAN, A BLOCK TRANSFER ROUTINE.

# WRITTEN BY D. EYLES
# MOD 1 BY KERNAN                                                         UTILITYM REV 17 11/18/67

# MOD 2 BY SCHULENBERG  (REMOVE RELINT)   SKIPPER REV 4 2/28/68

#          THIS ROUTINE IS USEFULL FOR TRANSFERING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N
# CONSECUTIVE ERASABLE LOCATIONS.  IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.

#          GENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT.  THE CALLING SEQUENCE IS:

#                                         I        CA     N-1             # OF QUANTITIES MINUS ONE.
#                                         I +1     TC     GENTRAN         IN FIXED-FIXED.
#                                         I +2     ADRES  L               STARTING ADRES OF DATA TO BE MOVED.
#                                         I +3     ADRES  M               STARTING ADRES OF DUPLICATION BLOCK.
#                                         I +4                            RETURNS HERE.

#          GENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.

#          A, L AND ITEMP1 ARE NOT PRESERVED.

                BLOCK           02                              
                SETLOC          FFTAG4                          
                BANK                                            

                EBANK=          ITEMP1                          

                COUNT*          $$/TRAN                         

GENTRAN         INHINT                                          
                TS              ITEMP1                          # SAVE N-1.
                INDEX           Q                               # C(Q) = ADRES L.
                AD              0                               # ADRES (L + N - 1).
                INDEX           A                               
                CA              0                               # C(ABOVE).
                TS              L                               # SAVE DATA.
                CA              ITEMP1                          
                INDEX           Q                               
                AD              1                               # ADRES (M + N - 1).
                INDEX           A                               
                LXCH            0                               # STUFF IT.
                CCS             ITEMP1                          # LOOP UNTIL N-1 = 0.
                TCF             GENTRAN         +1              
                TCF             Q+2                             # RETURN TO CALLER.

## Page 1368
# B5OFF   ZERO BIT 5 OF EXTVBACT, WHICH IS SET BY TESTXACT.

#          MAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT

                COUNT*          $$/EXTVB                        

B5OFF           CS              BIT5                            
                MASK            EXTVBACT                        
                TS              EXTVBACT                        
                TC              ENDOFJOB                        
back to top