swh:1:snp:63e2d142f91fc04ec33789d9d7bb85f3bef72e05
Raw File
Tip revision: 66d8e606a8d996ded60bc81d5edf319142a5fad9 authored by Ron Burkey on 04 October 2021, 11:49:55 UTC
Merge branch 'master' of https://github.com/virtualagc/virtualagc
Tip revision: 66d8e60
IMU_MODE_SWITCHING_ROUTINES.agc
### FILE="Main.annotation"
## Copyright:   Public domain.
## Filename:    IMU_MODE_SWITCHING_ROUTINES.agc
## Purpose:     This program is designed to extensively test the Apollo Guidance Computer
##              (specifically the LM instantiation of it). It is built on top of a heavily
##              stripped-down Aurora 12, with all code ostensibly added by the DAP Group
##              removed. Instead Borealis expands upon the tests provided by Aurora,
##              including corrected tests from Retread 44 and tests from Ron Burkey's
##              Validation.
## Assembler:   yaYUL
## Contact:     Mike Stewart <mastewar1@gmail.com>.
## Website:     www.ibiblio.org/apollo/index.html
## Mod history: 2016-12-20 MAS  Created from Aurora 12 (with much DAP stuff removed).
##		2017-03-13 RSB	Comment-text fixes noted in proofing Luminary 116.

                SETLOC          ENDT4FF
                EBANK=          COMMAND

# FIXED-FIXED ROUTINES.
ZEROICDU        CAF             ZERO                            # ZERO ICDU COUNTERS.
                TS              CDUX
                TS              CDUY
                TS              CDUZ
                TC              Q

3SECS           DEC             300

ENDIMODF        EQUALS

# IMU ZEROING ROUTINE.

                BANK            13

IMUZERO         INHINT                                          # ROUTINE TO ZERO ICDUS.
                CS              IMUSEFLG                        # SET INDICATION THAT A MISSION OR TEST
                MASK            STATE                           # PROGRAM IS USING THE IMU.
                AD              IMUSEFLG
                TS              STATE

                TC              CAGETSTQ                        # IF IMU COMING UP, TURN-ON PROGRAM WILL
                TCF             MODEEXIT                        # DO ALL THE WORK.

                CS              BITS3&4                         # INHIBIT ICDUFAIL AND IMUFAIL (IN CASE WE
                MASK            IMODES30                        # JUST CAME OUT OF COARSE ALIGN).
                AD              BITS3&4
                TS              IMODES30

                CS              BITS4&6                         # SEND ZERO ENCODE WITH COARSE AND ERROR
                EXTEND                                          # COUNTER DISABLED.
                WAND            12                          

                CAF             BIT5                            
                EXTEND                                          
                WOR             12                          

                CAF             BIT6                            # WAIT 320 MS TO GIVE AGS ADEQUATE TIME TO
                TC              WAITLIST                        # RECEIVE ITS PULSE TRAIN.
                2CADR           IMUZERO2                        

                CS              IMODES30                        # SEE IF IMU OPERATING AND ALARM IF NOT.
                MASK            BIT9                            
                CCS             A                               
                TCF             MODEEXIT                        

                TC              ALARM                           
                OCT             210                             

MODEEXIT        RELINT                                          # GENERAL MODE-SWITCHING EXIT.
                TCF             SWRETURN                        

IMUZERO2        TC              CAGETSTQ                        # POSSIBLY SWITCH TO TURN-ON PROGRAM.
                TCF             TASKOVER

                TC              ZEROICDU                        # ZERO COUNTERS.
                CS              BIT5                            # REMOVE ZERO DISCRETE.
                EXTEND                                          
                WAND            12                          

                CAF             3SECSM                          # WAIT FOR COUNTERS TO SYNCRONIZE.
                TC              VARDELAY                        

IMUZERO3        TC              CAGETSTQ                       
                TCF             TASKOVER

                CS              BITS3&4                         # REMOVE IMUFAIL AND ICDUFAIL INHIBIT.
                MASK            IMODES30                        
                TS              IMODES30                        

                TC              IBNKCALL                        # SET ISS WARNING IF EITHER OF ABOVE ARE
                CADR            SETISSW                         # PRESENT.

                TCF             ENDIMU                          

# IMU COARSE ALIGN MODE.

IMUCOARS        CAF             BIT4                            # SEND COARSE ALIGN ENABLE DISCRETE
                INHINT
                EXTEND
                WOR             CHAN12

                CS              BIT4                            # INHIBIT IMU FAIL.
                MASK            IMODES30
                AD              BIT4
                TS              IMODES30

                CAF             SIX                             
                TC              WAITLIST                        
                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                        

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                          
                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                        

CORSCHK2        CCS             ITEMP1                          
                TCF             CHKCORS                         
                TS              GCOMP                           # ZERO GYRO COMPENSATION REGISTERS IN
                TS              GCOMP           +1              # PREPARATION FOR COMPENSATION.
                TS              GCOMP           +2
                TS              GCOMP           +3
                TS              GCOMP           +4
                TS              GCOMP           +5

                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              # AND THEN TO VARDELAY.

# IMU FINE ALIGN MODE SWITCH.

IMUFINE         INHINT                                          
                TC              CAGETSTJ                        # SEE IF IMU BEING CAGED.

                CS              BITS4-6                         # RESET ZERO, COARSE, AND ECTR ENABLE.
                EXTEND                                          
                WAND            12                          

                CAF             BIT10                           # IMU FAIL WAS INHIBITED DURING THE
                TC              WAITLIST                        # PRESUMABLY PRECEDING COARSE ALIGN.  LEAVE
                2CADR           IFAILOK                         # IT ON FOR THE FIRST 5 SECS OF FINE ALIGN

                CAF             90SEC                           # GYRO RE-CENTERING TIME.
                TC              WAITLIST                        
                2CADR           IMUFINED                        

                TCF             MODEEXIT                        

