DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦e91855351⟧ TextFile

    Length: 4608 (0x1200)
    Types: TextFile
    Names: »trana«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦09b4e9619⟧ »thcømat« 
            └─⟦this⟧ 

TextFile

message rana
(rana=slang fpnames type.yes insertproc entry.no
rana ranr rani ranl rann)

; 17-7-74 ojh
; random number generator

b. g1,e5 w.

k=10000

s. g6,j40,a14,c4
h.
g0=0
e2:
g1:  g3,g2
j13: g0+13,0              ; last used
j30: g0+30,0              ; saved sr,w3
j6:  g0+6,0               ; end register expr
j8:  g0+8,0               ; end address expr
j4:  g0+4,0               ; take expr
j18: g0+18,0              ; zone alarm (index)
j29: g0+29,0              ; param alarm
j38:  0,1
j39:  0,3                 ; rann
g2=k-2-g1, g3=g2          ; end of abs words, points
w.
e0:    g0
        4
        0
        2                 ; rann=2
17 07 74, 16 30 00
e1:
     rl. w2 (j13.)        ; entry rana
     ds. w3 (j30.)
     dl  w1 x2+8          ; take n
     so  w0  16
     jl. w3 (j4.)
     ds. w3 (j30.)
     dl  w1 x1
     rl  w3 x2+6
     sz  w3  1
     cf  w1  0            ; w1=n
     sh  w1 -1            ; if n<0 then
     jl. w3 (j18.)        ; alarm index n
     rs. w1 a1.
     rl  w3 x2+10
     la. w3 a3.
     sn  w3  16
     al  w3  19
     sh  w3  20           ; if second param
     sh  w3  16           ; is not an array then
     jl. w3 (j29.)        ; alarm param
     la. w3 a4.           ; w3= array kind (0,1,2,3)
     al  w0 x3
     as  w0  3            ; w0= array kind*8
     wa. w0 a4.           ; w0=w0+3
     hs. w0 a13.          ; store jump to convertion in a13
     sn  w3  0
     al  w3  3
     al  w0  1
     ld  w1 x3-1          ; w0=K, w1=n*K (K=bytes/array element)
     rs. w0 a5.
     rl  w3 x2+12
     rl  w0 x3            ; w0=baseword
     ba  w3 x2+10         ; w3=addr of dopevector
     wa  w0 x3            ; w0=addr of first element-K
     rs. w0 a0.
     wa  w1 x3
     ws  w1 x3-2
     sl  w1  1            ; if not n elements in array then
     jl. w3 a2.           ; alarm index n
a9:  dl. w3 a0.
     aa. w3 a5.
     sh  w2 -1
     jl.    (j8.)
     ds. w3 a0.
a8:  rl. w1 (j39.)         ; entry random number generator
     ls  w1 -1
     al  w3 x1
     wm. w1 c3.
     aa. w1 c4.
     ld  w1 1
     rs. w1 (j39.)
     wm. w3 c2.
     wa  w0  6
     rl. w3 c3.
     wm. w3 (j38.)
     bz  w3  7
     wa  w0  6
     hs. w0 (j38.)
     bz  w0  1
a13=k+1
     jl.
     ld  w1 -1           ; store long array
     ds. w1 (a0.)
     jl.    a9.
a4:      3               ; mask and 3
     hs. w0 (a0.)        ; store boolean array
     jl.    a9.
a1:      0               ; number of elements to be filled
a0:      0               ; addr of current array element
     ld  w1 -12          ; store integer array
     rs. w1 (a0.)
     jl.    a9.
a3:    511               ; mask
     ld  w1 11           ; store real array
     nd  w1  3
     ds. w1 (a0.)
     jl.    a9.
a10: ld  w1 11           ; ranr exit
     nd  w1  3
     jl.    (j6.)
a11: ld  w1 -12          ; rani exit
     jl.    (j6.)
a12: ld  w1 -1           ; ranl exit
     jl.    (j6.)
a2:  rl. w1 a1.          ; index alarm exit
     jl.    (j18.)
e3:  am     a12-a11      ; entry ranl
e4:  am     a11-a10      ; entry rani
e5:  al  w1 a10-a13+1    ; entry ranr
     rl. w2 (j13.)
     ds. w3 (j30.)
     hs. w1 a13.         ; store jump to correct exit
     jl.    a8.          ; goto generator
a6:      -1
a5:      0               ; bytes/array element
c2=k+1
     8.7065              ; multiplier for
c3:  8.37244615          ; random number generator
         0
c4:      1               ; adder for random number generator
h.   0,r.(:10504-k:)
w.   <:rana       <0>:>
e.

;rana
g0:       1
     0,0,0,0
     1<23+e1-e2
     1<18+41<12+13<6+0    ; procedure rana(n,A);
     0                    ; value n; integer n; any type array A;
     4<12+e0-e2
     1<12+4
;ranr
     1<23+4
     0,0,0,0
     1<23+e5-e2
     4<18+0              ; real procedure ranr;
     0
     4<12+e0-e2
     1<12+4
;rani
     1<23+4
     0,0,0,0
     1<23+e4-e2
     3<18+0,0            ; integer procedure rani;
     4<12+e0-e2
     1<12+4
;ranl
     1<23+4
     0,0,0,0
     1<23+e3-e2
     5<18+0,0            ; long procedure ranl;
     4<12+e0-e2
     1<12+4
;rann
g1:  1<23+4
     0,0,0,0
     3
     11<18+0,0           ; own long rann;
     4<12+0
     1<12+4
n.

▶EOF◀