home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / MTE.ZIP / RND.ASM < prev   
Assembly Source File  |  1992-04-22  |  914b  |  66 lines

  1.  
  2. ; A pseudo random numbers generator
  3. ;  for use with the MuTation Engine <tm>
  4.  
  5. ; Version 1.03 (11-2-92)
  6. ; (C) 1991 CrazySoft, Inc.
  7.  
  8.     .model    tiny
  9.     .code
  10.  
  11.     public    rnd_init, rnd_get, rnd_buf, data_top
  12.  
  13. rnd_init:
  14.     push    ds si dx cx bx
  15.     xor    ah,ah
  16.     int    1ah
  17.     in    al,[40h]
  18.     mov    ah,al
  19.     in    al,[40h]
  20.     xor    ax,cx
  21.     xor    dx,ax
  22.     push    cs
  23.     pop    ds
  24.     mov    si,offset rnd_buf
  25.     xor    bh,bh
  26.     jmp    short rnd_put
  27. rnd_get:
  28.     push    ds si dx cx bx
  29.     push    cs
  30.     pop    ds
  31.     mov    si,offset rnd_buf
  32.         mov     bl,[bx]
  33.     xor    bh,bh
  34.     mov    ax,[bx+si+2]
  35.     mov    dx,[bx+si+4]
  36.     add    byte ptr [si],4
  37.         mov     cx,17
  38. rnd_lup:
  39.     shl    ax,1
  40.     rcl    dx,1
  41.     mov    bl,al
  42.     xor    bl,dh
  43.     jns    nxt_bit
  44.     inc    al
  45. nxt_bit:
  46.     loop    rnd_lup
  47. rnd_put:
  48.     mov    bl,[si+1]
  49.     add    bl,4
  50.     mov    [si+1],bl
  51.     mov    al,dl
  52.     cmp    bl,[si]
  53.     jnz    rnd_done
  54.     add    byte ptr [si],4
  55. rnd_done:
  56.     pop    bx cx dx si ds
  57.     ret
  58.  
  59.     .data
  60.  
  61. rnd_buf dw    129 dup(?)
  62.  
  63. data_top:
  64.  
  65.     end
  66.