 Der MFP 68901

 MFP ist eine Abkrzung, hinter der sich das folgende "Langwort" versteckt,
 Multi-Funktion-Peripheral-Baustein........
 was auch nicht gelogen ist. Dieses IC ist ein kleines Wunderwerk,in dem
 sich einige Funktionen verstecken.
 zB. 8 Bit Parallelport
     Datenrichtung eines Portbits separat Programmierbar
     Verwendung eines Portbits als Interrupteingang  (siehe ST)
     16 Verschiedene mgliche Interruptquellen
     Vier programmiebare universal Timer
     und eine serielle Schnittstelle
 Diese Funktionen sind nun alle in einem Gehuse untergebracht,das dieses
 etwas Platz beansprucht fllt dann an dem 48 poligem Baustein schnell auf.
 Ich will an dieser Stelle fr die mehr Hardware orientierten Freaks auch
 die komplette Pinbelegung dieses Bausteines ablichten.
 ---------------------------------------------------------------------------
 PIN NUMMER      FUNKTION                PIN NUMMER   FUNKTION
     1             R/W                       48          CS
     2             A1                        47          DS
     3             A2                        46          DTACK
     4             A3                        45          IACK
     5             A4                        44          D7
     6             A5                        43          D6
     7             TC                        42          D5
     8             SO                        41          D4
     9             SI                        40          D3
     10            RC                        39          D2
     11            Vcc                       38          D1
     12            NC.                       37          D0
     13            TA 0                      36          Vss
     14            TB 0                      35          CLK
     15            TC 0                      34          IEI
     16            TD 0                      33          IEO
     17            XTAL 1                    32          INTR
     18            XTAL 2                    31          RR
     19            TA 1                      30          TR
     20            TB 1                      29          17
     21            RESET                     28          16
     22            I0                        27          15
     23            I1                        26          14
     24            I2                        25          13

  O.k that's all for now
  Kommen wir nun zu den Funktionsbaugruppen des Bausteins.....
- Die Anschlsse:   GND,Vcc,CLK

  An GND und Vcc wird der Baustein mit der Betriebsspannung versorgt,der
  Pin CLK dient dazu den Baustein mit dem Systemtakt zu versorgen (4Mhz).

- Die Anschlsse:   DO-D7,CS,DS,DTACK,RS1-RS5,RESET
  Verbinden den MFP mit dem sog. Datenbus des ST's
  CS-Chipselekt / DS-Datastrobe / DTACK-Data Transfer Acknowledge / RS1-RS5-
  Register Select / RESET.

- Das Restet Signal muss 2 Microsekunden stabil anliegen um den MFP in einen
  definierten Grundzustand zu versetzen.

- Die nchste Wichtige Gruppe sind die Interruptanschlsse.
  IRQ-Interrupt ReQuest / IACK-Interrupt ACKnowledge / IEI,IEO-Interrupt
  Enable In,Out
  Der Anschluss IRQ wird LOW wenn ein Ereigniss innerhalb des MFP einen
  Interrupt ausgelst hat. Es wird dann dem Prozessor mittels diesem
  Anschluss ein Interrupt signalisiert.
- IACK
  Legt bei LOW an IRQ u.IEI einen Interruptvector auf die Datenleitungen.
  Jede der 16 Interruptquellen kann einen eigenen Vector liefern,soda die
  behandlung dessen fr den Prozessor wesentlich vereinfacht und somit
  beschleunigt wird.
- IEI,IEO
  An diesen Pin's knnen mehre MFP's untereinander Verkettet werden.
  Was aber im Atari nicht der fall ist.

- Die 8 I/O Anschlsse   IO 0 - IO 7
  Man kann diese Leitungen als normale Ein od. Ausgabeleitungen verwenden.
  Die Datenrichtung ist mittels der Portbits frei einstellbar,zustzlich
  kann jedes Portbit als Interrupteingang programmiert werden.
  Mit den internen Registern knnen fr jedes Bit getrennt die Flanke des
  auslsenden Signals eingestellt werden.

- XTAL 1 u.XTAL 2    (Timer Quarz)
  An diesen Pin's knnen fr die internen Timer ein Quarz angeschlossen
  werden,welcher die Arbeitsfrequenz der internen Timer festlegt

- TA0,TB0,TC0,TD0   Timer Ausgang
  Die vier internen Timer verfgen jeder ber einen eigenen Ausgang,an dem
  der Pegel wechselt wenn der Timer den Zhlerstand von 01 nach 00 wechselt.
  Die Zhler arbeiten nur als Abwrtszhler !

