Sierpilbrot by Řrřola [web]
; :. sierpilbrot ; :.:. a 64-byte intro ; :. :. by Rrrola ; :.:.:.:. <rrrola@gmail.com> ; greets to everyone who can't get enough cliches org 100h ; assume ah=ch=bx=0 sp=0FFFEh mov al,13h int 10h ; ds=9FFFh lds cx,[bx] M: ; bx = Address cwd mov di,320 mov ax,bx idiv di ; dx = X, ax = Y mov cl,34 ; cx = MaxIterations mov bp,ax ; bp = Im = Y (cx for 34/256, "xor bp,bp" for 0) add di,sp ; di = Re = 1.25{8.8 fixed point} + sp/256 I: add di,dx ; Re += X/256 add bp,ax ; Im += Y/256 pusha add sp,byte 7 imul ax,di,byte 2 imul bp ; Im{16.16} = 2*Im*Re push dx push ax lea ax,[di+bp] sub di,bp imul di ; Re{16.16} = (Re+Im)*(Re-Im) push dx push ax inc sp xchg ax,bp imul ax test dh,bl ; [Re][Im].AAXXMMYY (16.16 -> 8.8) popa ; DiSiBp..BxDxCxAx loopz I ; if ((Im*Im & A<<8) || --M==0) break mov [bx],cl dec bx jnz M in al,60h dec ax ; last Y = 0 push ax ; sp -= 2 jnz M ret ; pop ip = 0
[ back to the prod ]