home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / dos / prg / sphinx / examples / vga / pcx.c__ < prev    next >
Encoding:
Text File  |  1994-04-22  |  2.0 KB  |  109 lines

  1. /*
  2.     SPHINX Programming 1994
  3.     NAME:  PCX.C--
  4.     DESCRIPTION:  This program demonstrates some of the PCX display routines
  5.                   currently available in C--.
  6.     LAST MODIFIED:  22 Apr. 1994
  7. */
  8.  
  9.  
  10. ?parsecommandline  TRUE
  11.  
  12.  
  13. ?include "PCX.H--"
  14.  
  15. ?include "VIDEO.H--"
  16. ?include "DOS.H--"
  17. ?include "KEYCODES.H--"
  18. ?include "WRITE.H--"
  19. ?include "VGA.H--"
  20. ?include "STRING.H--"
  21.  
  22.  
  23. ?define PALSIZE  256*3
  24. byte palette[PALSIZE];    // palette buffer
  25.  
  26. ?define BUFSEGSIZE 4095    // 4095 paragraphs == 65520 bytes
  27. word bufseg;
  28.  
  29.  
  30. void display_info ()
  31. {
  32. WRITESTR("\n");
  33. WRITESTR(PARAMSTR(0));
  34. WRITESTR(" Loaded.\n");
  35.  
  36. WRITESTR("\nxmin = ");
  37. WRITEWORD(PCX_xmin);
  38. WRITESTR("    xmax = ");
  39. WRITEWORD(PCX_xmax);
  40.  
  41. WRITESTR("\nymin = ");
  42. WRITEWORD(PCX_ymin);
  43. WRITESTR("    ymax = ");
  44. WRITEWORD(PCX_ymax);
  45.  
  46. WRITESTR("\nhres = ");
  47. WRITEWORD(PCX_hres);
  48. WRITESTR("    vres = ");
  49. WRITEWORD(PCX_vres);
  50.  
  51. WRITESTR("\nbits_per_pixel = ");
  52. WRITEWORD(PCX_bits_per_pixel);
  53.  
  54. WRITESTR("\ncolor_planes = ");
  55. WRITEWORD(PCX_color_planes);
  56.  
  57. WRITESTR("\nbytes_per_line = ");
  58. WRITEWORD(PCX_bytes_per_line);
  59.  
  60. WRITESTR("\npalette type = ");
  61. WRITEWORD(PCX_palette_type);
  62.  
  63. WRITESTR("\n\nPress any key to display...");
  64. BIOSREADKEY();
  65. }
  66.  
  67.  
  68. void main ()
  69. {
  70. IF( PARAMCOUNT() != 1 )
  71.     {WRITESTR("\nUSAGE:  PCX <pcx file to read>\n");
  72.     EXIT(1);
  73.     }
  74.  
  75. bufseg = GETMEM(BUFSEGSIZE);
  76. IF( bufseg == 0 )
  77.     {WRITESTR("Unable to allocate memory.\n");
  78.     EXIT(1);
  79.     }
  80.  
  81. IF( byte readPCX(PARAMSTR(0),bufseg,0,BUFSEGSIZE*16,pcx_cut) != pcx_e_ok )
  82.     {WRITESTR("Not valid PCX file.\n");
  83.     EXIT(2);
  84.     }
  85.  
  86. IF( byte readPCXpalette(PARAMSTR(0),DS,#palette) != pcx_e_ok )
  87.     {WRITESTR("Error reading palette.\n");
  88.     EXIT(4);
  89.     }
  90.  
  91. display_info();
  92.  
  93. SETVIDEOMODE(vid_320x200_256);
  94.  
  95. SETVGAPALETTE( ,0,256,#palette);
  96.  
  97. $ PUSH DS
  98. DS = bufseg;
  99. putimage19(0,0,0);    //  put onto the screen
  100. $ POP DS
  101.  
  102. BIOSREADKEY();  // wait for a key
  103.  
  104.  
  105. SETVIDEOMODE(vid_text80c);
  106. }
  107.  
  108.  
  109. /* end of PCX.C-- */