Source Code
![]() |
These source-code files were obtained by digitally photographing
an Artemis 72 program listing from a private collection and then
modifying pre-existing Comanche 55 (Apollo 11) source files to
incorporate changes. Note that the page images
presented online are of reduced quality, and that additional images
may be available. Report any conversion errors or legibility
problems in page images to info@sandroid.org.
Notations on the program listing read, in part:GAP: ASSEMBLE REVISION 072 OF AGC PROGRAM ARTEMIS BY NASA 2021114-011 11:40 FEB. 26, 1971 THIS AGC PROGRAM SHALL ALSO BE REFERRED TO AS COLOSSUS 3 THIS PROGRAM IS INTENDED FOR USE IN THE CM AS SPECIFIED IN REPORT R-577. THIS PROGRAM WAS PREPARED UNDER OSR PROJECT 55-23890, SPONSORED BY THE MANNED SPACECRAFT CENTER OF THE NATIONAL AERONAUTICS AND SPACE ADMINISTRATION THROUGH CONTRACT NAS 9-4065 WITH THE CHARLES STARK DRAPER LABORATORY, MASSACHUSETTS INSTITUTE OF TECHNOLOGY, CAMBRIDGE, MASS. |
063201,000002: # Copyright: Public domain.
063202,000003: # Filename: SERVICE_ROUTINES.agc
063203,000004: # Purpose: Part of the source code for Artemis (i.e., Colossus 3),
063204,000005: # build 072. This is for the Command Module's (CM)
063205,000006: # Apollo Guidance Computer (AGC), we believe for
063206,000007: # Apollo 15-17.
063207,000008: # Assembler: yaYUL
063208,000009: # Contact: Jim Lawton <jim DOT lawton AT gmail DOT com>
063209,000010: # Website: www.ibiblio.org/apollo/index.html
063210,000011: # Page scans: www.ibiblio.org/apollo/ScansForConversion/Artemis072/
063211,000012: # Mod history: 2009-08-18 JL Adapted from corresponding Comanche 055 file.
063212,000013: # 2010-02-01 JL Fixed build error: missing code at end.
063213,000014: # 2010-02-07 JL Removed spurious NDX instruction on p1478.
063214,000015: # 2010-02-20 RSB Un-##'d this header.
063215,000016:
063216,000017: # # Page 1478
063217,000018:
063218,000019: 10,2000 SETLOC DISPLAYS
063219,000020: 10,2000 BANK
063220,000021: 10,3755 COUNT* $$/DSPLA
063221,000022: 10,3755 54001 UPENT2 TS L
063222,000023: 10,3756 40100 CS FLAGWRD4
063223,000024: 10,3757 70001 MASK L
063224,000025: 10,3760 26100 ADS FLAGWRD4
063225,000026: 10,3761 00002 TC Q # RETURN
063226,000027:
063227,000028: 10,3762 40000 DOWNENT2 COM # START TO PROCESS THE INFORMATION
063228,000029: 10,3763 70100 MASK FLAGWRD4
063229,000030: 10,3764 54100 TS FLAGWRD4
063230,000031: 10,3765 00002 TC Q # RETURN
063231,000032:
063232,000033: 10,3766 4774 OCT7 EQUALS SEVEN
063233,000034:
063234,000035: # # Page 1479
063235,000036:
063236,000037: # UPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES. USING THEM, WHETHER OR
063237,000038: # NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO
063238,000039: # EBANK SETTING. A "NAMED" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL
063239,000040: # ASSEMBLER.
063240,000041:
063241,000042: # AT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS. ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO
063242,000043: # NAME ANY BIT IN ERASABLE MEMORY.
063243,000044:
063244,000045: # CALLING SEQUENCES ARE AS FOLLOWS:-
063245,000046: # TC UPFLAG TC DOWNFLAG
063246,000047: # ADRES NAME OF FLAG ADRES NAME OF FLAG
063247,000048:
063248,000049: # RETURN IS TO THE LOCATION FOLLOWING THE "ADRES" ABOUT .58 MS AFTER THE "TC".
063249,000050: # UPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.
063250,000051:
063251,000052: 4000 SETLOC FFTAG1
063252,000053: 4000 BANK
063253,000054: 5547 COUNT* $$/FLAG
063254,000055:
063255,000056: 5547 30002 UPFLAG CA Q
063256,000057: 5550 05565 TC DEBIT
063257,000058: 5551 40000 COM # +(15 - BIT)
063258,000059: 5552 00006 EXTEND
063259,000060: 5553 04001 ROR LCHAN # SET BIT
063260,000061: 5554 50061 COMFLAG INDEX ITEMP1
063261,000062: 5555 54074 TS FLAGWRD0
063262,000063: 5556 22063 LXCH ITEMP3
063263,000064: 5557 00003 RELINT
063264,000065: 5560 00001 TC L
063265,000066:
063266,000067: 5561 30002 DOWNFLAG CA Q
063267,000068: 5562 05565 TC DEBIT
063268,000069: 5563 70001 MASK L # RESET BIT
063269,000070: 5564 15554 TCF COMFLAG
063270,000071:
063271,000072: 5565 64770 DEBIT AD ONE # CET DE BITS
063272,000073: 5566 00004 INHINT
063273,000074: 5567 54063 TS ITEMP3
063274,000075: 5570 34777 CA LOW4 # DEC15
063275,000076: 5571 54061 TS ITEMP1
063276,000077: 5572 50063 INDEX ITEMP3
063277,000078: 5573 27777 CA 0 -1 # ADRES
063278,000079: 5574 54001 TS L
063279,000080: 5575 34772 CA ZERO
063280,000081: 5576 00006 EXTEND
063281,000082: # # Page 1480
063282,000083: 5577 10061 DV ITEMP1 # A = FLAGWRD, L = (15 - BIT)
063283,000084: 5600 52062 DXCH ITEMP1
063284,000085: 5601 50061 INDEX ITEMP1
063285,000086: 5602 30074 CA FLAGWRD0
063286,000087: 5603 54001 TS L # CURRENT STATE
063287,000088: 5604 50062 INDEX ITEMP2
063288,000089: 5605 44752 CS BIT15 # -(15 - BIT)
063289,000090: 5606 00002 TC Q
063290,000091:
063291,000092: # # Page 1481
063292,000093:
063293,000094: # DELAYJOB - A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.
063294,000095:
063295,000096: # ENTRANCE REQUIREMENTS ...
063296,000097: # CAF DT # DELAY JOB FOR DT CENTISECS
063297,000098: # TC BANKCALL
063298,000099: # CADR DELAYJOB
063299,000100:
063300,000101: 00,2000 SETLOC DLAYJOB
063301,000102: 00,2000 BANK
063302,000103:
063303,000104: # THIS MUST REMAIN IN BANK 0 ****************************************
063304,000105: 00,3730 COUNT* $$/DELAY
063305,000106: 00,3730 35016 1SECDELY CAF 1SEC
063306,000107: 00,3731 00004 DELAYJOB INHINT
063307,000108: 00,3732 54002 TS Q # STORE DELAY DT IN Q FOR DLY -1 IN
063308,000109:
063309,000110: 00,3733 36214 CAF DELAYNUM # WAITLIST
063310,000111: 00,3734 54070 DELLOOP TS RUPTREG1
063311,000112: 00,3735 50000 INDEX A
063312,000113: 00,3736 31000 CA DELAYLOC # IS THIS DELAYLOC AVAILABLE
063313,000114: 00,3737 00006 EXTEND
063314,000115: 00,3740 13745 BZF OK2DELAY # YES
063315,000116:
063316,000117: 00,3741 10070 CCS RUPTREG1 # NO, TRY NEXT DELAYLOC
063317,000118: 00,3742 13734 TCF DELLOOP
063318,000119:
063319,000120: 00,3743 07706 TC BAILOUT # NO AVAILABLE LOCS.
063320,000121: 00,3744 31104 OCT 31104
063321,000122:
063322,000123: 00,3745 33765 OK2DELAY CA TCSLEEP # SET WAITLIST IMMEDIATE RETURN
063323,000124: 00,3746 54061 TS WAITEXIT
063324,000125:
063325,000126: 00,3747 30004 CA FBANK
063326,000127: 00,3750 60070 AD RUPTREG1 # STORE BBANK FOR TASK CALL
063327,000128: 00,3751 54001 TS L
063328,000129:
063329,000130: 00,3752 33766 CAF WAKECAD # STORE CADR FOR TASK CALL
063330,000131: 00,3753 15243 TCF DLY2 -1 # DLY IS IN WAITLIST ROUTINE
063331,000132:
063332,000133: 00,3754 04665 TCGETCAD TC MAKECADR # GET CALLERS FCADR
063333,000134:
063334,000135: 00,3755 50070 INDEX RUPTREG1
063335,000136: 00,3756 55000 TS DELAYLOC # SAVE DELAY CADRS
063336,000137:
063337,000138: 00,3757 05163 TC JOBSLEEP
063338,000139:
063339,000140: 00,3760 34772 WAKER CAF ZERO
063340,000141: 00,3761 50006 INDEX BBANK
063341,000142: 00,3762 57000 XCH DELAYLOC # MAKE DELAYLOC AVAILABLE
063342,000143: 00,3763 05167 TC JOBWAKE
063343,000144: # # Page 1482
063344,000145: 00,3764 05314 TC TASKOVER
063345,000146:
063346,000147: 00,3765 03752 TCSLEEP GENADR TCGETCAD -2
063347,000148: 00,3766 03760 WAKECAD GENADR WAKER
063348,000149:
063349,000150: # # Page 1483
063350,000151:
063351,000152: # GENTRAN, A BLOCK TRANSFER ROUTINE
063352,000153:
063353,000154: # WRITTEN BY D. EYLES
063354,000155: # MOD 1 BY KERNAN UTILITYM REV 17 11/18/67
063355,000156:
063356,000157: # MOD 2 BY SCHULENBERG (REMOVE RELINT) SKIPPER REV 4 2/28/68
063357,000158:
063358,000159: # THIS ROUTINE IS USEFUL FOR TRANSFERRING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N
063359,000160: # CONSECUTIVE ERASABLE LOCATIONS. IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.
063360,000161:
063361,000162: # GENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT. THE CALLING SEQUENCE IS:
063362,000163:
063363,000164: # I CA N-1 # # OF QUANTITIES MINUS ONE.
063364,000165: # I +1 TC GENTRAN # IN FIXED-FIXED.
063365,000166: # I +2 ADRES L # STARTING ADRES OF DATA TO BE MOVED.
063366,000167: # I +3 ADRES M # STARTING ADRES OF DUPLICATION BLOCK.
063367,000168: # I +4 # RETURNS HERE.
063368,000169:
063369,000170: # GENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.
063370,000171:
063371,000172: # A, L, AND ITEMP1 ARE NOT PRESERVED.
063372,000173:
063373,000174: 4000 SETLOC FFTAG4
063374,000175: 4000 BANK
063375,000176:
063376,000177: 5607 0061 EBANK= ITEMP1
063377,000178:
063378,000179: 5607 COUNT* $$/TRAN
063379,000180:
063380,000181: 5607 00004 GENTRAN INHINT
063381,000182: 5610 54061 +1 TS ITEMP1 # SAVE N-1
063382,000183: 5611 50002 INDEX Q # C(Q) = ADRES L.
063383,000184: 5612 60000 AD 0 # ADRES (L + N - 1).
063384,000185: 5613 50000 INDEX A
063385,000186: 5614 30000 CA 0 # C(ABOVE).
063386,000187: 5615 54001 TS L # SAVE DATA.
063387,000188: 5616 30061 CA ITEMP1
063388,000189: 5617 50002 INDEX Q
063389,000190: 5620 60001 AD 1 # ADRES (M + N - 1).
063390,000191: 5621 50000 INDEX A
063391,000192: 5622 22000 LXCH 0 # STUFF IT.
063392,000193: 5623 10061 CCS ITEMP1 # LOOP UNTIL N-1 = 0.
063393,000194: 5624 15610 TCF GENTRAN +1
063394,000195: 5625 16710 TCF Q+2 # RETURN TO CALLER.
063395,000196:
063396,000197: # # Page 1484
063397,000198:
063398,000199: # B5OFF ZERO BIT 5 OF EXTVBACT, WHICH IS SET BY TESTXACT.
063399,000200: # MAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT
063400,000201:
063401,000202: 5626 COUNT* $$/EXTVB
063402,000203:
063403,000204: 5626 44764 B5OFF CS BIT5
063404,000205: 5627 71247 MASK EXTVBACT
063405,000206: 5630 55247 TS EXTVBACT
063406,000207: 5631 05205 TC ENDOFJOB
063407,000208:
063408,000209: # # Page 1485
063409,000210:
063410,000211: # SUBROUTINES TO TURN OFF AND TURN ON TRACKER FAIL LIGHT.
063411,000212:
063412,000213: 5632 COUNT* $$/DSPLA
063413,000214: 5632 00004 TRFAILOF INHINT
063414,000215: 5633 47670 CS OCT40200 # TURN OFF TRACKER LIGHT
063415,000216: 5634 71241 MASK DSPTAB +11D
063416,000217: 5635 64752 AD BIT15
063417,000218: 5636 55241 TS DSPTAB +11D
063418,000219: 5637 41337 CS OPTMODES # TO INSURE THAT OCDU FAIL WILL GO ON
063419,000220: 5640 74762 MASK OCDUFBIT # AGAIN IF IT WAS ON IN ADDITION TO
063420,000221: 5641 27337 ADS OPTMODES # TRACKER FAIL.
063421,000222:
063422,000223: 5642 00003 REQ RELINT
063423,000224: 5643 00002 TC Q
063424,000225:
063425,000226: 5644 00004 TRFAILON INHINT
063426,000227: 5645 41241 CS DSPTAB +11D # TURN ON
063427,000228: 5646 77670 MASK OCT40200
063428,000229: 5647 27241 ADS DSPTAB +11D
063429,000230: 5650 15642 TCF REQ
063430,000231:
063431,000232: 5651 10000 INCRQCK CCS A
063432,000233: 5652 24002 INCR Q
063433,000234: 5653 00002 TC Q
063434,000235: 5654 COUNT* $$/CFAIL
063435,000236: 5654 54001 C31BTCHK TS L # SAVE MASK
063436,000237: 5655 30374 CA C31FLWRD
063437,000238: 5656 74346 MASK FAILBIT
063438,000239: 5657 10000 CCS A
063439,000240: 5660 15667 TCF USEFLBTS
063440,000241: 5661 00006 EXTEND
063441,000242: 5662 00031 READ CHAN31
063442,000243: 5663 70001 C31CMCHK MASK L
063443,000244: 5664 00006 EXTEND
063444,000245: 5665 16711 BZF TCQ # BITS SET
063445,000246: 5666 16706 TCF Q+1 # BITS NOT SET
063446,000247:
063447,000248: 5667 30374 USEFLBTS CA C31FLWRD
063448,000249: 5670 15663 TCF C31CMCHK
063449,000250:
063450,000251: 5671 4346 FAILBIT = PRIO30
063451,000252:
End of include-file SERVICE_ROUTINES.agc. Parent file is MAIN.agc