home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ANews 2
/
AnewsCD2.iso
/
Materiels
/
AteoConcepts
/
DOC_DEV
/
AtéoBus.dev
/
ATEOBUS.DOC
< prev
next >
Wrap
Text File
|
1999-10-13
|
11KB
|
391 lines
TABLE OF CONTENTS
ateobus.library/--background--
ateobus.library/AC_GetSpaceBase
ateobus.library/AC_AddIntServer
ateobus.library/AC_RemIntServer
ateobus.library/AC_IrqLine2Level
ateobus.library/AC_IrqLevel2Line
ateobus.libraru/AC_DisableIrq
ateobus.library/AC_EnableIrq
ateobus.library/AC_QueryValue
ateobus.library/AC_StoreValue
ateobus.library/AC_GetVersion
ateobus.library/AC_GetGlobalPrefs
ateobus.library/--background-- ateobus.library/--background--
Version 3.0 / April 2, 1999
The main use is this library is to control the AtéoBus trough the
AtéoBusServer (started by the StartAteoBus command)
The AtéoBusserver has several functions:
- Storage of values
- Serving interrupt request comming from the AtéoBus
- Giving base adresse of the differents bus space
In the future, this library and it associe server will also support
ISA Plug&Play card on the bus
mail bug report to: arlequin@ateo-concepts.com
ateobus.library/AC_GetSpaceBase ateobus.library/AC_GetSpaceBase
NAME
AC_GetSpaceBase - get the adress base of the specified space
SYNOPSIS
base = AC_GetSpaceBase( flags )
D0 D0
void* AC_GetSpaceBase( ULONG )
FUNCTION
This routine will return the adress of the specified space
The return value will be the 'Amiga' adress see as 0x0 from the AtéoBus
side for the specified space
Please use it instead of using define adress. Adress space can change and
this is the only safe methods
INPUTS
The flags are combinaison of:
ATEOBUS_SPACE (bit 0)
ISA_SPACE (bit 1)
IO_SPACE (bit 4)
MEMORY_SPACE (bit 5)
For example is you want to know the ISA IO base adress, you have to call
this routine with ISA_SPACE(bit1) and IO_SPACE(bit4) set
RESULTS
The routine will return the requested adress or NULL if this space is not
supported
NOTE
SEE ALSO
ateobus.library/AC_AddIntServer ateobus.library/AC_AddIntServer
NAME
AC_AddIntServer -- add an interrupt server the AtéoBus server chain
SYNOPSIS
ok = AC_AddIntServer(intNum, interrupt)
D0 D0-0:4 A1
ULONG AC_AddIntServer(ULONG, struct Interrupt *);
FUNCTION
This function adds a new interrupt server to a given server chain.
The node is located on the chain in a priority dependent position.
If this is the first server on a particular chain, interrupts will
be enabled for that chain.
Each link in the chain will be called in priority order until the
chain ends or one of the servers returns with the 68000's Z condition
code clear (indicating non-zero). Servers on the chain should return
with the Z flag clear if the interrupt was specifically for that
server, and no one else. (Take care with High Level Language servers,
the language may not have a mechanism for reliably setting the Z flag
on exit).
Servers are called with the following register conventions:
D0 -> D7 - scratch
A0 - scratch
A1 - server is_Data pointer (scratch)
A2 -> A4 - scratch
A5 - jump vector register (scratch)
all other registers must be preserved
INPUTS
intNum - the AtéoBus interrupt line number (0 through 10) given by
AC_IrqLine2Level() .
interrupt - pointer to an Interrupt structure.
By convention, the LN_NAME of the interrupt structure must
point a descriptive string so that other users may
identify who currently has control of the interrupt.
The LN_TYPE must be set to NT_INTERRUPT. If not this function
will fail
RESULTS
NULL is the routine fails, no NULL overwise
WARNING
Some compilers or assemblers may optimize code in unexpected ways,
affecting the conditions codes returned from the function. Watch
out for a "MOVEM" instruction (which does not affect the condition
codes) turning into "MOVE" (which does).
BUGS
Version 1.1 of the ateobus.library does not organize the chain in
priority order and has only two place for each irq line.
SEE ALSO
AC_RemIntServer()
ateobus.library/AC_RemIntServer ateobus.library/AC_RemIntServer
NAME
AC_RemIntServer -- remove an interrupt server from a server chain
SYNOPSIS
ok = AC_RemIntServer(intNum, interrupt)
D0 D0 A1
ULONG AC_RemIntServer(ULONG,struct Interrupt *)
FUNCTION
This function removes an interrupt server node from the given
server chain.
INPUTS
intNum - the AtéoBus interrupt line (0..10) given by AC_IrqLine2Level()
interrupt - pointer to an interrupt server node
NOTE
This routine doesn't take care of the interrupt structure. This structure
is just a way for passign the int server pointer. (You can use a different
interrupt structure for adding and removing a serveur as long as the is_Code
and is_Data field are the same).
SEE ALSO
AC_AddIntServer(), AC_IrqLevel2Line(), AC_IrqLine2Level()
ateobus.library/AC_IrqLine2Level ateobus.library/AC_IrqLine2Level
NAME
AC_IrqLine2Level -- Convert the ISA Irq line number to the AtéoBus Irq Level
(V3)
SYNOPSIS
IrqLevel = AC_IrqLine2Level( IrqLine )
D0 D1
UBYTE AC_IrqLine2Level( UBYTE IrqLine)
FUNCTION
This function convert the IrqLine of the ISA bus (3->15) to the IrqLevel
you must give to AC_AddIntServer() or to AC_RemIntServer()
INPUTS
IrqLine - the ISA like Irq number
RESULTS
The IrqLevel you must give to AC_AddIntServer() or to AC_RemIntServer()
SEE ALSO
AC_AddIntServer(), AC_RemIntServer(), AC_IrqLevel2Line()
ateobus.library/AC_IrqLevel2Line ateobus.library/AC_IrqLevel2Line
NAME
AC_IrqLevel2Line -- Convert the AtéoBus Irq level to an ISA Irq line number
(V3)
SYNOPSIS
IrqLine = AC_IrqLevel2Line( IrqLevel )
D0 D1
UBYTE AC_IrqLevel2Line( UBYTE IrqLevel )
FUNCTION
This function convert the AtéoBus Irq Levelto the ISA Irq line number.
INPUTS
IrqLevel - the AtéoBus Irq Level
RESULTS
The ISA Irq line number
SEE ALSO
AC_AddIntServer(), AC_RemIntServer(), AC_IrqLine2Level()
ateobus.libraru/AC_DisableIrq ateobus.libraru/AC_DisableIrq
NAME
AC_DisableIrq -- Control the Atéobus interrupts (V3)
SYNOPSIS
ok = AC_DisableIrq( Irq, Flags )
D0 D0 D1
UBYTE AC_Disable( BYTE Irq, ULONG Flags )
FUNCTION
This function control the Atéobus interrupts
if Irq is equal to -1, this function will prevent the Atéobus to interrupt
the Amiga. When Irq = -1, the Flags are ignored.
If the bit AC_IRQLEVELB is set in Flags, the Irq will refer to the Atéobus
level, is this bit is reset, the Irq will refer to the ISA Line number.
Callign this function with AC_IRQLEVELB reset and Irq = 5, will disable the
interrupt server for the ISA interrupt line number 5
INPUTS
Irq - the Irq line or level, according to Flags
Flags - bit AC_IRQLEVELB, if set, the function works with interrupt level,
if reset, the function works with line.
RESULTS
ok - Error code, if =0 the Level/Line is not supported by the AtéoBus.
WARNING
Be careful with this function! If you disable a specific line/level where an
interrup can occur, you will freeze the Amiga!
In ateobus.library V3.0, the Enable/Disable function by Line/Level doesn't works!
ateobus.library/AC_EnableIrq ateobus.library/AC_EnableIrq
NAME
AC_EnableIrq -- Control the AtéoBus interrupts (V3)
SYNOPSIS
ok = AC_EnableIrq( Irq, Flags )
D0 D0 D1
UBYTE AC_EnableIrq( BYTE Irq, ULONG Flags )
FUNCTION
This function control the AtéoBus interrupts
if Irq is equal to -1, this function will enable the Atéobus to interrupt
the Amiga. When Irq = -1, the Flags are ignored.
If the bit AC_IRQLEVELB is set in Flags, the Irq will refer to the Atéobus
level, is this bit is reset, the Irq will refer to the ISA Line number.
Ca