From  : DL8AAU
To    : TNC2@DL      
Date  : 17-Oct 13:21
MsgId : BF - 17A409DB0GV
Title : TF2.7: Allgemeine Beschreibung

Path: !PI8RYS!PI8MBQ!PI8VNW!PI8MID!ON4AWP!ON6AR!ON1BWP!ON7RC!LX0PAC!DB0GE!
      !DB0GV!
de DL8AAU @ DB0GV.#HES.DEU.EU
to TNC2 @ DL



                         T H E  F I R M W A R E
                         ======================

                            AX.25 Version 2
                       Multi Channel TNC Firmware
                             Version 2.7


TheFirmware Version 2.7 DAMA/SMACK/XHOST (2553 Bytes * xx Channel)
   Copyright by NORD><LINK, 21-Sep-94
      Free for non-commercial usage

Checksum (xxxx) = xxxx

So meldet sich die neue TheFirmware im TERMINAL-MODE auf dem Bildschirm,
wenn das EPROM  TF2.7  ordnungsgem im  TNC-2 (bzw.  einem  kompatiblen
TNC) installiert  wurde. Bei einem  EPROM-Wechsel bitte unbedingt darauf
achten, da  das EPROM  auch schnell  genug  ist. Langsame  250ns-EPROMs
sind fr einen  10MHz-TNC untauglich!  Dort  sollten unbedingt 100-120ns
EPROMs eingesetzt  werden.  Nach dem Einschalten der Spannungsversorgung
mssen  die STA und CON LED  fr  kurze Zeit aufleuchten und dann wieder
erlschen. Leuchten  die LEDs  weiter, dann ist  etwas  defekt  und  die
Software luft nicht an.

Bei der TF2.7 handelt  sich um die  neueste "offizielle" TheFirmware von
NORD><LINK. Es erfolgt keine Nennung der Autoren im Signon der Software,
da inzwischen  doch eine ganze Reihe von Co-Autoren Verbesserungen daran
durchgefhrt  haben. Jeden  Einzelnen  dabei zu nennen  wrde den Rahmen
sprengen  und  mit Sicherheit fhlt  sich der eine oder andere dann auch
noch bergangen, wenn man das Rufzeichen eventuell vergessen hat.

Sicher ist  jedenfalls, da  eine ganze Reihe von OM's einen groen Teil
ihrer  Freizeit geopfert  haben, um die Software fr die Benutzer weiter
zu entwickeln. Dies  geschieht  vollkommen unentgeldlich, also ohne jeg-
liche Bezahlung! Die Software wird kostenlos zur Verfgung gestellt. Da-
ran  sollte man  auch  einmal denken und dem Digipeater- oder Mailboxbe-
treiber eine kleine Spende zukommen lassen...

Urvater  der NORD><LINK-TheFirmware  ist Michael, DC4OX. Die Sourcen von
TheFirmware  wurden seitens  NORD><LINK von Anfang an frei zur Verfgung
gestellt. Allerdings  mit  der  Bedingung, da  die Software (Source und
EPROM), oder  Teile davon, nicht  kommerziell genutzt werden drfen. Ein
Verkauf  der  EPROM's ist  ebenfalls nicht zulssig; die Abgabe darf nur
Material- und  ggf. Portokosten  decken. Aufgrund  der Verfgbarkeit der
Sourcen, wurde  die TheFirmware auch schon auf andere Hardware portiert,
so  z.B. den TNC3S(DG1GGZ), VANESSA(HB9PAE)-Hardware, PK232/PK88(DL4YBG)
und  DSPCOM. Die  residente PC-Software  TFPCR(DL1MEN), TFPCX(DG0FT) und
TFKISS(OE3GMW/OE1HHC) stammen  ebenfalls von  der NORD><LINK-TheFirmware
ab.

Die  DAMA-Implementation  stammt  im wesentlichen  von Frank, DL8ZAW und
entstand  nach der  DAMA-Spezifikation  von DK4EG. Verbesserungen an der
Software  wurden   u.a.  vorgenommen   von  DB2OS, DG2FEF, DF2AU, DK6PX,
DL1MEN, DF7ZE, DL9HCJ, DL8AAU und anderen.

