rendered paste body[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