2 / THE RANDOM GENERATOR IS THAT FROM DECUS 5-25
3 / MUST BE USED IN PDP8 CODE AS IT DOES SOME ILLEGAL ARITHMETIC
8 / IF SET TO A FIXED NUMBER ON FIRST ENTRY A REPEATABLE SEQUENCE
10 / BUT NOTE THAT ALL PARTS OF THE NUMBER MUST BE DEFINED
11 / IE USE IX>1 AND 5-6 DIGITS
12 / IF SET TO 0 A RANDOM NUMBER SEQUENCE IS INITIATED
13 / NOTE THAT THIS SEQUENCE IS DEPENDENT OF THE BACKGOUND
15 / CALLING WITH THE SAME TIMING PARAMETERS MIGHT RESULT
16 / IN REPETITION OF SAME SEQUENCE.
17 / ALSO FIRST CALL TO RANDU SETS UP BACKGROUND JOB
18 / AND A 0 CALL AT THAT TIME IS NOT RANDOM
20 / COORECT SEQUENCE TO GET A RANDOM START
23 / CALL RANDU(IX,X) NOTE RANDU CHANGES I
24 / WRITE (0,..... TTY OUTPUT (OR INPUT) GIVES A 'RANDOM START'
26 / CALL RANDU (IX,X) X IS RANDOM
27 / CALL RANDU (IX,X) KEEP SAME I
28 / ON SUBSEQUENT CALLS IT SHOULD BE LEFT UNTOUCHED
29 /*** NOTE IX IS A NOT NORMAL FPP NUMBER IT SHOULD NOT BE USED IN FPP
31 / F IS ON RETURN A RANDOM NUMBER BETWEEN 0 AND 1
64 FLDA TWIDD / IS THIS FIRST CALL
66 TRAP4 #FIRST / YES, INITIATE BACKGROUND LOOP
69 FLDA TWIDD / FETCH TWIDDLER CONSTANTS
70 FSTA% I / AND USE AS START OF RANDOM
71 #G0001, FSTA L / PLACE TO SECT 8
72 TRAP4 #RANDU / GO GENERATE NEW NUMBER
73 FLDA L / FOR NEXT ITERATION
75 FLDA T / NEW RANDOM NUMBER IE L WITH HIGH ORDER=0
80 \f/ THE RANDOM GENERATOR
81 / ON CALLING L=OLD RANDOM NR
82 / ON EXIT L=NEW NUMBER
83 / THE 2 LOW ORDER PARTS OF THIS ARE MOVED TO T
87 SNA / ALL PARTS MUST BE NON ZERO
94 TAD . / NICE CONSTANT ?
137 TAD L1 / WE ONLY WANT WORD 2 AND 3
144 T, / OLD RANDOM NUMBER, START OF NEXT
148 L, / NEW RANDOM NUMBER
155 #FIRST, 0 / INITIATE BACKGROUND