!!!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|Controller_topics]
previous: [PORTA]
next: [PACTL]