| |
|
|
| Manchmal braucht man eine ausserirdisch-schnelle Funktion die die Punkte einer Linie in einen Speicher schreibt. KompilierenMarkierenSeparieren {$cleq}
cls
long lops=lineOfPoints(0,0,-5,6)
print "points:",long(lops,0)
whileloop 1,long(lops,0) {
print "ptx:",long(lops,loop*8)
print "pty:",long(lops,loop*8+4)
print "-"
}
globalFree(lops)
waitInput
end
nProc lineOfPoints(long x,y,xx,yy){
long max=abs(x-xx),\
tmp=abs(y-yy)
case tmp>max : max=tmp
long data=dim(16+max*8)
linedda(x,y,xx,yy,procaddr(lineOfPoints.lineDDAProc),data)
mov eax,data
mov ebx,[eax]
inc ebx
mov [eax],ebx
imul ebx,8
add eax,ebx
mov [eax],xx
add eax,4
mov [eax],yy
return data
}
nProc lineOfPoints.lineDDAProc(long x,y,data){
push ebx
push ecx
mov eax,data
mov ebx,[eax]
inc ebx
mov [eax],ebx
imul ebx,8
add eax,ebx
mov [eax],x
add eax,4
mov [eax],y
pop ecx
pop ebx
}
|
|
|
| |
|
|