Thanks for your feedback...
I updated the script, see:
https://gist.github.com/jedie/22dba94f5 ... /revisions
Changed MP to MS and now $4F, $51 and $53 moved via X
The result is the same
JeeK wrote:$83E0 seem to be to EXP and most significant mantissa part representing 0.111*2^3 = 7, isn't it? I suspect the routine was called with D=7
No, i called it with 2, you see it in the first line, here:
https://gist.github.com/jedie/4c884924d ... df4770be98
Code: Select all
4000| fc1052 LDD $1052 cc=a0 a=00 b=02 dp=00 x=4000 y=890b u=0000 s=7f21
D was set to $0002
That seems to be correct, in my Emulation, with the test value 2 is the same result:
Code: Select all
Memory dump from $004f to $0054:
$004f: $82 (dez: 130) | $4f: *PV FLOATING POINT ACCUMULATOR #0 FPA0 EXPONENT
$0050: $80 (dez: 128) | $50: *PV FLOAT.ACCU #0 FPA0 MANTISSA MS Most Significant Byte
$0051: $00 (dez: 0) | $51: *PV FLOAT.ACCU #0 FPA0 MANTISSA NMS Next Most Significant Byte
$0052: $00 (dez: 0) | $52: *PV FLOAT.ACCU #0 FPA0 MANTISSA NLS Next Least Significant Byte
$0053: $00 (dez: 0) | $53: *PV FLOAT.ACCU #0 FPA0 MANTISSA LS Least Significant Byte
$0054: $00 (dez: 0) | $54: *PV FLOATING POINT ACCUMULATOR #0 FPA0 SIGN
Float value was: 2
exponent......: dez.: 2 hex: $02
exponent byte.: dez.: 130 hex: $82
mantissa value: dez.: 0.5
mantissa bytes: dez.: [128, 0, 0, 0] hex: $80, $00, $00, $00
matissa-sign..: hex: $00
binary........: hex: $82, $80, $00, $00, $00, $00
exponent | mantissa | mantissa-sign
10000010 10000000 00000000 00000000 00000000 00000000
Note: The "Memory dump" is the result of the Emulation via Simple6809 ROM, witch is the same as in Xroar with D32 ROM.
The Info unter "Float value was: 255" is my own Python Implementation.
The Binary is both: $82, $80, $00, $00, $00, $00
There the new trace with 7 as test value:
https://gist.github.com/jedie/4c884924d ... 8f68b91f7d
Interesting lines:
Code: Select all
4000| fc1052 LDD $1052 cc=a0 a=00 b=07 dp=00 x=4000 y=890b u=0000 s=7f21
...
4006| 9e4f LDX <$4f cc=88 a=00 b=0d dp=00 x=83e0 y=890b u=0000 s=7f21 | $4006: UNKNOWN
4008| bf704f STX $704f cc=88 a=00 b=0d dp=00 x=83e0 y=890b u=0000 s=7f21 | $4008: UNKNOWN
400b| 9e51 LDX <$51 cc=84 a=00 b=0d dp=00 x=0000 y=890b u=0000 s=7f21 | $400b: UNKNOWN
400d| bf7051 STX $7051 cc=84 a=00 b=0d dp=00 x=0000 y=890b u=0000 s=7f21 | $400d: UNKNOWN
4010| 9e53 LDX <$53 cc=84 a=00 b=0d dp=00 x=0000 y=890b u=0000 s=7f21 | $4010: UNKNOWN
4012| bf7053 STX $7053 cc=84 a=00 b=0d dp=00 x=0000 y=890b u=0000 s=7f21 | $4012: UNKNOWN
...
So it's: $83, $e0, $00, $00, $00, $00
That's also the same as in my Emulation:
Code: Select all
Memory dump from $004f to $0054:
$004f: $83 (dez: 131) | $4f: *PV FLOATING POINT ACCUMULATOR #0 FPA0 EXPONENT
$0050: $e0 (dez: 224) | $50: *PV FLOAT.ACCU #0 FPA0 MANTISSA MS Most Significant Byte
$0051: $00 (dez: 0) | $51: *PV FLOAT.ACCU #0 FPA0 MANTISSA NMS Next Most Significant Byte
$0052: $00 (dez: 0) | $52: *PV FLOAT.ACCU #0 FPA0 MANTISSA NLS Next Least Significant Byte
$0053: $00 (dez: 0) | $53: *PV FLOAT.ACCU #0 FPA0 MANTISSA LS Least Significant Byte
$0054: $00 (dez: 0) | $54: *PV FLOATING POINT ACCUMULATOR #0 FPA0 SIGN
Float value was: 7
exponent......: dez.: 3 hex: $03
exponent byte.: dez.: 131 hex: $83
mantissa value: dez.: 0.875
mantissa bytes: dez.: [224, 0, 0, 0] hex: $e0, $00, $00, $00
matissa-sign..: hex: $00
binary........: hex: $83, $e0, $00, $00, $00, $00
exponent | mantissa | mantissa-sign
10000011 11100000 00000000 00000000 00000000 00000000
One of the differed result is 129 (in hex: $81):
XRoar:
Code: Select all
4000| fc1052 LDD $1052 cc=a0 a=00 b=81 dp=00 x=4000 y=890b u=0000 s=7f21
...
4006| 9e4f LDX <$4f cc=88 a=00 b=08 dp=00 x=8881 y=890b u=0000 s=7f21 | $4006: UNKNOWN
4008| bf704f STX $704f cc=88 a=00 b=08 dp=00 x=8881 y=890b u=0000 s=7f21 | $4008: UNKNOWN
400b| 9e51 LDX <$51 cc=84 a=00 b=08 dp=00 x=0000 y=890b u=0000 s=7f21 | $400b: UNKNOWN
400d| bf7051 STX $7051 cc=84 a=00 b=08 dp=00 x=0000 y=890b u=0000 s=7f21 | $400d: UNKNOWN
4010| 9e53 LDX <$53 cc=84 a=00 b=08 dp=00 x=0000 y=890b u=0000 s=7f21 | $4010: UNKNOWN
4012| bf7053 STX $7053 cc=84 a=00 b=08 dp=00 x=0000 y=890b u=0000 s=7f21 | $4012: UNKNOWN
4015| 39 RTS cc=84 a=00 b=08 dp=00 x=0000 y=890b u=0000 s=7f23 | $4015: UNKNOWN
In my Emulation:
Code: Select all
Memory dump from $004f to $0054:
$004f: $88 (dez: 136) | $4f: *PV FLOATING POINT ACCUMULATOR #0 FPA0 EXPONENT
$0050: $81 (dez: 129) | $50: *PV FLOAT.ACCU #0 FPA0 MANTISSA MS Most Significant Byte
$0051: $00 (dez: 0) | $51: *PV FLOAT.ACCU #0 FPA0 MANTISSA NMS Next Most Significant Byte
$0052: $00 (dez: 0) | $52: *PV FLOAT.ACCU #0 FPA0 MANTISSA NLS Next Least Significant Byte
$0053: $00 (dez: 0) | $53: *PV FLOAT.ACCU #0 FPA0 MANTISSA LS Least Significant Byte
$0054: $00 (dez: 0) | $54: *PV FLOATING POINT ACCUMULATOR #0 FPA0 SIGN
Float value was: 129
exponent......: dez.: 8 hex: $08
exponent byte.: dez.: 136 hex: $88
mantissa value: dez.: 0.50390625
mantissa bytes: dez.: [128, 128, 0, 0] hex: $80, $80, $00, $00
matissa-sign..: hex: $00
binary........: hex: $88, $80, $80, $00, $00, $00
exponent | mantissa | mantissa-sign
10001000 10000000 10000000 00000000 00000000 00000000
So:
Xroar D32 == Own Emulation == $88 $81 $00 $00 $00 $00 $00
Python Version is: $88, $8
0, $
80, $00, $00, $00
Also a different result with 255 ($00ff):
Xroar:
Code: Select all
4000| fc1052 LDD $1052 cc=a0 a=00 b=ff dp=00 x=4000 y=890b u=0000 s=7f21
...
4006| 9e4f LDX <$4f cc=88 a=00 b=08 dp=00 x=88ff y=890b u=0000 s=7f21 | $4006: UNKNOWN
4008| bf704f STX $704f cc=88 a=00 b=08 dp=00 x=88ff y=890b u=0000 s=7f21 | $4008: UNKNOWN
400b| 9e51 LDX <$51 cc=84 a=00 b=08 dp=00 x=0000 y=890b u=0000 s=7f21 | $400b: UNKNOWN
400d| bf7051 STX $7051 cc=84 a=00 b=08 dp=00 x=0000 y=890b u=0000 s=7f21 | $400d: UNKNOWN
4010| 9e53 LDX <$53 cc=84 a=00 b=08 dp=00 x=0000 y=890b u=0000 s=7f21 | $4010: UNKNOWN
4012| bf7053 STX $7053 cc=84 a=00 b=08 dp=00 x=0000 y=890b u=0000 s=7f21 | $4012: UNKNOWN
In my Emulation:
Code: Select all
Memory dump from $004f to $0054:
$004f: $88 (dez: 136) | $4f: *PV FLOATING POINT ACCUMULATOR #0 FPA0 EXPONENT
$0050: $ff (dez: 255) | $50: *PV FLOAT.ACCU #0 FPA0 MANTISSA MS Most Significant Byte
$0051: $00 (dez: 0) | $51: *PV FLOAT.ACCU #0 FPA0 MANTISSA NMS Next Most Significant Byte
$0052: $00 (dez: 0) | $52: *PV FLOAT.ACCU #0 FPA0 MANTISSA NLS Next Least Significant Byte
$0053: $00 (dez: 0) | $53: *PV FLOAT.ACCU #0 FPA0 MANTISSA LS Least Significant Byte
$0054: $00 (dez: 0) | $54: *PV FLOATING POINT ACCUMULATOR #0 FPA0 SIGN
Float value was: 255
exponent......: dez.: 8 hex: $08
exponent byte.: dez.: 136 hex: $88
mantissa value: dez.: 0.99609375
mantissa bytes: dez.: [254, 128, 0, 0] hex: $fe, $80, $00, $00
matissa-sign..: hex: $00
binary........: hex: $88, $fe, $80, $00, $00, $00
exponent | mantissa | mantissa-sign
10001000 11111110 10000000 00000000 00000000 00000000
Xroar==Emulation== $88, $ff, $00, $00, $00, $00
Python Implementation: $88, $f
e, $
80, $00, $00, $00
The good news for me: My Emulation has the same values (in this case)...
Bad news: My FP-Implementation
https://github.com/jedie/DragonPy/blob/ ... g_point.py is wrong.
And bad: The BASIC Test program is still buggy ;(