home *** CD-ROM | disk | FTP | other *** search
/ ANews 2 / AnewsCD2.iso / Materiels / AteoConcepts / DOC_DEV / AtéoBus.dev / ATEOBUS.DOC < prev    next >
Text File  |  1999-10-13  |  11KB  |  391 lines

  1. TABLE OF CONTENTS
  2.  
  3. ateobus.library/--background--
  4. ateobus.library/AC_GetSpaceBase
  5. ateobus.library/AC_AddIntServer
  6. ateobus.library/AC_RemIntServer
  7. ateobus.library/AC_IrqLine2Level
  8. ateobus.library/AC_IrqLevel2Line
  9. ateobus.libraru/AC_DisableIrq
  10. ateobus.library/AC_EnableIrq
  11. ateobus.library/AC_QueryValue
  12. ateobus.library/AC_StoreValue
  13. ateobus.library/AC_GetVersion
  14. ateobus.library/AC_GetGlobalPrefs
  15.  
  16. ateobus.library/--background--                 ateobus.library/--background--
  17.  
  18.    Version 3.0 / April 2, 1999
  19.  
  20.    The main use is this library is to control the AtéoBus trough the
  21.    AtéoBusServer (started by the StartAteoBus command)
  22.    The AtéoBusserver has several functions:
  23.       - Storage of values
  24.       - Serving interrupt request comming from the AtéoBus
  25.       - Giving base adresse of the differents bus space
  26.  
  27.    In the future, this library and it associe server will also support
  28.    ISA Plug&Play card on the bus
  29.  
  30.    mail bug report to: arlequin@ateo-concepts.com
  31.  
  32. ateobus.library/AC_GetSpaceBase               ateobus.library/AC_GetSpaceBase
  33.  
  34.    NAME
  35.    AC_GetSpaceBase - get the adress base of the specified space
  36.  
  37.    SYNOPSIS
  38.    base = AC_GetSpaceBase( flags )
  39.    D0                   D0
  40.  
  41.    void* AC_GetSpaceBase( ULONG )
  42.  
  43.    FUNCTION
  44.    This routine will return the adress of the specified space
  45.  
  46.    The return value will be the 'Amiga' adress see as 0x0 from the AtéoBus
  47.    side for the specified space
  48.  
  49.    Please use it instead of using define adress. Adress space can change and
  50.    this is the only safe methods
  51.  
  52.    INPUTS
  53.    The flags are combinaison of:
  54.  
  55.          ATEOBUS_SPACE (bit 0)
  56.          ISA_SPACE     (bit 1)
  57.  
  58.          IO_SPACE      (bit 4)
  59.          MEMORY_SPACE  (bit 5)
  60.  
  61.    For example is you want to know the ISA IO base adress, you have to call
  62.    this routine with ISA_SPACE(bit1) and IO_SPACE(bit4) set
  63.  
  64.    RESULTS
  65.    The routine will return the requested adress or NULL if this space is not
  66.    supported
  67.  
  68.    NOTE
  69.  
  70.    SEE ALSO
  71.  
  72. ateobus.library/AC_AddIntServer               ateobus.library/AC_AddIntServer
  73.  
  74.    NAME
  75.    AC_AddIntServer -- add an interrupt server the AtéoBus server chain
  76.  
  77.    SYNOPSIS
  78.    ok = AC_AddIntServer(intNum, interrupt)
  79.    D0                D0-0:4  A1
  80.  
  81.    ULONG AC_AddIntServer(ULONG, struct Interrupt *);
  82.  
  83.    FUNCTION
  84.    This function adds a new interrupt server to a given server chain.
  85.    The node is located on the chain in a priority dependent position.
  86.    If this is the first server on a particular chain, interrupts will
  87.    be enabled for that chain.
  88.  
  89.    Each link in the chain will be called in priority order until the
  90.    chain ends or one of the servers returns with the 68000's Z condition
  91.    code clear (indicating non-zero).  Servers on the chain should return
  92.    with the Z flag clear if the interrupt was specifically for that
  93.    server, and no one else. (Take care with High Level Language servers,
  94.    the language may not have a mechanism for reliably setting the Z flag
  95.    on exit).
  96.  
  97.    Servers are called with the following register conventions:
  98.  
  99.        D0 -> D7 - scratch
  100.  
  101.        A0 - scratch
  102.        A1 - server is_Data pointer (scratch)
  103.        A2 -> A4 - scratch
  104.        A5 - jump vector register (scratch)
  105.  
  106.        all other registers must be preserved
  107.  
  108.    INPUTS
  109.    intNum - the AtéoBus interrupt line number (0 through 10) given by
  110.        AC_IrqLine2Level() .
  111.  
  112.    interrupt - pointer to an Interrupt structure.
  113.        By convention, the LN_NAME of the interrupt structure must
  114.        point a descriptive string so that other users may
  115.        identify who currently has control of the interrupt.
  116.        The LN_TYPE must be set to NT_INTERRUPT. If not this function
  117.        will fail
  118.  
  119.    RESULTS
  120.    NULL is the routine fails, no NULL overwise
  121.  
  122.    WARNING
  123.    Some compilers or assemblers may optimize code in unexpected ways,
  124.    affecting the conditions codes returned from the function.  Watch
  125.    out for a "MOVEM" instruction (which does not affect the condition
  126.    codes) turning into "MOVE" (which does).
  127.  
  128.    BUGS
  129.    Version 1.1 of the ateobus.library does not organize the chain in
  130.    priority order and has only two place for each irq line.
  131.  
  132.    SEE ALSO
  133.    AC_RemIntServer()
  134.  
  135.  
  136. ateobus.library/AC_RemIntServer               ateobus.library/AC_RemIntServer
  137.  
  138.    NAME
  139.    AC_RemIntServer -- remove an interrupt server from a server chain
  140.  
  141.    SYNOPSIS
  142.    ok = AC_RemIntServer(intNum, interrupt)
  143.    D0                   D0      A1
  144.  
  145.    ULONG AC_RemIntServer(ULONG,struct Interrupt *)
  146.  
  147.    FUNCTION
  148.    This function removes an interrupt server node from the given
  149.    server chain.
  150.    
  151.    INPUTS
  152.    intNum - the AtéoBus interrupt line (0..10) given by AC_IrqLine2Level()
  153.    interrupt - pointer to an interrupt server node
  154.  
  155.    NOTE
  156.    This routine doesn't take care of the interrupt structure. This structure
  157.    is just a way for passign the int server pointer. (You can use a different
  158.    interrupt structure for adding and removing a serveur as long as the is_Code
  159.    and is_Data field are the same).
  160.  
  161.    SEE ALSO
  162.    AC_AddIntServer(), AC_IrqLevel2Line(), AC_IrqLine2Level()
  163.  
  164. ateobus.library/AC_IrqLine2Level             ateobus.library/AC_IrqLine2Level
  165.  
  166.    NAME
  167.    AC_IrqLine2Level -- Convert the ISA Irq line number to the AtéoBus Irq Level
  168.                         (V3)
  169.  
  170.    SYNOPSIS
  171.    IrqLevel = AC_IrqLine2Level( IrqLine )
  172.    D0                           D1
  173.  
  174.    UBYTE AC_IrqLine2Level( UBYTE IrqLine)
  175.  
  176.    FUNCTION
  177.    This function convert the IrqLine of the ISA bus (3->15) to the IrqLevel
  178.    you must give to AC_AddIntServer() or to AC_RemIntServer()
  179.  
  180.    INPUTS
  181.    IrqLine - the ISA like Irq number
  182.  
  183.    RESULTS
  184.    The IrqLevel you must give to AC_AddIntServer() or to AC_RemIntServer()
  185.  
  186.    SEE ALSO
  187.    AC_AddIntServer(), AC_RemIntServer(), AC_IrqLevel2Line()
  188.  
  189.  
  190.  
  191. ateobus.library/AC_IrqLevel2Line             ateobus.library/AC_IrqLevel2Line
  192.  
  193.    NAME
  194.    AC_IrqLevel2Line -- Convert the AtéoBus Irq level to an ISA Irq line number
  195.                         (V3)
  196.  
  197.    SYNOPSIS
  198.    IrqLine = AC_IrqLevel2Line( IrqLevel )
  199.    D0                          D1
  200.  
  201.    UBYTE AC_IrqLevel2Line( UBYTE IrqLevel )
  202.  
  203.    FUNCTION
  204.    This function convert the AtéoBus Irq Levelto the ISA Irq line number.
  205.  
  206.    INPUTS
  207.    IrqLevel - the AtéoBus Irq Level
  208.  
  209.    RESULTS
  210.    The ISA Irq line number
  211.  
  212.    SEE ALSO
  213.    AC_AddIntServer(), AC_RemIntServer(), AC_IrqLine2Level()
  214.  
  215.  
  216. ateobus.libraru/AC_DisableIrq                    ateobus.libraru/AC_DisableIrq
  217.  
  218.    NAME
  219.    AC_DisableIrq -- Control the Atéobus interrupts (V3)
  220.  
  221.    SYNOPSIS
  222.    ok = AC_DisableIrq( Irq, Flags )
  223.    D0                  D0   D1
  224.  
  225.    UBYTE AC_Disable( BYTE Irq, ULONG Flags )
  226.  
  227.    FUNCTION
  228.    This function control the Atéobus interrupts
  229.  
  230.    if Irq is equal to -1, this function will prevent the Atéobus to interrupt
  231.    the Amiga. When Irq = -1, the Flags are ignored.
  232.  
  233.    If the bit AC_IRQLEVELB is set in Flags, the Irq will refer to the Atéobus
  234.    level, is this bit is reset, the Irq will refer to the ISA Line number.
  235.  
  236.    Callign this function with AC_IRQLEVELB reset and Irq = 5, will disable the
  237.    interrupt server for the ISA interrupt line number 5
  238.  
  239.    INPUTS
  240.    Irq - the Irq line or level, according to Flags
  241.    Flags - bit AC_IRQLEVELB, if set, the function works with interrupt level,
  242.    if reset, the function works with line.
  243.  
  244.    RESULTS
  245.    ok - Error code, if =0 the Level/Line is not supported by the AtéoBus.
  246.  
  247.    WARNING
  248.    Be careful with this function! If you disable a specific line/level where an
  249.    interrup can occur, you will freeze the Amiga!
  250.  
  251.    In ateobus.library V3.0, the Enable/Disable function by Line/Level doesn't works!
  252.  
  253.  
  254. ateobus.library/AC_EnableIrq                      ateobus.library/AC_EnableIrq
  255.  
  256.    NAME
  257.    AC_EnableIrq -- Control the AtéoBus interrupts (V3)
  258.  
  259.    SYNOPSIS
  260.    ok = AC_EnableIrq( Irq, Flags )
  261.    D0                 D0   D1
  262.  
  263.    UBYTE AC_EnableIrq( BYTE Irq, ULONG Flags )
  264.  
  265.    FUNCTION
  266.    This function control the AtéoBus interrupts
  267.  
  268.    if Irq is equal to -1, this function will enable the Atéobus to interrupt
  269.    the Amiga. When Irq = -1, the Flags are ignored.
  270.  
  271.    If the bit AC_IRQLEVELB is set in Flags, the Irq will refer to the Atéobus
  272.    level, is this bit is reset, the Irq will refer to the ISA Line number.
  273.  
  274.    Ca