mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-09-10 08:54:51 +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;
|
|
}
|
|
|