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
BURN,_BABY,_BURN_--_MASTER_IGNITION_ROUTINE.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: BURN,_BABY,_BURN_--_MASTER_IGNITION_ROUTINE.agc
## Purpose: A section of LUM69 revision 2.
## It is part of the reconstructed source code for the flown
## version of the flight software for the Lunar Module's (LM)
## Apollo Guidance Computer (AGC) for Apollo 10. The code has
## been recreated from a copy of Luminary revsion 069, using
## changes present in Luminary 099 which were described in
## Luminary memos 75 and 78. The code has been adapted such
## that the resulting bugger words exactly match those specified
## for LUM69 revision 2 in NASA drawing 2021152B, which gives
## relatively high confidence that the reconstruction is correct.
## Reference: pp. 739-758
## Assembler: yaYUL
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 2019-07-27 MAS Created from Luminary 69.
## Page 739
## <br><br>
## At the get-together of the AGC developers celebrating the 40th anniversary
## of the first moonwalk, Don Eyles (one of the authors of this routine along
## with Peter Adler) related a little interesting history behind the
## naming of the routine to one of us.<br>
## <br>
## It traces back to 1965 and the Los Angeles riots, and was inspired
## by disc jockey extraordinaire and radio station owner Magnificent Montague.
## Magnificent Montague used the phrase "Burn, baby! BURN!" when spinning the
## hottest new records. Magnificent Montague was the charismatic voice of
## soul music in Chicago, New York, and Los Angeles from the mid-1950s to
## the mid-1960s.
BANK 36
SETLOC P40S
BANK
EBANK= WHICH
COUNT* $$/P40
# THE MASTER IGNITION ROUTINE IS DESIGNED FOR USE BY THE FOLLOWING LEM PROGRAMS: P12, P40, P42, P61, P63.
# IT PERFORMS ALL FUNCTIONS IMMEDIATELY ASSOCIATED WITH APS OR DPS IGNITION: IN PARTICULAR, EVERYTHING LYING
# BETWEEN THE PRE-IGNITION TIME CHECK -- ARE WE WITHIN 45 SECONDS OF TIG? -- AND TIG + 26 SECONDS, WHEN DPS
# PROGRAMS THROTTLE UP.
# VARIATIONS AMONG PROGRAMS ARE ACCOMODATED BY MEANS OF TABLES CONTAINING CONSTANTS (FOR AVEGEXIT, FOR
# WAITLIST, FOR PINBALL) AND TCF INSTRUCTIONS. USERS PLACE THE ADRES OF THE HEAD OF THE APPROPRIATE TABLE
# (OF P61TABLE FOR P61LM, FOR EXAMPLE) IN ERASABLE REGISTER 'WHICH' (E4). THE IGNITION ROUTINE THEN INDEXES BY
# WHICH TO OBTAIN OR EXECUTE THE PROPER TABLE ENTRY. THE IGNITION ROUTINE IS INITIATED BY A TCF BURNBABY,
# THROUGH BANKJUMP IF NECESSARY. THERE IS NO RETURN.
# THE MASTER IGNITION ROUTINE WAS CONCEIVED AND EXECUTED, AND (NOTA BENE) IS MAINTAINED BY ADLER AND EYLES.
# HONI SOIT QUI MAL Y PENSE
# ****************************************
# TABLES FOR THE IGNITION ROUTINE
# ****************************************
# NOLI SE TANGERE
P12TABLE VN 0674 # (0)
VN 0674 # (1)
TCF COMFAIL3 # (2)
TCF GOCUTOFF # (3)
TCF TASKOVER # (4)
TCF P12SPOT # (5)
DEC 0 # (6) NO ULLAGE
EBANK= WHICH
2CADR SERVEXIT # (7)
TCF DISPCHNG # (11)
TCF WAITABIT # (12)
TCF P12IGN # (13)
P40TABLE VN 0640 # (0)
VN 0640 # (1)
TCF COMFAIL4 # (2)
TCF GOPOST # (3)
TCF P40ZOOM # (4)
TCF P40SPOT # (5)
## Page 740
DEC 2240 # (6)
EBANK= OMEGAQ
2CADR STEERING # (7)
TCF P40SJUNK # (11)
TCF WAITABIT # (12)
TCF P40IGN # (13)
P41TABLE TCF P41SPOT # (5)
DEC -1 # (6)
EBANK= OMEGAQ
2CADR CALCN85 # (7)
TCF TASKOVER # (11)
TCF TIGTASK # (12)
P42TABLE VN 0640 # (0)
VN 0640 # (1)
TCF COMFAIL4 # (2)
TCF GOPOST # (3)
TCF TASKOVER # (4)
TCF P42SPOT # (5)
DEC 2640 # (6)
EBANK= OMEGAQ
2CADR STEERING # (7)
TCF P40SJUNK # (11)
TCF WAITABIT # (12)
TCF P42IGN # (13)
P63TABLE VN 0662 # (0)
VN 0661 # (1)
TCF COMFAIL3 # (2)
TCF V99RECYC # (3)
TCF P63ZOOM # (4)
TCF P63SPOT # (5)
DEC 2240 # (6)
EBANK= WHICH
2CADR SERVEXIT # (7)
TCF DISPCHNG # (11)
TCF WAITABIT # (12)
TCF P63IGN # (13)
## Page 741
ABRTABLE VN 0663 # (0)
NOOP # (1)
TCF COMFAIL3 # (2)
TCF GOCUTOFF # (3)
TCF TASKOVER # (4)
NOOP # (5)
NOOP # (6)
NOOP # (7)
NOOP
TCF DISPCHNG # (11)
TCF WAITABIT # (12)
TCF ABRTIGN # (13)
# ****************************************
# GENERAL PURPOSE IGNITION ROUTINES
# ****************************************
BURNBABY TC PHASCHNG # GROUP 4 RESTARTS HERE
OCT 04024
CAF ZERO # EXTIRPATE JUNK LEFT IN DVTOTAL
TS DVTOTAL
TS DVTOTAL +1
TC BANKCALL # P40AUTO MUST BE BANKCALLED EVEN FROM ITS
CADR P40AUTO # OWN BANK TO SET UP RETURN PROPERLY
B*RNB*B* EXTEND
DCA TIG # STORE NOMINAL TIG FOR OBLATENESS COMP.
DXCH GOBLTIME # AND FOR P70 OR P71.
INHINT
TC IBNKCALL
CADR ENGINOF3
RELINT
INDEX WHICH
TCF 5
P12SPOT = P40SPOT # (5)
P42SPOT = P40SPOT # (5)
P63SPOT = P41SPOT # (5) IN P63 CLOKTASK ALREADY GOING
P40SPOT CS OCT20 # (5)
TC BANKCALL # MUST BE BANKCALLED FOR GENERALIZED
CADR STCLOK2 # RETURN
P41SPOT TC INTPRET # (5)
DLOAD DSU
## Page 742
TIG
D29.9SEC
STCALL TDEC1
INITCDUW
BOFF CALL
MUNFLAG
GOMIDAV
CSMPREC
VLOAD MXV
VATT1
REFSMMAT
VSR1
STOVL V(CSM) # CSM VELOCITY - M/CS*2(7)
RATT1
VSL4 MXV
REFSMMAT
STCALL R(CSM) # CSM POSITION - M*2(24)
MUNGRAV
STODL G(CSM) # CSM GRAVITY VEC. - M/CS*2(7)
TAT
STORE TDEC1 # RELOAD TDEC1 FOR MIDTOAV.
GOMIDAV CALRB
MIDTOAV1
TCF CALLT-35 # MADE IT IN TIME.
EXTEND # TIG WAS SLIPPED, SO RESET TIG TO 29.9
DCA PIPTIME1 # SECONDS AFTER THE TIME TO WHICH WE DID
DXCH TIG # INTEGRATE.
EXTEND
DCA D29.9SEC
DAS TIG
CALLT-35 DXCH MPAC
DXCH SAVET-30 # DELTA-T UNTIL TIG-30
EXTEND
DCS 5SECDP
DAS SAVET-30 # DELTA-T UNTIL TIG-35
EXTEND
DCA SAVET-30
TC LONGCALL
EBANK= TTOGO
2CADR TIG-35
TC PHASCHNG
OCT 20254 # 4.25SPOT FOR TIG-35 RESTART.
TC CHECKMM
DEC 63
TCF ENDOFJOB # NOT P63
CS CNTDNDEX # P63 CAN START DISPLAYING NOW.
## Page 743
TS DISPDEX
TC INTPRET
VLOAD ABVAL
VN1
STORE ABVEL # INITIALIZE ABVEL FOR P63 DISPLAY
EXIT
TCF ENDOFJOB
# ****************************************
TIG-35 CAF 5SEC
TC TWIDDLE
ADRES TIG-30
TC PHASCHNG
OCT 40154 # 4.15SPOT FOR TIG-30 RESTART
CS BLANKDEX # BLANK DSKY FOR 5 SECONDS
TS DISPDEX
INDEX WHICH
CS 6 # CHECK ULLAGE TIME.
EXTEND
BZMF TASKOVER
CAF 4.9SEC # SET UP TASK TO RESTORE DISPLAY AT TIG-30
TC TWIDDLE
ADRES TIG-30.1
CAF PRIO17 # A NEGATIVE ULLAGE TIME INDICATES P41, IN
TC NOVAC # WHICH CASE WE HAVE TO SET UP A JOB TO
EBANK= TTOGO # BLANK THE DSKY FOR FIVE SECONDS, SINCE
2CADR P41BLANK # CLOKJOB IS NOT RUNNING DURING P41.
TCF TASKOVER
P41BLANK TC BANKCALL # BLANK DSKY.
CADR CLEANDSP
TCF ENDOFJOB
TIG-30.1 CAF PRIO17 # SET UP JOB TO RESTORE DISPLAY AT TIG-30
TC NOVAC
EBANK= TTOGO
2CADR TIG-30A
TCF TASKOVER
TIG-30A CAF V16N85B
TC BANKCALL # RESTORE DISPLAY.
CADR REGODSP # REGODSP DOES A TCF ENDOFJOB
## Page 744
# *****************************************
TIG-30 CAF S24.9SEC
TC TWIDDLE
ADRES TIG-5
CS CNTDNDEX # START UP CLOKTASK AGAIN
TS DISPDEX
INDEX WHICH # PICK UP APPROPRIATE ULLAGE-ON TIME
CAF 6
EXTEND
BZMF ULLGNOT # DON'T SET UP ULLAGE IF DT IS NEG OR ZERO
TS SAVET-30 # SAVE DELTA-T FOR RESTART
TC TWIDDLE
ADRES ULLGTASK
CA THREE # RESTART PROTECT ULLGTASK (1.3SPOT)
TS L
CS THREE
DXCH -PHASE1
CS TIME1
TS TBASE1
ULLGNOT EXTEND
INDEX WHICH
DCA 7 # LOAD AVEGEXIT WITH APPROPRIATE 2CADR
DXCH AVEGEXIT
CAF TWO # 4.2SPOT RESTARTS IMMEDIATELY AT REDO4.2
TS L
CS TWO # AND ALSO AT TIG-5 AT THE CORRECT TIME.
DXCH -PHASE4
CS TIME1
TS TBASE4 # SET TBASE4 FOR TIG-5 RESTART
REDO2.17 EXTEND
DCA NEG0 # CLEAR OUT GROUP 2 SO LAMBERT CAN START
DXCH -PHASE2 # IF NEEDED.
REDO4.2 CCS PHASE5 # IS SERVICER GOING?
TCF TASKOVER # YES, DON'T START IT UP AGAIN.
TC POSTJUMP
CADR PREREAD # PREREAD ENDS THIS TASK
# ****************************************
## Page 745
ULLGTASK TC ONULLAGE # THIS COMES AT TIG-7.5 OR TIG-3.5
TC PHASCHNG
OCT 1
TCF TASKOVER
# ****************************************
TIG-5 CAF 5SEC
TC TWIDDLE
ADRES TIG-0
TC DOWNFLAG # RESET IGNFLAG AND ASTNFLAG
ADRES IGNFLAG # FOR LIGHT-UP LOGIC
TC DOWNFLAG
ADRES ASTNFLAG
TC 2PHSCHNG
OCT 40074 # RESTART TIG-0 (4.7SPOT)
OCT 05013 # RESTART HERE (FOR S40.13 IF NEEDED)
OCT 77777
INDEX WHICH
TCF 11
P40SJUNK CAF PRIO20 # (11) P40 AND P42 COME HERE
TC FINDVAC
EBANK= TTOGO
2CADR S40.13
DISPCHNG CS VB99DEX # (11)
TS DISPDEX
TCF TASKOVER
# ****************************************
TIG-0 CS FLAGWRD7 # SET IGNFLAG SINCE TIG HAS ARRIVED
MASK IGNFLBIT
ADS FLAGWRD7
TC CHECKMM # IN P63 CASE, THROTTLE-UP IS ZOOMTIME
DEC 63 # AFTER NOMINAL IGNITION, NOT ACTUAL
TCF IGNYET?
CA ZOOMTIME
TC TWIDDLE
ADRES ZOOM
## Page 746
TC 2PHSCHNG
OCT 40033
OCT 05014
OCT 77777
IGNYET? CAF ASTNBIT # CHECK ASTNFLAG: HAS ASTRONAUT RESPONDED
MASK FLAGWRD7 # TO OUR ENGINE ENABLE REQUEST?
EXTEND
INDEX WHICH
BZF 12 # BRANCH IF HE HAS NOT RESPONDED YET
IGNITION CS FLAGWRD5 # INSURE ENGONFLG IS SET.
MASK ENGONBIT
ADS FLAGWRD5
CS PRIO30 # TURN ON THE ENGINE.
EXTEND
RAND DSALMOUT
AD BIT13
EXTEND
WRITE DSALMOUT
EXTEND # SET TEVENT FOR DOWNLINK
DCA TIME2
DXCH TEVENT
EXTEND # UPDATE TIG USING TGO FROM S40.13
DCA TGO
DXCH TIG
EXTEND
DCA TIME2
DAS TIG
CS FLUNDBIT # PERMIT GUIDANCE LOOP DISPLAYS
MASK FLAGWRD8
TS FLAGWRD8
INDEX WHICH
TCF 13
P63IGN EXTEND # (13) INITIATE BURN DISPLAYS
DCA DSP2CADR
DXCH AVGEXIT
CA Z # ASSASSINATE CLOKTASK
TS DISPDEX
CS FLAGWRD9 # SET FLAG FOR P70-P71
MASK LETABBIT
ADS FLAGWRD9
## Page 747
CS FLAGWRD7 # SET SWANDISP TO ENABLE R10.
MASK SWANDBIT
ADS FLAGWRD7
CS PULSES # MAKE SURE DAP IS NOT IN MINIMUM-IMPULSE
MASK DAPBOOLS # MODE, IN CASE OF SWITCH TO P66
TS DAPBOOLS
EXTEND # INITIALIZE TIG FOR P70 AND P71.
DCA TIME2
DXCH TIG
CAF ZERO # INITIALIZE WCHPHASE AND FLPASSO
TS WCHPHASE
TS WCHPHOLD # ALSO WHCPHOLD
CA TWO
TS FLPASS0
TCF P42IGN
P40IGN CS FLAGWRD5 # (13)
MASK NOTHRBIT
EXTEND
BZF P42IGN
CA ZOOMTIME # WAITLIST FOR ZOOM (FLATOUT. ETC.)
TC TWIDDLE
ADRES ZOOM
P63IGN1 TC 2PHSCHNG
OCT 40033 # 3.3SPOT FOR ZOOM RESTART.
OCT 05014 # TYPE C RESTARTS HERE IMMEDIATELY
OCT 77777
TCF P42IGN
ABRTIGN TC CHECKMM # (13) BRANCH TO APPROPRIATE ABORT
DEC 71 # ENGINE-ON SEQUENCE.
TCF P42IGN # CONTINUE ENGINE-ON SEQUENCE
P12IGN CA Z # (13) KILL CLOKTASK
TS DISPDEX
EXTEND # CONNECT ASCENT GYIDANCE TO SERVICER.
DCA ATMAGADR
DXCH AVGEXIT
CS FLAGWRD7 # ENABLE R10.
MASK SWANDBIT
ADS FLAGWRD7
P42IGN CS DRIFTBIT # ENSURE THAT POWERED-FLIGHT SWITCHING
CS DRIFTBIT # ENSURE THAT POWERED-FLIGHT SWITCHING
MASK DAPBOOLS # CURVES ARE USED.
## Page 748
TS DAPBOOLS
CAF IMPULBIT # EXAMINE IMPULSE SWITCH
MASK FLAGWRD2
CCS A
TCF IMPLBURN
DVMONCON TC DOWNFLAG
ADRES IGNFLAG # CONNECT DVMON
TC DOWNFLAG
ADRES ASTNFLAG
TC DOWNFLAG
ADRES IDLEFLAG
TC PHASCHNG
OCT 40054
TC FIXDELAY # TURN ULLAGE OFF HALF A SECOND AFTER
DEC 50 # LIGHT UP.
ULLAGOFF TC NOULLAGE
WAITABIT EXTEND # KILL GROUP 4
DCA NEG0
DXCH -PHASE4
TCF TASKOVER
# ****************************************
TIGTASK CAF PRIO16 # TIGNOW MUST BE A JOB.
TC NOVAC
EBANK= TRKMKCNT
2CADR TIGNOW
TC PHASCHNG
OCT 6 # KILL GROUP 6.
TCF TASKOVER
# ****************************************
ZOOM INDEX WHICH
TCF 4
P63ZOOM EXTEND # (4) SET UP GUIDANCE.
DCA LUNLANAD
DXCH AVEGEXIT
## Page 749
TC IBNKCALL
CADR FLATOUT
TCF P40ZOOMA
P40ZOOM CAF BIT13 # (4) THROTTLE THE DPS TO MAXIMUM THRUST.
TS THRUST
CAF BIT4
EXTEND
WOR CHAN14
P40ZOOMA TC PHASCHNG
OCT 3
TCF TASKOVER
# ****************************************
COMFAIL TC UPFLAG # (15)
ADRES IDLEFLAG
TC UPFLAG # SET FLAG TO SUPPRESS CONFLICTING DISPLAY
ADRES FLUNDISP
CAF FOUR # RESET DVMON
TS DVCNTR
CCS PHASE6 # CLOCKTASK ACTIVE?
TCF +3 # YES
TC BANKCALL # OTHERWISE, START IT UP
CADR STCLOK1
+3 CS VB97DEX
TS DISPDEX
TC PHASCHNG # TURN OFF GROUP 4.
OCT 00004
TCF ENDOFJOB
COMFAIL1 INDEX WHICH
TCF 2
COMFAIL3 CA Z # (15) KILL CLOKTASK USING Z
TCF +2
COMFAIL4 CS CNTDNDEX
TS DISPDEX
TC DOWNFLAG # RECONNECT DV MONITOR
ADRES IDLEFLAG
TC DOWNFLAG # PERMIT GUIDANCE LOOP DISPLAYS
ADRES FLUNDISP
TCF ENDOFJOB
## Page 750
COMFAIL2 TC PHASCHNG # KILL ZOOM RESTART PROTECTION
OCT 00003
INHINT
TC KILLTASK # KILL ZOOM, IN CASE IT'S STILL TO COME
CADR ZOOM
TC IBNKCALL # COMMAND ENGINE OFF
CADR ENGINOF4
TC UPFLAG # SET THE DRIFT BIT FOR THE DAP.
ADRES DRIFTDFL
TC INVFLAG # USE OTHER RCS SYSTEM
ADRES AORBTFLG
TC UPFLAG # TURN ON ULLAGE
ADRES ULLAGFLG
CAF BIT1
INHINT
TC TWIDDLE
ADRES TIG-5
TCF ENDOFJOB
# ****************************************
# SUBROUTINES OF THE IGNITION ROUTINE
# ****************************************
INVFLAG CA Q
TC DEBIT
COM
EXTEND
RXOR LCHAN
TCF COMFLAG
# ****************************************
NOULLAGE CS ULLAGER # MUST BE CALLED IN A TASK OR UNDER INHINT
MASK DAPBOOLS
TS DAPBOOLS
TC Q
# ****************************************
ONULLAGE CS DAPBOOLS # TURN ON ULLAGE. MUST BE CALLED IN
MASK ULLAGER # A TASK OR WHILE INHINTED.
ADS DAPBOOLS
TC Q
# ****************************************
## Page 751
STCLOK1 CA ZERO # THIS ROUTINE STARTS THE COUNT-DOWN
STCLOK2 TS DISPDEX # (CLOKTASK AND CLOKJOB). SETTING
STCLOK3 TC MAKECADR # SETTING DISPDEX POSITIVE KILLS IT.
TS TBASE4 # RETURN SAVE (NOT FOR RESTARTS)
EXTEND
DCA TIG
DXCH MPAC
EXTEND
DCS TIME2
DAS MPAC # HAVE TIG - TIME2, UNDOUBTEDLY A + NUMBER
TC TPAGREE # POSITIVE, SINCE WE PASSED THE
CAF 1SEC # 45 SECOND CHECK
TS Q
DXCH MPAC
MASK LOW5 # RESTRICT MAGNITUDE OF NUMBER IN A
EXTEND
DV Q
CA L # GET REMAINDER
AD TWO
INHINT
TC TWIDDLE
ADRES CLOKTASK
TC 2PHSCHNG
OCT 40036 # 6.3SPOT FOR CLOKTASK
OCT 05024
OCT 13000
CA TBASE4
TC BANKJUMP
CLOKTASK CS TIME1 # SET TBASE6 FOR GROUP 6 RESTART
TS TBASE6
CCS DISPDEX
TCF KILLCLOK
NOOP
CAF PRIO27
TC NOVAC
EBANK= TTOGO
2CADR CLOKJOB
TC FIXDELAY # WAIT A SECOND BEFORE STARTING OVER
DEC 100
TCF CLOKTASK
KILLCLOK EXTEND # KILL RESTART
## Page 752
DCA NEG0
DXCH -PHASE6
TCF TASKOVER
CLOKJOB EXTEND
DCS TIG
DXCH TTOGO
EXTEND
DCA TIME2
DAS TTOGO
INHINT
CCS DISPDEX # IF DISPDEX HAS BEEN SET POSITIVE BY A
TCF ENDOFJOB # TASK OR A HIGHER PRIORITY JOB SINCE THE
TCF ENDOFJOB # LAST CLOKTASK, AVOID USING IT AS AN
COM # INDEX.
RELINT # ***** DISPDEX MUST NEVER BE -0 *****
INDEX A
TCF DISPNOT -1 # (-1 DUE TO EFFECT OF CCS)
VB97DEX = 34DEC
-42 CA NVWORD +2 # NVWORD+2 CONTAINS V06 & APPROPRIATE NOUN
TC BANKCALL
CADR GOFLASHR
TCF STOPCLOK # TERMINATE CLOKTASK ON THE WAY TO P00H
TCF COMFAIL1
TCF COMFAIL2
CS ZERO
V97ORV99 TS NVWORD1
CAF VB99CON
TC LINUS
TCF ENDOFJOB
# THIS DISPLAY IS CALLED VIA ASTNCLOK.
-27 INDEX WHICH # IT IS PRIMARILY USED BY THE ASTRONAUT
CAF 1 # TO RESET HIS EVENT TIMER TO AGREE WITH
TC BANKCALL # TIG.
CADR REFLASH
TCF STOPCLOK
TCF ASTNRETN
TCF -6
CNTDNDEX = OCT20 # NEGATIVE OF THIS IS PROPER FOR DISPDEX
-20 INDEX WHICH # THIS DISPLAY COMES UP AT ONE SECOND
CAF 0 # INTERVALS. IT IS NORMALLY OPERATED
TC BANKCALL # BETWEEN TIG-30 SECONDS AND TIG-5 SECONDS
CADR REGODSP # REGODSP DOES ITS OWN TCF ENDOFJOB
VB99DEX = OCT14 # NEGATIVE OF THIS IS PROPER FOR DISPDEX
## Page 753
V99RECYC EQUALS
-14 INDEX WHICH # THIS IS THE "PLEASE ENABLE ENGINE"
CAF 0 # DISPLAY; IT IS INITIATED AT TIG-5 SEC.
TC BANKCALL # THE DISPLAY IS A V99NXX, WHERE XX IS THE
CADR GOFLASHR # NOUN THAT HAD PREVIOUSLY BEEN DISPLAYED
TCF STOPCLOK # TERMINATE GOTOPOOH TURNS OFF ULLAGE.
TCF *PROCEED
TCF *ENTER
CS BIT9
TCF V97ORV99
NOOP
BLANKDEX = TWO # NEGATIVE OF THIS IS PROPER FOR DISPDEX
-2 TC BANKCALL # BLANK DSKY. THE DSKY IS BLANKED FOR
CADR CLEANDSP # 5 SECONDS AT TIG-35 TO INDICATE THAT
DISPNOT TCF ENDOFJOB # AVERAGE G IS STARTING.
STOPCLOK TC NULLCLOK # STOP CLOKTASK & TURN OFF ULLAGE ON THE
TCF GOTOPOOH # WAY TO P00 (GOTOPOOH RELINTS)
NULLCLOK INHINT
EXTEND
QXCH P40/RET
TC NOULLAGE # TURN OFF ULLAGE ...
TC KILLTASK # DON'T LET IT COME ON, EITHER ...
CADR ULLGTASK
TC PHASCHNG # NOT EVEN IF THERE'S A RESTART.
OCT 1
CA Z # KILL CLOKTASK
TS DISPDEX
TC P40/RET
ASTNRETN TC PHASCHNG
OCT 04024
CAF ZERO # STOP DISPLAYING BUT KEEP RUNNING.
TS DISPDEX
CAF PRIO13
TC FINDVAC
EBANK= STARIND
2CADR ASTNRET
TCF ENDOFJOB
*PROCEED TC UPFLAG
ADRES ASTNFLAG
## Page 754
TCF IGNITE
*ENTER INHINT
INDEX WHICH
TCF 3
GOPOST CAF PRIO12 # (3) MUST BE LOWER PRIORITY THAN CLOKJOB
TC FINDVAC
EBANK= TTOGO
2CADR POSTBURN
INHINT # SET UP THE DAP FOR COASTING FLIGHT.
TC IBNKCALL
CADR ALLCOAST
TC NULLCLOK
TC PHASCHNG # 4.13 RESTART FOR POSTBURN
OCT 00134
TCF ENDOFJOB
GOCUTOFF CAF PRIO17 # (3)
TC FINDVAC
EBANK= TGO
2CADR CUTOFF
TC DOWNFLAG
ADRES FLUNDISP
INHINT # SET UP THE DAP FOR COASTING FLIGHT.
TC IBNKCALL
CADR ALLCOAST
TC NULLCLOK
TC PHASCHNG
OCT 07024
OCT 17000
EBANK= TGO
2CADR CUTOFF
TCF ENDOFJOB
IGNITE CS FLAGWRD7 # (2)
MASK IGNFLBIT
CCS A
TCF IGNITE1
CAF BIT1
INHINT
## Page 755
TC TWIDDLE
ADRES IGNITION
CAF OCT23 # IMMEDIATE RESTART AT IGNITION.
TS L
COM
DXCH -PHASE4
IGNITE1 CS CNTDNDEX # RESTORE OLD DISPLAY.
TS DISPDEX
TCF ENDOFJOB
# ****************************************
BANK 31
SETLOC P40S2
BANK
COUNT* $$/P40
P40AUTO TC MAKECADR # HELLO THERE.
TS TEMPR60 # FOR GENERALIZED RETURN TO OTHER BANKS.
P40A/P TC BANKCALL # SUBROUTINE TO CHECK PGNCS CONTROL
CADR G+N,AUTO # AND AUTO STABILIZATION MODES
CCS A # +0 INDICATES IN PGNCS, IN AUTO
TCF TURNITON # + INDICATES NOT IN PGNCS AND/OR AUTO
CAF APSFLBIT # ARE WE ON THE DESCENT STAGE?
MASK FLGWRD10
CCS A
TCF GOBACK # RETURN
CAF BIT5 # YES, CHECK FOR AUTOTHROTTLE MODE
EXTEND
RAND CHAN30
EXTEND
BZF GOBACK # IN AUTOTHROTTLE MODE -- RETURN
TURNITON CAF P40A/PMD # DISPLAY V50N25 R1=203 PLEASE PERFORM
TC BANKCALL # CHECKLIST 203 TURN ON PGNCS ETC.
CADR GOPERF1
TCF GOTOPOOH # V34E TERMINATE
TCF P40A/P # RECYCLE
GOBACK CA TEMPR60
TC BANKJUMP # GOODBYE. COME AGAIN SOON.
P40A/PMD OCT 00203
BANK 36
SETLOC P40S
## Page 756
BANK
COUNT* $$/P40
# ****************************************
# CONSTANTS FOR THE IGNITION ROUTINE
# ****************************************
SERVCADR = P63TABLE +7
P40ADRES ADRES P40TABLE
P41ADRES ADRES P41TABLE -5
P42ADRES ADRES P42TABLE
EBANK= WCHPHASE
DSP2CADR 2CADR P63DISPS -2
EBANK= WCHPHASE
LUNLANAD 2CADR LUNLAND
EBANK= DVCNTR
ATMAGADR 2CADR ATMAG
? = GOTOPOOH
D29.9SEC 2DEC 2990
S24.9SEC DEC 2490
4.9SEC DEC 490
OCT20 = BIT5
VB99CON OCT 24020 # BITS 5, 12, AND 14
## Page 757
# KILLTASK
# MOD NO: NEW PROGRAM
# MOD BY: COVELLI
# FUNCTIONAL DESCRIPTION:
# KILLTASK IS USED TO REMOVE A TASK FROM THE WAITLIST BY SUBSTITUTING ANULL TASK CALLED 'NULLTASK' (OF COURSE),
# WHICH MERELY DOES A TC TASKOVER. IF THE SAME TASK IS SCHEDULED MORE THAN ONCE, ONLY THE ONE WHICH WILL OCCUR
# FIRST IS REMOVED. IF THE TASK IS NOT SCHEDULED, KILLTASK TAKES NO ACTION AND RETURNS WITH NO ALARM. KILLTASK
# MUST BE CALLED IN INTERRUPT OR WITH INTERRUPT INHIBITED.
# CALLING SEQUENCE:
# L-1 (INHINT)
# L TC KILLTASK IN FIXED-FIXED
# L+1 CADR ???????? CADR (NOT 2CADR) OF TASK TO BE REMOVED.
# L+2 (RELINT) RETURN
# EXIT MODE: AT L+2 OF CALLING SEQUENCE.
# ERASABLE INITIALIZATION= NONE.
# OUTPUT: 2CADR OF NULLTASK IN LST2
# DEBRIS: ITEMP1 - ITEMP4, A,L,Q.
EBANK= LST2
BLOCK 3 # KILLTASK MUST BE IN FIXED-FIXED.
SETLOC FFTAG6
BANK
COUNT* $$/KILL
KILLTASK CA KILLBB
LXCH A
INDEX Q
CA 0 # GET CADR.
LXCH BBANK
TCF KILLTSK2 # CONTINUE IN SWITCHED FIXED
EBANK= LST2
KILLBB BBCON KILLTSK2
BANK 27
SETLOC P40S1
BANK
COUNT* $$/KILL
KILLTSK2 LXCH ITEMP2 # SAVE CALLER'S BBANK
## Page 758
INCR Q
EXTEND
QXCH ITEMP1 # RETURN 2CADR IN ITEMP1,ITEMP2
TS ITEMP3 # CADR IS IN A
MASK LOW10
AD BIT11
TS ITEMP4 # GENADR OF TASK
CS LOW10
MASK ITEMP3
TS ITEMP3 # FBANK OF TASK
ZL
ADRSCAN INDEX L
CS LST2
AD ITEMP4 # COMPARE GENADRS
EXTEND
BZF TSTFBANK # IF THEY MATCH, COMPARE FBANKS
LETITLIV CS LSTLIM
AD L
EXTEND # ARE WE DONE?
BZF DEAD # YES - DONE, SO RETURN
INCR L
INCR L
TCF ADRSCAN # CONTINUE LOOP.
DEAD DXCH ITEMP1
DTCB
TSTFBANK CS LOW10
INDEX L
MASK LST2 +1 # COMPARE FBANKS ONLY.
EXTEND
SU ITEMP3
EXTEND
BZF KILLDEAD # MATCH - KILL IT.
TCF LETITLIV # NO MATCH - CONTINUE.
KILLDEAD CA TCTSKOVR
INDEX L
TS LST2 # REMOVE TASK BY INSERTING TASKOVER
TCF DEAD
LSTLIM EQUALS BIT5 # DEC 16
Computing file changes ...