dpvm/it/SoundDrivers/LOADSAM.INC

72 lines
1.8 KiB
Plaintext
Executable File

Proc LoadSample Far ; Fix up end of sample bytes
PushAD
Push DS
Push ES
Push FS
Mov FS, CS:SongDataArea
Mov BP, AX
Add BP, BP
Mov BP, [FS:64910+BP]
Xor CX, CX ; From the start of the sample..
Call GetSampleLocation ; Returns DS:ESI, ECX = length
JC LoadSampleEnd ; Zero flag ON if 16 bit..
Xor EAX, EAX
Mov BL, [FS:BP+12h]
Test BL, 10h ; Loop
JZ LoadSample2
Mov ESI, [FS:BP+34h] ; Start of loop
Test BL, 40h ; Pingpong?
JZ LoadSample1
Mov ESI, [FS:BP+38h]
Sub ESI, 2
JNC LoadSample1
Xor ESI, ESI
LoadSample1:
Test BL, 2
JZ LoadSample4
Add ESI, ESI
LoadSample4:
Int 3
Mov AL, [SI]
Inc ESI
Int 3
Mov AH, [SI]
LoadSample2:
Mov ESI, [FS:BP+30h]
Test BL, 2
JZ LoadSample3
Add ESI, ESI
LoadSample3:
Int 3
Mov [SI], AL
Inc ESI
Int 3
Mov [SI], AH
LoadSampleEnd:
Pop FS
Pop ES
Pop DS
PopAD
StC
Ret
EndP LoadSample