Difference between revisions of "Appendices"

From amiga historical society
Jump to navigation Jump to search
 
(46 intermediate revisions by the same user not shown)
Line 14: Line 14:
 
! ADKCON !! 4F !! W !! P !! Audio, Disk, Control write
 
! ADKCON !! 4F !! W !! P !! Audio, Disk, Control write
 
|-
 
|-
! ADKCONR !! * 08!! R !! P !! Audio, Disk, Control read
+
! ADKCONR !! *08 !! R !! P !! Audio, Disk, Control read
 
|}
 
|}
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! BIT# !! USE !!  
+
! BIT # !! USE !!  
 
|-
 
|-
 
| 15 || SET/CLR || Set/Clear control bit. Determines if bits written with a 1 get set or cleared. Bits written with a zero are always unchanged.
 
| 15 || SET/CLR || Set/Clear control bit. Determines if bits written with a 1 get set or cleared. Bits written with a zero are always unchanged.
Line 62: Line 62:
 
! AUDxLCL !! + 51 !! W !! A !! Audio channel x location (Low 15 bits)
 
! AUDxLCL !! + 51 !! W !! A !! Audio channel x location (Low 15 bits)
 
|}
 
|}
 
+
This pair of registers contain the 18 bit starting address (location) of Audio channel x (x = 0,1,2,3) DMA data. This is not a pointer register and therefore only needs to be reloaded if a different memory location is to be output.<br>
This pair of registers contain the 18 bit starting address (location) of Audio channel x (x=0,1,2,3) DMA data. This is not a pointer register and therefore only needs to be reloaded if a different memory location is to be output.<br>
 
  
  
Line 97: Line 96:
 
| 05-00 || Sets one of 64 levels (000000 = no output), (111111 = 63 ones, one zero)
 
| 05-00 || Sets one of 64 levels (000000 = no output), (111111 = 63 ones, one zero)
 
|}
 
|}
 +
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! AUDxDAT !! & 55 !! W !! A !! Audio channel x Data
+
! AUDxDAT !! &55 !! W !! A !! Audio channel x Data
 
|}
 
|}
This register is the audio channel x (x=0,1,2,3) DMA data buffer. It contains 2 bytes of data that are output sequentially (with digital to analog conversion) to the audio output pins. The DMA controller automatically transfers data to this register from RAM. The processor can also write directly to this register. When the DMA data is finished (words output=length) and the data in this register has been used, an audio channel interrupt request is set.<br>
+
This register is the audio channel x (x = 0,1,2,3) DMA data buffer. It contains 2 bytes of data that are output sequentially (with digital to analog conversion) to the audio output pins. The DMA controller automatically transfers data to this register from RAM. The processor can also write directly to this register. When the DMA data is finished (words output=length) and the data in this register has been used, an audio channel interrupt request is set.<br>
  
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! BLTxPTH !! + * 28 !! W !! A !! Blitter Pointer to x (High 3 bits)
+
! BLTxPTH !! + *28 !! W !! A !! Blitter Pointer to x (High 3 bits)
 
|-
 
|-
! BLTxPTL !! + * 29 !! W !! A !! Blitter Pointer to x (Low 15 bits)
+
! BLTxPTL !! + *29 !! W !! A !! Blitter Pointer to x (Low 15 bits)
 
|}
 
|}
This pair of registers contains the 18 bit address of Blitter source (x=A,B,C) or dest. (x=D) DMA data. This pointer must be preloaded with the starting address of the data to be processed by the Blitter. After the Blitter is finished it will contain the last data address (plus increment and modulo).
+
This pair of registers contains the 18 bit address of Blitter source (x = A,B,C) or dest. (x = D) DMA data. This pointer must be preloaded with the starting address of the data to be processed by the Blitter. After the Blitter is finished it will contain the last data address (plus increment and modulo).
  
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! BLTxMOD !! * 32 !! W !! A !! Blitter Modulo x
+
! BLTxMOD !! *32 !! W !! A !! Blitter Modulo x
 
|}
 
|}
This register contains the Modulo for Blitter source (x=A,B,C) or dest (x=D). A Modulo is a number that is automatically added to the address at the end of each line, in order that the address then  points to the start of the next line. Each source or destination has its own Modulo, allowing each to be a different size, while an identical area of each is used in the Blitter operation.
+
This register contains the Modulo for Blitter source (x = A,B,C) or dest (x = D). A Modulo is a number that is automatically added to the address at the end of each line, in order that the address then  points to the start of the next line. Each source or destination has its own Modulo, allowing each to be a different size, while an identical area of each is used in the Blitter operation.
  
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! BLTAFWM !! * 22 !! W !! A !! first word mask for source A
+
! BLTAFWM !! *22 !! W !! A !! first word mask for source A
 
|-
 
|-
! BLTALWM !! * 23 !! W !! A !! last word mask for source A
+
! BLTALWM !! *23 !! W !! A !! last word mask for source A
 
|}
 
|}
The patterns in these two registers are "anded" with the first and last words of each line of data from source A into the Blitter. A zero in any bit overrides the data from source A. These registers should be set to all "ones" for fill mode or for line drawing mode.
+
The patterns in these two registers are "ANDed" with the first and last words of each line of data from source A into the Blitter. A zero in any bit overrides the data from source A. These registers should be set to all "ones" for fill mode or for line drawing mode.
  
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! BLTxDAT !! * 3A !! W !! A !! Blitter source x data reg.
+
! BLTxDAT !! *3A !! W !! A !! Blitter source x data reg.
 
|}
 
|}
This register hold source x (x=A,B,C) data for use by the Blitter. It is normally loaded by the Blitter DMA channel, however it may also be preloaded by the microprocessor.<br>
+
This register hold source x (x = A,B,C) data for use by the Blitter. It is normally loaded by the Blitter DMA channel, however it may also be preloaded by the microprocessor.<br>
  
BLTDDAT Blitter destination data register<br>
 
  
 +
{| class="wikitable"
 +
|-
 +
! BLTDDAT !! Blitter destination data register
 +
|}
 
This register holds the data resulting from each word of Blitter operation until it is sent to a RAM destination. This is a dummy address and cannot be read by the micro. The transfer is automatic during Blitter operation.
 
This register holds the data resulting from each word of Blitter operation until it is sent to a RAM destination. This is a dummy address and cannot be read by the micro. The transfer is automatic during Blitter operation.
  
Line 143: Line 146:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! BLTCON0 !! * 20 !! W !! A !! Blitter control register 0
+
! BLTCON0 !! *20 !! W !! A !! Blitter control register 0
 
|-
 
|-
! BLTCON1 !! * 21 !! W !! A !! Blitter control register 1
+
! BLTCON1 !! *21 !! W !! A !! Blitter control register 1
 
|}
 
|}
 
These two control registers are used together to control Blitter operations. There are 2 basic modes, area and line, which are selected by bit 0 of BLTCON1, as shown below.<br>
 
These two control registers are used together to control Blitter operations. There are 2 basic modes, area and line, which are selected by bit 0 of BLTCON1, as shown below.<br>
Line 154: Line 157:
 
! AREA MODE (“normal”) !! (“) !! (“) !! LINE MODE (line draw) !! (“) !! (“)
 
! AREA MODE (“normal”) !! (“) !! (“) !! LINE MODE (line draw) !! (“) !! (“)
 
|-
 
|-
! BIT# !! BLTCON0 !! BLTCON1 !! BIT# !! BLTCON0 !! BLTCON1
+
! BIT # !! BLTCON0 !! BLTCON1 !! BIT# !! BLTCON0 !! BLTCON1
 
|-
 
|-
 
| 15 || ASH3 || BSH3 || 15 || ASH3 || BSH3
 
| 15 || ASH3 || BSH3 || 15 || ASH3 || BSH3
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 14 || ASH2 || BSH2 || 14 || ASH2 || BSH2
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 13 || ASH1 || BSH1 || 13 || ASH1 || BSH1
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 12 || ASH0 || BSH0 || 12 || ASH0 || BSH0
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 11 || USEA || X || 11 || 1 || X
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 10 || USEB || X || 10 || 0 || X
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 09 || USEC || X || 09 || 1 || X
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 08 || USED || X || 08 || 1 || X
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 07 || LF7 || X || 07 || LF7 || X
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 06 || LF6 || X || 06 || LF6 || SIGN
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 05 || LF5 || X || 05 || LF5 || OVF
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 04 || LF4 || EFE || 04 || LF4 || SUD
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 03 || LF3 || IEE || 03 || LF3 || SUL
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 02 || LF2 || FCI || 02 || LF2 || AUL
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 01 || LF1 || DESC || 01 || LF1 || SING
 
|-
 
|-
| Example || Example || Example || Example || Example || Example
+
| 00 || LF0 || LINE (= 0) || 00 || LF0 || LINE (= 1)
 
|}
 
|}
 +
ASH3 = 0 Shift value of A source<br>
 +
BSH3 = 0 Shift value of B source and line texture<br>
 +
USEA Mode control bit to use Source A<br>
 +
USEB Mode control bit to use Source B<br>
 +
USEC Mode control bit to use Source C<br>
 +
USED Mode control bit to use Source D<br>
 +
LF7-0 Logic function minterm select lines<br>
 +
EFE Exclusive fill enable<br>
 +
IFE Inclusive fill enable<br>
 +
FCI Fill carry input<br>
 +
DESC Descending (decreasing address) control bit<br>
 +
LINE Line mode control bit<br>
 +
SIGN Line draw sign flag<br>
 +
OVF Line draw r/l word overflow flag<br>
 +
SUD Line draw, Sometimes Up or Down (=AUD*)<br>
 +
SUL Line draw, Sometimes Up or Left<br>
 +
AUL Line draw, Always Up or Left<br>
 +
SING Line draw, Single bit per horiz. line<br>
  
AREA MODE ("normal") LINE MODE (line draw)<br>
 
---------------------------------------- ------------------------------<br>
 
BIT# BLTCON0 BLTCON1 BIT# BLTCON0 BLTCON1<br>
 
----- ----------- ----------- ----- ----------- -----------<br>
 
15 ASH3 BSH3 15 ASH3 BSH3<br>
 
14 ASH2 BSH2 14 ASH2 BSH2<br>
 
13 ASH1 BSH1 13 ASH1 BSH1<br>
 
12 ASH0 BSH0 12 ASH0 BSH0<br>
 
11 USEA X 11 1 X<br>
 
10 USEB X 10 0 X<br>
 
09 USEC X 09 1 X<br>
 
08 USED X 08 1 X<br>
 
07 LF7 X 07 LF7 X<br>
 
06 LF6 X 06 LF6 SIGN<br>
 
05 LF5 X 05 LF5 OVF<br>
 
04 LF4 EFE 04 LF4 SUD<br>
 
03 LF3 IEE            03 LF3 SUL<br>
 
02 LF2 FCI            02 LF2 AUL<br>
 
01 LF1 DESC            01 LF1 SING<br>
 
00 LF0 LINE (=0) 00 LF0 LINE (=1)<br>
 
 
ASH3=0 Shift value of A source<br>
 
BSH3=0 Shift value of B source and line texture<br>
 
USEA Mode control bit to use Source A<br>
 
USEB Mode control bit to use Source B<br>
 
USEC Mode control bit to use Source C<br>
 
USED Mode control bit to use Source D<br>
 
LF7-0 Logic function minterm select lines<br>
 
EFE Exclusive fill enable<br>
 
IFE Inclusive fill enable<br>
 
FCI Fill carry input<br>
 
DESC Descending (decreasing address) control bit<br>
 
LINE Line mode control bit<br>
 
SIGN Line draw sign flag<br>
 
OVF Line draw r/l word overflow flag<br>
 
SUD Line draw, Sometimes Up or Down (=AUD*)<br>
 
SUL Line draw, Sometimes Up or Left<br>
 
AUL Line draw, Always Up or Left<br>
 
SING Line draw, Single bit per horiz. line<br>
 
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
| BLTSIZE || * 2C || W || A || Blitter start and size (window width, height)
+
! BLTSIZE !! * 2C !! W !! A !! Blitter start and size (window width, height)
 
|}
 
|}
 
This register contains the width and height of the Blitter operation (in line mode width must = 2, height = line length). Writing to this register will start the Blitter, and should be done last, after all pointers and control registers have been initialized.<br>
 
This register contains the width and height of the Blitter operation (in line mode width must = 2, height = line length). Writing to this register will start the Blitter, and should be done last, after all pointers and control registers have been initialized.<br>
Line 237: Line 219:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! BIT# !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 09 !! 08 !! 07 !! 06 !! 05 !! 04 !! 03 !! 02 !! 01 !! 00
+
! BIT # !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 09 !! 08 !! 07 !! 06 !! 05 !! 04 !! 03 !! 02 !! 01 !! 00
 
|-
 
|-
 
| || h9 || h8 || h7 || h6 || h5 || h4 || h3 || h2 || h1 || h0 || w5 || w4 || w3 || w2 || w1 || w0
 
| || h9 || h8 || h7 || h6 || h5 || h4 || h3 || h2 || h1 || h0 || w5 || w4 || w3 || w2 || w1 || w0
 
|}
 
|}
 
 
h=Height = Vertical lines (10 bits = 1024 lines max)<br>
+
h = Height = Vertical lines (10 bits = 1024 lines max)<br>
w= Width = Horiz. pixels (6 bits = 64 words = 1024 pixels max)<br>
+
w = Width = Horiz. pixels (6 bits = 64 words = 1024 pixels max)<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BPLxPTH !! +70 !! W !! A !! Bit-plane x pointer (High 3 bits)
 +
|-
 +
! BPLxPTL !! +71 !! W !! A !! Bit-plane x pointer (Low 15 bits)
 +
|}
 +
 
 +
This pair of registers contains the 18 bit pointer to the address of bit-plane x (x = 1,2,3,4,5,6) DMA data. This pointer must be reinitialized by the processor or coprocessor to point to the beginning of bit-plane data every vertical blank time.<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BPLxDAT !! &88 !! W !! D !! Bit-plane x data (Parallel to serial convert)
 +
|}
 +
These registers receive the DMA data fetched from RAM by the bit-plane address pointers described above. They act as a 6 word parallel to serial buffer for up to 6 memory "Bit-planes". (x = 3-6)<br>
 +
They are loaded by the display bit-plane DMA controller with data from 6 separate areas of memory. They output to the display most sig. bit first (left to right) simultaneously.<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BPL1MOD !! 84 !! W !! A !! Bit-plane modulo (odd planes)
 +
|-
 +
! BPL2MOD !! 85 !! W !! A !! Bit-plane modulo (even planes)
 +
|}
 +
These registers contain the Modulos for the odd and even bit-planes. A Modulo is a number that is automatically added to the address at the end of each line, in order that the address then points to the start of the next line. Since they have separate Modulos, the odd and even bit-planes may have sizes that are different from each other, as well as different from the Display Window size <br>
 +
 
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
| BPLxPTH || + 70 || W || A || Bit-plane x pointer (High 3 bits)
+
! BPLCON0 !! 80 !! W !! A D !! Bit-plane control reg. (misc. control bits)
 +
|-
 +
! BPLCON1 !! 81 !! W !! D !! Bit-plane control reg. (horiz. scroll control)
 +
|-
 +
! BPLCON2 !! 82 !! W !! D !! Bit-plane control reg. (video priority control)
 +
|}
 +
These registers control the operation of the bit-planes and various aspects of the display.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! BPLCON0 !! BPLCON1 !! BPLCON2
 +
|-
 +
| 15 || HIRES || X || X
 +
|-
 +
| 14 || BPU2 || X || X
 +
|-
 +
| 13 || BPU1 || X || X
 +
|-
 +
| 12 || BPU0 || X || X
 +
|-
 +
| 11 || HOMOD || X || X
 +
|-
 +
| 10 || DBPPF || X || X
 +
|-
 +
| 09 || COLOR || X || X
 +
|-
 +
| 08 || RGB || X || X
 +
|-
 +
| 07 || X || PF2H3 || X
 +
|-
 +
| 06 || X || PF2H2 || PF2PRI
 +
|-
 +
| 05 || X || PF2H1 || PF2P2
 +
|-
 +
| 04 || X || PF2H0 || PF2P1
 +
|-
 +
| 03 || LPEN || PH1H3 || PF2P0
 +
|-
 +
| 02 || LACE || PH1H2 || PF1P2
 +
|-
 +
| 01 || ERSY || PH1H1 || PF1P1
 
|-
 
|-
| BPLxPTL || + 71 || W || A || Bit-plane x pointer (Low 15 bits)
+
| 00 || X || PH1H0 || PF1P0
 
|}
 
|}
 +
HIRES = High resolution (640) mode<br>
 +
BPU = Bit-plane use code 000-110 (NONE through 6 inclusive)<br>
 +
HOMOD = Hold and Modify mode<br>
 +
DBLPF = Double playfield (PF1 = odd  PF2 = even bit-planes)<br>
 +
COLOR = Composite video COLOR enable<br>
 +
RGB = Red/Blue/Green enable bit<br>
 +
LPEN = Light pen enable (reset on power up)<br>
 +
LACE = Interlace enable (reset on power up)<br>
 +
ERSY = External Resync (HSYNC, VSYNC pads become inputs, reset on power up)<br>
 +
PF2PRI = Playfield 2 (even planes) has priority over (appears in front of) Playfield 1 (odd planes)<br>
 +
PF2P = Playfield 2 priority mode (with resp. to sprites)<br>
 +
PF1P = Playfield 1 priority mode (with resp. to sprites)<br>
 +
PF2H = Playfield 2 horizontal scroll code<br>
 +
PF1H = Playfield 1 horizontal scroll code<br>
  
This pair of registers contains the 18 bit pointer to the address of bit-plane x (x=1,2,3,4,5,6) DMA data. This pointer must be reinitialized by the processor or coprocessor to point to the beginning of bit-plane data every vertical blank time.<br>
 
  
BPLxDAT & 88 W D Bit-plane x data (Parallel to serial convert)<br>
+
{| class="wikitable"
 +
|-
 +
! CLXCON !! 4C !! W !! D !! Collision control
 +
|}
 +
This register controls which bit-planes are included (enabled)<br>
 +
in collision detection, and their required state if included.<br>
 +
It also controls the individual inclusion of odd numbered<br>
 +
sprites in the collision detection, by logically ORing them<br>
 +
with their corresponding even numbered sprite.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! FUNCTION !! DESCRIPTION
 +
|-
 +
| 15 || ENSP7 || Enable Sprite 7 (ORed with Sprite 6)
 +
|-
 +
| 14 || ENSP5 || Enable Sprite 5 (ORed with Sprite 4)
 +
|-
 +
| 13 || ENSP3 || Enable Sprite 3 (ORed with Sprite 2)
 +
|-
 +
| 12 || ENSP1 || Enable Sprite 1 (ORed with Sprite 0)
 +
|-
 +
| 11 || ENBP6 || Enable Bit-Plane 6 (Match reqd. for collision
 +
|-
 +
| 10 || ENBP5 || Enable Bit-Plane 5 (Match reqd. for collision)
 +
|-
 +
| 09 || ENBP4 || Enable Bit-Plane 4 (Match reqd. for collision)
 +
|-
 +
| 08 || ENBP3 || Enable Bit-Plane 3 (Match reqd. for collision)
 +
|-
 +
| 07 || ENBP2 || Enable Bit-Plane 2 (Match reqd. for collision)
 +
|-
 +
| 06 || ENBP1 || Enable Bit-Plane 1 (Match reqd. for collision)
 +
|-
 +
| 05 || MVBP6 || Match Value for Bit-Plane 6 collision
 +
|-
 +
| 04 || MVBP5 || Match Value for Bit-Plane 5 collision
 +
|-
 +
| 03 || MVBP4 || Match Value for Bit-Plane 4 collision
 +
|-
 +
| 02 || MVBP3 || Match Value for Bit-Plane 3 collision
 +
|-
 +
| 01 || MVBP2 || Match Value for Bit-Plane 2 collision
 +
|-
 +
| 00 || MVBP1 || Match Value for Bit-Plane 1 collision
 +
|}
 +
Note: Disabled Bit-Planes cannot prevent collisions. Therefore if all bit-planes are disabled, collisions will be continuous, regardless of the match values.<br>
  
These registers receive the DMA data fetched from RAM
 
by the bit-plane address pointers described above.
 
They act as a 6 word parallel to serial buffer
 
for up to 6 memory "Bit-planes". (x=3-6)
 
They are loaded by the display bit-plane DMA controller
 
with data from 6 separate areas of memory. They output to
 
the display most sig. bit first (left to right) simultaneously.<br>
 
BPL1MOD  84 W A Bit-plane modulo (odd planes)<br>
 
