If anyone can shed some light on this one, I'd be much obliged:
Here's the disassembly from CW IDE:
// Check that we have the correct ROMS.
suba.l a2,a2
error = RomVersionCompatible( 0x02000000,
inLaunchFlags );
move.w d6,-(a7)
move.l #33554432,-(a7)
pea *+16 ; 0x00000034
pea *+6 ; 0x0000002e
addi.l RomVersionCompatible__FUlUs,(a7)
rts
move.l d0,d3
if ( error == sysErrRomIncompatible ) { goto
ErrorExit; }
Here's the same disassembly from the Debugger targeting POSE/Mac:
// Check that we have the correct ROMS.
error = RomVersionCompatible( 0x02000000,
inLaunchFlags );
1006F8DE: 3F06 move.w d6,-(sp)
1006F8E0: 2F3C02000000 move.l #33554432,-(sp)
1006F8E6: 600A bra.s *+12 ; 0x1006f8f2
1006F8E8: 2000 move.l d0,d0
1006F8EA: 2000 move.l d0,d0
1006F8EC: 2000 move.l d0,d0
1006F8EE: 2000 move.l d0,d0
1006F8F0: 2000 move.l d0,d0
1006F8F2: 4EADFBC8 jsr -1080(a5)
1006F8F6: 2600 move.l d0,d3
if ( error == sysErrRomIncompatible ) { goto
ErrorExit; }
1006F8F8: 0C830000050C cmpi.l #1292,d3
1006F8FE: 5C4F addq.w #6,sp
1006F900: 67000134 beq.w *+310 ; 0x1006fa36
Now, someone could probably explaing to me why the POSE code is the way it
is and I'd be happy.
BUT, The code does not work. the following line takes the code into lala
land:
1006F8F2: 4EADFBC8 jsr -1080(a5)
Its as if the jump table is getting messed up. If I move that segment of
code that holds RomVersionCompatible() nearer to the caller, it works.
I've got Smart Code model on and Far everything. It doesn't seem that the
compiler/linker are doing the correct thing.
Anyone have a clue as to what is happening?
Douglas Corarito
mailto:[EMAIL PROTECTED]
http://www.infoequipt.com
INFOequipt
P.O. Box 299
Rowe, MA 01367
(413) 339-0120
FAX: (413) 339-4902