1;       Small C+ Math package
2;
3;
4;       Generic rand() function
5
6
7        SECTION code_fp
8        PUBLIC    fprand
9
10        EXTERN	fmul
11        EXTERN	fadd
12        EXTERN	ldbcfa
13        EXTERN	norm
14
15
16        EXTERN    fp_seed
17        EXTERN    dload
18        EXTERN    fa
19        EXTERN    fasign
20        EXTERN    dstore
21
22
23.fprand
24        LD      HL,fp_seed
25        CALL    dload
26        LD      BC,$9835        ; 11879545.
27        LD      IX,$447A
28        LD      DE,0
29        CALL    fmul
30        LD      BC,$6828        ; 3.92767775e-8
31        LD      IX,$B146
32        LD      DE,0
33        CALL    fadd
34        CALL    ldbcfa
35        LD      A,E
36        LD      E,C
37        LD      C,A
38        LD      HL,fasign
39        LD      (HL),$80
40        DEC     HL
41        LD      B,(HL)
42        LD      (HL),$80
43        CALL    norm
44        LD      HL,fp_seed
45        JP      dstore
46