
Fast_Ser
========

Fast_Ser ist ein erweiterter Treiber fr serielle Schnittstellen 
auf dem STE/TT/Falcon030.
Fr Modem/Serial 1 (MFP) ist eine erweiterte Rsconf-Auskunftsfunktion
implementiert. Fr Modem/Serial 2 (SCC) sind zus„tzlich alle Bco...- 
und Interrupt-Routinen neu (und hoffentlich fehlerfrei) implementiert, 
und die Baudratentabelle ist mit eigenen Werten programmierbar.

Fast_Ser stellt eine Standardschnittstelle zur jeweiligen
Hardware mit Hilfe der Rsconf-Funtion her.

 - Cookie 'FSER', zeigt auf Struktur FSER_INFO:
    typedef struct
    {
    	UWORD version;
        unsigned unused:15;
        unsigned baud_table_flag:1; /* bit 0 in einem word */
        BASPAG *mem_blk;
    } FSER_INFO;

 - Rsconf( -3, -2, xx, xx, xx, xx ) liefert 'FSER' als long
    
 - Rsconf( -3, -3, xx, xx, xx, xx ) liefert einen Pointer auf die
    Struktur CHAN_INFO, die wie folgt definiert ist:
    
    typedef struct
    {
        BAUD_INFO *baud_table;
        BAUD_INFO *alt_baud_table;
        UBYTE **chip_address;
        UWORD chip_type;
        unsigned flags:14;
        unsigned extrd_flag:1; /* bit 1 in einem word */
        unsigned irq_flag:1;   /* bit 0 in einem word */
        WORD task;
        WORD resv[3];
        ULONG dcd_on;
        ULONG dcd_off;
        UWORD rxbuffer_overflows;
        UWORD framing_errs;
        UWORD parity_errs;
        UWORD charlost_errs;
    } CHAN_INFO;

	typedef struct
	{
        LONG baudrate;
        UWORD SCC_BRG_value;
        UWORD SCC_MISC_value; /* bit 15..14 Clock mode (Reg. 4)
                                 bit 9..8   BRG mode   (Reg. 14)
                                 bit 6..3   Rx/Tx Clock Source (Reg. 11)
                              */
	} BAUD_INFO;
	
    baud_table: Zeiger auf die Tabelle mit den Baudrateninfos, in der 
                eine Null bei 'baudrate' das Ende markiert, -1 steht
                fr eine nicht verfgbare Baudrate (nur bei den 
                ersten 16 Standardeintr„gen!!), 
                -2 fr einen freien Eintrag
    alt_baud_table: wie baud_table, nur sind hier an den Indices
                    0 und 1 h”here Baudraten eingefgt. Dadurch k”nnen
                    auch Programme, die Fast_Ser nicht direkt unter-
                    sttzen, die h”heren Baudraten nutzen 
    chip_address: Hardwareadresse des Chips bzw. der internen
                  Peripherie bei 68302, etc
                  z.b $FFFF8C81 fr Serial 2 auf MSTE/TT
    chip_type: Welcher Chiptyp h„ngt an diesem Kanal dran?
               $00: MFP
               $10: Standard-SCC 8530
               $11: VLSI-SCC VL85C30
               $12: Zilog-SCC Z85C30
               $13: AMD-ESCC Am85C30
               $14: Zilog-ESCC Z85230
               $15: AMD-ESCC Am85C230A
               $20: ISDN-Coprozessor MC68302
               $30: Ethernet-Coprozessor MC68EN360
    flags: verschiedene bislang unbenutzte Flags
    extrd_flag: Beim SCC ist in WR7' das ExtendedRead-Flag gesetzt.
    irq_flag:   gesetzt: Die Interruptroutinen nutzen die SCC-FIFOS.
    task: hier tr„gt eine Task, die die Schnittstellenhardware fr 
          sich haben will, ihre Nummer ein.
          -1 steht fr nicht reserviert.
    dcd_on: letzter hz_200-Zeitpunkt, an dem DCD aktiv wurde
    dcd_off: letzter hz_200-Zeitpunkt, an dem DCD inaktiv wurde
    rxbuffer_overflows: Anzahl der Charakter, die bei einem vollem
                        Empfangsbuffer verlorengingen
    framing_errs: Anzahl der empfangenen Charakter mit Framing-Fehler
                  (SCC-bedingt ein unsicherer Wert)
    parity_errs:  Anzahl der empfangenen Charakter mit Parity-Fehler
    charlost_errs: Anzahl der Charakter, die verlorengingen, weil der
                   SCC nicht schnell genug abgefragt wurde
                   (tats„chliche Anzahl kann gr”žer sein!)

