MODULE Init;

FROM InOut  IMPORT WriteCard, WriteString;
FROM SYSTEM IMPORT ADR,ASSEMBLE,SHORTSET,SHIFT,CAST;

IMPORT R;

(******************************************************************************)

PROCEDURE Schlonz();

CONST N = (3*5*7*11)-1; M = N*8+7;

VAR
  Zork{R.A0} : POINTER TO SHORTSET;
  Composite : ARRAY [0..N] OF SHORTSET;
  i{R.D0},j,t     : LONGCARD;

BEGIN

  Zork := ADR(Composite);

  FOR i := 0 TO N DO Composite[i] := SHORTSET{}; END;

  i := 0;
  WHILE (i <= M) DO
(*$ IF m68020 *)
    ASSEMBLE(BFSET (A0){D0:1}  END);
(*$ ELSE *)
    INCL(Composite[SHIFT(i,-3)], (i MOD 8));
(*$ ENDIF *)
    INC(i,3);
  END;

  i := 1;
  WHILE (i <= M) DO
(*$ IF m68020 *)
    ASSEMBLE(BFSET (A0){D0:1}  END);
(*$ ELSE *)
    INCL(Composite[SHIFT(i,-3)], (i MOD 8));
(*$ ENDIF *)
    INC(i,5);
  END;

  i := 2;
  WHILE (i <= M) DO
(*$ IF m68020 *)
    ASSEMBLE(BFSET (A0){D0:1}  END);
(*$ ELSE *)
    INCL(Composite[SHIFT(i,-3)], (i MOD 8));
(*$ ENDIF *)
    INC(i,7);
  END;

  i := 4;
  WHILE (i <= M) DO
(*$ IF m68020 *)
    ASSEMBLE(BFSET (A0){D0:1}  END);
(*$ ELSE *)
    INCL(Composite[SHIFT(i,-3)], (i MOD 8));
(*$ ENDIF *)
    INC(i,11);
  END;

  FOR i := 0 TO N DO
    WriteCard(CAST(SHORTCARD, Composite[i]), 3); WriteString("\n");
  END;

END Schlonz;

(******************************************************************************)

BEGIN
  Schlonz();
END Init.
