1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-28 15:31:18 +00:00

Update comments in rand.s

This commit is contained in:
LRFLEW 2019-10-09 01:42:50 -05:00 committed by Oliver Schmidt
parent 3994fee595
commit 216105f6df

View File

@ -3,6 +3,7 @@
; ;
; Written and donated by Sidney Cadot - sidney@ch.twi.tudelft.nl ; Written and donated by Sidney Cadot - sidney@ch.twi.tudelft.nl
; 2016-11-07, modified by Brad Smith ; 2016-11-07, modified by Brad Smith
; 2019-10-07, modified by Lewis "LRFLEW" Fox
; ;
; May be distributed with the cc65 runtime using the same license. ; May be distributed with the cc65 runtime using the same license.
; ;
@ -22,6 +23,17 @@
; The best 8 bits, 24-31 are returned in the ; The best 8 bits, 24-31 are returned in the
; low byte A to provide the best entropy in the ; low byte A to provide the best entropy in the
; most commonly used part of the return value. ; most commonly used part of the return value.
;
; Uses the following LCG values for ax + c (mod m)
; a = $01010101
; c = $B3B3B3B3
; m = $100000000 (32-bit truncation)
;
; The multiplier was carefully chosen such that it can
; be computed with 3 adc instructions, and the increment
; was chosen to have the same value in each byte to allow
; the addition to be performed in conjunction with the
; multiplication, adding only 1 additional adc instruction.
; ;
.export _rand, _srand .export _rand, _srand
@ -35,10 +47,10 @@ rand: .dword 1
.code .code
_rand: clc _rand: clc
lda rand+0 ; SEED += $B3 lda rand+0
adc #$B3 adc #$B3
sta rand+0 sta rand+0
adc rand+1 ; SEED *= $01010101 adc rand+1
sta rand+1 sta rand+1
adc rand+2 adc rand+2
sta rand+2 sta rand+2