summaryrefslogtreecommitdiffstats
path: root/mix/1.3.2/prime.mixal
blob: 12a56bb9891a1ac10f37c01ccef37c6794d7e65f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
* EXAMPLE PROGRAM ...  TABLE OF PRIMES
*
L               EQU     500             The number of primes to find
PRINTER         EQU     18              Unit number of the line printer
PRIME           EQU     -1              Memory area of table of primes
BUF0            EQU     2000            Memory area for BUFFER[0]
BUF1            EQU     BUF0+25         Memory area for BUFFER[1]
                ORIG    3000
START           IOC     0(PRINTER)      Skip to new page.
                LD1     =1-L=           P1. Start table. J <- 1.
                LD2     =3=                 N <- 3.
2H              INC1    1               P2. N is prime. J <- J + 1.
                ST2     PRIME+L,1           PRIME[J] <- N.
                J1Z     2F              P3. 500 found?
4H              INC2    2               P4. Advance N.
                ENT3    2               P5. K <- 2.
6H              ENTA    0               P6. PRIME[K]\N?
                ENTX    0,2                 rAX <- N.
                DIV     PRIME,3             rA <- Q, rX <- R.
                JXZ     4B                  To P4 if R = 0.
                CMPA    PRIME,3         P7. PRIME[K] large?
                INC3    1               P8. Advance K.
                JG      6B                  To P6 if Q > PRIME[K].
                JMP     2B                  Otherwise N is prime.
2H              OUT     TITLE(PRINTER)  P9. Print title.
                ENT4    BUF1+10             Set B <- 1.
                ENT5    -50                 Set M <- 0.
2H              INC5    L+1                 Advance M.
4H              LDA     PRIME,5         P10. Set up line. (Right to left)
                CHAR    0                    Convert PRIME[M] to decimal.
                STX     0,4(1:4)
                DEC4    1
                DEC5    50              (rI5 goes down by 50 until
                J5P     4B                   it becomes nonpositive)
                OUT     0,4(PRINTER)    P11. Print line.
                LD4     24,4                 Switch buffers.
                J5N     2B                   If rI5 = 0, we are done.
                HLT
* INITIAL CONTENTS OF TABLES AND BUFFERS
                ORIG    PRIME+1
                CON     2
                ORIG    BUF0-5
TITLE           ALF     "FIRST"
                ALF     " FIVE"
                ALF     " HUND"
                ALF     "RED P"
                ALF     "RIMES"
                ORIG    BUF0+24
                CON     BUF1+10
                ORIG    BUF1+24
                CON     BUF0+10
                END     START