- SI,SO  Serieller Eingang, Serieller Ausgang

- RC,TC Receive Clock, Transmit Clock
  Die bertragungsgeschwindigkeit der Sende/Empfangsdaten wird durch die
  an diesen Pin's liegende Frequenz bestimmt.

- Die Signale RR,TR  Receiver Ready,Transmitter Ready
  Finden im Atari ST keine Verwendung ....

- Die Internen Register des MFP ,24 an der Zahl
- Reg 1 GPIP     General Purpose I/O Interrupt Port

  Datenregister des 8 Bit Ports, mit dieser Adresse werden die Daten an die
  Portbits geschrieben / gelesen.

- Reg 2 AER  Active Edge Register
  Falls die Portbits als Interrupteingang benutzt werden,wird mit diesem
  Register festgelegt ob der Interrupt bei LOW od. HIGH Pegel ausgelst
  wird.

- Reg 3 Data Direction Register
  Dieses Register legt die Datenrichtung eines jeden Portbits fest.
  Eine 0 bedeutet dabei "Eingang" Eine 1 hingegen ein "Ausgang".

- Reg 4,5  IERA,IERB  Interrupt Enable Register
  Jede Interruptquelle kann hier separat Ein bzw. Ausgeschaltet werden.
  Eine Interruptquelle an einem Ausgeschaltetem Kanal wird vom MFP
  komplett ignoriert.
- IERA
      Bit 7  I/O Port Bit 7 ,hchste Stufe
      Bit 6  I/O Port Bit 6
      Bit 5  Timer A
      Bit 4  Empfnger Buffer voll
      Bit 3  Empfnger Fehler !     <<<< (Hier Ferdi !!!)
      Bit 2  Sender Buffer voll
      Bit 1  Sender Fehler !
      Bit 0  Timer B
- IERB
      Bit 7  I/O Port Bit 5
      Bit 6  I/O Port Bit 4
      Bit 5  Timer C
      Bit 4  Timer D
      Bit 3  I/O Port Bit 3
      Bit 2  I/O Port Bit 2
      Bit 1  I/O Port Bit 1
      Bit 0  I/O Port Bit 0 ,niedriegste Stufe
      -----------------------------------------
- Diese Zuordnung findet auch anwendung bei den IP,IM,u.IS Registern.

- Reg 6,7  IPRA,IPRB  Interrupt Pending Register
  Wenn bei einem eingeschaltetem Kanal ein Interrupt auftritt,wird das dem
  Kanal zugeordnete Bit im IPRA,IPRB Register auf Eins gesetzt.
  Wenn das System gebrauch von der Vektor-Erzeugung macht,wird das
  entsprechende Bit automatisch wieder gelscht,sobald der MFP die Vektor-
  nummer auf den Bus legt.
  Wenn das System von dieser mglichkeit keinen Gebrauch macht,mu das
  IPR-Register Softwaremssig gelscht werden.
  Zu diesem Zweck ist ein Byte an den MFP zu schicken in dem alle Bits
  bis auf das zu lschende gesetzt sind.

- Reg 8,9  ISRA,ISRB  Interrupt In-Service Register
  Die Funktion dieser Register hngen vom Bit 3 des Registers 12 ab.
  Dieses "S"-Bit bestimmt ob der MFP im Software End-of-Interruptmodus (SEI)
  oder im Automatic End-of-Interruptmodus (AEI) arbeitet.
  Im AEI Modus wird das IPR-Bit gelscht,sobald der Prozessor whrend eines
  IACK-Zyklus die Vektornummer auf dem Bus abholt.
  Auch das zugehrige In-Service Bit wird zu diesem Zeitpunkt gelscht.
  Danach knnen erneute Ereignisse (Interrupts) auftreten.
  Im SEI-Modus dagegen wird das entsprechende ISR-Bit gesetzt,wenn die
  Vektornummer des Interrupts, vom Prozessor angefordert wird.
  Am Ende der Interruptroutine mu das Bit gelscht werden,indem ein Byte
  in dem alle Bits bis auf das zu lschende gesetzt sind,an den MFP
  geschickt wird.
  Wenn das Sevice In-Bit gesetzt ist,sind alle Interrupts niedriger Stufe
  im MFP ausmaskiert
  Da das IPR Bit des aktiven Kanals mit der bergabe der Vektornummer
  gelscht wurde,kann jetzt ein gleichartiger Interrupt sofort wieder
  auftreten.
  Allerdings werden dieser u. niedrigere Interrupts erst wieder bearbeitet
  (lsen IRQ aus) wenn das gesetzte Service-In Bit gelscht wird.

