home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Party 1994: Try This At Home
/
disk_image.bin
/
source
/
vexsrc
/
sinplasa.asm
< prev
next >
Wrap
Assembly Source File
|
1995-03-29
|
2KB
|
97 lines
comment #
/*****************************************************************************
ATTENTION!
this source is VOTEWARE,
you may only use it to the conditions listed below:
-You may modify it, or use parts of it in your own source as long as
this header stays on top of all files containing this source.
-You must give proper credit to the author, Niklas Beisert / pascal.
-You may not use it in commercial productions without the written
permission of the author.
-AND MOST IMPORTANT: you have to buy an Assembly '94 CD-ROM
by Sound Solutions (if you don't have it already) and vote for VEX-InTrO
in the PC-64k-Intro-Compo! (if you have already sent your voting card,
buy another one and fill it out CORRECTLY!!!)
*****************************************************************************/
#
; // sine plasma, calculates one line for one operator
.model large,c
.386
locals
.data
extrn SinTab:dword
.code
public makesintab
public plasmaline
blockbeg macro exp
blocksize=(1 shl exp)
mov ax,num
and ax,blocksize-1
sub ax,blocksize
neg ax
mov ah,al
mov al,(@@blockend-@@block) shr exp
mul ah
add ax,offset @@block
shr num,exp
inc num
jmp ax
@@block:
endm
blockend macro
@@blockend:
dec num
jnz @@block
endm
makesintab proc uses ds si di, plsin:dword, max:word
cld
lds si,SinTab
les di,plsin
movzx ebx,byte ptr max
mov cx,2048
@@l:
lodsd
add eax,65536
imul eax,ebx
shr eax,17
stosb
loop @@l
ret
endp
plasmaline proc uses ds si edi, plsin:dword, buf:dword, num:word, p:dword, f:dword
mov di,word ptr p
shl edi,16
mov dx,word ptr f
shl edx,16
mov dx,1
mov bx,word ptr p+2
mov cx,word ptr f+2
lds si,plsin
les di,buf
blockbeg 5
rept blocksize
and bx,2047
mov al,ds:[bx+si]
add es:[di],al
add edi,edx
adc bx,cx
endm
blockend
@@end:
ret
endp
end