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