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

  1. /*
  2.  
  3. Figure 7
  4. ========
  5.  
  6.  
  7. /* THIS IS THE MAIN PROGRAM FOR SWPSCR */
  8.  
  9. #include <c:\msc\include\dos.h>
  10. #include <c:\msc\include\memory.h>
  11. #include <c:\msc\include\stdio.h>
  12. #include <c:\emm\demo\emm.h>
  13.  
  14. /* set up size and base of video ram */
  15.  
  16. #define VIDEO_RAM_SIZE 4000
  17. #define VIDEO_RAM_BASE 0XB8000000
  18. union REGS    inregs,    outregs;
  19. struct SREGS     segregs ;
  20.  
  21. char far *video_ram_ptr =  {VIDEO_RAM_BASE}; /* video  start address
  22.                                                 (CGA) */
  23. unsigned long int video_ram_size ={4000};    /* bytes in video ram */
  24. unsigned int emm_handle ;                    /* emm handle */
  25. char emm_device_name[] = "EMMXXXX0";         /* Device Nmae of EMM */
  26. char emm_handle_name[8] ="shared" ;          /* name for handle to be 
  27.                                                 shared */
  28. char far *emm_ptr;                           /* pointer to page 
  29.                                                 frame */
  30. char far *(*page_ptr) ;                      /* pointer to page in 
  31.                                                 the frame */
  32. int pages_needed = 4;
  33. struct log_phys {
  34.   int log_page_number;
  35.   int phys_page_number;
  36.        } current_pages [4] ;
  37. struct log_phys far *map_unmap_ptr ;
  38. int  result ;  /* result passed back from function calls */
  39.  
  40. main ()
  41. {
  42.    /***************************************************************/
  43.    /* Check for a expanded memory manager of 4.0 or greater.      */
  44.    /***************************************************************/
  45.  
  46.    check_emm_version_number();
  47.    
  48.    /***************************************************************/
  49.    /* Cet four pages of expanded memory.                          */
  50.    /***************************************************************/
  51.  
  52.    result = get_expanded_memory(&emm_ptr, pages_needed, &emm_handle, 
  53.                                 emm_handle_name);
  54.    if (result != 0) exit(1);
  55.    
  56.    /***************************************************************/
  57.    /* Map in needed pages                                         */
  58.    /***************************************************************/
  59.  
  60.    result = map_unmap_multiple_pages (current_pages, emm_handle, 1);
  61.  
  62.    /***************************************************************/
  63.    /* Copy video screen to logical page 0.                        */
  64.    /***************************************************************/
  65.  
  66.    move_exchg_to_expanded(MOVE_MEMORY_REGION, /* Move to convent- */
  67.                           video_ram_ptr,      /* ional ram area   */
  68.                           emm_handle,         /* handle number    */
  69.                           0,                  /* to physical page */
  70.                           video_ram_size);    /* the number bytes */
  71.    
  72.    
  73.  
  74.    /* make a null video screen at logical page 1 */
  75.  
  76.    page_ptr = (emm_ptr + 0x4000);
  77.    memset (page_ptr, 0, VIDEO_RAM_SIZE);
  78.  
  79.    /***************************************************************/
  80.    /* Unmap all of the pages so that they are proteced.           */
  81.    /***************************************************************/
  82.  
  83.    result = map_unmap_multiple_pages (current_pages, emm_handle, 0);
  84.  
  85.    /* exit to Dos */
  86.    
  87. }