home *** CD-ROM | disk | FTP | other *** search
- *\
- * :ts=8
- * Yet Another random number generator. By Leo Schwab.
- * Based on an idea posted on the USENET (Thanks, Sam Dicker!)
- * For the Manx assembler.
- *
- * Calling convention:
- * short rnd (range);
- * short range;
- *
- * 8606.30
- */
-
- public _rnd
-
- _rnd lea rndseed,a0 Get address of seed
- move.w 4(sp),d1 Get range argument
- tst.w d1
- ble.s setseed Go reset seed
-
-
- move.l (a0),d0 Get seed
- ADD.L D0,D0
- BHI.S over
- EORI.L #$1D872B41,D0
- over
- move.l d0,(a0) Save new seed
- andi.l #$ffff,d0 Coerce into word
- divu d1,d0 Divide by range
- swap d0 and get remainder (modulus)
- rts
-
- setseed neg.w d1 Probably don't need this
- move.l d1,(a0)
- rts
-
- dseg
- rndseed dc.l 0
- cseg
-