5jun97 L2PCX, HAMWARE - (C) OE5DXL kommerzielle Nutzung untersagt! Residenter mehr-Port AX.25-Treiber fr IBM-kompatible und Ansteckmodem(s) an die RS232, 9600bit/s FSK mit G3RUH-kompatiblem Scrambler, Stromversorgung aus der Schnittstelle. ICs: TL064, 4013, 4538, Schaltplan als Bildfile vorhanden. Terminal-Interface mit WA8DED-Hostmode. L2PCX 1 Port PC L2PCX4 1..4 Ports PC mit 1 bis 4 COM's L2PCX4N 1..4 Ports PC mit 1 bis 4 COM's + residenter Node mit oder ohne Host L2STX 1 Port ATARI ST, TT (1200 Baud auch mit BAYCOM Steckermodem) L2TTX 2 Ports ATARI TT mit Node Wird die Modem-Schaltung ausgedruckt weitergegeben, so muss sie gleichzeitig auf elektronischem Datentr„ger mitgegeben werden! Beim Betrieb mit 1200 Baud AFSK ist nur an der Atari-Version ein Baycom- Steckermodem mit vertauschten Pins anschliessbar. Fuer 1200 Baud gibt es auch andere Treiber. Sinnvoll ist AFSK evtl., wenn man mehrere Ports zugleich betreiben will, mit oder ohne Nodefunktion. Fuer AFSK gilt aber das gleiche Ansteuerprinzip am Modem wie fuer 9600 Baud, man kann an den HDLC-Marken auf der Schaltung den FSK-Teil entfernen und mit geeigneten Pegelwandlern ein AFSK-Modem anschliessen. Dabei muessen die Zeiten an Monoflops den entsprechenden Baudraten angepasst werden. Bevor man sich ein Modem aufbaut oder kauft, sollte der betreffende PC ohne Modem getestet werden, ob dessen RS232-Schnittstelle kompatibel ist, bzw. die CPU die Interrupts verarbeiten kann (siehe unten). Bei Sendeversuchen ohne Modem, bzw. ohne Rauschen aus einem am Modem angeschlossenen Empf„nger kann es sein, dass der digitale Squelch in undefiniertem Zustand bleibt und erst nach einer Weile gesendet wird. Betrieb sollte mit ge”ffnetem Squelch am Empf„nger gemacht werden. Will man ein Modem testen, dann sollte L2PCX auf der verwendeten Schnittstelle installiert sein, da sonst die Betriebsspannung aus den Statusleitungen fehlen kann. Startparameter: -U Unload -Izahl Trap des WA8DED interface, default 253 = FDh -Pzahl AX.25 Port (P1 ist der 1. Port) -Bzahl Gr”sse des Datenpuffers in 32Byte, default 800 -xx Test Off, spart ein paar % Rechenzeit (Der Befehl lautet nicht -xx und wird noch bekanntgegeben) Parameter der einzelnen Ports werden nach -Pzahl angegeben: -Pzahl -Bbit/s bit/s Port 1 (150 bis 9600), default 9601 1 Addieren schaltet den G3RUH-Scrambler ein (-B9601) 2 Addieren schaltet DTR auf +12 fr AFSK Modems (-B1202) -Pzahl -Czahl COM port des Rechners laut BIOS, default COM1 -Pzahl -Izahl Interruptnummer fr die Schnittstelle (-I3), default I4 -Pzahl -Azahl Basisadresse der Schnittstelle dezimal! (-A760) default 1016 -Pzahl -Fzahl Feineinstellung der Baudrate bei ungenauen RS232-Chips -F1 bewirkt +0.01%, maximum -F40 Die Parameter nach -Px k”nnen alle kombiniert werden. Sind Parameter erforderlich, kann der wiederholte Aufruf mit einer .BAT-Datei vereinfacht werden. Start mit: (Beispiele) ! IntTest ! bit/s ! Scrambl ! COMnr ! INTnr ! Adrs ! ---------------------------+---------+-------+---------+-------+-------+------+ L2PCX ! ON ! 9600 ! ON !n.bios ! INT4 !n.bios! L2PCX -U ! ------------------ Unload ----------------------! L2PCX -P1 -B1200 ! ON ! 1200 ! OFF !n.bios ! INT4 !n.bios! L2PCX -P1 -B9600 ! ON ! 9600 ! OFF !n.bios ! INT4 !n.bios! L2PCX -P1 -B9601 ! ON ! 9600 ! ON !n.bios ! INT4 !n.bios! L2PCX -P1 -C2 ! ON ! 9600 ! ON ! COM2 ! INT3 !n.bios! L2PCX -P1 -C2 -I7 ! ON ! 9600 ! ON ! COM2 ! INT7 !n.bios! L2PCX -P1 -C2 -I4 -A1016 ! ON ! 9600 ! ON ! COM2 ! INT4 ! 3F8H ! L2PCX -P1 -C1 -I3 -B1200 ! ON ! 1200 ! OFF ! COM1 ! INT3 !n.bios! L2PCX -B500 -P1 -C4 -I11 ! ON ! 9600 ! ON ! COM4 ! INT11 !n.bios! L2PCX -xx ! OFF ! 9600 ! ON !n.bios ! INT4 !n.bios! Rechenzeitbedarf bei einem 80286 mit angeschlossenem Modem und TRX (Landmark): 9600bit/s -3MHz rx, rauschen, digital-Squelch geschlossen, Test OFF 9600bit/s ca. -6MHz tx, oder rx mit digital-Squelch offen, Scrambler on. 1200bit/s -0.8Mhz Ein 8MHz AT ist im Prinzip ausreichend, aber mit langsamen Terminalprogrammen sollte es schon ein 10MHz AT oder besser sein. Ist Test eingeschaltet, wird neben dem Normalbetrieb der Rechner getestet, ob er in der Lage ist, die anfallenden Interrupts zeitgerecht zu verarbeiten. Bei 9600 bit/s fallen 4800 Interrupts/s an. Es darf dabei maximal 1/4800s vergehen, bis der Interrupt (meist vom BIOS oder DOS gesperrt) wieder freigegeben wird. Das Testergebnis wird beim Unload (L2PCX -U) als Anzahl der verlorenen Interrupts angegeben. Jeder verlorene Interrupt w„hrend ein Frame gesendet oder empfangen wird, bedeutet eine Zeitverschiebung und damit oft den Verlust des Frames. Treten z.B. beim Plattenzugriff Verluste auf, ist der Rechner kaum geeignet fr PR Betrieb mit L2PCX. Ist das Z„hlergebnis klein (z.B. 0 bis 50 w„hrend man ein bisschen im DOS herumgespielt hat), sollte es gehen, sofern dann das Terminalprogramm nicht selbst Interrupts blockiert. Man kann auch einen Kopfh”rer am TXD bei der RS232 anschliessen (Pin 2 oder 3) und den Ton anh”ren. Wird der Ton durch ein Knacken gest”rt, ist zu der Zeit kein AX.25-Betrieb m”glich. Der Ton kann nicht auf den Rechner-Lautsprecher ausgegeben werden. Testet man mit einem Terminalprogramm, kann man mit "esc V" den Z„hlerstand abfragen. Damit das Programm nicht auf dafr ungeeigneten Rechnern verwendet, und damit Mll auf einer Benutzerfrequenz erzeugt wird, kommt zur Erinnerung pro verlorenem Interrupt ein Frame "fm ERROR to nnnn" auf dem Monitorport. Jeder dieser Pseudo-Frames bedeutet, dass an dieser Stelle ein Frame nicht empfangen oder unleserlich gesendet worden w„re. Ergibt der Test der Interrupts brauchbare Werte und ist trotzdem kein guter Empfang m”glich, sollte man die genaue Baudrate der RS232 messen. Das geht mit einem Frequenzz„hler am TXD-Pin, wobei bei 9600Baud 4800Hz anstehen sollten. Bequemer aber nur mit der begrenzten Genauigkeit des Timers im PC kann mittels Abruf von (esc)V3 ein Frequenzmesser gestartet werden. Der sollte mindestens 1 Minute laufen, und mit (esc)V dann das Messergebnis in % von der soll-Baudrate zeigen. Ist der gemessene Wert unter ca. 99.8%, kann man mit dem -F Parameter beim Starten von L2PCX eine Korrektur eingeben. Dabei entsteht am Sendesignal ein systembedingter Bitjitter von +- 6%, was aber meistens gnstiger ist als eine stark abweichende Baudrate. -F6 entspricht +0.6%. Negative Werte muss man als 256-x angeben, -F251 entspricht -0.5%. Beispiel esc V: L2PCX 9601 99.85% 9601 ist der eingestellte Parameter, also hier 9600 Baud mit Scrambler 99.85% ist die gemessene tatsaechliche Baudrate. Die Messung wird mit zunehmender Messdauer genauer, aber nur so genau wie der 19.2Hz Ticker, ist also mit Vorsicht zu geniessen. Kommt gar keine %-Anzeige, weichen Ticker oder Baudrate extrem stark ab. Als "Interrupt-Killer" bekannt: Abhilfe: ------------------------------- -------- EMM-Treiber (RAM ber 1MB) Treiber nicht verwenden, schnellere testen Manche Terminalprogramme kein EMM verwenden oder anderes Terminal AMI-BIOS-Plattenansteuerung Anderes BIOS versuchen, z.B. Award BIOS Manche residente Programme Nicht Laden Tastaturtreiber, Maustreiber gibt meistens auch bessere Hinweis fr Betrieb am DAMA-Digi: Falls man mehrmals hintereinander Links aufzubauen gedenkt, sollte man erst den neuen Link aufbauen und hinterher den alten disconnecten. Oder, allgemein gesagt, immer einen Link zum Digi stehen lassen, damit die Sender- freigabe weiterhin vom Digi gesteuert wird. Erg„nzung fr die inzwischen vorhandenen Multiport-Version: ----------------------------------------------------------- Compiliert fr 4 Ports lassen sich damit 4 AX.25 Ports an 4 rs232- Schnittstellen gleichzeitig betreiben. Der PC muss in der Lage sein, die anfallende Rechenlast zu verkraften. 1200 Bit/s-Ports fallen dabei kaum ins Gewicht, fr z.b. 2 mal 9600 Bit/s und 2 mal 1200 Bit/s sollte es schon mindestens ein 16MHz 80286 sein, damit auch noch das Terminalprogramm Daten bearbeiten kann. Der Arbeitsspeicher (ca. 5.5k) pro Port wird nur bei aktiven Ports alloziert. Die verwendeten COM's mssen getrennte und freie Interrupts eingestellt haben. Startparameter als Beispiel: (Bedeutung siehe oben) L2PCX -p1 -c1 -b9601 -p2 -c3 -b9600 -p3 -c2 -i5 -b2400 -p4 -i11 -a760 -b1202 ============== -------------- ================== --------------------- Port 1 muss immer belegt sein, davon wird das L2-Timing abgeleitet. Default-Werte: p1 = com1 laut bios, int 4 9600bit/s scrambler ñ12V p2 = com2 laut bios, int 3 1200bit/s ñ12V p3 = com3 laut bios, int10 1200bit/s ñ12V p4 = com4 laut bios, int11 1200bit/s 2 mal +12V Bitrate, Scrambler, 12V k”nnen auch vom Terminalprogramm geschaltet werden. Sollten Ports zur Rechenzeitersparnis bei Laufendem L2PCX deaktiviert werden, so stelle man sie einfach auf 300Bit/s. Aktivierung der Ports ber den WA8DED-Hostmode: Rausconnecten mit C call portnummer (via...) z.B. C OE5XDR 3 DB0HOB Wird kein Port angegeben gilt Port 1. UI senden und Parameter: Erst mit Pport den gewnschten Port einstellen, ab dann gelten die Parameter fr diese Port. Z.B: P3 T25 Spezielle, ber das WA8DED-Interface nicht erreichbare Parameter werden mittels "Pnummer wert" eingeben. Dabei ist aber Vorsicht geboten, da die Werte ungeprft direkt an den L2 gehen. P105 Rx Puffer pro Link Maximalwert (RNR) P106 Tx Puffer pro Link Maximalwert (da der WA8DED-Hostmode keine Datenflusskontrolle hat, wird der Host blockiert, wenn er mehr Daten senden will = Terminal Stillstand) P108 Fullduplex (nur mit HDLC-FIFO-Karte) P111 Passall 1/0 (crc-check off) gilt nur fr Monitor P112 Echo 1/0 (nur mit HDLC-FIFO-Karte) P114 Sende-Port fr diesen L2-Port P115 (zus„tzlicher) Empfangs-Port fr Multi-Rx, Baud-, Modem-Diversity 0 = Port abgeschaltet im L2 P116 Digital squelch level 0..32256, ungerade Werte=Hardware-DCD (DCD-Pin), Werte ueber 32256 Soft-DCD aus P117 TXWait in 10ms, Wartezeit nachdem gesendet wurde bis wieder senden. P118 TXTail in 10ms P121 BaudSwitchDelay in Byte fr mixed Baud Betrieb. (nur mit FIFO-Karte) P122 Flag, Bitmuster w„hrend TxDelay, blich: 126 (7E) ohne scrambler sinnvoller: 0, das letzte Flag vor Daten ist immer 7E. Die Zahlen minus 100 gelten fr die 1 Port Version (P122 ist P22). Bei der Node-Version gibt es weiters: H Abfragen der Node-Info H0 Eingeben der Node-Info H1 Eingeben einer Route (Call des naechsten Digi ohne ssid) auf Port 1 Z.B. H0Test-Knoten H1DB0HOB H4OE5XDR Das Node-Call entspricht dem mit escI auf Port 0 eingegebenem Call. Node-Kommandos von aussen: C call connecten C OE5XBL C call digi connecten via digi C DB0PV DB0HOB C call port connecten auf port C DB0WGS 3 C call port digi connecten auf port via ... C OE5DXL 4 DB0PV DB0WGS C call ! call routen mit SABM+Infofeld, C OE5DXL ! DB0PV DB0WGS geht nur mit diesen Nodes! I Info-Zeile S Statistik U Users Q Quit Beschreibung des L2PCX von OE5DXL ================================= Der L2 im L2PCX hat mit keiner bekannten TNC-Software was zu tun, weder im Aufbau, noch wurde irgendwo was "abgekupfert". Der L2 besitzt eine leistungsfaehige pointerorientierte Schnittstelle aehnlich einem Filesystem mit Handles zu einem Host. Fr die Kompatibilit„t zu Terminalprogrammen wurde mit einem darauf aufgesetzten Interfaceprogramm eine WA8DED-Hostmode-Schnittstelle so weit wie moeglich nachgebildet. Die AX.25-Schnittstelle des L2 ist fuer eine schnelle HDLC-L1-Hardware oder DSP Modems mit Byte-Blocktransfer bis 15 Ports vollduplex ausgelegt. Die Adressenverwaltung erfolgt mit Hash-Tabellen, die Datenpuffer werden dynamisch verwaltet ohne Umkopieren von Daten. Die Scheduler der Timer und Warteschlangen sind mit Pointern und ohne Suchschleifen ausgelegt, womit der L2 mit minimaler CPU-Belastung auch bei sehr vielen Links und Frames/s auskommt. Die Sendewarteschlange enthaelt Links anstatt Frames, die nach hoeheren Baudraten Prioritaet haben koennen und bei gleicher Baudrate kann Links mit kurzen Frames Vorrang gegeben werden. Zu einem Sendeport koennen mehrere Empfangsports geschaltet werden, die auf verschiedenen Frequenzen und/oder mit unterschiedlichen Modulationen arbeiten koennen. Eine Baud/Modulationumschaltung bei den Sendeports bis 8 Baudraten kann, gesteuert vom Host oder Mycall/SSID, phasensynchron oder mit extra einstellbarem Delay erfolgen. Koppeln von 2 Links fuer Digipeater ohne Host ist eingebaut. Durch eine Softwareemulation und eine RS232-Schnittstelle mit einer einfachen Modemschaltung auf einer Ansteckplatine entstand eine preiswerte Moeglichkeit, mit 9600Baud FSK oder AFSK zu machen. Sind 4 COM's vorhanden, koennen bis 4 Ports betrieben werden. Die Erzeugung vom synchronen HDLC-Datenformat mittels einer asynchronen Schnittstelle erfordert einigen Rechenaufwand und ausreichende Kompatibilitaet der RS232-Chips. Es werden aber nur dokumentierte Parameter der RS232-Schnittstelle verwendet und, ausser an den beim Programmstart angegebenen COM-Ports und zugehoerigen Registern im Interrupt-Controller, wird kein weiterer Zugriff an der PC-Hardware gemacht. Da unter DOS jedes Programm beliebig auf die Hardware zugreifen, und auch Interrupts sperren kann, liegt es in der Verantwortung des Anwenders, einen ungestoerten Betrieb des Programmes zu ermoeglichen. L2PCX wird beim Aufruf automatisch resident installiert. Die Kommunikation mit einem Terminalprogramm erfolgt ueber einen Vektor (einen Zeiger) auf eine Einsprungadresse des WA8DED-Interface. Die Position des Vektors kann als Startparameter -I angeben werden und ist sonst auf 0FDh. Das Datenformat entspricht dem WA8DED- Hostmode und wird von vielen Hostmode-Terminals untersttzt. Hostmode-Befehle sind folgende enthalten: B Dama Slave Timeout oder dauer-DCD ignorieren (10ms) C Connect Call (via Call) Port 0 UI-Pfad D Disconnect F FRAC 1-127 (in Sekunden!) G Portstatus nach WA8DED H Info-Zeile und Links zu Nachbardigis in der Node-Version I Mycall (siehe unten) K Timestamp L Linkstatus nach WA8DED M 0 oder 1 Monitor aus/ein, 2 Info aus (nur Protokoll) N Retries O Maxframes 1-7 P Port Umschaltung, Spezialparameter, siehe unten R 0 oder 1 Digipeat ein/aus T Txdel in 10ms V siehe unten W Zufallszeit senden nach 0..W in 10ms. Y Maxlinks @B Anzahl freie Buffer @T3 Timer 3 in s. @I Ipoll bis ... Framelaenge. 0 ist aus. V Eingestellte Baudrate/Scrambler abfragen Baudratenzaehler abfragen (siehe unten) V3 BER-Test senden (wenn Srambler ein) Baudratenzaehler starten V4 BER-Test aus V8 BER-Test empfang ein V300 Baudrate einstellen ... Baudrate+1 Scrambler ein Baudrate+2 +-12V auf den Statusleitungen invertiert fuer PTT V9601 fuer 9600Baud mit Scrambler und +-12V fuer FSK Ansteckmodem L2PCX hat eine digitale Rauschsperre, am Funkgeraet sollte die Rauschsperre immer offen sein. Ein Framesammler ist ebenfalls eingebaut. Mycall, das/die eigenen Calls und SSID einstellen. ================================================== Der Layer 2 verwaltet maximal 8 verschiedene Adressen, die mit keiner Port-Nummer verbunden sind. Diese Calls gelten nur fuer ankommende Connects und dafuer wird jeweils ein neuer Port eroeffnet, solang Speicherplatz frei ist, und das WA8DED-Interface einen Port als frei meldet. Hier war viel Gedankenarbeit erforderlich, um die dynamische Portallozierung des L2 mit der statischen Mycall-Verwaltung von WA8DED zu verheiraten. Um nicht die 8 Adressen fuer ankommende Connects mit den im Terminal eingestellten Calls zum rausconnecten zu verschwenden, wird in der Mycall- Tabelle des Terminals nach gleichen Adressen gesucht und wenn mindestens 2 gleich sind, wird diese Adresse als von aussen zu connecten angenommen. Also immer mindestens 2 Ports mit dem gleichen Call und SSID belegen, wenn dieses Call und SSID von aussen erreichbar sein sollen. Die Persistance/Slottime-Kombination ist ueberfluessig in einem System, das von Natur aus keine Slots verwendet. Dabei waere ein Optimum bei Slottime=0 und Persistance=unendlich, also eine Gaussche Normalverteilung der Sendezeitpunkte nach DCD-Ende. L2PCX verwendet eine Linearverteilung im Zeitraum 0 bis zum W-Parameter in 10ms Schritten. Start DAMA Modus: Beim ersten Link mit einem DAMA-Master. Bei DAMA-Sendefreigabe werden die anstehenden Frames von allen Links gesendet. Ende DAMA Modus: Nachdem 1 Min. (oder Parameter B) kein Frame mit DAMA-Bit empfangen wurde. Config-Parameter bei SP: CFG=PORT0:5 Das Programm kann an Funkamateure kostenlos verteilt werden. Anregungen und Fehlermeldungen an OE5DXL @ DB0PV.#BAY.DEU.EU 73 de Chris