home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol064
/
random.src
< prev
next >
Wrap
Text File
|
1984-04-29
|
2KB
|
147 lines
F SET 0
R SET 0
S SET 0
;function random( var seed: real ): real;
;{ RETURNS RANDOM NUMBERS IN RANGE 0.0 - 1.0 }
;{ GLOBAL:
; SEED: REAL;
;}
NAME RANDOM
ENTRY RANDOM
;CONST PI = 3.14159;
;VAR X: REAL;
; I: INTEGER;
;begin
RANDOM:
ENTR D,2,6
; x := seed + PI;
LXI H,-4
DADD S
SPHL
XCHG
MOV H,9(IX)
MOV L,8(IX)
DCX H
DCX H
DCX H
LXI B,4
LDIR
LXI H,612
LXI D,-30745
PUSH H
PUSH D
DADD D,-4
LXI H,3
DADD S
XCHG
PUSH IX
POP H
DCX H
DCX H
XCHG
LXI B,4
LDDR
POP H
POP H
; x := exp(5.0 * ln(x));
LXI H,-4
DADD S
SPHL
LXI H,848
MOV D,A
MOV E,A
PUSH H
PUSH D
LXI H,-4
DADD S
SPHL
LXI H,-4
DADD S
SPHL
XCHG
PUSH IX
POP H
LXI B,-5
DADD B
LXI B,4
LDIR
CALL L134
MULT D,-4
CALL L133
LXI H,3
DADD S
XCHG
PUSH IX
POP H
DCX H
DCX H
XCHG
LXI B,4
LDDR
POP H
POP H
; seed := x - trunc(x);
LXI H,-4
DADD S
SPHL
XCHG
PUSH IX
POP H
LXI B,-5
DADD B
LXI B,4
LDIR
LXI H,-4
DADD S
SPHL
XCHG
PUSH IX
POP H
LXI B,-5
DADD B
LXI B,4
LDIR
CALL L129
PUSH D
CVTF B
DSUB D,-4
LXI H,3
DADD S
XCHG
MOV H,9(IX)
MOV L,8(IX)
XCHG
LXI B,4
LDDR
POP H
POP H
; random := seed;
LXI H,-4
DADD S
SPHL
XCHG
MOV H,9(IX)
MOV L,8(IX)
DCX H
DCX H
DCX H
LXI B,4
LDIR
LXI H,3
DADD S
XCHG
PUSH IX
POP H
LXI B,13
DADD B
XCHG
LXI B,4
LDDR
POP H
POP H
;end{ of random };
EXIT D,2
;
;