#IDCMP
This message turned up in search, but its forum couldn’t be identified from the original transcript, so it may not be linked into its thread.
I guess you are right, I'm mistaken about btst. I've compiled Icon 6.0 and am
working on getting it running now. Our C compiler compiles something like
x & D_VAR
(which you see a lot in Icon, testing for a variable descriptor ) as
move.l _x,d0
btst $1f,d0
bne <somewhere>
where D_VAR is #define'd as 0x80000000
Now lattice will do a btst 7. I have tried everything I can think of to get
it to generate code that will test the 31'st bit. I've used variables
instead of the constant, I can't figure this out.
Somebody should tell lattice anyway, if they can't do it right, they could at
least have the compiler do something like loading x into a reg and ANDing it
with 0x80000000.
This makes me very mad, since as you know well, there are descriptors all
over the place in Icon made up by anding and oring constants together
declared in the header files.
Like the Procedure descriptor which is supposed to be 0x80000000 | 0x10000000
| 0x00000006 which should be 0x90000006. If all that above was #define'd as
some symbol, say D_PROC and I do an mainp=D_PROC I would expect mainp to be
assigned 0x90000006 and on the wicat it is.
On lattice on amiga it gets some gibberish like 0x00000406 or some such junk.
I mean come on! How does manx do with that stuff in version 5.9 did you
ever check the code to make sure those masks were being generated properly?