This archive contains typed modules created from the V40 Amiga includes.
They differ from the standard modules in that they enable multiple
dereferencing of system objects without requiring repeated "::<type>".
For instance, to access the signal bit of a window's message port you can
now type:
win.userport.sigbit and win.rport.layer.scroll_x
instead of:
win.userport::mp.sigbit and win.rport::rastport.layer::layer.scroll_x
(Note: You are still required to include the module for any object
referred to in this way.) A bonus is that the sources show the dependencies
of the modules. For instance, 'graphics/layers' depends on 'exec/lists',
'exec/semaphores' and 'graphics/clip'. This is a short list to search for
the definition of 'layer' (which is in 'graphics/clip', quite surprisingly).
Again, the names used conform to the standard modules (where possible) and
these are based on the Assembly includes. This means that you still need to
be aware of the differences in names from the C includes.
A number of useful (standard) macros have been added, e.g., ITEMNUM() from
'intuition/intuition'. To use these you must specify "OPT PREPROCESS" in
your source file.
The library modules for all of the V40 system libraries are included.
Note that this *includes* those for the built-in libraries: 'dos', 'exec',
'graphics' and 'intuition'. This is a stop-gap feature since EC v3.1a does
not contain any V40 function calls (but v3.2a probably will). Use these
four modules at your own risk! (They seem to behave correctly...)
Some of the problems highlighted in the previous (V39) release have been
solved by manipulation of the module files. This means that, once again,
you *CANNOT* recreate the modules from the sources. The sources are purely
for reference. The problems solved are: unions and misaligned elements.
There are three badly aligned elements in the standard includes, which are
caused by odd sized CHAR arrays. Two are in the 'countryprefs' object in
'prefs/locale' (which cause a number of the following elements to be badly
aligned, too), and one is in the 'conunit' object of 'devices/conunit'.
The changes made to these modules are completely transparent.
There are a number of unions in the includes. One example is the
'printerdata' object of 'devices/prtbase', in which "s0:ioextser" is
unioned with "p0:ioextpar", presumably because your printer may be
connected to your serial or parallel port. (In fact, this object has
incorrect offsets in the standard modules.)
Unions have been admitted by fiddling the module file (in a safe way).
The one disadvantage is that creating an object-typed list for an object
that contains a union is probably undefined now (at least, I can't
guarantee what would happen). This may not be a great problem as a lot of
these objects contain nested object instances (e.g., an element "x:obj")
which means an object-typed list cannot be created anyway. The complete
list of objects which have unions is:
Module Object
------------------------------
dos/dosextens dospacket
dos/dosextens doslist
dos/notify notifyrequest
exec/memory me
exec/tasks tc
graphics/copper copins
These E modules and sources are Copyright (C) 1994-1995, Jason R. Hulance.
The original C and Assembly includes are Copyright (C) 1985-1992,
Commodore-Amiga Inc.
Wouter van Oortmerssen is free to do what he likes with all this. Everyone
else must adhere to the usual Freeware conditions. In particular, you are
free to use these modules to create your programs (whether they are freeware
or commercial), but if you wish to distribute any part of this archive you
must include it all, unmodified, and with this "readme" file.
|