For 400, 800 (OS A)#
| ADR | HEXADR | NAME | Description | shadow | OS |
|---|---|---|---|---|---|
| 54017 | $D301 | PORTB | STICK2 STICK3 PTRIG4 PTRIG5 PTRIG6 PTRIG7 | 400/800 |
Read or write data from the control ports (joystick ports), depending on how the data direction is set (default: 0 "read/input"). To set the direction, set Bit 2 of PACTL to "0" and define the direction by setting the bits of PORTA (0=read, 1=write) for each input/output line. Then set Bit 2 of PACTL to "1" again.
Example:
PACTL=PACTL && %11111011 ;set Bit 2 to 0 PORTA=%11110000 ;set Port 2 to output/write, Port 1 is input/read PACTL=PACTL %% %00000100 ;set Bit 2 to 1
| Bit | Function | Description | Joystick direction | Paddletrigger |
|---|---|---|---|---|
| 7 | PA7 | Joystick Port 4 Pin 4 | Right | Paddle 8 PTRIG7 |
| 6 | PA6 | Joystick Port 4 Pin 3 | Left | Paddle 7 PTRIG6 |
| 5 | PA5 | Joystick Port 4 Pin 2 | Down | not used |
| 4 | PA4 | Joystick Port 4 Pin 1 | Up | not used |
| 3 | PA3 | Joystick Port 3 Pin 4 | Right | Paddle 6 PTRIG5 |
| 2 | PA2 | Joystick Port 3 Pin 3 | Left | Paddle 5 PTRIG4 |
| 1 | PA1 | Joystick Port 3 Pin 2 | Down | not used |
| 0 | PA0 | Joystick Port 3 Pin 1 | Up | not used |
Joystick direction sets Bit=0 when pushed in that direction
Paddletrigger Bit=0 when pressed
For 600XL, 800XL, 1200XL, 130XE#
| ADR | HEXADR | NAME | Description | OS |
|---|---|---|---|---|
| 54017 | $D301 | PORTB | Memory Management | XL/XE |
1200XL
| Bit | Function | Description |
|---|---|---|
| 7 | $5000-$57FF | 0=Self test, 1=RAM |
| 6 | not used | |
| 5 | not used | |
| 4 | not used | |
| 3 | LED2 | 0=off, 1=on |
| 2 | LED1 | 0=off, 1=on |
| 1 | not used | |
| 0 | $C000-$FFFF | 0=RAM, 1=OS-ROM |
600XL/800XL
| Bit | Function | Description |
|---|---|---|
| 7 | $5000-$57FF | 0=Self test, 1=RAM |
| 6 | not used | |
| 5 | not used | |
| 4 | not used | |
| 3 | not used | |
| 2 | not used | |
| 1 | not used | |
| 0 | $C000-$FFFF | 0=RAM, 1=OS-ROM |
130XE
| Bit | Function | Description |
|---|---|---|
| 7 | $5000-$57FF | 0=Self test, 1=RAM |
| 6 | not used | |
| 5 | ANTIC | 0=ANTIC has access to extra RAM, 1=ANTIC has access to normal RAM |
| 4 | CPU | 0=CPU has access to extra RAM, 1=CPU has access to normal RAM |
| 3 | Bank select | see below |
| 2 | Bank select | see below |
| 1 | $A000-$BFFF | 0=ATARI BASIC ROM, 1=RAM |
| 0 | $C000-$FFFF | 0=RAM, 1=OS-ROM |
Bank select
| Bit 2 | Bit 3 | Bank |
|---|---|---|
| 0 | 0 | Bank 0 |
| 0 | 1 | Bank 1 |
| 1 | 0 | Bank 2 |
| 1 | 1 | Bank 3 |
see also: Controller topics