//------------------------------------------------------------------- // vgascroll.cpp // // This program scrolls through video display memory (using the // 'write()' capability implemented by our 'sischip.c' module). // // programmer: ALLAN CRUSE // date begun: 08 MAY 2003 //------------------------------------------------------------------- #include // for printf(), perror() #include // for open() #include // for exit() #include // for read(), write(), close() #define VRES 1024 #define HRES 1280 char filename[] = "/proc/sischip"; int main( int argc, char **argv ) { int sis = open( filename, O_RDWR ); if ( sis < 0 ) { perror( filename ); exit(1); } unsigned long start_address_offset; int nbytes = read( sis, &start_address_offset, 4 ); printf( "\nnbytes=%d ", nbytes ); printf( " start_address_offset=%08X \n", start_address_offset ); printf( "\nPress to begin video memory scroll... " ); getchar(); int i, j; int maxi = (16<<20)/HRES - VRES; int delay = 2000000; unsigned long where = start_address_offset; for (i = 0; i < maxi; i++) { where += HRES; write( sis, &where, 4 ); for (j = 0; j < delay; j++); } for (j = 0; j < 100*delay; j++); for (i = 0; i < maxi; i++) { where -= HRES; write( sis, &where, 4 ); for (j = 0; j < delay; j++); } write( sis, &start_address_offset, 4 ); }