home *** CD-ROM | disk | FTP | other *** search
/ Trixter's Scene Collection / trixter.zip / trixter / Demos / TRIAL95.ZIP / DEMO.DAT / DMA.INC < prev    next >
Text File  |  1995-02-12  |  5KB  |  172 lines

  1. ;*    DMA.INC
  2. ;*
  3. ;* DMA handling routines, v1.11
  4. ;*
  5. ;* Copyright 1995 Petteri Kangaslampi and Jarno Paananen
  6. ;*
  7. ;* This file is part of the MIDAS Sound System, and may only be
  8. ;* used, modified and distributed under the terms of the MIDAS
  9. ;* Sound System license, LICENSE.TXT. By continuing to use,
  10. ;* modify or distribute this file you indicate that you have
  11. ;* read the license and understand and accept it fully.
  12. ;*
  13.  
  14.  
  15.  
  16. ;/***************************************************************************\
  17. ;*      struct vdsDDS
  18. ;*      -------------
  19. ;* Description: Virtual DMA DDS structure
  20. ;\***************************************************************************/
  21.  
  22. STRUC   vdsDDS
  23.         regionSize      DD      ?       ; DMA buffer size
  24.         bufferOffset    DD      ?       ; buffer offset
  25.         bufferSegment   DW      ?       ; buffer segment
  26.         bufferID        DW      ?       ; buffer ID number
  27.         physicalAddr    DD      ?       ; buffer physical address
  28. ENDS
  29.  
  30.  
  31.  
  32.  
  33. ;/***************************************************************************\
  34. ;*       struct dmaBuffer
  35. ;*       ----------------
  36. ;* Description:  DMA playing buffer
  37. ;\***************************************************************************/
  38.  
  39. STRUC    dmaBuffer
  40.     bsegment    DW    ?    ; segment
  41.     address     DD    ?    ; physical start address
  42.     blength     DW    ?    ; buffer length
  43.     memBlk        DD    ?    ; internal, used for unallocating
  44.     channel     DW    ?    ; channel on which the buffer is
  45.                     ; being played or -1
  46.         vdsDMADDS       vdsDDS  ?       ; VDS DMA DDS structure for buffer
  47. ENDS
  48.  
  49.  
  50.  
  51. ;/***************************************************************************\
  52. ;*      struct dmaChannel
  53. ;*      -----------------
  54. ;* Description: DMA channel data used by DMA functions.
  55. ;\***************************************************************************/
  56.  
  57. STRUC    dmaChannel
  58.     number        DB    ?    ; channel number
  59.     bit        DB    ?    ; channel bit
  60.     baseAddr    DW    ?    ; base address port
  61.     wordCount    DW    ?    ; word count port
  62.     request     DW    ?    ; request port
  63.     singleMask    DW    ?    ; mask port
  64.     mode        DW    ?    ; mode port
  65.     clearFF     DW    ?    ; clear flip-flop port
  66.     page        DW    ?    ; page port
  67. ENDS
  68.  
  69.  
  70.  
  71. ;/***************************************************************************\
  72. ;*
  73. ;* Function:     int dmaAllocBuffer(ushort size, dmaBuffer *buf);
  74. ;*
  75. ;* Description:  Allocates a DMA buffer (totally inside a 64K physical page)
  76. ;*
  77. ;* Input:        ushort size             size of buffer in bytes
  78. ;*               dmaBuffer *buf          ptr to buffer structure to be filled
  79. ;*
  80. ;* Returns:      MIDAS error code.
  81. ;*               DMA buffer data is strored in *buf.
  82. ;*
  83. ;\***************************************************************************/
  84.  
  85. GLOBAL  LANG dmaAllocBuffer : far
  86.  
  87.  
  88.  
  89. ;/***************************************************************************\
  90. ;*
  91. ;* Function:     int dmaFreeBuffer(dmaBuffer *buf);
  92. ;*
  93. ;* Description:  Deallocates an allocated DMA buffer
  94. ;*
  95. ;* Input:        dmaBuffer *buf          ptr to buffer to be deallocated
  96. ;*
  97. ;* Returns:      MIDAS error code
  98. ;*
  99. ;\***************************************************************************/
  100.  
  101. GLOBAL  LANG dmaFreeBuffer : far
  102.  
  103.  
  104.  
  105. ;/***************************************************************************\
  106. ;*
  107. ;* Function:     int dmaPlayBuffer(dmaBuffer *buf, ushort channel,
  108. ;*                                 ushort autoInit);
  109. ;*
  110. ;* Description:  Plays a DMA buffer
  111. ;*
  112. ;* Input:        dmaBuffer *buf          buffer to be player
  113. ;*               ushort channel          DMA channel number
  114. ;*               ushort autoInit         use autoinitialization?
  115. ;*
  116. ;* Returns:      MIDAS error code
  117. ;*
  118. ;\***************************************************************************/
  119.  
  120. GLOBAL  LANG dmaPlayBuffer : far
  121.  
  122.  
  123.  
  124.  
  125. ;/***************************************************************************\
  126. ;*
  127. ;* Function:     int dmaStop(ushort channel);
  128. ;*
  129. ;* Description:  Stops DMA playing
  130. ;*
  131. ;* Input:        ushort channel          DMA channel number
  132. ;*
  133. ;* Returns:      MIDAS error code
  134. ;*
  135. ;\***************************************************************************/
  136.  
  137. GLOBAL  LANG dmaStop : far
  138.  
  139.  
  140.  
  141. ;/***************************************************************************\
  142. ;*
  143. ;* Function:     int dmaGetPos(dmaBuffer *buf, ushort *pos);
  144. ;*
  145. ;* Description:  Gets the DMA playing position
  146. ;*
  147. ;* Input:        dmaBuffer *buf          buffer that is being played
  148. ;*               ushort *pos             pointer to return value
  149. ;*
  150. ;* Returns:      MIDAS error code.
  151. ;*               DMA playing position from the beginning of the buffer,
  152. ;*               in bytes, is stored in *pos.
  153. ;*
  154. ;\***************************************************************************/
  155.  
  156. GLOBAL  LANG dmaGetPos : far
  157.  
  158.  
  159.  
  160. ;/***************************************************************************\
  161. ;*       enum dmaFunctIDs
  162. ;*       ----------------
  163. ;* Description:  ID numbers for DMA handling functions
  164. ;\***************************************************************************/
  165.  
  166. enum    dmaFunctIDs \
  167.         ID_dmaAllocBuffer = ID_dma, \
  168.         ID_dmaFreeBuffer, \
  169.         ID_dmaPlayBuffer, \
  170.         ID_dmaStop, \
  171.         ID_dmaGetPos
  172.