Wesentliche  Teile  der TheFirmware  wurden in der Version 2.7 von DB2OS
und DG2FEF  berarbeitet, wobei Matthias  insbesondere das Verhalten des
DAMA-Slave  erheblich verbessert  hat und sich  die  Software  nun  auch
strikt an  die  DAMA-Spezifikation hlt. Gemeinsam wurde sichergestellt,
da die TF2.7  problemlos auf  TheNetNode mit DAMA (wie bisher) und auch
mit der neuen Flexnet-DAMA Software eingesetzt werden kann.

Selbstverstndlich  kann die  TF2.7 auch  auf  normalen Digipeatern ohne 
DAMA eingesetzt  werden. Aber auch dort gibt es sprbare Verbesserungen,
u.a. durch den, jetzt auch bei TheFirmware implemetierten, FRAMESAMMLER.
Eine  bersicht  der  wichtigsten nderungen  ist in der getrennt einge-
spielten Kurzbersicht fr die einzelnen Befehle zu finden.


Die TheFirmware  untersttzt das  vollstndige AX.25 Protokoll,  Version
2.0,  der Link Ebene,  wie es in der ARRL Spezifikation vom Oktober 1984
beschrieben ist. Die alte Version 1.x wird nicht mehr verarbeitet. Diese
Software kann mehrere Verbindungen gleichzeitig bedienen. Das vorliegen-
de  Eprom wurden  fr max. 10 bzw. 27 (fr Mailboxbetrieb) gleichzeitige
Verbindungen  compiliert. Es ist aber jede beliebige Zahl durch Vernde-
rung eines Parameters im Quelltext mglich.

Die  TheFirmware  ist fr  Betrieb  ber  die "DAMA"-Einstiege unbedingt
erforderlich, hat  aber auch eine Reihe von Verbesserungen und Vorteilen
bei Betrieb ber "normale" Digipeater und im "normalen Direkt-QSO".

Ein  Digipeater, der  als DAMA-Master arbeitet  wird automatisch erkannt
und die Firmware schaltet sich in  diesem Fall  automatisch in den DAMA-
Modus.  Erkennbar  ist dies bei  eingeschaltetem  Monitor an den Zeichen
"[DAMA]" hinter jedem empfangenem Frame vom DAMA-Master. Der TNC  sendet
nur noch dann, wenn  er vom Master zur  Sendung aufgefordert wird. Somit
werden  Kollisionen praktisch  vollkommen ausgeschlossen. Parameter ms-
sen  nicht  gendert  werden, da DAMA  beim Connect  automatisch erkannt
wird. Bei der Antwort auf  einen Poll vom DAMA-Master wird jetzt auf die
DCD-Auswertung  verzichtet, so da  auch  Betrieb  ber Duplex-DIGIs mit
DAMA bei nachlaufendem TX  problemlos ist. Die  fehlende  DCD-Auswertung
dient auch als Vorbereitung auf ein knftiges, erweitertes DUPLEX-DAMA.

Das DAMA-Protokoll  ist in  cqDL 4/89  Seite  230ff und in den Mailboxen
unter der Rubrik AX25 beschrieben.


