Difference between revisions of "Appendices"

From amiga historical society
Jump to navigation Jump to search
Line 3: Line 3:
 
== Appendix A - REGISTER BITS ==
 
== Appendix A - REGISTER BITS ==
  
APPENDIX A - Commodore-Amiga PC Hardware Manual
+
APPENDIX A - Commodore-Amiga PC Hardware Manual<br>
  
THIS IS THE SYSTEM FILE NAMED "REGBITS".
+
THIS IS THE SYSTEM FILE NAMED "REGBITS".<br>
It is generated and maintained by Commodore-Amiga Hardware Engineering.
+
It is generated and maintained by Commodore-Amiga Hardware Engineering.<br>
  
REVISION .5 (DEC 04, 1984)
+
REVISION .5 (DEC 04, 1984)<br>
ADKCON 4F W P Audio, Disk, Control write
+
 
ADKCONR *08 R P Audio, Disk, Control read
+
ADKCON 4F W P Audio, Disk, Control write<br>
BIT# USE
+
ADKCONR *08 R P Audio, Disk, Control read<br>
----- --------------------------------------------------
+
 
15 SET/CLR Set/Clear control bit. Determines if bits written with a 1 get set or cleared. Bits  
+
BIT# USE<br>
written with a zero are always unchanged.
+
----- --------------------------------------------------<br>
14-13 PRECOMP 1-0 CODE PRECOMP VALUE
+
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.<br>
00 none
+
14-13 PRECOMP 1-0 CODE PRECOMP VALUE<br>
01 140 ns
+
------- -----------------------<br>
10 280 ns
+
00 none<br>
11 560 ns
+
01 140 ns<br>
12  MFMPREC (1=MFM precomp  0=GCR precomp)
+
10 280 ns<br>
11  UARTBRK Forces a UART break (clears TXD) if true
+
11 560 ns<br>
10  WORDSYNC Enables disk read synchronizing on a word
+
12  MFMPREC (1=MFM precomp  0=GCR precomp)<br>
 +
11  UARTBRK Forces a UART break (clears TXD) if true<br>
 +
10  WORDSYNC Enables disk read synchronizing on a word<br>
 
equal to DISK SYNC CODE, located in
 
equal to DISK SYNC CODE, located in
address (3F) * 2
+
address (3F) * 2<br>
09  MSBSYNC Enables disk read synchronizing on the MSB  
+
09  MSBSYNC Enables disk read synchronizing on the MSB<br>
(most signif. bit) Apple type GCR
+
(most signif. bit) Apple type GCR<br>
08  FAST   Disk data clock rate control  1=fast (2 us)  0=slow (4us)  
+
08  FAST   Disk data clock rate control  1=fast (2 us)  0=slow (4us)<br>
  (fast for MFM, slow for MFM or GCR)
+
  (fast for MFM, slow for MFM or GCR)<br>
07  USE3PN  Use audio channel 3 to modulate nothing
+
07  USE3PN  Use audio channel 3 to modulate nothing<br>
06  USE2PN  Use audio channel 2 to modulate period of channel 3
+
06  USE2PN  Use audio channel 2 to modulate period of channel 3<br>
05  USE1PN  Use audio channel 1 to modulate period of channel 2
+
05  USE1PN  Use audio channel 1 to modulate period of channel 2<br>
04  USE0PN  Use audio channel 0 to modulate period of channel 1
+
04  USE0PN  Use audio channel 0 to modulate period of channel 1<br>
03  USE3VN  Use audio channel 3 to modulate nothing
+
03  USE3VN  Use audio channel 3 to modulate nothing<br>
02  USE2VN  Use audio channel 2 to modulate volume of channel 3
+
02  USE2VN  Use audio channel 2 to modulate volume of channel 3<br>
01  USE1VN  Use audio channel 1 to modulate volume of channel 2
+
01  USE1VN  Use audio channel 1 to modulate volume of channel 2<br>
00  USE0VN  Use audio channel 0 to modulate volume of channel 1
+
00  USE0VN  Use audio channel 0 to modulate volume of channel 1<br>
  
 
NOTE If both period and volume are modulated on the
 
NOTE If both period and volume are modulated on the
 
same channel, the period and volume will be alternated.
 
same channel, the period and volume will be alternated.
First word xxxxxxxx V7-V0, Second word P15-P0 (etc)
+
First word xxxxxxxx V7-V0, Second word P15-P0 (etc)<br>
AUDxLCH  +  50  W  A Audio channel x location (High 3 bits)
+
AUDxLCH  +  50  W  A Audio channel x location (High 3 bits)<br>
AUDxLCL  +  51  W  A                      Audio channel x location (Low 15 bits)
+
AUDxLCL  +  51  W  A                      Audio channel x location (Low 15 bits)<br>
  
 
This pair of registers contain the 18 bit starting address
 
This pair of registers contain the 18 bit starting address
Line 49: Line 51:
 
This is not a pointer register and therefore
 
This is not a pointer register and therefore
 
only needs to be reloaded if a different
 
only needs to be reloaded if a different
memory location is to be output.
+
memory location is to be output.<br>
AUDxLEN    52  W P Audio channel x length
+
AUDxLEN    52  W P Audio channel x length<br>
  
 
              This register contains the length (number of words) of  
 
              This register contains the length (number of words) of  
                Audio channel DMA data.
+
                Audio channel DMA data.<br>
AUDxPER  53  W P Audio channel x period
+
AUDxPER  53  W P Audio channel x period<br>
  
 
This register contains the period (rate)
 
This register contains the period (rate)
Audio channel x DMA data transfer.
+
Audio channel x DMA data transfer.<br>
AUDxVOL 54  W P Audio channel x volume
+
AUDxVOL 54  W P Audio channel x volume<br>
  
 
This register contains the volume setting for
 
This register contains the volume setting for
 
Audio channel x. Bits 6,5,4,3,2,1,0 specify 65 linear volume
 
Audio channel x. Bits 6,5,4,3,2,1,0 specify 65 linear volume
levels as shown below.
+
levels as shown below.<br>
BITS USE
+
 
