Edit I/O routines so R/Ws only log if the register is unknown

Wed, 01 Dec 2010 21:55:09 +0000

author
Philip Pemberton <philpem@philpem.me.uk>
date
Wed, 01 Dec 2010 21:55:09 +0000
changeset 21
e31d2ede6c6b
parent 20
bea459bc22a8
child 22
95a309c51464

Edit I/O routines so R/Ws only log if the register is unknown

src/main.c file | annotate | diff | revisions
     1.1 diff -r bea459bc22a8 -r e31d2ede6c6b src/main.c
     1.2 --- a/src/main.c	Wed Dec 01 21:29:44 2010 +0000
     1.3 +++ b/src/main.c	Wed Dec 01 21:55:09 2010 +0000
     1.4 @@ -23,8 +23,6 @@
     1.5  {
     1.6  	uint32_t data = 0xFFFFFFFF;
     1.7  
     1.8 -	printf("RD32 %08X %d", address, state.romlmap);
     1.9 -
    1.10  	// If ROMLMAP is set, force system to access ROM
    1.11  	if (!state.romlmap)
    1.12  		address |= 0x800000;
    1.13 @@ -41,9 +39,10 @@
    1.14  				((uint32_t)state.ram[address + 1] << 16) |
    1.15  				((uint32_t)state.ram[address + 2] << 8)  |
    1.16  				((uint32_t)state.ram[address + 3]));
    1.17 +	} else {
    1.18 +		// I/O register -- TODO
    1.19 +		printf("RD32 %08X [unknown I/O register]\n", address);
    1.20  	}
    1.21 -
    1.22 -	printf(" ==> %08X\n", data);
    1.23  	return data;
    1.24  }
    1.25  
    1.26 @@ -51,8 +50,6 @@
    1.27  {
    1.28  	uint16_t data = 0xFFFF;
    1.29  
    1.30 -	printf("RD16 %08X %d", address, state.romlmap);
    1.31 -
    1.32  	// If ROMLMAP is set, force system to access ROM
    1.33  	if (!state.romlmap)
    1.34  		address |= 0x800000;
    1.35 @@ -65,9 +62,11 @@
    1.36  		// RAM
    1.37  		data = ((state.ram[address + 0] << 8) |
    1.38  				(state.ram[address + 1]));
    1.39 +	} else {
    1.40 +		// I/O register -- TODO
    1.41 +		printf("RD16 %08X [unknown I/O register]\n", address);
    1.42  	}
    1.43  
    1.44 -	printf(" ==> %04X\n", data);
    1.45  	return data;
    1.46  }
    1.47  
    1.48 @@ -75,8 +74,6 @@
    1.49  {
    1.50  	uint8_t data = 0xFF;
    1.51  
    1.52 -	printf("RD 8 %08X %d ", address, state.romlmap);
    1.53 -
    1.54  	// If ROMLMAP is set, force system to access ROM
    1.55  	if (!state.romlmap)
    1.56  		address |= 0x800000;
    1.57 @@ -87,9 +84,11 @@
    1.58  	} else if (address < state.ram_size) {
    1.59  		// RAM access
    1.60  		data = state.ram[address + 0];
    1.61 +	} else {
    1.62 +		// I/O register -- TODO
    1.63 +		printf("RD 8 %08X [unknown I/O register]\n", address);
    1.64  	}
    1.65  
    1.66 -	printf("==> %02X\n", data);
    1.67  	return data;
    1.68  }
    1.69  
    1.70 @@ -100,8 +99,6 @@
    1.71  	if (!state.romlmap)
    1.72  		address |= 0x800000;
    1.73  
    1.74 -	printf("WR32 %08X %d %02X\n", address, state.romlmap, value);
    1.75 -
    1.76  	if ((address >= 0x800000) && (address <= 0xBFFFFF)) {
    1.77  		// ROM access
    1.78  		// TODO: bus error here? can't write to rom!
    1.79 @@ -113,7 +110,8 @@
    1.80  		state.ram[address + 3] =  value        & 0xff;
    1.81  	} else {
    1.82  		switch (address) {
    1.83 -			case 0xE43000:	state.romlmap = ((value & 0x8000) == 0x8000);
    1.84 +			case 0xE43000:	state.romlmap = ((value & 0x8000) == 0x8000); break;	// GCR3: ROMLMAP
    1.85 +			default:		printf("WR32 %08X ==> %02X\n", address, state.romlmap, value); break;
    1.86  		}
    1.87  	}
    1.88  }
    1.89 @@ -124,8 +122,6 @@
    1.90  	if (!state.romlmap)
    1.91  		address |= 0x800000;
    1.92  
    1.93 -	printf("WR16 %08X %d %02X\n", address, state.romlmap, value);
    1.94 -
    1.95  	if ((address >= 0x800000) && (address <= 0xBFFFFF)) {
    1.96  		// ROM access
    1.97  		// TODO: bus error here? can't write to rom!
    1.98 @@ -135,7 +131,8 @@
    1.99  		state.ram[address + 1] =  value        & 0xff;
   1.100  	} else {
   1.101  		switch (address) {
   1.102 -			case 0xE43000:	state.romlmap = ((value & 0x8000) == 0x8000);
   1.103 +			case 0xE43000:	state.romlmap = ((value & 0x8000) == 0x8000); break;	// GCR3: ROMLMAP
   1.104 +			default:		printf("WR16 %08X %d %02X\n", address, state.romlmap, value); break;
   1.105  		}
   1.106  	}
   1.107  }
   1.108 @@ -146,8 +143,6 @@
   1.109  	if (!state.romlmap)
   1.110  		address |= 0x800000;
   1.111  
   1.112 -	printf("WR 8 %08X %d %02X\n", address, state.romlmap, value);
   1.113 -
   1.114  	if ((address >= 0x800000) && (address <= 0xBFFFFF)) {
   1.115  		// ROM access
   1.116  		// TODO: bus error here? can't write to rom!
   1.117 @@ -155,7 +150,8 @@
   1.118  		state.ram[address] = value & 0xff;
   1.119  	} else {
   1.120  		switch (address) {
   1.121 -			case 0xE43000:	state.romlmap = ((value & 0x80) == 0x80);
   1.122 +			case 0xE43000:	state.romlmap = ((value & 0x80) == 0x80); break;	// GCR3: ROMLMAP
   1.123 +			default:		printf("WR 8 %08X %d %02X\n", address, state.romlmap, value); break;
   1.124  		}
   1.125  	}
   1.126  }