/// @file /// The MOS 6526 Complex Interface Adapter (CIA) /// /// http://archive.6502.org/datasheets/mos_6526_cia_recreated.pdf /// The MOS 6526 Complex Interface Adapter (CIA) /// http://archive.6502.org/datasheets/mos_6526_cia_recreated.pdf struct MOS6526_CIA { /// Port A char PORT_A; /// Port B char PORT_B; /// Port A data direction register. char PORT_A_DDR; /// Port B data direction register. char PORT_B_DDR; /// Timer A Value unsigned int TIMER_A; /// Timer B Value unsigned int TIMER_B; /// Time-of-day real-time-clock tenth seconds (BCD) char TOD_10THS; /// Time-of-day real-time-clock seconds (BCD) char TOD_SEC; /// Time-of-day real-time-clock minutes (BCD) char TOD_MIN; /// Time-of-day real-time-clock hours (BCD) char TOD_HOURS; /// Serial Shift Register char SERIAL_DATA; /// Interrupt Status & Control Register char INTERRUPT; /// Timer A Control Register char TIMER_A_CONTROL; /// Timer B Control Register char TIMER_B_CONTROL; }; /// Value that disables all CIA interrupts when stored to the CIA Interrupt registers const char CIA_INTERRUPT_CLEAR_ALL = 0x7f; /// CIA Interrupt: Mask for clearing CIA interrupt flags. const char CIA_INTERRUPT_CLEAR = 0x00; /// CIA Interrupt: Mask for setting CIA interrupt flags. const char CIA_INTERRUPT_SET = 0x80; /// CIA Interrupt: Mask modifying Timer A interrupt. Must be combined the SET/CLEAR. const char CIA_INTERRUPT_TIMERA = 0x01; /// CIA Interrupt: Mask modifying Timer B interrupt. Must be combined the SET/CLEAR. const char CIA_INTERRUPT_TIMERB = 0x02; /// CIA Interrupt: Mask modifying TOD alarm interrupt. Must be combined the SET/CLEAR. const char CIA_INTERRUPT_ALARM = 0x04; /// CIA Interrupt: Mask modifying Serial Data Register Full/Empty interrupt. Must be combined the SET/CLEAR. const char CIA_INTERRUPT_SP = 0x08; /// CIA Interrupt: Mask modifying FLAG pin interrupt. Must be combined the SET/CLEAR. const char CIA_INTERRUPT_FLAG = 0x10; /// Timer Control - Start/stop timer (0:stop, 1: start) const char CIA_TIMER_CONTROL_STOP = 0b00000000; /// Timer Control - Start/stop timer (0:stop, 1: start) const char CIA_TIMER_CONTROL_START = 0b00000001; /// Timer Control - Time CONTINUOUS/ONE-SHOT (0:CONTINUOUS, 1: ONE-SHOT) const char CIA_TIMER_CONTROL_CONTINUOUS = 0b00000000; /// Timer Control - Time CONTINUOUS/ONE-SHOT (0:CONTINUOUS, 1: ONE-SHOT) const char CIA_TIMER_CONTROL_ONESHOT = 0b00001000; /// Timer Control - FORCE LOAD (this is a STROBE input) (1: FORCE LOAD) const char CIA_TIMER_CONTROL_FORCELOAD = 0b00010000; /// Timer A Control - Timer counts (0:system cycles, 1: CNT pulses) const char CIA_TIMER_CONTROL_A_COUNT_CYCLES = 0b00000000; /// Timer A Control - Timer counts (0:system cycles, 1: CNT pulses) const char CIA_TIMER_CONTROL_A_COUNT_CNT = 0b00100000; /// Timer A Control - Serial Port Mode (0: Serial Port Input, 1: Serial Port Output) const char CIA_TIMER_CONTROL_A_SERIAL_IN = 0b00000000; /// Timer A Control - Serial Port Mode (0: Serial Port Input, 1: Serial Port Output) const char CIA_TIMER_CONTROL_A_SERIAL_OUT = 0b01000000; /// Timer A Control - time-of-day clock Mode (0: 60Hz, 1: 50Hz) const char CIA_TIMER_CONTROL_A_TOD_60HZ = 0b00000000; /// Timer A Control - time-of-day clock Mode (0: 60Hz, 1: 50Hz) const char CIA_TIMER_CONTROL_A_TOD_50HZ = 0b10000000; /// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high) const char CIA_TIMER_CONTROL_B_COUNT_CYCLES = 0b00000000; /// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high) const char CIA_TIMER_CONTROL_B_COUNT_CNT = 0b00100000; /// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high) const char CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A = 0b01000000; /// Timer B Control - Timer counts (00:system cycles, 01: CNT pulses, 10: timer A underflow, 11: time A underflow while CNT is high) const char CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A_CNT = 0b01100000; /// Timer B Control - time-of-day write mode (0: TOD clock, 1: TOD alarm) const char CIA_TIMER_CONTROL_B_TOD_CLOCK_SET = 0b00000000; /// Timer B Control - time-of-day write mode (0: TOD clock, 1: TOD alarm) const char CIA_TIMER_CONTROL_B_TOD_ALARM_SET = 0b10000000;