[bits 16] [org 0x100] start: mov ax,0x0013 int 10h push 0a000h pop es mov di, 64000 kiss: mov [es:di], byte 6 dec di jnz kiss xor ax,ax int 16h finit xor di,di mov bx,0 outer: xor ax,ax inner: finit ;first ball mov dx,[x0] sub dx,ax mov cx,[y0] sub cx,bx mov [x],dx mov [y],cx fild word [x] fmul ST0 fild word [y] fmul ST0 faddp ST1 fldz fcomip ST1 jz dopaint fld1 fdivrp ST1 ;inverse ; second ball mov dx,[x1] sub dx,ax mov cx,[y1] sub cx,bx mov [x],dx mov [y],cx fild word [x] fmul ST0 fild word [y] fmul ST0 faddp ST1 fldz fcomip ST1 jz dopaint fld1 fdivrp ST1 ;inverse faddp ST1 ; add metaballs fld dword [limit] fcomip ST1 jnc nopaint dopaint: mov byte [es:di],4 jmp didpaint nopaint: mov byte [es:di],7 didpaint: inc ax inc di cmp ax,320 jne inner ;slut inc bx cmp bx,200 jne outer xor ax,ax int 16h xor ax,ax int 21h x: dd 0 y: dd 0 x0: dd 130 y0: dd 120 x1: dd 190 y1: dd 80 limit dd 0.0005 xkiss dd 0.00625 ykiss dd 0.01 ball dw 0