home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ZSYS / SIMTEL20 / SYSLIB / SLIB3.LBR / SRAND.Z80 < prev    next >
Text File  |  2000-06-30  |  2KB  |  79 lines

  1. ;
  2. ; SYSLIB Module Name:  SRAND
  3. ; Author:  Richard Conn
  4. ; SYSLIB Version Number:  3.6
  5. ; Module Version Number:  1.1
  6.  
  7.     public    rnd,rndinit,rndseed
  8. ;
  9. ;  EXTERNALS
  10. ;
  11.     EXT    PRINT
  12.     EXT    CONDIN
  13.  
  14. ;
  15. ;  RNDINIT -- INITIALIZE RANDOM NUMBER GENERATOR
  16. ;    THIS ROUTINE PROMPTS THE USER FOR A KEYPRESS, AND THEN SETS THE
  17. ;    SEE VALUE FOR THE RANDOM NUMBER GENERATOR (8-BIT)
  18. ;  NO INPUT OR OUTPUT PARAMETERS
  19. ;  GENERALLY, IT IS LEFT TO THE USER TO PRINT A MESSAGE BEFORE THIS ROUTINE
  20. ;    IS CALLED
  21. ;
  22. RNDINIT:
  23.     PUSH    AF    ; SAVE REGS
  24.     PUSH    BC
  25.     LD    B,0    ; START AT 0
  26. RNDIL:
  27.     INC    B    ; INCREMENT SEED
  28.     CALL    CONDIN    ; INPUT?
  29.     JP    Z,RNDIL
  30.     LD    A,B    ; GET SEED
  31. RNDID:
  32.     LD    (SEED),A    ; SAVE IT FOR LATER
  33.     CALL    RND    ; GENERATE A RANDOM NUMBER
  34.     LD    (ADDEND),A    ; SAVE A INITIAL ADDEND
  35.     POP    BC    ; RESTORE REGS
  36.     POP    AF
  37.     RET
  38.  
  39. ;
  40. ;  RNDSEED -- ALLOW USER TO SPECIFY A SEED VALUE FOR THE RANDOM NUMBER GEN
  41. ;    SEED IS PASSED IN A; NO REGS AFFECTED
  42. ;
  43. RNDSEED:
  44.     PUSH    AF    ; SAVE REGS
  45.     PUSH    BC
  46.     JP    RNDID    ; SAVE SEED AND GENERATE ADDEND
  47.  
  48. ;
  49. ;  RANDOM NUMBER SEED VALUE
  50. ;
  51. SEED:
  52.     DS    1    ; 1 BYTE
  53. ADDEND:
  54.     DS    1    ; ADDEND
  55.  
  56. ;
  57. ;  RANDOM NUMBER GENERATOR
  58. ;    RANDOM NUMBER RETURNED IN A
  59. ;
  60. RND:
  61.     PUSH    HL    ; DON'T AFFECT HL
  62.     LD    HL,SEED    ; PT TO SEED
  63.     LD    A,(HL)    ; GET IT
  64.     RLCA        ; PLAY WITH IT
  65.     XOR    (HL)
  66.     RRCA
  67.     INC    HL    ; PT TO ADDEND
  68.     INC    (HL)    ; INCREMENT IT
  69.     ADD    A,(HL)    ; ADD IN ADDEND
  70.     JP    PE,SKIP
  71.     INC    (HL)    ; INCREMENT ADDEND AGAIN
  72. SKIP:
  73.     DEC    HL    ; PT TO SEED AGAIN
  74.     LD    (HL),A    ; SAVE NEW SEED
  75.     POP    HL    ; RESTORE HL
  76.     RET
  77.  
  78.     END
  79.