Source Code
064242,000001: # Copyright: Public domain.
064243,000002: # Filename: SERVICE_ROUTINES.agc
064244,000003: # Purpose: Part of the source code for Comanche, build 055. It
064245,000004: # is part of the source code for the Command Module's
064246,000005: # (CM) Apollo Guidance Computer (AGC), Apollo 11.
064247,000006: # Assembler: yaYUL
064248,000007: # Reference: pp. 1485-1492
064249,000008: # Contact: Ron Burkey <info@sandroid.org>
064250,000009: # Website: http://www.ibiblio.org/apollo.
064251,000010: # Mod history: 2009-05-07 RSB Adapted from Colossus249 file of the same
064252,000011: # name, and page images. Corrected various
064253,000012: # typos in the transcription of program
064254,000013: # comments, and these should be back-ported
064255,000014: # to Colossus249.
064256,000015:
064257,000016: # The contents of the "Comanche055" files, in general, are transcribed
064258,000017: # from scanned documents.
064259,000018:
064260,000019: # Assemble revision 055 of AGC program Comanche by NASA
064261,000020: # 2021113-051. April 1, 1969.
064262,000021:
064263,000022: # This AGC program shall also be referred to as Colossus 2A
064264,000023:
064265,000024: # Prepared by
064266,000025: # Massachussets Institute of Technology
064267,000026: # 75 Cambridge Parkway
064268,000027: # Cambridge, Massachusetts
064269,000028:
064270,000029: # under NASA contract NAS 9-4065.
064271,000030:
064272,000031: # Refer directly to the online document mentioned above for further
064273,000032: # information. Please report any errors to info@sandroid.org.
064274,000033:
064275,000034: # Page 1485
064276,000035: 7722 BLOCK 3
064277,000036: 6000 SETLOC FFTAG6
064278,000037: 6000 BANK
064279,000038: 7722 COUNT 03/FLAG
064280,000039:
064281,000040: 7722 54001 UPENT2 TS L # WHICH FLAGWORD IS IT
064282,000041: 7723 75023 MASK OCT7
064283,000042: 7724 56001 XCH L # SAVE IN L FOR INDEXING
064284,000043:
064285,000044: 7725 75731 MASK OCT77770 # OBTAIN THE BIT INFORMATION
064286,000045: 7726 00004 INHINT # PREVENT INTERRUPTS
064287,000046: 7727 54061 TS ITEMP1 # STORE THE BIT INFORMATION TEMPORARILY
064288,000047:
064289,000048: 7730 50001 NDX L
064290,000049: 7731 40074 CS FLAGWRD0
064291,000050: 7732 70061 MASK ITEMP1
064292,000051: 7733 50001 NDX L
064293,000052: 7734 26074 ADS FLAGWRD0
064294,000053: 7735 00003 RELINT # RELEASE INTERRUPT INHIBIT
064295,000054:
064296,000055: 7736 24002 INCR Q # OBTAIN THE CORRECT RETURN ADDRESS
064297,000056: 7737 00002 TC Q # RETURN
064298,000057:
064299,000058: 7740 54001 DOWNENT2 TS L # WHICH FLAGWORD IS IT
064300,000059: 7741 75023 MASK OCT7
064301,000060: 7742 56001 XCH L # SAVE IN L FOR INDEXING
064302,000061:
064303,000062: 7743 75731 MASK OCT77770 # OBTAIN THE BIT INFORMATION
064304,000063: 7744 40000 COM # START TO PROCESS THE INFORMATION
064305,000064:
064306,000065: 7745 00004 INHINT # PREVENT INTERRUPTS
064307,000066: 7746 50001 NDX L
064308,000067: 7747 70074 MASK FLAGWRD0
064309,000068: 7750 50001 NDX L
064310,000069: 7751 54074 TS FLAGWRD0
064311,000070: 7752 00003 RELINT # RELEASE INTERRUPT INHIBIT
064312,000071:
064313,000072: 7753 24002 INCR Q # OBTAIN THE CORRECT RETURN ADDRESS
064314,000073: 7754 00002 TC Q
064315,000074:
064316,000075: 7755 5023 OCT7 EQUALS SEVEN
064317,000076: 10,3766 BANK 10
064318,000077:
064319,000078: # Page 1486
064320,000079: # UPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES. USING THEM, WHETHER OR
064321,000080: # NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO
064322,000081: # EBANK SETTING. A "NAMED" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL
064323,000082: # ASSEMBLER.
064324,000083:
064325,000084: # AT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS. ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO
064326,000085: # NAME ANY BIT IN ERASABLE MEMORY.
064327,000086:
064328,000087: # CALLING SEQUENCES ARE AS FOLLOWS --
064329,000088: # TC UPFLAG TC DOWNFLAG
064330,000089: # ADRES NAME OF FLAG ADRES NAME OF FLAG
064331,000090:
064332,000091: # RETURN IS TO THE LOCATION FOLLOWING THE "ADRES" ABOUT .58 MS AFTER THE "TC".
064333,000092: # UPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.
064334,000093:
064335,000094: 5546 BLOCK 02
064336,000095: 4000 SETLOC FFTAG1
064337,000096: 4000 BANK
064338,000097: 5546 COUNT* $$/FLAG
064339,000098:
064340,000099: 5546 30002 UPFLAG CA Q
064341,000100: 5547 05564 TC DEBIT
064342,000101: 5550 40000 COM # +(15 - BIT)
064343,000102: 5551 00006 EXTEND
064344,000103: 5552 04001 ROR LCHAN # SET BIT
064345,000104: 5553 50061 COMFLAG INDEX ITEMP1
064346,000105: 5554 54074 TS FLAGWRD0
064347,000106: 5555 22063 LXCH ITEMP3
064348,000107: 5556 00003 RELINT
064349,000108: 5557 00001 TC L
064350,000109:
064351,000110: 5560 30002 DOWNFLAG CA Q
064352,000111: 5561 05564 TC DEBIT
064353,000112: 5562 70001 MASK L # RESET BIT
064354,000113: 5563 15553 TCF COMFLAG
064355,000114:
064356,000115: 5564 65017 DEBIT AD ONE # CET DE BITS
064357,000116: 5565 00004 INHINT
064358,000117: 5566 54063 TS ITEMP3
064359,000118: 5567 35026 CA LOW4 # DEC15
064360,000119: 5570 54061 TS ITEMP1
064361,000120: 5571 50063 INDEX ITEMP3
064362,000121: 5572 27777 CA 0 -1 # ADRES
064363,000122: 5573 54001 TS L
064364,000123: 5574 35021 CA ZERO
064365,000124: # Page 1487
064366,000125: 5575 00006 EXTEND
064367,000126: 5576 10061 DV ITEMP1 # A = FLAGWRD, L = (15 - BIT)
064368,000127: 5577 52062 DXCH ITEMP1
064369,000128: 5600 50061 INDEX ITEMP1
064370,000129: 5601 30074 CA FLAGWRD0
064371,000130: 5602 54001 TS L # CURRENT STATE
064372,000131: 5603 50062 INDEX ITEMP2
064373,000132: 5604 45001 CS BIT15 # -(15 - BIT)
064374,000133: 5605 00002 TC Q
064375,000134:
064376,000135: # Page 1488
064377,000136: # DELAYJOB -- A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.
064378,000137:
064379,000138: # ENTRANCE REQUIREMENTS ...
064380,000139: # CAF DT # DELAY JOB FOR DT CENTISECS
064381,000140: # TC BANKCALL
064382,000141: # CADR DELAYJOB
064383,000142:
064384,000143: 06,3770 BANK 06
064385,000144: 00,2000 SETLOC DLAYJOB
064386,000145: 00,2000 BANK
064387,000146:
064388,000147: # THIS MUST REMAIN IN BANK 0 ****************************************
064389,000148:
064390,000149: 00,3732 COUNT 00/DELAY
064391,000150:
064392,000151: 00,3732 00004 DELAYJOB INHINT
064393,000152: 00,3733 54002 TS Q # STORE DELAY DT IN Q FOR DLY -1 IN
064394,000153: 00,3734 36214 CAF DELAYNUM # WAITLIST
064395,000154: 00,3735 54070 DELLOOP TS RUPTREG1
064396,000155: 00,3736 50000 INDEX A
064397,000156: 00,3737 31141 CA DELAYLOC # IS THIS DELAYLOC AVAILABLE
064398,000157: 00,3740 00006 EXTEND
064399,000158: 00,3741 13746 BZF OK2DELAY # YES
064400,000159:
064401,000160: 00,3742 10070 CCS RUPTREG1 # NO, TRY NEXT DELAYLOC
064402,000161: 00,3743 13735 TCF DELLOOP
064403,000162:
064404,000163: 00,3744 07755 TC BAILOUT # NO AVAILABLE LOCS.
064405,000164: 00,3745 01104 OCT 1104
064406,000165:
064407,000166: 00,3746 33766 OK2DELAY CA TCSLEEP # SET WAITLIST IMMEDIATE RETURN
064408,000167: 00,3747 54061 TS WAITEXIT
064409,000168:
064410,000169: 00,3750 30004 CA FBANK
064411,000170: 00,3751 60070 AD RUPTREG1 # STORE BBANK FOR TASK CALL
064412,000171: 00,3752 54001 TS L
064413,000172:
064414,000173: 00,3753 33767 CAF WAKECAD # STORE CADR FOR TASK CALL
064415,000174: 00,3754 15255 TCF DLY2 -1 # DLY IS IN WAITLIST ROUTINE
064416,000175:
064417,000176: 00,3755 04711 TCGETCAD TC MAKECADR # GET CALLER'S FCADR
064418,000177:
064419,000178: 00,3756 50070 INDEX RUPTREG1
064420,000179: 00,3757 55141 TS DELAYLOC # SAVE DELAY CADRS
064421,000180:
064422,000181: 00,3760 05175 TC JOBSLEEP
064423,000182:
064424,000183: 00,3761 35021 WAKER CAF ZERO
064425,000184: 00,3762 50006 INDEX BBANK
064426,000185: 00,3763 57141 XCH DELAYLOC # MAKE DELAYLOC AVAILABLE
064427,000186: # Page 1489
064428,000187: 00,3764 05201 TC JOBWAKE
064429,000188:
064430,000189: 00,3765 05324 TC TASKOVER
064431,000190:
064432,000191: 00,3766 03753 TCSLEEP GENADR TCGETCAD -2
064433,000192: 00,3767 03761 WAKECAD GENADR WAKER
064434,000193:
064435,000194: # Page 1490
064436,000195: # GENTRAN, A BLOCK TRANSFER ROUTINE
064437,000196: # WRITTEN BY D. EYLES
064438,000197: # MOD 1 BY KERNAN UTILITYM REV 17 11/18/67
064439,000198: # MOD 2 BY SCHULENBERG -- (REMOVE RELINT) -- SKIPPER REV 4 2/28/68
064440,000199:
064441,000200: # THIS ROUTINE IS USEFUL FOR TRANSFERRING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N
064442,000201: # CONSECUTIVE ERASABLE LOCATIONS. IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.
064443,000202:
064444,000203: # GENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT. THE CALLING SEQUENCE IS:
064445,000204: # I CA N-1 # NO. NUMBER OF QUANTITIES MINUS ONE.
064446,000205: # I +1 TC GENTRAN # IN FIXED-FIXED.
064447,000206: # I +2 ADRES L # STARTING ADRES OF DATA TO BE MOVED.
064448,000207: # I +3 ADRES M # STARTING ADRES OF DUPLICATION BLOCK.
064449,000208: # I +4 # RETURNS HERE.
064450,000209:
064451,000210: # GENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.
064452,000211: # A, L, AND ITEMP1 ARE NOT PRESERVED.
064453,000212:
064454,000213: 5606 BLOCK 02
064455,000214: 4000 SETLOC FFTAG4
064456,000215: 4000 BANK
064457,000216:
064458,000217: 5606 0061 EBANK= ITEMP1
064459,000218:
064460,000219: 5606 COUNT* $$/TRAN
064461,000220:
064462,000221: 5606 00004 GENTRAN INHINT
064463,000222: 5607 54061 TS ITEMP1 # SAVE N-1
064464,000223: 5610 50002 INDEX Q # C(Q) = ADRES L.
064465,000224: 5611 60000 AD 0 # ADRES (L + N - 1).
064466,000225: 5612 50000 INDEX A
064467,000226: 5613 30000 CA 0 # C(ABOVE).
064468,000227: 5614 54001 TS L # SAVE DATA.
064469,000228: 5615 30061 CA ITEMP1
064470,000229: 5616 50002 INDEX Q
064471,000230: 5617 60001 AD 1 # ADRES (M + N - 1).
064472,000231: 5620 50000 INDEX A
064473,000232: 5621 22000 LXCH 0 # STUFF IT.
064474,000233: 5622 10061 CCS ITEMP1 # LOOP UNTIL N-1 = 0.
064475,000234: 5623 15607 TCF GENTRAN +1
064476,000235: 5624 16710 TCF Q+2 # RETURN TO CALLER.
064477,000236:
064478,000237: # Page 1491
064479,000238: # B5OFF ZERO BIT 5 OF EXTVBACK, WHICH IS SET BY TESTXACT.
064480,000239: # MAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT
064481,000240:
064482,000241: 5625 COUNT* $$/EXTVB
064483,000242:
064484,000243: 5625 45013 B5OFF CS BIT5
064485,000244: 5626 71044 MASK EXTVBACT
064486,000245: 5627 55044 TS EXTVBACT
064487,000246: 5630 05217 TC ENDOFJOB
064488,000247:
064489,000248: # Page 1492
064490,000249: # SUBROUTINES TO TURN OFF AND TURN ON TRACKER FAIL LIGHT.
064491,000250:
064492,000251: 5631 00004 TRFAILOF INHINT
064493,000252: 5632 47704 CS OCT40200 # TURN OFF TRACKER LIGHT
064494,000253: 5633 71036 MASK DSPTAB +11D
064495,000254: 5634 65001 AD BIT15
064496,000255: 5635 55036 TS DSPTAB +11D
064497,000256: 5636 41331 CS OPTMODES # TO INSURE THAT OCDU FAIL WILL GO ON
064498,000257: 5637 75011 MASK BIT7 # AGAIN IF IT WAS ON IN ADDITION TO
064499,000258: 5640 27331 ADS OPTMODES # TRACKER FAIL.
064500,000259:
064501,000260: 5641 00003 REQ RELINT
064502,000261: 5642 00002 TC Q
064503,000262:
064504,000263: 5643 00004 TRFAILON INHINT
064505,000264: 5644 41036 CS DSPTAB +11D # TURN ON
064506,000265: 5645 77704 MASK OCT40200
064507,000266: 5646 27036 ADS DSPTAB +11D
064508,000267: 5647 15641 TCF REQ
064509,000268:
064510,000269:
064511,000270:
064512,000271:
End of include-file SERVICE_ROUTINES.agc. Parent file is MAIN.agc