CompuServe Messages

#IDCMP

#: 28190 S7/ProgrammingForum unknown
    28-Jul-86 10:59:04
Sb: #28125-#IDCMP
Fm: GARY SARFF 70167,2216
To: Scott Ballantyne 70066,603

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?