Bei den Standard-Clockraten fr den SCC untersttzt Fast_Ser momentan
folgende Baudratenliste (auf die alt_baud_table zeigt):

Listen fr den MSTE/Falcon030
 Kompatibilit„t im FSERIAL.CPX =AN:
 Index:  Modem 2:     Serial 2:          Original:
   0:    57600        57600              19200
   1:    38400        38400              9600
   2:    19200        19200              4800
   3:    9600         9600               3600
   4:    4800         4800               2400
   5:    3600         3600               2000
   6:    2400         2400               1800
   7:    2000         2000               1200
   8:    1800         1800               600
   9:    1200         1200               300
  10:    600          600                200
  11:    300          300                150
  12:    200          200                134
  13:    150          150                110
  14:    134          134                75
  15:    110          110                50
  16:    75           75
  17:    50           50
  18:    38400        38400
  19:    57600        57600
  20:    76800        115200
  21:    153600

 Kompatibilit„t im FSERIAL.CPX =AUS:
 Index:  Modem 2:     Serial 2:          Original:
   0:    19200        19200              19200
   1:    9600         9600               9600
   2:    4800         4800               4800
   3:    3600         3600               3600
   4:    2400         2400               2400
   5:    2000         2000               2000
   6:    1800         1800               1800
   7:    1200         1200               1200
   8:    600          600                600
   9:    300          300                300
  10:    200          200                200
  11:    150          150                150
  12:    134          134                134
  13:    110          110                110
  14:    75           75                 75
  15:    50           50                 50
  16:    38400        38400
  17:    57600        57600
  18:    76800        115200
  19:    153600


 Liste fr den TT:
 Kompatibilit„t im FSERIAL.CPX =AN:
 Index:  Modem 2:     Serial 2:          Original:
    0:    38400        57600              19200
    1:    76800        38400              9600
    2:    19200        19200              4800
    3:    9600         9600               3600
    4:    4800         4800               2400
    5:    3600         3600               2000
    6:    2400         2400               1800
    7:    2000         2000               1200
    8:    1800         1800               600
    9:    1200         1200               300
   10:    600          600                200
   11:    300          300                150
   12:    200          200                134
   13:    150          150                110
   14:    134          134                75
   15:    110          110                50
   16:    75           75
   17:    50           50
   18:    38400        38400
   19:    76800        57600
   20:    153600       115200

 Kompatibilit„t im FSERIAL.CPX =AUS:
 Index:  Modem 2:     Serial 2:          Original:
    0:    19200        19200              19200
    1:    9600         9600               9600
    2:    4800         4800               4800
    3:    3600         3600               3600
    4:    2400         2400               2400
    5:    2000         2000               2000
    6:    1800         1800               1800
    7:    1200         1200               1200
    8:    600          600                600
    9:    300          300                300
   10:    200          200                200
   11:    150          150                150
   12:    134          134                134
   13:    110          110                110
   14:    75           75                 75
   15:    50           50                 50
   16:    38400        38400
   17:    76800        57600
   18:    153600       115200


Bei einem Terminalprogramm (z.B. RUFUS) bedeutet das, daž man
um eine Baudrate von 57600 auf Serial 2 zu erreichen, 19200 Baud
ausw„hlen muž (im Kompatibilit„ts-Modus). Allerdings liegen die 
hohen Baudraten bei Serial 2 ein bižchen (vernachl„ssigbar) neben 
dem Standard.

