home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 28 / amigaformatcd28.iso / -seriously_amiga- / misc / posbb / src / amigaos / main.c < prev    next >
C/C++ Source or Header  |  1998-05-09  |  5KB  |  126 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <intuition/intuitionbase.h>
  5. #include <intuition/intuition.h>
  6. #include <devices/timer.h>
  7. #include <graphics/gfx.h>
  8. #include <graphics/rastport.h>
  9. #include <exec/memory.h>
  10. #include "posbb.h"
  11. #include "posbb_rev.h"
  12. #include "compiler.h" /* for compiler specific stuff */
  13. /* #include "posbb_logo.h" */
  14.  
  15. FILE *fi = 0;
  16. UBYTE Version []=VERSTAG;
  17. BYTE Copyright []=VERS;
  18. struct IntuitionBase *IntuitionBase=0;
  19. struct GfxBase *GfxBase=0;
  20. struct Window *window=0;
  21. struct timerequest *timereq = NULL;
  22. struct MsgPort *msgport=0;
  23. struct Device *TimerBase=0;
  24.  
  25.  
  26. int main( argc, argv )
  27. int argc;
  28. char *argv[];
  29. {
  30. ULONG tests = 0;
  31. int c,precision = POSBB_PRECISIONLOW;  /* default precision is 'low' at this time. In future posbb will able to change it depending on system speed */
  32. BOOL freeze = FALSE;   /* by default posbb doesn't freeze multitasking */
  33. BOOL mt = FALSE;       /* by default manual timing is turned off */
  34.    if (argc == 1)
  35.    {
  36.       printf("%s (Amiga)\n",VSTRING);
  37.       printf("Portable OS Based Benchmark\n");
  38.       printf("Created by Pietro Altomani <altomanipietro@pragmanet.it>\n");
  39.       printf("Usage: %s <options>\nOptions:\n  -all  Perform all tests\n  -gfx Perform only graphics tests\n  -mem Perform only memory tests\n  -disk Perform only disk tests\n  -math Perform only math tests\n  -o <filename> Output file name\n  -freeze Freeze the machine when running\n-p <precision> Set precision. <precision> can be 'low','medium','high','higher' or 'highest'.\n-mt  Turn on manual timing (beeps starting and finishing tests)\n See docs for more infos.\n",argv[0]);
  40.       exit(10);
  41.    }
  42.  
  43.    for (c=0;c<argc;c++)
  44.    {
  45. #ifndef NOFORBID
  46.       if (strcmp(argv[c],"-freeze") == 0)
  47.       {
  48.     freeze = TRUE;
  49.       }
  50. #endif
  51.       if ((strcmp(argv[c],"-all") == 0) || (strcmp(argv[c],"-full")  == 0))
  52.       {
  53.      tests = -1;
  54.       }
  55.       if (strcmp(argv[c],"-gfx") == 0)
  56.       {
  57.      tests |= (POSBB_TESTWRITEPIXEL | POSBB_TESTDRAWELLIPSE | POSBB_TESTDRAW);
  58.       }
  59.       if (strcmp(argv[c],"-disk") == 0)
  60.       {
  61.      tests |= (POSBB_TESTREAD | POSBB_TESTWRITE);
  62.       }
  63.       if (strcmp(argv[c],"-math") == 0)
  64.       {
  65.      tests |= (POSBB_TESTIMATH | POSBB_TESTFPMATH);
  66.       }
  67.       if (strcmp(argv[c],"-mem") == 0)
  68.       {
  69.      tests |= (POSBB_TESTCOPYMEM | POSBB_TESTCOPYMEM_1MB | POSBB_TESTCOPYMEM_512KB);
  70.       }
  71.       if (strcmp(argv[c],"-mt") == 0)
  72.       {
  73.     mt = TRUE;
  74.       }
  75.       if ((strcmp(argv[c],"-o")) == 0)
  76.       {
  77.      fi = fopen(argv[c+1],"w");
  78.       }
  79.       if ((strcmp(argv[c],"-p")) == 0)
  80.       {
  81.      if ((strcmp(argv[c+1],"low")) == 0) precision = POSBB_PRECISIONLOW;
  82.      if ((strcmp(argv[c+1],"medium")) == 0) precision = POSBB_PRECISIONMEDIUM;
  83.      if ((strcmp(argv[c+1],"high")) == 0) precision = POSBB_PRECISIONHIGH;
  84.      if ((strcmp(argv[c+1],"higher")) == 0) precision = POSBB_PRECISIONHIGHER;
  85.      if ((strcmp(argv[c+1],"highest")) == 0) precision = POSBB_PRECISIONHIGHEST;
  86.       }
  87.    }
  88.  
  89.    if (fi == 0) fi = fopen(POSBB_DEFRESULTFILE,"w");
  90.    IntuitionBase = (struct IntuitionBase *) OpenLibrary("intuition.library",0);
  91.    GfxBase = (struct GfxBase *) OpenLibrary("graphics.library",0);
  92.    msgport = (struct MsgPort *) CreatePort(NULL,NULL);
  93.    timereq = (struct timerequest *) CreateExtIO( msgport,sizeof(struct timerequest));
  94.    OpenDevice(TIMERNAME,UNIT_MICROHZ,timereq,NULL);
  95.    TimerBase = timereq->tr_node.io_Device;
  96.    window = (struct Window *) OpenWindowTags(NULL,WA_Left,0,WA_AutoAdjust,TRUE,WA_Top,0,WA_InnerWidth,320,WA_InnerHeight,256,WA_Title,"POSBB Test Window",WA_DragBar,TRUE,WA_DepthGadget,TRUE,NULL);
  97.  
  98.   /* Draw the logo in the window */
  99.   /* Working in progress ! */
  100.   #ifdef PRINTLOGOWORKS        /* this turns off logo section if PRINTLOGOWORKS isn't defined.  */
  101.   posbb_logo_bm = (struct BitMap *) POSBB_AllocMem(sizeof(struct BitMap),MEMF_CHIP);  /* Allocate memory for the bitmap */
  102.   posbb_logo_bm->BytesPerRow = 20;
  103.   posbb_logo_bm->Rows = 257;
  104.   posbb_logo_bm->Flags = BMF_DISPLAYABLE;
  105.   posbb_logo_bm->Depth = 2;
  106.   posbb_logo_bm->Planes[0] = (UBYTE *)posbb_logo_bm[0];
  107.   posbb_logo_bm->Planes[1] = (UBYTE *)posbb_logo_bm[1];
  108.   BltBitMapRastPort(posbb_logo_bm,0,0,window->RPort,0,0,320,256,0x0C0);
  109.   Delay(50);
  110.   #endif
  111.  
  112.    Perform_Test(tests,precision,freeze,mt);
  113.  
  114.   if (window) CloseWindow(window);
  115.   if (IntuitionBase) CloseLibrary(IntuitionBase);
  116.   if (GfxBase) CloseLibrary(GfxBase);
  117.   if (timereq) CloseDevice(timereq);
  118.   if (timereq) DeleteExtIO(timereq);
  119.   if (msgport) DeleteMsgPort(msgport);
  120.  
  121.  if (fi) fclose( ( FILE * ) fi );
  122.    exit(0);
  123. }
  124.  
  125.  
  126.