----- -----------------------------------
+
BITS USE<br>
15-07 Not used
+
----- -----------------------------------<br>
06 Forces volume to max (64 ones, not zeros)
+
15-07 Not used<br>
05-00 Sets one of 64 levels (000000=no output
+
06 Forces volume to max (64 ones, not zeros)<br>
(111111=63 ones, one zero)
+
05-00 Sets one of 64 levels (000000=no output<br>
AUDxDAT  &  55  W P Audio channel x Data
+
(111111=63 ones, one zero)<br>
 +
AUDxDAT  &  55  W P Audio channel x Data<br>
  
 
                              This register is the audio channel x (x=0,1,2,3) DMA
 
                              This register is the audio channel x (x=0,1,2,3) DMA
Line 79: Line 82:
 
  When the DMA data is finished (words output=length)
 
  When the DMA data is finished (words output=length)
 
  and the data in this register has been used, an audio channel
 
  and the data in this register has been used, an audio channel
  interrupt request is set.
+
  interrupt request is set.<br>
BLTxPTH + *28  W A Blitter Pointer to x (High 3 bits)
+
BLTxPTH + *28  W A Blitter Pointer to x (High 3 bits)<br>
BLTxPTL  + *29  W A Blitter Pointer to x (Low 15 bits)
+
BLTxPTL  + *29  W A Blitter Pointer to x (Low 15 bits)<br>
  
 
This pair of registers contains the 18 bit address
 
This pair of registers contains the 18 bit address
Line 88: Line 91:
 
of the data to be processed by the Blitter. After the
 
of the data to be processed by the Blitter. After the
 
Blitter is finished it will contain the last data address
 
Blitter is finished it will contain the last data address
(plus increment and modulo).
+
(plus increment and modulo).<br>
BLTxMOD  *32 W A Blitter Modulo x
+
BLTxMOD  *32 W A Blitter Modulo x<br>
 
 
 
This register contains the Modulo for Blitter source (x=A,B,C)
 
This register contains the Modulo for Blitter source (x=A,B,C)
Line 96: Line 99:
 
Each source or destination has its own
 
Each source or destination has its own
 
Modulo, allowing each to be a different size, while
 
Modulo, allowing each to be a different size, while
an identical area of each is used in the Blitter operation.
+
an identical area of each is used in the Blitter operation.<br>
BLTAFWM *22 W A Blitter first word mask for source A
+
BLTAFWM *22 W A Blitter first word mask for source A<br>
BLTALWM *23 W A Blitter last word mask for source A
+
BLTALWM *23 W A Blitter last word mask for source A<br>
  
 
The patterns in these two registers are "anded" with the
 
The patterns in these two registers are "anded" with the
Line 104: Line 107:
 
the Blitter. A zero in any bit overrides the data from source A.
 
the Blitter. A zero in any bit overrides the data from source A.
 
These registers should be set to all "ones" for fill mode
 
These registers should be set to all "ones" for fill mode
or for line drawing mode.
+
or for line drawing mode.<br>
BLTxDAT & *3A W A Blitter source x data reg.
+
BLTxDAT & *3A W A Blitter source x data reg.<br>
  
 
This register hold source x (x=A,B,C) data for use
 
This register hold source x (x=A,B,C) data for use
 
by the Blitter. It is normally loaded by the Blitter
 
by the Blitter. It is normally loaded by the Blitter
 
DMA channel, however it may also be preloaded by
 
DMA channel, however it may also be preloaded by
the microprocessor.
+
the microprocessor.<br>
BLTDDAT Blitter destination data register
+
BLTDDAT Blitter destination data register<br>
  
 
This register holds the data resulting from each word of
 
This register holds the data resulting from each word of
 
Blitter operation until it is sent to a RAM destination.
 
Blitter operation until it is sent to a RAM destination.
 
This is a dummy address and cannot be read by the micro.
 
This is a dummy address and cannot be read by the micro.
The transfer is automatic during Blitter operation.
+
The transfer is automatic during Blitter operation.<br>
BLTCON0  *20 W A Blitter control register 0
+
BLTCON0  *20 W A Blitter control register 0<br>
BLTCON1  *21 W A Blitter control register 1
+
BLTCON1  *21 W A Blitter control register 1<br>
  
 
These two control registers are used together to control
 
These two control registers are used together to control
 
Blitter operations. There are 2 basic modes, area and line,
 
Blitter operations. There are 2 basic modes, area and line,
which are selected by bit 0 of BLTCON1, as shown below.
+
which are selected by bit 0 of BLTCON1, as shown below.<br>
  
AREA MODE ("normal") LINE MODE (line draw)
+
AREA MODE ("normal") LINE MODE (line draw)<br>
---------------------------------------- ------------------------------
+
---------------------------------------- ------------------------------<br>
BIT# BLTCON0 BLTCON1 BIT# BLTCON0 BLTCON1
+
BIT# BLTCON0 BLTCON1 BIT# BLTCON0 BLTCON1<br>
----- ----------- ----------- ----- ----------- -----------
+
----- ----------- ----------- ----- ----------- -----------<br>
15 ASH3 BSH3 15 ASH3 BSH3
+
15 ASH3 BSH3 15 ASH3 BSH3<br>
14 ASH2 BSH2 14 ASH2 BSH2
+
14 ASH2 BSH2 14 ASH2 BSH2<br>
13 ASH1 BSH1 13 ASH1 BSH1
+
13 ASH1 BSH1 13 ASH1 BSH1<br>
12 ASH0 BSH0 12 ASH0 BSH0
+
12 ASH0 BSH0 12 ASH0 BSH0<br>
11 USEA X 11 1 X
+
11 USEA X 11 1 X<br>
10 USEB X 10 0 X
+
10 USEB X 10 0 X<br>
09 USEC X 09 1 X
+
09 USEC X 09 1 X<br>
08 USED X 08 1 X
+
08 USED X 08 1 X<br>
07 LF7 X 07 LF7 X
+
07 LF7 X 07 LF7 X<br>
06 LF6 X 06 LF6 SIGN
+
06 LF6 X 06 LF6 SIGN<br>
05 LF5 X 05 LF5 OVF
+
05 LF5 X 05 LF5 OVF<br>
04 LF4 EFE 04 LF4 SUD
+
04 LF4 EFE 04 LF4 SUD<br>
03 LF3 IEE                          03 LF3 SUL
+
03 LF3 IEE                          03 LF3 SUL<br>
02 LF2 FCI                        02 LF2 AUL
+
02 LF2 FCI                        02 LF2 AUL<br>
01 LF1 DESC                      01 LF1 SING
+
01 LF1 DESC                      01 LF1 SING<br>
00 LF0 LINE (=0) 00 LF0 LINE (=1)
+
00 LF0 LINE (=0) 00 LF0 LINE (=1)<br>
ASH3=0 Shift value of A source
+
 
BSH3=0 Shift value of B source and line texture
+
ASH3=0 Shift value of A source<br>
USEA Mode control bit to use Source A
+
BSH3=0 Shift value of B source and line texture<br>
USEB Mode control bit to use Source B
+
USEA Mode control bit to use Source A<br>
USEC Mode control bit to use Source C
+
USEB Mode control bit to use Source B<br>
USED Mode control bit to use Source D
+
USEC Mode control bit to use Source C<br>
LF7-0 Logic function minterm select lines
+
USED Mode control bit to use Source D<br>
EFE Exclusive fill enable
+
LF7-0 Logic function minterm select lines<br>
IFE Inclusive fill enable
+
EFE Exclusive fill enable<br>
FCI Fill carry input
+
IFE Inclusive fill enable<br>
DESC Descending (decreasing address) control bit
+
FCI Fill carry input<br>
LINE Line mode control bit
+
DESC Descending (decreasing address) control bit<br>
SIGN Line draw sign flag
+
LINE Line mode control bit<br>
OVF Line draw r/l word overflow flag
+
SIGN Line draw sign flag<br>
SUD Line draw, Sometimes Up or Down (=AUD*)
+
OVF Line draw r/l word overflow flag<br>
SUL Line draw, Sometimes Up or Left
+
SUD Line draw, Sometimes Up or Down (=AUD*)<br>
AUL Line draw, Always Up or Left
+
SUL Line draw, Sometimes Up or Left<br>
SING Line draw, Single bit per horiz. line
+
AUL Line draw, Always Up or Left<br>
BLTSIZE *2C W A Blitter start and size (window width, height)
+
SING Line draw, Single bit per horiz. line<br>
 +
BLTSIZE *2C W A Blitter start and size (window width, height)<br>
 
 
 
This register contains the width and height of the blitter
 
This register contains the width and height of the blitter
Line 168: Line 172:
 
Writing to this register will start the Blitter, and should
 
Writing to this register will start the Blitter, and should
 
be done last, after all pointers and control registers have
 
be done last, after all pointers and control registers have
been initialized.
+
been initialized.<br>
  
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<br>
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<br>
  
h=Height = Vertical lines (10 bits = 1024 lines max)
+
h=Height = Vertical lines (10 bits = 1024 lines max)<br>
w= Width = Horiz. pixels (6 bits = 64 words = 1024 pixels max)
+
w= Width = Horiz. pixels (6 bits = 64 words = 1024 pixels max)<br>
BPLxPTH + 70 W A Bit-plane x pointer (High 3 bits)
+
BPLxPTH + 70 W A Bit-plane x pointer (High 3 bits)<br>
BPLxPTL + 71  W A Bit-plane x pointer (Low 15 bits)
+
BPLxPTL + 71  W A Bit-plane x pointer (Low 15 bits)<br>
 
 
 
This pair of registers contains the 18 bit pointer to the
 
This pair of registers contains the 18 bit pointer to the
Line 182: Line 186:
 
must be reinitialized by the processor or coprocessor
 
must be reinitialized by the processor or coprocessor
 
to point to the beginning of bit-plane data every vertical
 
to point to the beginning of bit-plane data every vertical
blank time.
+
blank time.<br>
BPLxDAT & 88 W D Bit-plane x data (Parallel to serial convert)
+
BPLxDAT & 88 W D Bit-plane x data (Parallel to serial convert)<br>
  
 
These registers receive the DMA data fetched from RAM
 
These registers receive the DMA data fetched from RAM
Line 191: Line 195:
 
They are loaded by the display bit-plane DMA controller
 
They are loaded by the display bit-plane DMA controller
 
with data from 6 separate areas of memory. They output to
 
with data from 6 separate areas of memory. They output to
the display most sig. bit first (left to right) simultaneously.
+
the display most sig. bit first (left to right) simultaneously.<br>
BPL1MOD  84 W A Bit-plane modulo (odd planes)
+
BPL1MOD  84 W A Bit-plane modulo (odd planes)<br>
BPL2MOD  85 W A Bit-plane modulo (even planes)
+
BPL2MOD  85 W A Bit-plane modulo (even planes)<br>
  
 
These registers contain the Modulos for the odd and even
 
These registers contain the Modulos for the odd and even
Line 201: Line 205:
 
Since they have separate Modulos, the odd and even
 
Since they have separate Modulos, the odd and even
 
bit-planes may have sizes that are different from each
 
bit-planes may have sizes that are different from each
other, as well as different from the Display Window size.
+
other, as well as different from the Display Window size.<br>
BPLCON0 80 W A D Bit-plane control reg. (misc. control bits)
+
BPLCON0 80 W A D Bit-plane control reg. (misc. control bits)<br>
BPLCON1 81 W    D Bit-plane control reg. (horiz. scroll control)
+
BPLCON1 81 W    D Bit-plane control reg. (horiz. scroll control)<br>
BPLCON2 82 W    D Bit-plane control reg. (video priority control)
+
BPLCON2 82 W    D Bit-plane control reg. (video priority control)<br>
  
These registers control the operation of the bit-planes
+
These registers control the operation of the bit-planes<br>
and various aspects of the display.
+
and various aspects of the display.<br>
BIT# BPLCON0 BPLCON1 BPLCON2
+
BIT# BPLCON0 BPLCON1 BPLCON2<br>
----- ----------- ----------- -----------
+
----- ----------- ----------- -----------<br>
15 HIRES X X
+
15 HIRES X X<br>
14 BPU2 X X
+
14 BPU2 X X<br>
13 BPU1 X X
+
13 BPU1 X X<br>
12 BPU0 X X
+
12 BPU0 X X<br>
11 HOMOD X X
+
11 HOMOD X X<br>
10 DBPPF X X
+
10 DBPPF X X<br>
09 COLOR X X
+
09 COLOR X X<br>
08 RGB X X
+
08 RGB X X<br>
07 X PF2H3 X
+
07 X PF2H3 X<br>
06 X PF2H2 PF2PRI
+
06 X PF2H2 PF2PRI<br>
05 X PF2H1 PF2P2
+
05 X PF2H1 PF2P2<br>
04 X PF2H0 PF2P1
+
04 X PF2H0 PF2P1<br>
03 LPEN PH1H3 PF2P0
+
03 LPEN PH1H3 PF2P0<br>
02 LACE PH1H2 PF2P1
+
02 LACE PH1H2 PF2P1<br>
01 ERSY PF1H1 PF2P1
+
01 ERSY PF1H1 PF2P1<br>
00 X PF1H0 PF2P0
+
00 X PF1H0 PF2P0<br>
  
HIRES = High resolution (640) mode
+
HIRES = High resolution (640) mode<br>
BPU = Bit-plane use code 000-110 (NONE through 6 inclusive)
+
BPU = Bit-plane use code 000-110 (NONE through 6 inclusive)<br>
HOMOD = Hold and Modify mode
+
HOMOD = Hold and Modify mode<br>
DBLPF = Double playfield (PF1 = odd  PF2 = even bit-planes)
+
DBLPF = Double playfield (PF1 = odd  PF2 = even bit-planes)<br>
COLOR = Composite video COLOR enable
+
COLOR = Composite video COLOR enable<br>
RGB = Red/Blue/Green enable bit
+
RGB = Red/Blue/Green enable bit<br>
LPEN = Light pen enable (reset on power up)
+
LPEN = Light pen enable (reset on power up)<br>
LACE = Interlace enable (reset on power up)
+
LACE = Interlace enable (reset on power up)<br>
ERSY = External Resync (HSYNC, VSYNC pads become inputs)
+
ERSY = External Resync (HSYNC, VSYNC pads become inputs)<br>
(reset on power up)
+
(reset on power up)<br>
PF2PRI = Playfield 2 (even planes) has priority over
+
PF2PRI = Playfield 2 (even planes) has priority over<br>
(appears in front of) Playfield 1 (odd planes)
+
(appears in front of) Playfield 1 (odd planes)<br>
PF2P = Playfield 2 priority mode (with resp. to sprites)
+
PF2P = Playfield 2 priority mode (with resp. to sprites)<br>
PF1P = Playfield 1 priority mode (with resp. to sprites)
+
PF1P = Playfield 1 priority mode (with resp. to sprites)<br>
PF2H = Playfield 2 horizontal scroll code
+
PF2H = Playfield 2 horizontal scroll code<br>
PF1H = Playfield 1 horizontal scroll code
+
PF1H = Playfield 1 horizontal scroll code<br>
CLXCON 4C W D        Collision control
+
CLXCON 4C W D        Collision control<br>
 
 
This register controls which bit-planes are included (enabled)
+
This register controls which bit-planes are included (enabled)<br>
                                 in collision detection, and their required state if included.
+
                                 in collision detection, and their required state if included.<br>
                                 It also controls the individual inclusion of odd numbered
+
                                 It also controls the individual inclusion of odd numbered<br>
                                 sprites in the collision detection, by logically ORing them
+
                                 sprites in the collision detection, by logically ORing them<br>
                                 with their corresponding even numbered sprite.
+
                                 with their corresponding even numbered sprite.<br>
                                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.
 
*07 R D                Collision data reg. (Read and clear)
 
                                This address reads (and clears) the collision
 
                                detection register. _he bit assignments are below.
 
  
                                NOTE: Playfield 1 is all odd numbered enabled bit-planes
+
                                 BIT#  FUNCTION  DESCRIPTION<br>
                                              Playfield 2 is all even numbered enabled bit-planes
+
                                 -----  ------------   ----------------<br>
                                 BIT#  COLLISIONS REGISTERED
+
                                 15     ENSP7          Enable Sprite 7 (ORed with Sprite 6)<br>
                                 -----  ------------------------------------
+
                                 14     ENSP5          Enable Sprite 5 (ORed with Sprite 4)<br>
                                 15       not used
+
                                 13     ENSP3          Enable Sprite 3 (ORed with Sprite 2)<br>
                                 14       Sprite 4 (or 5) to Sprite 6 (or 7)
+
                                 12     ENSP1          Enable Sprite 1 (ORed with Sprite 0)<br>
                                 13       Sprite 2 (or 3) to Sprite 6 (or 7)
+
                                 11     ENBP6          Enable Bit-Plane 6 (Match reqd. for collision)<br>
                                 12       Sprite 2 (or 3) to Sprite 4 (or 5)
+
                                 10     ENBP5          Enable Bit-Plane 5 (Match reqd. for collision)<br>
                                 11       Sprite 0 (or 1) to Sprite 6 (or 7)
+
                                 09     ENBP4          Enable Bit-Plane 4 (Match reqd. for collision)<br>
                                 10       Sprite 0 (or 1) to Sprite 4 (or 5)
+
                                 08     ENBP3          Enable Bit-Plane 3 (Match reqd. for collision)<br>
                                 09       Sprite 0 (or 1) to Sprite 2 (or 3)
+
                                 07     ENBP2          Enable Bit-Plane 2 (Match reqd. for collision)<br>
                                 08       Playfield 2 to Sprite 6 (or 7)
+
                                 06     ENBP1          Enable Bit-Plane 1 (Match reqd. for collision)<br>
                                 07       Playfield 2 to Sprite 4 (or 5)
+
                                 05     MVBP6          Match Value for Bit-Plane 6 collision<br>
                                 06       Playfield 2 to Sprite 2 (or 3)
+
                                 04     MVBP5          Match Value for Bit-Plane 5 collision<br>
                                 05       Playfield 2 to Sprite 0 (or 1)
+
                                 03     MVBP4          Match Value for Bit-Plane 4 collision<br>
                                 04       Playfield 1 to Sprite 6 (or 7)
+
                                 02     MVBP3          Match Value for Bit-Plane 3 collision<br>
                                 03       Playfield 1 to Sprite 4 (or 5)
+
                                 01     MVBP2          Match Value for Bit-Plane 2 collision<br>
                                 02       Playfield 1 to Sprite 2 (or 3)
+
                                00      MVBP1          Match Value for Bit-Plane 1 collision<br>
                                 01       Playfield 1 to Sprite 0 (or 1)
+
                                          Note: Disabled Bit-Planes cannot prevent collisions.<br>
                                 00      Playfield 1 to Playfield 2
+
                                          Therefore if all bit-planes are disabled, collisions<br>
COLORxx C0 W D          Color table xx
+
                                          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>
  
                                There are 32 of these registers (xx = 00-31) and they
+
                                NOTE: Playfield 1 is all odd numbered enabled bit-planes<br>
                                are sometimes collectivel_ called the "Color Palette".
+
                                              Playfield 2 is all even numbered enabled bit-planes<br>
                                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
+
                                 BIT# COLLISIONS REGISTERED<br>
                                the Coprocessor to access the Blitter hardware. This
+
                                 -----   ------------------------------------<br>
                                bit is cleared by power on reset, so that the
+
                                15      not used<br>
                                Coprocessor cannot access the Blitter hardware.
+
                                14      Sprite 4 (or 5) to Sprite 6 (or 7)<br>
                                 BIT#   NAME    FUNCTION
+
                                13      Sprite 2 (or 3) to Sprite 6 (or 7)<br>
                                 -----     -------     --------------------
+
                                12      Sprite 2 (or 3) to Sprite 4 (or 5)<br>
                                 01       CDANG  Coprocessor danger mode. Allows coprocessor
+
                                11      Sprite 0 (or 1) to Sprite 6 (or 7)<br>
                                                              access to Blitter if true.
+
                                10      Sprite 0 (or 1) to Sprite 4 (or 5)<br>
COPJMP1 44 S A              Coprocessor restart at first location
+
                                09      Sprite 0 (or 1) to Sprite 2 (or 3)<br>
COPJMP2 45 S A              Coprocessor restart at second location
+
                                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>
  
                              These addresses are strobe addresses, that when written to
+
                                There are 32 of these registers (xx = 00-31) and they<br>
                              cause the Coprocessor to jump indirect using the address
+
                                are sometimes collectively called the "Color Palette".<br>
                              contained in the First or Second Location registers
+
                                They contain 12-bit codes representing<br>
                              described below. The Coprocessor itself can write to these
+
                                RED, GREEN, BLUE colors for RGB systems.<br>
                              addresses, causing its own jump indirect.
+
                                One of these registers at a time is selected<br>
COP1LCH + 40 W A          Coprocessor first location reg. (High 3 bits)
+
                                (by the BPLxDAT serialized video code)<br>
COP1LCL + 41 W A            Coprocessor first location reg. (Low 15 bits)
+
                                for presentation at the RGB video output pins.<br>
COP2LCH + 42 W A          Coprocessor second location reg. (High 3 bits)
+
                                The table below shows the color register bit usage.<br>
COP2LCL + 43 W A            Coprocessor second location reg. (Low 15 bits)                             
 
  
                                 These registers contain the jump addresses described above.
+
                                BIT#  15, 14, 13, 12    11, 10, 09, 08    07, 06, 05, 04    03, 02, 01, 00<br>
COPINS 46 W A Coprocessor inst. fetch identify
+
                                -----  ---------------    --------------      ---------------    ---------------<br>
This is a dummy address that is generated by the Coprocessor
+
                                RGB  X    X    X    X      R3  R2  R1  R0  G3  G2  G1  G0  B3  B2  B1  B0<br>
whenever it is loading instructions into its own instruction
+
                                B=blue, G=green, R=red<br>
register. This actually occurs every Coprocessor cycle except
+
                                BE=blue enable, GE=green enable, RE=red enable<br>
for the second (IR2) cycle of the MOVE instruction. The three
+
COPCON *17 W A          Coprocessor control register<br>
types of instructions are shown below.
+
 
MOVE Move immediate to dest.
+
                                This is a 1-bit register that when set true, allows<br>
WAIT Wait until beam counter is equal to, or greater than.
+
                                the Coprocessor to access the Blitter hardware. This<br>
(keeps Coprocessor off of bus until beam position
+
                                bit is cleared by power on reset, so that the<br>
has been reached)
+
                                Coprocessor cannot access the Blitter hardware.<br>
SKIP Skip if beam counter is equal to, or greater than.
+
 
(skips following MOVE isnt. unless beam position
+
                                BIT#    NAME    FUNCTION<br>
has been reached)
+
                                -----    -------    --------------------<br>
MOVE WAIT UNTIL SKIP IF
+
                                01        CDANG  Coprocessor danger mode. Allows coprocessor<br>
-------------- --------------- ------------- BIT# IR1 IR2 IR1 IR2 IR1 IR2
+
                                                              access to Blitter if true.<br>
----- ---- ---- ---- ----- ---- ----
+
COPJMP1 44 S A              Coprocessor restart at first location<br>
15 X RD15 VP7 BFD * VP7 BFD *
+
COPJMP2 45 S A              Coprocessor restart at second location<br>
14 X RD14 VP6 VE6 VP6 VE6
+
 
13 X RD13 VP5 VE5 VP5 VE5
+
                              These addresses are strobe addresses, that when written to<br>
12 X RD12 VP4 VE4 VP4 VE4
+
                              cause the Coprocessor to jump indirect using the address<br>
11 X RD11 VP3 VE3 VP3 VE3
+
                              contained in the First or Second Location registers<br>
10 X RD10 VP2 VE2 VP2 VE2
+
                              described below. The Coprocessor itself can write to these<br>
09 X RD09 VP1 VE1 VP1 VE1
+
                              addresses, causing its own jump indirect.<br>
08 DA8 RD08 VP0 VE0 VP0 VE0
+
COP1LCH + 40 W A          Coprocessor first location reg. (High 3 bits)<br>
07 DA7 RD07 HP8 HE8 HP8 HE8
+
COP1LCL + 41 W A            Coprocessor first location reg. (Low 15 bits)<br>
06 DA6 RD06 HP7 HE7 HP7 HE7
+
COP2LCH + 42 W A          Coprocessor second location reg. (High 3 bits)<br>
05 DA5 RD05 HP6 HE6 HP6 HE6
+
COP2LCL + 43 W A            Coprocessor second location reg. (Low 15 bits)<br>                             
04 DA4 RD04 HP5 HE5 HP5 HE5
+
 
03 DA3 RD03 HP4 HE4 HP4 HE4
+
                                 These registers contain the jump addresses described above.<br>
02 DA2 RD02 HP3 HE3 HP3 HE3
+
COPINS 46 W A Coprocessor inst. fetch identify<br>
01 DA1 RD01 HP2 HE2 HP2 HE2
+
This is a dummy address that is generated by the Coprocessor<br>
00 0 RD00 1 0 1 1
+
whenever it is loading instructions into its own instruction<br>
IR1 = First instruction register.
+
register. This actually occurs every Coprocessor cycle except<br>
IR2 = Second instruction register.
+
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>
 +
IR2 = Second instruction register.<br>
 
DA = Destination Address for MOVE instruction. Fetched during
 
DA = Destination Address for MOVE instruction. Fetched during
                          IR1 time, used during IR2 time on RGA bus.
+
                          IR1 time, used during IR2 time on RGA bus.<br>
RD = RAM Data moved by MOVE instruction at IR2 time.
+
RD = RAM Data moved by MOVE instruction at IR2 time.<br>
          directly from RAM to the address given by the DA field.
+
          directly from RAM to the address given by the DA field.<br>
VP = Vertical Beam Position comparison bit.
+
VP = Vertical Beam Position comparison bit.<br>
HP = Horizontal Beam Position comparison bit.
+
HP = Horizontal Beam Position comparison bit.<br>
VE = Enable comparison (mask bit).
+
VE = Enable comparison (mask bit).<br>
HE = Enable comparison (mask bit).
+
HE = Enable comparison (mask bit).<br>
 
* NOTE    BFD  = Blitter Finished Disable. When this bit is true,
 
* NOTE    BFD  = Blitter Finished Disable. When this bit is true,
 
  the Blitter Finished flag will have no
 
  the Blitter Finished flag will have no
Line 383: Line 394:
 
before the Coprocessor can exit from its wait
 
before the Coprocessor can exit from its wait
 
state, or skip over an instruction. Note that the V7
 
state, or skip over an instruction. Note that the V7
comparison cannot be masked.
+
comparison cannot be masked.<br>
 
The Coprocessor is basically a 2 cycle machine that requests
 
The Coprocessor is basically a 2 cycle machine that requests
 
the bus only during odd memory cycles. (4 memory cycles per ins.)
 
the bus only during odd memory cycles. (4 memory cycles per ins.)
Line 404: Line 415:
 
and its jump strobe address hit, after power up but before
 
and its jump strobe address hit, after power up but before
 
Coprocessor DMA is initialized. This insures a determined
 
Coprocessor DMA is initialized. This insures a determined
startup address, and state.
+
startup address, and state.<br>
DIWSTRT 47 W A Display Window Start (upper left vert-hor pos)
+
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)
+
DIWSTOP 48 W A Display Window Stop (lower right vert-hor pos)<br>
 
These registers control the Display window size and position
 
These registers control the Display window size and position
by locating the upper left and lower right corners.
+
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
+
 
----- ------------------------------------------------------------------
+
BIT# 15, 14, 13, 12, 11, 10, 09, 08, 07, 06, 05, 04, 03, 02, 01, 00<br>
USE V7 V6 V5 V4 V3 V2 V1 V0 H7 H6 H5 H4 H3 H2 H1 H0
+
----- ------------------------------------------------------------------<br>
DIWSTRT is vertically restricted to the upper 2/3
+
USE V7 V6 V5 V4 V3 V2 V1 V0 H7 H6 H5 H4 H3 H2 H1 H0<br>
 +
 
 +
DIWSTRT is vertically restricted to the upper 2/3<br>
 
of the display (V8 = 0), and horizontally  restricted to the
 
of the display (V8 = 0), and horizontally  restricted to the
left 3/4 of the display (H8 = 0).
+
left 3/4 of the display (H8 = 0).<br>
DIWSTOP is vertically restricted to the lower 1/2
+
DIWSTOP is vertically restricted to the lower 1/2<br>
 
of the display (V8 = / = V7), and horizontally restricted to the
 
of the display (V8 = / = V7), and horizontally restricted to the
right 1/4 of the display (H8 = 1).
+
right 1/4 of the display (H8 = 1).<br>
DDFSTRT 49 W A Display data fetch start (Horiz. Position)
+
DDFSTRT 49 W A Display data fetch start (Horiz. Position)<br>
DDFSTOP 4A W A Display data fetch stop (Horiz. Position)
+
DDFSTOP 4A W A Display data fetch stop (Horiz. Position)<br>
 +
 
 
These registers control the horizontal timing of the
 
These registers control the horizontal timing of the
 
beginning and end of the bit-plane DMA display data fetch.
 
beginning and end of the bit-plane DMA display data fetch.
 
The vertical bit-plane DMA timing is identical to the display
 
The vertical bit-plane DMA timing is identical to the display
 
windows described above.
 
windows described above.
The bit-plane modulos are dependent on the bit-plane
+
The bit-plane Modulos are dependent on the bit-plane
horizontal size, and on ths data fetch window size.
+
horizontal size, and on the data fetch window size.<br>
Register bit assignment
+
 
-----------------------------
+
Register bit assignment<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
+
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
 
(X bits should always be driven with 0 to maintain
upward compatibility)
+
upward compatibility)<br>
 
The tables below show the start and stop timing for  
 
The tables below show the start and stop timing for  
different register contents.
+
different register contents.<br>
DDFSTRT (Left edge of display data fetch)
+
DDFSTRT (Left edge of display data fetch)<br>
------------------------------------------------------------------
+
------------------------------------------------------------------<br>
PURPOSE H8, H7, H6, H5, H4
+
PURPOSE H8, H7, H6, H5, H4<br>
------------------------ ----------------------
+
------------------------ ----------------------<br>
Extra wide (max) * 0    0    1    0    1
+
Extra wide (max) * 0    0    1    0    1<br>
wide 0    0    1    1    0
+
wide 0    0    1    1    0<br>
normal 0    0    1    1    1
+
normal 0    0    1    1    1<br>
narrow 0    1    0    0    0
+
narrow 0    1    0    0    0<br>
DDFSTOP (Right edge of display data fetch)
+
DDFSTOP (Right edge of display data fetch)<br>
---------------------------------------------------------
+
---------------------------------------------------------<br>
PURPOSE H8, H7, H6, H5, H4
+
PURPOSE H8, H7, H6, H5, H4<br>
----------------------- ----------------------
+
----------------------- ----------------------<br>
narrow 1    1    0    0    1
+
narrow 1    1    0    0    1<br>
normal 1    1    0    1    0
+
normal 1    1    0    1    0<br>
wide (max) 1    1    0    1    1
+
wide (max) 1    1    0    1    1<br>
DMACON 4B W A D P DMA control write (clear or set)
+
DMACON 4B W A D P DMA control write (clear or set)<br>
DMACONR *01 R A    P DMA control (and Blitter status) read
+
DMACONR *01 R A    P DMA control (and Blitter status) read<br>
 
This register controls all of the DMA channels, and contains
 
This register controls all of the DMA channels, and contains
Blitter DMA status bits.
+
Blitter DMA status bits.<br>
BIT# FUNCTION DESCRIPTION
+
BIT# FUNCTION DESCRIPTION<br>
----- ------------- ----------------------------------------------
+
----- ------------- ----------------------------------------------<br>
 
15 SET/CLR Set/Clear control bit. Determines if bits
 
15 SET/CLR Set/Clear control bit. Determines if bits
written with a 1 get set or cleared.
+
written with a 1 get set or cleared.<br>
Bits written with a 0 are unchanged.
+
Bits written with a 0 are unchanged.<br>
14 BBUSY Blitter busy status bit (read only).
+
14 BBUSY Blitter busy status bit (read only).<br>
13 BZERO Blitter logic zero status bit (read only).
+
13 BZERO Blitter logic zero status bit (read only).<br>
12 X
+
12 X<br>
11 X
+
11 X<br>
10 BLTPRI Blitter DMA priority (over CPU Micro)
+
10 BLTPRI Blitter DMA priority (over CPU Micro)<br>
(also called "Blitter Nasty")
+
(also called "Blitter Nasty")<br>
 
(disables /BLS pin, preventing Micro
 
(disables /BLS pin, preventing Micro
 
from stealing any bus cycles while
 
from stealing any bus cycles while
Blitter DMA is running)
+
Blitter DMA is running)<br>
09 DMAEN Enable all DMA below
+
09 DMAEN Enable all DMA below<br>
08 BPLEN Bit-plane DMA enable
+
08 BPLEN Bit-plane DMA enable<br>
07 COPEN Coprocessor DMA enable
+
07 COPEN Coprocessor DMA enable<br>
06 BLTEN Blitter DMA enable
+
06 BLTEN Blitter DMA enable<br>
05 SPREN Sprite DMA enable
+
05 SPREN Sprite DMA enable<br>
04 DSKEN Disk DMA enable
+
04 DSKEN Disk DMA enable<br>
03 AUD3EN Audio channel 3 DMA enable
+
03 AUD3EN Audio channel 3 DMA enable<br>
02 AUD2EN Audio channel 2 DMA enable
+
02 AUD2EN Audio channel 2 DMA enable<br>
01 AUD1EN Audio channel 1 DMA enable
+
01 AUD1EN Audio channel 1 DMA enable<br>
00 AUD0EN Audio channel 0 DMA enable
+
00 AUD0EN Audio channel 0 DMA enable<br>
DSKPTH + * 10 W A Disk pointer (High 3 bits)
+
DSKPTH + * 10 W A Disk pointer (High 3 bits)<br>
DSKPTL +  * 11 W A Disk pointer (Low 15 bits)
+
DSKPTL +  * 11 W A Disk pointer (Low 15 bits)<br>
 