IMUFINED        TC              CAGETEST                        # SEE THAT NO ONE HAS CAGED THE IMU.
                TCF             ENDIMU                          

IFAILOK         TC              CAGETSTQ                        # ENABLE IMU FAIL UNLESS IMU BEING CAGED.
                TCF             TASKOVER                        # IT IS.

                CAF             BIT4                            # DONT RESET IMU FAIL INHIBIT IF SOMEONE
                EXTEND                                          # HAS GONE INTO COARSE ALIGN.
                RAND            12                          
                CCS             A                               
                TCF             TASKOVER                        

                CS              BIT4                            
PFAILOK2        MASK            IMODES30                        
                TS              IMODES30                        
                TCF             TASKOVER                        

PFAILOK         TC              CAGETSTQ                        # ENABLE PIP FAIL PROG ALARM.
                TCF             TASKOVER                        

                CS              BIT5                            
                TCF             PFAILOK2                        

# ROUTINES TO INITIATE AND TERMINATE PROGRAM USE OF THE PIPAS. NO IMUSTALL REQUIRED IN EITHER CASE.

PIPUSE          TC              CAGETSTQ                        # DONT ENABLE PIPA FAIL IF IMU BEING CAGED
                TCF             SWRETURN                        

                INHINT                                          
                CAF             ZERO                            # ZERO COUNTERS.
                TS              PIPAX                           
                TS              PIPAY                           
                TS              PIPAZ                           

                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              BIT1                            # ISS WARNING.
                MASK            IMODES30                            
                AD              BIT1
                TS              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                        

#          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             14                          

                CAF             FOUR                            
GWAKE2          INHINT                                          # (IF A JOB WAS PUT TO SLEEP, THE POWER
                TC              WAITLIST                        # 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                        

# 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                           

# GYRO-TORQUING WAITLIST TASKS.

STRTGYRO        CS              GDESELCT                        # DE-SELECT LAST GYRO.
                EXTEND                                          
                WAND            14                          

                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                         

                CAF             BIT2                            # DONT RESET POWER SUPPLY IF BIT SET
                MASK            IMODES33                        # (ONLY DURING GYRO TORQUE SCALE FACTOR
                CCS             A                               # TEST).
                TCF             NORESET

                CCS             LOCCTR                          # IF A JOB WAS AWAKENED, DONT RESET GYRO
                TCF             NORESET                         # ENABLE.

                TCF             NORESET

                CS              BIT6                            # IF NO JOB AWAKENED, RESET GYRO ENABLE.
                EXTEND
                WAND            14

NORESET         TCF             IMUFINED

 -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                        

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             14                          

                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             -177                            # MAY BE ADJUSTED TO SPECIFY MINIMUM CMD.

                TCF             +4                              

                CAF             BIT14                           
                ADS             ITEMP2                          
                CAF             ZERO                            

 +4             INDEX           ITEMP1                          
                DXCH            1400                            
                CA              ITEMP2                          # ENTIRE COMMAND.
LASTSEG         TS              GYROCMD                         
                EXTEND                                          
                MP              BIT10                           # WAITLIST DT
                AD              THREE                           # TRUNCATION AND PHASE UNCERTAINTIES.
                TC              WAITLIST                        
                2CADR           STRTGYRO                        

GYROEXIT        CAF             BIT10                           # TURN ON GYRO ACTIVITY TO START TRAIN.
                EXTEND                                          
                WOR             14                          
                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                        
                2CADR           8192AUG                         

                TCF             GYROEXIT                        

8192AUG         TC              CAGETEST                        

                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              

AUG2            INDEX           ITEMP1                          
                TS              1400                            
                CAF             BIT14                           
                ADS             GYROCMD                         
                TCF             AUG3                            # COMPUTE DT.

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             14                          

                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            

# IMU MODE SWITCHING ROUTINES COME HERE WHEN ACTION COMPLETE.

ENDIMU          EXTEND                                          # MODE IS BAD IF CAGE HAS OCCURED OR IF
                READ            11                              # 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                        

#          GENERALIZED MODE SWITCHING TERMINATION. ENTER AT GOODEND FOR SUCCESSFUL COMPLETION OF AN I/O OPERATION
# OR AT BADEND FOR A N UNSUCCESSFUL ONE. C(A) OR ARRIVAL =0 FOR IMU, 1 FOR AOT, AND 2 FOR RADARS.

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                        

# GENERAL STALLING ROUTINE. USING PROGRAMS COME HERE TO WAIT FOR I/O COMPLETION.

RADSTALL        CAF             TWO                             # RR AND LR STALL.
                TCF             STALL                           

AOTSTALL        CAF             ONE                             # AOT.
                TC              STALL                           

OPTSTALL        EQUALS          AOTSTALL                        

LOTSTALL        EQUALS          RADSTALL
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              ABORT                           # TWO PROGRAMS USING SAME DEVICE.
                OCT             1210                            

# CONSTANTS FOR MODE SWITCHING ROUTINES

BITS3&4         OCT             14                           
BITS4&6         OCT             00050                           
BITS4-6         OCT             00070                           
IMUSEFLG        EQUALS          BIT8                            # INTERPRETER SWITCH 7.
13,14,15        OCT             70000

-COMMAX         DEC             -191                            
-COMMAX-        DEC             -192                            
600MS           DEC             60                              
3SECSM          EQUALS          3SECS
90SEC           DEC             9000

ENDIMODS        EQUALS
back to top