- Reg 10,11  IMRA,IMRB  Interrupt Mask Register
  Mit diesem Register knnen einzelne,in den IER geschaltete
  Interruptquellen ausmaskiert werden.
  Die Ereignisse werden dann zwar erkannt und dem IPR signalisiert,die
  IRQ-Leitung bleibt aber auf High-Pegel.

- Reg 12  VR  Vektor Register
  Im Ereigniss-fall kann der MFP auf die Anforderung des Prozessors im
  Interrupt-ACKnowledge Zyklus eine der Ereigniss-Quellen entspechende
  Vektornummer generieren.
  Jeder der 16 Kanle verfgt ber seinen eigenen Vektor.
  Die 16 Kanle werden entsprechend der Prioritt in den unteren 4 Bits der
  Vektornummer codiert,die oberen 4 Bits des Vektors werden aus dem
  VR Vektorregister kopiert.Dazu mssen diese Bits im VR gesetzt sein.
  Das Bit 3 des VR ist das schon erluterte S-Bit,welches ber die beiden
  Arbeitsmodi des MFP entscheidet.

- Reg 13,14  TACR,TBCR   Timer A/B Contoll Register
  Die Internen Timer A und B verfgen ber die gleichen mglichkeiten.
  Sie bestehen aus je einem Datenregister,einem programmierbaren Vorteiler
  und einem 8-bit Abwrtszhler.
  Der Inhalt des Zhlers wird bei jedem Impuls,der vom vorteiler geliefert
  wird um eins verringert.
  Wenn der Zhler auf 01 steht,wechselt er beim nchsten Impuls am 
  zugehrigen Ausgang seinen Pegel.
  Zugleich wird der Timer mit dem Wert des Timer-Datenregisters geladen.
  Ist bei diesem Kanal das IER-Bit gesetzt,wird ausserdem ein Interrupt
  ausgelst.
  Als Quelle des Zhlertaktes wird blicherweise die Frquenz genommen,
  die als Quarz an den Anschlssen XTAL1/XTAL2 anliegt,diese Frequenz
  wird auch als Delay-Mode bezeichnet.
  Das selbe trifft auch fr die Timer C und D zu.
  Doch knnen auch bei den Timern A und B externe Impulse an den Timer-
  eingngen TAI / TBI gezhlt werden.
  Das wird dann als Event-Count-Mode bezeichnet.
  Beim zhlen externer Impulse wird der Vorteiler abgeschaltet,um wirklich
  jeden ankommenden Impuls exakt zhlen zu knnen.
  Die Maximale Zhlfrequenz darf 1Mhz nicht berschreiten,was einem
  viertel der Betriebsfrequenz des MFP entspricht.
  Eine weitere Besonderheit dieser Betriebsart ist das,die Timer-Eingnge
  den Interrupts der I/O-Anschlsse I3/I4 zugeordnet sind.
  Je nach Programmierung der entsprechenden Bit's im Active Edge Register
  kann durch einen Pegelsprung an den Timereingngen ein Interrupt
  ausgelst werden.
  TAI ist I4,TBI ist I3 zugeordnet,I3 und I4 knnen dabei jedoch immer noch
  als I/O-Anschlsse ohne Interrupt benutzt werden.
  Timer A/B haben noch eine dritte Betriebsart,die man Pulsweitenmessung
  nennt.
  Diese Betriebsart hnelt dem Delay-Mode,als unterschied ist zu erkennen
  das mittels der Timereingnge TAI /TBI die Timer ein/aus geschaltet
  werden knnen. Auch bei dieser Betriebsart werden die AER-Bit's von
  I3/I4 benutzt,um festzulegen ob die Timer bei High oder Low-Pegel
  an den Timereingngen arbeiten drfen.
  Wenn z.B das AER-Bit 4 gesetzt ist,arbeitet der Zhler,wenn TAI High ist.
  Wechselt TAI von High nach Low,so wird ein Interrupt erzeugt,
  vorrausgesetzt,der Interrupt des I4-Kanal's ist zugelassen. 

