home *** CD-ROM | disk | FTP | other *** search
- ;
- ; SYSLIB Module Name: SRAND
- ; Author: Richard Conn
- ; SYSLIB Version Number: 2.0
- ; Module Version Number: 1.0
- ; Module Entry Points:
- ; RND RNDINIT RNDSEED
- ; Module External References:
- ; PRINT CONDIN
- ;
- ;*
- ;* EXTERNALS
- ;*
- EXT PRINT
- EXT CONDIN
-
- ;*
- ;* RNDINIT -- INITIALIZE RANDOM NUMBER GENERATOR
- ;* THIS ROUTINE PROMPTS THE USER FOR A KEYPRESS, AND THEN SETS THE
- ;* SEE VALUE FOR THE RANDOM NUMBER GENERATOR (8-BIT)
- ;* NO INPUT OR OUTPUT PARAMETERS
- ;* GENERALLY, IT IS LEFT TO THE USER TO PRINT A MESSAGE BEFORE THIS ROUTINE
- ;* IS CALLED
- ;*
- RNDINIT::
- PUSH PSW ; SAVE REGS
- PUSH B
- MVI B,0 ; START AT 0
- RNDIL:
- INR B ; INCREMENT SEED
- CALL CONDIN ; INPUT?
- JZ RNDIL
- MOV A,B ; GET SEED
- RNDID:
- STA SEED ; SAVE IT FOR LATER
- CALL RND ; GENERATE A RANDOM NUMBER
- STA ADDEND ; SAVE A INITIAL ADDEND
- POP B ; RESTORE REGS
- POP PSW
- RET
-
- ;*
- ;* RNDSEED -- ALLOW USER TO SPECIFY A SEED VALUE FOR THE RANDOM NUMBER GEN
- ;* SEED IS PASSED IN A; NO REGS AFFECTED
- ;*
- RNDSEED::
- PUSH PSW ; SAVE REGS
- PUSH B
- JMP RNDID ; SAVE SEED AND GENERATE ADDEND
-
- ;
- ; RANDOM NUMBER SEED VALUE
- ;
- SEED:
- DS 1 ; 1 BYTE
- ADDEND:
- DS 1 ; ADDEND
-
- ;*
- ;* RANDOM NUMBER GENERATOR
- ;* RANDOM NUMBER RETURNED IN A
- ;*
- RND::
- PUSH H ; DON'T AFFECT HL
- LXI H,SEED ; PT TO SEED
- MOV A,M ; GET IT
- RLC ; PLAY WITH IT
- XRA M
- RRC
- INX H ; PT TO ADDEND
- INR M ; INCREMENT IT
- ADD M ; ADD IN ADDEND
- JPE SKIP
- INR M ; INCREMENT ADDEND AGAIN
- SKIP:
- DCX H ; PT TO SEED AGAIN
- MOV M,A ; SAVE NEW SEED
- POP H ; RESTORE HL
- RET
-
- END
-