LOCAL offset0,offset1,offset2,offset3,offset4,offset5,offset6,offset7,mask0n1,mask2n3,mask4n5,mask6n7,shrunk_radius,diameter_even,error,jump_vector:word=LocalStk
push bp
mov bp, sp
sub sp, LocalStk
push si
push di
cld ; strings march forward
; this first part is identical to the other function --
; the only differences, in fact, are in the drawing and moving around
; find starting locations of plots 2, 3, 6, and 7
mov di, _ScrnLogicalByteWidth
xor dx, dx
mov ax, Diameter ; find vertical midpoint
dec ax
shr ax, 1
adc dx, 0 ; remember if it's rounded
mov shrunk_radius, ax ; radius, rounded down for adding