diff --git a/tests/webtbs/tbug1066.pp b/tests/webtbs/tbug1066.pp new file mode 100644 index 0000000000..8a65b05fe3 --- /dev/null +++ b/tests/webtbs/tbug1066.pp @@ -0,0 +1,232 @@ +{ Source provided for Free Pascal Bug Report 1066 } +{ Submitted by "Fernando Oscar Schmitt" on 2000-07-24 } +{ e-mail: pulp@cpovo.net } + +var + somevar:longint; + + +procedure putpixel(x,y,color:longint);assembler;inline; +asm +mov edi,x +mov eax,y +cmp edi,0 +jl @@putpixelend +cmp eax,0 +jl @@putpixelend +cmp edi,1023 +jg @@putpixelend +cmp eax,767 +jg @@putpixelend +shl eax,12 +mov ebx,color +add eax,somevar +mov [eax+edi*4],ebx +@@putpixelend: +end ['eax','ebx','edi']; + + +procedure pixelrow(y,x1,x2,color:longint);assembler;inline; +asm +mov edi,x1 +mov ecx,x2 +mov eax,y +cmp edi,ecx +jle @@pixelrowdirok +xchg edi,ecx +@@pixelrowdirok: +cmp eax,0 +jl @@endpixelrow +cmp eax,767 +jg @@endpixelrow +cmp ecx,0 +jl @@endpixelrow +cmp edi,1023 +jg @@endpixelrow +cmp edi,0 +jge @@pixelrowx1ok +mov edi,0 +@@pixelrowx1ok: +cmp ecx,1023 +jle @@pixelrowx2ok +mov ecx,1023 +@@pixelrowx2ok: +sub ecx,edi +shl eax,12 +inc ecx +add eax,somevar +cld +lea edi,[eax+4*edi] +mov eax,color +rep stosd +@@endpixelrow: +end ['eax','ecx','edi']; + + +function str(w:word):string; +var tmp:string; +begin +system.str(w,tmp); +str:=tmp; +end; + +function str(l:longint):string; +var tmp:string; +begin +system.str(l,tmp); +str:=tmp; +end; + + +procedure circle(x0,y0,r,color:longint); +var x,y:longint; +begin +for x:=0 to trunc(r*(sqrt(2)/2))+1 do + begin + y:=round(sqrt(r*r-x*x)); + putpixel(x0+x,y0+y,color); + putpixel(x0-x,y0+y,color); + putpixel(x0+x,y0-y,color); + putpixel(x0-x,y0-y,color); + putpixel(x0+y,y0+x,color); + putpixel(x0-y,y0+x,color); + putpixel(x0+y,y0-x,color); + putpixel(x0-y,y0-x,color); + end; +end; + + +procedure circlefill(x0,y0,r,color:longint); +var x,y:longint; +begin +for x:=0 to trunc(r*(sqrt(2)/2))+1 do + begin + y:=round(sqrt(r*r-x*x)); + pixelrow(y0+y,x0-x,x0+x,color); + pixelrow(y0-y,x0-x,x0+x,color); + pixelrow(y0+x,x0-y,x0+y,color); + pixelrow(y0-x,x0-y,x0+y,color); + end; +end; + + +begin + +end. + + +{----------------cut here----------------} + + +var + somevar:longint; + + +procedure wastememory(x,y,color:longint);assembler;inline; +asm +mov edi,x +mov eax,y +cmp edi,0 +jl @@wastememoryend +cmp eax,0 +jl @@wastememoryend +cmp edi,1023 +jg @@wastememoryend +cmp eax,767 +jg @@wastememoryend +shl eax,12 +mov ebx,color +add eax,somevar +mov [eax+edi*4],ebx +@@wastememoryend: +end ['eax','ebx','edi']; + + +procedure wastememory2(y,x1,x2,color:longint);assembler;inline; +asm +mov edi,x1 +mov ecx,x2 +mov eax,y +cmp edi,ecx +jle @@wastememory2dirok +xchg edi,ecx +@@wastememory2dirok: +cmp eax,0 +jl @@endwastememory2 +cmp eax,767 +jg @@endwastememory2 +cmp ecx,0 +jl @@endwastememory2 +cmp edi,1023 +jg @@endwastememory2 +cmp edi,0 +jge @@wastememory2x1ok +mov edi,0 +@@wastememory2x1ok: +cmp ecx,1023 +jle @@wastememory2x2ok +mov ecx,1023 +@@wastememory2x2ok: +sub ecx,edi +shl eax,12 +inc ecx +add eax,somevar +cld +lea edi,[eax+4*edi] +mov eax,color +rep stosd +@@endwastememory2: +end ['eax','ecx','edi']; + + +function str(w:word):string; +var tmp:string; +begin +system.str(w,tmp); +str:=tmp; +end; + +function str(l:longint):string; +var tmp:string; +begin +system.str(l,tmp); +str:=tmp; +end; + + +procedure testcompiler(x0,y0,r,color:longint); +var x,y:longint; +begin +for x:=0 to trunc(r*(sqrt(2)/2))+1 do + begin + y:=round(sqrt(r*r-x*x)); + wastememory(x0+x,y0+y,color); + wastememory(x0-x,y0+y,color); + wastememory(x0+x,y0-y,color); + wastememory(x0-x,y0-y,color); + wastememory(x0+y,y0+x,color); + wastememory(x0-y,y0+x,color); + wastememory(x0+y,y0-x,color); + wastememory(x0-y,y0-x,color); + end; +end; + + +procedure testcompiler2(x0,y0,r,color:longint); +var x,y:longint; +begin +for x:=0 to trunc(r*(sqrt(2)/2))+1 do + begin + y:=round(sqrt(r*r-x*x)); + wastememory2(y0+y,x0-x,x0+x,color); + wastememory2(y0-y,x0-x,x0+x,color); + wastememory2(y0+x,x0-y,x0+y,color); + wastememory2(y0-x,x0-y,x0+y,color); + end; +end; + + +begin + +end. + diff --git a/tests/webtbs/tbug1124.pp b/tests/webtbs/tbug1124.pp new file mode 100644 index 0000000000..bd2385775e --- /dev/null +++ b/tests/webtbs/tbug1124.pp @@ -0,0 +1,18 @@ + Type + t1 = record + dummy:integer; + end; + t2 = record + dummy:string; + end; + +operator = (i1,i2:t1) r:boolean; +begin +end; + +operator = (i1,i2:t2) r:boolean; +begin +end; + +begin +end.