Source Code
![]() |
YAYUL: ASSEMBLE REVISION 5 OF PROGRAM BOREALIS BY MSTEWART MAR. 27,2017This is a modern AGC system self-test program, though based on the Apollo-era AURORA 12 program, and was not written by the original AGC developers, but rather by Mike Stewart. All of the original AURORA 12 DAP code added by the DAP Group has been removed, and extensive new system test code has been added in its place. This allows more in-depth testing of CPU behavior, both in AGC software simulations and hardware simulations. |
007685,000002: ## Copyright: Public domain.
007686,000003: ## Filename: AOTMARK.agc
007687,000004: ## Purpose: This program is designed to extensively test the Apollo Guidance Computer
007688,000005: ## (specifically the LM instantiation of it). It is built on top of a heavily
007689,000006: ## stripped-down Aurora 12, with all code ostensibly added by the DAP Group
007690,000007: ## removed. Instead Borealis expands upon the tests provided by Aurora,
007691,000008: ## including corrected tests from Retread 44 and tests from Ron Burkey's
007692,000009: ## Validation.
007693,000010: ## Assembler: yaYUL
007694,000011: ## Contact: Mike Stewart <mastewar1@gmail.com>.
007695,000012: ## Website: www.ibiblio.org/apollo/index.html
007696,000013: ## Mod history: 2016-12-20 MAS Created from Aurora 12 (with much DAP stuff removed).
007697,000014:
007698,000015: 13,2753 SETLOC ENDIMODS
007699,000016:
007700,000017: 13,2753 E3,1463 EBANK= AOTAZ
007701,000018: 13,2753 00004 AOTMARK INHINT
007702,000019: 13,2754 54075 TS RUPTREG2 # BIT14=INFLIGHT 0=NONFLIGHT
007703,000020: 13,2755 10374 CCS MARKSTAT # ARE MARKS BUTTONS IN USE
007704,000021: 13,2756 02760 TC +2 # MARKS BUTTONS NOT AVAILABLE
007705,000022: 13,2757 02763 TC MKVAC # FIND A VAC AREA
007706,000023: 13,2760 05405 TC ALARM
007707,000024: 13,2761 00105 OCT 00105
007708,000025: 13,2762 04421 TC ENDOFJOB
007709,000026:
007710,000027: 13,2763 10431 MKVAC CCS VAC1USE
007711,000028: 13,2764 02777 TC MKVACFND
007712,000029: 13,2765 10505 CCS VAC2USE
007713,000030: 13,2766 02777 TC MKVACFND
007714,000031: 13,2767 10561 CCS VAC3USE
007715,000032: 13,2770 02777 TC MKVACFND
007716,000033: 13,2771 10635 CCS VAC4USE
007717,000034: 13,2772 02777 TC MKVACFND
007718,000035: 13,2773 10711 CCS VAC5USE
007719,000036: 13,2774 02777 TC MKVACFND
007720,000037: 13,2775 05440 TC ABORT # VAC AREAS OCCUPIED
007721,000038: 13,2776 01207 OCT 01207
007722,000039:
007723,000040: 13,2777 67656 MKVACFND AD TWO
007724,000041: 13,3000 54374 TS MARKSTAT
007725,000042: 13,3001 37665 CAF ZERO
007726,000043: 13,3002 54375 TS XYMARK # INITIALIZE MARK ID REGISTER
007727,000044: 13,3003 50374 INDEX MARKSTAT
007728,000045: 13,3004 53777 TS 0 -1 # SHOW VAC OCCUPIED
007729,000046:
007730,000047: 13,3005 30075 CA RUPTREG2
007731,000048: 13,3006 26374 ADS MARKSTAT
007732,000049:
007733,000050: 13,3007 34511 CAF PRIO32
007734,000051: 13,3010 04344 TC NOVAC
007735,000052: 13,3011 03022 26003 2CADR GETMKS
007736,000053:
007737,000054: 13,3013 02033 TC MODEEXIT
007738,000055:
007739,000056: 13,3014 37665 MKRELEAS CAF ZERO
007740,000057: 13,3015 56374 XCH MARKSTAT # SET MARKSTAT ZERO
007741,000058: 13,3016 10000 CCS A
007742,000059: 13,3017 50000 INDEX A
007743,000060: 13,3020 54000 TS 0 # SHOW VAC AREA AVAILABLE
007744,000061: 13,3021 04100 TC SWRETURN
007745,000062: 13,3022 37665 GETMKS CAF ZERO
007746,000063: 13,3023 54375 TS XYMARK
007747,000064: 13,3024 37642 CAF BIT14 # FIND IF IN-FLIGHT OR NON-FLIGHT
007748,000065: 13,3025 70374 MASK MARKSTAT
007749,000066: 13,3026 10000 CCS A
007750,000067: 13,3027 03036 TC MKVB53 # IN-FLIGHT
007751,000068: 13,3030 47645 CS BIT11 # NON-FLIGHT, SET Y MARK =1
007752,000069: 13,3031 70374 MASK MARKSTAT
007753,000070: 13,3032 67645 AD BIT11
007754,000071: 13,3033 54374 TS MARKSTAT
007755,000072: 13,3034 33355 CAF VB51 # REQUEST X MARK
007756,000073: 13,3035 03037 TC +2
007757,000074: 13,3036 33431 MKVB53 CAF VB53 # REQUEST X AND Y MARKS
007758,000075: 13,3037 05324 TC NVSBWAIT
007759,000076: 13,3040 05266 TC FLASHON
007760,000077: 13,3041 05132 TC ENDIDLE
007761,000078: 13,3042 03023 TC GETMKS +1
007762,000079: 13,3043 03023 TC GETMKS +1
007763,000080:
007764,000081: 13,3044 37646 MKCHEK CAF BIT10 # WAS X MARK MADE
007765,000082: 13,3045 70374 MASK MARKSTAT
007766,000083: 13,3046 10000 CCS A
007767,000084: 13,3047 03051 TC +2 # X MARK MADE-LOOK AT Y MARK
007768,000085: 13,3050 03055 TC MKALARM
007769,000086: 13,3051 37645 CAF BIT11
007770,000087: 13,3052 70374 MASK MARKSTAT
007771,000088: 13,3053 10000 CCS A
007772,000089: 13,3054 03063 TC GETDET # BOTH MARKS MADE-SHOW ACCEPT-GET DETENT
007773,000090:
007774,000091: 13,3055 05405 MKALARM TC ALARM # IF EITHER MARK IS MISSING AFTER ENTER
007775,000092: 13,3056 00111 OCT 111
007776,000093: 13,3057 44477 CS PRIO17 # SET BITS 10,11,12,13 TO ZERO IN MARKSTAT
007777,000094: 13,3060 70374 MASK MARKSTAT
007778,000095: 13,3061 54374 TS MARKSTAT
007779,000096: 13,3062 03022 TC GETMKS # GETMKS AGAIN
007780,000097:
007781,000098: 13,3063 47644 GETDET CS BIT12
007782,000099: 13,3064 70374 MASK MARKSTAT
007783,000100: 13,3065 67644 AD BIT12 # SET BIT12=1 TO SHOW MARKS ACCEPTED
007784,000101: 13,3066 54374 TS MARKSTAT
007785,000102: 13,3067 33427 DETVB21 CAF V21N43E
007786,000103: 13,3070 05324 TC NVSBWAIT
007787,000104: 13,3071 05132 TC ENDIDLE
007788,000105: 13,3072 03067 TC DETVB21
007789,000106: 13,3073 03067 TC DETVB21
007790,000107:
007791,000108: 13,3074 46165 CS OCT3
007792,000109: 13,3075 70375 MASK DETCODE
007793,000110: 13,3076 10000 CCS A
007794,000111: 13,3077 03067 TC DETVB21 # BAD CODE, REQUEST AGAIN
007795,000112: 13,3100 03103 TC +3 # LOOKS GOOD BUT COULD BE ZERO
007796,000113: 13,3101 03102 TC +1
007797,000114: 13,3102 03067 TC DETVB21
007798,000115: 13,3103 36165 CAF OCT3
007799,000116: 13,3104 70375 MASK DETCODE # SEE IF ZERO
007800,000117: 13,3105 10000 CCS A
007801,000118: 13,3106 03110 TC +2 # GOOD CODE-STORE ANGLES
007802,000119: 13,3107 03067 TC DETVB21 # ZERO-BAD CODE-REQUEST AGAIN
007803,000120:
007804,000121: 13,3110 37672 CAF LOW9
007805,000122: 13,3111 70374 MASK MARKSTAT
007806,000123: 13,3112 54002 TS BASVAC # STORE VAC AREA ADDRESS
007807,000124: 13,3113 50375 INDEX DETCODE
007808,000125: 13,3114 31465 CA AOTEL -1
007809,000126: 13,3115 50002 INDEX BASVAC
007810,000127: 13,3116 54011 TS 9D # STORE ELV ANGLE IN VAC +9
007811,000128: 13,3117 50375 INDEX DETCODE
007812,000129: 13,3120 31462 CA AOTAZ -1
007813,000130: 13,3121 50002 INDEX BASVAC
007814,000131: 13,3122 54010 TS 8D # STORE AZIMUTH IN VAC +8
007815,000132:
007816,000133: 13,3123 37642 CAF BIT14 # IN-FLIGHT OR NON-FLIGHT
007817,000134: 13,3124 70374 MASK MARKSTAT
007818,000135: 13,3125 10000 CCS A
007819,000136: 13,3126 03146 TC MKOUT # IN-FLIGHT, NO MORE DATA NEEDED
007820,000137: 13,3127 03130 TC ROTVB24 # NON-FLIGHT, GET ROTATION ANGLES
007821,000138:
007822,000139: 13,3130 33430 ROTVB24 CAF V24N42E # REQUEST RETICLE ROTATION ANGLES
007823,000140: 13,3131 05324 TC NVSBWAIT
007824,000141: 13,3132 05132 TC ENDIDLE
007825,000142: 13,3133 03130 TC ROTVB24
007826,000143: 13,3134 03130 TC ROTVB24
007827,000144:
007828,000145: 13,3135 37672 CAF LOW9
007829,000146: 13,3136 70374 MASK MARKSTAT
007830,000147: 13,3137 54002 TS BASVAC
007831,000148: 13,3140 30336 CA DSPTEM2 # YROT
007832,000149: 13,3141 50002 INDEX BASVAC
007833,000150: 13,3142 54003 TS 3 # STORE Y RETICLE ROT ANGLE IN VAC +3
007834,000151: 13,3143 30337 CA DSPTEM2 +1 # SROT
007835,000152: 13,3144 50002 INDEX BASVAC
007836,000153: 13,3145 54005 TS 5 # STORE SPIRAL ROT ANGLE VAC +5
007837,000154:
007838,000155: 13,3146 37672 MKOUT CAF LOW9
007839,000156: 13,3147 70374 MASK MARKSTAT
007840,000157: 13,3150 54374 TS MARKSTAT # SET HI5 ZERO
007841,000158:
007842,000159: 13,3151 00004 INHINT
007843,000160: 13,3152 37657 CAF ONE
007844,000161: 13,3153 04517 TC WAITLIST
007845,000162: 13,3154 03157 26003 2CADR ENDMARKS
007846,000163: 13,3156 04421 TC ENDOFJOB
007847,000164:
007848,000165: 13,3157 37657 ENDMARKS CAF ONE
007849,000166: 13,3160 12667 TCF GOODEND
007850,000167: 13,3161 54016 MARKRUPT TS BANKRUPT
007851,000168: 13,3162 30033 CA CDUY # STORE CDU DATA AND TIME IN TEMP
007852,000169: 13,3163 54072 TS RUPTSTOR +2
007853,000170: 13,3164 30034 CA CDUZ
007854,000171: 13,3165 54074 TS RUPTSTOR +4
007855,000172: 13,3166 30032 CA CDUX
007856,000173: 13,3167 54076 TS RUPTSTOR +6
007857,000174: 13,3170 00006 EXTEND
007858,000175: 13,3171 30025 DCA TIME2
007859,000176: 13,3172 52071 DXCH RUPTSTOR
007860,000177:
007861,000178: 13,3173 56002 XCH Q
007862,000179: 13,3174 54012 TS QRUPT
007863,000180:
007864,000181: 13,3175 33425 CAF OCT34 # SEE IF X OR Y MARK OR MKREJECT
007865,000182: 13,3176 00006 EXTEND
007866,000183: 13,3177 02016 RAND NAVKEYIN
007867,000184: 13,3200 10000 CCS A
007868,000185: 13,3201 03203 TC +2 # ITS A LIVE ONE-CHECK FOR ACCEPT
007869,000186: 13,3202 03233 TC SOMEKEY # SOME OTHER KEY
007870,000187:
007871,000188: 13,3203 37644 CAF BIT12 # HAVE MARKS BEEN ACCEPTED
007872,000189: 13,3204 70374 MASK MARKSTAT
007873,000190: 13,3205 10000 CCS A
007874,000191: 13,3206 04567 TC RESUME # MARKS MADE AND ACCEPTED - DO NOTHING
007875,000192:
007876,000193: 13,3207 10374 CCS MARKSTAT # ARE MARKS BEING ACCEPTED
007877,000194: 13,3210 03214 TC FINDKEY
007878,000195: 13,3211 05405 TC ALARM # MARKS NOT BEING ACCEPTED
007879,000196: 13,3212 00112 OCT 112
007880,000197: 13,3213 04567 TC RESUME
007881,000198:
007882,000199: 13,3214 37653 FINDKEY CAF BIT5
007883,000200: 13,3215 00006 EXTEND
007884,000201: 13,3216 02016 RAND NAVKEYIN # CHANNEL 16
007885,000202: 13,3217 10000 CCS A
007886,000203: 13,3220 03361 TC MKREJ # ITS A MARK REJECT
007887,000204: 13,3221 37654 CAF BIT4
007888,000205: 13,3222 00006 EXTEND
007889,000206: 13,3223 02016 RAND NAVKEYIN
007890,000207: 13,3224 10000 CCS A
007891,000208: 13,3225 03251 TC YMKRUPT # ITS A Y MARK
007892,000209: 13,3226 37655 CAF BIT3
007893,000210: 13,3227 00006 EXTEND
007894,000211: 13,3230 02016 RAND NAVKEYIN
007895,000212: 13,3231 10000 CCS A
007896,000213: 13,3232 03245 TC XMKRUPT # ITS AN X MARK
007897,000214: 13,3233 33426 SOMEKEY CAF OCT140 # NOT MARK OR MARK REJECT
007898,000215: 13,3234 00006 EXTEND
007899,000216: 13,3235 02016 RAND NAVKEYIN
007900,000217: 13,3236 00006 EXTEND
007901,000218: 13,3237 13242 BZF +3 # IF NO INBITS.
007902,000219:
007903,000220: 13,3240 04104 TC POSTJUMP # IF DESCENT BITS.
007904,000221: 13,3241 22725 CADR DESCBITS
007905,000222: 13,3242 05405 +3 TC ALARM
007906,000223: 13,3243 00113 OCT 113
007907,000224: 13,3244 04567 TC RESUME
007908,000225:
007909,000226: 13,3245 37665 XMKRUPT CAF ZERO
007910,000227: 13,3246 54065 TS ITEMP1
007911,000228: 13,3247 37646 CAF BIT10
007912,000229: 13,3250 03254 TC +4
007913,000230: 13,3251 37657 YMKRUPT CAF ONE
007914,000231: 13,3252 54065 TS ITEMP1
007915,000232: 13,3253 37645 CAF BIT11
007916,000233: 13,3254 54375 TS XYMARK # SET MARK ID
007917,000234:
007918,000235: 13,3255 70374 MASK MARKSTAT
007919,000236: 13,3256 10000 CCS A
007920,000237: 13,3257 03261 TC +2 # MARK MADE BUT NOT DESIRED
007921,000238: 13,3260 03264 TC VACSTOR # MARK DESIRED AND MADE-STORE CDUS
007922,000239: 13,3261 05405 TC ALARM
007923,000240: 13,3262 00114 OCT 114
007924,000241: 13,3263 03315 TC REMARK # RENEW REQUEST
007925,000242:
007926,000243: 13,3264 37672 VACSTOR CAF LOW9 # STORE TIME AND CDUS IN VAC AREA
007927,000244: 13,3265 70374 MASK MARKSTAT
007928,000245: 13,3266 54066 TS ITEMP2
007929,000246: 13,3267 00006 EXTEND
007930,000247: 13,3270 30071 DCA RUPTSTOR
007931,000248: 13,3271 50066 INDEX ITEMP2
007932,000249: 13,3272 52001 DXCH 0 # STORE TIME1 AND TIME2 IN VAC
007933,000250: 13,3273 30066 CA ITEMP2
007934,000251: 13,3274 26065 ADS ITEMP1
007935,000252: 13,3275 30072 CA RUPTSTOR +2
007936,000253: 13,3276 50065 INDEX ITEMP1
007937,000254: 13,3277 54002 TS 2
007938,000255: 13,3300 30074 CA RUPTSTOR +4
007939,000256: 13,3301 50065 INDEX ITEMP1
007940,000257: 13,3302 54004 TS 4
007941,000258: 13,3303 30076 CA RUPTSTOR +6
007942,000259: 13,3304 50065 INDEX ITEMP1
007943,000260: 13,3305 54006 TS 6
007944,000261:
007945,000262: 13,3306 37643 CAF BIT13
007946,000263: 13,3307 60375 AD XYMARK
007947,000264: 13,3310 40000 COM
007948,000265: 13,3311 70374 MASK MARKSTAT
007949,000266: 13,3312 60375 AD XYMARK # SET MARK MADE BIT IN MARKSTAT=1
007950,000267: 13,3313 54374 TS MARKSTAT # AND SET BIT13 ZERO TO SHOW MARK
007951,000268: 13,3314 03315 TC REMARK # MADE BEFORE A REJECT - GO REMARK
007952,000269: 13,3315 37665 REMARK CAF ZERO
007953,000270: 13,3316 54077 TS MKDEX # MKDEX=0
007954,000271: 13,3317 37645 CAF BIT11 # LOOK A Y MARK
007955,000272: 13,3320 70374 MASK MARKSTAT
007956,000273: 13,3321 10000 CCS A
007957,000274: 13,3322 03325 TC +3 # Y MARK MADE
007958,000275: 13,3323 37650 CAF BIT8 # Y MARK REQUIRED
007959,000276: 13,3324 54077 TS MKDEX
007960,000277:
007961,000278: 13,3325 37646 CAF BIT10 # LOOK AT X MARK
007962,000279: 13,3326 70374 MASK MARKSTAT
007963,000280: 13,3327 10000 CCS A
007964,000281: 13,3330 03333 TC MKJOB
007965,000282: 13,3331 37651 CAF BIT7 # X MARK REQUIRED
007966,000283: 13,3332 26077 ADS MKDEX
007967,000284:
007968,000285: 13,3333 34511 MKJOB CAF PRIO32
007969,000286: 13,3334 04344 TC NOVAC # ENTER JOB TO PASTE VERB
007970,000287: 13,3335 03343 26003 2CADR CHANGVB
007971,000288:
007972,000289: 13,3337 30077 CA RUPTREG4
007973,000290: 13,3340 50071 INDEX LOCCTR
007974,000291: 13,3341 54140 TS MPAC
007975,000292: 13,3342 04567 TC RESUME
007976,000293:
007977,000294: 13,3343 10140 CHANGVB CCS MPAC
007978,000295: 13,3344 03347 TC SHOWVB
007979,000296: 13,3345 33432 CAF VB21N30E
007980,000297: 13,3346 03351 TC SHOWVB +2
007981,000298: 13,3347 33433 SHOWVB CAF VB50
007982,000299: 13,3350 60140 AD MPAC
007983,000300: 13,3351 54107 TS NVTEMP
007984,000301: 13,3352 30323 CA CADRSTOR # NVSUB CLOBBERS THIS-USE LOC AS TEMP
007985,000302: 13,3353 54150 TS LOC
007986,000303: 13,3354 05104 TC NVSUB +3
007987,000304: 13,3355 05100 VB51 OCT 5100
007988,000305: 13,3356 30150 CA LOC # RESTORE CADRSTOR
007989,000306: 13,3357 54323 TS CADRSTOR
007990,000307: 13,3360 04421 TC ENDOFJOB
007991,000308:
007992,000309: 13,3361 37642 MKREJ CAF BIT14 # IN-FLIGHT OR NON-FLIGHT
007993,000310: 13,3362 70374 MASK MARKSTAT
007994,000311: 13,3363 10000 CCS A
007995,000312: 13,3364 03372 TC REJIN # IN-FLIGHT
007996,000313: 13,3365 37646 CAF BIT10 # NON-FLIGHT, SEE IF X MARK MADE
007997,000314: 13,3366 70374 MASK MARKSTAT
007998,000315: 13,3367 10000 CCS A
007999,000316: 13,3370 03414 TC REJECT2 # XMARK MADE-REJECT IT
008000,000317: 13,3371 03376 TC REJALARM # X MARK NOT MADE-ALARM-NO MARKS TO REJ
008001,000318: 13,3372 34465 REJIN CAF PRIO3 # WERE IN-FLIGHT MARKS MADE
008002,000319: 13,3373 70374 MASK MARKSTAT
008003,000320: 13,3374 10000 CCS A
008004,000321: 13,3375 03401 TC REJECT # MARKS MADE-REJECT ONE
008005,000322: 13,3376 05405 REJALARM TC ALARM # NO MARKS MADE TO REJECT-GET MARKS
008006,000323: 13,3377 00115 OCT 115
008007,000324: 13,3400 03414 TC REJECT2
008008,000325: 13,3401 47643 REJECT CS BIT13 # SHOW MKREJECT AND SEE MARK MADE
008009,000326: 13,3402 70374 MASK MARKSTAT # SINCE LAST REJECT
008010,000327: 13,3403 67643 AD BIT13
008011,000328: 13,3404 56374 XCH MARKSTAT
008012,000329: 13,3405 77643 MASK BIT13
008013,000330: 13,3406 10000 CCS A
008014,000331: 13,3407 03414 TC REJECT2 # ANOTHER REJECT
008015,000332: 13,3410 40375 CS XYMARK # MARK MADE SINCE LAST REJECT-REJECT IT
008016,000333: 13,3411 70374 MASK MARKSTAT
008017,000334: 13,3412 54374 TS MARKSTAT
008018,000335: 13,3413 03315 TC REMARK # GO REQUEST MARKS
008019,000336:
008020,000337: 13,3414 44465 REJECT2 CS PRIO3 # NO MARKS SINCE LAST REJECT SO SET
008021,000338: 13,3415 70374 MASK MARKSTAT # MARKSTAT TO WANT X AND Y MARKS
008022,000339: 13,3416 56374 XCH MARKSTAT
008023,000340: 13,3417 77642 MASK BIT14 # IN-FLIGHT OR NON-FLIGHT
008024,000341: 13,3420 10000 CCS A
008025,000342: 13,3421 03315 TC REMARK # IN-FLIGHT, GO GET MARKS
008026,000343: 13,3422 37645 CAF BIT11 # NON-FLIGHT, STILL REQUEST X MARK ONLY
008027,000344: 13,3423 26374 ADS MARKSTAT
008028,000345: 13,3424 03315 TC REMARK # GO GET X MARK
008029,000346:
008030,000347: 13,3425 6165 OCT3 EQUALS THREE
008031,000348: 13,3425 00034 OCT34 OCT 00034
008032,000349: 13,3426 00140 OCT140 OCT 00140
008033,000350: 13,3427 02143 V21N43E OCT 2143
008034,000351: 13,3430 02442 V24N42E OCT 2442
008035,000352: 13,3431 05300 VB53 OCT 5300
008036,000353: 13,3432 0077 MKDEX EQUALS RUPTREG4
008037,000354: 13,3432 0375 DETCODE EQUALS XYMARK
008038,000355: 13,3432 0000002 BASVAC EQUALS Q
008039,000356: 13,3432 02130 VB21N30E OCT 2130
008040,000357: 13,3433 05000 VB50 OCT 5000
008041,000358: 13,3434 ENDAMODS EQUALS
End of include-file AOTMARK.agc. Parent file is MAIN.agc