Source Code
058458,000001: # Copyright: Public domain.
058459,000002: # Filename: SERVICE_ROUTINES.agc
058460,000003: # Purpose: Part of the source code for Luminary 1A build 099.
058461,000004: # It is part of the source code for the Lunar Module's (LM)
058462,000005: # Apollo Guidance Computer (AGC), for Apollo 11.
058463,000006: # Assembler: yaYUL
058464,000007: # Contact: Ron Burkey <info@sandroid.org>.
058465,000008: # Website: www.ibiblio.org/apollo.
058466,000009: # Pages: 1374-1380
058467,000010: # Mod history: 2009-05-10 SN (Sergio Navarro). Started adapting
058468,000011: # from the Luminary131/ file of the same
058469,000012: # name, using Luminary099 page images.
058470,000013:
058471,000014: # This source code has been transcribed or otherwise adapted from
058472,000015: # digitized images of a hardcopy from the MIT Museum. The digitization
058473,000016: # was performed by Paul Fjeld, and arranged for by Deborah Douglas of
058474,000017: # the Museum. Many thanks to both. The images (with suitable reduction
058475,000018: # in storage size and consequent reduction in image quality as well) are
058476,000019: # available online at www.ibiblio.org/apollo. If for some reason you
058477,000020: # find that the images are illegible, contact me at info@sandroid.org
058478,000021: # about getting access to the (much) higher-quality images which Paul
058479,000022: # actually created.
058480,000023:
058481,000024: # Notations on the hardcopy document read, in part:
058482,000025:
058483,000026: # Assemble revision 001 of AGC program LMY99 by NASA 2021112-61
058484,000027: # 16:27 JULY 14, 1969
058485,000028:
058486,000029: # Page 1374
058487,000030: 10,3544 BANK 10
058488,000031: 10,2000 SETLOC DISPLAYS
058489,000032: 10,2000 BANK
058490,000033: 10,3544 COUNT* $$/DSPLA
058491,000034:
058492,000035: 10,3544 00004 UPENT2 INHINT
058493,000036: 10,3545 75660 MASK OCT77770
058494,000037: 10,3546 54001 TS L
058495,000038: 10,3547 40100 CS FLAGWRD4
058496,000039: 10,3550 70001 MASK L
058497,000040: 10,3551 26100 ADS FLAGWRD4
058498,000041: 10,3552 00003 JOIN RELINT
058499,000042: 10,3553 16737 TCF Q+1
058500,000043:
058501,000044: 10,3554 00004 DOWNENT2 INHINT
058502,000045: 10,3555 75660 MASK OCT77770
058503,000046: 10,3556 40000 COM
058504,000047: 10,3557 70100 MASK FLAGWRD4
058505,000048: 10,3560 54100 TS FLAGWRD4
058506,000049: 10,3561 13552 TCF JOIN
058507,000050:
058508,000051: 10,3562 4757 OCT7 EQUALS SEVEN
058509,000052:
058510,000053: # Page 1375
058511,000054: # UPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES. USING THEM, WHETHER OR
058512,000055: # NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO
058513,000056: # EBANK SETTING. A "NAMED" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL
058514,000057: # ASSEMBLER.
058515,000058:
058516,000059: # AT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS. ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO
058517,000060: # NAME ANY BIT IN ERASABLE MEMORY.
058518,000061:
058519,000062: # CALLING SEQUENCES ARE AS FOLLOWS :-
058520,000063: # TC UPFLAG TC DOWNFLAG
058521,000064: # ADRES NAME OF FLAG ADRES NAME OF FLAG
058522,000065:
058523,000066: # RETURN IS TO THE LOCATION FOLLOWING THE "ADRES" ABOUT .58 MS AFTER THE "TC".
058524,000067: # UPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.
058525,000068:
058526,000069: 5504 BLOCK 02
058527,000070: 4000 SETLOC FFTAG1
058528,000071: 4000 BANK
058529,000072: 5504 COUNT* $$/FLAG
058530,000073:
058531,000074: 5504 30002 UPFLAG CA Q
058532,000075: 5505 05522 TC DEBIT
058533,000076: 5506 40000 COM # +(15 - BIT)
058534,000077: 5507 00006 EXTEND
058535,000078: 5510 04001 ROR LCHAN # SET BIT
058536,000079: 5511 50061 COMFLAG INDEX ITEMP1
058537,000080: 5512 54074 TS FLAGWRD0
058538,000081: 5513 22063 LXCH ITEMP3
058539,000082: 5514 00003 RELINT
058540,000083: 5515 00001 TC L
058541,000084:
058542,000085: 5516 30002 DOWNFLAG CA Q
058543,000086: 5517 05522 TC DEBIT
058544,000087: 5520 70001 MASK L # RESET BIT
058545,000088: 5521 15511 TCF COMFLAG
058546,000089:
058547,000090: 5522 64753 DEBIT AD ONE # CET DE BITS
058548,000091: 5523 00004 INHINT
058549,000092: 5524 54063 TS ITEMP3
058550,000093: 5525 34762 CA LOW4 # DEC15
058551,000094: 5526 54061 TS ITEMP1
058552,000095: 5527 50063 INDEX ITEMP3
058553,000096: 5530 27777 CA 0 -1 # ADRES
058554,000097: 5531 54001 TS L
058555,000098: 5532 34755 CA ZERO
058556,000099: # Page 1376
058557,000100: 5533 00006 EXTEND
058558,000101: 5534 10061 DV ITEMP1 # A = FLAGWRD, L = (15 - BIT)
058559,000102: 5535 52062 DXCH ITEMP1
058560,000103: 5536 50061 INDEX ITEMP1
058561,000104: 5537 30074 CA FLAGWRD0
058562,000105: 5540 54001 TS L # CURRENT STATE
058563,000106: 5541 50062 INDEX ITEMP2
058564,000107: 5542 44735 CS BIT15 # -(15 - BIT)
058565,000108: 5543 00002 TC Q
058566,000109:
058567,000110: # Page 1377
058568,000111: # DELAYJOB -- A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.
058569,000112:
058570,000113: # ENTRANCE REQUIREMENTS ...
058571,000114: # CAF DT # DELAY JOB FOR DT CENTISECS
058572,000115: # TC BANKCALL
058573,000116: # CADR DELAYJOB
058574,000117:
058575,000118: 06,3764 BANK 06
058576,000119: 00,2000 SETLOC DLAYJOB
058577,000120: 00,2000 BANK
058578,000121:
058579,000122: # THIS MUST REMAIN IN BANK 0 ****************************************
058580,000123:
058581,000124: 00,3735 COUNT* $$/DELAY
058582,000125: 00,3735 00004 DELAYJOB INHINT
058583,000126: 00,3736 54002 TS Q # STORE DELAY DT IN Q FOR DLY -1 IN
058584,000127: 00,3737 34752 CAF DELAYNUM # WAITLIST
058585,000128: 00,3740 54070 DELLOOP TS RUPTREG1
058586,000129: 00,3741 50000 INDEX A
058587,000130: 00,3742 31326 CA DELAYLOC # IS THIS DELAYLOC AVAILABLE
058588,000131: 00,3743 00006 EXTEND
058589,000132: 00,3744 13752 BZF OK2DELAY # YES
058590,000133:
058591,000134: 00,3745 10070 CCS RUPTREG1 # NO, TRY NEXT DELAYLOC
058592,000135: 00,3746 13740 TCF DELLOOP
058593,000136:
058594,000137: 00,3747 52134 DXCH BUF2
058595,000138: 00,3750 05716 TC BAILOUT1 # NO AVAILABLE LOCS.
058596,000139: 00,3751 01104 OCT 1104
058597,000140:
058598,000141: 00,3752 33772 OK2DELAY CA TCSLEEP # SET WAITLIST IMMEDIATE RETURN
058599,000142: 00,3753 54061 TS WAITEXIT
058600,000143:
058601,000144: 00,3754 30004 CA FBANK
058602,000145: 00,3755 60070 AD RUPTREG1 # STORE BBANK FOR TASK CALL
058603,000146: 00,3756 54001 TS L
058604,000147:
058605,000148: 00,3757 33773 CAF WAKECAD # STORE CADR FOR TASK CALL
058606,000149: 00,3760 15211 TCF DLY2 -1 # DLY IS IN WAITLIST ROUTINE
058607,000150:
058608,000151: 00,3761 04645 TCGETCAD TC MAKECADR # GET CALLERS FCADR
058609,000152:
058610,000153: 00,3762 50070 INDEX RUPTREG1
058611,000154: 00,3763 55326 TS DELAYLOC # SAVE DELAY CADRS
058612,000155:
058613,000156: 00,3764 05133 TC JOBSLEEP
058614,000157:
058615,000158: 00,3765 34755 WAKER CAF ZERO
058616,000159: 00,3766 50006 INDEX BBANK
058617,000160: 00,3767 57326 XCH DELAYLOC # MAKE DELAYLOC AVAILABLE
058618,000161: # Page 1378
058619,000162: 00,3770 05137 TC JOBWAKE
058620,000163:
058621,000164: 00,3771 05261 TC TASKOVER
058622,000165:
058623,000166: 00,3772 03757 TCSLEEP GENADR TCGETCAD -2
058624,000167: 00,3773 03765 WAKECAD GENADR WAKER
058625,000168:
058626,000169: # Page 1379
058627,000170: # GENTRAN, A BLOCK TRANSFER ROUTINE
058628,000171: # WRITTEN BY D. EYLES
058629,000172: # MOD 1 BY KERNAN UTILITYM REV 17 11/18/67
058630,000173: # MOD 2 BY SCHULENBERG (REMOVE RELINT) SKIPPER REV 4 2/28/68
058631,000174:
058632,000175: # THIS ROUTINE IS USEFUL FOR TRANSFERING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N
058633,000176: # CONSECUTIVE ERASABLE LOCATIONS. IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.
058634,000177:
058635,000178: # GENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT. THE CALLING SEQUENCE IS:
058636,000179: # I CA N-1 # # OF QUANTITIES MINUS ONE.
058637,000180: # I +1 TC GENTRAN # IN FIXED-FIXED.
058638,000181: # I +2 ADRES L # STARTING ADRES OF DATA TO BE MOVED.
058639,000182: # I +3 ADRES M # STARTING ADRES OF DUPLICATION BLOCK.
058640,000183: # I +4 # RETURNS HERE.
058641,000184:
058642,000185: # GENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.
058643,000186: # A, L, AND ITEMP1 ARE NOT PRESERVED.
058644,000187:
058645,000188: 5544 BLOCK 02
058646,000189: 4000 SETLOC FFTAG4
058647,000190: 4000 BANK
058648,000191:
058649,000192: 5544 0061 EBANK= ITEMP1
058650,000193:
058651,000194: 5544 COUNT* $$/TRAN
058652,000195:
058653,000196: 5544 00004 GENTRAN INHINT
058654,000197: 5545 54061 TS ITEMP1 # SAVE N-1
058655,000198: 5546 50002 INDEX Q # C(Q) = ADRES L.
058656,000199: 5547 60000 AD 0 # ADRES (L + N - 1).
058657,000200: 5550 50000 INDEX A
058658,000201: 5551 30000 CA 0 # C(ABOVE).
058659,000202: 5552 54001 TS L # SAVE DATA.
058660,000203: 5553 30061 CA ITEMP1
058661,000204: 5554 50002 INDEX Q
058662,000205: 5555 60001 AD 1 # ADRES (M + N - 1).
058663,000206: 5556 50000 INDEX A
058664,000207: 5557 22000 LXCH 0 # STUFF IT.
058665,000208: 5560 10061 CCS ITEMP1 # LOOP UNTIL N-1 = 0.
058666,000209: 5561 15545 TCF GENTRAN +1
058667,000210: 5562 16741 TCF Q+2 # RETURN TO CALLER.
058668,000211:
058669,000212: # Page 1380
058670,000213: # B5OFF ZERO BIT 5 OF EXTVBACK, WHICH IS SET BY TESTXACT.
058671,000214: # MAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT
058672,000215:
058673,000216: 5563 COUNT* $$/EXTVB
058674,000217:
058675,000218: 5563 44747 B5OFF CS BIT5
058676,000219: 5564 71044 MASK EXTVBACT
058677,000220: 5565 55044 TS EXTVBACT
058678,000221: 5566 05155 TC ENDOFJOB
058679,000222:
058680,000223:
058681,000224:
End of include-file SERVICE_ROUTINES.agc. Parent file is MAIN.agc