mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-04 20:06:09 +00:00
20 lines
466 B
C
20 lines
466 B
C
|
// http://codebase64.org/doku.php?id=base:small_fast_8-bit_prng
|
||
|
int random_8(void) {
|
||
|
|
||
|
static int seed=0x1f;
|
||
|
static int newseed;
|
||
|
|
||
|
newseed=seed; // lda seed
|
||
|
if (newseed==0) goto doEor; // beq doEor
|
||
|
newseed<<=1; // asl
|
||
|
if (newseed==0) goto noEor; //beq noEor
|
||
|
// if the input was $80, skip the EOR
|
||
|
if (!(newseed&0x100)) goto noEor; // bcc noEor
|
||
|
doEor:
|
||
|
newseed^=0x1d; // eor #$1d
|
||
|
noEor:
|
||
|
seed=(newseed&0xff); // sta seed
|
||
|
return seed;
|
||
|
}
|
||
|
|