From kth.se!sunic!mcsun!sun4nl!alchemy!piet Wed Sep 2 19:46:40 1992 Newsgroups: comp.sys.atari.st Path: kth.se!sunic!mcsun!sun4nl!alchemy!piet From: piet@cs.ruu.nl (Piet van Oostrum) Subject: Re: The REAL Falcon specs wanted! Sender: network-news@cs.ruu.nl Message-ID: <1992Sep1.120211.6162@cs.ruu.nl> In-Reply-To: kjohnson@castor.cs.uga.edu (Kristopher Johnson) Date: Tue, 1 Sep 1992 12:02:11 GMT Reply-To: piet@cs.ruu.nl (Piet van Oostrum) References: <1992Aug31.123840.1064@ludd.luth.se> <1992Aug31.195705.18207@athena.cs.uga.edu> Organization: Dept of Computer Science, Utrecht University, The Netherlands Keywords: Falcon specs. Lines: 470 I found this file on the local ATARI Company's BBS : (original in Dutch) This article is written by Wilfred Kilwinger (Support Manager) for Atari Briefing, the newsletter by Atari (Benelux) B.V. for the Atari user groups. It was specifically stated that it could be reproduced. I have translated it in English with the assumption that an English translation would be considered the same as the original. The original also contained a description of all the features of the Falcon which have been reproduced here a zillion of times so I did not include these. ------------------------------------------------------------------------ Atari custom chips VIDEL The VIDEL takes care of the video functions of the system including overscan, overlay mode and true color graphics COMBEL The COMBEL is the system manager of the Atari Falcon030. This chip controls all system functions. Also the BLITTER is built in in this chip. SDMA The SDMA is the Sound DMA and controls the sound part. We have built in a unique matrix switch function in this chip (more details in the second part) KEYBOARD PROCESSOR The keyboard processor has been improved and is now also suitable for high resolution mice. Besides the above custom chips the Atari Falcon030 has a number of standard chips like the Motorola 68030 and 56001 DSP. Another important chip is the CODEC in which the 16 bit AD and DA converters are located. Video modi As you can see in the survey of Operating System calls the video hardware is complete sotware controllable. The following combinations can a.o. be chosen: Mode Resolution Bit planes Colors Palette ST LOW 320x200 4 16 4096 ST MED 640x200 2 4 4096 ST HIGH 640x400 1 2 4096 True Color 640x480 8 256 262144 320x200 15bpp 32768 N/A The last mode asks for some explanation. Here there is no color palette but 15 bits per pixel to describe the pixel itself. The format is RRRRRGGGGGXBBBBB. VDI supports this mode thus programs that have not been written for this mode specifically can use it nevertheless. X is the overlay bit and can be used for video titling and special effects. 320x200 16bpp 65 N/A This mode is called the slideshow mode, is not supported by the VDI, you are on you own. X is an extra green bit. True Color in 640x480 is not possible because of the bandwidth of VGA monitors. Mode Resolution Bit planes Colors Palette VGA 320 of 640 1,4,8 2,16,256 262144 (Overscan Video 200 of 400 With Video we mean the Atari SC-monitors, the TV modulator and/or the composite video output. All modes can be gegenlocked. With adaptors we convert the 15-pole video bus to thee standard Atari or VGA connections. |----| - - / \ / \ / \ | | -|--------|- Matrix coupling To make the system performance in the audio part as good as possible Atari designed a miniature 'telephone exchange' that can easily connect the source devices to the receiving devices. Also it is possible to make more than one connection at a time. Source devices EXT INPUT ---*-------*------*------* CHANNEL | | | | | | | | DSP ---*-------*------*------* TRANSMIT | | | | | | | | ADC ---*-------*------*------* | | | | | | | | DMA ---*-------*------*------* PLAYBACK | | | | DMA DAC DSP EXT OUTPUT RECORD RECEIVE CHANNEL Receiving Devices Ports andn interfacing DSP CONNECTOR (DB26 Female) Pin Signal Pin Signal 1 GP0 14 GND 2 GP1 15 SRD 3 GP2 16 GND 4 P_DATA 17 +12V 5 P_CLK 18 GND 6 P_SYNC 19 R_DATA 7 n/c 20 R_CLK 8 GND 21 R_SYNC 9 +12V 22 EXT_INT 10 GND 23 STD 11 SC0 24 SCK 12 SC1 25 GND 13 SC2 26 EXCLK SCSI CONNECTOR (flat 50 pins SCSI II Female) Pin Signal Pin Signal 1-10 GND 37 Not Connected 11 +5V 38 +5V 12-14 Not Connected 39 Not Connected 15-25 GND 40 GND 26 SCSI 0 41 ATN 27 SCSI 1 42 GND 28 SCSI 2 43 BSY 29 SCSI 3 44 ACK 30 SCSI 4 45 RST 31 SCSI 5 46 MSG 32 SCSI 6 47 SEL 33 SCSI 7 48 C/D 34 Parity 49 REQ 35-36 GND 50 I/O SERIAL PORT (DB9 MALE) Pin Signal 1 Carrier Detect 5 GND 2 Receive 6 Data set ready 3 Transmit 7 Request to Send 4 Data Terminal Ready 8 Clear to Send 9 Ring Indicator PARALLEL PORT (DB25 Female) The parallel port has extra signal to ease the connection of scanners. Pin Signal 1 Strobe 8 Data 6 2 Data 0 9 Data 7 3 Data 1 10 Acknowledge 4 Data 2 11 Busy 5 Data 3 12-16 Not Connected 6 Data 4 17 Select 7 Data 5 18-25 GND MONITOR CONNECTOR (DB19 Male) Pin Signal Pin Signal 1 Red 11 GND 2 Green 12 Composite Sync/Video 3 Blue 13 Horizontal Sync 4 Mono/Overlay 14 Vertical Sync 5 GND 15 External Clock Input 6 Red GND 16 External SYNC Enable 7 Green GND 17 +12V 8 Blue GND 18 M1 9 Audio out 19 M0 10 GND SCC LAN-port CONNECTOR (8-pin Mini DIN Female RS-422) Pin Signal 1 Handshake Output (DTR RS 423) 5 - Received Data 2 Handshake Input or External Clock 6 + Transmitted Data 3 - Transmit Data 7 General-purpose Input 4 GND 8 + Receive ENHANCED JOYSTICK (DB15 Male) Port A Port B Pin Signal Pin Signal 1 UP 0 1 UP 1 2 DOWN 0 2 DOWN 1 3 LT 0 3 LT 1 4 RT 0 4 RT 1 5 PAD0Y 5 PAD1Y 6 FIRE 0 / LIGHT GUN 6 FIRE 1 7 VCC (+5 VDC) 7 VCC 8 Not Connected 8 Not Connected 9 GND 9 GND 10 FIRE 2 10 FIRE 3 11 UP 2 11 UP 3 12 DOWN 2 12 DOWN 3 13 LT 2 13 LT 3 14 RT 2 14 RT 3 15 PAD0X 15 PAD1X MIDI PORT (DIN 5 Female) MIDI OUT MIDI IN Pin Signal Pin Signal 1 Thru Transmit 1 Not Connected 2 GND 2 Not Connected 3 Thru Loop Return 3 Not Connected 4 Out Transmit 4 In Receive 5 Out Loop Return 5 In Loop Return New Operating System calls This information is not complete, maybe subject to change and is certainly not meant as documentation for programmers DSP-calls Dsp_DoBlock(a,b,c,d) (void) xbios(500,a,b,c,d) Dsp_BlkHandShake(a,b,c,d) (void) xbios(501,a,b,c,d) Dsp_BlkUnpacked(a,b,c,d) (void) xbios(502,a,b,c,d) Dsp_InStream(a,b,c,d) (void) xbios(503,a,b,c,d) Dsp_OutStream(a,b,c,d) (void) xbios(504,a,b,c,d) Dsp_IOStream(a,b,c,d,e,f) (void) xbios(505,a,b,c,d,e,f) Dsp_RemoveInterrupts(a) (void) xbios(506,a) Dsp_GetWordSize() (int) xbios(507) Dsp_Lock() (int) xbios(508) Dsp_Unlock() (void) xbios(509) Dsp_Available(a,b) (void) xbios(510,a,b) Dsp_Reserve(a,b) (int) xbios(511,a,b) Dsp_LoadProg(a,b,c) (int) xbios(512,a,b,c) Dsp_ExecProg(a,b,c) (void) xbios(513,a,b,c) Dsp_ExecBoot(a,b,c) (void) xbios(514,a,b,c) Dsp_LodToBinary(a,b) (long) xbios(515,a,b) Dsp_TriggerHC(a) (void) xbios(516,a) Dsp_RequestUniqueAbility() (int) xbios(517) Dsp_GetProgAbility() (int) xbios(518) Dsp_FlushSubroutines() (void) xbios(519) Dsp_LoadSubroutine(a,b,c) (int) xbios(520,a,b,c) Dsp_InqSubrAbility(a) (int) xbios(521,a) Dsp_RunSubroutine(a) (int) xbios(522,a) Dsp_Hf0(a) (int) xbios(523,a) Dsp_Hf1(a) (int) xbios(524,a) Dsp_Hf2() (int) xbios(525) Dsp_Hf3() (int) xbios(526) Dsp_BlkWords(a,b,c,d) (void) xbios(527,a,b,c,d) Dsp_BlkBytes(a,b,c,d) (void) xbios(528,a,b,c,d) Dsp_HStat() (char) xbios(529) Dsp_SetVectors(a,b) (void) xbios(530,a,b) De volledige beschrijving van bovenstaande functie's staat in de Falcon030 Developers Documentation. VIDEO SETMODE int setmode( int modecode ); The setmode( int modecode ) call is used to place the Falcon/030 SHIFTER into a specific mode. A bit-encoded value (called a "modecode") is passed to setmode() to set the mode. setmode() returns the previous mode that was set. To help make the building of modecode values easier, here is a table of defines: #define VERTFLAG 0x100 #define STMODES 0x80 #define OVERSCAN 0x40 #define PAL 0x20 #define VGA 0x10 #define TV 0x0 #define COL80 0x08 #define COL40 0x0 #define NUMCOLS 7 #define BPS16 4 #define BPS8 3 #define BPS4 2 #define BPS2 1 #define BPS1 0 Using these defines, you can build a modecode for any possible mode. For example: For True Color Overscan: modecode = OVERSCAN|COL40|BPS16; For ST Medium Compatibility mode on a Color Monitor/TV: modecode = STMODES|COL80|BPS2; For ST Low Compatibility mode in PAL on a Color Monitor/TV: modecode = STMODES|PAL|COL80|BPS2; For 256 color, 80 column mode on a VGA monitor: modecode = VGA|COL80|BPS8; If you have a modecode and wish to know how many bits per pixel it has, use the following: if( modecode & NUMCOLS ) == BPS16 ) do_something_cool(); /* You have true color mode */ The setmode() call will return the previous modecode set. You must use this value to get back to whatever mode you were in before you made your setmode call. int mon_type(void) The mon_type() function will return the kind of monitor that is currently in use. Here are the possible return values: 0 = ST monochrome monitor 1 = ST color monitor 2 = VGA monitor 3 = Television. void ext_sync( int flag ) This function sets or clears external sync. If flag is set, external sync is enabled. If flag is clear, then internal sync is used. SOUND-calls locksnd(); Used as a semiphore to lock the sound system. From other applications. unlocksnd(); Used to release the sound system for other applications to use. soundcmd(mode,data); This command is used to get or set the following sound parameters. If a negative number is used as the input then the current setting us returned. MODE OPERATION MEANING O LTATTEN Sets the current left channel output 1 RTATTEN Sets the current right channel output 2 LTGAIN Sets the current left channel input gain. 3 RTGAIN Sets the current right channel input gain. 4 ADDERIN Set the output of the 16 bit signed adder to receive it's input from the ADC, Matrix or both. 5 ADCINPUT Set the input the the ADC. The input can either be the left and right channel of the PSG or the left and right channel of the microphone. 6 SETPRESCALE Used for compatability. This prescale value is used when the DEVCONNECT() internal prescale value is set to zero. setbuffer(reg,begaddr,endaddr); This function is used to set the play or record buffers. REG selects playback or record, while begaddr and endaddr are the buffers beginning and ending locations. (int) reg - (0) Sets playback registers. - (1) Sets record registers. (long) begaddr - Sets the beginning address of the buffer. (long) endaddr - Sets the ending address of the buffer. setmode(mode); This function is used to set record or playback mode. The modes are as follows: MODE OPERATION (int) 0 8 Bit Stereo (int) 1 16 Bit Stereo (int) 2 8 Bit Mono settracks(playtracks,rectracks); This function is used to sets the number of record or playback tracks. setmontracks(montrack); This function is used to set the output of the internal speaker to one of the four tracks currently playing. The internal speaker is only capable of outputing ONE track at a time. setinterrupt(src_inter,cause); This function is used to set which interrupt that will occur at the end of a frame. If the frame repeat bit is on, this interrupt is used to allow for double buffering the playing or recording of sound. Interrupts can come from TimerA or the MFP i7. buffoper(mode); This function is used to control the operation of the play or record buffers in the sound system. The input to this function is a bitmap. If mode is set t0 -1 then the current status of the buffer operation bits is returned. NOTE: The sound system contains a 32 byte FIFO. When transferring data to the record buffer, software MUST check to see if the record enable (RE) bit was cleared by the hardware. If the bit was cleared then the FIFO is flushed, if not then software must flush the FIFO by clearing the record enable (RE) bit. dsptristate(dspxmit,dsprec); This function is used to tristate the DSP from the data matrix. gpio(mode,data); This is used to communicate over the General Purpose I/O on the DSP connector. Only the low order three bits are used. The rest are reserved. This call, depending on the mode, can be used to set the direction of the I/O bits, read the bits, or write the bits. devconnect(src,dst,srcclk,prescale,protocol); This function is used to attach a source device to any of the destination devices in the matrix. Given a source device, this call will attach that one source device to one or all of the destination devices. This call also sets up the source clock and prescaler, protocol and protocol source if used. sndstatus(reset); This function gets the current status of the codec. buffptr(pointer); This function returns the current position of the play and record data buffer pointers. These pointers indicate where the data is being read/written within the buffers themselves. This function is also used to determine how much data has been written to the record buffer. See buffoper(). The above is not yet complete. Atari has also routines for JPEG and andio conversion. -- Piet* van Oostrum, Dept of Computer Science, Utrecht University, Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands. Telephone: +31 30 531806 Uucp: uunet!mcsun!ruuinf!piet Telefax: +31 30 513791 Internet: piet@cs.ruu.nl (*`Pete')