*------------------------------- * * GETRAND * * Generate a somewhat random repeating sequence. I use * a typical linear congruential algorithm * I(n+1) = (I(n)*a + c) mod m * with m=65536, a=5, and c=13841 ($3611). c was chosen * to be a prime number near (1/2 - 1/6 sqrt(3))*m. * * Note that in general the higher bits are "more random" * than the lower bits, so for instance in this program * since only small integers (0..15, 0..39, etc.) are desired, * they should be taken from the high byte RANDOM+1, which * is returned in A. * GETRAND LDA RANDOM+1 STA TEMP1 LDA RANDOM ASL ROL TEMP1 ASL ROL TEMP1 * ASL * ROL TEMP1 * ASL * ROL TEMP1 CLC ADC RANDOM PHA LDA TEMP1 ADC RANDOM+1 STA RANDOM+1 PLA ADC #$11 STA RANDOM LDA RANDOM+1 ADC #$36 STA RANDOM+1 RTS