home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Assembler / dse-src6.dms / in.adf / RND.S < prev    next >
Encoding:
Text File  |  1993-02-13  |  1.1 KB  |  69 lines

  1. s:
  2.     lea    Tabel,a1    ;dest.
  3.     move.w    #11,d4        ;numbers of values
  4.     move.l    $dff006,d0    ;start value
  5.     bsr.s    RandomSeed    ;get first number
  6.  
  7. loop_rnd2:
  8.     moveq    #$0f-3,d0    ;value intervall, = 0 ->F-3
  9.     bsr.s    Random        ;get value
  10.     addq    #3,d0        ;add value + 3, new ranger 3->F
  11.     move.b    d0,(a1)+    ;place value into buffer (tabel)
  12.     dbra    d4,loop_rnd2    ;calculate next number !!
  13.     rts            ;return to your masterCode !!
  14.  
  15.  
  16. ********** RANDOM ROUTINE ** INPUT upper limit of RND (MAX $FFFF)
  17. **    Output:    RND in range
  18. **    IN:    D0
  19. **    OUT:    D0
  20. **
  21.  
  22. Random:
  23.     movem.l    d1-d7,-(sp)
  24.     move.w    d2,-(sp)
  25.     move.w    d0,d2
  26.     beq.s    ra01
  27.     bsr.s    longrnd
  28.     clr.w    d0
  29.     swap    d0
  30.     divu    d2,d0
  31.     clr.w    d0
  32.     swap    d0
  33. ra01:    move.w    (sp)+,d2
  34.     movem.l    (sp)+,d1-d7
  35.     rts
  36.  
  37. ********** RANDOM SEED ROUTINE
  38. **    IN:    D0 = RND SEED
  39.  
  40. RandomSeed:
  41.     add.l    d0,d1
  42.     movem.l    d0/d1,rnd
  43. longrnd:
  44.     movem.l    d2-d3,-(sp)
  45.     movem.l    rnd,d0/d1
  46.     andi.b    #$0e,d0
  47.     ori.b    #$20,d0
  48.     move.l    d0,d2
  49.     move.l    d1,d3
  50.     add.l    d2,d2
  51.     addx.l    d3,d3
  52.     add.l    d2,d0
  53.     addx.l    d3,d1
  54.     swap    d3
  55.     swap    d2
  56.     move.w    d2,d3
  57.     clr.w    d2
  58.     add.l    d2,d0
  59.     addx.l    d3,d1
  60.     movem.l    d0/d1,rnd
  61.     move.l    d1,d0
  62.     movem.l    (sp)+,d2-d3
  63.     rts
  64.  
  65. rnd:    dcb.l    2,0
  66.     even
  67.  
  68. Tabel:    blk.b    14,$ff
  69.