
Fast_Ser
========

Fast_Ser ist ein erweiterter Treiber fr serielle Schnittstellen 
auf dem STE/TT (wer hat Unterlagen zum Falcon?).
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;
        UBYTE WR5;
        UBYTE RR0;
        WORD resv[2];
        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
    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.
    WR5: Shadow Write Register 5 of SCC
    RR0: wird bei jedem CTS oder DCD Wechsel mit Read Register 0
         besetzt
    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):

Liste fr den MSTE
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

Liste fr den TT:
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

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ž. Allerdings liegen die hohen Baudraten bei Serial 2
ein bižchen neben dem Standard.

Hardwarebug!
Serial 2 beim MSTE hat einen Hardwarebug, der Zeichen verschluckt.

Achtung!!
Die Verschiebung der Baudratentabelle gilt nur solange die blichen
Terminalprogramme wie CoNnect oder Rufus dieses oder ein anderes 
erweitertes Protokoll zum Ansprechen der h”heren Baudraten nicht 
untersttzen. š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.

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
8000 Mnchen 40

Maus:
Franz Sirl@M


mfg Franz Sirl, 20-01-93


Testing/Planning:
 INF-Datei zum beliebigen konfigurieren  der Baudraten
 Block-Bco...-Routinen
 MinT/MTOS Kompatibilit„t (XSDD-Protokoll)

Release Notes:
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
