modified: source/pinport.c

modified:   source/pinport.h
	-fixing bunch of compile errors and stupid mistakes.
	go to sleep and stop writing bad code...
This commit is contained in:
Paul Molloy 2016-11-24 07:24:12 -06:00
parent ce2a5aecca
commit 47545169ee
2 changed files with 36 additions and 22 deletions

View File

@ -330,7 +330,7 @@ uint8_t pinport_opcode_8b_operand( uint8_t opcode, uint8_t operand )
//NES: ADDRX[7:0] -> EXP PORT [8:1] //NES: ADDRX[7:0] -> EXP PORT [8:1]
//SNES: ADDRX[7:0] -> CPU A[23:16] //SNES: ADDRX[7:0] -> CPU A[23:16]
case ADDRX_SET: case ADDRX_SET:
_ADDRX_SET(operant); _ADDRX_SET(operand);
break; break;
//Set ADDR/DATA bus DDR registers with bit granularity //Set ADDR/DATA bus DDR registers with bit granularity
@ -429,10 +429,11 @@ uint8_t pinport_opcode_16b_operand( uint8_t opcode, uint8_t operandMSB, uint8_t
// This is important for NES carts with on board CHR-ROM and VRAM for 4screen mirroring. // This is important for NES carts with on board CHR-ROM and VRAM for 4screen mirroring.
case NPPU_ADDR_SET: case NPPU_ADDR_SET:
ADDR_OUT = operandLSB; ADDR_OUT = operandLSB;
// below PPU $2000, A13 clear, SET PPU /A13 if (operandMSB < 0x20) { // below PPU $2000, A13 clear, SET PPU /A13
if (operandMSB < 0x20) _ADDRH_SET(operandMSB & PPU_A13N); _ADDRH_SET(operandMSB & PPU_A13N);
// above PPU $1FFF, A13 set, PPU /A13 already clear in operandMSB } else { // above PPU $1FFF, A13 set, PPU /A13 already clear in operandMSB
else _ADDRH_SET(operandMSB); _ADDRH_SET(operandMSB);
}
break; break;
default: default:
@ -473,10 +474,10 @@ uint8_t pinport_opcode_24b_operand( uint8_t opcode, uint8_t operandMSB, uint8_t
ADDR_OUT = operandLSB; ADDR_OUT = operandLSB;
_DATA_OP(); _DATA_OP();
DATA_OUT = operandMID; DATA_OUT = operandMID;
_CLK_AHL(); _AHL_CLK();
DATA_OUT = operandMSB; DATA_OUT = operandMSB;
_CLK_AXL(); _AXL_CLK();
DATA_IP(); _DATA_IP();
break; break;
default: default:
@ -505,46 +506,58 @@ uint8_t pinport_opcode_8b_return( uint8_t opcode, uint8_t *rvalue )
//READ MCU I/O PORT INPUT 'PIN' REGISTERS //READ MCU I/O PORT INPUT 'PIN' REGISTERS
//ADDR[7:0] PINA //ADDR[7:0] PINA
case ADDR_RD: case ADDR_RD:
rvalue = ADDR_IN; *rvalue = ADDR_IN;
break;
//DATA[7:0] PINB //DATA[7:0] PINB
case DATA_RD: case DATA_RD:
rvalue = DATA_IN; *rvalue = DATA_IN;
break;
//CTL PINC //CTL PINC
case CTL_RD: case CTL_RD:
rvalue = CTL_IN; *rvalue = CTL_IN;
break;
//AUX PIND //AUX PIND
case AUX_RD: case AUX_RD:
rvalue = AUX_IN; *rvalue = AUX_IN;
break;
//READ MCU I/O PORT OUTPUT 'PORT' REGISTERS //READ MCU I/O PORT OUTPUT 'PORT' REGISTERS
//ADDR[7:0] PORTA //ADDR[7:0] PORTA
case ADDR_PORT_RD: case ADDR_PORT_RD:
rvalue = ADDR_OUT; *rvalue = ADDR_OUT;
break;
//DATA[7:0] PORTB //DATA[7:0] PORTB
case DATA_PORT_RD: case DATA_PORT_RD:
rvalue = DATA_OUT; *rvalue = DATA_OUT;
break;
//CTL PORTC //CTL PORTC
case CTL_PORT_RD: case CTL_PORT_RD:
rvalue = CTL_OUT; *rvalue = CTL_OUT;
break;
//AUX PORTD //AUX PORTD
case AUX_PORT_RD: case AUX_PORT_RD:
rvalue = AUX_OUT; *rvalue = AUX_OUT;
break;
//READ MCU I/O PORT DIRECTION 'DDR' REGISTERS //READ MCU I/O PORT DIRECTION 'DDR' REGISTERS
//ADDR[7:0] DDRA //ADDR[7:0] DDRA
case ADDR_DDR_RD: case ADDR_DDR_RD:
rvalue = ADDR_DDR; *rvalue = ADDR_DDR;
break;
//DATA[7:0] DDRB //DATA[7:0] DDRB
case DATA_DDR_RD: case DATA_DDR_RD:
rvalue = DATA_DDR: *rvalue = DATA_DDR;
break;
//CTL DDRC //CTL DDRC
case CTL_DDR_RD: case CTL_DDR_RD:
rvalue = CTL_DDR; *rvalue = CTL_DDR;
break;
//AUX DDRD //AUX DDRD
case AUX_DDR_RD: case AUX_DDR_RD:
rvalue = AUX_DDR; *rvalue = AUX_DDR;
break;
default: default:
//macro doesn't exist //macro doesn't exist

View File

@ -6,8 +6,9 @@
uint8_t pinport_opcode_only( uint8_t opcode ); uint8_t pinport_opcode_only( uint8_t opcode );
uint8_t pinport_opcode_8b_operand( uint8_t opcode, uint8_t operand ); uint8_t pinport_opcode_8b_operand( uint8_t opcode, uint8_t operand );
uint8_t pinport_opcode_16b_operand( uint8_t opcode, uint8_t operandMSB, uint8_t operandLSB ) uint8_t pinport_opcode_16b_operand( uint8_t opcode, uint8_t operandMSB, uint8_t operandLSB );
uint8_t pinport_opcode_24b_operand( uint8_t opcode, uint8_t operandMSB, uint8_t operandMID, uint8_t operandLSB ) uint8_t pinport_opcode_24b_operand( uint8_t opcode, uint8_t operandMSB, uint8_t operandMID, uint8_t operandLSB );
uint8_t pinport_opcode_8b_return( uint8_t opcode, uint8_t *rvalue );
void software_AHL_CLK(); void software_AHL_CLK();
void software_AXL_CLK(); void software_AXL_CLK();