home *** CD-ROM | disk | FTP | other *** search
/ No Fragments Archive 12: Textmags & Docs / nf_archive_12.iso / MAGS / SOURCES / ATARI_SRC.ZIP / atari source / HDX_BACK / BNCHMARK / MEMTST1.C < prev    next >
Encoding:
C/C++ Source or Header  |  2001-02-09  |  3.3 KB  |  158 lines

  1. #include <osbind.h>
  2. #include <stdio.h>
  3. #include <stat.h>
  4. #include <bios.h>
  5.  
  6. extern int errno;
  7.  
  8. struct disk_info {
  9.     unsigned long di_free; /* free allocation units */
  10.     unsigned long di_many; /* how many AUs on disk */
  11.     unsigned long di_ssize;/* sector size - bytes per sector*/
  12.     unsigned long di_spau; /* sectors per AU */
  13. };
  14.  
  15. main()
  16.  
  17. {
  18.  
  19.     int hand1, hand2;
  20.     int i, status;
  21.     char *buffer, *tmp;
  22.     long copysize, rdsize, wrsize;
  23.     long fsect;
  24.     long fbyte;
  25.     long tsect;
  26.     long tbyte;
  27.     int dd;
  28.     struct disk_info dev;
  29.     struct bpb *bp;
  30.  
  31.     DMABUFFER mydta;
  32.  
  33.     bp = (struct bpb *) Getbpb(2);
  34.     dd = Dgetdrv();     /*the current partition, C is 2 */
  35.  
  36.     /*add 1, because the Dfree thinks drive C is 3*/
  37.     /*
  38.     Dfree(&dev, dd+7);
  39.     */
  40.     Dfree(&dev, dd+3);    
  41.     fsect = dev.di_free*dev.di_spau;
  42.     tsect = dev.di_spau*dev.di_many;
  43.     fbyte = fsect*dev.di_ssize;
  44.     tbyte = tsect*dev.di_ssize;
  45.     /*
  46.     if ((hand1 = Fopen("a:\\memtst1.c", 0)) < 0)     {
  47.         fprintf(stderr, "\nCan't open input file.");
  48.         errno = -hand1;
  49.         perror("Fopen failed");
  50.         Pterm(1);
  51.     }
  52.     if ((hand2 = Fopen("c:\\memtst1.cb", 1)) < 0)     {
  53.         fprintf(stderr, "\nCan't open input file.");
  54.         errno = -hand2;
  55.         perror("Fopen failed");
  56.         Pterm(1);
  57.     }
  58.     Fsetdta(mydta=(struct DMABUFFER *)malloc(sizeof(struct DMABUFFER)));
  59.     Fsetdta(&mydta);
  60.  
  61.     if ((status=Fsfirst("a:\\memtst1.c", 0xf7)) != 0)    {
  62.         Fclose(hand1);
  63.         fprintf(stderr,"\nError getting stats on input file.");
  64.         errno = -status;
  65.         perror("Fopen failed");
  66.         Pterm(1);
  67.     }
  68.  
  69.     status = mydta.d_fattr & 7;
  70.     */
  71.     status = 0x00;
  72.     if ((hand2=Fcreate("c:\\memtst1.cmm", status)) < 0)    {
  73.         /*
  74.         Fclose(hand1);
  75.         */
  76.         fprintf(stderr, "\nCan't creat a test file.");
  77.         errno = -hand2;
  78.         perror("Fcreat failed");
  79.         Pterm(1);
  80.     }
  81.     buffer = (char *)malloc(4096);
  82.     tmp = buffer;
  83.     for (i=0; i < 4095; i++)    {
  84.         *tmp++ = 'F';
  85.     }
  86.     *tmp = '0';
  87.  
  88.     /*
  89.     rdsize = mydta.d_fsize;
  90.     */
  91.  
  92.     wrsize = fbyte + 2*512;
  93.     copysize = wrsize;
  94.     while(copysize > 4096)    {
  95.         /*
  96.         if ((status=Fread(hand1, 4096L, buffer)) < 0)    {
  97.             Fclose(hand1);
  98.             Fclose(hand2);
  99.             Fdelete("memtst1.cmm");
  100.             fprintf(stderr, "\nRead error on test file");
  101.             errno = -status;
  102.             perror("Read failure");
  103.             Pterm(1);
  104.         }
  105.         */
  106.         if ((status=Fwrite(hand2, 4096L, buffer)) < 0)    {
  107.             Fclose(hand1);
  108.             Fclose(hand2);
  109.             Fdelete("memtst1.cmm");
  110.             fprintf(stderr, "\nWrite error on test file");
  111.             errno = -status;
  112.             perror("Write failure");
  113.             Pterm(1);
  114.         }
  115.         copysize -= 4096;
  116.     }
  117.     if (copysize > 0)    {
  118.         /*
  119.         if ((status=Fread(hand1, copysize, buffer)) < 0)    {
  120.             Fclose(hand1);
  121.             Fclose(hand2);
  122.             Fdelete("memtst1.cmm");
  123.             fprintf(stderr, "\nRead error on test file");
  124.             errno = -status;
  125.             perror("Read failure");
  126.             Pterm(1);
  127.         }
  128.         */
  129.         if ((status=Fwrite(hand2, copysize, buffer)) < 0)    {
  130.             Fclose(hand1);
  131.             Fclose(hand2);
  132.             Fdelete("memtst1.cmm");
  133.             fprintf(stderr, "\nWrite error on test file");
  134.             errno = -status;
  135.             perror("Write failure");
  136.             Pterm(1);
  137.         }
  138.         /*
  139.         if ((status=Rwabs(1, buffer, 2060, 3, 2)) < 0)    {
  140.             Fclose(hand1);
  141.             Fclose(hand2);
  142.             Fdelete("memtst1.cmm");
  143.             fprintf(stderr, "\nWrite error on test file");
  144.             errno = -status;
  145.             perror("Write failure");
  146.             Pterm(1);
  147.         }
  148.         */
  149.     }
  150.     /*
  151.     Fclose(hand1);
  152.     printf("Test file was created\n");
  153.     Fsetdta(NULL);
  154.     */
  155.     Fclose(hand2);
  156.     Pterm0();
  157. }
  158.