Listing of file='RANDOM.MAC;01' on disk='vmedia/asm_utility_routines-sideA-sector.ccvf'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; RANDOM - RANDOM NUMBER GENERATOR ; ; VALUES ON ENTRY: ; A = RANGE OF NUMBERS ; ; THE RANDOM NUMBER SEED IS PUBLIC TO ALLOW ; EXTERNAL INITIALISATION. ; ; RETURNS: ; A REG CONTAINS THE RESULTING NUMBER ; ; DESTROYS: ; A REG ; ENTRY RANDOM PUBLIC RANPTR RANDOM: PUSH B PUSH H MOV B,A ;MAX VALUE FOR RANDOM NUMBER RAND1: LHLD RANPTR ;LAST RANDOM SEED MVI C,8 RAND2: MOV A,H ;XOR BITS 3,12,14,15 RRC XRA H RRC RRC XRA H RRC XRA L RRC RRC RRC XRI 1 ANI 1 DAD H ADD L MOV L,A DCR C JNZ RAND2 SHLD RANPTR ;SAVE SEED MOV A,H ADD L MOV H,A ;SAVE GENERATOR MOV A,B ;LIMIT RAND3: MOV L,A ;SAVE LIMIT ADD B CMP B JNC RAND3 MOV A,H CMP L ;GREATER THAN LIMIT? JNC RAND1 ;YES, GENERATE ANOTHER ONE RAND4: CMP B JC RAND5 SUB B JMP RAND4 RAND5: POP H POP B RET RANPTR: DS 2 ;SEED FOR RANDOM NUMBERS END