#define TIEFE 1
#define BREITE 640
#define HOEHE 512
#define FARBEN 2

#include <exec/types.h>
#include <intuition/intuition.h>

struct IntuitionBase *IntuitionBase; 
struct GfxBase *GfxBase;

#define INTUITION_REV   33  /* Versionsnummer! */
#define GRAPHICS_REV	33

/* Deklaration eines vordefinierten NewScreen Datenblocks */

struct NewScreen NewScreen =
  {
   0,			/* linke Ecke sollte 0 sein */
   0,			/* obere Ecke */
   BREITE,			/* Breite (hi-res) */
   HOEHE,		/* Hoehe (Interlace) */
   TIEFE,		/* Tiefe (1 bit plane) */
   0, 1,		/* DetailPen und BlockPen */
   HIRES|LACE,		/* Anzeige-Modi */
   CUSTOMSCREEN,	/* Schirm-Typ */
   NULL,		/* Font */
   NULL,		/* Schirm-Titel */
   NULL,		/* keine speziellen screen gadgets */
   NULL,		/* keine custom bit map */
  };

main()
{
  struct Screen *Screen;
  struct NewWindow NewWindow;
  struct Window *Window;	
  REGISTER struct RastPort *rp;
  struct IntuiMessage *Message;
  LONG i;
  REGISTER SHORT x,y,s; 
  UBYTE z=0;
  SHORT box[10];

  /* Oeffnen der Library und Ueberpruefung */

  IntuitionBase = (struct IntuitionBase *)
    OpenLibrary("intuition.library",INTUITION_REV);
  if (IntuitionBase == NULL) exit(FALSE);

  GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", GRAPHICS_REV);
  if (GfxBase == NULL) exit(FALSE);

  if ((Screen = (struct Screen *)OpenScreen(&NewScreen)) == NULL) exit(FALSE);

  /* Initialisieren der NewWindow structure fuer den OpenWindow()-Aufruf */

  NewWindow.LeftEdge = 0;
  NewWindow.TopEdge = 0;
  NewWindow.Width = BREITE;
  NewWindow.Height = HOEHE;
  NewWindow.DetailPen = 0;
  NewWindow.BlockPen = 1;
  NewWindow.Title = NULL;
  NewWindow.Flags = ACTIVATE|BORDERLESS;
  NewWindow.IDCMPFlags = MOUSEBUTTONS;
  NewWindow.Type = CUSTOMSCREEN;
  NewWindow.FirstGadget = NULL;
  NewWindow.CheckMark = NULL;
  NewWindow.Screen = Screen;
  NewWindow.BitMap = NULL;

  if (( Window = (struct Window *)OpenWindow(&NewWindow)) == NULL) exit(FALSE);

  rp=Window->RPort;	/* RastPort-Adresse */
  SetDrMd(rp,COMPLEMENT);	/* Zeichenmodus */
  do {
      for(i=0; i<=12000; i+=3) {
	  x=i%BREITE;
	  y=i%HOEHE;
	  Move(rp,x,y);	/* linke, obere Ecke */
	  box[2]=BREITE-x-1;	/* rechte, */
	  box[3]=y;		/* obere Ecke */
	  box[4]=BREITE-x-1;	/* rechte, */
	  box[5]=HOEHE-y-1;	/* untere Ecke */
	  box[6]=x;		/* linke, */
	  box[7]=HOEHE-y-1;	/* untere Ecke */
	  box[8]=x;		/* Ausgangspunkt */
	  box[9]=y;
	  PolyDraw(rp,4,&box[2]);
	  Message=(struct IntuiMessage *)GetMsg(Window->UserPort);
	  if (Message->Class == MOUSEBUTTONS)
	     break;
      }
  } while ((Message->Class) != MOUSEBUTTONS); 
  CloseWindow(Window);
  CloseScreen(Screen);
  exit(TRUE);
}
