home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 2
/
ctrom_ii_b.zip
/
ctrom_ii_b
/
PROGRAM
/
PASCAL
/
PARADIS1
/
FASTCIR2.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-03-28
|
2KB
|
110 lines
(5731) Mon 23 Mar 92 23:53
By: Joy Mukherjee
To: Dale Frakes
Re: Integer Graphics 2/2
St:
---------------------------------------------------------------------------
@MSGID: 1:387/255 77b8a9be
>>> Continued from previous message
SUB DI,DI
ADD DI,DX
MOV AX,YXCp
XCHG AL,AH
ADD DI,AX
SHR AX,1
SHR AX,1
ADD DI,AX
MOV AX,BX
STOSB { Plot pixel }
SUB DI,DI
ADD DI,DX
MOV AX,YXCm
XCHG AL,AH
ADD DI,AX
SHR AX,1
SHR AX,1
ADD DI,AX
MOV AX,BX
STOSB { Plot pixel }
End;
Procedure Circle(Xc,Yc,Radius,Color:Integer; Page:Pointer);
Var X,Y,D:Integer;
Begin
ASM
SUB AX,AX { X := 0; }
MOV X,AX
MOV AX,Radius { Y := Radius }
MOV Y,AX
SHL AX,1 { (2 * Radius) }
MOV BX,03H
SUB BX,AX { D := 3 - (2 * Radius) }
MOV D,BX
End;
While (X < Y) Do
Begin
CircPnt(X,Y,Xc,Yc,Color,Page);
If (D < 0) Then
ASM
MOV AX,X { 4 * X }
SHL AX,1
SHL AX,1
ADD AX,6 { (4*X)+6 }
MOV BX,D
ADD BX,AX
MOV D,BX
End
{D := D + (4 * X) + 6}
Else
Begin
ASM
MOV AX,X { (X-Y) }
MOV BX,Y
SUB AX,BX
SHL AX,1 { 4*(X-Y) }
SHL AX,1
ADD AX,10
MOV BX,D
ADD BX,AX
MOV D,BX
{ D := D + 4*(X-Y) + 10; }
DEC Y
{ Dec(Y); }
End;
End;
Inc(X);
End;
If (X=Y) Then CircPnt(X,Y,Xc,Yc,Color,Page);
End;
Procedure VidMode(Mode:Byte); Assembler;
ASM
SUB AH,AH
MOV AL,Mode
INT 10H
End;
Begin
VidMode($13);
Randomize;
For I := 100 To 200 Do
Circle(100,100,I-100,I,VidBase);
ReadLn;
VidMode($13);
Repeat
Circle(Random(319),Random(199),Random(50),Random(256),VidBase);
Until KeyPressed;
VidMode($03);
End.
* SLMR 2.1a # * I've seen the truth, and it makes no sense.
--- MsgToss 2.0c! (r)
* Origin: Nul 512-615-NUL1 HST/V32b,615-NUL2, NUL3, 1.2Gig (1:387/255)
@PATH: 387/255 823 170/400 512/0 1007