home *** CD-ROM | disk | FTP | other *** search
- s:
- lea Tabel,a1 ;dest.
- move.w #11,d4 ;numbers of values
- move.l $dff006,d0 ;start value
- bsr.s RandomSeed ;get first number
-
- loop_rnd2:
- moveq #$0f-3,d0 ;value intervall, = 0 ->F-3
- bsr.s Random ;get value
- addq #3,d0 ;add value + 3, new ranger 3->F
- move.b d0,(a1)+ ;place value into buffer (tabel)
- dbra d4,loop_rnd2 ;calculate next number !!
- rts ;return to your masterCode !!
-
-
- ********** RANDOM ROUTINE ** INPUT upper limit of RND (MAX $FFFF)
- ** Output: RND in range
- ** IN: D0
- ** OUT: D0
- **
-
- Random:
- movem.l d1-d7,-(sp)
- move.w d2,-(sp)
- move.w d0,d2
- beq.s ra01
- bsr.s longrnd
- clr.w d0
- swap d0
- divu d2,d0
- clr.w d0
- swap d0
- ra01: move.w (sp)+,d2
- movem.l (sp)+,d1-d7
- rts
-
- ********** RANDOM SEED ROUTINE
- ** IN: D0 = RND SEED
-
- RandomSeed:
- add.l d0,d1
- movem.l d0/d1,rnd
- longrnd:
- movem.l d2-d3,-(sp)
- movem.l rnd,d0/d1
- andi.b #$0e,d0
- ori.b #$20,d0
- move.l d0,d2
- move.l d1,d3
- add.l d2,d2
- addx.l d3,d3
- add.l d2,d0
- addx.l d3,d1
- swap d3
- swap d2
- move.w d2,d3
- clr.w d2
- add.l d2,d0
- addx.l d3,d1
- movem.l d0/d1,rnd
- move.l d1,d0
- movem.l (sp)+,d2-d3
- rts
-
- rnd: dcb.l 2,0
- even
-
- Tabel: blk.b 14,$ff
-