classic-games.com

Atari 7800 Software Guide

--------------------------------
RIOT Addresses: names taken from
Atari VCS Stella Documentation
--------------------------------
$0280 = (RIOT $00) - SWCHA  (read/write)
$0281 = (RIOT $01) - SWACNT (read/write)
$0282 = (RIOT $02) - SWCHB  (read/write) (*)
$0283 = (RIOT $03) - SWBCNT (read/write) (*)
$0284 = (RIOT $04) - INTIM (read), edge detect control (write)
$0285 = (RIOT $05) - read interrupt flag (read), edge detect control (write)
$0286 = (RIOT $06) - INTIM (read), edge detect control (write)
$0287 = (RIOT $07) - read interrupt flag (read), edge detect control (write)
$0288 = (RIOT $08) - SWCHA  (read/write)
$0289 = (RIOT $09) - SWACNT (read/write)
$028A = (RIOT $0A) - SWCHB  (read/write) (*)
$028B = (RIOT $0B) - SWBCNT (read/write) (*)
$028C = (RIOT $0C) - INTIM (read) , edge detect control (write)
$028D = (RIOT $0D) - read interrupt flag (read), edge detect control (write)
$028E = (RIOT $0E) - INTIM (read) , edge detect control (write)
$028F = (RIOT $0F) - read interrupt flag (read), edge detect control (write)
$0290 = (RIOT $10) - SWCHA  (read/write)
$0291 = (RIOT $11) - SWACNT (read/write)
$0292 = (RIOT $12) - SWCHB  (read/write) (*)
$0293 = (RIOT $13) - SWBCNT (read/write) (*)
$0294 = (RIOT $14) - INTIM (read), TIM1T (write)
$0295 = (RIOT $15) - read interrupt flag (read), TIM8T (write)
$0296 = (RIOT $16) - INTIM (read), TIM64T (write)
$0297 = (RIOT $17) - read interrupt flag (read), TIM1024T (write)
$0298 = (RIOT $18) - SWCHA  (read/write)
$0299 = (RIOT $19) - SWACNT (read/write)
$029A = (RIOT $1A) - SWCHB  (read/write) (*)
$029B = (RIOT $1B) - SWBCNT (read/write) (*)
$029C = (RIOT $1C) - INTIM (read), TIM1T (write)
$029D = (RIOT $1D) - read interrupt flag (read), TIM8T (write)
$029E = (RIOT $1E) - INTIM (read), TIM64T (write)
$029F = (RIOT $1F) - read interrupt flag (read), TIM1024T (write)

(*) The Stella documentation states that Port B is hardwired for input
    only.  In reality, Port B is fully configurable.  Configuring Port B
    as an output, however, will cause direct hardware conflicts with the
    console switches.  DO NOT ATTEMPT THIS.

------------------------------------------------------------------------------

**********************
* RIOT Documentation *
**********************

---------------------------------------
RIOT Addressing Notes for the Atari VCS
---------------------------------------
A12 is connected to /CS2 (Chip Select 2 - active low)
A7 is connected to CS1  (Chip Select 1 - active high)
A9 is connected to /RS  (RAM Select - active low)
A11, A10, and A8 are not connected to the RIOT

-------------------------------------
$0080 - $00FF = RIOT RAM (read/write)
-------------------------------------
$0080 - $00FF = RIOT RAM, Addresses $00-$7F