BPL2MOD  85 W A Bit-plane modulo (even planes)<br>
 
  
These registers contain the Modulos for the odd and even
+
{| class="wikitable"
bit-planes. A Modulo is a number that is automatically added
+
|-
to the address at the end of each line, in order that
+
! CLXDAT !! *07 !! R !! D !! Collision data reg. (Read and clear). This address reads (and clears) the collision detection register. The bit assignments are below.
the address then points to the start of the next line.
+
|}
Since they have separate Modulos, the odd and even
+
NOTE: Playfield 1 is all odd numbered enabled bit-planes. Playfield 2 is all even numbered enabled bit-planes.
bit-planes may have sizes that are different from each
 
other, as well as different from the Display Window size.<br>
 
BPLCON0 80 W A D Bit-plane control reg. (misc. control bits)<br>
 
BPLCON1 81 W    D Bit-plane control reg. (horiz. scroll control)<br>
 
BPLCON2 82 W    D Bit-plane control reg. (video priority control)<br>
 
  
These registers control the operation of the bit-planes<br>
+
{| class="wikitable"
and various aspects of the display.<br>
+
|-
BIT# BPLCON0 BPLCON1 BPLCON2<br>
+
! BIT # !! COLLISIONS REGISTERED
----- ----------- ----------- -----------<br>
+
|-
15 HIRES X X<br>
+
| 15 || not used
14 BPU2 X X<br>
+
|-
13 BPU1 X X<br>
+
| 14 || Sprite 4 (or 5) to Sprite 6 (or 7)
12 BPU0 X X<br>
+
|-
11 HOMOD X X<br>
+
| 13 || Sprite 2 (or 3) to Sprite 6 (or 7)
10 DBPPF X X<br>
+
|-
09 COLOR X X<br>
+
| 12 || Sprite 2 (or 3) to Sprite 4 (or 5)
08 RGB X X<br>
+
|-
07 X PF2H3 X<br>
+
| 11 || Sprite 0 (or 1) to Sprite 6 (or 7)
06 X PF2H2 PF2PRI<br>
+
|-
05 X PF2H1 PF2P2<br>
+
| 10 || Sprite 0 (or 1) to Sprite 4 (or 5)
04 X PF2H0 PF2P1<br>
+
|-
03 LPEN PH1H3 PF2P0<br>
+
| 09 || Sprite 0 (or 1) to Sprite 2 (or 3)
02 LACE PH1H2 PF2P1<br>
+
|-
01 ERSY PF1H1 PF2P1<br>
+
| 08 || Playfield 2 to Sprite 6 (or 7)
00 X PF1H0 PF2P0<br>
+
|-
 +
| 07 || Playfield 2 to Sprite 4 (or 5)
 +
|-
 +
| 06 || Playfield 2 to Sprite 2 (or 3)
 +
|-
 +
| 05 || Playfield 2 to Sprite 0 (or 1)
 +
|-
 +
| 04 || Playfield 1 to Sprite 6 (or 7)
 +
|-
 +
| 03 || Playfield 1 to Sprite 4 (or 5)
 +
|-
 +
| 02 || Playfield 1 to Sprite 2 (or 3)
 +
|-
 +
| 01 || Playfield 1 to Sprite 0 (or 1)
 +
|-
 +
| 00 || Playfield 1 to Playfield 2
 +
|}
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! COLORxx !! C0 !! W !! D !! Color table xx
 +
|}
 +
There are 32 of these registers (xx = 00-31) and they are sometimes collectively called the "Color Palette". They contain 12-bit codes representing RED, GREEN, BLUE colors for RGB systems. One of these registers at a time is selected (by the BPLxDAT serialized video code) for presentation at the RGB video output pins. The table below shows the color register bit usage.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 09 !! 08 !! 07 !! 06 !! 05 !! 04 !! 03 !! 02 !! 01 !! 00
 +
|-
 +
| RGB || X || X || X || X || R3 || R2 || R1 || R0 || G3 || G2 || G1 || G0 || B3 || B2 || B1 || B0
 +
|}
 +
B = blue, G = green, R = red<br>
 +
BE = blue enable, GE = green enable, RE = red enable<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! COPCON !! *17 !! W !! A !! Coprocessor control register
 +
|}
 +
This is a 1-bit register that when set true, allows the Coprocessor to access the Blitter hardware. This bit is cleared by power on reset, so that the Coprocessor cannot access the Blitter hardware.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! NAME !! FUNCTION
 +
|-
 +
| 01 || CDANG || Coprocessor danger mode. Allows Coprocessor access to Blitter if true.
 +
|}
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! COPJMP1 !! 44 !! S !! A !! Coprocessor restart at first location
 +
|-
 +
! COPJMP2 !! 45 !! S !! A !! Coprocessor restart at second location
 +
|}
 +
These addresses are strobe addresses, that when written to cause the Coprocessor to jump indirect using the address contained in the First or Second Location registers described below. The Coprocessor itself can write to these addresses, causing its own jump indirect.<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! COP1LCH !! +40 !! Coprocessor first location reg. (High 3 bits)
 +
|-
 +
! COP1LCL !! +41 !! Coprocessor first location reg. (Low 15 bits)
 +
|-
 +
! COP2LCH !! +42 !! Coprocessor second location reg. (High 3 bits)
 +
|-
 +
! COP2LCL !! +43 !! Coprocessor second location reg. (Low 15 bits)
 +
|}
 +
These registers contain the jump addresses described above.<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! COPINS !! 46 !! W !! A !! Coprocessor inst. fetch identify
 +
|}
 +
This is a dummy address that is generated by the Coprocessor whenever it is loading instructions into its own instruction register. This actually occurs every Coprocessor cycle except for the second (IR2) cycle of the MOVE instruction. The three types of instructions are shown below.<br>
 +
 
 +
MOVE Move immediate to dest.<br>
 +
 
 +
WAIT Wait until beam counter is equal to, or greater than.<br>
 +
(keeps Coprocessor off of bus until beam position has been reached)<br>
 +
 
 +
SKIP Skip if beam counter is equal to, or greater than.<br>
 +
(skips following MOVE isnt. unless beam position has been reached)<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! !! MOVE !! (“) !! WAIT UNTIL !! (“) !! SKIP IF !! (“)
 +
|-
 +
! BIT # !! IR1 !! IR2 !! IR1 !! IR2 !! IR1 !! IR2
 +
|-
 +
| 15 || X || RD15 || VP7 || BFD * || VP7 || BFD *
 +
|-
 +
| 14 || X || RD14 || VP6 || VE6 || VP6 || VE6
 +
|-
 +
| 13 || X || RD13 || VP5 || VE5 || VP5 || VE5
 +
|-
 +
| 12 || X || RD12 || VP4 || VE4 || VP4 || VE4
 +
|-
 +
| 11 || X || RD11 || VP3 || VE3 || VP3 || VE3
 +
|-
 +
| 10 || X || RD10 || VP2 || VE2 || VP2 || VE2
 +
|-
 +
| 09 || X || RD09 || VP1 || VE1 || VP1 || VE1
 +
|-
 +
| 08 || DA8 || RD08 || VP0 || VE0 || VP0 || VE0
 +
|-
 +
| 07 || DA7 || RD07 || HP8 || HE8 || HP8 || HE8
 +
|-
 +
| 06 || DA6 || RD06 || HP7 || HE7 || HP7 || HE7
 +
|-
 +
| 05 || DA5 || RD05 || HP6 || HE6 || HP6 || HE6
 +
|-
 +
| 04 || DA4 || RD04 || HP5 || HE5 || HP5 || HE5
 +
|-
 +
| 03 || DA3 || RD03 || HP4 || HE4 || HP4 || HE4
 +
|-
 +
| 02 || DA2 || RD02 || HP3 || HE3 || HP3 || HE3
 +
|-
 +
| 01 || DA1 || RD01 || HP2 || HE2 || HP2 || HE2
 +
|-
 +
| 00 || 0 || RD00 || 1 || 0 || 1 || 1
 +
|}
 +
IR1 = First instruction register.<br>
 +
IR2 = Second instruction register.<br>
 +
DA = Destination Address for MOVE instruction. Fetched during IR1 time, used during IR2 time on RGA bus.<br>
 +
RD = RAM Data moved by MOVE instruction at IR2 time.<br>
 +
directly from RAM to the address given by the DA field.<br>
 +
VP = Vertical Beam Position comparison bit.<br>
 +
HP = Horizontal Beam Position comparison bit.<br>
 +
VE = Enable comparison (mask bit).<br>
 +
HE = Enable comparison (mask bit).<br>
 +
 
 +
*NOTE    BFD  = Blitter Finished Disable. When this bit is true, the Blitter Finished flag will have no effect on the Coprocessor. When this bit is zero, the Blitter Finished flag must be true (in addition to the rest of the bit comparisons) before the Coprocessor can exit from its wait state, or skip over an instruction. Note that the V7 comparison cannot be masked.<br>
 +
The Coprocessor is basically a 2 cycle machine that requests the bus only during odd memory cycles. (4 memory cycles per ins.) This prevents collisions with Display, Audio, Disk, Refresh, and Sprites, all of which use only even cycles. It therefore needs (and has) priority over only the Blitter and Micro. There are only three types of instructions, MOVE immediate, WAIT until, and SKIP if. All instructions require 2 bus cycles (and two instruction words). Since only the odd bus cycles are requested, 4 memory cycle times are required per instruction. (memory cycles are 280 ns) There are two indirect jump registers COP1LC and COP2LC. These are 18-bit pointer registers whose contents are used to modify the program counter for initialization or jumps. They are transferred to the program counter whenever strobe addresses COPJMP1 or COPJMP2 are written. In addition, COP1LC is automatically used at the beginning of each vertical blank time. It is important that one of the jump registers be initialized and its jump strobe address hit, after power up but before Coprocessor DMA is initialized. This insures a determined startup address, and state.<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! DIWSTRT !! 47 !! W !! A !! Display Window Start (upper left vert-hor pos)
 +
|-
 +
! DIWSTOP !! 48 !! W !! A !! Display Window Stop (lower right vert-hor pos)
 +
|}
 +
These registers control the Display window size and position by locating the upper left and lower right corners.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 09 !! 08 !! 07 !! 06 !! 05 !! 04 !! 03 !! 02 !! 01 !! 00
 +
|-
 +
| USE || V7 || V6 || V5 || V4 || V3 || V2 || V1 || V0 || H7 || H6 || H5 || H4 || H3 || H2 || H1 || H0
 +
|}
 +
DIWSTRT is vertically restricted to the upper 2/3 of the display (V8 = 0), and horizontally  restricted to the left 3/4 of the display (H8 = 0).<br>
 +
 
 +
DIWSTOP is vertically restricted to the lower 1/2 of the display (V8 = / = V7), and horizontally restricted to the right 1/4 of the display (H8 = 1).<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! DDFSTRT !! 49 !! W !! A !! Display data fetch start (Horiz. Position)
 +
|-
 +
! DDFSTOP !! 4A !! W !! A !! Display data fetch stop (Horiz. Position)
 +
|}
 +
These registers control the horizontal timing of the beginning and end of the bit-plane DMA display data fetch. The vertical bit-plane DMA timing is identical to the display windows described above. The bit-plane Modulos are dependent on the bit-plane horizontal size, and on the data fetch window size.<br>
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 09 !! 08 !! 07 !! 06 !! 05 !! 04 !! 03 !! 02 !! 01 !! 00
 +
|-
 +
| USE || X || X || X || X || X || X || X || X || H8 || H7 || H6 || H5 || H4 || X || X || X
 +
|}
 +
(X bits should always be driven with 0 to maintain upward compatibility)<br>
 +
The tables below show the start and stop timing for different register contents.<br>
 +
 
 +
DDFSTRT (Left edge of display data fetch)<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! PURPOSE !! H8 !! H7 !! H6 !! H5 !! H4
 +
|-
 +
| Extra wide (max) * || 0 || 0 || 1 || 0 || 1
 +
|-
 +
| wide || 0 || 0 || 1 || 1 || 0
 +
|-
 +
| normal || 0 || 0 || 1 || 1 || 1
 +
|-
 +
| narrow || 0 || 1 || 0 || 0 || 0
 +
|}
 +
 
 +
DDFSTOP (Right edge of display data fetch)<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! PURPOSE !! H8 !! H7 !! H6 !! H5 !! H4
 +
|-
 +
| narrow || 1 || 1 || 0 || 0 || 1
 +
|-
 +
| normal || 1 || 1 || 0 || 1 || 0
 +
|-
 +
| wide (max) || 1 || 1 || 0 || 1 || 1
 +
|}
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! DMACON !! 4B !! W !! A D P !! DMA control write (clear or set)
 +
|-
 +
! DMACONR !! *01 !! R !! A P !! DMA control (and Blitter status) read
 +
|}
 +
This register controls all of the DMA channels, and contains Blitter DMA status bits.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! FUNCTION !! DESCRIPTION
 +
|-
 +
| 15 || SET/CLR || Set/Clear control bit. Determines if bits written with a 1 get set or cleared.
 +
|-
 +
| 14 || BBUSY || Blitter busy status bit (read only).
 +
|-
 +
| 13 || BZERO || Blitter logic zero status bit (read only).
 +
|-
 +
| 12 || X ||
 +
|-
 +
| 11 || X ||
 +
|-
 +
| 10 || BLTPRI || Blitter DMA priority (over CPU Micro)*
 +
|-
 +
| 09 || DMAEN || Enable all DMA below
 +
|-
 +
| 08 || BPLEN || Bit-plane DMA enable
 +
|-
 +
| 07 || COPEN || Coprocessor DMA enable
 +
|-
 +
| 06 || BLTEN || Blitter DMA enable
 +
|-
 +
| 05 || SPREN || Sprite DMA enable
 +
|-
 +
| 04 || DSKEN || Disk DMA enable
 +
|-
 +
| 03 || AUD3EN || Audio channel 3 DMA enable
 +
|-
 +
| 02 || AUD2EN || Audio channel 2 DMA enable
 +
|-
 +
| 01 || AUD1EN || Audio channel 1 DMA enable
 +
|-
 +
| 00 || AUD0EN || Audio channel 0 DMA enable
 +
|}
 +
*(also called "Blitter Nasty"), (disables /BLS pin, preventing Micro from stealing any bus cycles while Blitter DMA is running)
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! DSKPTH !! + *10 !! W !! A !! Disk pointer (High 3 bits)
 +
|-
 +
! DSKPTL !! + *11 !! W !! A !! Disk pointer (Low 15 bits)
 +
|}
 +
This pair of registers contain the 18-bit address of Disk DMA data. These address registers must be initialized by the processor or Coprocessor before disk DMA is enabled.<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! DSKLEN !! *12 !! W !! P !! Disk length
 +
|}
 +
This register contains the length (number of words) of Disk DMA data. It also contains 2 control bits. These are a DMA enable bit, and a DMA direction (read/write) bit.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! !!
 +
|-
 +
| 15 || DMAEN || Disk DMA Enable
 +
|-
 +
| 14 || WRITE || Disk Write (RAM to Disk) if 1
 +
|-
 +
| 13-0 || LENGTH || Length (# of words) of DMA data
 +
|}
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! DSKDAT !! & *13 !! W !! P !! Disk DMA Data write
 +
|-
 +
! DSKDATR !! & *04 !! ER !! P !! Disk DMA Data read (early read dummy address)
 +
|}
 +
This register is the Disk DMA data buffer. It contains 2 bytes of data that are either sent to (write) or received from (read) the disk. The write mode is enable by bit 14 of the LENGTH register. The DMA controller automatically transfers data to or from this register and RAM, and when the DMA data is finished (Length = 0), it causes a Disk Block Interrupt. See interrupts below.<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! DSKBYTR !! *0D !! R !! P !! Disk Data byte and status read
 +
|}
 +
This register is the Disk Microprocessor data buffer. Data from the disk (in read mode) is loaded into this register one byte at a time, and the Disk Byte Interrupt request bit is set true. This interrupt bit is mirrored in bit 15 of this address to allow simultaneous reading and polling. The interrupt bit must be cleared however by writing to the INTREQ register.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !!  !!
 +
|-
 +
| 15 || DSKBYT || Disk byte ready (reset on read)
 +
|-
 +
| 14 || DMAON || (disk)
 +
|-
 +
| 13 || DISKWRITE ||
 +
|-
 +
| 12 || WORDEQUAL || (from disk sync circuit)
 +
|-
 +
| 11-08 || X || Not used
 +
|-
 +
| 07-00 || DATA || Disk byte data
 +
|}
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! DSKSYNC !! 3F !! R !! P !! Disk sync register, holds the code for disk read synchronization. See ADKCON bit 10.
 +
|-
 +
! INTREQ !! 4E !! W !! P !! Interrupt Request bits (clear or set)
 +
|-
 +
! INTREQR !! *0F !! R !! P !! Interrupt Request bits (read)
 +
|}
 +
This register contains interrupt request bits (or flags). These bits may be polled by the processor, and if enabled by the bits listed in the next register, they may cause processor interrupts. Both a set and clear operation are required to load arbitrary data into this register. The bit assignments are identical to the Enable register below.<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! INTENA !! 4D !! W !! P !! Interrupt Enable bits (clear or set bits)
 +
|-
 +
! INTENAR !! *0E !! R !! P !! Interrupt Enable bits read
 +
|}
 +
This register contains interrupt enable bits. The bit assignments for both the request and enable registers are given below.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! FUNCT !! LEVEL !! DESCRIPTION
 +
|-
 +
| 15 || SET/CLR ||  || Set/Clear control bit. Determines if bits written with a 1 get set or cleared. Bits written with a 0 are always unchanged.
 +
|-
 +
| 14 || INTEN ||  || Master interrupt (enable only, no request)
 +
|-
 +
| 13 || EXTER || 6 || External interrupt
 +
|-
 +
| 12 || DSKBYT || 5 || Disk Byte ready (disk sync)
 +
|-
 +
| 11 || RBF || 5 || Serial port Receive Buffer Full
 +
|-
 +
| 10 || AUD3 || 4 || Audio channel 3 block finished
 +
|-
 +
| 09 || AUD2 || 4 || Audio channel 2 block finished
 +
|-
 +
| 08 || AUD1 || 4 || Audio channel 1 block finished
 +
|-
 +
| 07 || AUD0 || 4 || Audio channel 0 block finished
 +
|-
 +
| 06 || BLIT || 3 || Blitter finished
 +
|-
 +
| 05 || VERTB || 3 || Start of Vertical blank
 +
|-
 +
| 04 || COPER || 3 || Coprocessor
 +
|-
 +
| 03 || PORTS || 2 || I/O Ports and timers
 +
|-
 +
| 02 || OVRUN || 1 || Serial port receiver overrun
 +
|-
 +
| 01 || DSKBLK || 1 || Disk Block finished
 +
|-
 +
| 00 || TBE || 1 || Serial port Transmit Buffer Empty
 +
|}
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! JOY0DAT !! *05 !! R !! D !! Joystick-mouse 0 data (left vert, horiz)
 +
|-
 +
! JOY1DAT !! *06 !! R !! D !! Joystick-mouse 1 data (left vert, horiz)
 +
|}
 +
These addresses each read a pair of 8-bit mouse counters. 0 = left controller pair, 1 = right controller pair. (4 counters total). The bit usage for both left and right addresses are shown below. Each counter is clocked by signals from 2 controller pins. Bits 1 and 0 of each counter may be read to determine the state of these 2 clock pins. This allows these pins to double as joystick switch inputs. Mouse counter usage (pins 1-3 = Yclock, pins 2-4 = Xclock)
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 09 !! 08 !! 07 !! 06 !! 05 !! 04 !! 03 !! 02 !! 01 !! 00
 +
|-
 +
| 0DAT || Y7 || Y6 || Y5 || Y4 || Y3 || Y2 || Y1 || Y0 || X7 || X6 || X5 || X4 || X3 || X2 || X1 || X0
 +
|-
 +
| 1DAT || Y7 || Y6 || Y5 || Y4 || Y3 || Y2 || Y1 || Y0 || X7 || X6 || X5 || X4 || X3 || X2 || X1 || X0
 +
|}
 +
Joystick switch usage<br>
 +
To detect these read these<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Directions !! Pin # !! Counter Bits
 +
|-
 +
| Forward || 1 || Y1 xor Y0 (BIT# 09 xor BIT# 08)
 +
|-
 +
| Left || 3 || Y1
 +
|-
 +
| Back || 2 || X1 xor X0 (BIT# 01 xor BIT#00)
 +
|-
 +
| Right || 4 || X1
 +
|}
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! JOYTEST !! *1B !! W !! D !! Write to all 4 Joystick-mouse counters at once.
 +
|}
 +
Mouse counter write test data.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 09 !! 08 !! 07 !! 06 !! 05 !! 04 !! 03 !! 02 !! 01 !! 00
 +
|-
 +
| 0DAT || Y7 || Y6 || Y5 || Y4 || Y3 || Y2 || xx || xx || X7 || X6 || X5 || X4 || X3 || X2 || X1 || X0
 +
|-
 +
| 1DAT || Y7 || Y6 || Y5 || Y4 || Y3 || Y2 || xx || xx || X7 || X6 || X5 || X4 || X3 || X2 || X1 || X0
 +
