Copy Link
Add to Bookmark
Report
ATARI - FALCON - HARDWARE - REGISTERS
****************************************************************************
* *
* *
* ===================================================================== *
* A T A R I - F A L C O N - H A R D W A R E - R E G I S T E R S *
* ===================================================================== *
* *
* *
* T R Y O F D O C U M E N T A T I O N B Y *
* *
* A E O N & C H R I S *
* *
* O F A U R A *
* *
* VERSION 0.4 (11.04.93) *
* *
* FIRST OFFICIAL RELEASE *
* *
****************************************************************************
For any questions and donations write to:
AURA
PLK 019200 C
W-7600 OFFENBURG
GERMANY
If you have found some new things about the hardware just contact us.
Don't forget to include international reply coupons if you expect an
answer.
Remember:
Donations will force us to release more informations about the hardware.
signing: AEON/CHRIS OF AURA
----------------------------------------------------------------------------
******: seems to be unused
new : new FALCON-adresses
new<==: perhaps new FALCON registers
<=====: new FALCON registers
****************************************************************************
I D E - P O R T ( F A L C O N )
****************************************************************************
$FFF00000 [R/W] :$?? <=====
: : :
: : :
$FFF0003F [R/W] :$?? <=====
****************************************************************************
M E M O R Y - M A N A G E M E N T ( S T )
****************************************************************************
$FFFF8000 [R/W] :$8F ******
$FFFF8001 [R/W] :$00 Memory-Configuration
****************************************************************************
? ? ?
****************************************************************************
$FFFF8006 [R/W] :$56 76______................................Monitor-Type Hi
||
00 --------- SM124 and compatible
01 --------- SC1435 and compatible
10 --------- VGA and SYNC-monitors
11 --------- TV
$FFFF8007 [R/W] :$65 <=====
$FFFF800C [R/W] :$8F ******
$FFFF800D [R/W] :$00 <=====
****************************************************************************
V I D E O - S Y S T E M ( F A L C O N )
****************************************************************************
$FFFF8200 [R/W] :$8F ******
$FFFF8201 [R/W] :$3F Video-Address Hi
$FFFF8202 [R/W] :$8F ******
$FFFF8203 [R/W] :$82 Video-Address Mi
$FFFF8204 [R/W] :$8F ******
$FFFF8205 [R/W] :$3F Video-Address-Counter Hi
$FFFF8206 [R/W] :$8F ******
$FFFF8207 [R/W] :$AB Video-Address-Counter Mi
$FFFF8208 [R/W] :$8F ******
$FFFF8209 [R/W] :$D2 Video-Address-Counter Lo
$FFFF820A [R/W] :$02 ______10 ..................................... Syncmode
||
|+----- 1: external clock
| 0: internal clock
+------ set to one (ex-50/60 Hz-Bit)
$FFFF820B [R/W] :$00 ******
$FFFF820C [R/W] :$8F ******
$FFFF820D [R/W] :$00 Video-Address Lo
$FFFF820E [R/W] :$00 _______0 ................................. Line-Wide Hi
$FFFF820F [R/W] :$00 76543210 ................................. Line-Wide Lo
This register is used to configure the
worddistanz from the end of one to the
beginning of the next graphic line.
Example: $0050 adds 80 words (160 bytes) after
every line to the Videoaddress.
$FFFF8210 [R/W] :$00 ______10 ............................. Vertical-Wrap Hi
$FFFF8211 [R/W] :$50 76543210 ..............................Vertical-Wrap Lo
This register is used to configure the
wordlengh of one graphic line.
Example: ST-Low : $0050= 80 words
256 Colors/640x200: $0140=320 words
True-Color/320x400: $0140=320 words
$FFFF8212 [R/W] :$8F ******
: : : :
: : : :
$FFFF823F [R/W] :$6A ******
$FFFF8240 [R/W] :$0F ST Color $00 Hi
$FFFF8241 [R/W] :$0F Lo
$FFFF8242 [R/W] :$0F ST Color $01 Hi
$FFFF8243 [R/W] :$0F Lo
$FFFF8244 [R/W] :$00 ST Color $02 Hi
$FFFF8245 [R/W] :$00 Lo
$FFFF8246 [R/W] :$00 ST Color $03 Hi
$FFFF8247 [R/W] :$00 Lo
$FFFF8248 [R/W] :$00 ST Color $04 Hi
$FFFF8249 [R/W] :$00 Lo
$FFFF824A [R/W] :$0F ST Color $05 Hi
$FFFF824B [R/W] :$0F Lo
$FFFF824C [R/W] :$00 ST Color $06 Hi
$FFFF824D [R/W] :$00 Lo
$FFFF824E [R/W] :$0D ST Color $07 Hi
$FFFF824F [R/W] :$0D Lo
$FFFF8250 [R/W] :$04 ST Color $08 Hi
$FFFF8251 [R/W] :$04 Lo
$FFFF8252 [R/W] :$05 ST Color $09 Hi
$FFFF8253 [R/W] :$05 Lo
$FFFF8254 [R/W] :$00 ST Color $0A Hi
$FFFF8255 [R/W] :$00 Lo
$FFFF8256 [R/W] :$05 ST Color $0B Hi
$FFFF8257 [R/W] :$05 Lo
$FFFF8258 [R/W] :$00 ST Color $0C Hi
$FFFF8259 [R/W] :$00 Lo
$FFFF825A [R/W] :$05 ST Color $0D Hi
$FFFF825B [R/W] :$05 Lo
$FFFF825C [R/W] :$00 ST Color $0E Hi
$FFFF825D [R/W] :$00 Lo
$FFFF825E [R/W] :$00 ST Color $0F Hi
$FFFF825F [R/W] :$00 Lo
$FFFF8260 [R/W] :$01 ______10 ..................................... ST-Shift
||
00---- ST-Lowres
01---- ST-Medres
10---- ST-Highres
11---- not defined
$FFFF8261 [R/W] :$00 ******
$FFFF8262 [R/W] :$00 ******
$FFFF8263 [R/W] :$00 ******
$FFFF8264 [R/W] :$00 ________ ..........................Horizontal-Scroll Hi
$FFFF8265 [R/W] :$00 ____3210 ..........................Horizontal-Scroll Lo
||||
++++---- 0-15: left shifted pixel
$FFFF8266 [R/W] :$00 _____2_0 .............................. Falcon-Shift Hi
| |
| +---- 1: True-color mode
+------ 1: 2-color mode
$FFFF8267 [R/W] :$00 _654____ ...............................Falcon-Shift Lo
|||
||+-------- 1: 256-color mode
|+--------- 0: internal vertical sync
| 1: external vertical sync
+---------- 0: internal horizontal sync
1: external horizontal sync
$FFFF8268 [R/W] :$00 ******
: : : :
: : : :
$FFFF827F [R/W] :$00 ******
$FFFF8280 [R/W] :$00 ______10 ................... Horizontal-hold-counter Hi
$FFFF8281 [R/W] :$0F 76543210 ................... Horizontal-hold-counter Lo
You can only read this register.
$FFFF8282 [R/W] :$00 ______10 ..................... Horizontal-hold-timer Hi
$FFFF8283 [R/W] :$00 76543210 ..................... Horizontal-hold-timer Lo
$FFFF8284 [R/W] :$00 ______10 ................... Horizontal-border-begin Hi
$FFFF8285 [R/W] :$00 76543210 ................... Horizontal-border-begin Lo
$FFFF8286 [R/W] :$00 ______10 ..................... Horizontal-border-end Hi
$FFFF8287 [R/W] :$00 76543210 ..................... Horizontal-border-end Lo
$FFFF8288 [R/W] :$02 ______10 .................. Horizontal-display-begin Hi
$FFFF8289 [R/W] :$02 76543210 .................. Horizontal-display-begin Lo
$FFFF828A [R/W] :$00 ______10 .................... Horizontal-display-end Hi
$FFFF828B [R/W] :$00 76543210 .................... Horizontal-display-end Lo
$FFFF828C [R/W] :$00 ______10 ............................. Horizontal-SS Hi
$FFFF828D [R/W] :$00 76543210 ............................. Horizontal-SS Lo
$FFFF828E [R/W] :$00 _______0 ............................. Horizontal-FS Hi
$FFFF828F [R/W] :$00 76543210 ............................. Horizontal-FS Lo
$FFFF8290 [R/W] :$00 _______0 ............................. Horizontal-HH Hi
$FFFF8291 [R/W] :$00 76543210 ............................. Horizontal-HH Lo
$FFFF8292 [R/W] :$00 ******
: : : :
: : : :
$FFFF829F [R/W] :$00 ******
$FFFF82A0 [R/W] :$01 _____210 ................. Vertical-frequenz-counter Hi
$FFFF82A1 [R/W] :$9C 76543210 ................. Vertical-freuqenz-counter Lo
You can only read this register.
$FFFF82A2 [R/W] :$02 _____210 ................... Vertical-frequenz-timer Hi
$FFFF82A3 [R/W] :$02 76543210 ................... Vertical-frequenz-timer Lo
$FFFF82A4 [R/W] :$02 _____210 ..................... Vertical-border-begin Hi
$FFFF82A5 [R/W] :$02 76543210 ..................... Vertical-border-begin Lo
$FFFF82A6 [R/W] :$00 _____210 ....................... Vertical-border-end Hi
$FFFF82A7 [R/W] :$00 76543210 ....................... Vertical-border-end Lo
$FFFF82A8 [R/W] :$00 _____210 .................... Vertical-display-begin Hi
$FFFF82A9 [R/W] :$00 76543210 .....................Vertical-display-begin Lo
$FFFF82AA [R/W] :$01 _____210 .......................Vertical-display-end Hi
$FFFF82AB [R/W] :$01 76543210 .......................Vertical-display-end Lo
$FFFF82AC [R/W] :$02 _____210 ................................Vertical-SS Hi
$FFFF82AD [R/W] :$02 76543210 ................................Vertical-SS Lo
$FFFF82AE [R/W] :$00 ******
: : : :
: : : :
$FFFF82BF [R/W] :$00 ******
$FFFF82C0 [R/W] :$00 <===== Hi
$FFFF82C1 [R/W] :$00 <===== Lo
$FFFF82C2 [R/W] :$00 ________ ............................. Video-Control Hi
$FFFF82C3 [R/W] :$00 _____21_ ............................. Video-Control Lo
||
|+----- 1: interlace on
+------ 0: 320 pixel horizontal
1: 640 pixel horizontal
****************************************************************************
D M A / D I S K - C O N T R O L L E R ( S T )
****************************************************************************
$FFFF8604 [R/W] :$00A0 FDC / Sektor Count
$FFFF8606 [R/-] :$0001 DMA Status
[-/W] :$0001 DMA Mode
$FFFF8608 [R/W] :$00 ******
$FFFF8609 [R/-] :$00 Count Hi
[-/W] :$00 DMA Base Hi
$FFFF860A [R/W] :$00 ******
$FFFF860B [R/-] :$20 Count Mi
[-/W] :$20 DMA Base Mi
$FFFF860C [R/W] :$00 ******
$FFFF860D [R/-] :$C6 Count Lo
[-/W] :$C6 DMA Base Lo
$FFFF860E [R/W] :$00 <=====
$FFFF860F [R/W] :$80 <=====
****************************************************************************
P S G - S O U N D C H I P AY-3-8910 ( S T )
****************************************************************************
$FFFF8800 [R/-] :$67 Read Data
[-/W] :$67 Register Selection
$FFFF8801 [R/W] :$FF ******
$FFFF8802 [R/W] :$CF Write Data
$FFFF8803 [R/W] :$FF ******
NOTE: The PSG-Registers are now fixed at 2 addresses($8800.w/$8802.w).
Accessing the shadowregisters ($8804.w-$8900.w) cause a buserror.
****************************************************************************
P C M - S O U N D C H I P ( C O D E C )
****************************************************************************
$FFFF8900 [R/W] :$05 ____3210 ......................... Sound-DMA-Control Hi
||||
|||| MFP-IRQ-7
||00---- no request
||01---- after playing a frame
||10---- after recording a frame
||11---- after playing or recording a frame
||
|| Timer-A-Request
00------ no request
01------ after playing a frame
10------ after recording a frame
11------ after playing or recording a frame
$FFFF8901 [R/W] :$00 7_54__10 ......................... Sound-DMA-Control Lo
| || ||
| || |+---- 1: DMA-Play enable
| || +----- 1: DMA-Play frame repeat
| |+-------- 1: DMA-Record enable
| +--------- 1: DMA-Record frame repeat
+----------- 0: select playframe-adresses
1: select recordfame-adresses
..................................Frame-Addresses
$FFFF8902 [R/W] :$00 ******
$FFFF8903 [R/W] :$01 Frame-Start-Address Hi
$FFFF8904 [R/W] :$00 ******
$FFFF8905 [R/W] :$29 Frame-Start-Address Mi
$FFFF8906 [R/W] :$00 ******
$FFFF8907 [R/W] :$9C Frame-Start-Address Lo
$FFFF8908 [R/W] :$00 ******
$FFFF8909 [R/W] :$01 Frame-Address-Counter Hi
$FFFF890A [R/W] :$00 ******
$FFFF890B [R/W] :$29 Frame-Address-Counter Mi
$FFFF890C [R/W] :$00 ******
$FFFF890D [R/W] :$9C Frame-Address-Counter Lo
$FFFF890E [R/W] :$00 ******
$FFFF890F [R/W] :$02 Frame-End-Address Hi
$FFFF8910 [R/W] :$00 ******
$FFFF8911 [R/W] :$B0 Frame-End-Address Mi
$FFFF8912 [R/W] :$00 ******
$FFFF8913 [R/W] :$3C Frame-End-Address Lo
HOW to access the play/record-frame:
You have to set bit 7 of $8901.w to select play- or record-shadowregister,
then access the frame-begin/end-registers! The play- and record-shadow-
register are two seperate registers; they appear only at the same
addresses!
$FFFF8920 [R/W] :$00 __54__10 ........................... Track-Play-Control
|| ||
|| 00---- play 1 track
|| 01---- play 2 tracks
|| 10---- play 3 tracks
|| 11---- play 4 tracks
00 ------- connect track 1 with speaker
01 ------- connect track 2 with speaker
10 ------- connect track 3 with speaker
11 ------- connect track 4 with speaker
$FFFF8921 [R/W] :$03 76____10 ........................... Sound-Mode-Control
|| ||
|| 00---- nute condition (on STE: 6258 Hz)
|| 01---- 12517 HZ
|| 10---- 25033 HZ
|| 11---- 50066 HZ
|+---------- 0: 8 Bit
| 1: 16 Bit
+----------- 0: Stereo
1: Mono
Nice to know: The samplerate 6258 Hz was repleaced by a nute condition.
You can use it to deactivate the DMA-Transfer.
$FFFF8922 [R/-] :$00 not accessed by the XBIOS.
$FFFF8923 [R/-] :$00 The FALCON has no
$FFFF8924 [R/-] :$00 Microwire-
$FFFF8925 [R/-] :$00 Interface!!
$FFFF8930 [R/W] :$01 76543210 ......... Sound-Source-Device-Prescale-Mode Hi
||||||||
|||||||| Source-Device: EXT-INP
|||||||+---- 1: Handshaking off
|||||++----- Source-Clock
||||+------- set to zero
||||
|||| Source-Device: A/D-Converter
|||+-------- set to zero
||+--------- 0: internal 25.175 MHz-Clock
|| 1: extermal Clock
++---------- set to zero
$FFFF8931 [R/W] :$11 76543210 ......... Sound-Source-Device-Prescale-Mode Lo
||||||||
|||||||| Source-Device: DMA-PLAY
|||||||+---- 1: Handshaking off
|||||++----- Source-Clock
||||+------- 0: if handshaking on and destination=
|||| DSP-REC
|||| 1: if destination<>DSP-REC
|||| (this allows a automatic transfer from
|||| (memory to DSP without errors.)
||||
|||| Source-Device: DSP-XMIT
|||+-------- 1: Handshaking off
|++--------- Source-Clock
+----------- 0: Tristate, disconnect DSP from Multi-
plexer (only if you want to use the
external SSI-Port)
1: connect DSP with Multiplexer
Source-Clock can be : %00: internal 25.175 MHz-Clock
%01: external Clock
%10: intermal 32 MHz-Clock,do not use it for the
CODEC (A/D- and D/A-Converter).
%11: not defined
$FFFF8932 [R/W] :$00 76543210 ........... Sound-Destination-Device-Matrix Hi
||||||||
|||||||| Source-Device for destination: EXT-OUT
|||||||+---- 1: Handshaking off
|||||++----- Source-Device
||||+------- set to zero
||||
|||| Source-Device for destination: DAC
|||+-------- set to zero
|++--------- Source-Device
+----------- set to zero
$FFFF8933 [R/W] :$00 76543210 ........... Sound-Destination-Device-Matrix Lo
||||||||
|||||||| Source-Device for destination: DMA-REC
|||||||+---- 1: Handshaking off
|||||++----- Source-Device
||||+------- 0: if handshaking on and source=DSP-XMIT
|||| 1: if source<>DSP-XMIT
|||| (this modus allows a automatic transfer
|||| from DSP to memory without errors.)
||||
|||| Source-Device for destination: DSP-REC
|||+-------- 1: Handshaking off
|++--------- Source-Device
+----------- 0: Tristate, disconnect DSP from Multi-
plexer (only if you want to use the
external SSI-Port)
1: connect DSP with Multiplexer
Source-Device can be: %00: DMA-PLAY
%01: DSP-XMIT (DSP send data)
%10: EXT-INP (External Input)
%11: A/D-Converter
$FFFF8934 [R/W] :$00 ____3210 ...................... Prescale external Clock
||||
++++---- 0: switch to STE-compatible mode
1-15: Clock devided by 256, devided by
prescalevalue+1.
Documentation only allows values between
0 and 15, but the XBIOS allows values
between 0 and 255. The upper nibble is
cut by the hardware.
$FFFF8935 [R/W] :$01 ____3210 ... Prescale internal Clock (25.175 or 32 MHz)
||||
++++---- look above! According to the
|||| Documentation you can only use the
|||| following values for the CODEC(A/D- and
|||| D/A-Converter): 0,1,2,3,4,5,7,9,11
0000---- switch to STE-compatible mode
0001---- CLK50K 49170 Hz
0010---- CLK33K 32780 Hz
0011---- CLK25K 24585 Hz
0100---- CLK20K 19668 Hz
0101---- CLK16K 16390 Hz
0110---- CLK14K 14049 Hz (invalid for CODEC)
0111---- CLK12K 12292 Hz
1000---- CLK11K 10927 Hz (invalid for CODEC)
1001---- CLK10K 9834 Hz
1010---- CLK09K 8940 Hz (invalid for CODEC)
1011---- CLK08K 8195 Hz
1100---- CLK07K 7565 Hz (invalid for CODEC)
1101---- CLK07K 7024 Hz (invalid for CODEC)
1110---- CLK06K 6556 Hz (invalid for CODEC)
1111---- CLK06K 6146 HZ (invalid for CODEC)
$FFFF8936 [R/W] :$00 ______10 ......................... Track-Record-Control
||
00---- record 1 track
01---- record 2 tracks
10---- record 3 tracks
11---- record 4 tracks
$FFFF8937 [R/W] :$03 ______10 .................... CODEC-Hardwareadder-Input
|| (ADDRIN-register)
|| Source-input of the 16-bit-hardwareadder
||
|+---- 1: input from A/D-Converter
+----- 1: input from Multiplexer
NOTE: The CODEC-Hardwareadder-Input connects the D/A-Converter with the
multiplexer or the A/D-Converter. It is also possible to connect both.
In this case the 16-bit-Hardwareadder mix the two signals.
$FFFF8938 [R/W] :$03 ______10 .......................... A/D-Converter-Input
|| (ADCINPUT-register)
|+---- 0: input from right mic-channel
| 1: input from right PSG-channel
+----- 0: input from left mic-channel
1: input from left PSG-channel
$FFFF8939 [R/W] :$88 76543210 ..... Channel-Input-Amplifier in +1.5 dB steps
|||||||| (GAIN-register)
||||||||
||||++++---- 0-15: Gain right channel (RTGAIN)
++++-------- 0-15: Gain of left channel (LTGAIN)
$FFFF893A [R/W] :$07 ____3210 . Channel-Output-Amplifier in -1.5 dB-steps Hi
|||| (ATTEN-register)
||||
++++---- 0-15: Attenuation of feft channal(LTATTEN)
$FFFF893B [R/W] :$70 7654____ ........................................... Lo
||||
++++------- 0-15: Attenuation of right channel(RTATTEN)
$FFFF893C [R/W] :$64 ______10 .............................. CODEC-Status Hi
||
|+---- 1: right channel-overflow
+----- 1: left channel-overflow
$FFFF893D [R/W] :$00 7654____ .............................. CODEC-Status Lo
||||
|||+------ ?
||+------- ?
|+-------- ?
+--------- ?
$FFFF893E [R/W] :$81 not accessed
$FFFF893F [R/W] :$00 by the XBIOS
$FFFF8940 [R/W] :$00 <===== Hi
$FFFF8941 [R/W] :$00 _____210 ..............................GPx-Dataportpath
|||
+++---- bidirectional Dataportpath of the GP0-
GP2-Pins on the DSP-Connector
0: Pin set to Input (read data from GPx)
1: Pin set to Output (write data to GPx)
(normally %111)
$FFFF8942 [R/W] :$00 <===== Hi
$FFFF8943 [R/W] :$07 _____210 ................................. GPx-Dataport
|||
+++---- Input/Output-Data-Bits of the
GP0-GP2-Pins on the DSP-Connector. This
Pins can be used for userdef. operations.
****************************************************************************
C L O C K - C H I P ( T T )
****************************************************************************
$FFFF8960 [R/W] :$DF ******
$FFFF8961 [R/W] :$FF Register Selection
$FFFF8962 [R/W] :$DF ******
$FFFF8963 [R/W] :$FF Data
****************************************************************************
B L I T T E R ( S T E )
****************************************************************************
$FFFF8A00 [R/W] :$FF Halftone RAM $00 Hi
$FFFF8A01 [R/W] :$FF Lo
$FFFF8A02 [R/W] :$FF Halftone RAM $01 Hi
$FFFF8A03 [R/W] :$FF Lo
$FFFF8A04 [R/W] :$FF Halftone RAM $02 Hi
$FFFF8A05 [R/W] :$FF Lo
$FFFF8A06 [R/W] :$FF Halftone RAM $03 Hi
$FFFF8A07 [R/W] :$FF Lo
$FFFF8A08 [R/W] :$FF Halftone RAM $04 Hi
$FFFF8A09 [R/W] :$FF Lo
$FFFF8A0A [R/W] :$FF Halftone RAM $05 Hi
$FFFF8A0B [R/W] :$FF Lo
$FFFF8A0C [R/W] :$FF Halftone RAM $06 Hi
$FFFF8A0D [R/W] :$FF Lo
$FFFF8A0E [R/W] :$FF Halftone RAM $07 Hi
$FFFF8A0F [R/W] :$FF Lo
$FFFF8A10 [R/W] :$FF Halftone RAM $08 Hi
$FFFF8A11 [R/W] :$FF Lo
$FFFF8A12 [R/W] :$FF Halftone RAM $09 Hi
$FFFF8A13 [R/W] :$FF Lo
$FFFF8A14 [R/W] :$FF Halftone RAM $0A Hi
$FFFF8A15 [R/W] :$FF Lo
$FFFF8A16 [R/W] :$FF Halftone RAM $0B Hi
$FFFF8A17 [R/W] :$FF Lo
$FFFF8A18 [R/W] :$FF Halftone RAM $0C Hi
$FFFF8A19 [R/W] :$FF Lo
$FFFF8A1A [R/W] :$FF Halftone RAM $0D Hi
$FFFF8A1B [R/W] :$FF Lo
$FFFF8A1C [R/W] :$FF Halftone RAM $0E Hi
$FFFF8A1D [R/W] :$FF Lo
$FFFF8A1E [R/W] :$FF Halftone RAM $0F Hi
$FFFF8A1F [R/W] :$FF Lo
$FFFF8A20 [R/W] :$00 Source-X-Increment Hi
$FFFF8A21 [R/W] :$00 Lo
$FFFF8A22 [R/W] :$FF Source-Y-Increment Hi
$FFFF8A23 [R/W] :$00 Lo
$FFFF8A24 [R/W] :$00 ******
$FFFF8A25 [R/W] :$E4 Source-Address Hi
$FFFF8A26 [R/W] :$89 Mi
$FFFF8A27 [R/W] :$6C Lo
$FFFF8A28 [R/W] :$FF End-Mask 1 Hi
$FFFF8A29 [R/W] :$FF Lo
$FFFF8A2A [R/W] :$FF End-Mask 2 Hi
$FFFF8A2B [R/W] :$FF Lo
$FFFF8A2C [R/W] :$FF End-Mask 3 Hi
$FFFF8A2D [R/W] :$FF Lo
$FFFF8A2E [R/W] :$00 Destination-X-Increment Hi
$FFFF8A2F [R/W] :$04 Lo
$FFFF8A30 [R/W] :$00 Destination-Y-Increment Hi
$FFFF8A31 [R/W] :$54 Lo
$FFFF8A32 [R/W] :$00 ******
$FFFF8A33 [R/W] :$3F Destination-Address Hi
$FFFF8A34 [R/W] :$FD Mi
$FFFF8A35 [R/W] :$EA Lo
$FFFF8A36 [R/W] :$00 X-Count Hi
$FFFF8A37 [R/W] :$14 Lo
$FFFF8A38 [R/W] :$00 Y-Count Hi
$FFFF8A39 [R/W] :$00 Lo
$FFFF8A3A [R/W] :$01 Halftone-Operation
$FFFF8A3B [R/W] :$03 Logic-Operation
$FFFF8A3C [R/W] :$06 Line-Number
$FFFF8A3D [R/W] :$00 Skew
$FFFF8A3E [R/W] :$FF ******
$FFFF8A3F [R/W] :$FF ******
****************************************************************************
S E R I A L - C O M M U N I C A T I O N S - C O N T R O L L E R ( T T )
****************************************************************************
$FFFF8C80 [R/W] :$9F ******
$FFFF8C81 [R/W] :$EC Register Selection Channel A
$FFFF8C82 [R/W] :$FF ******
$FFFF8C83 [R/W] :$FF Read / Write Data Channel A
$FFFF8C84 [R/W] :$8F ******
$FFFF8C85 [R/W] :$44 Register Selection Channel B
$FFFF8C86 [R/W] :$FF ******
$FFFF8C87 [R/W] :$FF Read / Write Data Channel B
****************************************************************************
J O Y S T I C K / L I G H T P E N - P O R T S ( S T E )
****************************************************************************
$FFFF9200 [R/W] :$BF Fire-Buttons 1-4 Hi
$FFFF9201 [R/W] :$FF Lo
$FFFF9202 [R/W] :$FF Joysticks 1-4 Hi
$FFFF9203 [R/W] :$FF Lo
$FFFF9210 [R/W] :$8F Position Paddle 0 Hi
$FFFF9211 [R/W] :$FF Lo
$FFFF9212 [R/W] :$8F Position Paddle 1 Hi
$FFFF9213 [R/W] :$FF Lo
$FFFF9214 [R/W] :$8F Position Paddle 2 Hi
$FFFF9215 [R/W] :$FF Lo
$FFFF9216 [R/W] :$8F Position Paddle 3 Hi
$FFFF9217 [R/W] :$FF Lo
$FFFF9220 [R/W] :$00 Lightpen X-Position Hi
$FFFF9221 [R/W] :$00 Lo
$FFFF9222 [R/W] :$00 Lightpen Y-Position Hi
$FFFF9223 [R/W] :$00 Lo
****************************************************************************
2 5 6 C O L O R - R E G I S T E R S ( F A L C O N )
****************************************************************************
$FFFF9800 [R/W] :$FC 765432__ ................................ Color $00 Red
||||||
++++++------ 0-63: Red
$FFFF9801 [R/W] :$FC 765432__ .............................. Color $00 Green
||||||
++++++------ 0-63: Green
$FFFF9802 [R/W] :$00 ******
$FFFF9803 [R/W] :$00 765432__ ............................... Color $00 Blue
||||||
++++++------ 0-63: Blue
$FFFF9804 [R/W] :$FC Color $01 Red
$FFFF9805 [R/W] :$FC Color $01 Green
$FFFF9806 [R/W] :$00 ******
$FFFF9807 [R/W] :$00 Color $01 Blue
: : : :
: : : :
: : : :
$FFFF9BFC [R/W] :$00 Color $FF Red
$FFFF9BFD [R/W] :$00 Color $FF Green
$FFFF9BFE [R/W] :$00 ******
$FFFF9BFF [R/W] :$00 Color $FF Blue
****************************************************************************
D S P - H O S T - I N T E R F A C E ( FA L C O N )
****************************************************************************
$FFFFA200 [R/W] :$00 76543_10 ........................ Host-Control-Register
||||| ||
||||| |+---- 1: enable 'DSP-had-send'-IRQ
||||| +----- 1: enable 'DSP-ready to receive'-IRQ
||||+------- Hf2-Bit, userdef. Infobit from DSP to Host
|||+-------- Hf3-Bit, userdef. Infobit from DSP to Host
+++--------- set to zero
$FFFFA201 [R/W] :$12 <=====
$FFFFA202 [R/W] :$06 _6543_10 ..........................Host-Status-Register
|||| ||
|||| |+---- 0: DSP busy
|||| | 1: DSP had send
|||| +----- 0: DSP busy
|||| 1: DSP ready to receive
|||+------- Hf0-Bit, userdef. Infobit from Host to DSP
||+-------- Hf1-Bit, userdef. Infobit from Host to DSP
++--------- set to zero
$FFFFA203 [R/W] :$0F <=====
$FFFFA204 [R/W] :$00 ________ ............................. I/O-Data-Path HH
$FFFFA205 [R/W] :$00 76543210 ............................. Hi
$FFFFA206 [R/W] :$00 76543210 ............................. Mi
$FFFFA207 [R/W] :$00 76543210 ............................. Lo
$03FC-$03FF : DSP-IRQ-vector. This vector is used for receiving
or/and sending data from/to the DSP in interrupt-
mode.
HOW to send datawords to DSP in handshaking-technic:
1. step: wait until DSP ready to receive ($A202.w Bit 1 turns to 1)
2. step: write data to $A204.w-$A207.w
3. step: if you want to send once again>> goto 1. step
Example: This routine corresponds to the DSP-XBIOS:
LEA BUFFER(PC),A0 ;Buffer with DSP-Words
MOVE.W #DSP_WORDS,D0 ;transfer max. 65535 DSP-Words
LOOP: BTST #0,$FFFFA202.W ;is DSP ready to receive?
BEQ.S LOOP
4 bytes: 'MOVE.L (A0)+,$FFFFA204.W ;transfer 4 bytes
;the highest byte will be ignored
;by the DSP
3 bytes: 'MOVE.B (A0)+,$FFFFA205.W ;transfer
MOVE.B (A0)+,$FFFFA206.W ;3 bytes
MOVE.B (A0)+,$FFFFA207.W ;(1 DSP-Word has 24 Bit)
2 bytes: 'MOVE.W (A0)+,D1 ;get 2 bytes
EXT.L D1 ;sign-extension
MOVE.W D1,$FFFFA204.W ;transfer 4 bytes
1 byte: 'MOVE.B #0,$FFFFA205.W ;transfer
MOVE.B #0,$FFFFA206.W ;1 byte
MOVE.B (A0)+,$FFFFA207.W
DBRA D0,LOOP
HOW to receive datawords from DSP in handshaking-technic:
1. step: wait until DSP had send ($A202.w Bit 0 turns to 1)
2. step: read data from $A204.w-$A207.w
3. step: if you want to receive once again >> goto 1. step
Example: This routine corresponds to the DSP-XBIOS
LEA BUFFER(PC),A0 ;Buffer with DSP-Words
MOVE.W #DSP_WORDS,D0 ;transfer max. 65535 DSP-Words
LOOP: BTST #1,$FFFFA202.W ;had DSP send?
BEQ.S LOOP
4 bytes: 'MOVE.L $FFFFA204.W,(A0)+ ;transfer 4 bytes
;the highest byte is zero
3 bytes: 'MOVE.B $FFFFA205.W,(A0)+ ;transfer
MOVE.B $FFFFA206.W,(A0)+ ;3 bytes
MOVE.B $FFFFA207.W,(A0)+ ;(1 DSP-Word has 24 Bit)
2 bytes: 'MOVE.B $FFFFA206.W,(A0)+ ;transfer
MOVE.W $FFFFA207.W,(A0)+ ;2 bytes
1 byte: 'MOVE.B $FFFFA206.W,D1 ;dummy-read, nobody knows why.
MOVE.B $FFFFA207.W,(A0)+ ;transfer 1 byte
DBRA D0,LOOP
NOTE: it is possible to skip the 1. step. This mode increases the
transfering-rate, but the DSP-program must be able to read the data
immediately, otherwhise the data will be overwritten by the next
one. It is important that the DSP is ready to transfer, therefor
execute the 1. step before transfering data!
(1. step > 2. step > 2. step > 2. step ......until end)
HOW to send datawords to DSP in interrupt-technic:
1. step: IRQ-Instalation in special order:
1.: write the IRQ-program-address in the DSP-IRQ-vector
2.: write register $A203.w with $FF
3.: set bit 1 of Host-Control-Register
now the DSP-IRQ is installed and enabled!
2. step: the style of the IRQ-vector-routine:
1.: read data from $A204.w-$A207.w
2.: end the IRQ-routine with a RTE
3. step: you have two possibilities to stop the IRQ-transfer:
1.: you clear bit 1 in the main program
2.: you clear bit 1 in the IRQ-program
HOW to receive datawords fron DSP in interrupt-technic:
1. step: IRQ-Instalation in special order:
1.: write the IRQ-program-address in the DSP-IRQ-vector
2.: write register $A203.w with $FF
3.: set bit 0 of Host-Control-Register
now the DSP-IRQ is installed and enabled!
2. step: the style of the IRQ-vector-routine:
1.: write data to $A204.w-$A207.w
2.: end the IRQ-routine with a RTE
3. step: you have two possibilities to stop the IRQ-transfer:
1.: you clear bit 0 in the main program
2.: you clear bit 0 in the IRQ-program
NOTE: You have only one exception for sending and receiving data. But
it is possible to send and receive data simultanously. In the IRQ-
program you have to test bit 0/1 of the Host-Status-Register to
get information about the transfering direction!
****************************************************************************
M U L T I - F U N C T I O N - P E R I P H E R A L MC 68901 ( S T )
****************************************************************************
$FFFFFA00 [R/-] :$8F ******
$FFFFFA01 [R/W] :$ED GPIP-Data
$FFFFFA02 [R/-] :$8F ******
$FFFFFA03 [R/W] :$04 Active-Edge
$FFFFFA04 [R/-] :$8F ******
$FFFFFA05 [R/W] :$00 Data-Direction
$FFFFFA06 [R/-] :$8F ******
$FFFFFA07 [R/W] :$DE Interrupt-Enable A
$FFFFFA08 [R/-] :$8F ******
$FFFFFA09 [R/W] :$64 Interrupt-Enable B
$FFFFFA0A [R/-] :$8F ******
$FFFFFA0B [R/W] :$02 Interrupt-Pending A
$FFFFFA0C [R/-] :$8F ******
$FFFFFA0D [R/W] :$60 Interrupt-Pending B
$FFFFFA0E [R/-] :$8F ******
$FFFFFA0F [R/W] :$00 Interrupt-In-Service A
$FFFFFA10 [R/-] :$8F ******
$FFFFFA11 [R/W] :$00 Interrupt-In-Service B
$FFFFFA12 [R/-] :$8F ******
$FFFFFA13 [R/W] :$5E Interrupt-Mask A
$FFFFFA14 [R/-] :$8F ******
$FFFFFA15 [R/W] :$64 Interrupt-Mask B
$FFFFFA16 [R/-] :$8F ******
$FFFFFA17 [R/W] :$48 Interrupt-Vektor
$FFFFFA18 [R/-] :$FF ******
$FFFFFA19 [R/W] :$00 Timer-A-Control
$FFFFFA1A [R/-] :$8F ******
$FFFFFA1B [R/W] :$00 Timer-B-Control
$FFFFFA1C [R/-] :$8F ******
$FFFFFA1D [R/W] :$51 Timer-C+D-Control
$FFFFFA1E [R/-] :$8F ******
$FFFFFA1F [R/W] :$00 Timer-A-Data
$FFFFFA20 [R/-] :$8F ******
$FFFFFA21 [R/W] :$FF Timer-B-Data
$FFFFFA22 [R/-] :$9F ******
$FFFFFA23 [R/W] :$AA Timer-C-Data
$FFFFFA24 [R/-] :$8F ******
$FFFFFA25 [R/W] :$02 Timer-D-Data
$FFFFFA26 [R/-] :$8F ******
$FFFFFA27 [R/W] :$00 Synchronous-Character
$FFFFFA28 [R/-] :$8F ******
$FFFFFA29 [R/W] :$88 USART-Control
$FFFFFA2A [R/-] :$8F ******
$FFFFFA2B [R/W] :$09 Receiver-Status
$FFFFFA2C [R/-] :$FF ******
$FFFFFA2D [R/W] :$85 Transmitter-Status
$FFFFFA2E [R/-] :$CF ******
$FFFFFA2F [R/W] :$FF USART-Data
****************************************************************************
K E Y B O A R D / M I D I - A C I A S 6850 ( S T )
****************************************************************************
$FFFFFC00 [R/-] :$83 Keyboard-Status
[-/W] :$83 Keyboard-Control
$FFFFFC01 [R/-] :$FF ******
$FFFFFC02 [R/-] :$9C Keyboard-Receive
[-/W] :$9C Keyboard-Send
$FFFFFC03 [R/-] :$FF ******
$FFFFFC04 [R/-] :$02 Midi-Status
[-/W] :$02 Midi-Control
$FFFFFC05 [R/-] :$FF ******
$FFFFFC06 [R/-] :$02 Midi-Receive
[-/W] :$02 Midi-Send
$FFFFFC07 [R/-] :$FF ******
****************************************************************************
? ? ? ? ? ?
****************************************************************************
$FFFFFF82 [R/-] :$1C new
$FFFFFF83 [R/-] :$00 new
******************************** END OF FILE *******************************