- Die Programmierung von TACR und TBCR.
  In diesen beiden Registern werden nur fnf der acht mglichen Bit's
  genutzt.
  Die Bits 0 bis 3 bestimmen die Betriebsart des entsprechenden Timers
  nach der Tabelle:

  Bit 3 2 1 0  Funktion
      0 0 0 0  Timer Stop       ,Keine Funktion
      0 0 0 1  Delay Modus      ,Vorteiler teilt durch     4
      0 0 1 0   "     "         ,   "       "     "        10
      0 0 1 1   "     "             "       "     "        16
      0 1 0 0   "     "             "       "     "        50
      0 1 0 1   "     "             "       "     "        64
      0 1 1 0   "     "             "       "     "       100
      0 1 1 1   "     "             "       "     "       200
      1 0 0 0   Event Count Mode,
      1 0 0 1   Pulsweiten Mode , Vorteiler teilt durch    4
      1 0 1 0       "        "      "       "     "        10
      1 0 1 1       "        "      "       "     "        16
      1 1 0 0       "        "      "       "     "        50
      1 1 0 1       "        "      "       "     "        64
      1 1 1 0       "        "      "       "     "       100
      1 1 1 1       "        "      "       "     "       200

- Reg 15  TCDCR  Timer C und D Controll Register

  Bit 2 1 0  Funktion Timer D
  Bit 6 5 4  Funktion Timer C

      0 0 0  Timer Stop , Keine Funktion
      0 0 1  Delay Modus, Vorteiler teilt durch  4
      0 1 0    "     "       "        "     "    10
      0 1 1    "     "       "        "     "    16
      1 0 0    "     "       "        "     "    50
      1 0 1    "     "       "        "     "    64
      1 1 0    "     "       "        "     "    100
      1 1 1    "     "       "        "     "    200

  Die Bits 3 u.7 in diesem Register haben keine Funktion.

- Reg 16-19  TADR,TBDR,TCDR,TDDR   Timer Data Register
  Die Timer Datenregister werden mit dem Wert programmiert,der in den Zhler
  geladen wird wenn er nach erreichen des Zhlerstandes 01 einen Impuls
  bekommt.
  Von diesem Wert aus wird dann kontinuierlich abwrts gezhlt.

- Reg 20  SCR   Syncron Character Register
  In diesem Register wird,bei einer synchronen Datenbertragung ein Wert
  geschrieben,der beim Empfang den beginn der Daten kennzeichnet.
  Anschliessend werden alle Daten mit diesem Wert
  verglichen und nach bereinstimmung in den Datenbuffer bertragen.

- Reg 21 UCR,USART Controll Register
  Mit diesem Register werden alle Parameter der Schnittstelle eingestellt,
  bis auf die Baudrate.

  Bit 0  : nicht benutzt
  Bit 1  : 0 parity odd
           1   "    even

  Bit 2  : 0 keine parity (Bit 1 wird ignoriert)
         : 1 parity entsprechend Bit 1

  Bit 3,4: diese Bits bestimmen Start u. Stoppbits und das gewnschte
           Format.
  Bit 4  3   Start Stop  Format
      0  0     0    0    Syncron
      0  1     1    1    Asyncron
      1  0     1    1,5    "
      1  1     1    2      "

  Bit 5,6: geben die Anzahl der zu bertragenen Datenbits an.

  Bit 6  5   Wortlnge
      0  0   8 Bits
      0  1   7  "
      1  0   6  "
      1  1   5  "

  Bit 7  : 0 = Frequenz an TC u. RC wird Direkt als bertragungsfrequenz
               benutzt.
           1 = Frequenz wird intern durch 16 geteilt.

