Re: [hatari-devel] Hatari WinUAE vs oldUAE information, and MiNT with MMU? |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
Le 09/01/2021 à 16:58, Eero Tamminen a écrit :
Nicolas:
* There are still 2 demos that work only with
oldAUE core.
Fit's "Hex Pistols" and "Stercus Accidit" Falcon
demos bomb at startup regardless of what Hatari
WinUAE CPU core options are used, although they
work fine with oldUAE CPU core, both with
"--compatible" option enabled and disabled,
and with TOS4 and EmuTOS.
Could you check that it's not some long term
regression, but e.g. due to cycle-accuracy
reasons?
Hi
this is not a regression, nor some cycle accuracy issue, but some FPU
changes.
In old UAE, all FPU opcodes were more or less allowed for all fpu model.
But in recent WinUae, toni fixed a lot of them to give the correct
exception when not implemented on some fpu.
For hex pistol, programs require a 68040 or 68060 with fpu set to
internal, not 6888x (as FPU is always internal in 68040/60, maybe we
should forbid using anything else and always force fpu 'internal' for
these 2 cpu)
if using 6888x, you get this error :
cpu video_cyc= 9191 999@ 8 : 000232F6 f200 0144
FDMOVE.X FP0,FP2 (68040+)
cpu exception 11 vector 2c currpc 232f6 buspc 232f6 newpc e00fb6
fault_e3 0 op_e3 0 addr_e3 0 SR 300
-> FDMOVE is 68040/60 only
when using 68040+fpu internal, we get this error later (using log-level
debug) :
DEBUG: FPU unimplemented instruction: OP=F200-0903
SRC=00000000-00000000-00000000 EA=00000000 PC=00022BE6
DEBUG: FPU UNIMPLEMENTED INSTRUCTION/FPU DISABLED EXCEPTION PC=00022bea
f200 0903 is fintrz.x fp2
which doesn't exist for 68040 according to WinUAE's source, Motorola's
doc tells it requires software emulation
So, program crash with illegal instruction in 68040 mode
when using 68060+fpu internal; we get this error :
DEBUG: 68060 unimplemented opcode 4C3A, PC=001d3a96
$001d3a96 : 4c3a 0405 1018 mulu.l $1d4ab2(pc),d0,d5
but in that case the program seems to continue anyway, it then waits for
some MFP events, I didn't look what exactly so far.
So program seems to only run with 68060+fpu internal, compatibility
notes should be updated.
stercus :
similar fpu issues, except this time the demo uses the FCOS opcode,
which doesn't exist on 68040/60
DEBUG: CPU=68040, FPU=68040 (host 64b), MMU=0, JIT=0.
DEBUG: FPU unimplemented instruction: OP=F200-110E
SRC=3FFA0000-E5C8F9DD-DD0A0000 EA=00000000 PC=00021C2E
DEBUG: FPU UNIMPLEMENTED INSTRUCTION/FPU DISABLED EXCEPTION PC=00021c32
$00021c32 : f200 131d fcos.x fp4,fp6
DEBUG: CPU=68060, FPU=68060 (host 64b), MMU=0, JIT=0.
DEBUG: FPU unimplemented instruction: OP=F200-110E
SRC=00000000-00000000-00000000 EA=00000000 PC=00021C2E
DEBUG: FPU UNIMPLEMENTED INSTRUCTION/FPU DISABLED EXCEPTION PC=00021c32
$00021c32 : f200 131d fcos.x fp4,fp6
So, demo requires a 68030 + 68882 I guess, it won't work with 68040/60.
but it seems to fail anyway, there might be other issues later, maybe
not fpu related.
Nicolas