home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol064 / random.src < prev    next >
Text File  |  1984-04-29  |  2KB  |  147 lines

  1. F    SET          0
  2. R    SET          0
  3. S    SET          0
  4. ;function random( var seed: real ): real;
  5. ;{ RETURNS RANDOM NUMBERS IN RANGE 0.0 - 1.0 }
  6. ;{ GLOBAL:
  7. ;   SEED: REAL;
  8. ;}
  9.     NAME RANDOM
  10.     ENTRY RANDOM
  11.  
  12. ;CONST PI = 3.14159;
  13. ;VAR    X: REAL;
  14. ;    I: INTEGER;
  15. ;begin
  16. RANDOM:
  17.     ENTR    D,2,6
  18. ;  x := seed + PI;
  19.     LXI    H,-4
  20.     DADD    S
  21.     SPHL
  22.     XCHG
  23.     MOV    H,9(IX)
  24.     MOV    L,8(IX)
  25.     DCX    H
  26.     DCX    H
  27.     DCX    H
  28.     LXI    B,4
  29.     LDIR
  30.     LXI    H,612
  31.     LXI    D,-30745
  32.     PUSH    H
  33.     PUSH    D
  34.     DADD    D,-4
  35.     LXI    H,3
  36.     DADD    S
  37.     XCHG
  38.     PUSH    IX
  39.     POP    H
  40.     DCX    H
  41.     DCX    H
  42.     XCHG
  43.     LXI    B,4
  44.     LDDR
  45.     POP    H
  46.     POP    H
  47. ;  x := exp(5.0 * ln(x));
  48.     LXI    H,-4
  49.     DADD    S
  50.     SPHL
  51.     LXI    H,848
  52.     MOV    D,A
  53.     MOV    E,A
  54.     PUSH    H
  55.     PUSH    D
  56.     LXI    H,-4
  57.     DADD    S
  58.     SPHL
  59.     LXI    H,-4
  60.     DADD    S
  61.     SPHL
  62.     XCHG
  63.     PUSH    IX
  64.     POP    H
  65.     LXI    B,-5
  66.     DADD    B
  67.     LXI    B,4
  68.     LDIR
  69.     CALL    L134
  70.     MULT    D,-4
  71.     CALL    L133
  72.     LXI    H,3
  73.     DADD    S
  74.     XCHG
  75.     PUSH    IX
  76.     POP    H
  77.     DCX    H
  78.     DCX    H
  79.     XCHG
  80.     LXI    B,4
  81.     LDDR
  82.     POP    H
  83.     POP    H
  84. ;  seed := x - trunc(x);
  85.     LXI    H,-4
  86.     DADD    S
  87.     SPHL
  88.     XCHG
  89.     PUSH    IX
  90.     POP    H
  91.     LXI    B,-5
  92.     DADD    B
  93.     LXI    B,4
  94.     LDIR
  95.     LXI    H,-4
  96.     DADD    S
  97.     SPHL
  98.     XCHG
  99.     PUSH    IX
  100.     POP    H
  101.     LXI    B,-5
  102.     DADD    B
  103.     LXI    B,4
  104.     LDIR
  105.     CALL    L129
  106.     PUSH    D
  107.     CVTF    B
  108.     DSUB    D,-4
  109.     LXI    H,3
  110.     DADD    S
  111.     XCHG
  112.     MOV    H,9(IX)
  113.     MOV    L,8(IX)
  114.     XCHG
  115.     LXI    B,4
  116.     LDDR
  117.     POP    H
  118.     POP    H
  119. ;  random := seed;
  120.     LXI    H,-4
  121.     DADD    S
  122.     SPHL
  123.     XCHG
  124.     MOV    H,9(IX)
  125.     MOV    L,8(IX)
  126.     DCX    H
  127.     DCX    H
  128.     DCX    H
  129.     LXI    B,4
  130.     LDIR
  131.     LXI    H,3
  132.     DADD    S
  133.     XCHG
  134.     PUSH    IX
  135.     POP    H
  136.     LXI    B,13
  137.     DADD    B
  138.     XCHG
  139.     LXI    B,4
  140.     LDDR
  141.     POP    H
  142.     POP    H
  143. ;end{ of random };
  144.     EXIT    D,2
  145. ;
  146. ;
  147.