Source Code
These source-code files are part of a reconstructed copy of Sundial E, the
final release of the Block II Command Module (CM) Apollo Guidance Computer
(AGC) system test software.
They have been created via disassembly of binary dumps of original core rope memory modules, part numbers 2003053-121, 2003053-151, and 2003972-211, belonging to the MIT Museum. Since only binary dumps (rather than listings) of Sundial are available as source material, all comments and labels are approximate. They have been taken from other AGC programs where possible, or, in some places, written from scratch to match what we believe would have been in the original listing. |
007258,000002: ## Copyright: Public domain.
007259,000003: ## Filename: SXTMARK.agc
007260,000004: ## Purpose: A section of Sundial E.
007261,000005: ## It is part of the reconstructed source code for the final
007262,000006: ## release of the Block II Command Module system test software. No
007263,000007: ## original listings of this program are available; instead, this
007264,000008: ## file was created via disassembly of dumps of Sundial core rope
007265,000009: ## modules and comparison with other AGC programs.
007266,000010: ## Assembler: yaYUL
007267,000011: ## Contact: Ron Burkey <info@sandroid.org>.
007268,000012: ## Website: www.ibiblio.org/apollo/index.html
007269,000013: ## Mod history: 2023-06-22 MAS Created from Aurora 12.
007270,000014: ## 2023-06-30 MAS Updated for Sundial E.
007271,000015: ## 2023-07-03 MAS Moved in patch from IMU MODE SWITCHING ROUTINES.
007272,000016:
007273,000017:
007274,000018: 13,2765 SETLOC ENDIMODS
007275,000019:
007276,000020: 13,2765 0365 EBANK= MARKSTAT
007277,000021: 13,2765 00004 SXTMARK INHINT
007278,000022: 13,2766 54074 TS RUPTREG1 # BIT14=INFLIGHT 0=NONFLIGHT
007279,000023: 13,2767 10365 CCS MARKSTAT # ARE MARKS BUTTONS IN USE
007280,000024: 13,2770 02772 TC +2 # MARKS BUTTONS NOT AVAILABLE
007281,000025: 13,2771 02775 TC MKVAC # FIND A VAC AREA
007282,000026: 13,2772 05644 TC ALARM
007283,000027: 13,2773 00105 OCT 00105
007284,000028: 13,2774 04353 TC ENDOFJOB
007285,000029:
007286,000030: 13,2775 10414 MKVAC CCS VAC1USE
007287,000031: 13,2776 03011 TC MKVACFND
007288,000032: 13,2777 10470 CCS VAC2USE
007289,000033: 13,3000 03011 TC MKVACFND
007290,000034: 13,3001 10544 CCS VAC3USE
007291,000035: 13,3002 03011 TC MKVACFND
007292,000036: 13,3003 10620 CCS VAC4USE
007293,000037: 13,3004 03011 TC MKVACFND
007294,000038: 13,3005 10674 CCS VAC5USE
007295,000039: 13,3006 03011 TC MKVACFND
007296,000040: 13,3007 05677 TC ABORT # VAC AREAS OCCUPIED
007297,000041: 13,3010 01207 OCT 01207
007298,000042:
007299,000043: 13,3011 67651 MKVACFND AD TWO # ADDRESS OF VAC AREA
007300,000044: 13,3012 54365 TS MARKSTAT
007301,000045: 13,3013 50000 INDEX A
007302,000046: 13,3014 54052 TS QPRET # STORE NEXT AVAILABLE MARK SLOT
007303,000047:
007304,000048: 13,3015 37657 CAF ZERO # SHOW VAC AREA OCCUPIED
007305,000049: 13,3016 50365 INDEX MARKSTAT
007306,000050: 13,3017 53777 TS 0 -1
007307,000051:
007308,000052: 13,3020 37637 CAF BIT12 # DESIRED NUMBER OF MARKS IN 12-14
007309,000053: 13,3021 00006 EXTEND
007310,000054: 13,3022 70074 MP RUPTREG1
007311,000055: 13,3023 56001 XCH L
007312,000056: 13,3024 26365 ADS MARKSTAT
007313,000057:
007314,000058: 13,3025 34443 CAF PRIO32 # ENTER MARK JOB
007315,000059: 13,3026 04276 TC NOVAC
007316,000060: 13,3027 0365 EBANK= MARKSTAT
007317,000061: 13,3027 03263 26000 2CADR MKVB51
007318,000062:
007319,000063: 13,3031 00003 RELINT
007320,000064: 13,3032 14077 TCF SWRETURN # SAME AS MODEEXIT
007321,000065:
007322,000066: 13,3033 47642 MKRELEAS CS BIT9 # COARSE OPTICS RETURN FLAG.
007323,000067: 13,3034 70354 MASK OPTMODES
007324,000068: 13,3035 54354 TS OPTMODES
007325,000069:
007326,000070: 13,3036 37661 CA NEGONE
007327,000071: 13,3037 54350 TS OPTIND # KILL COARS OPTICS
007328,000072: 13,3040 37657 CAF ZERO
007329,000073: 13,3041 56365 XCH MARKSTAT # SET MARKSTAT ZERO
007330,000074: 13,3042 10000 CCS A
007331,000075: 13,3043 50000 INDEX A
007332,000076: 13,3044 54000 TS 0 # SHOW VAC AREA AVAILABLE
007333,000077: 13,3045 04077 TC SWRETURN
007334,000078:
007335,000079: 13,3046 54016 MARKRUPT TS BANKRUPT
007336,000080: 13,3047 30035 CA OPTY # STORE CDU DATA AND TIME IN TEMP
007337,000081: 13,3050 54075 TS RUPTSTOR +5
007338,000082: 13,3051 30036 CA OPTX
007339,000083: 13,3052 54073 TS RUPTSTOR +3
007340,000084: 13,3053 30033 CA CDUY
007341,000085: 13,3054 54072 TS RUPTSTOR +2
007342,000086: 13,3055 30034 CA CDUZ
007343,000087: 13,3056 54074 TS RUPTSTOR +4
007344,000088: 13,3057 30032 CA CDUX
007345,000089: 13,3060 54076 TS RUPTSTOR +6
007346,000090: 13,3061 00006 EXTEND
007347,000091: 13,3062 30025 DCA TIME2
007348,000092: 13,3063 52071 DXCH RUPTSTOR
007349,000093: 13,3064 00006 EXTEND
007350,000094: 13,3065 30071 DCA RUPTSTOR
007351,000095: 13,3066 52014 DXCH SAMPTIME # RUPT TIME FOR NOUN 65.
007352,000096:
007353,000097: 13,3067 56002 XCH Q
007354,000098: 13,3070 54012 TS QRUPT
007355,000099:
007356,000100: 13,3071 37645 CAF BIT6 # SEE IF MARK OR MKREJECT
007357,000101: 13,3072 00006 EXTEND
007358,000102: 13,3073 02016 RAND NAVKEYIN
007359,000103: 13,3074 10000 CCS A
007360,000104: 13,3075 03115 TC MARKIT # ITS A MARK
007361,000105:
007362,000106: 13,3076 37644 CAF BIT7 # NOT A MARK, SEE IF MKREJECT
007363,000107: 13,3077 00006 EXTEND
007364,000108: 13,3100 02016 RAND NAVKEYIN
007365,000109: 13,3101 10000 CCS A
007366,000110: 13,3102 03224 TC MKREJECT # ITS A MARK REJECT
007367,000111:
007368,000112: 13,3103 33363 KEYCALL CAF OCT37 # NOT MARK OR MKREJECT, SEE IF KEYCODE
007369,000113: 13,3104 00006 EXTEND
007370,000114: 13,3105 02016 RAND NAVKEYIN
007371,000115: 13,3106 00006 EXTEND
007372,000116: 13,3107 13112 BZF +3 # IF NO INBITS
007373,000117: 13,3110 04103 TC POSTJUMP
007374,000118: 13,3111 03002 CADR KEYCOM # IT,S A KEY CODE, NOT A MARK.
007375,000119:
007376,000120: 13,3112 05644 +3 TC ALARM # ALARM IF NO INBITS
007377,000121: 13,3113 00113 OCT 113
007378,000122: 13,3114 04511 TC RESUME
007379,000123:
007380,000124: 13,3115 10365 MARKIT CCS MARKSTAT # SEE IF MARKS BEING CALLED FOR.
007381,000125: 13,3116 03143 TC MARK2
007382,000126:
007383,000127: 13,3117 30073 CA RUPTSTOR +3 # STORE IN OBTAINED MPAC COMPLEMENTED.
007384,000128: 13,3120 54074 TS RUPTREG1 # OPTICS ANGLES AND MINOR PART OF TIME.
007385,000129: 13,3121 30075 CA RUPTSTOR +5 # -OPTX, -OPTY, AND -TIME1.
007386,000130: 13,3122 54075 TS RUPTREG2
007387,000131: 13,3123 30071 CA RUPTSTOR +1
007388,000132: 13,3124 54076 TS RUPTREG3
007389,000133:
007390,000134: 13,3125 34420 CAF PRIO5 # CALL SPECIAL DISPLAY JOB
007391,000135: 13,3126 04276 TC NOVAC
007392,000136: 13,3127 0365 EBANK= MARKSTAT
007393,000137: 13,3127 03340 26000 2CADR MARKDISP
007394,000138:
007395,000139: 13,3131 30074 CA RUPTREG1 # PLANT INFORMATION IN MPAC OF REGISTER
007396,000140: 13,3132 50071 INDEX LOCCTR # SET.
007397,000141: 13,3133 54140 TS MPAC
007398,000142: 13,3134 30075 CA RUPTREG2
007399,000143: 13,3135 50071 INDEX LOCCTR
007400,000144: 13,3136 54141 TS MPAC +1
007401,000145: 13,3137 30076 CA RUPTREG3
007402,000146: 13,3140 50071 INDEX LOCCTR
007403,000147: 13,3141 54142 TS MPAC +2
007404,000148:
007405,000149: 13,3142 04511 TC RESUME
007406,000150:
007407,000151: 13,3143 64637 MARK2 AD 74K # SEE IF ANY MORE MARKS CALLED FOR.
007408,000152: 13,3144 00006 EXTEND
007409,000153: 13,3145 63150 BZMF BADMARK
007410,000154: 13,3146 54365 TS MARKSTAT
007411,000155: 13,3147 03153 TC MARK3
007412,000156:
007413,000157: 13,3150 05644 BADMARK TC ALARM
007414,000158: 13,3151 00114 OCT 00114
007415,000159: 13,3152 04511 TC RESUME # NO FURTHER ACTION HERE.
007416,000160:
007417,000161: 13,3153 47641 MARK3 CS BIT10 # SET BIT 10 = 1 TO ENABLE MARK
007418,000162: 13,3154 70365 MASK MARKSTAT # REJECT.
007419,000163: 13,3155 67641 AD BIT10
007420,000164: 13,3156 54365 TS MARKSTAT
007421,000165:
007422,000166: 13,3157 77664 MASK LOW9
007423,000167: 13,3160 54065 TS ITEMP1
007424,000168: 13,3161 50000 INDEX A
007425,000169: 13,3162 56052 XCH QPRET # PICK UP MARK SLOT-POINTER
007426,000170: 13,3163 54066 TS ITEMP2 # SAVE CURRENT POINTER
007427,000171: 13,3164 67656 AD SEVEN # INCREMENT POINTER
007428,000172: 13,3165 50065 INDEX ITEMP1
007429,000173: 13,3166 54052 TS QPRET # STORE ADVANCED POINTER
007430,000174:
007431,000175: 13,3167 00006 VACSTOR EXTEND
007432,000176: 13,3170 30071 DCA RUPTSTOR
007433,000177: 13,3171 50066 INDEX ITEMP2
007434,000178: 13,3172 52001 DXCH 0
007435,000179: 13,3173 30072 CA RUPTSTOR +2
007436,000180: 13,3174 50066 INDEX ITEMP2
007437,000181: 13,3175 54002 TS 2
007438,000182: 13,3176 30073 CA RUPTSTOR +3
007439,000183: 13,3177 50066 INDEX ITEMP2
007440,000184: 13,3200 54003 TS 3
007441,000185: 13,3201 30074 CA RUPTSTOR +4
007442,000186: 13,3202 50066 INDEX ITEMP2
007443,000187: 13,3203 54004 TS 4
007444,000188: 13,3204 30075 CA RUPTSTOR +5
007445,000189: 13,3205 50066 INDEX ITEMP2
007446,000190: 13,3206 54005 TS 5
007447,000191: 13,3207 30076 CA RUPTSTOR +6
007448,000192: 13,3210 50066 INDEX ITEMP2
007449,000193: 13,3211 54006 TS 6
007450,000194:
007451,000195: 13,3212 34445 CAF PRIO34 # IF ALL MARKS MADE FLASH VB50
007452,000196: 13,3213 70365 MASK MARKSTAT
007453,000197: 13,3214 00006 EXTEND
007454,000198: 13,3215 13217 BZF +2
007455,000199: 13,3216 04511 TC RESUME
007456,000200: 13,3217 34443 CAF PRIO32
007457,000201: 13,3220 04276 TC NOVAC
007458,000202: 13,3221 0365 EBANK= MARKSTAT
007459,000203: 13,3221 03331 26000 2CADR MKVB50
007460,000204: 13,3223 04511 TC RESUME
007461,000205:
007462,000206: 13,3224 10365 MKREJECT CCS MARKSTAT # SEE IF MARKS BEING ACCEPTED
007463,000207: 13,3225 03231 TC REJECT2
007464,000208: 13,3226 05644 TC ALARM # MARKS NOT BEING ACCEPTED
007465,000209: 13,3227 00112 OCT 112
007466,000210: 13,3230 04511 TC RESUME
007467,000211:
007468,000212: 13,3231 47641 REJECT2 CS BIT10 # SEE IF MARK HAD BEEN MADE SINCE LAST
007469,000213: 13,3232 70365 MASK MARKSTAT # REJECT, AND SET BIT10 TO ZERO TO
007470,000214: 13,3233 56365 XCH MARKSTAT # SHOW MARK REJECT
007471,000215: 13,3234 77641 MASK BIT10
007472,000216: 13,3235 10000 CCS A
007473,000217: 13,3236 03242 TC REJECT3
007474,000218:
007475,000219: 13,3237 05644 TC ALARM # DONT ACCEPT TWO REJECTS TOGETHER
007476,000220: 13,3240 00110 OCT 110
007477,000221: 13,3241 04511 TC RESUME
007478,000222:
007479,000223: 13,3242 37664 REJECT3 CAF LOW9 # DECREMENT POINTER TO REJECT MARK
007480,000224: 13,3243 70365 MASK MARKSTAT
007481,000225: 13,3244 54065 TS ITEMP1
007482,000226: 13,3245 47656 CS SEVEN
007483,000227: 13,3246 50065 INDEX ITEMP1
007484,000228: 13,3247 26052 ADS QPRET # NEW POINTER
007485,000229:
007486,000230: 13,3250 37637 CAF BIT12 # INCREMENT MARKS WANTED AND IF FIELD
007487,000231: 13,3251 60365 AD MARKSTAT # IS NOW NON-ZERO, CHANGE TO VB51 TO
007488,000232: 13,3252 56365 XCH MARKSTAT # INDICATE MORE MARKS WANTED
007489,000233: 13,3253 74445 MASK PRIO34 # INDICATE MORE MARKS WANTED
007490,000234: 13,3254 10000 CCS A
007491,000235: 13,3255 04511 TC RESUME
007492,000236: 13,3256 34443 CAF PRIO32
007493,000237: 13,3257 04276 TC NOVAC
007494,000238: 13,3260 0365 EBANK= MARKSTAT
007495,000239: 13,3260 03336 26000 2CADR REMKVB51
007496,000240: 13,3262 04511 TC RESUME
007497,000241:
007498,000242: 13,3263 33334 MKVB51 CAF VB51 # ASSUME USING PROGRAM HAS GRABBED DSP.
007499,000243: 13,3264 05563 TC NVSBWAIT
007500,000244: 13,3265 05525 TC FLASHON
007501,000245: 13,3266 04724 TC ENDIDLE
007502,000246: 13,3267 03323 TC MKVB5X # DONT RESPOND TO PROCEED OR TERMINATE.
007503,000247: 13,3270 03323 TC MKVB5X
007504,000248:
007505,000249: 13,3271 33364 CAF OCT76 # ON ENTER, SEE IF DATA LOADED INSTEAD.
007506,000250: 13,3272 70266 MASK VERBREG
007507,000251: 13,3273 63276 AD -OCT50 # VERBS 50 AND 51 CAUSE END MARK ROUTINES.
007508,000252: 13,3274 10000 CCS A
007509,000253: 13,3275 03323 TC MKVB5X # ON DATA LOAD, RE-DISPLAY ORIGINAL VERB.
007510,000254: 13,3276 77727 -OCT50 OCT -50
007511,000255: 13,3277 03323 TC MKVB5X
007512,000256:
007513,000257: 13,3300 37664 CAF LOW9
007514,000258: 13,3301 70365 MASK MARKSTAT
007515,000259: 13,3302 54365 TS MARKSTAT # VAC ADR IN MARKSTAT AND NO. MARKS MADE
007516,000260: 13,3303 40000 COM
007517,000261: 13,3304 50365 INDEX MARKSTAT # WILL BE LEFT IN QPRET.
007518,000262: 13,3305 60052 AD QPRET
007519,000263: 13,3306 00006 EXTEND
007520,000264: 13,3307 77637 MP BIT12
007521,000265: 13,3310 67652 AD ONE
007522,000266: 13,3311 50365 INDEX MARKSTAT
007523,000267: 13,3312 54052 TS QPRET
007524,000268:
007525,000269: 13,3313 00004 INHINT # GO SERVICE OPTSTALL INTERFACE WITH
007526,000270: 13,3314 37652 CAF ONE # USING PROGRAM.
007527,000271: 13,3315 04451 TC WAITLIST
007528,000272: 13,3316 0365 EBANK= MARKSTAT
007529,000273: 13,3316 03321 26000 2CADR ENDMARKS
007530,000274: 13,3320 04353 TC ENDOFJOB
007531,000275:
007532,000276: 13,3321 37652 ENDMARKS CAF ONE
007533,000277: 13,3322 12703 TCF GOODEND
007534,000278:
007535,000279: 13,3323 34445 MKVB5X CAF PRIO34 # RE-DISPLAY VERB 51 IF MORE MARKS
007536,000280: 13,3324 70365 MASK MARKSTAT # WANTED AND VERB 50 IF ALL IN.
007537,000281: 13,3325 10000 CCS A
007538,000282: 13,3326 37644 CAF BIT7 # (MAKES VERB 51).
007539,000283: 13,3327 64420 AD VB50
007540,000284: 13,3330 03264 TC MKVB51 +1
007541,000285:
007542,000286: # ON RECEIPT OF LAST REQUESTED MARK, DISPLAY VERB 50 (STILL FLASHING).
007543,000287:
007544,000288: 13,3331 34420 MKVB50 CAF VB50
007545,000289: 13,3332 54107 TS NVTEMP # SPECIAL ENTRY TO NVSUB WHICH AVOIDS BUSY
007546,000290: 13,3333 04676 TC NVSUB +3 # TEST.
007547,000291: 13,3334 05100 VB51 OCT 5100
007548,000292: 13,3335 04353 TC ENDOFJOB
007549,000293:
007550,000294: # IF THE ABOVE IS REJECTED, REVERT TO VERB 51.
007551,000295:
007552,000296: 13,3336 33334 REMKVB51 CAF VB51
007553,000297: 13,3337 03332 TC MKVB50 +1
007554,000298:
007555,000299: 13,3340 05535 MARKDISP TC GRABDSP # SPECIAL JOB TO DISPLAY UNCALLED-FOR MARK
007556,000300: 13,3341 05543 TC PREGBSY
007557,000301:
007558,000302: 13,3342 30140 REMKDSP CA MPAC # THE MPAC REGISTERS CONTIN -OPTX, -OPTY,
007559,000303: 13,3343 54333 TS DSPTEM1
007560,000304: 13,3344 30141 CA MPAC +1
007561,000305: 13,3345 54334 TS DSPTEM1 +1
007562,000306: 13,3346 30142 CA MPAC +2
007563,000307: 13,3347 54336 TS DSPTEM2
007564,000308: 13,3350 37657 CAF ZERO
007565,000309: 13,3351 54335 TS DSPTEM1 +2
007566,000310:
007567,000311: 13,3352 33361 CAF MKDSPCOD # NOUN-VERB FOR MARK DISPLAY.
007568,000312: 13,3353 04673 TC NVSUB
007569,000313: 13,3354 03357 TC MKDSPBSY # IF BUSY.
007570,000314:
007571,000315: 13,3355 05632 ENDMKDSP TC FREEDSP
007572,000316:
007573,000317: 13,3356 04353 TC ENDOFJOB
007574,000318:
007575,000319: 13,3357 33362 MKDSPBSY CAF LREMKDSP # TAKE DATA OUT OF MPAC WHEN RE-AWAKENED.
007576,000320: 13,3360 05560 TC NVSUBUSY
007577,000321:
007578,000322: 13,3361 4420 VB50 = PRIO5
007579,000323: 13,3361 00656 MKDSPCOD OCT 00656
007580,000324: 13,3362 27342 LREMKDSP CADR REMKDSP
007581,000325: 13,3363 00037 OCT37 OCT 37
007582,000326: 13,3364 00076 OCT76 OCT 76
007583,000327:
MAS 2023: The following chunk of code was added as a patch in Sundial D. It was placed here at the end of the bank so as to not change addresses of existing symbols. |
007587,000331:
007588,000332: 13,3365 37647 IMUZERO1 CAF BIT4 # DONT ZERO CDUS IF IMU IN GIMBAL LOCK AND
007589,000333: 13,3366 00006 EXTEND # COARSE ALIGN.
007590,000334: 13,3367 02012 RAND 12
007591,000335: 13,3370 60000 DOUBLE
007592,000336: 13,3371 60000 DOUBLE
007593,000337: 13,3372 70322 MASK DSPTAB +11D
007594,000338: 13,3373 10000 CCS A
007595,000339: 13,3374 13377 TCF +3
007596,000340:
007597,000341: 13,3375 47643 CS IMUSEFLG
007598,000342: 13,3376 12002 TCF IMUZERO +2
007599,000343:
007600,000344: 13,3377 05644 TC ALARM # IF SO.
007601,000345: 13,3400 00206 OCT 206
007602,000346:
007603,000347: 13,3401 12675 TCF CAGETSTJ +4
007604,000348:
007605,000349: 13,3402 ENDSMODS EQUALS
End of include-file SXTMARK.agc. Parent file is MAIN.agc