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




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/