Hardwarebug!
Serial 2 beim MSTE hat einen Hardwarebug, der Zeichen verschluckt.
Bei h”heren Geschwindigkeiten kann der Bug auch bei Modem2 auftreten.
Das h„ngt von der MSTE-Platinenrevision ab. Dagegen hilft: ein anderes
GAL (Listing sollte seit 0.96 im Archiv dabei sein) oder/und ein
ESCC 85230.

Achtung!!
šber die Baudraten mit einem Index gr”žer 15 sind keine Annahmen 
zul„ssig!!. (Abfragen mit Rsconf!)

Achtung!! zum zweiten!
RZ.PRG und SZ.PRG (Version 1.9b) von Michael Ziegler arbeiten
mit dem auf Modem 1 eingestellten Baudratenindex.

Custom-Version:
Falls jemand spezielle oder noch h”here Baudraten braucht, soll
er sich bei mir melden. Es ist einiges m”glich!

Ich habe meinen MegaSTE umgerstet und betreibe einen
Zilog ESCC 85230 mit 14.7456 MHz. Der Umbau kostet ca. 40 DM.
(Der Umbau ist zum Betrieb von Fast_Ser _nicht_ n”tig!!)

Dazu braucht man:
 1 ESCC Zilog Z8523016VSC ca. 35 DM
 1 Quarzoszillator 14.7456 MHz ca. 5 DM
 1 Fast_Ser-Version fr eine PCLK von 14.7456 MHz
 und ein paar L”tkenntnisse
Die Bauteile sind bei mir erh„ltlich.

Bauanleitung:
 1. alten 85C30 aus dem Sockel hebeln (sehr vorsichtig!!!!!,
     die Sockel sind sehr spr”de und brechen leicht!)
 2. am Sockel den Pin 23 (vom markierten Pin 1 gegen den
     Uhrzeigersinn z„hlen) abzwicken
 3. am neuen ESCC den Pin 23 (PCLK) _vorsichtig_ nach oben biegen
 4. ESCC in den Sockel drcken
 5. den Quarzoszillator mit Pin 2 (7) und Pin 4 (14) auf ein
     14-poliges TTL-IC (74..) (Pin 1 beachten!!) in der N„he 
     des ESCC l”ten. Achtung: die Bauh”he ist unter Umst„nden
     durch das Netzteil begrenzt!
 6. Pin 3 des Quarzoszillators jetzt mit Pin 23 des ESCC verbinden
 7. das war's!
Mit diesem Umbau sind auf beiden Kan„len bis zu 230400 baud alle
blichen Baudraten m”glich. Falls man auch auf die Pins 13 und 32
(/RTxCA und /RTxCB) die 14.7456 MHz legt, sind theoretisch Baudraten
bis 921600 m”glich.


So das war's vorl„ufig!
Falls jemand Fehlermeldungen, Wnsche, etc hat, bitte melden bei:

Post:
Franz Sirl

Bischof-Adalbert-Str. 29
80809 Mnchen

Maus: Franz Sirl@M  bzw. Franz Sirl@m.maus.de

Voice: 089/356 85 13

mfg Franz Sirl, 08-08-93


Testing/Planning:
 INF-Datei zum beliebigen konfigurieren  der Baudraten
 restliche XSDD-Funktionen
 echter MinT-Devicetreiber
 MinT/MTOS Kompatibilit„t (XSDD-Protokoll)
 applestyle-Handshake auf Modem2/Serial2, um den LAN-Port mit den
  Standard-Pegelumsetzern betreiben zu k”nnen

Release Notes:
0.96beta, 08-08-93:
 Falcon wird untersttzt, FPATCH2 _vollst„ndig_ integriert
 Es sind jetzt 2 Versionen im Archiv:
  Fast_Ser.prg ohne XSDD
  FastXSer.prg mit XSDD
 XSDD-Dokumentation XSDD.TXT (mit freundlicher Genehmigung von 
  Stephan Baucke) im Archiv dabei
 XSDD-Protokoll _teilweise_ fr Modem2/Serial2 integriert,
  wird auch von GSZRZ seit 3.5 und Connect seit 2.20 untersttzt
 XSDD-Cookie wird als "xSDD" eingetragen, um den vorl„ufigen Status
  der Implementation zu kennzeichnen
 XSDD_TST.C als Beispiel-Code zu XSDD im Archiv
 Empfangsbuffergr”že auf 2048 Byte gesetzt
 Bug bei XON/XOFF behoben
  (Transmit wurde nach dem XON der Gegenstelle erst wieder gestartet, 
  wenn wieder ein Zeichen in den Puffer geschrieben wurde)
