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
DAP_INTERFACE_SUBROUTINES.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: DAP_INTERFACE_SUBROUTINES.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. 1401-1404
## 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 1401
BANK 20
SETLOC DAPS3
BANK
EBANK= CDUXD
COUNT* $$/DAPIF
# MOD 0 DATE 11/15/66 BY GEORGE W. CHERRY
# MOD 1 1/23/67 MODIFICATION BY PETER ADLER
#
# FUNCTIONAL DESCRIPTION
# HEREIN ARE A COLLECTION OF SUBROUTINES WHICH ALLOW MISSION CONTROL PROGRAMS TO CONTROL THE MODE
# AND INTERFACE WITH THE DAP.
#
# CALLING SEQUENCES
# IN INTERRUPT OR WITH INTERRUPT INHIBITED
# TC IBNKCALL
# FCADR ROUTINE
# IN A JOB WITHOUT INTERRUPT INHIBITED
# INHINT
# TC IBNKCALL
# FCADR ROUTINE
# RELINT
#
# OUTPUT
# SEE INDIVIDUAL ROUTINES BELOW
#
# DEBRIS
# A, L, AND SOMETIMES MDUETEMP ODE NOT IN PULSES MODE
## Page 1402
# SUBROUTINE NAMES:
# SETMAXDB, SETMINDB, RESTORDB, PFLITEDB
# MODIFIED: 30 JANUARY 1968 BY P S WEISSMAN TO CREATE RESTORDB.
# MODIFIED: 1 MARCH 1968 BY P S WEISSMAN TO SAVE EBANK AND CREATE PFLITEDB
#
# FUNCTIONAL DESCRIPTION:
# SETMAXDB - SET DEADBAND TO 5.0 DEGREES
# SETMINDB - SET DEADBAND TO 0.3 DEGREE
# RESTORDB - SET DEADBAND TO MAX OR MIN ACCORDING TO SETTING OF DBSELECT BIT OF DAPBOOLS
# PFLITEDB - SET DEADBAND TO 1.0 DEGREE AND ZERO THE COMMANDED ATTITUDE CHANGE AND COMMANDED RATE
#
# ALL ENTRIES SET UP A NOVAC JOB TO DO 1/ACCS SO THAT THE TJETLAW SWITCH CURVES ARE POSITIONED TO
# REFLECT THE NEW DEADBAND. IT SHOULD BE NOTED THAT THE DEADBAND REFERS TO THE ATTITUDE IN THE P-, U-, AND V-AXES.
#
# SUBROUTINE CALLED: NOVAC
#
# CALLING SEQUENCE: SAME AS ABOVE
# OR TC RESTORDB +1 FROM ALLCOAST
#
# DEBRIS: A, L, Q, RUPTREG1, (ITEMPS IN NOVAC)
RESTORDB CAE DAPBOOLS # DETERMINE CREW-SELECTED DEADBAND.
MASK DBSELECT
EXTEND
BZF SETMINDB
SETMAXDB CAF WIDEDB # SET 5 DEGREE DEADBAND.
+1 TS DB
EXTEND # SET UP JOB TO RE-POSITION SWITCH CURVES.
QXCH RUPTREG1
CALLACCS CAF PRIO27
TC NOVAC
EBANK= AOSQ
2CADR 1/ACCJOB
TC RUPTREG1 # RETURN TO CALLER.
SETMINDB CAF NARROWDB # SET 0.3 DEGREE DEADBAND.
TCF SETMAXDB +1
PFLITEDB EXTEND # THE RETURN FROM CALLACCS IS TO RUPTREG1.
QXCH RUPTREG1
TC ZATTEROR # ZERO THE ERRORS AND COMMANDED RATES.
CAF POWERDB # SET DB TO 1.0 DEG.
TS DB
TCF CALLACCS # SET UP 1/ACCS AND RETURN TO CALLER.
NARROWDB OCTAL 00155 # 0.3 DEGREE SCALED AT 45.
## Page 1403
WIDEDB OCTAL 03434 # 5.0 DEGREES SCALED AT 45.
POWERDB DEC .02222 # 1.0 DEGREE SCALED AT 45.
ZATTEROR CAF EBANK6
XCH EBANK
TS L # SAVE CALLERS EBANK IN L.
CAE CDUX
TS CDUXD
CAE CDUY
TS CDUYD
CAE CDUZ
TS CDUZD
TCF STOPRATE +3
STOPRATE CAF EBANK6
XCH EBANK
TS L # SAVE CALLERS EBANK IN L.
+3 CAF ZERO
TS OMEGAPD
TS OMEGAQD
TS OMEGARD
TS DELCDUX
TS DELCDUY
TS DELCDUZ
TS DELPEROR
TS DELQEROR
TS DELREROR
LXCH EBANK # RESTORE CALLERS EBANK.
TC Q
# SUBROUTINE NAME: ALLCOAST
# WILL BE CALLED BY FRESH STARTS AND ENGINE OFF ROUTINES. .
#
# CALLING SEQUENCE: (SAME AS ABOVE)
#
# EXIT: RETURN TO Q.
#
# SUBROUTINES CALLED: STOPRATE, RESTORDB, NOVAC
#
# ZERO: (FOR ALL AXES) AOS, ALPHA, AOSTERM, OMEGAD, DELCDU, DELEROR
#
# OUTPUT: DRIFTBIT/DAPBOOLS, DB, JOB TO DO 1/ACCS
#
# DEBRIS: A, L, Q, RUPTREG1, RUPTREG2, (ITEMPS IN NOVAC)
ALLCOAST EXTEND # SAVE Q FOR RETURN
QXCH RUPTREG2
## Page 1404
TC STOPRATE # CLEAR RATE INTERFACE. RETURN WITH A=0
LXCH EBANK # AND L=EBANK6. SAVE CALLERS EBANK.
TS AOSQ
TS AOSQ +1
TS AOSR
TS AOSR +1
TS ALPHAQ # FOR DOWNLIST.
TS ALPHAR
TS AOSQTERM
TS AOSRTERM
LXCH EBANK # RESTORE EBANK (EBANK6 NO LONGER NEEDED)
CS DAPBOOLS # SET UP DRIFTBIT
MASK DRIFTBIT
ADS DAPBOOLS
TC RESTORDB +1 # RESTORE DEADBANK TO CREW-SELECTED VALUE.
TC RUPTREG2 # RETURN.
Computing file changes ...