commit fdddeb6a96fcbe55d05ba6e1eef41a8ec5c18d32
parent 033b424031b01c59fe59052112cd7228c27485f0
Author: Alexander Burger <abu@software-lab.de>
Date: Fri, 22 Apr 2011 15:55:34 +0200
Handle 'Seed' in registers
Diffstat:
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/src64/big.l b/src64/big.l
@@ -1,4 +1,4 @@
-# 03mar11abu
+# 22apr11abu
# (c) Software Lab. Alexander Burger
### Destructive primitives ###
@@ -2964,7 +2964,10 @@
mul E # times 'Seed'
add D 1 # plus 1
ld (Seed) D # Save
- ld E (Seed 4) # Get high halfword
+ shl C 32 # Get middle 64 bits
+ shr A 32
+ or A C
+ ld E A
off E 7 # Keep sign
or E CNT # Make short number
ret
@@ -2981,9 +2984,12 @@
ld (Seed) D # Save
ld E (Y)
eval # Eval first arg
- cmp E Nil # Any
+ cmp E Nil # Any?
if eq # No
- ld E (Seed 4) # Get high halfword
+ shl C 32 # Get middle 64 bits
+ shr A 32
+ or A C
+ ld E A
off E 7 # Keep sign
or E CNT # Make short number
pop Y
@@ -3007,7 +3013,9 @@
call evCntXY_FE # Get cnt2
inc E # Seed % (cnt2 + 1 - cnt1) + cnt1
sub E (S)
- ld A (Seed 4) # Get high halfword
+ shl C 32 # Get middle 64 bits
+ shr A 32
+ or A C
ld C 0
div E # Modulus in C
pop E # + cnt1