summaryrefslogtreecommitdiff
path: root/s3switch.c
diff options
context:
space:
mode:
Diffstat (limited to 's3switch.c')
-rw-r--r--s3switch.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/s3switch.c b/s3switch.c
index 3b295f5..6cbec48 100644
--- a/s3switch.c
+++ b/s3switch.c
@@ -411,6 +411,31 @@ set_new_tvstate( int tvstate )
return;
}
+void
+dump_regs()
+{
+ int i;
+
+ // Print out sequential registers
+ printf( "\nSR x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF" );
+ for ( i = 0; i < 0x70; i++ ) {
+ if ( !(i % 16) )
+ printf( "\nSR%xx ", i >> 4 );
+ outb( i, 0x3c4 );
+ printf( " %02x", inb( 0x3c5 ) );
+ }
+ printf( "\n" );
+
+ // Print out CRT controller registers
+ printf( "\nCR x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF" );
+ for ( i = 0; i < 0xb7; i++ ) {
+ if ( !(i % 16) )
+ printf( "\nCR%xx ", i >> 4 );
+ outb( i, 0x3d4 );
+ printf( " %02x", inb( 0x3d5 ) );
+ }
+ printf( "\n" );
+}
int
main( int argc, char ** argv )
@@ -418,6 +443,7 @@ main( int argc, char ** argv )
int quiet = 0;
int newstate = 0;
int newtv = 0;
+ int regdump = 0;
// Scan through the argument list. We do very primitive checking here.
@@ -441,6 +467,8 @@ main( int argc, char ** argv )
newtv = TV_FORMAT_NTSC;
else if( strcasecmp( *argv, "pal" ) == 0 )
newtv = TV_FORMAT_PAL;
+ else if( strcasecmp( *argv, "regdump" ) == 0)
+ regdump = 1;
else if( strcmp( *argv, "-V" ) == 0 )
{
printf("s3switch " S3SWITCH_VERSION_STRING "\n");
@@ -478,6 +506,9 @@ main( int argc, char ** argv )
if( !quiet )
print_current_state( );
+ if( regdump )
+ dump_regs( );
+
IOAccess( 0 );
return 0;