|}
 +
 
 +
{| class="wikitable"
 +
|-
 +
! CONNECTORS !! (") !! (") !! (") !! PORTIA
 +
|-
 +
! loc. !! dir. !! sym. !! pin !! pin
 +
|-
 +
| RIGHT || Y || RY || 9 || 33
 +
|-
 +
| RIGHT || X || RX || 5 || 32
 +
|-
 +
| LEFT || Y || LY || 9 || 36
 +
|-
 +
| LEFT || X || LX || 5 || 35
 +
|}
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! POTGO !! *1A !! W !! P !! Pot Port (4-bit) Direction and Data, and Pot Counter start.
 +
|-
 +
! POTINP !! *0B !! R !! P !! Pot pin data read
 +
|}
 +
This register controls a 4-bit bi-directional I/O port that shares the same 4 pins as the 4 pot counters above.<br>
 +
 
 +
{| class="wikitable"
 +
|-
 +
! BIT # !! FUNCT !! DESCRIPTION
 +
|-
 +
| 15 || OUTRY || Output enable for Portia pin 33
 +
|-
 +
| 14 || DATRY || I/O data Portia pin 33
 +
|-
 +
| 13 || OUTRX || Output enable for Portia pin 32
 +
|-
 +
| 12 || DATRX || I/O data Portia pin 32
 +
|-
 +
| 11 || OUTLY || Output enable for Portia pin 36
 +
|-
 +
| 10 || DATLY || I/O data Portia pin 36
 +
|-
 +
| 09 || OUTLX || Output enable for Portia pin 35
 +
|-
 +
| 08 || DATLX || I/O data Portia pin 35
 +
|-
 +
| 07-01 || X || not used
 +
|-
 +
| 00 || START || Start pots (dump capacitors, start counters)
 +
|}
  
HIRES = High resolution (640) mode<br>
 
BPU = Bit-plane use code 000-110 (NONE through 6 inclusive)<br>
 
HOMOD = Hold and Modify mode<br>
 
DBLPF = Double playfield (PF1 = odd  PF2 = even bit-planes)<br>
 
COLOR = Composite video COLOR enable<br>
 
RGB = Red/Blue/Green enable bit<br>
 
LPEN = Light pen enable (reset on power up)<br>
 
LACE = Interlace enable (reset on power up)<br>
 
ERSY = External Resync (HSYNC, VSYNC pads become inputs)<br>
 
(reset on power up)<br>
 
PF2PRI = Playfield 2 (even planes) has priority over<br>
 
(appears in front of) Playfield 1 (odd planes)<br>
 
PF2P = Playfield 2 priority mode (with resp. to sprites)<br>
 
PF1P = Playfield 1 priority mode (with resp. to sprites)<br>
 
PF2H = Playfield 2 horizontal scroll code<br>
 
PF1H = Playfield 1 horizontal scroll code<br>
 
CLXCON 4C W D        Collision control<br>
 
 
This register controls which bit-planes are included (enabled)<br>
 
                                in collision detection, and their required state if included.<br>
 
                                It also controls the individual inclusion of odd numbered<br>
 
                                sprites in the collision detection, by logically ORing them<br>
 
                                with their corresponding even numbered sprite.<br>
 
  
                                BIT#  FUNCTION  DESCRIPTION<br>
+
{| class="wikitable"
                                -----  ------------  ----------------<br>
+
|-
                                15      ENSP7          Enable Sprite 7 (ORed with Sprite 6)<br>
+
! REFPTR !! & *14 !! W !! A !! Refresh pointer
                                14     ENSP5          Enable Sprite 5 (ORed with Sprite 4)<br>
+
|}
                                13      ENSP3          Enable Sprite 3 (ORed with Sprite 2)<br>
+
This register is used as a Dynamic RAM refresh address generator. It is writable for test purposes only, and should never be written by the microprocessor.<br>
                                12      ENSP1          Enable Sprite 1 (ORed with Sprite 0)<br>
 
                                11      ENBP6          Enable Bit-Plane 6 (Match reqd. for collision)<br>
 
                                10      ENBP5          Enable Bit-Plane 5 (Match reqd. for collision)<br>
 
                                09      ENBP4          Enable Bit-Plane 4 (Match reqd. for collision)<br>
 
                                08      ENBP3          Enable Bit-Plane 3 (Match reqd. for collision)<br>
 
                                07      ENBP2          Enable Bit-Plane 2 (Match reqd. for collision)<br>
 
                                06      ENBP1          Enable Bit-Plane 1 (Match reqd. for collision)<br>
 
                                05      MVBP6          Match Value for Bit-Plane 6 collision<br>
 
                                04      MVBP5          Match Value for Bit-Plane 5 collision<br>
 
                                03      MVBP4          Match Value for Bit-Plane 4 collision<br>
 
                                02      MVBP3          Match Value for Bit-Plane 3 collision<br>
 
                                01      MVBP2          Match Value for Bit-Plane 2 collision<br>
 
                                00      MVBP1          Match Value for Bit-Plane 1 collision<br>
 
                                          Note: Disabled Bit-Planes cannot prevent collisions.<br>
 
                                          Therefore if all bit-planes are disabled, collisions<br>
 
                                          will be continuous, regardless of the match values.<br>
 
*07 R D                Collision data reg. (Read and clear)<br>
 
                                This address reads (and clears) the collision<br>
 
                                detection register. _he bit assignments are below.<br>
 
  
                                NOTE: Playfield 1 is all odd numbered enabled bit-planes<br>
 
                                              Playfield 2 is all even numbered enabled bit-planes<br>
 
  
                                BIT#  COLLISIONS REGISTERED<br>
+
{| class="wikitable"
                                -----  ------------------------------------<br>
+
|-
                                15      not used<br>
+
! SERDAT !! *18 !! W !! P !! Serial Port Data and stop bits write
                                14      Sprite 4 (or 5) to Sprite 6 (or 7)<br>
+
|}
                                13      Sprite 2 (or 3) to Sprite 6 (or 7)<br>
+
This address writes data to a Transmit data buffer. Data from this buffer is moved into a serial shift register for output transmission whenever it is empty. This sets the Interrupt Request TBE (transmit buffer empty). A stop bit must be provided as part of the data word. The length of the data word is set by the position of the stop bit.<br>
                                12      Sprite 2 (or 3) to Sprite 4 (or 5)<br>
 
                                11      Sprite 0 (or 1) to Sprite 6 (or 7)<br>
 
                                10      Sprite 0 (or 1) to Sprite 4 (or 5)<br>
 
                                09      Sprite 0 (or 1) to Sprite 2 (or 3)<br>
 
                                08      Playfield 2 to Sprite 6 (or 7)<br>
 
                                07      Playfield 2 to Sprite 4 (or 5)<br>
 
                                06      Playfield 2 to Sprite 2 (or 3)<br>
 
                                05      Playfield 2 to Sprite 0 (or 1)<br>
 
                                04      Playfield 1 to Sprite 6 (or 7)<br>
 
                                03      Playfield 1 to Sprite 4 (or 5)<br>
 
                                02      Playfield 1 to Sprite 2 (or 3)<br>
 
                                01      Playfield 1 to Sprite 0 (or 1)<br>
 
                                00      Playfield 1 to Playfield 2<br>
 
COLORxx C0 W D          Color table xx<br>
 
  
                                There are 32 of these registers (xx = 00-31) and they<br>
 
                                are sometimes collectively called the "Color Palette".<br>
 
                                They contain 12-bit codes representing<br>
 
                                RED, GREEN, BLUE colors for RGB systems.<br>
 
                                One of these registers at a time is selected<br>
 
                                (by the BPLxDAT serialized video code)<br>
 
                                for presentation at the RGB video output pins.<br>
 
                                The table below shows the color register bit usage.<br>
 
  
                                BIT# 15, 14, 13, 12   11, 10, 09, 08   07, 06, 05, 04   03, 02, 01, 00<br>
+
{| class="wikitable"
                                -----  ---------------    --------------      ---------------    ---------------<br>
+
|-
                                RGB  X    X    X    X      R3  R2  R1  R0  G3  G2  G1  G0  B3  B2  B1  B0<br>
+
! BIT # !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 09 !! 08 !! 07 !! 06 !! 05 !! 04 !! 03 !! 02 !! 01 !! 00
                                B=blue, G=green, R=red<br>
+
|-
                                BE=blue enable, GE=green enable, RE=red enable<br>
+
| USE || 0 || 0 || 0 || 0 || 0 || 0 || S || D8 || D7 || D6 || D5 || D4 || D3 || D2 || D1 || D0
COPCON *17 W A          Coprocessor control register<br>
+
|}
 +
Note S = stop bit = 1, D= data bits<br>
  
                                This is a 1-bit register that when set true, allows<br>
 
                                the Coprocessor to access the Blitter hardware. This<br>
 
                                bit is cleared by power on reset, so that the<br>
 
                                Coprocessor cannot access the Blitter hardware.<br>
 
  
                                BIT#    NAME    FUNCTION<br>
+
{| class="wikitable"
                                -----    -------    --------------------<br>
+
|-
                                01        CDANG  Coprocessor danger mode. Allows coprocessor<br>
+
! SERDATR !! *0C !! R !! P !! Serial Port Data and Status read
                                                              access to Blitter if true.<br>
+
|}
COPJMP1 44 S A              Coprocessor restart at first location<br>
+
This address reads data from a Receive data buffer. Data in this buffer is loaded from a receiving shift register whenever it is full. Several interrupt request bits are also read at this address, along with the data, as shown below.<br>
COPJMP2 45 S A              Coprocessor restart at second location<br>
 
  
                              These addresses are strobe addresses, that when written to<br>
+
{| class="wikitable"
                              cause the Coprocessor to jump indirect using the address<br>
+
|-
                              contained in the First or Second Location registers<br>
+
! BIT # !!  !!
                              described below. The Coprocessor itself can write to these<br>
+
|-
                              addresses, causing its own jump indirect.<br>
+
| 15 || OVRUN || Serial port receiver overrun
COP1LCH + 40 W A          Coprocessor first location reg. (High 3 bits)<br>
+
|-
COP1LCL + 41 W A            Coprocessor first location reg. (Low 15 bits)<br>
+
| 14 || RBF || Serial port Receive Buffer Full (mirror)
COP2LCH + 42 W A          Coprocessor second location reg. (High 3 bits)<br>
+
|-
COP2LCL + 43 W A            Coprocessor second location reg. (Low 15 bits)<br>                             
+
| 13 || TBE || Serial port Transmit Buffer Empty (mirror)
 +
|-
 +
| 12 || TSRE || Serial port Transmit shift reg. empty
 +
|-
 +
| 11 || RXD || RXD pin receives UART serial data for direct bit test by the micro
 +
|-
 +
| 10 || x || Not used
 +
|-
 +
| 09 || STP || Stop bit
 +
|-
 +
| 08 || STP-DB8 || Stop bit if LONG, Data bit if not
 +
|-
 +
| 07 || DB7 || Data bit
 +
|-
 +
| 06 || DB6 || Data bit
 +
|-
 +
| 05 || DB5 || Data bit
 +
|-
 +
| 04 || DB4 || Data bit
 +
|-
 +
| 03 || DB3 || Data bit
 +
|-
 +
| 02 || DB2 || Data bit
 +
|-
 +
| 01 || DB1 || Data bit
 +
|-
 +
| 00 || DB0 || Data bit
 +
|}
  
                                These registers contain the jump addresses described above.<br>
 
COPINS 46 W A Coprocessor inst. fetch identify<br>
 
This is a dummy address that is generated by the Coprocessor<br>
 
whenever it is loading instructions into its own instruction<br>
 
register. This actually occurs every Coprocessor cycle except<br>
 
for the second (IR2) cycle of the MOVE instruction. The three<br>
 
types of instructions are shown below.<br>
 
MOVE Move immediate to dest.<br>
 
WAIT Wait until beam counter is equal to, or greater than.<br>
 
(keeps Coprocessor off of bus until beam position<br>
 
has been reached)<br>
 
SKIP Skip if beam counter is equal to, or greater than.<br>
 
(skips following MOVE isnt. unless beam position<br>
 
has been reached)<br>
 
 
MOVE WAIT UNTIL SKIP IF<br>
 
-------------- --------------- -------------<br>
 
                        BIT# IR1 IR2 IR1 IR2 IR1 IR2<br>
 
----- ---- ---- ---- ----- ---- ----<br>
 
15 X RD15 VP7 BFD * VP7 BFD *<br>
 
14 X RD14 VP6 VE6 VP6 VE6<br>
 
13 X RD13 VP5 VE5 VP5 VE5<br>
 
12 X RD12 VP4 VE4 VP4 VE4<br>
 
11 X RD11 VP3 VE3 VP3 VE3<br>
 
10 X RD10 VP2 VE2 VP2 VE2<br>
 
09 X RD09 VP1 VE1 VP1 VE1<br>
 
08 DA8 RD08 VP0 VE0 VP0 VE0<br>
 
07 DA7 RD07 HP8 HE8 HP8 HE8<br>
 
06 DA6 RD06 HP7 HE7 HP7 HE7<br>
 
05 DA5 RD05 HP6 HE6 HP6 HE6<br>
 
04 DA4 RD04 HP5 HE5 HP5 HE5<br>
 
03 DA3 RD03 HP4 HE4 HP4 HE4<br>
 
02 DA2 RD02 HP3 HE3 HP3 HE3<br>
 
01 DA1 RD01 HP2 HE2 HP2 HE2<br>
 
00 0 RD00 1 0 1 1<br>
 
  
IR1 = First instruction register.<br>
+
{| class="wikitable"
IR2 = Second instruction register.<br>
+
|-
DA = Destination Address for MOVE instruction. Fetched during
+
! SERPER !! *19 !! W !! P !! Serial Port Period and control
                          IR1 time, used during IR2 time on RGA bus.<br>
+
|}
RD = RAM Data moved by MOVE instruction at IR2 time.<br>
+
This register contains the control bit LONG referred to above, and a 15-bit number defining the serial port Baud Rate. If this number is N, then the Baud Rate is 1 bit every (N+1) * .2794 Microseconds.<br>
          directly from RAM to the address given by the DA field.<br>
 
VP = Vertical Beam Position comparison bit.<br>
 
HP = Horizontal Beam Position comparison bit.<br>
 
VE = Enable comparison (mask bit).<br>
 
HE = Enable comparison (mask bit).<br>
 
* NOTE    BFD  = Blitter Finished Disable. When this bit is true,
 
  the Blitter Finished flag will have no
 
effect on the Coprocessor. When this bit is zero,
 
the Blitter Finished flag must be true
 
(in addition to the rest of the bit comparisons)
 
before the Coprocessor can exit from its wait
 
state, or skip over an instruction. Note that the V7
 
comparison cannot be masked.<br>
 
The Coprocessor is basically a 2 cycle machine that requests
 
the bus only during odd memory cycles. (4 memory cycles per ins.)
 
This prevents collisions with Display, Audio, Disk, Refresh,
 
and Sprites, all of which use only even cycles. It therefore
 
needs (and has) priority over only the Blitter and Micro.
 
There are only three types of instructions, MOVE immediate,
 
WAIT until, and SKIP if. All instructions require 2 bus cycles
 
(and two instruction words). Since only the odd bus cycles are
 
requested, 4 memory cycle times are required per instruction.
 
(memory cycles are 280 ns)
 
There are two indirect jump registers COP1LC and COP2LC.
 
These are 18-bit pointer registers whose contents are
 
used to modify the program counter for initialization or jumps.
 
They are transferred to the program counter whenever strobe
 
addresses COPJMP1 or COPJMP2 are written. In addition, COP1LC
 
is automatically used at the beginning of each vertical
 
blank time.
 
It is important that one of the jump registers be initialized
 
and its jump strobe address hit, after power up but before
 
Coprocessor DMA is initialized. This insures a determined
 
startup address, and state.<br>
 
DIWSTRT 47 W A Display Window Start (upper left vert-hor pos)<br>
 
DIWSTOP 48 W A Display Window Stop (lower right vert-hor pos)<br>
 
These registers control the Display window size and position
 
by locating the upper left and lower right corners.<br>
 
  
BIT# 15, 14, 13, 12, 11, 10, 09, 08, 07, 06, 05, 04, 03, 02, 01, 00<br>
+
{| class="wikitable"
----- ------------------------------------------------------------------<br>
+
|-
USE V7 V6 V5 V4 V3 V2 V1 V0 H7 H6 H5 H4 H3 H2 H1 H0<br>
+
! BIT # !!  !!
 +
|-
 +
| 15 || LONG || Defines Serial Receive as 9-bit word.
 +
|-
 +
| 14-00 || RATE || Defines Baud Rate = 1/(N+1) * .2794 microsec.
 +
|}
  
DIWSTRT is vertically restricted to the upper 2/3<br>
 
of the display (V8 = 0), and horizontally  restricted to the
 
left 3/4 of the display (H8 = 0).<br>
 
DIWSTOP is vertically restricted to the lower 1/2<br>
 
of the display (V8 = / = V7), and horizontally restricted to the
 
right 1/4 of the display (H8 = 1).<br>
 
DDFSTRT 49 W A Display data fetch start (Horiz. Position)<br>
 
DDFSTOP 4A W A Display data fetch stop (Horiz. Position)<br>
 
  
These registers control the horizontal timing of the
+
{| class="wikitable"
beginning and end of the bit-plane DMA display data fetch.
+
|-
The vertical bit-plane DMA timing is identical to the display
+
! SPRxPTH !! +90 !! W !! A !! Sprite x pointer (High 3 bits)
windows described above.
+
|-
The bit-plane Modulos are dependent on the bit-plane
+
! SPRxPTL !! +91 !! W !! A !! Sprite x pointer (Low 15 bits)
horizontal size, and on the data fetch window size.<br>
+
|}
 +
This pair of registers contains the 18-bit address of Sprite x (x = 0, 1, 2, 3, 4, 5, 6, 7) DMA data. These address registers must be initialized by the processor or Coprocessor every vertical blank time.<br>
  
Register bit assignment<br>
 
-----------------------------<br>
 
BIT# 15, 14, 13, 12, 11, 10, 09, 08, 07, 06, 05, 04, 03, 02, 01, 00<br>
 
USE X    X    X    X    X    X    X    X    H8 H7  H6  H5 H4  X    X    X<br>
 
(X bits should always be driven with 0 to maintain
 
upward compatibility)<br>
 
The tables below show the start and stop timing for
 
different register contents.<br>
 
DDFSTRT (Left edge of display data fetch)<br>
 
------------------------------------------------------------------<br>
 
PURPOSE H8, H7, H6, H5, H4<br>
 
------------------------ ----------------------<br>
 
Extra wide (max) * 0    0    1    0    1<br>
 
wide 0    0    1    1    0<br>
 
normal 0    0    1    1    1<br>
 
narrow 0    1    0    0    0<br>
 
DDFSTOP (Right edge of display data fetch)<br>
 
---------------------------------------------------------<br>
 
PURPOSE H8, H7, H6, H5, H4<br>
 
----------------------- ----------------------<br>
 
narrow 1    1    0    0    1<br>
 
normal 1    1    0    1    0<br>
 
wide (max) 1    1    0    1    1<br>
 
DMACON 4B W A D P DMA control write (clear or set)<br>
 
DMACONR *01 R A    P DMA control (and Blitter status) read<br>
 
This register controls all of the DMA channels, and contains
 
Blitter DMA status bits.<br>
 
BIT# FUNCTION DESCRIPTION<br>
 
----- ------------- ----------------------------------------------<br>
 
15 SET/CLR Set/Clear control bit. Determines if bits
 
written with a 1 get set or cleared.<br>
 
Bits written with a 0 are unchanged.<br>
 
14 BBUSY Blitter busy status bit (read only).<br>
 
13 BZERO Blitter logic zero status bit (read only).<br>
 
12 X<br>
 
11 X<br>
 
10 BLTPRI Blitter DMA priority (over CPU Micro)<br>
 
(also called "Blitter Nasty")<br>
 
(disables /BLS pin, preventing Micro
 
from stealing any bus cycles while
 
Blitter DMA is running)<br>
 
09 DMAEN Enable all DMA below<br>
 
08 BPLEN Bit-plane DMA enable<br>
 
07 COPEN Coprocessor DMA enable<br>
 
06 BLTEN Blitter DMA enable<br>
 
05 SPREN Sprite DMA enable<br>
 
04 DSKEN Disk DMA enable<br>
 
03 AUD3EN Audio channel 3 DMA enable<br>
 
02 AUD2EN Audio channel 2 DMA enable<br>
 
01 AUD1EN Audio channel 1 DMA enable<br>
 
00 AUD0EN Audio channel 0 DMA enable<br>
 
DSKPTH + * 10 W A Disk pointer (High 3 bits)<br>
 
DSKPTL +  * 11 W A Disk pointer (Low 15 bits)<br>
 
This pair of registers contain the 18-bit address
 
of Disk DMA data. These address registers must
 
be initialized by the processor or Coprocessor
 
