Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
POKEY
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Registers== The Atari 8-bit computers map POKEY to the $D2xx<sub>hex</sub> page and the Atari 5200 console maps it to the $E8xx<sub>hex</sub> page. POKEY provides 29 Read/Write registers controlling Sound, Paddle input, keyboard input, serial input/output, and interrupts. Many POKEY register addresses have dual purposes performing different functions as a Read vs a Write register. Therefore, no code should read Hardware registers expecting to retrieve the previously written value. This problem is solved for some registers by Operating System "Shadow" registers implemented in regular RAM that mirror the values of hardware registers. During the Vertical Blank the Operating System copies the Shadow registers in RAM for Write registers to the corresponding hardware register, and updates Shadow values for Read registers from the hardware accordingly. Therefore, writes to hardware registers which have corresponding shadow registers will be overwritten by the value of the Shadow registers during the next vertical blank. Reading values directly from hardware at an unknown stage in the display cycle may return inconsistent results (an example: reading potentiometers). Operating System Shadow registers for Read registers would usually be the preferred source of information. Some Write hardware registers do not have corresponding Shadow registers. They can be safely written by an application without the value being overwritten during the vertical blank. If the application needs to know the last value written to the register then it is the responsibility of the application to implement its own shadow value to remember what it wrote. {| class="wikitable sortable" |- ! Name !! class="unsortable"|Description !! Read/Write !! class="unsortable"|Hex Addr !! Dec Addr !! Shadow Name !! class="unsortable"|Shadow Hex Addr !! Shadow Dec Addr |- | [[POKEY#AUDF1 $D200 Write|AUDF1]] || Audio Channel 1 Frequency || Write || $D200 || 53760 || || || |- | [[POKEY#POT0 $D200 Read|POT0]] || Potentiometer (Paddle) 0 || Read || $D200 || 53760 || PADDL0 || $0270 || 624 |- | [[POKEY#AUDC1 $D201 Write|AUDC1]] || Audio Channel 1 Control || Write || $D201 || 53761 || || || |- | [[POKEY#POT1 $D201 Read|POT1]] || Potentiometer (Paddle) 1 || Read || $D201 || 53761 || PADDL1 || $0271 || 625 |- | [[POKEY#AUDF2 $D202 Write|AUDF2]] || Audio Channel 2 Frequency || Write || $D202 || 53762 || || || |- | [[POKEY#POT2 $D202 Read|POT2]] || Potentiometer (Paddle) 2 || Read || $D202 || 53762 || PADDL2 || $0272 || 626 |- | [[POKEY#AUDC2 $D203 Write|AUDC2]] || Audio Channel 2 Control || Write || $D203 || 53763 || || || |- | [[POKEY#POT3 $D203 Read|POT3]] || Potentiometer (Paddle) 3 || Read || $D203 || 53763 || PADDL3 || $0273 || 627 |- | [[POKEY#AUDF3 $D204 Write|AUDF3]] || Audio Channel 3 Frequency || Write || $D204 || 53764 || || || |- | [[POKEY#POT4 $D204 Read|POT4]] || Potentiometer (Paddle) 4 || Read || $D204 || 53764 || PADDL4 || $0274 || 628 |- | [[POKEY#AUDC3 $D205 Write|AUDC3]] || Audio Channel 3 Control || Write || $D205 || 53765 || || || |- | [[POKEY#POT5 $D205 Read|POT5]] || Potentiometer (Paddle) 5 || Read || $D205 || 53765 || PADDL5 || $0275 || 629 |- | [[POKEY#AUDF4 $D206 Write|AUDF4]] || Audio Channel 4 Frequency || Write || $D206 || 53766 || || || |- | [[POKEY#POT6 $D206 Read|POT6]] || Potentiometer (Paddle) 6 || Read || $D206 || 53766 || PADDL6 || $0276 || 630 |- | [[POKEY#AUDC4 $D207 Write|AUDC4]] || Audio Channel 4 Control || Write || $D207 || 53767 || || || |- | [[POKEY#POT7 $D207 Read|POT7]] || Potentiometer (Paddle) 7 || Read || $D207 || 53767 || PADDL7 || $0277 || 631 |- | [[POKEY#AUDCTL $D208 Write|AUDCTL]] || Audio Control || Write || $D208 || 53768 || || || |- | [[POKEY#ALLPOT $D208 Read|ALLPOT]] || Read 8 Line POT Port State || Read || $D208 || 53768 || || || |- | [[POKEY#STIMER $D209 Write|STIMER]] || Start Timers || Write || $D209 || 53769 || || || |- | [[POKEY#KBCODE $D209 Read|KBCODE]] || Keyboard Code || Read || $D209 || 53769 || CH || $02FC || 764 |- | [[POKEY#SKREST $D20A Write|SKREST]] || Reset Serial Status (SKSTAT) || Write || $D20A || 53770 || || || |- | [[POKEY#RANDOM $D20A Read|RANDOM]] || Random Number Generator || Read || $D20A || 53770 || || || |- | [[POKEY#POTGO $D20B Write|POTGO]] || Start POT Scan Sequence || Write || $D20B || 53771 || || || |- | [[POKEY#SEROUT $D20D Write|SEROUT]] || Serial Port Data Output || Write || $D20D || 53773 || || || |- | [[POKEY#SERIN $D20D Read|SERIN]] || Serial Port Data Input || Read || $D20D || 53773 || || || |- | [[POKEY#IRQEN $D20E Write|IRQEN]] || Interrupt Request Enable || Write || $D20E || 53774 || POKMSK || $10 || 16 |- | [[POKEY#IRQST $D20E Read|IRQST]] || IRQ Status || Read || $D20E || 53774 || || || |- | [[POKEY#SKCTL $D20F Write|SKCTL]] || Serial Port Control || Write || $D20F || 53775 || SSKCTL || $0232 || 562 |- | [[POKEY#SKSTAT $D20F Read|SKSTAT]] || Serial Port Status || Read || $D20F || 53775 || || || |} In the individual register listings below the following legend applies: {| class="wikitable sortable" |- ! Bit Value !! Description |- | 0 || Bit must be 0 |- | 1 || Bit must be 1 |- | ? || Bit may be either 0 or 1, and is used for a purpose. |- | - || Bit is unused, or should not be expected to be a certain value |- | label || Refer to a later explanation for the purpose of the bit. |}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)