0.95xxxx, 22-07-93:
 Verschiedene nicht”ffentliche Testversionen
0.94beta, 20-01-93:
 FSERIAL.CPX von Roman Hodek ist mit dabei
 Bei vollem Cookiejar wird jetzt ein Gr”žerer (40) installiert
 Noch ein Fehler bei NoProtocol auf TT behoben (Anrufbeantworterbug)
0.93beta, 24-11-92:
 Interruptroutinen korrigiert (NoProtocol auf TT) und optimiert
 CTS-Handling optimiert
 Xbios/Iorec()-Patch wird bei TOS2.05 installiert
0.92beta, 04-11-92:
 Interruptfehler beim TT behoben
 Bconin fr XON/XOFF korrigiert
 Am85C230A wird erkannt
0.91beta, 16-10-92:
 Fehler bei NoProto/XONXOFF behoben (seit 0.88)
0.90beta, 12-10-92:
 Fehler bei Empfangspufferberlauf behoben (seit 0.88)
0.89beta, 11-10-92:
 Fehler bei Einstellung ber Kontrollfeld behoben (seit 0.88)
0.88beta, 05-10-92:
 FSER_INFO enth„lt Pointer auf die Basepage von Fast_Ser
 Modem 2 auf MSTE untersttzt 57600
 Transmit-Performance verbessert
 CHAN_INFO mit WR5 und RR0 erweitert, um Terminalprogramme besser
 zu untersttzen
0.85beta, 29-09-92:
 CHECKSCC V1.10 sollte jetzt funktionieren
 SCC-Typabfrage wieder drin
 FSER_INFO enth„lt Versionsnummer
0.83beta, 27-09-92:
 Routine die den SCC-Typ testet disabled, da noch fehlerhaft.
 Z85C30 blockiert danach. Deswegen l„uft auch CHECKSCC nicht.
 Neuer Eintrag alt_baud_table in CHAN_INFO.
 Cookie 'FSER' wird installiert. Enth„lt Pointer auf interne 
 Strukturen (momentan nur ein WORD, LSB ist Flag ob baud_table [=0]
 oder alt_baud_table [=1] benutzt wird). Default ist jetzt 1, d.h.
 alt_baud_table mit verschobenen Standardeintr„gen.
 baud_table zeigt auf die Standardtabelle, in der Index 0--15
 die originalen Baudraten anw„hlen, und die Indices >=16 davon
 abweichende Baudraten bezeichnen.
 XON/XOFF als Beta-Version implementiert.

0.80beta, 26-09-92:
 TT-lauff„hig.
 Alle Bco...-Routinen fr Modem/Serial 2 neu geschrieben,
 Interruptroutinen fr SCC implementiert, XON/XOFF-mode noch
 !!!nicht!!! implementiert.
 Beim Rckgabewert von Rsconf werden die Break-Bits von
 RSR/TSR richtig gesetzt.
 Die interne Tabelle zur Baudratenprogrammierung ist zugreifbar,
 fr eigene Werte sind jetzt 10 Eintr„ge frei.
 Beim Zilog ESCC 85230 wird das ExtendedRead-Bit (WR7' bit 6) gesetzt 
 und das TxFIFO-Level-Bit (WR7' bit 5) zurckgesetzt.
 
0.60beta, 08-09-92:
 In der Struktur wird die Variable chip_type gesetzt.
 Das Programm CHECKSCC V1.00 ist im Paket mit dabei.
 Es testet den Chip-Typ und die Frequenzen, die am SCC anliegen.

0.50beta, 30-08-92:
 erste ”ffentliche Beta!!-Version
