home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / msj / msjv3_1 / lim4 / mp_unmp.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-03-02  |  1.1 KB  |  46 lines

  1. /*
  2.  
  3. Figure 5
  4. ========
  5.  
  6. */
  7.  
  8. /******************************************************************/
  9. /* This function implements MAP/UNMAP MULTIPLE PAGES emm function */
  10. /******************************************************************/
  11.  
  12. int map_unmap_multiple_pages (log_phys_pages,handle,map_unmap)
  13.  
  14. struct log_phys *log_phys_pages ;  /* pointer to log_phys struct */
  15. unsigned int handle;               /* handle to map or unmap */
  16. unsigned int map_unmap;            /* 0 = map, 1 = unmap */
  17. {
  18.  int i ;
  19.  struct log_phys *temp_ptr;
  20.  
  21.  /* Map mulitple logical pages 0 -3 to logical pages 0 - 3 */
  22.  
  23.  temp_ptr = log_phys_pages;
  24.    
  25.  for (i=0 ; i<=3; i++) 
  26.  {
  27.    log_phys_pages->phys_page_number = i;
  28.    if (map_unmap == 1)
  29.     log_phys_pages->log_page_number = i;
  30.    else
  31.     log_phys_pages->log_page_number = 0xFFFF ; 
  32.  
  33.    log_phys_pages++ ;
  34.        
  35.  }
  36.  
  37.  inregs.x.ax = MAP_UNMAP_MULTIPLE_PAGES ;
  38.  inregs.x.dx = handle;
  39.  inregs.x.cx = 4;
  40.  inregs.x.si = FP_OFF(temp_ptr);
  41.  segregs.ds  = FP_SEG(temp_ptr);
  42.  int86x(EMM_INT,&inregs,&outregs,&segregs);
  43.  if (outregs.h.ah != 0) return(1);
  44.  return(0);
  45.