#include //#define NOP() do { __asm__ __volatile__ ("nop"); } while (0) // used for a very short delay #define LO 0x00 #define HI 0xFF //#define TRUE 0x00 //FALSE is ANYTHING but TRUE, the value signifies the error number //PIN DEFINITIONS //AUX PORTD #define EXP0 PD0 //RESET_n on SNES #define LED PD1 #define EXP9 PD1 //dual purposed pin #define USBP PD2 #define IRQ PD3 #define USBM PD4 #define CIA10 PD5 #define BL PD6 #define XOE PD7 //Only X_OE on purple and green boards //X_OE and X_CLK on yellow final boards //CTL PORTC #define M2 PC0 #define PCE PC1 //SNES /ROMSEL #define PRW PC2 #define AXL PC3 //Free on green and yellow boards //Also AXL /OE on Yellow boards #define CRD PC4 //SNES /RD #define CWR PC5 //SNES /WR #define CICE PC6 #define AHL PC7 //Also AXL on green proto boards //PORT DEFINITIONS #define ADDR_OUT PORTA #define ADDR_IN PINA #define ADDR_DDR DDRA #define DATA_OUT PORTB #define DATA_IN PINB #define DATA_DDR DDRB //#define UP_ADDR PORTB //second revision moves this to PORTA and combines AXL/AHL //#define X_ADDR PORTB #define CTL_OUT PORTC #define CTL_IN PINC #define CTL_DDR DDRC #define AUX_OUT PORTD #define AUX_IN PIND #define AUX_DDR DDRD #define DATA_IP() DATA_DDR = LO #define DATA_OP() DATA_DDR = HI #define DATA_HI() DATA_OUT = HI #define DATA_LO() DATA_OUT = LO #define ADDR_IP() ADDR_DDR = LO #define ADDR_OP() ADDR_DDR = HI #define ADDR_HI() ADDR_OUT = HI #define ADDR_LO() ADDR_OUT = LO // //AHL, AXL, are always output and high, unless individually asserted. // #define CTL_IP() CTL_DDR = 0b10001000// &= ((1< high #define LATCH_AXL() CTL_OUT &= ~(1< high #define M2_IP() CTL_DDR &= ~(1< low for CPU access cycle, and takes PRG /CE high if it was low #define PCE_HI() CTL_OUT |= (1<