home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d3xx
/
d359
/
dice.lha
/
DICE
/
DICE.lzh
/
doc
/
extensions.doc
< prev
next >
Wrap
Text File
|
1990-05-19
|
2KB
|
54 lines
COMPILER EXTENSIONS
AUTO LIBRARY OPENNING
Certain Amiga libraries are supported on an autoinit basis. Normally
you declare the library base variable then OpenLibrary() it in your
main.
If you EXTERN the library base variable instead then it will be brought
in from auto.lib along with autoinit code to automatically
OpenLibrary() it on startup and CloseLibrary() it on shutdown.
You can tell when the autoinit feature is not supported for a given
library base variable when the linker comes up with an 'undefined symbol'
error for base variable name.
AUTOINIT CODE
The _autoinit keyword may be used to qualify a subroutine and make it
autoinitialied.... that is, called automatically by the startup code to
initialize various items.
An _autoinit subroutine may not call any fd or stdio functions, but may
call memory allocation functions.
Ordering of _autoinit calls on startup depends on the ordering of
object modules in your link line.
INTERRUPT QUALIFIER
(not amiga compatible)
You may qualify any subroutine with the interrupt qualifier which will
cause said routine to save all registers it uses and terminate with an
RTE instead of an RTS. Normally a subroutine only keeps A2-A7/D2-D7
intact. An interrupt service routine returns no value.
THIS WILL NOT WORK ON THE AMIGA. Amiga interrupt routines have other
requirements not the least of which being that they return with RTS.
Note that this general feature is meant for use with custom 68000 based
systems (i.e. within a kernel) and does not usually work with operating
systems. For example, the Amiga expects interrupt routines to return
with RTS and the Z condition code to reflect a certain status.
NOTE, ANY C MODULE CONTAINING an interrupt qualified routine should be
compiled with the LARGE DATA MODEL because the small-data model base
register (A4) is not available from within interrupt service routines.
Normally is suffices to compile the module containing the interrupt
service routine with the large data model. Such programs may not be
made resident.