home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / MCOMM530.ZIP / PUSHPOP.C < prev    next >
Text File  |  1990-06-22  |  2KB  |  50 lines

  1.  
  2. /** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  3. *                                                                           *
  4. *       P U S H  /  P O P   S C R E E N S   T O   N E A R   M E M O R Y     *
  5. *                Mike Dumdei, 6 Holly Lane, Texarkana TX  75503             *
  6. *                    Requires ASM modules PO_SCRN & PU_SCRN                 *
  7. *                                                                           *
  8. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
  9. #if defined(__TURBOC__)
  10.   #include <alloc.h>
  11. #else
  12.   #include <malloc.h>
  13. #endif
  14.  
  15. int pu_scrnd(int, int, int, int, char *);
  16. int po_scrnd(char *);
  17.  
  18. static char *ScrnPtrAry[10];            /* max of 10 screens may be pushed */
  19. static char **ScrnPtr = ScrnPtrAry;
  20. static char CurntScrn = -1;
  21.  
  22. /*
  23.         p u s h s c r n
  24. */
  25. int pushscrn(int row, int col, int nrows, int ncols)
  26. {
  27.     if (CurntScrn == 9)
  28.         return (-1);                 /* can't push it if 10 already pushed */
  29.     if (!(*ScrnPtr = malloc(2 * nrows * ncols + 16)))
  30.         return (-2);                    /* can't push it if no memory left */
  31.     pu_scrnd(row, col, nrows, ncols, *ScrnPtr);
  32.     CurntScrn++, ScrnPtr++;
  33.     return (0);         /* push scrn, update variables, and return success */
  34. }
  35.  
  36. /*
  37.         p o p s c r n
  38. */
  39. int popscrn(void)
  40. {
  41.     if (CurntScrn < 0)
  42.         return (-1);                         /* can't pop it if not pushed */
  43.     --CurntScrn, --ScrnPtr;
  44.     po_scrnd(*ScrnPtr);
  45.     free(*ScrnPtr);
  46.     return (0);         /* adj vars, pop the screen, free the mem, & retrn */
  47. }
  48.  
  49.  
  50.