//------------------------------------------------------------------- // trysis.cpp // // This program tests the 'mysis.c' character device-driver. // // programmer: ALLAN CRUSE // written on: 22 APR 2003 //------------------------------------------------------------------- #include // for printf(), perror() #include // for open() #include // for exit() #include // for read(), write(), close() #include // for mmap(), munmap() #define PEL_SIZE 4 #define HRES 1280 #define VRES 960 #define N_PELS (HRES*VRES) #define FB_BYTES (N_PELS*PEL_SIZE) #define FILENAME "/dev/vram" void draw_border( long *vram, int indent, long color ) { int r = indent; int k = indent; do { vram[ r*HRES + k ] = color; k += 1; } while( k < HRES-1-indent ); do { vram[ r*HRES + k ] = color; r += 1; } while( r < VRES-1-indent ); do { vram[ r*HRES + k ] = color; k -= 1; } while( k > indent ); do { vram[ r*HRES + k ] = color; r -= 1; } while( r > indent ); } int main( int argc, char **argv ) { int fd = open( FILENAME, O_RDWR ); if ( fd < 0 ) { perror( FILENAME ); exit(1); } int filesize = lseek( fd, 0, SEEK_END ); lseek( fd, 0, SEEK_SET ); int prot = PROT_READ | PROT_WRITE; int flags = MAP_SHARED; int offset = 0; long *vram = (long*)mmap( 0, filesize, prot, flags, fd, offset ); if ( vram < 0 ) { perror( "mmap" ); exit(1); } // try doing some direct drawing for (int i = 0; i < VRES/2; i++) draw_border( vram, i, (i*10)<<8 ); pause(); munmap( vram, filesize ); }