- Reg 22 RSR  Receiver Status Register

  Bit 0   Receiver Enable Bit
          Wenn dieses Bit gelscht wird,ist der Empfangsteil sofort
          ausgeschaltet.Alle Flags im RSR werden automatisch gelscht.
          Wird das Bit wieder gesetzt arbeitet der Empfnger normal weiter.

  Bit 1   Syncronous Strip Enable
          Mit diesem Bit kann bei einem Synchronem Datentransfer bestimmt
          werden ,ob ein mit dem im SCR gespeicherten identischen
          Zeichen in den Receiver Buffer bertragen wird oder nicht.

  Bit 2   Match/Character In Progress
          Im synchronen bertragungsmodus wird mit diesem Bit angezeigt
          da ein mit dem SCR-Byte identisches Zeichen empfangen wurde.
          Im asynchronen Modus wird dieses Bit gesetzt, sobald das
          Startbit erkannt wurde.Mit dem eintreffen des Stopbits wird das
          Flag sofort wieder gelscht.
  
  Bit 3   Found-Search/Break Detected
          Bit 3 im RSR zeigt an ob ein empfangenes Zeichen im synchon Modus
          mit dem Zeichen in SCR bereinstimmt.
          Diese Bedingung kann ber den Receiver Error Kanal einen
          Interrupt auslsen.
          In der asynchronen Betriebsart,wird das Bit gesetzt sobald
          ein Break empfangen wird,die Break-Bedingung wir dann nur 
          erfllt wenn nach dem Startbit nur nuller empfangen werden.
          Zur Unterscheidung zwischen einem Break und einer 'echten null'
          mu die Empfngerleitung auch in der Zeit des Stop-Bits auf Low
          bleiben.
    
  Bit 4   Frame Error
          Ein Frame Error taucht auf, wenn ein Byte empfangen wird ,das
          nicht null ist,dessen Stopbit aber null ist !

  Bit 5   Parity Error
          Dieses Bit gibt an ob auch das letzte empfangene Zeichen den 
          Anforderungen der Paritt gerecht wurde. 
          Wenn die Parittsprfung beim empfang ausgeschaltet wurde,wird
          das Bit 5 nicht beeinflusst. 
  Bit 6   Overrun Error
          Das Bit 6 zeigt an das ein vollstndiges Zeichen im Empfangs-
          schieberegister bereit liegt,das zuvor empfangene Zeichen aber
          noch nicht aus dem Empfngerbuffer ausgelesen wurde.
          Dieser Fehler kann einen Interrupt auslsen.
  
  Bit 7   Buffer Full
          Bit 7 wird gesetzt sobald, ein fertiges Zeichen aus dem 
          Schieberegister in den Empfngerbuffer bertragen wird.
          Sobald der Prozessor das Byte ausliest wird das Bit gelscht.


- Reg 23 TSR Transmitter Status Register

  Bit 0   Transmitter Enable 
          Wenn dieses Bit gelscht wird,ist der Sendteil vollstndig
          abgeschaltet.Das End-Bit wird gelscht und das UE-Bit wird 
          gesetzt.

  Bit 1,2 High,Low-Bit
          Mit diesen beiden Bits kann der Zustand des abgeschalteten
          Senderausgangs beeinflusst werden,wenn beide Bits gelscht sind
          wird der Ausgang hochohmig.Wird das L-Bit gesetzt ist der 
          Ausgang Low.Im gegenzug ,bei gesetztem H-Bit wird der Ausgang
          High.
          In dem falle das beide Bits gesetzt werden wird der Senderausgang
          mit dem Empfngereingang intern (Loop-Back-Modus)verbunden.
          Der Ausgang selber liegt dann auf High-Pegel.

  Bit 3   Break
          Bit 3 hat im Synchron-Modus keine bedeutung.
          Im Asynchronen-Betrieb,wird wenn das Bit gesetzt wird die Break
          Bedingung ausgesendet.

  Bit 4   End of Transmitt
          Wird der Sendeteil whrend der laufenden bertragung ausgeschaltet
          so wird das End-Bit gesetzt,nachdem das aktuelle Zeichen 
          vollstndig gesendet wurde.Wird zum Zeitpunkt des Abschaltens
          gerade kein Zeichen gesendet,wird das End-Bit sofort gesetzt.

  Bit 5   Auto Turnaround
          Ist das Bit 5 gesetzt wird der Empfnger automatisch eingeschaltet
          wenn der Sender das letzte Zeichen vollstndig gesendet hat.

  Bit 6   Underun Error 
          Dieses Bit wird gesetzt wenn ein im Sendeschieberegister
          enthaltenes Zeichen komplett gesendet wurde,bevor ein neues
          Zeichen in den Sendebuffer geschrieben wurde.

  Bit 7   Buffer Empty
          Wird gesetzt, wenn ein Zeichen aus dem Senderbuffer in das
          Schieberegister bertragen wird. Das Bit wird gelscht, wenn
          neue Daten in den Sendebuffer gelangen.
          
- Reg 24  UDR,USART  Data Register
  In diesem Register werden Sende/Empfangsdaten bertragen......
  Beim hineinschreiben gelangen die Daten in den Sendebuffer und beim
  Auslesen kommen sie automatisch aus dem Empfangsbuffer.

  MR.T
  
  
  
    Originalfassung von Robert Schaffner.
 
 Vernderte Texte die sich im Umlauf befinden entsprechen teilweise 
 nicht mehr meiner Orginalfassung und sollten besser gelscht werden.
 
 Insbesondere z.B: REPS.LZH
                 : REPA.LZH
                 : REPA_ST.LZH
                 
 Robert Schaffner @ OF2 (MausNet)











