USG_PG3/usr/source/fclib4/orand.s
/ fortran random number generator.
/ either single or double prec.
.globl rand.
.globl retrn
rand.:
value
.+2
tst first
bne 1f
sys time
mov r0,seed1
mov r1,seed2
inc first
1:
mov seed1,r1
jsr pc,ran
mov r1,seed1
tst r0
beq 1b
seti
setd
movif r0,fr0
mov seed2,r1
jsr pc,ran
mov r1,seed2
movif r0,fr1
addf fr1,fr0
divf $44200,fr0
movf fr0,value
jmp retrn
ran:
mpy $13077.,r1
add $6925.,r1
mov r1,r0
bic $100000,r0
rts pc
.bss
first: .=.+2
seed1: .=.+2
seed2: .=.+2
value: .=.+8