before disk DMA is enabled.<br>
 
DSKLEN * 12 W P Disk length<br>
 
This register contains the length (number of words) of
 
Disk DMA data. It also contains 2 control bits. These
 
are a DMA enable bit, and a DMA direction (read/write) bit.<br>
 
  
BIT#<br>
+
{| class="wikitable"
----- ---------- ----------------------------------------<br>
+
|-
15 DMAEN Disk DMA Enable<br>
+
! SPRxPOS !! %A0 !! W !! A D !! Sprite x Vert-Horiz start position data
14 WRITE Disk Write (RAM to Disk) if 1<br>
+
|-
13-0 LENGTH Length (# of words) of DMA data<br>
+
! SPRxCTL !! %A1 !! W !! A D !! Sprite x Vert stop position and control data
DSKDAT & *13 W P Disk DMA Data write<br>
+
|}
DSKDATR &*04 ER P Disk DMA Data read (early read dummy address)<br>
+
These 2 registers work together as position, size and feature Sprite control registers. They are usually loaded by the Sprite DMA channel during horizontal blank, however they may be loaded by either processor any time.<br>
This register is the Disk DMA data buffer. It contains 2
 
bytes of data that are either sent to (write) or received
 
from (read) the disk. The write mode is enable by bit
 
14 of the LENGTH register. The DMA controller automatically
 
transfers data to or from this register and RAM, and when
 
the DMA data is finished (Length = 0), it causes a Disk
 
Block Interrupt. See interrupts below.<br>
 
DSKBYTR *0D R P Disk Data byte and status read
 
This register is the Disk Microprocessor data buffer.
 
Data from the disk (in read mode) is loaded into this
 
register one byte at a time, and the Disk Byte Interrupt
 
request bit is set true. This interrupt bit is mirrored
 
in bit 15 of this address to allow simultaneous reading
 
and polling. The interrupt bit must be cleared however by
 
writing to the INTREQ register.<br>
 
  
BIT#<br>
+
SPRxPOS register<br>
-----<br>
 
15 DSKBYT Disk byte ready (reset on read)<br>
 
14 DMAON (disk)<br>
 
13 DISKWRITE<br>
 
12 WORDEQUAL (from disk sync circuit)<br>
 
11-08 X Not used<br>
 
07-00 DATA Disk byte data<br>
 
DSKSYNC 3F R P Disk sync register, holds the code for disk
 
read synchronization. See ADKCON bit 10.<br>
 
INTREQ 4E W P Interrupt Request bits (clear or set)<br>
 
INTREQR *0F R P Interrupt Request bits (read)<br>
 
This register contains interrupt request bits (or flags).
 
These bits may be polled by the processor, and if enabled
 
by the bits listed in the next register, they may cause
 
processor interrupts. Both a set and clear operation
 
are required to load arbitrary data into this register.
 
The bit assignments are identical to the Enable register below.<br>
 
INTENA 4D W P Interrupt Enable bits (clear or set bits)<br>
 
INTENAR *0E R P Interrupt Enable bits read<br>
 
This register contains interrupt enable bits. The bit
 
assignments for both the request and enable registers
 
are given below.<br>
 
  
BIT# FUNCT LEVEL DESCRIPTION<br>
+
{| class="wikitable"
----- -------- ------- -----------------------------------------------<br>
+
|-
15 SET/CLR Set/Clear control bit. Determines if bits<br>
+
! BIT # !! SYM !! FUNCTION
written with a 1 get set or cleared. Bits
+
|-
written with a 0 are always unchanged.<br>
+
| 15-08 || SV7-SV0 || Start vertical value. High bit (SV8) is in SPRxCTL reg below.
14 INTEN Master interrupt (enable only, no request)<br>
+
|-
13 EXTER 6 External interrupt<br>
+
| 07-00 || SH8-SH1 || Start horizontal value. Low bit (SH0) is in SPRxCTL reg below.
12 DSKBYT 5 Disk Byte ready (disk sync)<br>
+
|}
11 RBF 5 Serial port Receive Buffer Full<br>
 
10 AUD3 4 Audio channel 3 block finished<br>
 
09 AUD2 4 Audio channel 2 block finished<br>
 
08 AUD1 4 Audio channel 1 block finished<br>
 
07 AUD0 4 Audio channel 0 block finished<br>
 
06 BLIT 3 Blitter finished<br>
 
05 VERTB 3 Start of Vertical blank<br>
 
04 COPER 3 Coprocessor<br>
 
03 PORTS 2 I/O Ports and timers<br>
 
02 OVRUN 1 Serial port receiver overrun<br>
 
01 DSKBLK 1 Disk Block finished<br>
 
00 TBE 1 Serial port Transmit Buffer Empty<br>
 
JOY0DAT *05 R D Joystick-mouse 0 data (left vert, horiz)<br>
 
JOY1DAT *06 R D Joystick-mouse 1 data (right vert, horiz)<br>
 
These addresses each read a pair of 8-bit mouse counters.
 
0 = left controller pair, 1 = right controller pair.
 
(4 counters total). The bit usage for both left and right
 
addresses is shown below. Each counter is clocked by signals
 
from 2 controller pins. Bits 1 and 0 of each counter may be
 
read to determine the state of these 2 clock pins. This allows
 
these pins to double as joystick switch inputs.
 
  
Mouse counter usage (pins 1-3 = Yclock, pins 2-4 = Xclock)
 
  
BIT# 15, 14, 13, 12, 11, 10, 09, 08 07, 06, 05, 04, 03, 02, 01, 00<br>
+
SPRxCTL register    (writing this address disables sprite horizontal comparator circuit)<br>
----- -------------------------------- --------------------------------<br>
 
0DAT Y7  Y6  Y5  Y4  Y3  Y2  Y1  Y0 X7  X6  X5  X4  X3  X2  X1  X0<br>
 
1DAT Y7  Y6  Y5  Y4  Y3  Y2  Y1  Y0 X7  X6  X5  X4  X3  X2  X1  X0<br>
 
Joystick switch usage<br>
 
To detect these read these<br>
 
  
Directions Pin# counter bits<br>
+
{| class="wikitable"
------------- ------ -------------------<br>
+
|-
Forward 1 Y1 xor Y0 (BIT# 09 xor BIT# 08)<br>
+
! BIT # !! SYM !! FUNCTION
Left 3 Y1<br>
+
|-
Back 2 X1 xor X0 (BIT# 01 xor BIT#00)<br>
+
| 15-08 || EV7-EV0 || End (stop) vert value, low 8 bits
Right 4 X1<br>
+
|-
JOYTEST *1B W D Write to all 4 Joystick-mouse counters at once.
+
| 07 || ATT || Sprite attach control bit (odd sprites)
 +
|-
 +
| 06-04 || X || Not used
 +
|-
 +
| 02 || SVB || Start vert. value high bit
 +
|-
 +
| 01 || EVB || End (stop) vert. value high bit
 +
|-
 +
| 00 || SH0 || Start horiz. value low bit
 +
|}
  
Mouse counter write test data.<br>
 
BIT# 15, 14, 13, 12, 11, 10, 09, 08 07, 06, 05, 04, 03, 02, 01, 00<br>
 
----- -------------------------------- --------------------------------<br>
 
0DAT Y7  Y6  Y5  Y4  Y3  Y2  xx  xx X7  X6  X5  X4  X3  X2  X1  X0<br>
 
1DAT Y7  Y6  Y5  Y4  Y3  Y2  xx  xx X7  X6  X5  X4  X3  X2  X1  X0<br>
 
  
CONNECTORS<br>
+
{| class="wikitable"
------------------------------------ PORTIA<br>
+
|-
loc. dir. sym. pin pin<br>
+
! SPRxDATA !! %A2 !! W !! D !! Sprite x image data register A
----- ---- ------ ---- ---------<br>
+
|-
RIGHT Y RY 9 33<br>
+
! SPRxDATB !! %A3 !! W !! D !! Sprite x image data register B
RIGHT X RX 5 32<br>
+
|}
LEFT Y LY 9 36<br>
+
These registers buffer the Sprite image data. They are usually loaded by the Sprite DMA channel but may be loaded by either processor at any time. When a horizontal comparison occurs, the buffers are dumped into shift registers and serially output to the display, MSB first on the left.<br>
LEFT X LX 5 35<br>
 
POTGO *1A W P Pot Port (4-bit) Direction and Data,
 
and Pot Counter start.<br>
 
POTINP *0B R P Pot pin data read<br>
 
This register controls a 4-bit bi-directional I/O port
 
that shares the same 4 pins as the 4 pot counters above.<br>
 
  
BIT# FUNCT DESCRIPTION<br>
+
Note Writing to the A buffer enables (arms) the sprite. Writing to the SPRxCTL register disables the sprite. If enabled, data in the A and B buffers will be output whenever the beam counter equals the sprite horizontal position value in the SPRxPOS register.<br>
----- -------- ---------------------------------------------------<br>
 
15 OUTRY Output enable for Portia pin 33<br>
 
14 DATRY I/O data Portia pin 33<br>
 
13 OUTRX Output enable for Portia pin 32<br>
 
12 DATRX I/O data Portia pin 32<br>
 
11 OUTLY Output enable for Portia pin 36<br>
 
10 DATLY I/O data Portia pin 36<br>
 
09 OUTLX Output enable for Portia pin 35<br>
 
08 DATLX I/O data Portia pin 35<br>
 
07-01 X not used<br>
 
00 START Start pots (dump capacitors, start counters)<br>
 
REFPTR & * 14 W A Refresh pointer<br>
 
This register is used as a Dynamic RAM refresh address
 
generator. It is writable for test purposes only, and
 
should never be written by the microprocessor.<br>
 
SERDAT *18 W P Serial Port Data and stop bits write
 
This address writes data to a Transmit data buffer.
 
Data from this buffer is moved into a serial shift register
 
for output transmission whenever it is empty. This sets the
 
Interrupt Request TBE (transmit buffer empty). A stop bit
 
must be provided as part of the data word. The length
 
of the data word is set by the position of the stop bit.<br>
 
  
BIT# 15, 14, 13, 12, 11, 10, 09, 08 07, 06, 05, 04, 03, 02, 01, 00<br>
 
----- -------------------------------- --------------------------------<br>
 
USE 0  0  0  0  0  0  0  S  D8 D7  D6  D5  D4  D3  D2  D1  D0<br>
 
Note S = stop bit = 1, D= data bits<br>
 
SERDATR *0C R P Serial Port Data and Status read
 
This address reads data from a Receive data buffer.
 
Data in this buffer is loaded from a receiving shift register
 
whenever it is full. Several interrupt request bits are also
 
read at this address, along with the data, as shown below.<br>
 
  
BIT#<br>
+
{| class="wikitable"
-----<br>
+
|-
15 OVRUN Serial port receiver overrun<br>
+
! STREQU !! & *1C !! S !! D !! Strobe for horiz sync with VB and EQU
14 RBF Serial port Receive Buffer Full (mirror)<br>
+
|-
13 TBE Serial port Transmit Buffer Empty (mirror)<br>
+
! STRVBL !! & *1D !! S !! D !! Strobe for horiz sync with VB (Vert. Blank)
12 TSRE Serial port Transmit shift reg. empty<br>
+
|-
11 RXD RXD pin receives UART serial data for direct
+
! STRHOR !! & *1E !! S !! D P !! Strobe for horiz sync
bit test by the micro<br>
+
|-
10 x Not used<br>
+
! STRLONG !! & *1F !! S !! D !! Strobe for the identification of long horiz line
09 STP Stop bit<br>
+
|}
08 STP-DB8 Stop bit if LONG, Data bit if not<br>
+
One of the first 3 strobe addresses above is places on the  dest. addr. bus during the first refresh time slot. The 4th strobe shown above is used during the second refresh time slot of every other line, to identify lines with long counts (228). There are 4 refresh time slots, and any not used for strobes will leave a null (FF) address on the dest. addr. bus.<br>
07 DB7 Data bit<br>
 
06 DB6 Data bit<br>
 
05 DB5 Data bit<br>
 
04 DB4 Data bit<br>
 
03 DB3 Data bit<br>
 
02 DB2 Data bit<br>
 
01 DB1 Data bit<br>
 
00 DB0 Data bit<br>
 
SERPER *19 W P Serial Port Period and control<br>
 
This register contains the control bit LONG referred to
 
above, and a 15-bit number defining the serial port
 
Baud Rate. If this number is N, then the Baud Rate is
 
1 bit every (N+1) * .2794 Microseconds.<br>
 
  
BIT#<br>
 
-----<br>
 
15 LONG Defines Serial Receive as 9-bit word.<br>
 
14-00 RATE Defines Baud Rate = 1/(N+1) * .2794 microsec.<br>
 
SPRxPTH + 90 W A Sprite x pointer (High 3 bits)<br>
 
SPRxPTL + 91 W A Sprite x pointer (Low 15 bits)<br>
 
This pair of registers contains the 18-bit address
 
of Sprite x (x = 0, 1, 2, 3, 4, 5, 6, 7) DMA data. These address
 
registers must be initialized by the processor or Coprocessor
 
every vertical blank time.<br>
 
SPRxPOS % A0 W A D Sprite x Vert-Horiz start position data<br>
 
SPRxCTL  % A1 W A D Sprite x Vert stop position and control data<br>
 
These 2 registers work together as position, size and
 
feature Sprite control registers. They are usually loaded
 
by the Sprite DMA channel during horizontal blank,
 
however they may be loaded by either processor any time.<br>
 
  
SPRxPOS register<br>
+
{| class="wikitable"
 +
|-
 +
! VPOSR !! *02 !! R !! A !! Read Vert most sig. bit (and frame flop)
 +
|-
 +
! VPOSW !! *15 !! W !! A !! Write Vert most sig. bit (and frame flop)
 +
|}
  
BIT# SYM FUNCTION<br>
+
{| class="wikitable"
----- ----- --------------------------------------<br>
+
|-
15-08 SV7-SV0    Start vertical value. High bit (SV8) is
+
! BIT# !! 15 !! 14 !! 13 !! 12 !! 11 !! 10 !! 09 !! 08 !! 07 !! 06 !! 05 !! 04 !! 03 !! 02 !! 01 !! 00
    in SPRxCTL reg below.<br>
+
|-
07-00 SH8-SH1    Start horizontal value. Low bit (SH0) is
+
| USE || LOF || -- || -- || -- || -- || -- || -- || -- || -- || -- || -- || -- || -- || -- || -- || V8
    in SPRxCTL reg below.<br>
+
|}
 +
LOF = Long frame (auto toggle control bit in BPLCON0)<br>
  
SPRxCTL register    (writing this address disables sprite
 
        horizontal comparator circuit)<br>
 
  
BIT# SYM FUNCTION<br>
+
{| class="wikitable"
----- ----- ---------------------------------------<br>
+
|-
15-08 EV7-EV0    End (stop) vert value, low 8 bits<br>
+
! VHPOSR !! *03 !! R !! A !! Read Vert and Horiz position of beam
07 ATT     Sprite attach control bit (odd sprites)<br>
+
|-
06-04 X     Not used<br>
+
! VHPOSW !! *16 !! W !! A !! Write Vert Vert and Horiz position of beam
02 SVB     Start vert. value high bit<br>
+
|}
01 EVB     End (stop) vert. value high bit<br>
 
00 SH0     Start horiz. value low bit<br>
 
SPRxDATA % A2 W D Sprite x image data register A<br>
 
SPRxDATB % A3 W D Sprite x image data register B<br>
 
These registers buffer the Sprite image data. They are
 
usually loaded by the Sprite DMA channel but may be
 
loaded by either processor at any time. When a horizontal
 
comparison occurs, the buffers are dumped into shift registers
 
and serially output to the display, MSB first on the left.
 
Note Writing to the A buffer enables (arms) the sprite.
 
Writing to the SPRxCTL register disables the sprite.
 
If enabled, data in the A and B buffers will be output
 
whenever the beam counter equals the sprite horiztonal
 
position value in the SPRxPOS register.<br>
 
STREQU & *1C S D Strobe for horiz sync with VB and EQU<br>
 
STRVBL &  *1D S D Strobe for horiz sync with VB (Vert. Blank)<br>
 
STRHOR & *1E S D P Strobe for horiz sync<br>
 
STRLONG & *1F S D Strobe for the identification of long horiz line.<br>
 
One of the first 3 strobe addresses above is places on the
 
dest. addr. bus during the first refresh time slot.
 
The 4th strobe shown above is used during the second
 
refresh time slot of every other line, to identify
 
lines with long counts (228). There are 4 referesh time
 
slots, and any not used for strobes will leave a null
 
(FF) address on the dest. addr. bus.<br>
 
VPOSR *02 R A Read Vert most sig. bit (and frame flop)<br>
 
VPOSW *15 W A Write Vert most sig. bit (and frame flop)<br>
 
  
BIT# 15, 14, 13, 12, 11, 10, 09, 08, 07, 06, 05, 04, 03, 02, 01, 00<br>
 
----- ------------------------------------------------------------------<br>
 
USE LOF -- -- -- -- -- -- -- -- -- -- -- -- -- -- V8<br>
 
LOF = Long frame (auto toggle control bit in BPLCON0)<br>
 
VHPOSR *03 R A Read Vert and Horiz position of beam<br>
 
VHPOSW *16 W A Write Vert and Horiz position of beam<br>
 
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
Line 824: Line 1,045:
 
APPENDIX B - Commodore-Amiga PC Hardware Manual
 
APPENDIX B - Commodore-Amiga PC Hardware Manual
  
THIS IS THE SYSTEM FILE NAMED "REGNAME".
+
THIS IS THE SYSTEM FILE NAMED "REGNAME".<br>
It is generated and maintained by Commodore-Amiga Hardware Engineering.
+
It is generated and maintained by Commodore-Amiga Hardware Engineering.<br>
custom IC register allocation preliminary 8/04/83 rhn
+
 
revised 8/16/83 jgm
+
{| class="wikitable"
revised 8/18/83 jgm
+
|-
revised 8/23/83 jgm
+
! custom IC register allocation  
revised 9/01/83 jgm
+
|-
revised 9/16/83 jgm
+
| preliminary || 8/04/83 || [[Ron Nicholson|rhn]]
revised 9/19/83 jgm
+
|-
revised 9/26/83 jgm
+
| revised || 8/16/83 || [[Jay Miner|jgm]]
revised 10/27/83 jgm
+
|-
revised REGNAM.9 11/19/83 jgm
+
| revised || 8/18/83 || jgm
revised REGNAME 11/29/83 jgm
+
|-
______________________________________________________________________
+
| revised || 8/23/83 || jgm
& = Register used by DMA channel only.
+
|-
% = Register used by DMA channel usually, processors sometimes.
+
| revised || 9/01/83 || jgm
+ = Address register pair. Low word uses DB1-DB15, High word DB0-DB2
+
|-
* = Address not writable by the Coprocessor.
+
| revised || 9/16/83 || jgm
~ = Address not writable by the Coprocessor unless COPCON is set true.
+
|-
A = Agnus chip, D = Daphne chip, P = Portia chip
+
| revised || 9/19/83 || jgm
W = Write, R = Read
+
|-
ER = Early Read. This is a DMA data transfter to RAM, from either the Disk
+
| revised || 9/26/83 || jgm
        or from the Blitter. RAM timing requires data to be on the bus
+
|-
        earlier than microprocessor read cycles. These transfers are therefore
+
| revised || 10/27/83 || jgm
        initiated by Agnus timing, rather than a read address on the dest. adr. bus.
+
|-
S = Strobe (write address with no register bits
+
| revised REGNAM.9 || 11/19/83 || jgm
PTL, PTH = 18-bit Pointer that addresses DMA data. Must be reloaded by a processor
+
|-
        before use (Vertical blank for Bit-plane and Sprite pointers, and
+
| revised REGNAME || 11/29/83 || jgm
        prior to starting the Blitter for Blitter pointers).
+
|}
LCL, LCH - 18-bit Location (starting address) of DMA data. Used to automatically
+
 
        restart pointers, such as the Coprocessor program counter (during
+
 
        vertical blank), and the Audio sample counter (whenever the audio
+
& = Register used by DMA channel only.<br>
        length count is finished).
+
 
MOD = 15-bit Modulo. A number that is automatically added to the memory address
+
% = Register used by DMA channel usually, processors sometimes.<br>
        at the end of each line to generate the address for the beginning of
+
 
        the next line. This allows the Blitter (or the DIsplay Window) to
+
+ = Address register pair. Low word uses DB1-DB15, High word DB0-DB2<br>
        operate on (or display) a window of data that is smaller than the
+
 
        actual picture in memory. (memory map) uses 15 bits, plus sign extend.
+
* = Address not writable by the Coprocessor.<br>
_____________________________________________________________________
+
 
NAME ADD R/W CHIP FUNCTION
+
~ = Address not writable by the Coprocessor unless COPCON is set true.<br>
________ _____ _____ _____ ___________________________________
+
 
BLTDDAT & *00 E R A Blitter dest. early read (dummy address)
+
A = [[Agnus]] chip, D = [[Daphne]] chip, P = [[Portia]] chip<br>
DMACONR     *01 R A P DMA control (and Blitter status) read
+
 
VPOSR     *02 R A Read Vert most sig. bit (and frame flop)
+
W = Write, R = Read<br>
VHPOSR     *03 R A Read Vert and Horiz position of beam
+
 
DSKDATR & *04 ER P Disk data early read (dummy address)
+
ER = Early Read. This is a DMA data transfer to RAM, from either the Disk or from the Blitter. RAM timing requires data to be on the bus earlier than microprocessor read cycles. These transfers are therefore initiated by Agnus timing, rather than a read address on the dest. adr. bus.<br>
JOY0DAT     *05 R D Joystick-mouse 0 data (vert, horiz)
 
JOY1DAT     *06 R D Joystick-mouse 1 data (vert, horiz)
 
CLXDAT     *07 R D Collision data reg. (read and clear)
 
ADKCONR     *08 R P Audio, disk control register read
 
POT0DAT       *09 R P Pot counter pair 0 data (vert, horiz)
 
POT1DAT       *0A R P Pot counter pair 1 data (vert, horiz)
 
POTINP       *0B R P Pot pin data read
 
SERDATR       *0C R P Serial Port Data and status read
 
DSKBYTR       *0D R P Disk Data byte and status read
 
INTENAR         *0E R P Interrupt Enable bits read
 
INTREQR         *0F R P Interrupt request bits read
 
---------------------------------------------------------------------------------------------------
 
DSKPTH +      *10 W A Disk pointer (High 3 bits)
 
DSKPTL +      *11 W A Disk pointer (Low 15 bits)
 
DSKLEN         *12 W P Disk length
 
DSKDAT &      *13 W P Disk DMA Data write
 
REFPTR &      * 14 W A Refresh pointer
 
VPOSW                         *15 W A Write Vert most sig. bit (and frame flop)
 
VHPOSW         *16 W          A Write Vert and horiz position of beam
 
COPCON           * 17 W A Coprocessor control register (CDANG)
 
SERDAT           * 18 W P Serial Port Data and stop bits write
 
SERPER           * 19 W P Serial Port Period and control
 
POTGO           * 1A W P Pot count start, pot pin drive enable and data
 
JOYTEST           * 1B W D Write to all 4 Joystick-mouse counters at once
 
STREQU &      *1C S D Strobe for horiz sync with VB and EQU
 
STRVBL &      *1D S D Strobe for horiz sync with VB (Vert. Blank)
 
STRHOR &      *1E S D P Strobe for horiz sync
 
STRLONG &        *1F S D Strobe for identification of long horiz. line
 
-----------------------------------------------------------------------------------------------------
 
BLTCON0           ~20 W A Blitter control register 0
 
BLTCON1           ~21 W A Blitter control register 1
 
BLTAFWM           ~22 W A Blitter first word mask for source A
 
BLTALWM           ~23 W A Blitter last word mask for source A
 
BLTCPTH +        ~24 W A Blitter Pointer to source C (High 3 bits)
 
BLTCPTL +        ~25 W A Blitter Pointer to source C (Low 15 bits)
 
BLTBPTH +        ~26 W A Blitter Pointer to source B (High 3 bits)
 
BLTBPTL +        ~27 W A Blitter Pointer to source B (Low 15 bits)
 
BLTAPTH +        ~28 W A Blitter Pointer to source A (High 3 bits)
 
BLTAPTL +        ~29 W A Blitter Pointer to source A (Low 15 bits)
 
BLTDPTH +        ~2A W A Blitter Pointer to source D (High 3 bits)
 
BLTDPTL +        ~2B W A Blitter Pointer to source D (Low 15 bits)
 
BLTSIZE           ~2C W A Blitter Pointer to destn D (High 3 bits)
 
                          ~2D
 
          ~2E
 
          ~2F
 
----------------------------------------------------------------------------------------------------
 
BLTCMOD           ~30 W A Blitter Modulo for source C
 
BLTBMOD           ~31 W A Blitter Modulo for source B
 
BLTAMOD           ~32 W A Blitter Modulo for source A
 
BLTDMOD           ~33 W A Blitter Modulo for destn. D
 
          ~34
 
          ~35
 
                                          ~36
 
                                          ~37
 
BLTCDAT &      ~38 W A Blitter source C data reg
 
BLTBDAT &      ~39 W A Blitter source B data reg
 
BLTADAT &      ~3A W A Blitter source A data reg
 
          ~3B
 
          ~3C
 
          ~3D
 
          ~3E
 
DSKSYN           ~3F W P Disk sync pattern register for disk read
 
----------------------------------------------------------------------------------------------------
 
COP1LCH +        40 W A Coprocessor first location reg (High 3 bits)
 
COP1LCL +        41 W A Coprocessor first location reg (Low 15 bits)
 
COP2LCH +        42 W A Coprocessor second location reg (High 3 bits)
 
COP2LCL +        43 W A Coprocessor second location reg (Low 15 bits)
 
COPJMP1           44  S A Coprocessor restart at first location
 
COPJMP2           45  S A Coprocessor restart at second location
 
COPINS           46  W A Coprocessor inst. fetch identify
 
DIWSTRT           47  W A Display Window Start (upper left vert-hor pos)
 
DIWSTOP           48  W A Display Window Stop (lower right vert-hor pos)
 
DDFSTRT           49  W A Dispay bit-plane data fetch start (hor pos)
 
DDFSTOP           4A  W A Display bit-plane data fetch stop (hor pos)
 
DMACON           4B  W A D P DMA control write (clear or set)
 
CLXCON           4C  W D Collision control
 
INTENA           4D  W P Interrupt Enable bits (clear or set bits)
 
INTREQ           4E  W P Interrupt Request bits (clear or set bits)
 
ADKCON           4F   W P Audio, Disk control
 
--------------------------------------------------------------------------------------------------------
 
AUD0LCH +        50   W A Audio channel 0 location (High 3 bits)
 
AUD0LCL +        51  W A Audio channel 0 location (Low 15 bits)
 
AUD0LEN         52  W P Audio channel 0 length
 
AUD0PER         53  W P Audio channel 0 period
 
AUD0VOL         54   W P Audio channel 0 volume
 
AUD0DAT &      55 W P Audio channel 0 data
 
                                        56
 
                                        57
 
AUD1LCH +      58  W A Audio channel 1 location (High 3 bits)
 
AUD1LCL +      59  W A Audio channel 1 location (Low 15 bits)
 
AUD1LEN       5A  W P Audio channel 1 length
 
AUD1PER       5B  W P Audio channel 1 period
 
AUD1VOL       5C W P Audio channel 1 volume
 
AUD1DAT &    5D W P Audio channel 1 data
 
                      5E
 
      5F
 
-----------------------------------------------------------------------------------------------------------
 
AUD2LCH +    60 W A Audio channel 2 location (High 3 bits)
 
AUD2LCL +    61 W A Audio channel 2 location (Low 15 bits)
 
AUD2LEN       62 W P Audio channel 2 length
 
AUD2PER       63 W P Audio channel 2 period
 
AUD2VOL       64 W P Audio channel 2 volume
 
AUD2DAT &  65 W P Audio channel 2 data
 
                      66
 
      67
 
----------------------------------------------------------------------------------------------------------
 
AUD3LCH +  68 W A Audio channel 3 location (High 3 bits)
 
AUD3LCL +  69 W A Audio channel 3 location (Low 15 bits)
 
AUD3LEN     6A  W P Audio channel 3 length
 
AUD3PER     6B  W P Audio channel 3 period
 
AUD3VOL     6C  W P Audio channel 3 volume
 
AUD3DAT &  6D  W P Audio channel 3 data
 
                    6E
 
    6F
 
-------------------------------------------------------------------------------------------------------------
 
BPL1PTH +  70  W A Bit-plane 1 pointer (High 3 bits)
 
BPL1PTL +  71  W A Bit-plane 1 pointer (Low 15 bits)
 
BPL2PTH +  72  W A Bit-plane 2 pointer (High 3 bits)
 
BPL2PTL +  73  W A Bit-plane 2 pointer (Low 15 bits)
 
BPL3PTH +  74  W A Bit-plane 3 pointer (High 3 bits)
 
BPL3PTL +  75  W A Bit-plane 3 pointer (Low 15 bits)
 
BPL4PTH +  76  W A Bit-plane 4 pointer (High 15 bits)
 
BPL4PTL +  77  W A Bit-plane 4 pointer (Low 15 bits)
 
BPL5PTH +  78  W A Bit-plane 5 pointer (High 3 bits)
 
BPL5PTL +  79  W A Bit-plane 5 pointer (Low 15 bits)
 
BPL6PTH +  7A  W A Bit-plane 6 pointer (High 3 bits)
 
BPL6PTL +  7B  W A Bit-plane 6 pointer (Low 15 bits)
 
    7C
 
    7D
 
    7E
 
    7F
 
-------------------------------------------------------------------------------------------------------------
 
BPLCON0     80  W A D Bit-plane control register (misc. control bits)
 
BPLCON1     81  W D Bit-plane control register (scroll value PF1, PF2)
 
BPLCON2     82  W D Bit-plane control register (priority control)
 
                    83
 
BPL1MOD     84 W A Bit-plane Modulo (odd planes)
 
BPL2MOD     85 W A Bit-plane Modulo (even planes)
 
    86
 
                    87
 
BPL1DAT & 88 W D Bit-plane 1 data (parallel to serial convert)
 
BPL2DAT & 89 W D Bit-plane 2 data (parallel to serial convert)
 
BPL3DAT & 8A W D Bit-plane 3 data (parallel to serial convert)
 
BPL4DAT & 8B W D Bit-plane 4 data (parallel to serial convert)
 
BPL5DAT & 8C W D Bit-plane 5 data (parallel to serial convert)
 
BPL6DAT & 8D W D Bit-plane 6 data (parallel to serial convert)
 
                                    8E
 
                                    8F
 
----------------------------------------------------------------------------------------------------------
 
SPR0PTH + 90 W A Sprite 0 pointer (High 3 bits)
 
SPR0PTL + 91 W A Sprite 0 pointer (Low 15 bits)
 
SPR1PTH + 92 W A Sprite 1 pointer (High 3 bits)
 
SPR1PTL + 93 W A Sprite 1 pointer (Low 15 bits)
 
SPR2PTH + 94 W A Sprite 2 pointer (High 3 bits)
 
SPR2PTL + 95 W A Sprite 2 pointer (Low 15 bits)
 
SPR3PTH + 96 W A Sprite 3 pointer (High 3 bits)
 
SPR3PTL + 97 W A Sprite 3 pointer (Low 15 bits)
 
SPR4PTH + 98 W A Sprite 4 pointer (High 3 bits)
 
SPR4PTL + 99 W A Sprite 4 pointer (Low 15 bits)
 
SPR5PTH + 9A W A Sprite 5 pointer (High 3 bits)
 
SPR5PTL + 9B W A Sprite 5 pointer (Low 15 bits)
 
SPR6PTH + 9C W A Sprite 6 pointer (High 3 bits)
 
SPR6PTL + 9D W A Sprite 6 pointer (Low 15 bits)
 
SPR7PTH + 9E W A Sprite 7 pointer (High 3 bits)
 
SPR7PTL + 9F W A Sprite 7 pointer (Low 15 bits)
 
---------------------------------------------------------------------------------------------------------------
 
SPR0POS % A0 W A D Sprite 0 Vert-Horiz start position data
 
SPR0CTL % A1 W A D Sprite 0 Vert stop position and control data
 
SPR0DATA % A2 W D Sprite 0 image data register A
 
SPR0DATB % A3 W D Sprite 0 image data register B
 
SPR1POS % A4 W A D Sprite 1 Vert-Horiz start position data
 
SPR1CTL % A5 W A D Sprite 1 Vert stop position and control data
 
SPR1DATA % A6 W D Sprite 1 image data register A
 
SPR1DATB % A7 W D Sprite 1 image data register B
 
SPR2POS % A8 W A D Sprite 2 Vert-Horiz start position data
 
SPR2CTL % A9 W A D Sprite 2 Vert stop position and control data
 
SPR2DATA % AA W D Sprite 2 image data register A
 
SPR2DATB % AB W D Sprite 2 image data register B
 
SPR3POS % AC W A D Sprite 3 Vert-Horiz start position data
 
SPR3CTL % AD W A D Sprite 3 Vert stop position and control data
 
SPR3DATA % AE W D Sprite 3 image data register A
 
SPR3DATB % AF W D Sprite 3 image data register B
 
--------------------------------------------------------------------------------------------------------
 
SPR4POS % B0 W A D Sprite 4 Vert-Horiz start position data
 
SPR4CTL % B1 W A D Sprite 4 Vert stop position and control data
 
SPR4DATA % B2 W D Sprite 4 image data register A
 
SPR4DATB % B3 W D Sprite 4 image data register B
 
SPR5POS % B4 W A D Sprite 5 Vert-Horiz start position data
 
SPR5CTL % B5 W A D Sprite 5 Vert stop position and control data
 
SPR5DATA % B6 W D Sprite 5 image data register A
 
SPR5DATB % B7 W D Sprite 5 image data register B
 
SPR6POS % B8 W A D Sprite 6 Vert-Horiz start position data
 
SPR6CTL % B9 W A D Sprite 6 Vert stop position and control data
 
SPR6DATA % BA W D Sprite 6 image data register A
 
SPR6DATB % BB W D Sprite 6 image data register B
 
SPR7POS % BC W A D Sprite 7 Vert-Horiz start position data
 
SPR7CTL % BD W A D Sprite 7 Vert stop position and control data
 
SPR7DATA % BE W D Sprite 7 image data register A
 
SPR7DATB % BF W D Sprite 7 image data register B
 
------------------------------------------------------------------------------------------------------
 
COLOR00     C0  W D Color table 00
 
COLOR01     C1  W D Color table 01
 
COLOR02     C2  W D Color table 02
 
COLOR03     C3  W D Color table 03
 
COLOR04     C4  W D Color table 04
 
COLOR05     C5  W D Color table 05
 
COLOR06     C6  W D Color table 06
 
COLOR07     C7  W D Color table 07
 
COLOR08     C8  W D Color table 08
 
--------------------------------------------------------------------------------------------------------
 
COLOR09     C9  W D Color table 09
 
COLOR10     CA  W D Color table 10
 
COLOR11     CB  W D Color table 11
 
COLOR12     CC  W D Color table 12
 
COLOR13     CD  W D Color table 13
 
COLOR14     CE  W D Color table 14
 
COLOR15     CF  W D Color table 15
 
---------------------------------------------------------------------------------------------------------
 
COLOR16     D0  W D Color table 16
 
COLOR17     D1  W D Color table 17
 
COLOR18     D2  W D Color table 18
 
COLOR19     D3  W D Color table 19
 
COLOR20     D4  W D Color table 20
 
COLOR21                D5  W D Color table 21
 
COLOR22     D6  W D Color table 22
 
COLOR23     D7  W D Color table 23
 
COLOR24     D8  W D Color table 24
 
COLOR25     D9  W D Color table 25
 
COLOR26     DA  W D Color table 26
 
COLOR27                DB  W D Color table 27
 
COLOR28     DC  W D Color table 28
 
COLOR29     DD  W D Color table 29
 
COLOR30     DE  W D Color table 30
 
COLOR31     DF  W D Color table 31
 
-----------------------------------------------------------------------------------------------------------
 
RESERVED     EX
 
-----------------------------------------------------------------------------------------------------------
 
RESERVED     FX
 
NO-OP (NULL)     FF
 
-----------------------------------------------------------------------------------------------------------
 
  
== Appendix C (Missing) ==
+
S = Strobe (write address with no register bits<br>
 +
 
 +
PTL, PTH = 18-bit Pointer that addresses DMA data. Must be reloaded by a processor before use (Vertical blank for Bit-plane and Sprite pointers, and prior to starting the Blitter for Blitter pointers).<br>
 +
 
 +
LCL, LCH - 18-bit Location (starting address) of DMA data. Used to automatically restart pointers, such as the Coprocessor program counter (during vertical blank), and the Audio sample counter (whenever the audio length count is finished).<br>
 +
 
 +
MOD = 15-bit Modulo. A number that is automatically added to the memory address at the end of each line to generate the address for the beginning of
 +
the next line. This allows the Blitter (or the Display Window) to operate on (or display) a window of data that is smaller than the actual picture in memory, (memory map) uses 15 bits, plus sign extend.<br>
 +
 
 +
 
 +
{| class="wikitable"
 +
|-
 +
! NAME !! ADD !! R/W !! CHIP !! FUNCTION
 +
|-
 +
| BLTDDAT || & *00 || ER || A || Blitter dest. early read (dummy address)
 +
|-
 +
| DMACONR || *01 || R || A P || DMA control (and Blitter status) read
 +
|-
 +
| VPOSR || *02 || R || A || Read Vert most sig. bit (and frame flop)
 +
|-
 +
| VHPOSR || *03 || R || A || Read Vert and Horiz position of beam
 +
|-
 +
| DSKDATR || & *04 || ER || P || Disk data early read (dummy address)
 +
|-
 +
| JOY0DAT || *05 || R || D || Joystick-mouse 0 data (vert, horiz)
 +
|-
 +
| JOY1DAT || *06 || R || D || Joystick-mouse 1 data (vert, horiz)
 +
|-
 +
| CLXDAT || *07 || R || D || Collision data reg. (read and clear)
 +
|-
 +
| ADKCONR || *08 || R || P || Audio, disk control register read
 +
|-
 +
| POT0DAT || *09 || R || P || Pot counter pair 0 data (vert, horiz)
 +
|-
 +
| POT1DAT || *0A || R || P || Pot counter pair 1 data (vert, horiz)
 +
|-
 +
| POTINP || *0B || R || P || Pot pin data read
 +
|-
 +
| SERDATR || *0C || R || P || Serial Port Data and status read
 +
|-
 +
| DSKBYTR || *0D || R || P || Disk Data byte and status read
 +
|-
 +
| INTENAR || *0E || R || P || Interrupt Enable bits read
 +
|-
 +
| INTREQR || *0F || R || P || Interrupt request bits read
 +
|-
 +
| DSKPTH || + *10 || W || A || Disk pointer (High 3 bits)
 +
|-
 +
| DSKPTL || + *11 || W || A || Disk pointer (Low 15 bits)
 +
|-
 +
| DSKLEN || *12 || W || P || Disk length
 +
|-
 +
| DSKDAT || & *13 || W || P || Disk DMA Data write
 +
|-
 +
| REFPTR || & *14 || W || A || Refresh pointer
 +
|-
 +
| VPOSW || *15 || W || A || Write Vert most sig. bit (and frame flop)
 +
|-
 +
| VHPOSW || *16 || W || A || Write Vert and horiz position of beam
 +
|-
 +
| COPCON || *17 || W || A || Coprocessor control register (CDANG)
 +
|-
 +
| SERDAT || *18 || W || P || Serial Port Data and stop bits write
 +
|-
 +
| SERPER || *19 || W || P || Serial Port Period and control
 +
|-
 +
| POTGO || *1A || W || P || Pot count start, pot pin drive enable and data
 +
|-
 +
| JOYTEST || *1B || W || D || Write to all 4 Joystick-mouse counters at once
 +
|-
 +
| STREQU || & *1C || W || D || Strobe for horiz sync with VB and EQU
 +
|-
 +
| STRVBL || & *1D || W || D || Strobe for horiz sync with VB (Vert. Blank)
 +
|-
 +
| STRHOR || & *1E || W || D P || Strobe for horiz sync
 +
|-
 +
| STRLONG || & *1F || W || D || Strobe for identification of long horiz. line
 +
|-
 +
| BLTCON0 || ~20 || W || A || Blitter control register 0
 +
|-
 +
| BLTCON1 || ~21 || W || A || Blitter control register 1
 +
|-
 +
| BLTAFWM || ~22 || W || A || Blitter first word mask for source A
 +
|-
 +
| BLTALWM || ~23 || W || A || Blitter last word mask for source A
 +
|-
 +
| BLTCPTH || + ~24 || W || A || Blitter Pointer to source C (High 3 bits)
 +
|-
 +
| BLTCPTL || + ~25 || W || A || Blitter Pointer to source C (Low 15 bits)
 +
|-
 +
| BLTBPTH || + ~26 || W || A || Blitter Pointer to source B (High 3 bits)
 +
|-
 +
| BLTBPTL || + ~27 || W || A || Blitter Pointer to source B (Low 15 bits)
 +
|-
 +
| BLTAPTH || + ~28 || W || A || Blitter Pointer to source A (High 3 bits)
 +
|-
 +
| BLTAPTL || + ~29 || W || A || Blitter Pointer to source A (Low 15 bits)
 +
|-
 +
| BLTDPTH || + ~2A || W || A || Blitter Pointer to source D (High 3 bits)
 +
|-
 +
| BLTDPTL || + ~2B || W || A || Blitter Pointer to source D (Low 15 bits)
 +
|-
 +
| BLTSIZE || + ~2C || W || A || Blitter Pointer to destn. D (High 3 bits)
 +
|-
 +
|  || ~2D ||  ||  ||
 +
|-
 +
|  || ~2E ||  ||  ||
 +
|-
 +
|  || ~2F ||  ||  ||
 +
|-
 +
| BLTCMOD || ~30 || W || A ||
 +
|-
 +
| BLTBMOD || ~31 || W || A ||
 +
|-
 +
| BLTAMOD || ~32 || W || A ||
 +
|-
 +
| BLTDMOD || ~33 || W || A ||
 +
|-
 +
|  || ~34 ||  ||  ||
 +
|-
 +
|  || ~35 ||  ||  ||
 +
|-
 +
|  || ~36 ||  ||  ||
 +
|-
 +
|  || ~37 ||  ||  ||
 +
|-
 +
| BLTCDAT || ~38 || W || A ||
 +
|-
 +
| BLTBDAT || ~39 || W || A ||
 +
|-
 +
| BLTADAT || ~3A || W || A ||
 +
|-
 +
|  || ~3B ||  ||  ||
 +
|-
 +
|  || ~3C ||  ||  ||
 +
|-
 +
|  || ~3D ||  ||  ||
 +
|-
 +
|  || ~3E ||  ||  ||
 +
|-
 +
| DSKSYN || ~3F || W || P || Disk sync pattern register for disk read
 +
|-
 +
| COP1LCH || +40 || W || A || Coprocessor first location reg (High 3 bits)
 +
|-
 +
| COP1LCL || +41 || W || A || Coprocessor first location reg (Low 15 bits)
 +
|-
 +
| COP2LCH || +42 || W || A || Coprocessor second location reg (High 3 bits)
 +
|-
 +
| COP2LCL || +43 || W || A || Coprocessor second location reg (Low 15 bits)
 +
|-
 +
| COPJMP1 || 44 || S || A || Coprocessor restart at first location
 +
|-
 +
| COPJMP2 || 45 || S || A || Coprocessor restart at second location
 +
|-
 +
| COPINS || 46 || W || A || Coprocessor inst. fetch identify
 +
|-
 +
| DIWSTRT || 47 || W || A || Display Window Start (upper left vert-hor pos)
 +
|-
 +
| DIWSTOP || 48 || W || A || Display Window Stop (lower right vert-hor pos)
 +
|-
 +
| DDFSTRT || 49 || W || A || Display bit-plane data fetch start (hor pos)
 +
|-
 +
| DDFSTOP || 4A || W || A || Display bit-plane data fetch stop (hor pos)
 +
|-
 +
| DMACON || 4B || W || A D P || DMA control write (clear or set)
 +
|-
 +
| CLXCON || 4C || W || D || Collision control
 +
|-
 +
| INTENA || 4D || W || P || Interrupt Enable bits (clear or set bits)
 +
|-
 +
| INTREQ || 4E || W || P || Interrupt Request bits (clear or set bits)
 +
|-
 +
| ADKCON || 4F || W || P || Audio, Disk control
 +
|-
 +
| AUD0LCH || +50 || W || A || Audio channel 0 location (High 3 bits)
 +
|-
 +
| AUD0LCL || +51 || W || A || Audio channel 0 location (Low 15 bits)
 +
|-
 +
| AUD0LEN || 52 || W || P || Audio channel 0 length
 +
|-
 +
| AUD0PER || 53 || W || P || Audio channel 0 period
 +
|-
 +
| AUD0VOL || 54 || W || P || Audio channel 0 volume
 +
|-
 +
| AUD0DAT || &55 || W || P || Audio channel 0 data
 +
|-
 +
| || 56 ||  ||  ||
 +
|-
 +
| || 57 ||  ||  ||
 +
|-
 +
| AUD1LCH || +58 || W || A || Audio channel 1 location (High 3 bits)
 +
|-
 +
| AUD1LCL || +59 || W || A || Audio channel 1 location (Low 15 bits)
 +
|-
 +
| AUD1LEN || 5A || W || P || Audio channel 1 length
 +
|-
 +
| AUD1PER || 5B || W || P || Audio channel 1 period
 +
|-
 +
| AUD1VOL || 5C || W || P || Audio channel 1 volume
 +
|-
 +
| AUD1DAT || &5D || W || P || Audio channel 1 data
 +
|-
 +
| || 5E ||  ||  ||
 +
|-
 +
| || 5F ||  ||  ||
 +
|-
 +
| AUD2LCH || +60 || W || A || Audio channel 2 location (High 3 bits)
 +
|-
 +
| AUD2LCL ||+61 || W || A || Audio channel 2 location (Low 15 bits)
 +
|-
 +
| AUD2LEN || 62 || W || P || Audio channel 2 length
 +
|-
 +
| AUD2PER || 63 || W || P || Audio channel 2 period
 +
|-
 +
| AUD2VOL || 64 || W || P || Audio channel 2 volume
 +
|-
 +
| AUD2DAT || &65 || W || P || Audio channel 2 data
 +
|-
 +
| || 66 || || ||
 +
|-
 +
| || 67 || || ||
 +
|-
 +
| AUD3LCH || +68 || W || A || Audio channel 3 location (High 3 bits)
 +
|-
 +
| AUD3LCL || +69 || W || A || Audio channel 3 location (High 3 bits)
 +
|-
 +
| AUD3LEN || 6A || W || P || Audio channel 3 length
 +
|-
 +
| AUD3PER || 6B || W || P || Audio channel 3 period
 +
|-
 +
| AUD3VOL || 6C || W || P || Audio channel 3 volume
 +
|-
 +
| AUD3DAT || &6D || W || P || Audio channel 3 data
 +
|-
 +
| || 6E ||  ||  ||
 +
|-
 +
| || 6F ||  ||  ||
 +
|-
 +
| BPL1PTH || +70 || W || A || Bit-plane 1 pointer (High 3 bits)
 +
|-
 +
| BPL1PTL || +71 || W || A || Bit-plane 1 pointer (Low 15 bits)
 +
|-
 +
| BPL2PTH || +72 || W || A || Bit-plane 2 pointer (High 3 bits)
 +
|-
 +
| BPL2PTL || +73 || W || A || Bit-plane 2 pointer (Low 15 bits)
 +
|-
 +
| BPL3PTH || +74 || W || Example || Bit-plane 3 pointer (High 3 bits)
 +
|-
 +
| BPL3PTL || +75 || W || Example || Bit-plane 3 pointer (Low 15 bits)
 +
|-
 +
| BPL4PTH || +76 || W || Example || Bit-plane 4 pointer (High 3 bits)
 +
|-
 +
| BPL4PTL || +77 || W || Example || Bit-plane 4 pointer (Low 15 bits)
 +
|-
 +
| BPL5PTH || +78 || W || Example || Bit-plane 5 pointer (High 3 bits)
 +
|-
 +
| BPL5PTL || +79 || W || Example || Bit-plane 5 pointer (Low 15 bits)
 +
|-
 +
| BPL6PTH || +7A || W || Example || Bit-plane 6 pointer (High 3 bits)
 +
|-
 +
| BPL6PTL || +7B || W || Example || Bit-plane 6 pointer (Low 15 bits)
 +
|-
 +
|  || 7C ||  ||  ||
 +
|-
 +
|  || 7D ||  ||  ||
 +
|-
 +
|  || 7E ||  ||  ||
 +
|-
 +
|  || 7F ||  ||  ||
 +
|-
 +
| BPLCON0 || 80 || W || A D || Bit-plane control register (misc. control bits)
 +
|-
 +
| BPLCON1 || 81 || W || D || Bit-plane control register (scroll value PF1, PF2)
 +
|-
 +
| BPLCON2 || 82 || W || D || Bit-plane control register (priority control)
 +
|-
 +
|  || 83 ||  ||  ||
 +
|-
 +
| BPL1MOD || 84 || W || A || Bit-plane Modulo (odd planes)
 +
|-
 +
| BPL2MOD || 85 || W || A || Bit-plane Modulo (even planes)
 +
|-
 +
|  || 86 ||  ||  ||
 +
|-
 +
|  || 87 ||  ||  ||
 +
|-
 +
| BPL1DAT || &88 || W || D || Bit-plane 1 data (parallel to serial convert)
 +
|-
 +
| BPL2DAT || &89 || W || D || Bit-plane 2 data (parallel to serial convert)
 +
|-
 +
| BPL3DAT || &8A || W || D || Bit-plane 3 data (parallel to serial convert)
 +
|-
 +
| BPL4DAT || &8B || W || D || Bit-plane 4 data (parallel to serial convert)
 +
|-
 +
| BPL5DAT || &8C || W || D || Bit-plane 5 data (parallel to serial convert)
 +
|-
 +
| BPL6DAT || &8D || W || D || Bit-plane 6 data (parallel to serial convert)
 +
|-
 +
|  || 8E ||  ||  ||
 +
|-
 +
|  || 8F ||  ||  ||
 +
|-
 +
| SPR0PTH || +90 || W || A || Sprite 0 pointer (High 3 bits)
 +
|-
 +
| SPR0PTL || +91 || W || A || Sprite 0 pointer (Low 15 bits)
 +
|-
 +
| SPR1PTH || +92 || W || A || Sprite 1 pointer (High 3 bits)
 +
|-
 +
| SPR1PTL || +93 || W || A || Sprite 1 pointer (Low 15 bits)
 +
|-
 +
| SPR2PTH || +94 || W || A || Sprite 2 pointer (High 3 bits)
 +
|-
 +
| SPR2PTL || +95 || W || A || Sprite 2 pointer (Low 15 bits)
 +
|-
 +
| SPR3PTH || +96 || W || A || Sprite 3 pointer (High 3 bits)
 +
|-
 +
| SPR3PTL || +97 || W || A || Sprite 3 pointer (Low 15 bits)
 +
|-
 +
| SPR4PTH || +98 || W || A || Sprite 4 pointer (High 3 bits)
 +
|-
 +
| SPR4PTL || +99 || W || A || Sprite 4 pointer (Low 15 bits)
 +
|-
 +
| SPR5PTH || +9A || W || A || Sprite 5 pointer (High 3 bits)
 +
|-
 +
| SPR5PTL || +9B || W || A || Sprite 5 pointer (Low 15 bits)
 +
|-
 +
| SPR6PTH || +9C || W || A || Sprite 6 pointer (High 3 bits)
 +
|-
 +
| SPR6PTL || +9D || W || A || Sprite 6 pointer (Low 15 bits)
 +
|-
 +
| SPR7PTH || +9E || W || A || Sprite 7 pointer (High 3 bits)
 +
|-
 +
| SPR7PTL || +9F || W || A || Sprite 7 pointer (Low 15 bits)
 +
|-
 +
| SPR0POS || %A0 || W || A D || Sprite 0 Vert-Horiz start position data
 +
|-
 +
| SPR0CTL || %A1 || W || A D || Sprite 0 Vert stop position and control data
 +
|-
 +
| SPR0DATA || %A2 || W || D || Sprite 0 image data register A
 +
|-
 +
| SPR0DATB || %A3 || W || D || Sprite 0 image data register B
 +
|-
 +
| SPR1POS || %A4 || W || A D || Sprite 1 Vert-Horiz start position data
 +
|-
 +
| SPR1CTL || %A5 || W || A D || Sprite 1 Vert stop position and control data
 +
|-
 +
| SPR1DATA || %A6 || W || D || Sprite 1 image data register A
 +
|-
 +
| SPR1DATB || %A7 || W || D || Sprite 1 image data register B
 +
|-
 +
| SPR2POS || %A8 || W || A D || Sprite 2 Vert-Horiz start position data
 +
|-
 +
| SPR2CTL || %A9 || W || A D || Sprite 2 Vert stop position and control data
 +
|-
 +
| SPR2DATA || %AA || W || D || Sprite 2 image data register A
 +
|-
 +
| SPR2DATB || %AB || W || D || Sprite 2 image data register B
 +
|-
 +
| SPR3POS || %AC || W || A D || Sprite 3 Vert-Horiz start position data
 +
|-
 +
| SPR3CTL || %AD || W || A D || Sprite 3 Vert stop position and control data
 +
|-
 +
| SPR3DATA || %AE || W || D || Sprite 3 image data register A
 +
|-
 +
| SPR3DATB || %AF || W || D || Sprite 3 image data register B
 +
|-
 +
| SPR4POS || %B0 || W || A D || Sprite 4 Vert-Horiz start position data
 +
|-
 +
| SPR4CTL || %B1 || W || A D || Sprite 4 Vert stop position and control data
 +
|-
 +
| SPR4DATA || %B2 || W || D || Sprite 4 image data register A
 +
|-
 +
| SPR4DATB || %B3 || W || D || Sprite 4 image data register B
 +
|-
 +
| SPR5POS || %B4 || W || A D || Sprite 5 Vert-Horiz start position data
 +
|-
 +
| SPR5CTL || %B5 || W || A D || Sprite 5 Vert stop position and control data
 +
|-
 +
| SPR5DATA || %B6 || W || D || Sprite 5 image data register A
 +
|-
 +
| SPR5DATB || %B7 || W || D || Sprite 5 image data register B
 +
|-
 +
| SPR6POS || %B8 || W || A D || Sprite 6 Vert-Horiz start position data
 +
|-
 +
| SPR6CTL || %B9 || W || A D || Sprite 6 Vert stop position and control data
 +
|-
 +
| SPR6DATA || %BA || W || D || Sprite 6 image data register A
 +
|-
 +
| SPR6DATB || %BB || W || D || Sprite 6 image data register B
 +
|-
 +
| SPR7POS || %BC || W || A D || Sprite 7 Vert-Horiz start position data
 +
|-
 +
| SPR7CTL || %BD || W || A D || Sprite 7 Vert stop position and control data
 +
|-
 +
| SPR7DATA || %BE || W || D || Sprite 7 image data register A
 +
|-
 +
| SPR7DATB || %BF || W || D || Sprite 7 image data register B
 +
|-
 +
| COLOR00 || C0 || W || D || Color table 00
 +
|-
 +
| COLOR01 || C1 || W || D || Color table 01
 +
|-
 +
| COLOR02 || C2 || W || D || Color table 02
 +
|-
 +
| COLOR03 || C3 || W || D || Color table 03
 +
|-
 +
| COLOR04 || C4 || W || D || Color table 04
 +
|-
 +
| COLOR05 || C5 || W || D || Color table 05
 +
|-
 +
| COLOR06 || C6 || W || D || Color table 06
 +
|-
 +
| COLOR07 || C7 || W || D || Color table 07
 +
|-
 +
| COLOR08 || C8 || W || D || Color table 08
 +
|-
 +
| COLOR09 || C9 || W || D || Color table 09
 +
|-
 +
| COLOR10 || CA || W || D || Color table 10
 +
|-
 +
| COLOR11 || CB || W || D || Color table 11
 +
|-
 +
| COLOR12 || CC || W || D || Color table 12
 +
|-
 +
| COLOR13 || CD || W || D || Color table 13
 +
|-
 +
| COLOR14 || CE || W || D || Color table 14
 +
|-
 +
| COLOR15 || CF || W || D || Color table 15
 +
|-
 +
| COLOR16 || D0 || W || D || Color table 16
 +
|-
 +
| COLOR17 || D1 || W || D || Color table 17
 +
|-
 +
| COLOR18 || D2 || W || D || Color table 18
 +
|-
 +
| COLOR19 || D3 || W || D || Color table 19
 +
|-
 +
| COLOR20 || D4 || W || D || Color table 20
 +
|-
 +
| COLOR21 || D5 || W || D || Color table 21
 +
|-
 +
| COLOR22 || D6 || W || D || Color table 22
 +
|-
 +
| COLOR23 || D7 || W || D || Color table 23
 +
|-
 +
| COLOR24 || D8 || W || D || Color table 24
 +
|-
 +
| COLOR25 || D9 || W || D || Color table 25
 +
|-
 +
| COLOR26 || DA || W || D || Color table 26
 +
|-
 +
| COLOR27 || DB || W || D || Color table 27
 +
|-
 +
| COLOR28 || DC || W || D || Color table 28
 +
|-
 +
| COLOR29 || DD || W || D || Color table 29
 +
|-
 +
| COLOR30 || DE || W || D || Color table 30
 +
|-
 +
| COLOR31 || DF || W || D || Color table 31
 +
|-
 +
| RESERVED || EX
 +
|-
 +
| RESERVED || FX
 +
|-
 +
| NO-OP (NULL) || FF
 +
|}
 +
 
 +
== Appendix C - CUSTOM IC PIN ALLOCATION LIST (Missing) ==
  
 
== Appendix D - SYSTEM MEMORY MAP AND SPECIAL CHIP ADDRESSES ==
 
== Appendix D - SYSTEM MEMORY MAP AND SPECIAL CHIP ADDRESSES ==
Line 1,120: Line 1,570:
  
 
== CONNECTORS (11/11/84) ==
 
== CONNECTORS (11/11/84) ==
 +
 +
== Index (Original 1984 draft) ==

Latest revision as of 19:25, 10 September 2024


Appendix A - REGISTER BITS

APPENDIX A - Commodore-Amiga PC Hardware Manual

THIS IS THE SYSTEM FILE NAMED "REGBITS".
It is generated and maintained by Commodore-Amiga Hardware Engineering.

REVISION .5 (DEC 04, 1984)

ADKCON 4F W P Audio, Disk, Control write
ADKCONR *08 R P Audio, Disk, Control read
BIT # USE
15 SET/CLR Set/Clear control bit. Determines if bits written with a 1 get set or cleared. Bits written with a zero are always unchanged.
14-13 PRECOMP 1-0 00 = none, 01 = 140ns, 10 = 280 ns, 11 = 560 ns
12 MFMPREC (1 = MFM precomp, 0 = GCR precomp)
11 UARTBRK Forces a UART break (clears TXD) if true
10 WORDSYNC Enables disk read synchronizing on a word equal to DISK SYNC CODE, located in address (3F) * 2
09 MSBSYNC Enables disk read synchronizing on the MSB (most signif. bit) Apple type GCR
08 FAST Disk data clock rate control: 1 = fast (2 us) 0 = slow (4us), (fast for MFM, slow for MFM or GCR)
07 USE3PN Use audio channel 3 to modulate nothing
06 USE2PN Use audio channel 2 to modulate period of channel 3
05 USE1PN Use audio channel 1 to modulate period of channel 2
04 USE0PN Use audio channel 0 to modulate period of channel 1
03 USE3VN Use audio channel 3 to modulate nothing
02 USE2VN Use audio channel 2 to modulate volume of channel 3
01 USE1VN Use audio channel 1 to modulate volume of channel 2
00 USE0VN Use audio channel 0 to modulate volume of channel 1

NOTE If both period and volume are modulated on the same channel, the period and volume will be alternated.

First word xxxxxxxx V7-V0, Second word P15-P0 (etc)

AUDxLCH + 50 W A Audio channel x location (High 3 bits)
AUDxLCL + 51 W A Audio channel x location (Low 15 bits)

This pair of registers contain the 18 bit starting address (location) of Audio channel x (x = 0,1,2,3) DMA data. This is not a pointer register and therefore only needs to be reloaded if a different memory location is to be output.


AUDxLEN 52 W P Audio channel x length

This register contains the length (number of words) of Audio channel DMA data.


AUDxPER 53 W P Audio channel x period

This register contains the period (rate) Audio channel x DMA data transfer.


AUDxVOL 54 W P Audio channel x volume

This register contains the volume setting for Audio channel x. Bits 6,5,4,3,2,1,0 specify 65 linear volume levels as shown below.


BITS USE
15-07 Not used
06 Forces volume to max (64 ones, no zeros)
05-00 Sets one of 64 levels (000000 = no output), (111111 = 63 ones, one zero)


AUDxDAT &55 W A Audio channel x Data

This register is the audio channel x (x = 0,1,2,3) DMA data buffer. It contains 2 bytes of data that are output sequentially (with digital to analog conversion) to the audio output pins. The DMA controller automatically transfers data to this register from RAM. The processor can also write directly to this register. When the DMA data is finished (words output=length) and the data in this register has been used, an audio channel interrupt request is set.


BLTxPTH + *28 W A Blitter Pointer to x (High 3 bits)
BLTxPTL + *29 W A Blitter Pointer to x (Low 15 bits)

This pair of registers contains the 18 bit address of Blitter source (x = A,B,C) or dest. (x = D) DMA data. This pointer must be preloaded with the starting address of the data to be processed by the Blitter. After the Blitter is finished it will contain the last data address (plus increment and modulo).


BLTxMOD *32 W A Blitter Modulo x

This register contains the Modulo for Blitter source (x = A,B,C) or dest (x = D). A Modulo is a number that is automatically added to the address at the end of each line, in order that the address then points to the start of the next line. Each source or destination has its own Modulo, allowing each to be a different size, while an identical area of each is used in the Blitter operation.


BLTAFWM *22 W A first word mask for source A
BLTALWM *23 W A last word mask for source A

The patterns in these two registers are "ANDed" with the first and last words of each line of data from source A into the Blitter. A zero in any bit overrides the data from source A. These registers should be set to all "ones" for fill mode or for line drawing mode.


BLTxDAT *3A W A Blitter source x data reg.

This register hold source x (x = A,B,C) data for use by the Blitter. It is normally loaded by the Blitter DMA channel, however it may also be preloaded by the microprocessor.


BLTDDAT Blitter destination data register

This register holds the data resulting from each word of Blitter operation until it is sent to a RAM destination. This is a dummy address and cannot be read by the micro. The transfer is automatic during Blitter operation.


BLTCON0 *20 W A Blitter control register 0
BLTCON1 *21 W A Blitter control register 1

These two control registers are used together to control Blitter operations. There are 2 basic modes, area and line, which are selected by bit 0 of BLTCON1, as shown below.


AREA MODE (“normal”) (“) (“) LINE MODE (line draw) (“) (“)
BIT # BLTCON0 BLTCON1 BIT# BLTCON0 BLTCON1
15 ASH3 BSH3 15 ASH3 BSH3
14 ASH2 BSH2 14 ASH2 BSH2
13 ASH1 BSH1 13 ASH1 BSH1
12 ASH0 BSH0 12 ASH0 BSH0
11 USEA X 11 1 X
10 USEB X 10 0 X
09 USEC X 09 1 X
08 USED X 08 1 X
07 LF7 X 07 LF7 X
06 LF6 X 06 LF6 SIGN
05 LF5 X 05 LF5 OVF
04 LF4 EFE 04 LF4 SUD
03 LF3 IEE 03 LF3 SUL
02 LF2 FCI 02 LF2 AUL
01 LF1 DESC 01 LF1 SING
00 LF0 LINE (= 0) 00 LF0 LINE (= 1)

ASH3 = 0 Shift value of A source
BSH3 = 0 Shift value of B source and line texture
USEA Mode control bit to use Source A
USEB Mode control bit to use Source B
USEC Mode control bit to use Source C
USED Mode control bit to use Source D
LF7-0 Logic function minterm select lines
EFE Exclusive fill enable
IFE Inclusive fill enable
FCI Fill carry input
DESC Descending (decreasing address) control bit
LINE Line mode control bit
SIGN Line draw sign flag
OVF Line draw r/l word overflow flag
SUD Line draw, Sometimes Up or Down (=AUD*)
SUL Line draw, Sometimes Up or Left
AUL Line draw, Always Up or Left
SING Line draw, Single bit per horiz. line


BLTSIZE * 2C W A Blitter start and size (window width, height)

This register contains the width and height of the Blitter operation (in line mode width must = 2, height = line length). Writing to this register will start the Blitter, and should be done last, after all pointers and control registers have been initialized.

BIT # 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
h9 h8 h7 h6 h5 h4 h3 h2 h1 h0 w5 w4 w3 w2 w1 w0

h = Height = Vertical lines (10 bits = 1024 lines max)
w = Width = Horiz. pixels (6 bits = 64 words = 1024 pixels max)


BPLxPTH +70 W A Bit-plane x pointer (High 3 bits)
BPLxPTL +71 W A Bit-plane x pointer (Low 15 bits)

This pair of registers contains the 18 bit pointer to the address of bit-plane x (x = 1,2,3,4,5,6) DMA data. This pointer must be reinitialized by the processor or coprocessor to point to the beginning of bit-plane data every vertical blank time.


BPLxDAT &88 W D Bit-plane x data (Parallel to serial convert)

These registers receive the DMA data fetched from RAM by the bit-plane address pointers described above. They act as a 6 word parallel to serial buffer for up to 6 memory "Bit-planes". (x = 3-6)
They are loaded by the display bit-plane DMA controller with data from 6 separate areas of memory. They output to the display most sig. bit first (left to right) simultaneously.


BPL1MOD 84 W A Bit-plane modulo (odd planes)
BPL2MOD 85 W A Bit-plane modulo (even planes)

These registers contain the Modulos for the odd and even bit-planes. A Modulo is a number that is automatically added to the address at the end of each line, in order that the address then points to the start of the next line. Since they have separate Modulos, the odd and even bit-planes may have sizes that are different from each other, as well as different from the Display Window size


BPLCON0 80 W A D Bit-plane control reg. (misc. control bits)
BPLCON1 81 W D Bit-plane control reg. (horiz. scroll control)
BPLCON2 82 W D Bit-plane control reg. (video priority control)

These registers control the operation of the bit-planes and various aspects of the display.

BIT # BPLCON0 BPLCON1 BPLCON2
15 HIRES X X
14 BPU2 X X
13 BPU1 X X
12 BPU0 X X
11 HOMOD X X
10 DBPPF X X
09 COLOR X X
08 RGB X X
07 X PF2H3 X
06 X PF2H2 PF2PRI
05 X PF2H1 PF2P2
04 X PF2H0 PF2P1
03 LPEN PH1H3 PF2P0
02 LACE PH1H2 PF1P2
01 ERSY PH1H1 PF1P1
00 X PH1H0 PF1P0

HIRES = High resolution (640) mode
BPU = Bit-plane use code 000-110 (NONE through 6 inclusive)
HOMOD = Hold and Modify mode
DBLPF = Double playfield (PF1 = odd PF2 = even bit-planes)
COLOR = Composite video COLOR enable
RGB = Red/Blue/Green enable bit
LPEN = Light pen enable (reset on power up)
LACE = Interlace enable (reset on power up)
ERSY = External Resync (HSYNC, VSYNC pads become inputs, reset on power up)
PF2PRI = Playfield 2 (even planes) has priority over (appears in front of) Playfield 1 (odd planes)
PF2P = Playfield 2 priority mode (with resp. to sprites)
PF1P = Playfield 1 priority mode (with resp. to sprites)
PF2H = Playfield 2 horizontal scroll code
PF1H = Playfield 1 horizontal scroll code


CLXCON 4C W D Collision control

This register controls which bit-planes are included (enabled)
in collision detection, and their required state if included.
It also controls the individual inclusion of odd numbered
sprites in the collision detection, by logically ORing them
with their corresponding even numbered sprite.

BIT # FUNCTION DESCRIPTION
15 ENSP7 Enable Sprite 7 (ORed with Sprite 6)
14 ENSP5 Enable Sprite 5 (ORed with Sprite 4)
13 ENSP3 Enable Sprite 3 (ORed with Sprite 2)
12 ENSP1 Enable Sprite 1 (ORed with Sprite 0)
11 ENBP6 Enable Bit-Plane 6 (Match reqd. for collision
10 ENBP5 Enable Bit-Plane 5 (Match reqd. for collision)
09 ENBP4 Enable Bit-Plane 4 (Match reqd. for collision)
08 ENBP3 Enable Bit-Plane 3 (Match reqd. for collision)
07 ENBP2 Enable Bit-Plane 2 (Match reqd. for collision)
06 ENBP1 Enable Bit-Plane 1 (Match reqd. for collision)
05 MVBP6 Match Value for Bit-Plane 6 collision
04 MVBP5 Match Value for Bit-Plane 5 collision
03 MVBP4 Match Value for Bit-Plane 4 collision
02 MVBP3 Match Value for Bit-Plane 3 collision
01 MVBP2 Match Value for Bit-Plane 2 collision
00 MVBP1 Match Value for Bit-Plane 1 collision

Note: Disabled Bit-Planes cannot prevent collisions. Therefore if all bit-planes are disabled, collisions will be continuous, regardless of the match values.


CLXDAT *07 R D Collision data reg. (Read and clear). This address reads (and clears) the collision detection register. The bit assignments are below.

NOTE: Playfield 1 is all odd numbered enabled bit-planes. Playfield 2 is all even numbered enabled bit-planes.

BIT # COLLISIONS REGISTERED
15 not used
14 Sprite 4 (or 5) to Sprite 6 (or 7)
13 Sprite 2 (or 3) to Sprite 6 (or 7)
12 Sprite 2 (or 3) to Sprite 4 (or 5)
11 Sprite 0 (or 1) to Sprite 6 (or 7)
10 Sprite 0 (or 1) to Sprite 4 (or 5)
09 Sprite 0 (or 1) to Sprite 2 (or 3)
08 Playfield 2 to Sprite 6 (or 7)
07 Playfield 2 to Sprite 4 (or 5)
06 Playfield 2 to Sprite 2 (or 3)
05 Playfield 2 to Sprite 0 (or 1)
04 Playfield 1 to Sprite 6 (or 7)
03 Playfield 1 to Sprite 4 (or 5)
02 Playfield 1 to Sprite 2 (or 3)
01 Playfield 1 to Sprite 0 (or 1)
00 Playfield 1 to Playfield 2


COLORxx C0 W D Color table xx

There are 32 of these registers (xx = 00-31) and they are sometimes collectively called the "Color Palette". They contain 12-bit codes representing RED, GREEN, BLUE colors for RGB systems. One of these registers at a time is selected (by the BPLxDAT serialized video code) for presentation at the RGB video output pins. The table below shows the color register bit usage.

BIT # 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
RGB X X X X R3 R2 R1 R0 G3 G2 G1 G0 B3 B2 B1 B0

B = blue, G = green, R = red
BE = blue enable, GE = green enable, RE = red enable


COPCON *17 W A Coprocessor control register

This is a 1-bit register that when set true, allows the Coprocessor to access the Blitter hardware. This bit is cleared by power on reset, so that the Coprocessor cannot access the Blitter hardware.

BIT # NAME FUNCTION
01 CDANG Coprocessor danger mode. Allows Coprocessor access to Blitter if true.


COPJMP1 44 S A Coprocessor restart at first location
COPJMP2 45 S A Coprocessor restart at second location

These addresses are strobe addresses, that when written to cause the Coprocessor to jump indirect using the address contained in the First or Second Location registers described below. The Coprocessor itself can write to these addresses, causing its own jump indirect.


COP1LCH +40 Coprocessor first location reg. (High 3 bits)
COP1LCL +41 Coprocessor first location reg. (Low 15 bits)
COP2LCH +42 Coprocessor second location reg. (High 3 bits)
COP2LCL +43 Coprocessor second location reg. (Low 15 bits)

These registers contain the jump addresses described above.


COPINS 46 W A Coprocessor inst. fetch identify

This is a dummy address that is generated by the Coprocessor whenever it is loading instructions into its own instruction register. This actually occurs every Coprocessor cycle except for the second (IR2) cycle of the MOVE instruction. The three types of instructions are shown below.

MOVE Move immediate to dest.

WAIT Wait until beam counter is equal to, or greater than.
(keeps Coprocessor off of bus until beam position has been reached)

SKIP Skip if beam counter is equal to, or greater than.
(skips following MOVE isnt. unless beam position has been reached)

MOVE (“) WAIT UNTIL (“) SKIP IF (“)
BIT # IR1 IR2 IR1 IR2 IR1 IR2
15 X RD15 VP7 BFD * VP7 BFD *
14 X RD14 VP6 VE6 VP6 VE6
13 X RD13 VP5 VE5 VP5 VE5
12 X RD12 VP4 VE4 VP4 VE4
11 X RD11 VP3 VE3 VP3 VE3
10 X RD10 VP2 VE2 VP2 VE2
09 X RD09 VP1 VE1 VP1 VE1
08 DA8 RD08 VP0 VE0 VP0 VE0
07 DA7 RD07 HP8 HE8 HP8 HE8
06 DA6 RD06 HP7 HE7 HP7 HE7
05 DA5 RD05 HP6 HE6 HP6 HE6
04 DA4 RD04 HP5 HE5 HP5 HE5
03 DA3 RD03 HP4 HE4 HP4 HE4
02 DA2 RD02 HP3 HE3 HP3 HE3
01 DA1 RD01 HP2 HE2 HP2 HE2
00 0 RD00 1 0 1 1

IR1 = First instruction register.
IR2 = Second instruction register.
DA = Destination Address for MOVE instruction. Fetched during IR1 time, used during IR2 time on RGA bus.
RD = RAM Data moved by MOVE instruction at IR2 time.
directly from RAM to the address given by the DA field.
VP = Vertical Beam Position comparison bit.
HP = Horizontal Beam Position comparison bit.
VE = Enable comparison (mask bit).
HE = Enable comparison (mask bit).

  • NOTE BFD = Blitter Finished Disable. When this bit is true, the Blitter Finished flag will have no effect on the Coprocessor. When this bit is zero, the Blitter Finished flag must be true (in addition to the rest of the bit comparisons) before the Coprocessor can exit from its wait state, or skip over an instruction. Note that the V7 comparison cannot be masked.

The Coprocessor is basically a 2 cycle machine that requests the bus only during odd memory cycles. (4 memory cycles per ins.) This prevents collisions with Display, Audio, Disk, Refresh, and Sprites, all of which use only even cycles. It therefore needs (and has) priority over only the Blitter and Micro. There are only three types of instructions, MOVE immediate, WAIT until, and SKIP if. All instructions require 2 bus cycles (and two instruction words). Since only the odd bus cycles are requested, 4 memory cycle times are required per instruction. (memory cycles are 280 ns) There are two indirect jump registers COP1LC and COP2LC. These are 18-bit pointer registers whose contents are used to modify the program counter for initialization or jumps. They are transferred to the program counter whenever strobe addresses COPJMP1 or COPJMP2 are written. In addition, COP1LC is automatically used at the beginning of each vertical blank time. It is important that one of the jump registers be initialized and its jump strobe address hit, after power up but before Coprocessor DMA is initialized. This insures a determined startup address, and state.


DIWSTRT 47 W A Display Window Start (upper left vert-hor pos)
DIWSTOP 48 W A Display Window Stop (lower right vert-hor pos)

These registers control the Display window size and position by locating the upper left and lower right corners.

BIT # 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
USE V7 V6 V5 V4 V3 V2 V1 V0 H7 H6 H5 H4 H3 H2 H1 H0

DIWSTRT is vertically restricted to the upper 2/3 of the display (V8 = 0), and horizontally restricted to the left 3/4 of the display (H8 = 0).

DIWSTOP is vertically restricted to the lower 1/2 of the display (V8 = / = V7), and horizontally restricted to the right 1/4 of the display (H8 = 1).


DDFSTRT 49 W A Display data fetch start (Horiz. Position)
DDFSTOP 4A W A Display data fetch stop (Horiz. Position)

These registers control the horizontal timing of the beginning and end of the bit-plane DMA display data fetch. The vertical bit-plane DMA timing is identical to the display windows described above. The bit-plane Modulos are dependent on the bit-plane horizontal size, and on the data fetch window size.

BIT # 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
USE X X X X X X X X H8 H7 H6 H5 H4 X X X

(X bits should always be driven with 0 to maintain upward compatibility)
The tables below show the start and stop timing for different register contents.

DDFSTRT (Left edge of display data fetch)

PURPOSE H8 H7 H6 H5 H4
Extra wide (max) * 0 0 1 0 1
wide 0 0 1 1 0
normal 0 0 1 1 1
narrow 0 1 0 0 0

DDFSTOP (Right edge of display data fetch)

PURPOSE H8 H7 H6 H5 H4
narrow 1 1 0 0 1
normal 1 1 0 1 0
wide (max) 1 1 0 1 1


DMACON 4B W A D P DMA control write (clear or set)
DMACONR *01 R A P DMA control (and Blitter status) read

This register controls all of the DMA channels, and contains Blitter DMA status bits.

BIT # FUNCTION DESCRIPTION
15 SET/CLR Set/Clear control bit. Determines if bits written with a 1 get set or cleared.
14 BBUSY Blitter busy status bit (read only).
13 BZERO Blitter logic zero status bit (read only).
12 X
11 X
10 BLTPRI Blitter DMA priority (over CPU Micro)*
09 DMAEN Enable all DMA below
08 BPLEN Bit-plane DMA enable
07 COPEN Coprocessor DMA enable
06 BLTEN Blitter DMA enable
05 SPREN Sprite DMA enable
04 DSKEN Disk DMA enable
03 AUD3EN Audio channel 3 DMA enable
02 AUD2EN Audio channel 2 DMA enable
01 AUD1EN Audio channel 1 DMA enable
00 AUD0EN Audio channel 0 DMA enable
  • (also called "Blitter Nasty"), (disables /BLS pin, preventing Micro from stealing any bus cycles while Blitter DMA is running)


DSKPTH + *10 W A Disk pointer (High 3 bits)
DSKPTL + *11 W A Disk pointer (Low 15 bits)

This pair of registers contain the 18-bit address of Disk DMA data. These address registers must be initialized by the processor or Coprocessor before disk DMA is enabled.


DSKLEN *12 W P Disk length

This register contains the length (number of words) of Disk DMA data. It also contains 2 control bits. These are a DMA enable bit, and a DMA direction (read/write) bit.

BIT #
15 DMAEN Disk DMA Enable
14 WRITE Disk Write (RAM to Disk) if 1
13-0 LENGTH Length (# of words) of DMA data


DSKDAT & *13 W P Disk DMA Data write
DSKDATR & *04 ER P Disk DMA Data read (early read dummy address)

This register is the Disk DMA data buffer. It contains 2 bytes of data that are either sent to (write) or received from (read) the disk. The write mode is enable by bit 14 of the LENGTH register. The DMA controller automatically transfers data to or from this register and RAM, and when the DMA data is finished (Length = 0), it causes a Disk Block Interrupt. See interrupts below.


DSKBYTR *0D R P Disk Data byte and status read

This register is the Disk Microprocessor data buffer. Data from the disk (in read mode) is loaded into this register one byte at a time, and the Disk Byte Interrupt request bit is set true. This interrupt bit is mirrored in bit 15 of this address to allow simultaneous reading and polling. The interrupt bit must be cleared however by writing to the INTREQ register.

BIT #
15 DSKBYT Disk byte ready (reset on read)
14 DMAON (disk)
13 DISKWRITE
12 WORDEQUAL (from disk sync circuit)
11-08 X Not used
07-00 DATA Disk byte data


DSKSYNC 3F R P Disk sync register, holds the code for disk read synchronization. See ADKCON bit 10.
INTREQ 4E W P Interrupt Request bits (clear or set)
INTREQR *0F R P Interrupt Request bits (read)

This register contains interrupt request bits (or flags). These bits may be polled by the processor, and if enabled by the bits listed in the next register, they may cause processor interrupts. Both a set and clear operation are required to load arbitrary data into this register. The bit assignments are identical to the Enable register below.


INTENA 4D W P Interrupt Enable bits (clear or set bits)
INTENAR *0E R P Interrupt Enable bits read

This register contains interrupt enable bits. The bit assignments for both the request and enable registers are given below.

BIT # FUNCT LEVEL DESCRIPTION
15 SET/CLR Set/Clear control bit. Determines if bits written with a 1 get set or cleared. Bits written with a 0 are always unchanged.
14 INTEN Master interrupt (enable only, no request)
13 EXTER 6 External interrupt
12 DSKBYT 5 Disk Byte ready (disk sync)
11 RBF 5 Serial port Receive Buffer Full
10 AUD3 4 Audio channel 3 block finished
09 AUD2 4 Audio channel 2 block finished
08 AUD1 4 Audio channel 1 block finished
07 AUD0 4 Audio channel 0 block finished
06 BLIT 3 Blitter finished
05 VERTB 3 Start of Vertical blank
04 COPER 3 Coprocessor
03 PORTS 2 I/O Ports and timers
02 OVRUN 1 Serial port receiver overrun
01 DSKBLK 1 Disk Block finished
00 TBE 1 Serial port Transmit Buffer Empty


JOY0DAT *05 R D Joystick-mouse 0 data (left vert, horiz)
JOY1DAT *06 R D Joystick-mouse 1 data (left vert, horiz)

These addresses each read a pair of 8-bit mouse counters. 0 = left controller pair, 1 = right controller pair. (4 counters total). The bit usage for both left and right addresses are shown below. Each counter is clocked by signals from 2 controller pins. Bits 1 and 0 of each counter may be read to determine the state of these 2 clock pins. This allows these pins to double as joystick switch inputs. Mouse counter usage (pins 1-3 = Yclock, pins 2-4 = Xclock)

BIT # 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
0DAT Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 X7 X6 X5 X4 X3 X2 X1 X0
1DAT Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 X7 X6 X5 X4 X3 X2 X1 X0

Joystick switch usage
To detect these read these

Directions Pin # Counter Bits
Forward 1 Y1 xor Y0 (BIT# 09 xor BIT# 08)
Left 3 Y1
Back 2 X1 xor X0 (BIT# 01 xor BIT#00)
Right 4 X1


JOYTEST *1B W D Write to all 4 Joystick-mouse counters at once.

Mouse counter write test data.

BIT # 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
0DAT Y7 Y6 Y5 Y4 Y3 Y2 xx xx X7 X6 X5 X4 X3 X2 X1 X0
1DAT Y7 Y6 Y5 Y4 Y3 Y2 xx xx X7 X6 X5 X4 X3 X2 X1 X0
CONNECTORS (") (") (") PORTIA
loc. dir. sym. pin pin
RIGHT Y RY 9 33
RIGHT X RX 5 32
LEFT Y LY 9 36
LEFT X LX 5 35


POTGO *1A W P Pot Port (4-bit) Direction and Data, and Pot Counter start.
POTINP *0B R P Pot pin data read

This register controls a 4-bit bi-directional I/O port that shares the same 4 pins as the 4 pot counters above.

BIT # FUNCT DESCRIPTION
15 OUTRY Output enable for Portia pin 33
14 DATRY I/O data Portia pin 33
13 OUTRX Output enable for Portia pin 32
12 DATRX I/O data Portia pin 32
11 OUTLY Output enable for Portia pin 36
10 DATLY I/O data Portia pin 36
09 OUTLX Output enable for Portia pin 35
08 DATLX I/O data Portia pin 35
07-01 X not used
00 START Start pots (dump capacitors, start counters)


REFPTR & *14 W A Refresh pointer

This register is used as a Dynamic RAM refresh address generator. It is writable for test purposes only, and should never be written by the microprocessor.


SERDAT *18 W P Serial Port Data and stop bits write

This address writes data to a Transmit data buffer. Data from this buffer is moved into a serial shift register for output transmission whenever it is empty. This sets the Interrupt Request TBE (transmit buffer empty). A stop bit must be provided as part of the data word. The length of the data word is set by the position of the stop bit.


BIT # 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
USE 0 0 0 0 0 0 S D8 D7 D6 D5 D4 D3 D2 D1 D0

Note S = stop bit = 1, D= data bits


SERDATR *0C R P Serial Port Data and Status read

This address reads data from a Receive data buffer. Data in this buffer is loaded from a receiving shift register whenever it is full. Several interrupt request bits are also read at this address, along with the data, as shown below.

BIT #
15 OVRUN Serial port receiver overrun
14 RBF Serial port Receive Buffer Full (mirror)
13 TBE Serial port Transmit Buffer Empty (mirror)
12 TSRE Serial port Transmit shift reg. empty
11 RXD RXD pin receives UART serial data for direct bit test by the micro
10 x Not used
09 STP Stop bit
08 STP-DB8 Stop bit if LONG, Data bit if not
07 DB7 Data bit
06 DB6 Data bit
05 DB5 Data bit
04 DB4 Data bit
03 DB3 Data bit
02 DB2 Data bit
01 DB1 Data bit
00 DB0 Data bit


SERPER *19 W P Serial Port Period and control

This register contains the control bit LONG referred to above, and a 15-bit number defining the serial port Baud Rate. If this number is N, then the Baud Rate is 1 bit every (N+1) * .2794 Microseconds.

BIT #
15 LONG Defines Serial Receive as 9-bit word.
14-00 RATE Defines Baud Rate = 1/(N+1) * .2794 microsec.


SPRxPTH +90 W A Sprite x pointer (High 3 bits)
SPRxPTL +91 W A Sprite x pointer (Low 15 bits)

This pair of registers contains the 18-bit address of Sprite x (x = 0, 1, 2, 3, 4, 5, 6, 7) DMA data. These address registers must be initialized by the processor or Coprocessor every vertical blank time.


SPRxPOS %A0 W A D Sprite x Vert-Horiz start position data
SPRxCTL %A1 W A D Sprite x Vert stop position and control data

These 2 registers work together as position, size and feature Sprite control registers. They are usually loaded by the Sprite DMA channel during horizontal blank, however they may be loaded by either processor any time.

SPRxPOS register

BIT # SYM FUNCTION
15-08 SV7-SV0 Start vertical value. High bit (SV8) is in SPRxCTL reg below.
07-00 SH8-SH1 Start horizontal value. Low bit (SH0) is in SPRxCTL reg below.


SPRxCTL register (writing this address disables sprite horizontal comparator circuit)

BIT # SYM FUNCTION
15-08 EV7-EV0 End (stop) vert value, low 8 bits
07 ATT Sprite attach control bit (odd sprites)
06-04 X Not used
02 SVB Start vert. value high bit
01 EVB End (stop) vert. value high bit
00 SH0 Start horiz. value low bit


SPRxDATA %A2 W D Sprite x image data register A
SPRxDATB %A3 W D Sprite x image data register B

These registers buffer the Sprite image data. They are usually loaded by the Sprite DMA channel but may be loaded by either processor at any time. When a horizontal comparison occurs, the buffers are dumped into shift registers and serially output to the display, MSB first on the left.

Note Writing to the A buffer enables (arms) the sprite. Writing to the SPRxCTL register disables the sprite. If enabled, data in the A and B buffers will be output whenever the beam counter equals the sprite horizontal position value in the SPRxPOS register.


STREQU & *1C S D Strobe for horiz sync with VB and EQU
STRVBL & *1D S D Strobe for horiz sync with VB (Vert. Blank)
STRHOR & *1E S D P Strobe for horiz sync
STRLONG & *1F S D Strobe for the identification of long horiz line

One of the first 3 strobe addresses above is places on the dest. addr. bus during the first refresh time slot. The 4th strobe shown above is used during the second refresh time slot of every other line, to identify lines with long counts (228). There are 4 refresh time slots, and any not used for strobes will leave a null (FF) address on the dest. addr. bus.


VPOSR *02 R A Read Vert most sig. bit (and frame flop)
VPOSW *15 W A Write Vert most sig. bit (and frame flop)
BIT# 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
USE LOF -- -- -- -- -- -- -- -- -- -- -- -- -- -- V8

LOF = Long frame (auto toggle control bit in BPLCON0)


VHPOSR *03 R A Read Vert and Horiz position of beam
VHPOSW *16 W A Write Vert Vert and Horiz position of beam
BIT# 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
USE V7 V6 V5 V4 V3 V2 V1 V0 H8 H7 H6 H5 H4 H3 H2 H1

RESOLUTION = 1/160 OF SCREEN WIDTH (280 NS)

Appendix B - REGISTER NAMES

APPENDIX B - Commodore-Amiga PC Hardware Manual

THIS IS THE SYSTEM FILE NAMED "REGNAME".
It is generated and maintained by Commodore-Amiga Hardware Engineering.

custom IC register allocation
preliminary 8/04/83 rhn
revised 8/16/83 jgm
revised 8/18/83 jgm
revised 8/23/83 jgm
revised 9/01/83 jgm
revised 9/16/83 jgm
revised 9/19/83 jgm
revised 9/26/83 jgm
revised 10/27/83 jgm
revised REGNAM.9 11/19/83 jgm
revised REGNAME 11/29/83 jgm


& = Register used by DMA channel only.

% = Register used by DMA channel usually, processors sometimes.

+ = Address register pair. Low word uses DB1-DB15, High word DB0-DB2

  • = Address not writable by the Coprocessor.

~ = Address not writable by the Coprocessor unless COPCON is set true.

A = Agnus chip, D = Daphne chip, P = Portia chip

W = Write, R = Read

ER = Early Read. This is a DMA data transfer to RAM, from either the Disk or from the Blitter. RAM timing requires data to be on the bus earlier than microprocessor read cycles. These transfers are therefore initiated by Agnus timing, rather than a read address on the dest. adr. bus.

S = Strobe (write address with no register bits

PTL, PTH = 18-bit Pointer that addresses DMA data. Must be reloaded by a processor before use (Vertical blank for Bit-plane and Sprite pointers, and prior to starting the Blitter for Blitter pointers).

LCL, LCH - 18-bit Location (starting address) of DMA data. Used to automatically restart pointers, such as the Coprocessor program counter (during vertical blank), and the Audio sample counter (whenever the audio length count is finished).

MOD = 15-bit Modulo. A number that is automatically added to the memory address at the end of each line to generate the address for the beginning of the next line. This allows the Blitter (or the Display Window) to operate on (or display) a window of data that is smaller than the actual picture in memory, (memory map) uses 15 bits, plus sign extend.


NAME ADD R/W CHIP FUNCTION
BLTDDAT & *00 ER A Blitter dest. early read (dummy address)
DMACONR *01 R A P DMA control (and Blitter status) read
VPOSR *02 R A Read Vert most sig. bit (and frame flop)
VHPOSR *03 R A Read Vert and Horiz position of beam
DSKDATR & *04 ER P Disk data early read (dummy address)
JOY0DAT *05 R D Joystick-mouse 0 data (vert, horiz)
JOY1DAT *06 R D Joystick-mouse 1 data (vert, horiz)
CLXDAT *07 R D Collision data reg. (read and clear)
ADKCONR *08 R P Audio, disk control register read
POT0DAT *09 R P Pot counter pair 0 data (vert, horiz)
POT1DAT *0A R P Pot counter pair 1 data (vert, horiz)
POTINP *0B R P Pot pin data read
SERDATR *0C R P Serial Port Data and status read
DSKBYTR *0D R P Disk Data byte and status read
INTENAR *0E R P Interrupt Enable bits read
INTREQR *0F R P Interrupt request bits read
DSKPTH + *10 W A Disk pointer (High 3 bits)
DSKPTL + *11 W A Disk pointer (Low 15 bits)
DSKLEN *12 W P Disk length
DSKDAT & *13 W P Disk DMA Data write
REFPTR & *14 W A Refresh pointer
VPOSW *15 W A Write Vert most sig. bit (and frame flop)
VHPOSW *16 W A Write Vert and horiz position of beam
COPCON *17 W A Coprocessor control register (CDANG)
SERDAT *18 W P Serial Port Data and stop bits write
SERPER *19 W P Serial Port Period and control
POTGO *1A W P Pot count start, pot pin drive enable and data
JOYTEST *1B W D Write to all 4 Joystick-mouse counters at once
STREQU & *1C W D Strobe for horiz sync with VB and EQU
STRVBL & *1D W D Strobe for horiz sync with VB (Vert. Blank)
STRHOR & *1E W D P Strobe for horiz sync
STRLONG & *1F W D Strobe for identification of long horiz. line
BLTCON0 ~20 W A Blitter control register 0
BLTCON1 ~21 W A Blitter control register 1
BLTAFWM ~22 W A Blitter first word mask for source A
BLTALWM ~23 W A Blitter last word mask for source A
BLTCPTH + ~24 W A Blitter Pointer to source C (High 3 bits)
BLTCPTL + ~25 W A Blitter Pointer to source C (Low 15 bits)
BLTBPTH + ~26 W A Blitter Pointer to source B (High 3 bits)
BLTBPTL + ~27 W A Blitter Pointer to source B (Low 15 bits)
BLTAPTH + ~28 W A Blitter Pointer to source A (High 3 bits)
BLTAPTL + ~29 W A Blitter Pointer to source A (Low 15 bits)
BLTDPTH + ~2A W A Blitter Pointer to source D (High 3 bits)
BLTDPTL + ~2B W A Blitter Pointer to source D (Low 15 bits)
BLTSIZE + ~2C W A Blitter Pointer to destn. D (High 3 bits)
~2D
~2E
~2F
BLTCMOD ~30 W A
BLTBMOD ~31 W A
BLTAMOD ~32 W A
BLTDMOD ~33 W A
~34
~35
~36
~37
BLTCDAT ~38 W A
BLTBDAT ~39 W A
BLTADAT ~3A W A
~3B
~3C
~3D
~3E
DSKSYN ~3F W P Disk sync pattern register for disk read
COP1LCH +40 W A Coprocessor first location reg (High 3 bits)
COP1LCL +41 W A Coprocessor first location reg (Low 15 bits)
COP2LCH +42 W A Coprocessor second location reg (High 3 bits)
COP2LCL +43 W A Coprocessor second location reg (Low 15 bits)
COPJMP1 44 S A Coprocessor restart at first location
COPJMP2 45 S A Coprocessor restart at second location
COPINS 46 W A Coprocessor inst. fetch identify
DIWSTRT 47 W A Display Window Start (upper left vert-hor pos)
DIWSTOP 48 W A Display Window Stop (lower right vert-hor pos)
DDFSTRT 49 W A Display bit-plane data fetch start (hor pos)
DDFSTOP 4A W A Display bit-plane data fetch stop (hor pos)
DMACON 4B W A D P DMA control write (clear or set)
CLXCON 4C W D Collision control
INTENA 4D W P Interrupt Enable bits (clear or set bits)
INTREQ 4E W P Interrupt Request bits (clear or set bits)
ADKCON 4F W P Audio, Disk control
AUD0LCH +50 W A Audio channel 0 location (High 3 bits)
AUD0LCL +51 W A Audio channel 0 location (Low 15 bits)
AUD0LEN 52 W P Audio channel 0 length
AUD0PER 53 W P Audio channel 0 period
AUD0VOL 54 W P Audio channel 0 volume
AUD0DAT &55 W P Audio channel 0 data
56
57
AUD1LCH +58 W A Audio channel 1 location (High 3 bits)
AUD1LCL +59 W A Audio channel 1 location (Low 15 bits)
AUD1LEN 5A W P Audio channel 1 length
AUD1PER 5B W P Audio channel 1 period
AUD1VOL 5C W P Audio channel 1 volume
AUD1DAT &5D W P Audio channel 1 data
5E
5F
AUD2LCH +60 W A Audio channel 2 location (High 3 bits)
AUD2LCL +61 W A Audio channel 2 location (Low 15 bits)
AUD2LEN 62 W P Audio channel 2 length
AUD2PER 63 W P Audio channel 2 period
AUD2VOL 64 W P Audio channel 2 volume
AUD2DAT &65 W P Audio channel 2 data
66
67
AUD3LCH +68 W A Audio channel 3 location (High 3 bits)
AUD3LCL +69 W A Audio channel 3 location (High 3 bits)
AUD3LEN 6A W P Audio channel 3 length
AUD3PER 6B W P Audio channel 3 period
AUD3VOL 6C W P Audio channel 3 volume
AUD3DAT &6D W P Audio channel 3 data
6E
6F
BPL1PTH +70 W A Bit-plane 1 pointer (High 3 bits)
BPL1PTL +71 W A Bit-plane 1 pointer (Low 15 bits)
BPL2PTH +72 W A Bit-plane 2 pointer (High 3 bits)
BPL2PTL +73 W A Bit-plane 2 pointer (Low 15 bits)
BPL3PTH +74 W Example Bit-plane 3 pointer (High 3 bits)
BPL3PTL +75 W Example Bit-plane 3 pointer (Low 15 bits)
BPL4PTH +76 W Example Bit-plane 4 pointer (High 3 bits)
BPL4PTL +77 W Example Bit-plane 4 pointer (Low 15 bits)
BPL5PTH +78 W Example Bit-plane 5 pointer (High 3 bits)
BPL5PTL +79 W Example Bit-plane 5 pointer (Low 15 bits)
BPL6PTH +7A W Example Bit-plane 6 pointer (High 3 bits)
BPL6PTL +7B W Example Bit-plane 6 pointer (Low 15 bits)
7C
7D
7E
7F
BPLCON0 80 W A D Bit-plane control register (misc. control bits)
BPLCON1 81 W D Bit-plane control register (scroll value PF1, PF2)
BPLCON2 82 W D Bit-plane control register (priority control)
83
BPL1MOD 84 W A Bit-plane Modulo (odd planes)
BPL2MOD 85 W A Bit-plane Modulo (even planes)
86
87
BPL1DAT &88 W D Bit-plane 1 data (parallel to serial convert)
BPL2DAT &89 W D Bit-plane 2 data (parallel to serial convert)
BPL3DAT &8A W D Bit-plane 3 data (parallel to serial convert)
BPL4DAT &8B W D Bit-plane 4 data (parallel to serial convert)
BPL5DAT &8C W D Bit-plane 5 data (parallel to serial convert)
BPL6DAT &8D W D Bit-plane 6 data (parallel to serial convert)
8E
8F
SPR0PTH +90 W A Sprite 0 pointer (High 3 bits)
SPR0PTL +91 W A Sprite 0 pointer (Low 15 bits)
SPR1PTH +92 W A Sprite 1 pointer (High 3 bits)
SPR1PTL +93 W A Sprite 1 pointer (Low 15 bits)
SPR2PTH +94 W A Sprite 2 pointer (High 3 bits)
SPR2PTL +95 W A Sprite 2 pointer (Low 15 bits)
SPR3PTH +96 W A Sprite 3 pointer (High 3 bits)
SPR3PTL +97 W A Sprite 3 pointer (Low 15 bits)
SPR4PTH +98 W A Sprite 4 pointer (High 3 bits)
SPR4PTL +99 W A Sprite 4 pointer (Low 15 bits)
SPR5PTH +9A W A Sprite 5 pointer (High 3 bits)
SPR5PTL +9B W A Sprite 5 pointer (Low 15 bits)
SPR6PTH +9C W A Sprite 6 pointer (High 3 bits)
SPR6PTL +9D W A Sprite 6 pointer (Low 15 bits)
SPR7PTH +9E W A Sprite 7 pointer (High 3 bits)
SPR7PTL +9F W A Sprite 7 pointer (Low 15 bits)
SPR0POS %A0 W A D Sprite 0 Vert-Horiz start position data
SPR0CTL %A1 W A D Sprite 0 Vert stop position and control data
SPR0DATA %A2 W D Sprite 0 image data register A
SPR0DATB %A3 W D Sprite 0 image data register B
SPR1POS %A4 W A D Sprite 1 Vert-Horiz start position data
SPR1CTL %A5 W A D Sprite 1 Vert stop position and control data
SPR1DATA %A6 W D Sprite 1 image data register A
SPR1DATB %A7 W D Sprite 1 image data register B
SPR2POS %A8 W A D Sprite 2 Vert-Horiz start position data
SPR2CTL %A9 W A D Sprite 2 Vert stop position and control data
SPR2DATA %AA W D Sprite 2 image data register A
SPR2DATB %AB W D Sprite 2 image data register B
SPR3POS %AC W A D Sprite 3 Vert-Horiz start position data
SPR3CTL %AD W A D Sprite 3 Vert stop position and control data
SPR3DATA %AE W D Sprite 3 image data register A
SPR3DATB %AF W D Sprite 3 image data register B
SPR4POS %B0 W A D Sprite 4 Vert-Horiz start position data
SPR4CTL %B1 W A D Sprite 4 Vert stop position and control data
SPR4DATA %B2 W D Sprite 4 image data register A
SPR4DATB %B3 W D Sprite 4 image data register B
SPR5POS %B4 W A D Sprite 5 Vert-Horiz start position data
SPR5CTL %B5 W A D Sprite 5 Vert stop position and control data
SPR5DATA %B6 W D Sprite 5 image data register A
SPR5DATB %B7 W D Sprite 5 image data register B
SPR6POS %B8 W A D Sprite 6 Vert-Horiz start position data
SPR6CTL %B9 W A D Sprite 6 Vert stop position and control data
SPR6DATA %BA W D Sprite 6 image data register A
SPR6DATB %BB W D Sprite 6 image data register B
SPR7POS %BC W A D Sprite 7 Vert-Horiz start position data
SPR7CTL %BD W A D Sprite 7 Vert stop position and control data
SPR7DATA %BE W D Sprite 7 image data register A
SPR7DATB %BF W D Sprite 7 image data register B
COLOR00 C0 W D Color table 00
COLOR01 C1 W D Color table 01
COLOR02 C2 W D Color table 02
COLOR03 C3 W D Color table 03
COLOR04 C4 W D Color table 04
COLOR05 C5 W D Color table 05
COLOR06 C6 W D Color table 06
COLOR07 C7 W D Color table 07
COLOR08 C8 W D Color table 08
COLOR09 C9 W D Color table 09
COLOR10 CA W D Color table 10
COLOR11 CB W D Color table 11
COLOR12 CC W D Color table 12
COLOR13 CD W D Color table 13
COLOR14 CE W D Color table 14
COLOR15 CF W D Color table 15
COLOR16 D0 W D Color table 16
COLOR17 D1 W D Color table 17
COLOR18 D2 W D Color table 18
COLOR19 D3 W D Color table 19
COLOR20 D4 W D Color table 20
COLOR21 D5 W D Color table 21
COLOR22 D6 W D Color table 22
COLOR23 D7 W D Color table 23
COLOR24 D8 W D Color table 24
COLOR25 D9 W D Color table 25
COLOR26 DA W D Color table 26
COLOR27 DB W D Color table 27
COLOR28 DC W D Color table 28
COLOR29 DD W D Color table 29
COLOR30 DE W D Color table 30
COLOR31 DF W D Color table 31
RESERVED EX
RESERVED FX
NO-OP (NULL) FF

Appendix C - CUSTOM IC PIN ALLOCATION LIST (Missing)

Appendix D - SYSTEM MEMORY MAP AND SPECIAL CHIP ADDRESSES

Appendix E - PORT CONNECTORS AND SIGNALS

Appendix F - 6526 PERIPHERAL INTERFACE ADAPTERS

CONNECTORS (11/11/84)

Index (Original 1984 draft)