home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / GianuzziV / SysOp / esame96 / test1.c < prev    next >
C/C++ Source or Header  |  1996-12-01  |  1KB  |  54 lines

  1. #include <stdlib.h>
  2. #include <sys/types.h>
  3. #include <errno.h>
  4. #include <signal.h>
  5. #include <stdlib.h>
  6. #include <unistd.h>
  7. #include <fcntl.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <sys/ioctl.h>
  11. #include <fcntl.h>
  12. #include <minix/video.h>
  13.  
  14. int video;
  15. char *buffer;
  16.  
  17. char palette[768];
  18. /* Funzione che assegna comodamente tutte e tre le componenti ad un colore */
  19. void setcolor(int c, int r, int g, int b)
  20. {
  21.     palette[(c * 3) + 0] = r;  /* ogni 3 byte un colore */
  22.     palette[(c * 3) + 1] = g;
  23.     palette[(c * 3) + 2] = b;
  24. }
  25.  
  26.  
  27. int main(void)
  28. {
  29.   int c;
  30. /* si alloca il display di 320*200 punti */
  31.     if (!(buffer = malloc(320*200)))
  32.     {
  33.         printf("la RAM... compratela!\n");
  34.         exit(0);
  35.     }
  36.  
  37.  
  38.     video = open("/dev/video", O_RDWR); /* apro il device */
  39.  
  40. /* paciugo la pagina virtuale per vedere qualche cosa (in questo caso 
  41.  * delle righe)
  42.  */
  43.     setcolor(1, 0, 63, 0);     /* imposto il colore 1 a verde */
  44.     setcolor(0, 63, 0, 0);     /* imposto il colore 0 a rosso */
  45.     ioctl(video, REFRESH_PALETTE, palette);
  46.     for (c = 0; c < 320 * 200; c++)
  47.         buffer[c] = c % 16? 0 : 1;
  48.     ioctl(video, COPY_BUFFER, buffer); 
  49.         /*visualizzo la pagina virtuale */
  50.     getchar();
  51.     close(video);
  52.     return 0;
  53. }
  54.