home *** CD-ROM | disk | FTP | other *** search
/ PC Interdit / pc-interdit.iso / memory / dma / dmabsp.pas < prev   
Pascal/Delphi Source File  |  1994-10-27  |  1KB  |  57 lines

  1. {
  2.  Exemples d'utilisation de l'unité "DMA".
  3. }
  4.  
  5.  
  6. [ ... ]
  7.  
  8.  
  9. procedure Jouer_Sb16(dsize : word;p : pointer);
  10.  
  11. var li : word;
  12. begin;
  13.   DMA_Init_Transfer(dma_ch,Blockmodus,p,dsize-1);
  14.  
  15.   if sb16_outputlong <> dsize then begin;
  16.     wr_dsp_sb16($C6);
  17.     if stereo then
  18.       wr_dsp_sb16($20)
  19.     else
  20.       wr_dsp_sb16($00);
  21.     wr_dsp_sb16(Lo(dsize-1));
  22.     wr_dsp_sb16(Hi(dsize-1));
  23.     sb16_outputlong := dsize;
  24.   end else begin;
  25.     wr_dsp_sb16($45);
  26.   end;
  27. end;
  28.  
  29. [ ... ]
  30.  
  31. procedure Jouer_Sb16(Segm,Offs,dsize : word);
  32. var li : word;
  33. begin;
  34.   port[$0A] := dma_ch+4;
  35.   Port[$0c] := 0;
  36.   Port[$0B] := $49;
  37.   Port[dma_adr[dma_ch]] := Lo(offs);
  38.   Port[dma_adr[dma_ch]] := Hi(offs);
  39.   Port[dma_wc[dma_ch]] := Lo(dsize-1);
  40.   Port[dma_wc[dma_ch]] := Hi(dsize-1);
  41.   Port[dma_page[dma_ch]] := Segm;
  42.   if sb16_outputlong <> dsize then begin;
  43.     wr_dsp_sb16($C6);
  44.     if stereo then
  45.       wr_dsp_sb16($20)
  46.     else
  47.       wr_dsp_sb16($00);
  48.     wr_dsp_sb16(Lo(dsize-1));
  49.     wr_dsp_sb16(Hi(dsize-1));
  50.     sb16_outputlong := dsize;
  51.   end else begin;
  52.     wr_dsp_sb16($45);
  53.   end;
  54.   Port[$0A] := dma_ch;
  55. end;
  56.  
  57.