PIA Registers

$FF00    BIT    0=    KEYBOARD ROW 1 & RIGHT JOYSTICK SWITCH 1
         BIT    1=             ROW 2 & LEFT  JOYSTICK SWITCH 1
         BIT    2=             ROW 3 & RIGHT JOYSTICK SWITCH 2
         BIT    3=             ROW 4 & LEFT  JOYSTICK SWITCH 2
         BIT    4=             ROW 5
         BIT    5=             ROW 6
         BIT    6=             ROW 7
         BIT    7=             JOYSTICK COMPARISON INPUT

$FF01    BIT    0=    HSYNC IRQ    0=disabled 1=enabled
         BIT    1=    IRQ POLARITY 0=flag set on falling edge
                                   1=flag set on rising edge
         BIT    2=    DATA DIRECTION TOGGLE    0= $FF00 sets data direction
                                               1= normal
         BIT    3=    SELECT LINE    LSB of MUX
         BIT    4=    1
         BIT    5=    1
         BIT    6=    N/A
         BIT    7=    HSYNC FLAG

$FF02    BIT    0=    KEYBOARD COLUMN 1
         BIT    1=                    2
         BIT    2=                    3
         BIT    3=                    4
         BIT    4=                    5
         BIT    5=                    6
         BIT    6=                    7 / RAM SIZE OUTPUT
         BIT    7=                    8

$FF03    BIT    0=    VSYNC IRQ    0=disabled    1=enabled
         BIT    1=    IRQ POLARITY    0=flag set on falling edge
                                      1=flag set on rising edge
         BIT    2=    DATA DIRECTION TOGGLE    0= $FF02 sets data direction
                                               1=normal
         BIT    3=    SELECT LINE    MSB of MUX
         BIT    4=    1
         BIT    5=    1
         BIT    6=    N/A
         BIT    7=    VSYNC FLAG

$FF20    BIT    0=    CASSETTE DATA INPUT
         BIT    1=    RS-232C DATA OUTPUT
         BIT    2=    6 BIT DAC LSB
         BIT    3         |
         BIT    4         |
         BIT    5         |
         BIT    6=    6 BIT DAC MSB

$FF21    BIT    0=    CD FIRQ (RS-232C)    0=FIRQ disabled 1=endabled
         BIT    1=    FIRQ POLARITY    0=falling 1=rising
         BIT    2=    DATA DIRECTION CONTROL    0=$FF20 data direction
                                                1=normal
         BIT    3=    CASSETTE MOTOR CONTROL    0=OFF    1=ON
         BIT    4=    1
         BIT    5=    1
         BIT    6=    N/A
         BIT    7=    CD FIRQ FLAG

$FF22    BIT    0=    RS-232C DATA INPUT
         BIT    1=    SINGLE BIT SOUND OUTPUT
         BIT    2=    RAM SIZE INPUT
         BIT    3=    RGB Monitor sensing (INPUT)    CSS
         BIT    4=    VDG CONTROL                    GM0 & shift toggle
         BIT    5=        "                          GM1 & invert
         BIT    6=        "                          GM2
         BIT    7=        "                          A*/G

$FF23    BIT    0=    CART FIRQ    0=FIRQ disabled 1=enabled
         BIT    1=    FIRQ POLARITY    0=falling 1=rising
         BIT    2=    DATA DIRECTION CONTROL    0= $FF22 data direction
                                                1= normal
         BIT    3=    SOUND ENABLE
         BIT    4=    1
         BIT    5=    1
         BIT    6=    N/A
         BIT    7=    CART FIRQ FLAG


$FFDF    S    TY    MAP TYPE
$FFDE    C

$FFDD    S    M1    MEMORY SIZE COCO 1&2
$FFDC    C
$FFDB    S    M0

$FFDA    C
$FFD9    S    R1    MPU RATE    ALL COCOs
$FFD8    C
$FFD7    S    R0    (COCO 1&2 ONLY)

$FFD6    C
$FFD5    S    P1    PAGE (COCO 1&2 ONLY)

$FFD4    C
$FFD3    S    F6
$FFD2    C
$FFD1    S    F5
$FFD0    C
$FFCF    S    F4
$FFCE    C          DISPLAY OFFSET    COCO 1&2 REAL OR EMULATION
$FFCD    S    F3
$FFCC    C
$FFCB    S    F2
$FFCA    C
$FFC9    S    F1
$FFC8    C

$FFC7    S    F0                          GRAPHIC MODES     TEXT
$FFC6    C
$FFC5    S    V2                          1 1 1 0 0 0        0
$FFC4    C
$FFC3    S    V1    DISPLAY MODE CONTROL  1 0 0 1 1 0        0
$FFC2    C
$FFC1    S    V0                          0 1 0 1 0 1        0
$FFC0    C          COCO 1&2 REAL OR EMULATION