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