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 PBCTL to "0" and define the direction by setting the bits of PORTB (0=read, 1=write) for each input/output line. Then set Bit 2 of PBCTL 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#
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 | $A000-$BFFF | 0=ATARI BASIC ROM, 1=RAM |
0 | $C000-$FFFF | 0=RAM, 1=OS-ROM |
For 130XE#
Bits 2,3,4,5 set the behavior of extended RAM which is always mapped to $4000-$7FFF area.Bit | Function | Description |
---|---|---|
7 | $5000-$57FF | 0=Self test, 1=RAM |
6 | not used | |
5 | ANTIC | 0=ANTIC has access to extended RAM, 1=ANTIC has access to main RAM |
4 | CPU | 0=CPU has access to extended RAM, 1=CPU has access to main RAM |
3 | $4000-$7FFF | Bank selection bit |
2 | $4000-$7FFF | Bank selection bit |
1 | $A000-$BFFF | 0=ATARI BASIC ROM, 1=RAM |
0 | $C000-$FFFF | 0=RAM, 1=OS-ROM |
Compatibility mode (only main bank enabled)
Bit 5 | Bit 4 | Bit 3 | Bit 2 | CPU accesses | ANTIC accesses |
---|---|---|---|---|---|
VBE | CPE | Bank selection | Bank selection | ||
1 | 1 | doesn't matter | doesn't matter | M $4000-$7FFF | M $4000-$7FFF |
CPU extended RAM mode
Bit 5 | Bit 4 | Bit 3 | Bit 2 | CPU accesses | ANTIC accesses |
---|---|---|---|---|---|
VBE | CPE | Bank selection | Bank selection | ||
1 | 0 | 0 | 0 | E $0000-$3FFF | M $4000-$7FFF |
1 | 0 | 0 | 1 | E $4000-$7FFF | M $4000-$7FFF |
1 | 0 | 1 | 0 | E $8000-$BFFF | M $4000-$7FFF |
1 | 0 | 1 | 1 | E $C000-$FFFF | M $4000-$7FFF |
Video (ANTIC) extended RAM mode
Bit 5 | Bit 4 | Bit 3 | Bit 2 | CPU accesses | ANTIC accesses |
---|---|---|---|---|---|
VBE | CPE | Bank selection | Bank selection | ||
0 | 1 | 0 | 0 | M $4000-$7FFF | E $0000-$3FFF |
0 | 1 | 0 | 1 | M $4000-$7FFF | E $4000-$7FFF |
0 | 1 | 1 | 0 | M $4000-$7FFF | E $8000-$BFFF |
0 | 1 | 1 | 1 | M $4000-$7FFF | E $C000-$FFFF |
General extended RAM Mode
Bit 5 | Bit 4 | Bit 3 | Bit 2 | CPU accesses | ANTIC accesses |
---|---|---|---|---|---|
VBE | CPE | Bank selection | Bank selection | ||
0 | 0 | 0 | 0 | E $0000-$3FFF | E $0000-$3FFF |
0 | 0 | 0 | 1 | E $4000-$7FFF | E $4000-$7FFF |
0 | 0 | 1 | 0 | E $8000-$BFFF | E $8000-$BFFF |
0 | 0 | 1 | 1 | E $C000-$FFFF | E $C000-$FFFF |
see also: Controller topics
previous: PORTA
next: PACTL