; TinySine : 19-byte sine approximation (fasm 1.70.03/WinXP 5.1.2600) ; credit : olivier.poudade.free.fr 2013 aka baudsurfer org 100h mov al, 13h int 10h push 0a000h pop es plot:mov al,byte [x] ; al=angle call _sin mov byte [y],al call pix inc byte [x] jnz plot hold:in ax,60h dec ax jnz hold ret pix: pusha xor cx,cx xor dx,dx mov cl,byte [x] mov dl,byte [y] mov ax,0c0fh int 10h ; VIDEO - WRITE GRAPHICS PIXEL cf. http://www.ctyme.com/intr/rb-0104.htm popa ret ; 19 bytes sine table approx from 0 to 2*Pi : 255 values amplitude=53 [-26;0;+26] ; pic : http://img15.hostingpics.net/pics/371203sine19bytes.png _sin: mov bx,ax ; al=bl=x imul bl ; ax=x*x mov al,ah ; ax=x*x*256+x%256 imul bl ; ax=x*(x*x*256+x%256) mov al,ah ; ax=(x*(x*x*256+x%256))*256+(x*(x*x*256+x%256))%256 shr bx,2 ; bx=x/4 add al,13 ; ax=13+(x*(x*x*256+x%256))*256+(x*(x*x*256+x%256))%256 sub ax,bx ; ax=-x/4+100+(x*(x*x*256+x%256))*256+(x*(x*x*256+x%256))%256 db 0d4h,64 ; ax=(-x/4+100+(x*(x*x*256+x%256))*256+(x*(x*x*256+x%256))%256)%64 ret x db 0 y db 0 dlt db 1