home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Interdit
/
pc-interdit.iso
/
memory
/
dma
/
dmabsp.pas
< prev
Wrap
Pascal/Delphi Source File
|
1994-10-27
|
1KB
|
57 lines
{
Exemples d'utilisation de l'unité "DMA".
}
[ ... ]
procedure Jouer_Sb16(dsize : word;p : pointer);
var li : word;
begin;
DMA_Init_Transfer(dma_ch,Blockmodus,p,dsize-1);
if sb16_outputlong <> dsize then begin;
wr_dsp_sb16($C6);
if stereo then
wr_dsp_sb16($20)
else
wr_dsp_sb16($00);
wr_dsp_sb16(Lo(dsize-1));
wr_dsp_sb16(Hi(dsize-1));
sb16_outputlong := dsize;
end else begin;
wr_dsp_sb16($45);
end;
end;
[ ... ]
procedure Jouer_Sb16(Segm,Offs,dsize : word);
var li : word;
begin;
port[$0A] := dma_ch+4;
Port[$0c] := 0;
Port[$0B] := $49;
Port[dma_adr[dma_ch]] := Lo(offs);
Port[dma_adr[dma_ch]] := Hi(offs);
Port[dma_wc[dma_ch]] := Lo(dsize-1);
Port[dma_wc[dma_ch]] := Hi(dsize-1);
Port[dma_page[dma_ch]] := Segm;
if sb16_outputlong <> dsize then begin;
wr_dsp_sb16($C6);
if stereo then
wr_dsp_sb16($20)
else
wr_dsp_sb16($00);
wr_dsp_sb16(Lo(dsize-1));
wr_dsp_sb16(Hi(dsize-1));
sb16_outputlong := dsize;
end else begin;
wr_dsp_sb16($45);
end;
Port[$0A] := dma_ch;
end;