Advertisement
Zeda

lcg16777213 (eZ80)

Apr 27th, 2015
628
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. lcg16777213:
  2. ;;Expects ADL mode
  3. ;;x=11875x+137 mod (2^24-3)
  4. ;;Returns HL
  5. #IF smc == 0
  6.     ld hl,(seed24)
  7. #ELSE
  8. seed24 = $+1
  9.     ld hl,10101
  10. #ENDIF
  11. ;multiply seed by 95, first
  12.     xor a \ ld d,a
  13.     add hl,hl \ rla
  14.     add hl,hl \ rla
  15.     add hl,hl \ rla
  16.     add hl,hl \ rla
  17.     add hl,hl \ rla
  18.     ld e,a
  19.     push hl
  20.     add hl,hl \ rla
  21.     add hl,hl \ rla
  22.     ld bc,(seed24)
  23.     sbc hl,bc
  24.     sbc a,d
  25.     or a
  26.     pop bc
  27.     sbc hl,bc
  28.     sbc a,e
  29. ;AHL * 125
  30. ;=AHL*128-AHL*2-AHL
  31.     ld e,a
  32.     push de \ push hl
  33.     add hl,hl \ rla
  34.     ld e,a
  35.     push de \ push hl
  36.     add hl,hl \ rla \ rl d
  37.     add hl,hl \ rla \ rl d
  38.     add hl,hl \ rla \ rl d
  39.     add hl,hl \ rla \ rl d
  40.     add hl,hl \ rla \ rl d
  41.     add hl,hl \ rla \ rl d
  42.     ld e,a
  43.     pop bc \ sbc hl,bc \ ex de,hl \ pop bc \ sbc hl,bc \ ex de,hl
  44.     pop bc \ sbc hl,bc \ ex de,hl \ pop bc \ sbc hl,bc \ ex de,hl
  45. ;add 37
  46.     ld c,137
  47.     add hl,bc
  48.     ld c,b
  49.     ex de,hl
  50.     adc hl,de
  51.     ex de,hl
  52. ;mod 2^16-3
  53.     ex de,hl
  54.     ld b,h
  55.     ld c,l
  56.     add hl,hl
  57.     add hl,bc
  58.     ex de,hl
  59.     sbc hl,de \ jr nc,$+5 \ dec hl \ dec hl \ dec hl
  60.     ld (seed24),hl
  61.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement