home *** CD-ROM | disk | FTP | other *** search
- IDEAL
- MODEL TPascal
- LOCALS @@
-
- P286
-
- StackSize EQU 500
-
- EXTRN DevStack : BYTE
- EXTRN DevSS : WORD
- EXTRN DevSP : WORD
-
- EXTRN DoGetBuffer : FAR
-
- EXTRN CSOldInt8 : FAR
-
- EXTRN Sounding : DWORD
- EXTRN SoundLeft : WORD
-
- EXTRN SystemClockIncr : WORD
- EXTRN SystemClockCount : WORD
-
- EXTRN PeriodicCount : WORD
- EXTRN PeriodicStart : WORD
- EXTRN PeriodicProc : DWORD
-
- EXTRN DeviceIdling : BYTE
-
- EXTRN NumChannels : BYTE
- EXTRN ChannelIncr : BYTE
-
- EXTRN DoEqualice : BYTE
-
-
- ;*******************************************
-
- MACRO Chunk1
- CLI
-
- PUSH AX
- PUSH DS
-
- MOV AX,SEG Sounding
- MOV DS,AX
-
- MOV [DevSS],SS
- MOV [DevSP],SP
- MOV SS,AX
- MOV SP,OFFSET DevStack + StackSize
-
- PUSH DX
- PUSH CX
- PUSH BX
- PUSH ES
-
- ENDM Chunk1
-
- ;*******************************************
-
- ; DeviceRut1
-
- ;*******************************************
-
- MACRO Chunk21
-
- MOV AX,[SoundLeft]
- AND AX,AX
- JNZ @@yeah
-
- PUSH DI
- PUSH SI
- CALL DoGetBuffer
- POP SI
- POP DI
-
- AND AX,AX
- JNZ @@yeah
-
- INC AH
- MOV [DeviceIdling],AH
-
- ENDM Chunk21
-
- ;-------------------------------------------
-
- ; DeviceRutFail
-
- ;-------------------------------------------
-
- MACRO Chunk221
-
- JMP SystemIntEntry
-
- @@yeah: DEC AX
- MOV [SoundLeft],AX
-
- ENDM Chunk221
-
- ;-------------------------------------------
-
- ; DeviceRut1
-
- ;-------------------------------------------
-
- MACRO Chunk222
-
- XOR BH,BH
- MOV [DeviceIdling],BH
-
- LES BX,[Sounding]
-
- ENDM Chunk222
-
- ;-------------------------------------------
-
- MACRO Chunk22
-
- Chunk221
- Chunk222
-
- ENDM Chunk22
-
- ;-------------------------------------------
-
- MACRO Chunk2
-
- Chunk21
- Chunk22
-
- ENDM Chunk2
-
- ;*******************************************
-
- MACRO ChunkMix
-
- MOV CX,[ES:BX]
- ADD CX,[ES:BX+6]
- ADD CX,[ES:BX+8]
- ADD CX,[ES:BX+14]
- ADD CX,[ES:BX+16]
- ADD CX,[ES:BX+22]
- ADD CX,[ES:BX+24]
- ADD CX,[ES:BX+30]
-
- MOV AX,[ES:BX+2]
- ADD AX,[ES:BX+4]
- ADD AX,[ES:BX+10]
- ADD AX,[ES:BX+12]
- ADD AX,[ES:BX+18]
- ADD AX,[ES:BX+20]
- ADD AX,[ES:BX+26]
- ADD AX,[ES:BX+28]
-
- ENDM ChunkMix
-
- ;-------------------------------------------
-
- MACRO MonoChunk31
-
- ChunkMix
-
- ADD AX,CX
- JNO @@nooverf
- JS SHORT @@posit
- MOV AX,-32768
- JMP SHORT @@nooverf
- @@posit: MOV AX,32767
- @@nooverf:
-
- MOV DL,[DoEqualice]
- AND DL,DL
- JNZ @@equal
- JMP @@noequal
- @@equal:
- PUSH BX
-
- PUSH AX
-
- CWD
-
- MOV BX,0FFFFh
- @@Data11:
- MOV CX,0FFFFh
- @@Data12:
-
- SAR CX,1
- RCR BX,1
- SAR CX,1
- RCR BX,1
- SUB AX,BX
- SBB DX,CX
-
- SAR CX,1
- RCR BX,1
- SUB AX,BX
- SBB DX,CX
-
- MOV [WORD PTR CS:@@Data11-2],AX
- MOV [WORD PTR CS:@@Data12-2],DX
-
- MOV BX,AX
- MOV CX,DX
-
- POP AX
-
- PUSH BX
- PUSH CX
-
- CWD
-
- MOV BX,0FFFFh
- @@Data21:
- MOV CX,0FFFFh
- @@Data22:
-
- SAR CX,1
- RCR BX,1
- ADD AX,BX
- ADC DX,CX
-
- SAR CX,1
- RCR BX,1
- ADD AX,BX
- ADC DX,CX
-
- SAR CX,1
- RCR BX,1
- SAR CX,1
- RCR BX,1
- ADD AX,BX
- ADC DX,CX
-
- MOV [WORD PTR CS:@@Data21-2],AX
- MOV [WORD PTR CS:@@Data22-2],DX
-
- POP CX
- POP BX
-
- SUB AX,BX
- SBB DX,CX
- SUB AX,BX
- SBB DX,CX
-
- SAR DX,1
- RCR AX,1
-
- CMP DX,0
- JG @@up
- JNE @@neg
- CMP AX,32768
- JC @@nada
- @@up: MOV AX,32767
- JMP @@nada
- @@neg: CMP DX,-1
- JNZ @@dw
- CMP AX,32768
- JNC @@nada
- @@dw: MOV AX,-32768
- @@nada:
-
- POP BX
-
- @@noequal:
-
-
-
- XOR AH,80h
- MOV CL,AH
-
- ENDM MonoChunk31
-
- ;-------------------------------------------
-
- MACRO SterChunk31
-
- ChunkMix
-
- ADD CX,CX
- JNO @@nooverf1
- JS SHORT @@posit1
- MOV CX,-32768
- JMP SHORT @@nooverf1
- @@posit1: MOV CX,32767
- @@nooverf1:
- ADD AX,AX
- JNO @@nooverf2
- JS SHORT @@posit2
- MOV AX,-32768
- JMP SHORT @@nooverf2
- @@posit2: MOV AX,32767
- @@nooverf2:
- MOV CL,AH
- XOR CX,8080h
-
- ENDM SterChunk31
-
- ;-------------------------------------------
-
- MACRO StMixChunk31
-
- ChunkMix
-
- MOV DX,AX
- ADD AX,CX
- JNO @@nooverf0
- RCR AX,1
- JMP SHORT @@ovc0
- @@nooverf0: SAR AX,1
- @@ovc0:
- ADD CX,AX
- JNO @@nooverf1
- JS SHORT @@posit1
- MOV CX,-32768
- JMP SHORT @@nooverf1
- @@posit1: MOV CX,32767
- @@nooverf1:
- ADD DX,AX
- JNO @@nooverf2
- JS SHORT @@posit2
- MOV DX,-32768
- JMP SHORT @@nooverf2
- @@posit2: MOV DX,32767
- @@nooverf2:
- MOV CL,DH
- XOR CX,8080h
-
- ENDM StMixChunk31
-
- ;-------------------------------------------
-
- MACRO StMix2Chunk31
-
- ChunkMix
-
- SAR CX,1
- SAR AX,1
- MOV DX,AX
- ADD AX,CX
-
- MOV [WORD PTR CS:@@datastm2-2],AX
- SAR AX,1
- ADD AX,1234
- @@datastm2:
- JNO @@nooverf1
- JS SHORT @@posit1
- MOV AX,-32768
- JMP SHORT @@nooverf1
- @@posit1: MOV AX,32767
- @@nooverf1:
- ADD DX,AX
- JNO @@nooverf2
- JS SHORT @@posit2
- MOV DX,-32768
- JMP SHORT @@nooverf2
- @@posit2: MOV DX,32767
- @@nooverf2:
- ADD CX,AX
- JNO @@nooverf3
- JS SHORT @@posit3
- MOV CX,-32768
- JMP SHORT @@nooverf3
- @@posit3: MOV CX,32767
- @@nooverf3:
- MOV CL,DH
- XOR CX,8080h
-
- ENDM StMix2Chunk31
-
- ;===========================================
-
- MACRO MonoChunk32
-
- MOV CL,[ES:BX]
- XOR CL,80h
-
- ENDM MonoChunk32
-
- ;-------------------------------------------
-
- MACRO SterChunk32
-
- MOV CL,[ES:BX]
- XOR CL,80h
- MOV CH,CL
-
- ENDM SterChunk32
-
- ;*******************************************
-
- MACRO Chunk41 Size
-
- ADD BX,16*2
- MOV [WORD PTR Sounding],BX
-
- ENDM Chunk31
-
- ;-------------------------------------------
-
- MACRO Chunk42
-
- INC BX
- MOV [WORD PTR Sounding],BX
-
- ENDM Chunk42
-
- ;*******************************************
-
- ; DeviceRut2
-
- ;*******************************************
-
- MACRO Chunk51
- JMP SystemIntEntry
- ENDM Chunk51
-
- ;-------------------------------------------
-
- MACRO Chunk5
-
- SystemIntEntry:
- POP ES
- POP BX
- POP CX
- POP DX
-
- MOV SS,[DevSS]
- MOV SP,[DevSP]
-
- DEC [PeriodicCount]
- JNZ @@NoSystemClock
-
- MOV AX,[PeriodicStart]
- MOV [PeriodicCount],AX
-
- MOV AX,[SystemClockIncr]
- ADD [SystemClockCount],AX
- JNC @@nosys
-
- PUSHF
- CALL FAR CSOldInt8
- JMP @@sisys
-
- @@nosys: MOV AL,20h
- OUT 20h,AL
-
- @@sisys: PUSHA
- PUSH ES
-
- STI
-
- CALL [PeriodicProc]
-
- POP ES
- POPA
-
- JMP @@Fin
-
- @@NoSystemClock:
- MOV AL,20h
- OUT 20h,AL
-
- @@Fin:
- POP DS
- POP AX
- IRET
-
- ENDM Chunk5
-
-