T6-RUPT_PROGRAMS.agc
### FILE="Main.annotation"
## Copyright: Public domain.
## Filename: T6-RUPT_PROGRAMS.agc
## Purpose: A section of a reconstructed, mixed version of Sundance
## It is part of the reconstructed source code for the Lunar
## Module's (LM) Apollo Guidance Computer (AGC) for Apollo 9.
## No original listings of this program are available;
## instead, this file was created via disassembly of dumps
## of various revisions of Sundance core rope modules.
## Assembler: yaYUL
## Contact: Ron Burkey <info@sandroid.org>.
## Website: www.ibiblio.org/apollo/index.html
## Mod history: 2020-06-17 MAS Created from Luminary 69.
## Sundance 302
# PROGRAM NAMES: (1) T6JOBCHK MOD. NO. 5 OCTOBER 2, 1967
# (2) DOT6RUPT
# MODIFICATION BY: LOWELL G HULL (A.C.ELECTRONICS)
#
# THESE PROGRAMS ENABLE THE LM DAP TO CONTROL THE THRUST TIMES OF THE REACTION CONTROL SYSTEM JETS BY USING TIME6.
# SINCE THE LM DAP MAINTAINS EXCLUSIVE CONTROL OVER TIME6 AND ITS INTERRUPTS, THE FOLLOWING CONVENTIONS HAVE BEEN
# ESTABLISHED AND MUST NOT BE TAMPERED WITH:
# 1. NO NUMBER IS EVER PLACED INTO TIME6 EXCEPT BY LM DAP.
# 2. NO PROGRAM OTHER THAN LM DAP ENABLES THE TIME6 COUNTER.
# 3. TO USE TIME6, THE FOLLOWING SEQUENCE IS ALWAYS EMPLOYED:
# A. A POSITIVE (NON-ZERO) NUMBER IS STORED IN TIME6.
# B. THE TIME6 CLOCK IS ENABLED.
# C. TIME6 IS INTERROGATED AND IS:
# I. NEVER FOUND NEGATIVE (NON-ZERO) OR +0.
# II. SOMETIMES FOUND POSITIVE (BETWEEN 1 AND 240D) INDICATING THAT IT IS ACTIVE.
# III. SOMETIMES FOUND POSMAX INDICATING THAT IT IS INACTIVE AND NOT ENABLED.
# IV. SOMETIMES FOUND NEGATIVE ZERO INDICATING THAT:
# A. A T6RUPT IS ABOUT TO OCCUR AT THE NEXT DINC, OR
# B. A T6RUPT IS WAITING IN THE PRIORITY CHAIN, OR
# C. A T6RUPT IS IN PROCESS NOW.
# 4) ALL PROGRAMS WHICH OPERATE IN EITHER INTERRUPT MODE OR WITH INTERRUPT INHIBITED MUST CALL T6JOBCHK
# EVERY 5 MILLISECONDS TO PROCESS A POSSIBLE WAITING T6RUPT BEFORE IT CAN BE HONORED BY THE HARDWARE.
# (5. PROGRAM JTLST, IN Q,R-AXES, HANDLES THE INPUT LIST.)
#
# T6JOBCHK CALLING SEQUENCE:
# L TC T6JOBCHK
# L+1 (RETURN)
#
# DOT6RUPT CALLING SEQUENCE:
# DXCH ARUPT T6RUPT LEAD IN AT LOCATION 4004.
# EXTEND
# DCA T6ADR
# DTCB
#
# SUBROUTINES CALLED: DOT6RUPT CALLS T6JOBCHK.
#
# NORMAL EXIT MODES: T6JOBCHK RETURNS TO L +1.
# DOT6RUPT TRANSFERS CONTROL TO RESUME.
#
# ALARM/ABORT MODES: NONE.
#
# INPUT: TIME6 NXT6ADR OUTPUT: TIME6 NXT6ADR CHANNEL 5
# T6NEXT T6NEXT +1 T6NEXT T6NEXT +1 CHANNEL 6
# T6FURTHA T6FURTHA +1 T6FURTHA T6FURTHA +1 BIT15/CH13
#
# DEBRIS: T6JOBCHK CLOBBERS A. DOT6RUPT CLOBBERS NOTHING.
BLOCK 02
BANK 16
SETLOC DAPS1
BANK
EBANK= T6NEXT
COUNT* $$/DAPT6
T6JOBCHK CCS TIME6 # CHECK TIME6 FOR WAITING T6RUPT:
TC Q # NONE: CLOCK COUTING DOWN.
TC CCSHOLE
TC T6JOBCHK +3
# CONTROL PASSES TO T6JOB ONLY WHEN C(TIME6) = -0 (I.E. WHEN A T6RUPT MUST BE PROCESSED).
T6JOB CAF POSMAX # DISABLE CLOCK: NEEDED SINCE RUPT OCCURS
EXTEND # 1 DINC AFTER T6 = 77777. FOR 625 MUSECS
WAND CHAN13 # MUST NOT HAVE T6 = +0 WITH ENABLE SET
CA POSMAX
ZL
DXCH T6FURTHA
DXCH T6NEXT
LXCH NXT6ADR
TS TIME6
AD PRIO37
TS A
TCF ENABLET6
CA POSMAX
TS TIME6
TCF GOCH56
ENABLET6 CA BIT15
EXTEND
WOR CHAN13
CA T6NEXT
AD PRIO37
TS A
TCF GOCH56
CA POSMAX
TS T6NEXT
GOCH56 INDEX L
TCF WRITEP -1
## Sundance 292
BLOCK 02
SETLOC FFTAG9
BANK
EBANK= CDUXD
COUNT* $$/DAPT6
NARROWDB OCTAL 00155 # 0.3 DEGREE SCALED AT 45.
WIDEDB OCTAL 03434 # 5.0 DEGREES SCALED AT 45.
EBANK= T6NEXT
T6ADR 2CADR DOT6RUPT # 2CADR OF INTERRUPT PROCESSOR.
CA NEXTP
WRITEP EXTEND
WRITE CHAN6
TC Q
CA NEXTU
WRITEU TS L
CS 00314OCT
EXTEND
RAND CHAN5
AD L
EXTEND
WRITE CHAN5
TC Q
CA NEXTV
WRITEV TS L
CA 00314OCT
TCF -9D
00314OCT OCT 00314
## Sundance 302
BANK 16
SETLOC DAPS1
BANK
EBANK= T6NEXT
COUNT* $$/DAPT6
DOT6RUPT LXCH BANKRUPT # (INTERRUPT LEAD INS CONTINUED)
EXTEND
QXCH QRUPT
TC T6JOBCHK # CALL T6JOBCHK.
TCF RESUME # END TIME6 INTERRUPT PROCESSOR.