1
0
mirror of https://github.com/pfusik/xasm.git synced 2024-06-08 03:29:30 +00:00
xasm/doc/pokey.htm

164 lines
5.5 KiB
HTML

<HTML>
<HEAD>
<TITLE>POKEY Documentation</TITLE>
</HEAD>
<BODY BACKGROUND="atari.gif">
<CENTER>
<H1>POKEY Documentation</H1>
by <A HREF="mailto:pfusik@elka.pw.edu.pl">Fox/Taquart</A><P>
<HR>
<P>
<H2>Registers</H2>
<TABLE BORDER>
<TR><TD><I>&nbsp;Address&nbsp;</I></TD><TD><I>&nbsp;Read register&nbsp;</I></TD><TD><I>&nbsp;Write register&nbsp;</I></TD></TR>
<TR><TD ALIGN=center><TT>^20</TT></TD><TD><A HREF="#potx">POT0</A></TD><TD><A HREF="#audfx">AUDF1</A></TD></TR>
<TR><TD ALIGN=center><TT>^21</TT></TD><TD><A HREF="#potx">POT1</A></TD><TD><A HREF="#audcx">AUDC1</A></TD></TR>
<TR><TD ALIGN=center><TT>^22</TT></TD><TD><A HREF="#potx">POT2</A></TD><TD><A HREF="#audfx">AUDF2</A></TD></TR>
<TR><TD ALIGN=center><TT>^23</TT></TD><TD><A HREF="#potx">POT3</A></TD><TD><A HREF="#audcx">AUDC2</A></TD></TR>
<TR><TD ALIGN=center><TT>^24</TT></TD><TD>unused</TD><TD><A HREF="#audfx">AUDF3</A></TD></TR>
<TR><TD ALIGN=center><TT>^25</TT></TD><TD>unused</TD><TD><A HREF="#audcx">AUDC3</A></TD></TR>
<TR><TD ALIGN=center><TT>^26</TT></TD><TD>unused</TD><TD><A HREF="#audfx">AUDF4</A></TD></TR>
<TR><TD ALIGN=center><TT>^27</TT></TD><TD>unused</TD><TD><A HREF="#audcx">AUDC4</A></TD></TR>
<TR><TD ALIGN=center><TT>^28</TT></TD><TD><A HREF="#potst">POTST</A></TD><TD><A HREF="#audctl">AUDCTL</A></TD></TR>
<TR><TD ALIGN=center><TT>^29</TT></TD><TD><A HREF="#kbcode">KBCODE</A></TD><TD><A HREF="#stimer">STIMER</A></TD></TR>
<TR><TD ALIGN=center><TT>^2A</TT></TD><TD><A HREF="#random">RANDOM</A></TD><TD><A HREF="#skstres">SKSTRES</A></TD></TR>
<TR><TD ALIGN=center><TT>^2B</TT></TD><TD>unused</TD><TD><A HREF="#potgo">POTGO</A></TD></TR>
<TR><TD ALIGN=center><TT>^2C</TT></TD><TD>unused</TD><TD>unused</TD></TR>
<TR><TD ALIGN=center><TT>^2D</TT></TD><TD><A HREF="#serin">SERIN</A></TD><TD><A HREF="#serout">SEROUT</A></TD></TR>
<TR><TD ALIGN=center><TT>^2E</TT></TD><TD><A HREF="#irqst">IRQST</A></TD><TD><A HREF="#irqen">IRQEN</A></TD></TR>
<TR><TD ALIGN=center><TT>^2F</TT></TD><TD><A HREF="#skstat">SKSTAT</A></TD><TD><A HREF="#skctl">SKCTL</A></TD></TR>
</TABLE>
<P>
<HR>
<P>
<H2>Description</H2>
</CENTER>
<A NAME="audcx"><U>AUDC1</U> <U>AUDC2</U> <U>AUDC3</U> <U>AUDC4</U>
- <B>Audio control</B><BR>
bits 3-0 - volume control<BR>
bit 4 - channel control<BR>
0 - synthetize sound<BR>
1 - constant level<BR>
bits 7-5 - sound distortion<BR>
000 - with 5-bit and 17-bit registers<BR>
001 - with 5-bit register<BR>
010 - with 5-bit and 4-bit registers<BR>
011 - with 5-bit register<BR>
100 - with 17-bit register<BR>
101 - clear sound<BR>
110 - with 4-bit register<BR>
111 - clear sound<P>
<A NAME="audctl"><U>AUDCTL</U>
- <B>Audio control</B><BR>
bit 0 - base clock for all channels<BR>
0 - 64 kHz<BR>
1 - 15 kHz<BR>
bit 1 - channel 2 filter controlled by channel 4<BR>
bit 2 - channel 1 filter controlled by channel 3<BR>
bit 3 - join counters 3 and 4 into 16-bit channel<BR>
bit 4 - join counters 1 and 2 into 16-bit channel<BR>
bit 5 - base clock for channel 3<BR>
0 - according to bit 0<BR>
1 - 1.77 MHz (PAL), 1.79 MHz (NTSC)<BR>
bit 6 - base clock for channel 1<BR>
0 - according to bit 0<BR>
1 - 1.77 MHz (PAL), 1.79 MHz (NTSC)<BR>
bit 7 - distortion register<BR>
0 - 17-bit<BR>
1 - 9-bit<P>
<A NAME="audfx"><U>AUDF1</U> <U>AUDF2</U> <U>AUDF3</U> <U>AUDF4</U>
- <B>Audio frequency</B><P>
<A NAME="irqen"><U>IRQEN</U>
- <B>IRQ enable</B><BR>
1 - enable<BR>
bit 0 - timer 1<BR>
bit 1 - timer 2<BR>
bit 2 - timer 4<BR>
bit 3 - end of transmission<BR>
bit 4 - serial output<BR>
bit 5 - serial input<BR>
bit 6 - keyboard<BR>
bit 7 - BREAK key<P>
<A NAME="irqst"><U>IRQST</U>
- <B>IRQ status</B><BR>
0 - requested<BR>
bit 0 - timer 1<BR>
bit 1 - timer 2<BR>
bit 2 - timer 4<BR>
bit 3 - end of transmission<BR>
bit 4 - serial output<BR>
bit 5 - serial input<BR>
bit 6 - keyboard<BR>
bit 7 - BREAK key<P>
<A NAME="kbcode"><U>KBCODE</U>
- <B>Keyboard code</B><P>
<A NAME="potx"><U>POT0</U> <U>POT1</U> <U>POT2</U> <U>POT3</U>
- <B>Potentiometrs</B><BR>
Position of potentiometr in range 0-224<P>
<A NAME="potgo"><U>POTGO</U>
- <B>Potentiometr goes</B><BR>
Any value written to this registers starts measurement of potentiometrs<P>
<A NAME="potst"><U>POTST</U>
- <B>Potentiometrs status</B><BR>
0 means POTx contains proper value<BR>
1 means POTx is being measured<BR>
bit 0 - POT0<BR>
bit 1 - POT1<BR>
bit 2 - POT2<BR>
bit 3 - POT3<BR>
bits 7-4 - not used<P>
<A NAME="random"><U>RANDOM</U>
- <B>Random</B><P>
<A NAME="serin"><U>SERIN</U>
- <B>Serial input</B><BR>
Received byte<P>
<A NAME="serout"><U>SEROUT</U>
- <B>Serial output</B><BR>
A byte to be send<P>
<A NAME="skctl"><U>SKCTL</U>
- <B>Serial and keyboard control</B><BR>
bits 1,0 - POKEY control<BR>
00 - reset POKEY<BR>
11 - normal state<BR>
bit 2 - speed of A/D conversion<BR>
bit 3 - two-tone transmission<BR>
bits 6-4 - transmission speed control<BR>
bit 7 - force SPACE signal<P>
<A NAME="skstat"><U>SKSTAT</U>
- <B>Serial and keyboard status</B><BR>
bit 0 - unused (=0)<BR>
bit 1 - transmission<BR>
0 - in progress<BR>
bit 2 - keyboard status<BR>
0 - a key pressed<BR>
bit 3 - SHIFT key status<BR>
0 - pressed<BR>
bit 4 - serial input line state<BR>
bit 5 - keyboard buffer overflow<BR>
bit 6 - serial input buffer overflow<BR>
bit 7 - Framing Error occured<P>
<A NAME="skstres"><U>SKSTRES</U>
- <B>SKSTAT reset</B><BR>
Any value written to this register resets SKSTAT error flags<P>
<A NAME="stimer"><U>STIMER</U>
- <B>Start timers</B><BR>
Any value written to this register resets all counters<P>
</BODY>
</HTML>