home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug134.arc / RANDOM.MAC < prev    next >
Text File  |  1979-12-31  |  896b  |  64 lines

  1. ;    random number generator
  2.  
  3.     .z80
  4.  
  5. ;
  6. ;... Calling this subroutine seeds random geerator from real time clock
  7. ;
  8. seed:
  9.     ld    a,4        ; HOURS
  10.     out    (04h),a
  11.     in    a,(07h)
  12.     ld    h,a
  13.     rlca
  14.     ld    l,a
  15.     ld    (rand2),hl
  16.     ld    a,2        ; MINUTES
  17.     out    (04h),a
  18.     in    a,(07h)
  19.     ld    l,a
  20.     ld    a,0        ; SECONDS
  21.     out    (04h),a
  22.     in    a,(07h)
  23.     ld    h,a
  24.     ld    (rand1),hl
  25.     ret
  26.  
  27. ;
  28. ;... calling this subroutine returns 16-bit random number in HL
  29. ;                                     8-bit random number in A                    
  30. ;
  31. random:
  32.     push    de
  33.     ld    hl,(rand2)
  34.     push    hl
  35.     ld    a,h
  36.     ld    h,l
  37.     ld    l,a
  38.     dec    hl
  39.     ld    (rand2),hl
  40.     ld    hl,(rand1)
  41.     srl    h
  42.     rr    l
  43.     jr    nc,$+4
  44.     set    7,h
  45.     pop    de
  46.     ld    a,h
  47.     rlca
  48.     xor    l
  49.     xor    e
  50.     ld    h,a
  51.     ld    a,l
  52.     rrca
  53.     xor    h
  54.     xor    d
  55.     ld    l,a
  56.     ld    (rand1),hl
  57.     pop    de
  58.     ret
  59. rand1:
  60.     ds    2        ; seed for next iteration
  61. rand2:
  62.     ds    2        ; counter (NOT random)
  63.     end
  64.