Source Code
056833,000001: # Copyright: Public domain.
056834,000002: # Filename: SERVICE_ROUTINES.agc
056835,000003: # Purpose: A section of Luminary 1C, revision 131.
056836,000004: # It is part of the source code for the Lunar Module's (LM)
056837,000005: # Apollo Guidance Computer (AGC) for Apollo 13 and Apollo 14.
056838,000006: # This file is intended to be a faithful transcription, except
056839,000007: # that the code format has been changed to conform to the
056840,000008: # requirements of the yaYUL assembler rather than the
056841,000009: # original YUL assembler.
056842,000010: # Reference: pp. 1371-1377 of 1729.pdf.
056843,000011: # Contact: Ron Burkey <info@sandroid.org>.
056844,000012: # Website: www.ibiblio.org/apollo/index.html
056845,000013: # Mod history: 06/06/03 RSB. Began transcribing.
056846,000014: # 05/14/05 RSB Corrected website references above.
056847,000015:
056848,000016: # Page 1371
056849,000017: 10,3545 BANK 10
056850,000018: 10,2000 SETLOC DISPLAYS
056851,000019: 10,2000 BANK
056852,000020: 10,3545 COUNT* $$/DSPLA
056853,000021:
056854,000022: 10,3545 00004 UPENT2 INHINT
056855,000023: 10,3546 75650 MASK OCT77770
056856,000024: 10,3547 54001 TS L
056857,000025: 10,3550 40100 CS FLAGWRD4
056858,000026: 10,3551 70001 MASK L
056859,000027: 10,3552 26100 ADS FLAGWRD4
056860,000028: 10,3553 00003 JOIN RELINT
056861,000029: 10,3554 16742 TCF Q+1
056862,000030:
056863,000031: 10,3555 00004 DOWNENT2 INHINT
056864,000032: 10,3556 75650 MASK OCT77770
056865,000033: 10,3557 40000 COM
056866,000034: 10,3560 70100 MASK FLAGWRD4
056867,000035: 10,3561 54100 TS FLAGWRD4
056868,000036: 10,3562 13553 TCF JOIN
056869,000037:
056870,000038: 10,3563 4757 OCT7 EQUALS SEVEN
056871,000039:
056872,000040: # Page 1372
056873,000041: # UPFLAG AND DOWNFLAG ARE ENTIRELY GENERAL FLAG SETTING AND CLEARING SUBROUTINES. USING THEM, WHETHER OR
056874,000042: # NOT IN INTERRUPT, ONE MAY SET OR CLEAR ANY SINGLE, NAMED BIT IN ANY ERASABLE REGISTER, SUBJECT OF COURSE TO
056875,000043: # EBANK SETTING. A "NAMED" BIT, AS THE WORD IS USED HERE, IS ANY BIT WITH A NAME FORMALLY ASSIGNED BY THE YUL
056876,000044: # ASSEMBLER.
056877,000045:
056878,000046: # AT PRESENT THE ONLY NAMED BITS ARE THOSE IN THE FLAGWORDS. ASSEMBLER CHANGES WILL MAKE IT POSSIBLE TO
056879,000047: # NAME ANY BIT IN ERASABLE MEMORY.
056880,000048:
056881,000049: # CALLING SEQUENCES ARE AS FOLLOWS --
056882,000050: # TC UPFLAG TC DOWNFLAG
056883,000051: # ADRES NAME OF FLAG ADRES NAME OF FLAG
056884,000052:
056885,000053: # RETURN IS TO THE LOCATION FOLLOWING THE "ADRES" ABOUT .58 MS AFTER THE "TC".
056886,000054: # UPON RETURN A CONTAINS THE CURRENT FLAGWRD SETTING.
056887,000055:
056888,000056: 5504 BLOCK 02
056889,000057: 4000 SETLOC FFTAG1
056890,000058: 4000 BANK
056891,000059: 5504 COUNT* $$/FLAG
056892,000060:
056893,000061: 5504 30002 UPFLAG CA Q
056894,000062: 5505 05522 TC DEBIT
056895,000063: 5506 40000 COM # +(15 - BIT)
056896,000064: 5507 00006 EXTEND
056897,000065: 5510 04001 ROR LCHAN # SET BIT
056898,000066: 5511 50061 COMFLAG INDEX ITEMP1
056899,000067: 5512 54074 TS FLAGWRD0
056900,000068: 5513 22063 LXCH ITEMP3
056901,000069: 5514 00003 RELINT
056902,000070: 5515 00001 TC L
056903,000071:
056904,000072: 5516 30002 DOWNFLAG CA Q
056905,000073: 5517 05522 TC DEBIT
056906,000074: 5520 70001 MASK L # RESET BIT
056907,000075: 5521 15511 TCF COMFLAG
056908,000076:
056909,000077: 5522 64753 DEBIT AD ONE # CET DE BITS
056910,000078: 5523 00004 INHINT
056911,000079: 5524 54063 TS ITEMP3
056912,000080: 5525 34762 CA LOW4 # DEC15
056913,000081: 5526 54061 TS ITEMP1
056914,000082: 5527 50063 INDEX ITEMP3
056915,000083: 5530 27777 CA 0 -1 # ADRES
056916,000084: 5531 54001 TS L
056917,000085: 5532 34755 CA ZERO
056918,000086: # Page 1373
056919,000087: 5533 00006 EXTEND
056920,000088: 5534 10061 DV ITEMP1 # A = FLAGWRD, L = (15 - BIT)
056921,000089: 5535 52062 DXCH ITEMP1
056922,000090: 5536 50061 INDEX ITEMP1
056923,000091: 5537 30074 CA FLAGWRD0
056924,000092: 5540 54001 TS L # CURRENT STATE
056925,000093: 5541 50062 INDEX ITEMP2
056926,000094: 5542 44735 CS BIT15 # -(15 - BIT)
056927,000095: 5543 00002 TC Q
056928,000096:
056929,000097: # Page 1374
056930,000098: # DELAYJOB -- A GENERAL ROUTINE TO DELAY A JOB A SPECIFIC AMOUNT OF TIME BEFORE PICKING UP AGAIN.
056931,000099:
056932,000100: # ENTRANCE REQUIREMENTS ...
056933,000101: # CAF DT # DELAY JOB FOR DT CENTISECS
056934,000102: # TC BANKCALL
056935,000103: # CADR DELAYJOB
056936,000104:
056937,000105: 06,3772 BANK 06
056938,000106: 00,2000 SETLOC DLAYJOB
056939,000107: 00,2000 BANK
056940,000108:
056941,000109: # THIS MUST REMAIN IN BANK 0 ****************************************
056942,000110:
056943,000111: 00,3735 COUNT* $$/DELAY
056944,000112: 00,3735 35000 2SECDELY CAF 2SECS
056945,000113: 00,3736 00004 DELAYJOB INHINT
056946,000114: 00,3737 54002 TS Q # STORE DELAY DT IN Q FOR DLY -1 IN
056947,000115: 00,3740 34752 CAF DELAYNUM # WAITLIST
056948,000116: 00,3741 54070 DELLOOP TS RUPTREG1
056949,000117: 00,3742 50000 INDEX A
056950,000118: 00,3743 31323 CA DELAYLOC # IS THIS DELAYLOC AVAILABLE
056951,000119: 00,3744 00006 EXTEND
056952,000120: 00,3745 13753 BZF OK2DELAY # YES
056953,000121:
056954,000122: 00,3746 10070 CCS RUPTREG1 # NO, TRY NEXT DELAYLOC
056955,000123: 00,3747 13741 TCF DELLOOP
056956,000124:
056957,000125: 00,3750 52134 DXCH BUF2
056958,000126: 00,3751 05706 TC BAILOUT1 # NO AVAILABLE LOCS.
056959,000127: 00,3752 31104 OCT 31104
056960,000128:
056961,000129: 00,3753 33773 OK2DELAY CA TCSLEEP # SET WAITLIST IMMEDIATE RETURN
056962,000130: 00,3754 54061 TS WAITEXIT
056963,000131:
056964,000132: 00,3755 30004 CA FBANK
056965,000133: 00,3756 60070 AD RUPTREG1 # STORE BBANK FOR TASK CALL
056966,000134: 00,3757 54001 TS L
056967,000135:
056968,000136: 00,3760 33774 CAF WAKECAD # STORE CADR FOR TASK CALL
056969,000137: 00,3761 15211 TCF DLY2 -1 # DLY IS IN WAITLIST ROUTINE
056970,000138:
056971,000139: 00,3762 04645 TCGETCAD TC MAKECADR # GET CALLER'S FCADR
056972,000140:
056973,000141: 00,3763 50070 INDEX RUPTREG1
056974,000142: 00,3764 55323 TS DELAYLOC # SAVE DELAY CADRS
056975,000143:
056976,000144: 00,3765 05133 TC JOBSLEEP
056977,000145:
056978,000146: 00,3766 34755 WAKER CAF ZERO
056979,000147: 00,3767 50006 INDEX BBANK
056980,000148: # Page 1375
056981,000149: 00,3770 57323 XCH DELAYLOC # MAKE DELAYLOC AVAILABLE
056982,000150: 00,3771 05137 TC JOBWAKE
056983,000151:
056984,000152: 00,3772 05261 TC TASKOVER
056985,000153:
056986,000154: 00,3773 03760 TCSLEEP GENADR TCGETCAD -2
056987,000155: 00,3774 03766 WAKECAD GENADR WAKER
056988,000156:
056989,000157: # Page 1376
056990,000158: # GENTRAN, A BLOCK TRANSFER ROUTINE
056991,000159: # WRITTEN BY D. EYLES
056992,000160: # MOD 1 BY KERNAN UTILITYM REV 17 11/18/67
056993,000161: # MOD 2 BY SCHULENBERG -- (REMOVE RELINT) -- SKIPPER REV 4 2/28/68
056994,000162:
056995,000163: # THIS ROUTINE IS USEFUL FOR TRANSFERRING N CONSECUTIVE ERASABLE OR FIXED QUANTITIES TO SOME OTHER N
056996,000164: # CONSECUTIVE ERASABLE LOCATIONS. IF BOTH BLOCKS OF DATA ARE IN SWITCHABLE EBANKS, THEY MUST BE IN THE SAME ONE.
056997,000165:
056998,000166: # GENTRAN IS CALLABLE IN A JOB AS WELL AS A RUPT. THE CALLING SEQUENCE IS:
056999,000167: # I CA N-1 # NUMBER OF QUANTITIES MINUS ONE.
057000,000168: # I +1 TC GENTRAN # IN FIXED-FIXED.
057001,000169: # I +2 ADRES L # STARTING ADRES OF DATA TO BE MOVED.
057002,000170: # I +3 ADRES M # STARTING ADRES OF DUPLICATION BLOCK.
057003,000171: # I +4 # RETURNS HERE.
057004,000172:
057005,000173: # GENTRAN TAKES 25 MCT'S (300 MICROSECONDS) PER ITEM + 5 MCT'S (60 MICS) FOR ENTERING AND EXITING.
057006,000174: # A, L, AND ITEMP1 ARE NOT PRESERVED.
057007,000175:
057008,000176: 5544 BLOCK 02
057009,000177: 4000 SETLOC FFTAG4
057010,000178: 4000 BANK
057011,000179:
057012,000180: 5544 0061 EBANK= ITEMP1
057013,000181:
057014,000182: 5544 COUNT* $$/TRAN
057015,000183:
057016,000184: 5544 00004 GENTRAN INHINT
057017,000185: 5545 54061 TS ITEMP1 # SAVE N-1
057018,000186: 5546 50002 INDEX Q # C(Q) = ADRES L.
057019,000187: 5547 60000 AD 0 # ADRES (L + N - 1).
057020,000188: 5550 50000 INDEX A
057021,000189: 5551 30000 CA 0 # C(ABOVE).
057022,000190: 5552 54001 TS L # SAVE DATA.
057023,000191: 5553 30061 CA ITEMP1
057024,000192: 5554 50002 INDEX Q
057025,000193: 5555 60001 AD 1 # ADRES (M + N - 1).
057026,000194: 5556 50000 INDEX A
057027,000195: 5557 22000 LXCH 0 # STUFF IT.
057028,000196: 5560 10061 CCS ITEMP1 # LOOP UNTIL N-1 = 0.
057029,000197: 5561 15545 TCF GENTRAN +1
057030,000198: 5562 16744 TCF Q+2 # RETURN TO CALLER.
057031,000199:
057032,000200: # Page 1377
057033,000201: # B5OFF ZERO BIT 5 OF EXTVBACK, WHICH IS SET BY TESTXACT.
057034,000202: # MAY BE USED AS NEEDED BY ANY EXTENDED VERB WHICH HAS DONE TESTXACT
057035,000203:
057036,000204: 5563 COUNT* $$/EXTVB
057037,000205:
057038,000206: 5563 44747 B5OFF CS BIT5
057039,000207: 5564 71043 MASK EXTVBACT
057040,000208: 5565 55043 TS EXTVBACT
057041,000209: 5566 05155 TC ENDOFJOB
057042,000210:
057043,000211:
057044,000212:
End of include-file SERVICE_ROUTINES.agc. Parent file is MAIN.agc