home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / system / vmem / demo / demo.c < prev    next >
C/C++ Source or Header  |  1995-02-27  |  2KB  |  120 lines

  1. #include <Libraries/VMem.h>
  2. #include <Proto/Exec.h>
  3. #include <Proto/DOS.h>
  4. #include <StdIO.h>
  5. #include <StdLib.h>
  6.  
  7.  
  8.  
  9. char __stdiowin[]="CON:10/20/620/120/";
  10. char __stdiov37[]="/AUTO/CLOSE/WAIT";
  11.  
  12.  
  13. #define NELS    (10)
  14. #define ELSIZE  (60000)
  15.  
  16.  
  17. struct Library *VMemBase;
  18. vmBlock *b;
  19. ULONG i;
  20. UBYTE *data;
  21.  
  22.  
  23. UBYTE HeaderText[]="\f\n\
  24.                     * VIRTUAL MEMORY DEMONSTRATION *\n\
  25.                     Courtesy of vmem.library (c)1994\n\
  26.                             By Lee Braiden\n\
  27. \n\
  28. \n\
  29.         THIS IS A (TOTALLY ?) USELESS DEMO PROGRAM FOR VMEM\n\
  30. \n\
  31.         NOTE THAT VMEM MUST BE INSTALLED, AND FAST MEM EMULATION\n\
  32.         MUST BE SET TO CHIP/PUBLIC TO RUN THIS ON AN UNEXPANDED\n\
  33.         AMIGA. SEE DEMO.manual FOR MORE INFO.\n\
  34. \n\
  35. \n\
  36.     Enter up to 10 lines of text,finishing each line with <Return>\n\
  37. when you want to stop, type <Esc><Return>.\n\
  38. \n\
  39.     When your system runs out of memory for all the lines,vmem will kick-in\n\
  40. and start moving them onto disk to save memory. When you've finished,\n\
  41. they will be moved back into mem, and typed back to this window.\n\n\n";
  42.  
  43.  
  44.  
  45.  
  46. void CloseDown(char *mess);
  47.  
  48. void CloseDown(char *mess)
  49. {
  50.     if(mess)
  51.     {
  52.         printf("*** Virtual Memory Test :\n\t%s !\n",mess);
  53.         Delay(50*3);
  54.     };
  55.  
  56.     if(b)
  57.     {
  58.         if(data)
  59.         {
  60.             vmUnLock(b,i);
  61.         };
  62.  
  63.         vmFreeBlock(b);
  64.     };
  65.  
  66.     if(VMemBase)
  67.         CloseLibrary(VMemBase);
  68.  
  69.     exit(0);
  70. }
  71.  
  72. void main()
  73. {
  74.     if(VMemBase = OpenLibrary("vmem.library",VMEM_VERSION))
  75.     {
  76.         if(!(b = vmAllocBlock(ELSIZE,NELS,MEMF_FAST|MEMF_CLEAR)))
  77.             CloseDown("Couldn't alloc vmem");
  78.  
  79.         puts(HeaderText);
  80.  
  81.         for(i=0;i<NELS;i++)
  82.         {
  83.             if(!(data = vmLock(b,i)))
  84.                 CloseDown("Couldn't Lock El");
  85.  
  86.             printf(" > ");
  87.             fflush(stdout);
  88.             gets(data);
  89.  
  90.             if(*data == '\x1B')
  91.             {
  92.                 vmUnLock(b,i);
  93.                 data = NULL;
  94.                 goto Next;
  95.             };
  96.  
  97.             vmUnLock(b,i);
  98.             data = NULL;
  99.         };
  100. Next:
  101.         printf("\n\n\n\x1B[41m\x1B[33m");
  102.  
  103.         for(i=0;i<NELS;i++)
  104.         {
  105.             if(!(data = vmLock(b,i)))
  106.                 CloseDown("Couldn't Lock El");
  107.  
  108.             puts(data);
  109.  
  110.             vmUnLock(b,i);
  111.             data = NULL;
  112.         };
  113.  
  114.         printf("\x1B[0m\f");
  115.  
  116.         CloseDown("\n\n\n\tAll OK");
  117.     }else
  118.         CloseDown("Couldn't open vmem.library");
  119. }
  120.