Zustzlich ist  in  dem Eprom  der kompatible KISS-Modus mit CRC (SMACK)
von DL5UE und DK5SG  implementiert (siehe SMACK-Beschreibung). Die Para-
meter  der Hostmode-Firmware werden  n i c h t  verndert (SMACK benutzt
eigene,  andere Parameter und berschreibt nicht die Firmware-Variablen.
Nach  einem  Reset sind  alle Parameter  unverndert (SMACK wurde in ein
linkfhiges Codesegement umgeschrieben). Das SMACK-Kommando 255, welches
wie  ein Reset  (Aus- und Einschalten des TNC) wirkt  undeine  programm-
gesteuerte  Rckkehr  zur  Firmware  ermglicht, ist  implementiert. Die
Firmware-Uhr luft bei SMACK-Betrieb nicht weiter. Durch die Erweiterung
um einen CRC, sind  falsche  Daten aufgrund  von bertragungsfehlern auf
der RS232-Leitung praktisch ausgeschlossen.


Nach  einem TNC-Reset wird eine  Prfsumme  errechnet, die in der Start-
meldung  ausgegeben wird. Sie  mu mit der in Klammern aufgefhrten Zahl
bereinstimmen  (auch bei  vernderten Parametern im Eprom). Stimmen die
Zahlen  nicht berein,  so mu ein  Fehler beim Programmieren des EPROMs
passiert sein. Bei Einbau  eines neuen EPROMs  oder RAMs sollte  man den
'QRES'-Befehl eingeben, damit im RAM kein 'Mll' vorheriger Versionen zu
unerwnschten  Effekten fhrt.  Man kann  dieses auch dadurch erreichen,
indem die Batterie fr einen Moment abgeklemmt wird und dadurch den RAM-
Inhalt lscht. Mit dem 'QRES'-Befehl  werden  die  Default-Parameter aus
dem EPROM bernommen.


Das TNC-Rufzeichen ist leer und  kann mit dem 'I'-Befehl gesetzt werden.
Ebenso  knnen  alle  anderen  Standard  Parameter  gendert werden. Die
neuen  Werte werden  dann im RAM gesichert. Ist eine Backup-Batterie in-
stalliert, dann  bleiben die Parameter und  das Rufzeichen auch bei aus-
geschaltetem  TNC im  gepufferten  RAM erhalten. Es lt sich  fr jeden
Kanal ein eigenes Call eingeben, jedoch wird nach einem Disconnect immer
das  Call aus  dem  Kanal 0 (Monitor) bernommen.


Befehle  und Informationen  werden dem TNC als  Zeilen  bergeben.  Jede
Zeile  darf  bis zu 256 Zeichen lang sein,  wobei das Schluzeichen <CR>
mitzhlt.  Wenn das 256.  Zeichen  kein <CR> ist, wird es  berlesen und
ein <BEL> zum Terminal  geschickt. Einzelne Zeichen knnen mit <BS> = 08
HEX oder <DEL> = 7F HEX  gelscht werden.  Mit <CTL-U> oder <CTL-X> kann
die gesamte Zeile gelscht  werden.  Ein <CTL-R> bringt die Schreibmarke
ohne  Lschen an  den Zeilenanfang,  so da eingelaufene Meldungen ange-
zeigt werden  knnen.  Mit einem zweiten <CTL-R> kann dann wieder an das
Ende der angefangenen Zeile gegangen werden,  um die Eingabe  fortzuset-
zen.  Zwischen diesen beiden <CTL-R> werden alle Eingaben ausser <X-OFF>
und  <X-ON>  ignoriert.  <BEL> Zeichen werden als <BEL> an das  Terminal
weitergereicht,  sowohl bei  der Eingabe als auch beim Lschen.  Zeilen,
die mit <ESC> beginnen (wird als '*' ausgegeben) werden als  Befehlszei-
len interpretiert.  Wenn ein Befehl ohne Parameter eingegeben wird, wird
der  augenblickliche  Wert dieses Parameters angezeigt. Alle Zeilen, die
nicht mit <ESC> beginnen, werden als Information gesendet.

Durch den Wegfall der 7-Bit Umwandlung/Maskierung im Terminal-Modus wer-
den jetzt alle 8-Bit Zeichen transparent  ausgegeben. Zur Vermeidung von
Problemen  mit  Terminalprogrammen im  ECHO-Mode, werden nicht druckbare
Zeichen jetzt als "." ausgegeben.  Lediglich  BELL und TAB werden trans-
parent im Echo ans Terminal geschickt.

An  dieser  Stelle sei  jedoch  darauf  hingewiesen, da der eigentliche
Vorteil der TheFirmware in  dem sogenannten  WA8DED-HOSTMODE liegt. Dies
ist ein spezielles  Protokoll zwischen TNC und Computer, welches wesent-
lich  flexibler  als der reine Terminalmode ist. Im Hostmode knnen z.B.
problemlos  Binrdateien  bertragen  werden  und  spezielle Encoder wie
UUENCODE, 7PLUS, YAPP sind nicht erforderlich.


Die  Firmware stellt  dem Benutzer elf  logische TNC Kanle bereit,  die
von  0 bis 10 numeriert werden.  Das Terminal ist immer einem dieser Ka-
nle logisch  zugeordnet,  die Auswahl erfolgt mit dem 'S'-Befehl. Kanal
0  ist reserviert fr nicht  protokollierte Sendungen  (CQ,  Bake).  Der
Leitweg  fr  Kanal  0 wird  wie bei den  anderen Kanlen  mit  dem  'C'
Befehl  gewhlt. Die Kanle 1-10 senden im  Terminal-Modus auch an 'CQ',
solange sie nicht mit anderen Stationen verbunden sind. Connect Versuche
knnen auf  jedem beliebigen, derzeit nicht belegten Kanal gesendet wer-
den.  Einlaufende  Connect Versuche  anderer  Stationen werden  auf  den
ersten  freien  Kanal gelegt, sofern dadurch nicht die durch den 'Y' Be-
fehl gegebene maximale Zahl  gleichzeitiger  Verbindungen  berschritten
wird. Information,  die auf  einem  belegten, derzeit nicht mit dem Ter-
minal  verbundenen  Kanal einluft,  wird  gespeichert, bis dieser Kanal
auf das Terminal geschaltet  wird.  Mit dem 'L'-Befehl kann leicht fest-
gestellt werden, ob  auf anderen Kanlen  Informationen eingelaufen sind
und auf den Abruf  warten. Informationen werden nur auf dem gerade ange-
whlten  Kanal  gesendet. Nach einem  Disconnect werden eingegangene In-
formationen bis zum Abruf im TNC-RAM gespeichert.  Wenn der Leitweg oder
das Ziel  gewechselt werden sollen,  whrend eine Verbindung gerade auf-
gebaut  wird oder besteht, mu nicht  erst ein Disconnect ausgelst wer-
den,  es gengt, mit einem  neuen 'C'-Befehl  die Verbindung  neu aufzu-
bauen. Es geht keine  Information dadurch  verloren. Es  ist aber  nicht
zulssig,  die gleiche  Station auf mehr  als  einem Kanal zur  gleichen
Zeit zu whlen.

                                                                    
Die Protokollversion  ist fest auf  Version 2  eingestellt. Verbindungen
mit Stationen in der alten Protokollversion 1 werden abgewiesen. Version
2 ist  besser fr Netzwerke  geeignet  und  erlaubt  eine bessere Kanal-
usnutzung, besonders  unter  erschwerten  Bedingungen.  In der Version 2
des Protokolls  wird ein Timer gestartet,  sobald keine Information mehr
zu bertragen  ist. Bei einer  Pause von mehr als drei Minuten  wird der
TNC  der  Gegenstation  abgefragt, um  sicherzustellen, da  die Verbin-
dung  noch existiert.  Wenn die  mit dem 'N'-Befehl  vorgegebene  Anzahl
an Versuchen  erfolglos geblieben ist, wird versucht, die Verbindung neu
aufzubauen. Hierdurch  wird  auch  der Fall  abgedeckt, da jemand  eine
Verbindung  aufbaut  und dann ohne  Disconnect  wieder verschwindet.


Fr  die  Befehle  'F',  'I',  'N'  und  'O'  werden  die  Parameter fr
jeden Kanal getrennt gespeichert. Der Wert des Kanals 0 wird  im RAM ge-
speichert und  wird zur Initialisierung  der Kanle  1-10 nach Reset und
nach  Trennen  der  Verbindung benutzt.  Man kann daher vor oder whrend
einer Verbindung diese Werte ndern und  erhlt automatisch  am Ende der
Verbindung  die  Standard Werte wieder zurck.  Mit dem 'D'-Befehl  kann
ein freier Kanal auch wieder initialisiert werden.


Mit  dem  'M'-Befehl  kann  die Kanalaktivitt  beobachtet  werden.  Der
Parameter fr diesen  Befehl entscheidet,  welche Pakettypen  beobachtet
werden sollen. Mehrere Parameter knnen gleichzeitig angegeben werden.

      Parameter     Paket-Typ
      ---------     ---------
          N         nichts
          I         Informationen
          U         unprotokolliert
          S         Status (Kontroll Pakete)
          C         auch beobachten, wenn eine Verbindung besteht
          +         nur Pakete von/zu bestimmten Stationen (maximal 8)
          -         keine Pakete von/zu bestimmten Stationen (maximal 8)

Die kombinierte  Benutzung der '+' und '-' Parameter ist nicht zulssig.
Sie mssen als letzter  Parameter vor  den Rufzeichen eingegeben werden.
Die Eingabe von '+' oder '-' ohne  Rufzeichen lscht die aktuelle Liste.
Die SSID wird nicht ausgewertet. Alle  Pakete einer  bestimmten  Station
werden entweder gemonitort oder nicht.
 
Ein  '*',  der  in  einer  Rufzeichenliste  erscheint, kennzeichnet  die
Station, die das Paket gesendet hat. Der Pakettyp kann aus der folgenden
Liste entnommen werden.

          Name           Beschreibung
          ----           ------------
          RRa            bereit zum Empfang
          RNRa           nicht bereit zu Empfang
          REJa           Paket nicht akzeptiert
          UI             unprotokollierte Information (an alle)
          DM             Verbindung besteht nicht
          SABM           Aufforderung zum Verbindungsaufbau
          DISC           Aufforderung zum Trennen der Verbindung
          UA             Besttigung eines nicht numerierten Paketes
          FRMR           Protokoll Fehler
          Iab            Information
          ?ccH           nicht definierter Typ

Hierbei bedeutet:
          a  = Nummer des nchsten erwarteten Paketes
          b  = Nummer dieses Paketes
          cc = Hexadezimal Zahl

Ein  weiteres  Zeichen  gibt  die verwendete  Protokollversion  und  das
Poll/Final sowie das Command/Response Bit an:

     <leer> = Protokollversion 1 ohne P/F Bit
          ! = P/F Bit in Protokollversion 1
          ^ = Kommando Paket in Protokollversion 2 ohne Poll Bit
          + = Kommando Paket in Protokollversion 2 mit Poll Bit
          - = Antwort Paket in Protokollversion 2 mit Final Bit
          v = Antwort Paket in Protokollversion 2 ohne Final Bit

Das Protokoll Identifikationsfeld wird in hexadezimaler Form ausgegeben.

ACHTUNG:
Pakete werden nur gemonitort, wenn mehr als 128 Buffer im TNC frei sind.
Dadurch wird ein berlaufen der internen Buffer  bei lagsamen  Rechnern
bzw. langsamen  Hostmode-Programmen  bei  starker Kanalaktivitt verhin-
dert.


Mit dem 'U'-Befehl kann ein Connect-Text ein- bzw. ausgeschaltet werden.
Es ist mglich,  einen  frei whlbaren Text an  die anrufende Station zu
senden  und dann  der rufenden Station die Mglichkeit  zu  geben,  eine
kurze  Nachricht zu hinterlassen. Dies kann auf allen Kanlen gleichzei-
tig  geschehen  und  beeinflut  in keiner  Weise  die  Mglichkeit  des
Bedieners,  Informationen  in eine bestehende Verbindung einzugeben oder
seinerseits  Verbindungen aufzubauen.  Wenn der Ctext eingeschaltet ist,
werden  alle Zustandsmeldungen des  betreffenden  Kanals gespeichert und
erst auf das  Terminal gegeben,  wenn dieser Kanal angewhlt  wird. Sta-
tusmeldungen  werden  daher dann in zeitlich  richtiger Reihenfolge  zu-
sammen  mit den eingelaufenen  Informationen  ausgegeben. Ausserdem wird
der mit dem 'U'-Befehl eingegebene Text an jede anrufende Station gesen-
det.  Wenn  Kanal 0 als letztes gewhlt  wurde, knnen Stationen auf den
Kanlen  1-10 anrufen  und Meldungen  hinterlassen, wobei  die Zahl  der
maximal gleichzeitig  mglichen Verbindungen  mit 'Y' gewhlt  wird. Mit
dem 'L'-Befehl kann  festgestellt  werden, welcher  Kanal  Informationen
enthlt.  Wenn dann dieser Kanal gewhlt wird, werden alle gespeicherten
Informationen und Meldungen dieses Kanals auf das Terminal gegeben. Wenn
mit dem 'Z'-Befehl  X-ON/X-OFF-Protokoll  gewhlt  wurde, kann  die Aus-
gabe mit <CTL-S> gestopt und mit <CTL-Q> wieder aufgenommen werden.

Neu ist beim 'U'-Befehl der  Parameter 2.  Hier kann, wie oben beschrie-
ben, eine  Nachricht  im TNC hinterlegt werden.  Zustzlich kann nun die
Gegenstation  mit der Zeichenfolge "//Q" den TNC veranlassen, einen Dis-
connect auszulsen. Die  Gegenstation  wird somit wieder bis zum letzten
Digipeater "Reconnected" oder  der gesamte Verbindungsweg wird getrennt,
je nach  verwendetem  Digipeater-System. Allerdings  funktioniert  diese
Option NUR  im Terminal-Mode. Ist  eine HOSTMODE-Anwendung aktiv, bleibt
die  Funktion abgeschaltet und unter Kontrolle des Hostmode-Terminalpro-
gramms.


Die  TheFirmware 2.7 hat eine  24-Stunden-Uhr  und  einen  Kalender  per
Software  eingebaut. Man  kann wahlweise alle Statusmeldungen (also CON-
NECT REQUEST fm, CONNECTED to, usw.) und  Monitormeldungen (Header gemo-
nitorter  Pakete)  mit  einem  Datum/Uhrzeit-Stamp  versehen lassen. Mit
'K 0' schaltet  man  die  Ausgabe dieses Stamps ab. Trotzdem werden alle
Meldungen/Header  mit einem  Stamp versehen, ein  Einschalten des Stamps
wirkt also  auch richtig bei lngere Zeit im Buffer stehenden Meldungen/
Headern  mit  abgeschaltetem Stamp. Mit 'K 1' schaltet man die Stampaus-
gabe  fr Statusmeldungen ein, mit  'K 2' die  Stampausgabe  fr Status-
meldungen und Monitorheader. Eingabe von 'K' zeigt die aktuelle Einstel-
lung gefolgt vom Datum und der Uhrzeit. Je nachdem wie man das Datum ge-
setzt  hat,  wird  es  bei Stamps  entweder im europischen oder  ameri-
kanischen Format ausgegeben. Das Datum und die  Uhrzeit werden  bei QRES
oder  einem  Kaltstart  gelscht. Bei einem  Warmstart luft die Zeit ab
dem Zeitpunkt weiter, der beim Ausschalten des TNC vorlag. Anhand  einer
nachgehenden  Uhr kann  man so leicht feststellen, ob sich ein Stromaus-
fall whrend  des  Betriebs  ereignet hat. Tests haben  ergeben, da die
Uhr ohne Korrekturen sehr genau luft.


ANHANG
------


1. Besttigungszeitgeber T1 (Ackknowledgement Timer, FRACK)
------------------------------------------------------------
Eine feste  FRACK-Einstellung  gibt es nicht mehr, stattdessen wird  bei
jedem QSO  die Zeit  zwischen Aussenden  eines Info-Frames und Empfangen
der zugehrigen  Besttigung gemessen  und zur Berechnung  des Startwer-
tes des Besttigungstimers T1 herangezogen.

Um groe  Schwankungen zu vermeiden, wird die gemessene  Zeit RTT (round
trip time) nach folgender Formel geglttet:

         SRTT' = ( Alpha x SRTT + RTT ) / ( Alpha + 1 )

Dabei  ist  SRTT (smoothed round trip time) der  aus der letzten Messung
ermittelte  Wert fr  geglttete  Zeitmessung, RTT die  soeben gemessene
Zeit  und SRTT' der neue Wert fr SRTT. Der Parameter Alpha ist fest auf
den Wert 10 eingestellt.

Der Timer T1 ergibt sich aus SRTT dann nach:

  T1 = a3 x SRTT

(wobei a3 im Eprom fest auf den Wert 2 eingestellt ist)

Vor Beginn  eines  QSOs mu SRTT  initialisiert werden, da ja noch keine
Messung  stattgefunden hat. Dies geschieht  mit dem Wert, der  mit ESC F
eingegeben werden kann (10 ms - Schritte, Default: 500). Die RTT-Berech-
nung beginnt erst  nach Aufbau  der Verbindung, d.h. nachdem  das UA der
Gegenstation  empfangen  worden  ist. Bei QSOs  ber  mehrere Digipeater
wird die Zeit zwischen den einzelnen SABMs berechnet nach:

         T1 = (2 x "Anzahl Digis" + 1) x IRTT




Zusammengestellt aus diversen Beschreibungen 
der Softwareautoren ........................... DJ1OR September/1992
berarbeitet fr TF2.6 ........................ DB2OS Juli/1993
berarbeitet fr TF2.7 ........................ DB2OS September/1994



[End of communication #51292 from DL8AAU]
