This file describes the current state of the native port of Intuition.

V42:src/kickstart/intuition is a "port-in-progress" of Intuition V40
to SAS 6.  (V40:src/kickstart/intuition is still the Sun-built
version).

The compiler used is SAS 6.3, which still has some bugs.  In
particular, it doesn't handle the flying cast correctly, wherein an
IBox (which has WORD Left,Top,Width,Height) is cast to a point (WORD
Left,Top), using

		*((struct Point *) (A))

Hopefully, this is fixed in subsequent SAS compilers (a bug report was
submitted by Martin).  The prop.c file contains a kludge to fix this
particular bug.

--

All compilation errors have been removed, and the resulting
intuition.library actually works.  I've noticed (but not bothered to
study) some enforcer hits when CygnusEd 2.12 starts up under the new
Intuition.  I know of no other anomalies, except the one kludged in
prop.c as mentioned.

I've begun the process of prototyping.  I've created foo_protos.h
for every file foo.c.  The file CrossReference contains one line
for every function in Intuition.  The format is the function name,
followed by a tab, followed by the name of the file containing that
function (in round brackets), followed by the name(s) of other files
referencing that function.  Forget about regenerating this file.  I
don't have any kind of automatic tool -- I did it as a multi-step
half-manual half-automated process.

I've used the cross-reference to help generate the prototype files,
and identify functions that can be made static.  I've copied the
static prototypes into the files themselves.  Currently, C source
files only include their own protos.h file.  I have not begun to
include protos.h files to cover references in other source files.

NOTE:  The _protos.h files still include those functions which
are newly static.  I had wanted to keep the full set of function
prototypes a little bit longer, but the reason escapes me.  The
static declarations have to be removed from the _protos.h files
before they can be included by other C files.

---------------------------------------------------------------------------

Here is a pretty complete list of changes since V40.  Omitted are
most cases where a cast has been added or a comment cleaned up.

---------------------------------------------------------------------------
alert.c:
Declared Custom as volatile.  Removed unused pointer.

bhooks.c:
Added prototypes.

buttongclass.c:
Added prototypes.  Renamed SetSuperAttrs() to avoid name confict.

cghooks.h:
Corrected self-exclusion #define.

classes.c:
Deleted unused variable.

classes.h:
Corrected self-exclusion #define.

classusr.h:
Corrected self-exclusion #define.

coercion.c:
Added prototypes.

drawgadgets.c:
Added prototypes.

ezreq.c:
Added prototypes.

fillrectclass.c:
Added prototypes.

fonts.c:
Removed unused variables.

format.c:
Added prototypes.

frameiclass.c:
Added prototypes.

frbuttonclass.c:
Added prototypes.  Renamed SetSuperAttrs() to avoid name confict.

gadclass.c:
Added prototypes.  Fixed left-hand cast.  Include paths.

gadgetclass.h:
Corrected self-exclusion #define.

genv.c:
Added prototypes.

ggclass.c:
Added prototypes.  Fixed some casts.

hitgadgets.c:
Removed unused variable.

i.h:
Include paths.

ibase.h:
Corrected self-exclusion #define.  Includes preferences.h.

icclass.c:
Added prototypes.  

idcmp.c:
Added prototypes.

ih.c:
Added prototypes.

ihfront.c:
Added prototypes.

imageclass.c:
Added prototypes.  Fixed left-hand cast.

imageclass.h:
Corrected self-exclusion #define.

init.c:
Added prototypes.  Declared Custom as volatile.

intuinternal.h:
Set up fetchIBase() for SAS.  Corrected self-exclusion #define.

intuition.h:
Corrected self-exclusion #define.

intuitionbase.h:
Corrected self-exclusion #define.

intuitionface.asm:
Removed unneeded XREFs.

iprefs.c:
Added prototypes.

isdefault.c:
Removed extraneous semicolon.

ism.c:
Added prototypes.

isupport.c:
Declared Custom as volatile.  Fixed unclosed comment.

itexticlass.c:
Added prototypes.

iwork.asm:
Switched to long-format lib-init table.  Since we're going to
replace stubs with __asm entry points, we'll probably lose the
ability to keep all the entry points within +/-32K.

layout.c:
Added prototypes.

Makefile:
Now set for SAS-6.

menu.c:
Added prototypes.

misc.c:
Added prototypes.

modclass.c:
Added prototypes.

mouse.c:
Added prototypes.

newlook.c:
Added prototypes.

phooks.c:
Added prototypes.

pointer.c:
Added prototypes.

pools.c:
Fixed left-hand cast.

preferences.h:
Corrected self-exclusion #define.

prefs.c:
Added prototypes.  Added missing comma.

prop.c:
Added prototypes.  Kludge to fix SAS/6 bug.

propgadclass.c:
Added prototypes.  Renamed SetSuperAttrs() to avoid name confict.

pubclasses.c:
Just a cast.

pubscreen.c:
Added prototypes.  Casts.

rect.c:
Casts.

requester.c:
Added prototypes.

rootclass.c:
Added prototypes.  Casts.

screens.c:
Added prototypes.

screens.h:
Corrected self-exclusion #define.

scsupp.c:
Added prototypes.

sdmrtimeout.c:
Added prototypes.

sgadget.c:
Added prototypes.  Include paths.

sghooks.h:
Corrected self-exclusion #define.

shooks.c:
Added prototypes.

sidlewindow.c:
Added prototypes.

sinput.c:
Added prototypes.  Include paths.

size.c:
Added prototypes.

smenu.c:
Added prototypes.

snowindow.c:
Added prototypes.

srequester.c:
Added prototypes.

sscreendrag.c:
Added prototypes.

strgadclass.c:
Added prototypes.  Renamed SetSuperAttrs() to avoid name confict.

sverify.c:
Added prototypes.

varargs.c:
Include paths.  Renamed SetSuperAttrs() to avoid name confict.

vectorclass.c:
Added prototypes.

view.c:
Fixed bad modeSnoop() parameter declaration.  Declared Custom as volatile.

windows.c:
Added prototypes.

wtags.c:
Added prototypes. Include paths.

zoom.c:
Added prototypes.
