BOOTSTRAP FOR CLEAR ,008015,022026,030040/019,001L020100 ,047054,061068,072072)0810811022 1 CLEAR OR BOOTSTRAP ,008047/047046 /000H025B022100 4/061046,054061,068072,0010401040 2 COMPUTE MERSENNE PRIME 23 = 2**11213 - 1 CHEAT PAGE 1 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 101 JOB COMPUTE MERSENNE PRIME 23 = 2**11213 - 1 102 CTL 6611 103 * 104 * COMPUTE THE 23RD MERSENNE PRIME = 2**11213 - 1. WE START 105 * WITH THE 6 THAT'S THE LOW-ORDER DIGIT OF 2**4 IN THE 106 * NUMBER. THE OVFL LOOP ADDS A HIGH-ORDER 1 TO MAKE 16. 107 * THEN IT PROCEEDS BY DOUBLING FROM THEN, WITH THE OVERFLOW 108 * LOOP MOVING OVER THE HIGH-ORDER DIGIT WORD MARK, AND 109 * PUTTING IN A 1. WE DON'T NEED TO CLEAR THE OVERFLOW ZONE, 110 * BECAUSE THE NEXT DOUBLING WILL DO IT. 111 * 112 * THIS ONE CHEATS BY NOT COUNTING THE NUMBER OF DOUBLINGS. 113 * INSTEAD, IT KNOWS THAT THE HIGH-ORDER DIGIT IS 2. IT ALSO 114 * KNOWS THAT THE LOW ORDER DIGIT IS 1, AVOIDING A SUBTRACT 115 * AND ZONE CORRECTION. 116 * 117 ORG 081 0081 118 WHAT DCW @0001: @ STARTING DIGIT NUMBER PRINT FIELD 6 0086 3 119 * 120 * X1 IS USED TO KEEP TRACK OF THE CURRENT HIGH-ORDER DIGIT 121 * (ACTUALLY ONE CHARACTER BEFORE IT). AT THE END, IT'S ONE 122 * BEFORE THE HIGH-ORDER DIGIT FOR THE WHOLE NUMBER. THEN, 123 * IT'S USED TO PRINT THE RESULT, BEING INCREMENTED BY 100 FOR 124 * EACH LINE. 125 * 126 X1 DSA NUMBER-1 INITIAL CONTENT OF X1, AT 87-89 3 0089 G07 3 127 * 128 * COMPUTE THE 23RD MERSENNE PRIME. THIS CODE RUNS THROUGH X2 129 * AND X3, AND INTO THE PUNCH AREA, BUT WE'RE NOT USING X2 OR 130 * X3, OR PUNCHING, SO WE MIGHT AS WELL USE IT. 131 * 132 START W PRINT THE TITLE PRELOADED AT 201-... 1 0090 2 3 133 OVFL CW 1&X1 CLEAR WM TO MAKE MORE ROOM 4 0091 ) 0'1 3 134 LCA ONE DO THE OVERFLOW, SET THE WM 4 0095 L 184 3 135 SBR X1 HIGH-ORDER DIGIT INDEX - 1 4 0099 H 089 3 136 INNER BCE DONE,NUMHI,2 DONE IF HIGH-ORDER DIGIT == 2 8 0103 B 124 333 2 3 137 A NUMBER DOUBLE IT 4 0111 A G08 4 138 BAV OVFL OVERFLOW? 5 0115 B 091 Z 4 139 B INNER NO 4 0120 B 103 4 140 DONE MCW ONE,NUMBER ACTUALLY, SUBTRACT 1 FROM 2 7 0124 M 184 G08 4 141 * 142 * PRINT IT 143 * 144 SW 207 4 0131 , 207 4 145 LCA WHAT 4 0135 L 086 4 146 PLOOP SBR X1,100&X1 BUMP PRINTING INDEX BY 100 7 0139 H 089 1'0 4 147 MCS WHAT-2,204 INDEX OF FIRST DIGIT 7 0146 Z 084 204 5 COMPUTE MERSENNE PRIME 23 = 2**11213 - 1 CHEAT PAGE 2 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 148 A ONE,WHAT-4 ADD 100 TO DIGIT NUMBER TO PRINT 7 0153 A 184 082 5 149 MCW 0&X1,306 NEXT HUNDRED DIGITS 7 0160 M 0'0 306 5 150 W PRINT THEM 1 0167 2 5 151 BCE FINIS,306, DONE IF BLANK IN PRINT AREA 8 0168 B 180 306 5 152 B PLOOP PRINT 100 MORE DIGITS 4 0176 B 139 5 153 FINIS H FINIS HALT LOOP (AS GOOD HERE AS ANYWHERE) 4 0180 . 180 5 154 ONE DCW 1 1 0184 6 155 * 156 ORG 201 PRE-LOAD TITLE INTO PRINT AREA 0201 157 DCW @23RD MERSENNE PRIME = 2**11213 - 1@ 34 0234 7 158 * 159 * HERE'S THE NUMBER 160 * 161 ORG 333 0333 162 DA 1X3375 0333 3707 163 NUMHI 1,1 HIGH-ORDER DIGIT 0333 FIELD 164 NUMBER DCW 6 LOW-ORDER DIGIT 1 3708 8 165 * 166 END START / 090 080 COMPUTE MERSENNE PRIME 23 = 2**11213 - 1 CHEAT PAGE 3 SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS DONE 124 FINIS 180 INNER 103 NUMBER 3708 NUMHI 333 ONE 184 OVFL 91 PLOOP 139 START 90 WHAT 86 X1 89