#include <exec/types.h>
#include <exec/memory.h>
#include <libraries/dos.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <graphics/displayinfo.h>
#include <graphics/gfxbase.h>
#include <clib/exec_protos.h>
#include <clib/dos_protos.h>
#include <clib/intuition_protos.h>
#include <clib/graphics_protos.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct Library *IntuitionBase;
struct Library *GfxBase;

void Aufraeumen() {
  if(GfxBase)
    CloseLibrary(GfxBase);
  if(IntuitionBase)
    CloseLibrary(IntuitionBase);
}

void Ende(UBYTE *s, int res) {
 Aufraeumen();
 exit(res);
}

void main(int argc, char **argv)
{
  struct Screen *first;
  struct ViewPort *vp;
  struct DisplayInfo DI;
  ULONG  modeid;
  UBYTE  xAspect, yAspect;
  IntuitionBase = OpenLibrary(
           "intuition.library",37);
  GfxBase = OpenLibrary(
            "graphics.library",37);
  if( IntuitionBase == NULL ||
            GfxBase == NULL )
    Ende("Library-Fehler",
                 RETURN_FAIL);

  first = ((struct IntuitionBase *)
        IntuitionBase)->FirstScreen;
  vp = &first->ViewPort;
  xAspect = 0;
  modeid = GetVPModeID(vp);
  if(GetDisplayInfoData(NULL,
     (UBYTE *)&DI,
     sizeof(struct DisplayInfo),
      DTAG_DISP, modeid)) {
      printf("ViewPort ModeID: $%08lx\n",modeid);
      xAspect = DI.Resolution.x;
      yAspect = DI.Resolution.y;
      printf("XAspect=%ld\n"
             "YAspect=%ld\n",
              xAspect, yAspect);
  }

  Ende("",RETURN_OK);
}
