Path: utzoo!attcan!uunet!amdahl!ames!killer!elg From: elg@killer.Dallas.TX.US (Eric Green) Newsgroups: comp.sys.amiga.tech Subject: Re: New RKM:AutoDocs & Includes MAJOR problem! Message-ID: <7500@killer.Dallas.TX.US> Date: 11 Mar 89 03:51:44 GMT References: <1467@percival.UUCP> Organization: The Unix(R) Connection, Dallas, Texas Lines: 22 in article <1467@percival.UUCP>, baer@percival.UUCP (Ken Baer) says: > pleased with the fact that the parameter types were actually listed with > the function descriptions. HOWEVER, to my dismay, I discovered that the > type sizes are WRONG! Those of us who use Manx C, know that when you > pass an integer to an Amiga system function (like Draw()), you have to > cast it to LONG (or it must me LONG in the first place). But, in the new > RKM, these variables are listed as SHORT!! Not as LONG! I guarentee Note that this is a problem with Manx's "wrapper" functions, not with the Autodocs etc. The Rom Kernel was designed to be accessed via assembler. When it says a parameter is "SHORT", what it is really saying is, "OK, load the parameter using an ordinary 16-bit MOV into register ". Manx calls the Rom Kernel via "stub code" written in assembly, which translates from Manx's "on-the-stack" form of parameter passing to Exec's "In-the-registers" form of parameter passing. Manx does it wrong in a number of places, depending on what version of the compiler you have. -- | // Eric Lee Green P.O. Box 92191, Lafayette, LA 70509 | | // ..!{ames,decwrl,mit-eddie,osu-cis}!killer!elg (318)989-9849 | | \X/