[hatari-devel] Perhaps this evocate something to you...
Laurent Sallafranque
laurent.sallafranque at free.fr
Wed Jan 19 23:37:06 CET 2011
A good candidate for testing 16Mhz vs 32 Mhz is Watership.
It loads quickly and bugs immediately at 16 Mhz (but runs at 32Mhz).
I've taken 2 CPU traces : one at 16 Mzh and one at 32 Mhz and I've made
a diff of the 2 traces.
Here is the result :
The 2 programs are running the first 3196 instructions the same way.
Here are the latest instructions ran by both tests :
...
0002E226 4298 CLR.L (A0)+
0002E228 51c9 fffc DBF .W D1,#$fffc == $0002E226 (F)
0002E226 4298 CLR.L (A0)+
0002E228 51c9 fffc DBF .W D1,#$fffc == $0002E226 (F)
0002E226 4298 CLR.L (A0)+
0002E228 51c9 fffc DBF .W D1,#$fffc == $0002E226 (F)
0002E226 4298 CLR.L (A0)+
At line 3197, the 32 Mhz test continues to run the same 2 instructions
as above.
But the 16 Mhz test does :
00E03C50 52b9 0000 04ba ADD.L #$00000001,$000004ba
00E03C56 e7f9 0000 11ba ROLW.W $000011ba
00E03C5C 6a48 BPL.B #$00000048 == $00E03CA6 (F)
00E03C5E 48e7 fffe MOVEM.L D0-D7/A0-A6,-(A7)
00E03C62 614a BSR.B #$0000004a == $00E03CAE
00E03CAE 48e7 c080 MOVEM.L D0-D1/A0,-(A7)
00E03CB2 2038 11bc MOVE.L $000011bc,D0
00E03CB6 677a BEQ.B #$0000007a == $00E03D32 (T)
00E03D32 4cdf 0103 MOVEM.L (A7)+,D0-D1/A0
00E03D36 4e75 RTS.L
00E03C64 0838 0001 0484 BTST.B #$0001,$00000484
00E03C6A 672a BEQ.B #$0000002a == $00E03C96 (F)
00E03C6C 4a38 11b1 TST.B $000011b1
00E03C70 6724 BEQ.B #$00000024 == $00E03C96 (T)
00E03C96 3f38 0442 MOVE.W $00000442,-(A7)
00E03C9A 2078 0400 MOVEA.L $00000400,A0
...
At line 4653, the 32 Mhz test does :
0002E228 51c9 fffc DBF .W D1,#$fffc == $0002E226 (F)
00E03C50 52b9 0000 04ba ADD.L #$00000001,$000004ba
00E03C56 e7f9 0000 11ba ROLW.W $000011ba
00E03C5C 6a48 BPL.B #$00000048 == $00E03CA6 (T)
00E03CA6 11fc 00df fa11 MOVE.B #$df,$fffffa11
00E03CAC 4e73 RTE.L
0002E226 4298 CLR.L (A0)+
0002E228 51c9 fffc DBF .W D1,#$fffc == $0002E226 (F)
0002E226 4298 CLR.L (A0)+
0002E228 51c9 fffc DBF .W D1,#$fffc == $0002E226 (F)
0002E226 4298 CLR.L (A0)+
0002E228 51c9 fffc DBF .W D1,#$fffc == $0002E226 (F)
Both tests are jumping to address $E03C50, but not after the same amount
of instructions.
The test after the first 3 instructions after the "interrupt" is TRUE
for the 32 Mzh test, but is false for the 16 Mhz test.
The 32 Mhz test continues to CLR / DBF whereas the 16 Mhz test goes into
completely different code.
Does this mean something to you ?
Regards
Laurent
More information about the hatari-devel
mailing list