MODULE;
$RE X0,Y0,DDX,DDY,ANG,DA,D,PI;
$IN I,J,K,N;
$AD [$IN16] CHPTR;
$PS RING ($RE,$RE,$RE,$RE,$IN);
  PROC RING (X0,Y0,D,DA,N);
   $RE X1,Y1,X2,Y2,X3,Y3,X4,Y4;
  FOR N  DO
   COS (ANG)*D +X0 =>X1;
   SIN (ANG)*D +Y0 =>Y1;
   COS (ANG+PI)*D +X0 =>X2;
   SIN (ANG+PI)*D +Y0 =>Y2;
   COS (PI*2 +ANG)*D +X0 =>X3;
   SIN (PI*2 +ANG)*D +Y0 =>Y3;
   COS (PI*3 +ANG)*D +X0 =>X4;
   SIN (PI*3 +ANG)*D +Y0 =>Y4;
  MOVE.ABS.2 (X1,Y1);
  LINE.ABS.2 (X2,Y2);
  LINE.ABS.2 (X3, Y3);
  LINE.ABS.2 (X4, Y4);
  LINE.ABS.2 (X1, Y1);
    ANG +DA =>ANG;
  OD;
 END;

MAKE($IN16,%2000,%FA0000) => CHPTR;
FOR I < 1920 DO
   %20 => CHPTR^[I];
OD
 INITIALISE.CORE (1,1,1,1);
DEFINE.DEVICE (3,%"*","MOT");

 INITIALISE.VIEWSURFACE (3);
SELECTOUTPUT (0);
CAPTION (%"This example is a RING.  ");
CAPTION (%"Please hit the CR key !  ");
CURRENT.INPUT() =>I;
SELECT.INPUT (0);
INCH ();
SELECT.INPUT (I);
 SELECT.VIEWSURFACE (3);
 NEWFRAME ();
 SET.WINDOW (0.0, 500.0, 0.0, 500.0);
 0.0 =>ANG; 1.5708 =>PI;
 1 =>K; 13 =>N;
 200.0 =>D; 3.141593/13.0 =>DA;
 250.0 =>Y0;
 200.0 =>DDX; 100.0 =>DDY;
FOR  I<1  DO
 300.0 =>X0;
 FOR  J<1  DO
  IF 1+>K=7 THEN 1=>K FI;
  SET.LINE.INDEX (7);
  RING (X0, Y0, D,DA,N);
   DDX +>X0;
 OD
   DDY +>Y0;
OD
DESELECT.VIEWSURFACE (3);
TERMINATE.VIEWSURFACE (3);

SELECT.OUTPUT (0);
CAPTION (%"Next example is a pattern of a RINGS, ");
CAPTION (%"Please hit the CR key ! ");
CURRENT.INPUT() =>J;
SELECT.INPUT (0);
INCH ();
SELECT.INPUT (J);
 SET.NDC.SPACE.2 (1.0,0.85);
 INITIALISE.VIEWSURFACE (3);
 SELECT.VIEWSURFACE (3);
 NEWFRAME ();
 SET.WINDOW (0.0, 500.0, 0.0, 500.0);
 0.0 =>ANG; 1.5708 =>PI;
 1 =>K; 9 =>N;
 100.0 =>D; 3.141593/9.0 =>DA;
 100.0 =>Y0;
 150.0 =>DDX; 100.0 =>DDY;
FOR  I<4  DO
 100.0 =>X0;
 FOR  J<3  DO
  IF 1+>K=7 THEN 1=>K FI;
  SET.LINE.INDEX (K);
  RING (X0, Y0, D,DA,N);
   DDX +>X0;
 OD
   DDY +>Y0;
OD

DESELECT.VIEWSURFACE (3);
TERMINATE.VIEWSURFACE (3);
TERMINATE.CORE ();
*END

IN -1
