[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]


   NAME
       CD_ADDFRAMEINT -- add a CD-frame software interrupt handler.

   IO REQUEST
       io_Device       preset by the call to opendevice()
       io_Unit         preset by the call to opendevice()
       io_Command      CD_ADDFRAMEINT
       io_Length       sizeof(struct Interrupt)
       io_Data         pointer to interrupt structure

   RESULTS
       io_Error        0 for success, or an error code as defined in
                       <devices/cd.h>

   FUNCTION
       This command lets you add a software interrupt handler to the
       disk device that gets invoked whenever a new frame is encountered
       while CD audio is being played.

       You must pass in a properly initialized Exec interrupt structure
       and be prepared to deal with frame interrupts immediately.
       The interrupt is generated by the exec cause function, so you must
       preserve A6.

       To set up the handler, an interrupt structure must be initialized.
       This structure is supplied in io_Data of the CD_ADDFRAMEINT
       command.  The handler then gets linked into the handler chain and
       gets invoked whenever a frame event occurs.  You must eventually
       remove the handler before you exit.

       This command only returns when the handler is removed. That is,
       the device holds onto the IO request until the cd_remframeint command
       is executed with that same IO request.  Hence, you must use sendio()
       with this command.

   NOTES
       The interrupt handler can be added before or after a play command is
       sent.  Interrupts will only be generated while CD audio is playing.
       Interrupts will not be generated when audio is paused.

   SEE ALSO
       cd_remframeint, <devices/cd.h>, <exec/interrupts.h>,
       exec.library/cause()