222 lines
5.3 KiB
Plaintext
222 lines
5.3 KiB
Plaintext
# Copyright: Public domain.
|
|
# Filename: SERVICE_ROUTINES.agc
|
|
# Purpose: Part of the source code for Luminary 1A build 099.
|
|
# It is part of the source code for the Lunar Module's (LM)
|
|
# Apollo Guidance Computer (AGC), for Apollo 11.
|
|
# Assembler: yaYUL
|
|
# Contact: Ron Burkey <info@sandroid.org>.
|
|
# Website: www.ibiblio.org/apollo.
|
|
# Pages: 1374-1380
|
|
# Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
|
|
# from the Luminary131/ file of the same
|
|
# name, using Luminary099 page images.
|
|
#
|
|
# This source code has been transcribed or otherwise adapted from
|
|
# digitized images of a hardcopy from the MIT Museum. The digitization
|
|
# was performed by Paul Fjeld, and arranged for by Deborah Douglas of
|
|
# the Museum. Many thanks to both. The images (with suitable reduction
|
|
# in storage size and consequent reduction in image quality as well) are
|
|
# available online at www.ibiblio.org/apollo. If for some reason you
|
|
# find that the images are illegible, contact me at info@sandroid.org
|
|
# about getting access to the (much) higher-quality images which Paul
|
|
# actually created.
|
|
#
|
|
# Notations on the hardcopy document read, in part:
|
|
#
|
|
# Assemble revision 001 of AGC program LMY99 by NASA 2021112-061
|
|
# 16:27 JULY 14, 1969
|
|
|
|
# Page 1374
|
|
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 1375
|
|
# 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 # CET DE BITS
|
|
INHINT
|
|
TS ITEMP3
|
|
CA LOW4 # DEC15
|
|
TS ITEMP1
|
|
INDEX ITEMP3
|
|
CA 0 -1 # ADRES
|
|
TS L
|
|
CA ZERO
|
|
# Page 1376
|
|
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 1377
|
|
# 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
|
|
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 1104
|
|
|
|
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
|
|
XCH DELAYLOC # MAKE DELAYLOC AVAILABLE
|
|
# Page 1378
|
|
TC JOBWAKE
|
|
|
|
TC TASKOVER
|
|
|
|
TCSLEEP GENADR TCGETCAD -2
|
|
WAKECAD GENADR WAKER
|
|
|
|
# Page 1379
|
|
# 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 1380
|
|
# 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
|