---------------------------------------------
$0280 - $029F = RIOT Read Addresses (not RAM)
---------------------------------------------
$0280 = (RIOT $00) - Read DRA
$0281 = (RIOT $01) - Read DDRA
$0282 = (RIOT $02) - Read DRB
$0283 = (RIOT $03) - Read DDRB
$0284 = (RIOT $04) - Read timer, disable interrupt (2)
$0285 = (RIOT $05) - Read interrupt flag
$0286 = (RIOT $06) - Read timer, disable interrupt (2)
$0287 = (RIOT $07) - Read interrupt flag
$0288 = (RIOT $08) - Read DRA
$0289 = (RIOT $09) - Read DDRA
$028A = (RIOT $0A) - Read DRB
$028B = (RIOT $0B) - Read DDRB
$028C = (RIOT $0C) - Read timer, enable interrupt (2)
$028D = (RIOT $0D) - Read interrupt flag
$028E = (RIOT $0E) - Read timer, enable interrupt (2)
$028F = (RIOT $0F) - Read interrupt flag
$0290 = (RIOT $10) - Read DRA
$0291 = (RIOT $11) - Read DDRA
$0292 = (RIOT $12) - Read DRB
$0293 = (RIOT $13) - Read DDRB
$0294 = (RIOT $14) - Read timer, disable interrupt (2)
$0295 = (RIOT $15) - Read interrupt flag
$0296 = (RIOT $16) - Read timer, disable interrupt (2)
$0297 = (RIOT $17) - Read interrupt flag
$0298 = (RIOT $18) - Read DRA
$0299 = (RIOT $19) - Read DDRA
$029A = (RIOT $1A) - Read DRB
$029B = (RIOT $1B) - Read DDRB
$029C = (RIOT $1C) - Read timer, enable interrupt (2)
$029D = (RIOT $1D) - Read interrupt flag
$029E = (RIOT $1E) - Read timer, enable interrupt (2)
$029F = (RIOT $1F) - Read interrupt flag

----------------------------------------------
$0280 - $029F = RIOT Write Addresses (not RAM)
----------------------------------------------
$0280 = (RIOT $00) - Write DRA
$0281 = (RIOT $01) - Write DDRA
$0282 = (RIOT $02) - Write DRB
$0283 = (RIOT $03) - Write DDRB
$0284 = (RIOT $04) - Write edge detect control - negative edge, disable int (1)
$0285 = (RIOT $05) - Write edge detect control - positive edge, disable int (1)
$0286 = (RIOT $06) - Write edge detect control - negative edge, enable int (1)
$0287 = (RIOT $07) - Write edge detect control - positive edge, enable int (1)
$0288 = (RIOT $08) - Write DRA
$0289 = (RIOT $09) - Write DDRA
$028A = (RIOT $0A) - Write DRB
$028B = (RIOT $0B) - Write DDRB
$028C = (RIOT $0C) - Write edge detect control - negative edge, disable int (1)
$028D = (RIOT $0D) - Write edge detect control - positive edge, disable int (1)
$028E = (RIOT $0E) - Write edge detect control - negative edge, enable int (1)
$028F = (RIOT $0F) - Write edge detect control - positive edge, enable int (1)
$0290 = (RIOT $10) - Write DRA
$0291 = (RIOT $11) - Write DDRA
$0292 = (RIOT $12) - Write DRB
$0293 = (RIOT $13) - Write DDRB
$0294 = (RIOT $14) - Write timer (div by 1)    - disable int (2)
$0295 = (RIOT $15) - Write timer (div by 8)    - disable int (2)
$0296 = (RIOT $16) - Write timer (div by 64)   - disable int (2)
$0297 = (RIOT $17) - Write timer (div by 1024) - disable int (2)
$0298 = (RIOT $18) - Write DRA
$0299 = (RIOT $19) - Write DDRA
$029A = (RIOT $1A) - Write DRB
$029B = (RIOT $1B) - Write DDRB
$029C = (RIOT $1C) - Write timer (div by 1)    - enable int (2)
$029D = (RIOT $1D) - Write timer (div by 8)    - enable int (2)
$029E = (RIOT $1E) - Write timer (div by 64)   - enable int (2)
$029F = (RIOT $1F) - Write timer (div by 1024) - enable int (2)

(1) A0 = 0 for negative edge detect
    A0 = 1 for positive edge detect
    A1 = 0 to disable interrupt from PA7 to /IRQ
    A1 = 1 to enable  interrupt from PA7 to /IRQ

(2) A3 = 0 to disable interrupt from timer to /IRQ
    A3 = 1 to enable  interrupt from timer to /IRQ
Classic Systems

Atari

Commodore

Nintendo

Vectrex

Other Systems

Game Database

List Games

Search

Submit Game

Other Options

Other Sections

Classic Games Index

Newer Video Games

Forums

Account Options

Articles

Store

Tools

Web Directory

Online Poker Bonuses

Online Casino Bonuses

Tradewars

Featured Games

Ancient Anguish

Get listed here!

Top Referrers

1. Stating the Obvious

Get listed here!

X-Arcade arcade-style 6-button joystick for PC, XBox, PS2, GameCube and other systems. Supports MAME!

Latest News