L2PCX, HAMWARE - (C) OE5DXL commercial usage prohibited
Resident multi-port AX.25-driver for IBM-compatible and plug-in-modem(s)
on RS232, 9600bit/s FSK with G3RUH-compatible Scrambler, powerd from
the RS232-port
ICs: TL064, 4013, 4538, circuit as picture available
Terminal-Interface with WA8DED-Hostmode.
L2PCX 1 Port PC
L2PCX4 1..4 Ports PC with 1 to 4 COM's
L2PCX4N 1..4 Ports PC with 1 to 4 COM's + resident Node w/,w/o Host
L2STX 1 Port ATARI ST, TT (also 1200 Baud with standard BAYCOM modem)
L2TTX 2 Ports ATARI TT with node
Printouts of the Modem-Circuit may only be distributed together with
the original on digital medium (disc, etc)
Operating 1200 Baud AFSK with original Baycom modem (different Pin
connection) is only possible with the Atari-Version. For 1200 baud
there are also different drivers available. But AFSK with L2PCX might
be useful if you want to operate several ports at the same time, with
or without node. For AFSK (on non-Atari-Version), the same interface
must be used, therefor you can use the circuit of the 9600 baud Modem,
by removing the FSK part at the HDLC-terminals and connect a AFSK
modem at those accordingly. Doing this, the time constants of the
Monoflops must be adjusted according to the baud rate.
Bevor building or bying a modem, you should test the PC without modem,
whether it's RS232-port is compatible, and whether the CPU can handle
the interrupts as fast as required (see below).
When transmitting without modem, or without noise from a receiver
connected to the modem, the digital squelch might "hang", causing
a undefined delay of the start of transmission. Operation should be
performed with opend squelch at the receiver.
you want to test a modem, L2PCX should be installed at the
according port, as otherwise the power supply in the status lines
might not be present.
starting parameters:
-U Unload
-Izahl Trap ofs WA8DED interface, default 253 = FDh
-Pzahl AX.25 Port (P1 is the first port)
-Bzahl size of data buffer in 32Byte, default 800
-xx Test Off, spares a few % CPU time
(it is not -xx, this will be published later.)
Parameter of the individual ports are set after -Pnumber:
-Pnr -Bbit/s bit/s Port 1 (150 to 9600), default 9601
add 1 to activate G3RUH-Scrambler (-B9601)
add 2 for setting DTR to +12 for AFSK Modems (-B1202)
-Pnr -Cnr COM port of PC, according to BIOS, default COM1
-Pnr -Inr Interrupt-number for RS232 (-I3), default I4
-Pnr -Anr Basis-adress of RS232, dezimal! (-A760) default 1016
-Pnr -Fnr fine-tune of baudrate with unexact RS232-Chips
-F1 causes +0.01%, maximum -F40
Parameters after -Px can all be combined with each other.
If you need parameters, starting L2PCX can be simplified by using a
.BAT-file
Start with: (examples)
! 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!
CPU time required on a 80286 with connected Modem and TRX (Landmark):
9600bit/s -3MHz rx, noise, digital-Squelch close, Test OFF
9600bit/s ca. -6MHz tx, or rx with digital-Squelch open, Scrambler on.
1200bit/s -0.8Mhz
A 8MHz AT should be enough, but with slow terminal programs, at least
a 10MHz AT is recommended.
Is test activated, the PC is tested, wether he is able to cope with
the created interrupts fast enough. At 9600 bits/s there are 4800
interrupts/s. Interrupts must not be locked longer than 1/4800s (by
BIOS or DOS mostly)
The result of the test is displayed at unload (L2PCX -u) as the number
of lost interrupts. A lost interrupts while RX or TX of a frame causes
a time delay, and therby the frame will be lost.
On small results (0..50 while playing around in DOS for some minutes)
it should be ok, unless the terminal program is locking interrupts
itself.
While testing in a terminal program, the counter can be read out by
"ESC V". To avoid the usage of the program on unsuited computers, for
each lost interrupt, a pseudo-frame "fm ERROR to nnnn"is displayed on
the monitor port.
If the test of interrupts shows good results, but still the modem
doesn't work reasonable ok, you should check the exact baud rate of
the rs232 pin. This is done with a QRG counter on the TXD-Pin, which
should show 4800Hz. With less accurace, the frequency can be checked
by software, by starting the check with "ESC V3". After that, wait
about 1 minute. After that, "ESC V" will show the result in % of the
correct baud rate. (i.e., it should show a value close to 100%).
Is the value below approx. 99.8%, a correction can be made with the
-F parameter, when loading L2PCX. This option causes a Bit-Jitter of
+- 6%, which still should be better in most cases, as baudrate far
from the desired value. E.g. -F6 is +0.6%, negativ Values must, in
case they should be required, can be entered as "256-x", e.g.
-F251 means -0.5%.
If ESC-V shows nothing at all, either baudrate, or the internal
19.2Hz-PC-Timer are comletely wrong.
Famous "Interrupt-Killer": What to do:
------------------------------- --------
EMM-driver (RAM over 1MB) Don't use it, or use different driver.
Some Terminalprograms Don't use EMM, or use different Terminal
AMI-BIOS-harddisc-contro Use different Bios, e.g. Award-BIOS
Some resident programs Don't use them
keybord, mouse driver Better one's do exist.
[some stuff ommited, included in older version in DXLMODEM.ZIP]
[not yet translated part about internals of the L2PCX driver follows]
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.
Für 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 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 enstand
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 unterstützt.
Hostmode-Befehle sind folgende enthalten:
B Dama Slave Timeout in s
C Connect Call(via Call) Port 0 UI-Pfad
D Disconnect
F FRAC 1-127
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
N Retries
M 0 oder 1 Monitor aus/ein, 2 Info aus (nur Protokoll)
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
V300 Baudrate einstellen
... Baudrate + 1 Scrambler ein
V9600 Baudrate + 2 +12V auf den Statusleitungen (fuer AFSK Modems)
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.
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