BOOTSTRAP FOR CLEAR ,008015,022026,030040/019,001L020100 ,047054,061068,072072)0810811022 1 CLEAR OR BOOTSTRAP ,008047/047046 /000H025B022100 4/047046,054061,068072,0010401040 2 COMPUTE MERSENNE PRIME 23 = 2**11213 - 1 MERSN 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 ORG 081 0081 113 WHAT DCW @0001: @ STARTING DIGIT NUMBER PRINT FIELD 6 0086 3 114 * 115 * X1 IS USED TO KEEP TRACK OF THE CURRENT HIGH-ORDER DIGIT 116 * (ACTUALLY ONE CHARACTER BEFORE IT). AT THE END, IT'S ONE 117 * BEFORE THE HIGH-ORDER DIGIT FOR THE WHOLE NUMBER. THEN, 118 * IT'S USED TO PRINT THE RESULT, BEING INCREMENTED BY 100 FOR 119 * EACH LINE. 120 * 121 X1 DSA NUMBER-1 INITIAL CONTENT OF X1, AT 87-89 3 0089 G07 3 122 * 123 * COMPUTE THE 23RD MERSENNE PRIME. THIS CODE RUNS THROUGH X2 124 * AND X3, AND INTO THE PUNCH AREA, BUT WE'RE NOT USING X2 OR 125 * X3, OR PUNCHING, SO WE MIGHT AS WELL USE IT. 126 * 127 START W PRINT THE TITLE PRELOADED AT 201-... 1 0090 2 3 128 OVFL CW 1&X1 CLEAR WM TO MAKE MORE ROOM 4 0091 ) 0'1 3 129 LCA ONE DO THE OVERFLOW, SET THE WM 4 0095 L 198 3 130 SBR X1 HIGH-ORDER DIGIT INDEX - 1 4 0099 H 089 3 131 INNER BWZ DONE,NDOUBL,K DONE IF NEGATIVE 8 0103 V 131 G37 K 3 132 S ONE,NDOUBL 7 0111 S 198 G37 4 133 A NUMBER DOUBLE IT 4 0118 A G08 4 134 BAV OVFL OVERFLOW? 5 0122 B 091 Z 4 135 B INNER NO 4 0127 B 103 4 136 DONE S ONE,NUMBER PUTS A ZONE ON LOW-ORDER DIGIT 7 0131 S 198 G08 4 137 MZ ONE,NUMBER CLEAR ZONE ON LOW-ORDER DIGIT 7 0138 Y 198 G08 4 138 * 139 * PRINT IT 140 * 141 SW 207 4 0145 , 207 4 142 LCA WHAT 4 0149 L 086 5 143 PLOOP SBR X1,100&X1 BUMP PRINTING INDEX BY 100 7 0153 H 089 1'0 5 144 MCS WHAT-2,204 INDEX OF FIRST DIGIT 7 0160 Z 084 204 5 145 A ONE,WHAT-4 ADD 100 TO DIGIT NUMBER TO PRINT 7 0167 A 198 082 5 146 MCW 0&X1,306 NEXT HUNDRED DIGITS 7 0174 M 0'0 306 5 147 W PRINT THEM 1 0181 2 5 COMPUTE MERSENNE PRIME 23 = 2**11213 - 1 MERSN PAGE 2 SEQ PG LIN LABEL OP OPERANDS SFX CT LOCN INSTRUCTION TYPE CARD 148 BCE FINIS,306, DONE IF BLANK IN PRINT AREA 8 0182 B 194 306 6 149 B PLOOP PRINT 100 MORE DIGITS 4 0190 B 153 6 150 FINIS H FINIS HALT LOOP (AS GOOD HERE AS ANYWHERE) 4 0194 . 194 6 151 ONE DCW 1 1 0198 6 152 * 153 ORG 201 PRE-LOAD TITLE INTO PRINT AREA 0201 154 DCW @23RD MERSENNE PRIME = 2**11213 - 1@ 34 0234 7 155 * 156 * HERE'S THE NUMBER 157 * 158 ORG 333 0333 159 DA 1X3375 0333 3707 160 NUMHI 1,1 HIGH-ORDER DIGIT 0333 FIELD 161 NUMBER DCW 6 LOW-ORDER DIGIT 1 3708 8 162 DC #24 BLANKS FOR PRINTING THE LAST LINE 24 3732 8 163 * 164 NDOUBL DCW 11208 EXPONENT - 4 - 1 5 3737 8 165 END START / 090 080 COMPUTE MERSENNE PRIME 23 = 2**11213 - 1 MERSN PAGE 3 SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS SYMBOL ADDRESS DONE 131 FINIS 194 INNER 103 NDOUBL 3737 NUMBER 3708 NUMHI 333 ONE 198 OVFL 91 PLOOP 153 START 90 WHAT 86 X1 89