This pair of registers contain the 18-bit address
 
This pair of registers contain the 18-bit address
 
of Disk DMA data. These address registers must
 
of Disk DMA data. These address registers must
 
be initialized by the processor or Coprocessor
 
be initialized by the processor or Coprocessor
before disk DMA is enabled.
+
before disk DMA is enabled.<br>
DSKLEN * 12 W P Disk length
+
DSKLEN * 12 W P Disk length<br>
 
This register contains the length (number of words) of
 
This register contains the length (number of words) of
 
Disk DMA data. It also contains 2 control bits. These
 
Disk DMA data. It also contains 2 control bits. These
are a DMA enable bit, and a DMA direction (read/write) bit.
+
are a DMA enable bit, and a DMA direction (read/write) bit.<br>
BIT#
+
 
----- ---------- ----------------------------------------
+
BIT#<br>
15 DMAEN Disk DMA Enable
+
----- ---------- ----------------------------------------<br>
14 WRITE Disk Write (RAM to Disk) if 1
+
15 DMAEN Disk DMA Enable<br>
13-0 LENGTH Length (# of words) of DMA data
+
14 WRITE Disk Write (RAM to Disk) if 1<br>
DSKDAT & *13 W P Disk DMA Data write
+
13-0 LENGTH Length (# of words) of DMA data<br>
DSKDATR &*04 ER P Disk DMA Data read (early read dummy address)
+
DSKDAT & *13 W P Disk DMA Data write<br>
 +
DSKDATR &*04 ER P Disk DMA Data read (early read dummy address)<br>
 
This register is the Disk DMA data buffer. It contains 2
 
This register is the Disk DMA data buffer. It contains 2
 
bytes of data that are either sent to (write) or received
 
bytes of data that are either sent to (write) or received
Line 500: Line 516:
 
transfers data to or from this register and RAM, and when
 
transfers data to or from this register and RAM, and when
 
the DMA data is finished (Length = 0), it causes a Disk
 
the DMA data is finished (Length = 0), it causes a Disk
Block Interrupt. See interrupts below.
+
Block Interrupt. See interrupts below.<br>
 
DSKBYTR *0D R P Disk Data byte and status read
 
DSKBYTR *0D R P Disk Data byte and status read
 
This register is the Disk Microprocessor data buffer.
 
This register is the Disk Microprocessor data buffer.
Line 508: Line 524:
 
in bit 15 of this address to allow simultaneous reading
 
in bit 15 of this address to allow simultaneous reading
 
and polling. The interrupt bit must be cleared however by
 
and polling. The interrupt bit must be cleared however by
writing to the INTREQ register.
+
writing to the INTREQ register.<br>
BIT#
+
 
-----
+
BIT#<br>
15 DSKBYT Disk byte ready (reset on read)
+
-----<br>
14 DMAON (disk)
+
15 DSKBYT Disk byte ready (reset on read)<br>
13 DISKWRITE
+
14 DMAON (disk)<br>
12 WORDEQUAL (from disk sync circuit)
+
13 DISKWRITE<br>
11-08 X Not used
+
12 WORDEQUAL (from disk sync circuit)<br>
07-00 DATA Disk byte data
+
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
 
DSKSYNC 3F R P Disk sync register, holds the code for disk
read synchronization. See ADKCON bit 10.
+
read synchronization. See ADKCON bit 10.<br>
INTREQ 4E W P Interrupt Request bits (clear or set)
+
INTREQ 4E W P Interrupt Request bits (clear or set)<br>
INTREQR *0F R P Interrupt Request bits (read)
+
INTREQR *0F R P Interrupt Request bits (read)<br>
 
This register contains interrupt request bits (or flags).
 
This register contains interrupt request bits (or flags).
 
These bits may be polled by the processor, and if enabled
 
These bits may be polled by the processor, and if enabled
Line 526: Line 543:
 
processor interrupts. Both a set and clear operation
 
processor interrupts. Both a set and clear operation
 
are required to load arbitrary data into this register.
 
are required to load arbitrary data into this register.
The bit assignments are identical to the Enable register below.
+
The bit assignments are identical to the Enable register below.<br>
INTENA 4D W P Interrupt Enable bits (clear or set bits)
+
INTENA 4D W P Interrupt Enable bits (clear or set bits)<br>
INTENAR *0E R P Interrupt Enable bits read
+
INTENAR *0E R P Interrupt Enable bits read<br>
 
This register contains interrupt enable bits. The bit
 
This register contains interrupt enable bits. The bit
 
assignments for both the request and enable registers
 
assignments for both the request and enable registers
are given below.
+
are given below.<br>
BIT# FUNCT LEVEL DESCRIPTION
+
 
----- -------- ------- -----------------------------------------------
+
BIT# FUNCT LEVEL DESCRIPTION<br>
15 SET/CLR Set/Clear control bit. Determinesd if bits
+
----- -------- ------- -----------------------------------------------<br>
 +
15 SET/CLR Set/Clear control bit. Determines if bits<br>
 
written with a 1 get set or cleared. Bits
 
written with a 1 get set or cleared. Bits
written with a 0 are always unchanged.
+
written with a 0 are always unchanged.<br>
14 INTEN Master interrupt (enable only, no request)
+
14 INTEN Master interrupt (enable only, no request)<br>
13 EXTER 6 External interrupt
+
13 EXTER 6 External interrupt<br>
12 DSKBYT 5 Disk Byte ready (disk sync)
+
12 DSKBYT 5 Disk Byte ready (disk sync)<br>
11 RBF 5 Serial port Receive Buffer Full
+
11 RBF 5 Serial port Receive Buffer Full<br>
10 AUD3 4 Audio channel 3 block finished
+
10 AUD3 4 Audio channel 3 block finished<br>
09 AUD2 4 Audio channel 2 block finished
+
09 AUD2 4 Audio channel 2 block finished<br>
08 AUD1 4 Audio channel 1 block finished
+
08 AUD1 4 Audio channel 1 block finished<br>
07 AUD0 4 Audio channel 0 block finished
+
07 AUD0 4 Audio channel 0 block finished<br>
06 BLIT 3 Blitter finished
+
06 BLIT 3 Blitter finished<br>
05 VERTB 3 Start of Vertical blank
+
05 VERTB 3 Start of Vertical blank<br>
04 COPER 3 Coprocessor
+
04 COPER 3 Coprocessor<br>
03 PORTS 2 I/O Ports and timers
+
03 PORTS 2 I/O Ports and timers<br>
02 OVRUN 1 Serial port receiver overrun
+
02 OVRUN 1 Serial port receiver overrun<br>
01 DSKBLK 1 Disk Block finished
+
01 DSKBLK 1 Disk Block finished<br>
00 TBE 1 Serial port Transmit Buffer Empty
+
00 TBE 1 Serial port Transmit Buffer Empty<br>
JOY0DAT *05 R D Joystick-mouse 0 data (left vert, horiz)
+
JOY0DAT *05 R D Joystick-mouse 0 data (left vert, horiz)<br>
JOY1DAT *06 R D Joystick-mouse 1 data (right vert, horiz)
+
JOY1DAT *06 R D Joystick-mouse 1 data (right vert, horiz)<br>
 
These addresses each read a pair of 8-bit mouse counters.
 
These addresses each read a pair of 8-bit mouse counters.
 
0 = left controller pair, 1 = right controller pair.
 
0 = left controller pair, 1 = right controller pair.
Line 561: Line 579:
 
read to determine the state of these 2 clock pins. This allows
 
read to determine the state of these 2 clock pins. This allows
 
these pins to double as joystick switch inputs.
 
these pins to double as joystick switch inputs.
 +
 
Mouse counter usage (pins 1-3 = Yclock, pins 2-4 = Xclock)
 
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
+
 
----- -------------------------------- --------------------------------
+
BIT# 15, 14, 13, 12, 11, 10, 09, 08 07, 06, 05, 04, 03, 02, 01, 00<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
+
0DAT Y7  Y6  Y5  Y4  Y3  Y2  Y1  Y0 X7  X6  X5  X4  X3  X2  X1  X0<br>
Joystick switch usage
+
1DAT Y7  Y6  Y5  Y4  Y3  Y2  Y1  Y0 X7  X6  X5  X4  X3  X2  X1  X0<br>
To detect these read these
+
Joystick switch usage<br>
Directions Pin# counter bits
+
To detect these read these<br>
------------- ------ -------------------
+
 
Forward 1 Y1 xor Y0 (BIT# 09 xor BIT# 08)
+
Directions Pin# counter bits<br>
Left 3 Y1
+
------------- ------ -------------------<br>
Back 2 X1 xor X0 (BIT# 01 xor BIT#00)
+
Forward 1 Y1 xor Y0 (BIT# 09 xor BIT# 08)<br>
Right 4 X1
+
Left 3 Y1<br>
 +
Back 2 X1 xor X0 (BIT# 01 xor BIT#00)<br>
 +
Right 4 X1<br>
 
JOYTEST *1B W D Write to all 4 Joystick-mouse counters at once.
 
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
+
Mouse counter write test data.<br>
------------------------------------ PORTIA
+
BIT# 15, 14, 13, 12, 11, 10, 09, 08 07, 06, 05, 04, 03, 02, 01, 00<br>
loc. dir. sym. pin pin
+
----- -------------------------------- --------------------------------<br>
----- ---- ------ ---- ---------
+
0DAT Y7  Y6  Y5  Y4  Y3  Y2  xx  xx X7  X6  X5  X4  X3  X2  X1  X0<br>
RIGHT Y RY 9 33
+
1DAT Y7  Y6  Y5  Y4  Y3  Y2  xx  xx X7  X6  X5  X4  X3  X2  X1  X0<br>
RIGHT X RX 5 32
+
 
LEFT Y LY 9 36
+
CONNECTORS<br>
LEFT X LX 5 35
+
------------------------------------ PORTIA<br>
 +
loc. dir. sym. pin pin<br>
 +
----- ---- ------ ---- ---------<br>
 +
RIGHT Y RY 9 33<br>
 +
RIGHT X RX 5 32<br>
 +
LEFT Y LY 9 36<br>
 +
LEFT X LX 5 35<br>
 
POTGO *1A W P Pot Port (4-bit) Direction and Data,
 
POTGO *1A W P Pot Port (4-bit) Direction and Data,
and Pot Counter start.
+
and Pot Counter start.<br>
POTINP *0B R P Pot pin data read
+
POTINP *0B R P Pot pin data read<br>
 
This register controls a 4-bit bi-directional I/O port
 
This register controls a 4-bit bi-directional I/O port
that shares the same 4 pins as the 4 pot counters above.
+
that shares the same 4 pins as the 4 pot counters above.<br>
BIT# FUNCT DESCRIPTION
+
 
----- -------- ---------------------------------------------------
+
BIT# FUNCT DESCRIPTION<br>
15 OUTRY Output enable for Portia pin 33
+
----- -------- ---------------------------------------------------<br>
14 DATRY I/O data Portia pin 33
+
15 OUTRY Output enable for Portia pin 33<br>
13 OUTRX Output enable for Portia pin 32
+
14 DATRY I/O data Portia pin 33<br>
12 DATRX I/O data Portia pin 32
+
13 OUTRX Output enable for Portia pin 32<br>
11 OUTLY Output enable for Portia pin 36
+
12 DATRX I/O data Portia pin 32<br>
10 DATLY I/O data Portia pin 36
+
11 OUTLY Output enable for Portia pin 36<br>
09 OUTLX Output enable for Portia pin 35
+
10 DATLY I/O data Portia pin 36<br>
08 DATLX I/O data Portia pin 35
+
09 OUTLX Output enable for Portia pin 35<br>
07-01 X not used
+
08 DATLX I/O data Portia pin 35<br>
00 START Start pots (dump capacitors, start counters)
+
07-01 X not used<br>
REFPTR & * 14 W A Refresh pointer
+
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
 
This register is used as a Dynamic RAM refresh address
 
generator. It is writable for test purposes only, and
 
generator. It is writable for test purposes only, and
should never be written by the microprocessor.
+
should never be written by the microprocessor.<br>
 
SERDAT *18 W P Serial Port Data and stop bits write
 
SERDAT *18 W P Serial Port Data and stop bits write
 
This address writes data to a Transmit data buffer.
 
This address writes data to a Transmit data buffer.
Line 616: Line 639:
 
Interrupt Request TBE (transmit buffer empty). A stop bit
 
Interrupt Request TBE (transmit buffer empty). A stop bit
 
must be provided as part of the data word. The length
 
must be provided as part of the data word. The length
of the data word is set by the position of the stop bit.
+
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
+
 
----- -------------------------------- --------------------------------
+
BIT# 15, 14, 13, 12, 11, 10, 09, 08 07, 06, 05, 04, 03, 02, 01, 00<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
+
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
 
SERDATR *0C R P Serial Port Data and Status read
 
This address reads data from a Receive data buffer.
 
This address reads data from a Receive data buffer.
 
Data in this buffer is loaded from a receiving shift register
 
Data in this buffer is loaded from a receiving shift register
 
whenever it is full. Several interrupt request bits are also
 
whenever it is full. Several interrupt request bits are also
read at this address, along with the data, as shown below.
+
read at this address, along with the data, as shown below.<br>
BIT#
+
 
-----
+
BIT#<br>
15 OVRUN Serial port receiver overrun
+
-----<br>
14 RBF Serial port Receive Buffer Full (mirror)
+
15 OVRUN Serial port receiver overrun<br>
13 TBE Serial port Transmit Buffer Empty (mirror)
+
14 RBF Serial port Receive Buffer Full (mirror)<br>
12 TSRE Serial port Transmit shift reg. empty
+
13 TBE Serial port Transmit Buffer Empty (mirror)<br>
 +
12 TSRE Serial port Transmit shift reg. empty<br>
 
11 RXD RXD pin receives UART serial data for direct
 
11 RXD RXD pin receives UART serial data for direct
bit test by the micro
+
bit test by the micro<br>
10 x Not used
+
10 x Not used<br>
09 STP Stop bit
+
09 STP Stop bit<br>
08 STP-DB8 Stop bit if LONG, Data bit if not
+
08 STP-DB8 Stop bit if LONG, Data bit if not<br>
07 DB7 Data bit
+
07 DB7 Data bit<br>
06 DB6 Data bit
+
06 DB6 Data bit<br>
05 DB5 Data bit
+
05 DB5 Data bit<br>
04 DB4 Data bit
+
04 DB4 Data bit<br>
03 DB3 Data bit
+
03 DB3 Data bit<br>
02 DB2 Data bit
+
02 DB2 Data bit<br>
01 DB1 Data bit
+
01 DB1 Data bit<br>
00 DB0 Data bit
+
00 DB0 Data bit<br>
SERPER *19 W P Serial Port Period and control
+
SERPER *19 W P Serial Port Period and control<br>
 
This register contains the control bit LONG referred to
 
This register contains the control bit LONG referred to
 
above, and a 15-bit number defining the serial port
 
above, and a 15-bit number defining the serial port
 
Baud Rate. If this number is N, then the Baud Rate is
 
Baud Rate. If this number is N, then the Baud Rate is
1 bit every (N+1) * .2794 Microseconds.
+
1 bit every (N+1) * .2794 Microseconds.<br>
BIT#
+
 
-----
+
BIT#<br>
15 LONG Defines Serial Receive as 9-bit word.
+
-----<br>
14-00 RATE Defines Baud Rate = 1/(N+1) * .2794 microsec.
+
15 LONG Defines Serial Receive as 9-bit word.<br>
SPRxPTH + 90 W A Sprite x pointer (High 3 bits)
+
14-00 RATE Defines Baud Rate = 1/(N+1) * .2794 microsec.<br>
SPRxPTL + 91 W A Sprite x pointer (Low 15 bits)
+
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
 
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
 
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
 
registers must be initialized by the processor or Coprocessor
every vertical blank time.
+
every vertical blank time.<br>
SPRxPOS % A0 W A D Sprite x Vert-Horiz start position data
+
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
+
SPRxCTL  % A1 W A D Sprite x Vert stop position and control data<br>
 
These 2 registers work together as position, size and
 
These 2 registers work together as position, size and
 
feature Sprite control registers. They are usually loaded
 
feature Sprite control registers. They are usually loaded
 
by the Sprite DMA channel during horizontal blank,
 
by the Sprite DMA channel during horizontal blank,
however they may be loaded by either processor any time.
+
however they may be loaded by either processor any time.<br>
SPRxPOS register'
+
 
BIT# SYM FUNCTION
+
SPRxPOS register<br>
----- ----- --------------------------------------
+
 
 +
BIT# SYM FUNCTION<br>
 +
----- ----- --------------------------------------<br>
 
15-08 SV7-SV0    Start vertical value. High bit (SV8) is
 
15-08 SV7-SV0    Start vertical value. High bit (SV8) is
    in SPRxCTL reg below.
+
    in SPRxCTL reg below.<br>
 
07-00 SH8-SH1    Start horizontal value. Low bit (SH0) is
 
07-00 SH8-SH1    Start horizontal value. Low bit (SH0) is
    in SPRxCTL reg below.
+
    in SPRxCTL reg below.<br>
 +
 
 
SPRxCTL register    (writing this address disables sprite
 
SPRxCTL register    (writing this address disables sprite
        horizontal comparator circuit)
+
        horizontal comparator circuit)<br>
BIT# SYM FUNCTION
+
 
----- ----- ---------------------------------------
+
BIT# SYM FUNCTION<br>
15-08 EV7-EV0    End (stop) vert value, low 8 bits
+
----- ----- ---------------------------------------<br>
07 ATT     Sprite attach control bit (odd sprites)
+
15-08 EV7-EV0    End (stop) vert value, low 8 bits<br>
06-04 X     Not used
+
07 ATT     Sprite attach control bit (odd sprites)<br>
02 SVB     Start vert. value high bit
+
06-04 X     Not used<br>
01 EVB     End (stop) vert. value high bit
+
02 SVB     Start vert. value high bit<br>
00 SH0     Start horiz. value low bit
+
01 EVB     End (stop) vert. value high bit<br>
SPRxDATA % A2 W D Sprite x image data register A
+
00 SH0     Start horiz. value low bit<br>
SPRxDATB % A3 W D Sprite x image data register B
+
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
 
These registers buffer the Sprite image data. They are
 
usually loaded by the Sprite DMA channel but may be
 
usually loaded by the Sprite DMA channel but may be
Line 694: Line 724:
 
If enabled, data in the A and B buffers will be output
 
If enabled, data in the A and B buffers will be output
 
whenever the beam counter equals the sprite horiztonal
 
whenever the beam counter equals the sprite horiztonal
position value in the SPRxPOS register.
+
position value in the SPRxPOS register.<br>
STREQU & *1C S D Strobe for horiz sync with VB and EQU
+
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)
+
STRVBL &  *1D S D Strobe for horiz sync with VB (Vert. Blank)<br>
STRHOR & *1E S D P Strobe for horiz sync
+
STRHOR & *1E S D P Strobe for horiz sync<br>
STRLONG & *1F S D Strobe for the identification of long horiz line.
+
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  
 
One of the first 3 strobe addresses above is places on the  
 
dest. addr. bus during the first refresh time slot.
 
dest. addr. bus during the first refresh time slot.
Line 705: Line 735:
 
lines with long counts (228). There are 4 referesh time
 
lines with long counts (228). There are 4 referesh time
 
slots, and any not used for strobes will leave a null
 
slots, and any not used for strobes will leave a null
(FF) address on the dest. addr. bus.
+
(FF) address on the dest. addr. bus.<br>
VPOSR *02 R A Read Vert most sig. bit (and frame flop)
+
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)
+
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
+
 
----- ------------------------------------------------------------------
+
BIT# 15, 14, 13, 12, 11, 10, 09, 08, 07, 06, 05, 04, 03, 02, 01, 00<br>
USE LOF -- -- -- -- -- -- -- -- -- -- -- -- -- -- V8
+
----- ------------------------------------------------------------------<br>
LOF = Long frame (auto toggle control bit in BPLCON0)
+
USE LOF -- -- -- -- -- -- -- -- -- -- -- -- -- -- V8<br>
VHPOSR *03 R A Read Vert and Horiz position of beam
+
LOF = Long frame (auto toggle control bit in BPLCON0)<br>
VHPOSW *16 W A Write Vert and Horiz position of beam
+
VHPOSR *03 R A Read Vert and Horiz position of beam<br>
BIT# 15, 14, 13, 12, 11, 10, 09, 08, 07, 06, 05, 04, 03, 02, 01, 00
+
VHPOSW *16 W A Write Vert and Horiz position of beam<br>
----- ------------------------------------------------------------------
+
 
USE V7  V6  V5  V4  V3  V2  V1  V0  H8  H7  H6  H5  H4  H3  H2  H1
+
BIT# 15, 14, 13, 12, 11, 10, 09, 08, 07, 06, 05, 04, 03, 02, 01, 00<br>
 +
----- ------------------------------------------------------------------<br>
 +
USE V7  V6  V5  V4  V3  V2  V1  V0  H8  H7  H6  H5  H4  H3  H2  H1<br>
 
RESOLUTION = 1/160 OF SCREEN WIDTH (280 NS)
 
RESOLUTION = 1/160 OF SCREEN WIDTH (280 NS)
 
  
 
== Appendix B - REGISTER NAMES ==
 
== Appendix B - REGISTER NAMES ==

Revision as of 22:41, 27 August 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 CODE PRECOMP VALUE
------- -----------------------
00 none
01 140 ns
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, not zeros)
05-00 Sets one of 64 levels (000000=no output
(111111=63 ones, one zero)
AUDxDAT & 55 W P 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 Blitter first word mask for source A
BLTALWM *23 W A Blitter 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 PF2P1
01 ERSY PF1H1 PF2P1
00 X PF1H0 PF2P0

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.
  • 07 R D Collision data reg. (Read and clear)
                               This address reads (and clears) the collision
detection register. _he 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 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)

                                	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.

Register bit assignment
-----------------------------
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.
Bits written with a 0 are unchanged.
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)
(also called "Blitter Nasty")
(disables /BLS pin, preventing Micro from stealing any bus cycles while Blitter DMA is running)
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
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 (right 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 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
----- -------------------------------- --------------------------------
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 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 horiztonal 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 referesh 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 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 transfter 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 E R 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 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)

Appendix D - SYSTEM MEMORY MAP AND SPECIAL CHIP ADDRESSES

Appendix E - PORT CONNECTORS AND SIGNALS

Appendix F - 6526 PERIPHERAL INTERFACE ADAPTERS