On Samstag 20 September 2008, Atom Smasher wrote:
> assembler?!?! i should have known.... and i've always considered C
> a low level language...
In C:
((m ? m : -m) << 1) + 43;
Better? :-)
> despite the verbose comments (is all of the code commented that
> well?) i can't follow it. can you give a brief explanation?
It is somwthing that looks like a LFSR, but isn't (the feedback is
actually missing). When I find some time I'll simulate to see what
the cycle length is for different seed values.
> On Thu, 18 Sep 2008, korgpolyex800 wrote:
> > Here's my pseudo random number generator.
> >
> > It is by no means very random.
> >
> > ; my pseudo random number generator - used for the LFO randomiser
> > ; returns a random number in A
> >
> > RANDOMIZE:pushh ; save HL
> > lxih, M_RANDOM ; point at the previous value (seed)
> > mova, m ; put the seed value into A
> > cpi0 ; check for seed equals zero
> > jnzRANDOMIZEA ; if seed is zero jump to randomizea
> > cma ; compliment A
> > movm, a ; put A back into seed
This line is redundant because you save the seed again later on.
> > RANDOMIZEA:rlc ; rotate left through carry
> > adi43 ; add 43 offset
> > movm, a ; save in seed
> > poph ; load HL
> > ret ; return with pseudo random in A
> >
> > I would be more than happy for you to suggest something better as
> > long as it doesn't add any CPU cycles. :-)
Achim.
--
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk]>+
Factory and User Sound Singles for Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#WaldorfSounds