TNS-UPP-NET

Teile dieses Themas wurden möglicherweise maschinell übersetzt.

Inhalt
Eine Netzwerkkarte für TNS-8-Bit-Computer (TNS-GC, TNS-MC), die den Anschluss an das TNS-NET-Netzwerk ermöglicht. Kommunikationsgeschwindigkeit 100 kbps. Sein teilweises Schaltungsäquivalent befindet sich im TNS HC-08.

Die Beschreibung basiert auf der Originaldokumentation (popis_modulu_upp_net, uzivatelska_dok_upp_net) und auf der umgekehrten Analyse der Firmware (ROM 2 KB, Segment 0x0000–0x07FF); Analyse des ROM UPP-NET und Originaldokumentation (Slušovice, ca. 1988).

Hinweis: Die Originaldokumentation enthält geringfügige Fehler (8255 × PIO-Verwirrung, inkonsistent

IO-Nummerierung) – unten sind die korrigierten Werte aufgeführt, die anhand des Quellcodes überprüft wurden.

== 1. Prinzip der ==-Funktion

Das UPP-NET-Modul dient zur Anbindung von TNS-Rechnern an ein lokales LAN (Local Area Network). Die maximale Anzahl der Netzwerkteilnehmer beträgt 64. Im Netzwerk können TNS GC-, TNS SC- (bei Verwendung des UPP-NET-Moduls) und TNS HC-Computer angeschlossen werden, die bereits über eine schnelle Leitungsschnittstelle auf dem Motherboard verfügen.

Die Datenübertragung zwischen Netzwerkteilnehmern erfolgt auf physikalischer Ebene im SDLC-Synchronprotokoll mit einem unmodulierten Signal und wird durch den integrierten Schaltkreis Z80-SIO gesteuert. Die vom SIO übertragenen Daten werden im Manchester-Code kodiert und an den Sender übertragen. Die empfangenen Daten werden im Empfänger verarbeitet, dekodiert und dem SIO zugeführt.

Der Betrieb des gesamten Systems wird durch eine Zeitbasis gesteuert, die von einem 10-MHz-Quarz abgeleitet ist. Die galvanische Trennung des Moduls vom Netz wird durch eine Transformatorkopplung gewährleistet.

Der verwendete Manchester-Code ermöglicht es, das für die synchrone Übertragung notwendige Taktsignal des Senders in die übertragenen Daten zu kodieren. Darüber hinaus enthält das so kodierte Signal keinen Gleichanteil.

Jede Station auf der Linie hat ihre eigene Benutzernummer, die an den DIP-Schaltern 1 bis 6 des Schalterfeldes SW1 eingestellt wird, wobei Schalter 1 der Adressreihenfolge 0 usw. entspricht. Es dürfen nicht 2 Stationen mit identischen Benutzernummern auf einer Linie sein.

2. Technische Beschreibung

= 2.1 Standardbestandteil von UPP-NET (UPP-UNIVERSAL-Board) =

Die Grundschaltung der Karte ist ein Z-80-Mikroprozessor (IO 3). Das CPU-Steuerungsprogramm wird im EPROM-Speicher (IO 4) im Adressraum 0 bis 1000h abgelegt. Das Datensegment – ​​RAM-Speicher 1 kB – besteht aus zwei Schaltkreisen vom Typ 2114 (IO 6, IO 7). Der Adressraum des RAM ist ab Adresse 4000h fest verortet und belegt insgesamt vier doppelt adressierte „Kilos“ (Platz 4000-5000h).

Der Standardteil des UPP-NET-Moduls enthält auch die Schaltkreise Z80-PIO (IO 1) und Z80-CTC (IO 2), die im Allgemeinen fast vollständig für eine bestimmte Anwendung der Karte vom Typ UPP verwendbar sind.

Konkret wird in der UPP-NET-Anwendung die CTC-Schaltung nur dazu verwendet, die Kommunikation von der CPU des TNS-Computers zur UPP-NET-Karte sicherzustellen (sie gewährleistet die Erzeugung von Interrupts für den UPP-Modulprozessor). An der Kommunikation der UPP-NET-Karte mit dem TNS-Prozessor ist auch der PIO-Schaltkreis mit Tor „B“ beteiligt – über die Bits 0 und 1 dieses Tors liest der Peripherieprozessor die Statusflags der Ein- und Ausgangspuffer des UPP-NET-Moduls. Tor „A“ der PIO-Schaltung dient zur Identifizierung der am DIP-Schalter SW1 eingestellten Stationsnummer.

Die PIO- und CTC-Schaltkreise sind über ihre IEI-Eingänge und IEO-Ausgänge in einer Prioritäts-Interrupt-Kette verbunden, wobei CTC standardmäßig die höchste Interrupt-Priorität hat. Im Fall der UPP-NET-Anwendung ist ihr IEI-Eingang mit dem IEO-Ausgang des SIO-Schaltkreises des Anwendungsteils verbunden, sodass der SIO-Schaltkreis standardmäßig die höchste Interrupt-Priorität hat.

Zur Dekodierung der Ports IO1 (PIO) und IO2 (CTC) wird eine lineare Adressierung verwendet, sodass der PIO die Standardadressen F4 bis F7h und die CTC-Schaltung die Adressen F8 bis FBh belegt. Die SIO-Schaltung des UPP-NET-Anwendungsteils verfügt über Adressen EC bis EFh.

Das UPP-Modul enthält zwei Adressdecoder: einen für die Kommunikation mit dem TNS (IO 9), also die Auflösung der Adressen des UPP-Moduls auf dem TNS-Bus, und einen (IO 8) für die Aufteilung des Adressraums des UPP selbst. Der erste Decoder (IO 9 – PROMka 745571) stellt die Standardadressen des UPP-NET-Moduls im Bereich A0 bis A3h ein. Der zweite Decoder (IO 8) wird durch die 3205-Schaltung implementiert und teilt den Speicheradressraum zwischen dem EPROM-Speicherbereich, RAM und Speicherplatz auf

entsprechend den Eingangs- und Ausgangspufferadressen in den TNS-Busschnittstellenschaltungen, die dem Speicherraum zugeordnet sind, d. h. UPP-NET liest und sendet Daten an TNS mithilfe von Lese- und Schreibvorgängen im Speicher.

= 2.2 Beschreibung der Anbindung des UPP-NET-Anwendungsteils =

Die vom SIO im Rhythmus des gesendeten Sendetakts TxC übertragenen TxD-Daten werden im SEEQ-Manchester-Encoder, gebildet aus den Schaltkreisen IO 27, IO 28.A,B,D und IO 29.A, kodiert. Das codierte Signal wird dem Leitungssender zugeführt, der aus einer 75325-Schaltung besteht, an deren Ausgänge ein Leitungserreger-Trenntransformator angeschlossen ist.

Der Betrieb des Senders kann blockiert werden, indem log.1 an den S2-Eingang der Schaltung 74325 angelegt wird. Diese Blockierung des Senders ist für die Zusammenarbeit mehrerer Sender auf der Leitung erforderlich und wird vom Schaltkreis des Hardware-Leitungsteilnehmers, gebildet durch IO 31.A, gesteuert.

Die Empfängerwicklung befindet sich ebenfalls am Netztransformator. Der Empfänger besteht aus einem schnellen Komparator, der über eine durch positive Rückkopplung eingestellte Hysterese von ca. 100 mV verfügt. Am Eingang des Komparators befindet sich eine Schutzschaltung. Der Ausgang des Komparators wird sowohl dem Manchester-Decoder als auch dem monostabilen Flip-Flop IO 26.A mit einer Zeitkonstante von etwa 50 μs zugeführt, das als Leitungsbelegungsanzeige dient und vom Prozessor am Eingang PA7 der PIO-Schaltung (Gate A, Bit 7) gelesen wird.

Informationen über die Leitungsbelegung werden auch an den HW-Leitungsbesetzer IO 31.A (wenn die Leitung belegt ist, kann unsere Station sie nicht mehr belegen) und an den WAIT-Signalgenerator, bestehend aus IO 29.C und T1 (wird in der aktuellen Softwareversion jedoch nicht verwendet) übermittelt.

Der Anschluss des Manchester-Decoders basiert auf der Lösung der Firma SEEQ und besteht aus den Schaltkreisen IO 23.A, IO 24, IO 25 und IO 30.C,D. Die Z80-SIO-Schaltung empfängt RxD-Daten und RxC-Takt vom Decoder.

Das Timing aller Schaltkreise wird von einem 10-MHz-Quarzoszillator abgeleitet, der aus Wechselrichtern besteht. Daraus werden nach der Division die Frequenzen für den Betrieb der Verzögerer aus den Schieberegistern im Decoder und für die Steuerung des Encoders abgeleitet.

Mit dem Adress-PROM wird die UPP-NET-Karte im Bereich 0A0H bis 0A4H angesprochen (siehe UPP-Standardbeschreibung).

3. Jumper und Schalter

Das UPP-NET-Modul erfordert keine Jumper-Einstellungen. Die auf UPP-Platinen standardmäßig vorhandenen Jumper (quadratische Lötpads) werden in der UPP-NET-Anwendung direkt in der Leiterplatte gescannt und somit fixiert.

Das UPP-NET-Modul enthält einen „DIP-Schalter“ mit acht Schaltern, von denen sechs zur Einstellung der Adresse der Benutzerstation im Adressbereich 0 bis 3F hexadezimal (also insgesamt 64 Stationen) dienen und die restlichen zwei Schalter gesperrt sind. Das niederwertigste Bit der 6-Bit-Stationsadresse wird über einen Schalter auf der dem TNS-Busanschluss zugewandten Seite des DIP-Schaltergehäuses, also auf der Tastenseite des IO-Gehäuses, eingestellt. In Richtung vom DIP-Schaltergehäuse zur Vorderseite mit den Anschlüssen für das Koaxialkabel sind nacheinander Schalter mit höherwertigen Bits der Stationsadresse angeordnet. Gleichzeitig setzt der geöffnete Schalter das Bit auf log.1 (die Seite, die am DIP-Schalter mit der Nummer 0 gekennzeichnet ist) und der geschlossene Schalter gibt log.0 (Seite 1) aus.

4. Karte der I/O-Ports

= 4.1 Interne CPU-Ports am UPP-NET-Modul =

Schaltung | Hafen | Funktionen
----------|-------|------------------------------------------------
CTC ch.0 | 0xF8 | CTC-Interrupt-Basisvektor (0x40 schreiben = Basis)
CTC Kap.1 | 0xF9 | Zurücksetzen (CTC1, unbenutzt)
CTC Kap.2 | 0xFA | Zurücksetzen (CTC2, unbenutzt)
CTC Kap.3 | 0xFB | Leitungsimpulszähler/Interruptgenerator für die TNS-Schreiberkennung
|       | WR: 0xD7 = Zählermodus, steigende Flanke, Zeitkonstante folgt
|       | Zeitkonstante = 1 → Unterbrechung nach jedem Impuls
PIO UND Daten| 0xF4 | Lesen: Bit7 = Leitung belegt (monostabil 50 μs)
|       |        Bits 5:0 = Stationsadresse über DIP-Schalter
PIO UND Management | 0xF6 | PIO-Gate-A-Einstellung (Modus 3 = Bitmodus, 0xFF = alle Eingänge)
PIO B-Daten| 0xF5 | Bit 7 = Sendersperre (1 = Sperre)
|       | Bit 6 = TX-Aktivierung (1 = TX-Aktivierung)
|       | Bit 5 = Status „Leitung besetzt“ (1 = Leitung frei für TX)
|       | Bit 1 = Datenflag im TNS-Eingangspuffer (für Hauptschleife)
|       | Bit 0 = TX-/Übertragungsstatus
PIO B-Management | 0xF7 | Gate B PIO-Einstellungen
SIO A-Daten| 0xEC | Lesen = vom Netzwerk empfangenes Byte, Schreiben = zu übertragendes Byte
SIO A-Steuerung.| 0xEE | SIO-Kanal-A-Status (Lesen) / WRx-Befehle (Schreiben)
SIO B-Daten| 0xED | (wird nicht im Netzwerkcode verwendet)
SIO B-Steuerung.| 0xEF | SIO-Kanal B WRx-Befehle – Einstellung des Interrupt-Vektors WR2

= 4.2 SIO-Ports-Schlüsselbits A-Steuerung (0xEE), wenn gelesen (RR0) =

Bit 0 (rrca → CF): RX-Zeichen verfügbar
Bit 1: Nullzählung (CRC)
Bit 2 (Bit 2, a): TX-Puffer leer
Bit 5 (Bit 5, a): SYNC/HUNT (wartet auf SDLC-Flag)
Bit 6 (Bit 6, a): DCD (Data Carrier Detect / Line Active)
CF nach rlca: Entspricht Bit 7 = Break/Abort empfangen

= 4.3 Standard-UPP-NET-Adressen von der TNS-Busseite (Host-Port) =

Adresse TNS | Hex | Funktionen
-----------|------|------------------------------------------------
UPP-Eingang | 0xA0 | Schreiben (TNS→UPP): Zielknotennummer (0-63)
UPP-Status1 | 0xA1 | Status des Eingangsregisters lesen
UPP-Ausgabe | 0xA2 | UPP-Ausgaberegister lesen (UPP→TNS)
UPP-Status2 | 0xA3 | Lesen des Status des Ausgangsregisters

5. Gemeinsam genutzte SRAM-Karte (Ansicht vom Host-TNS)

Der Host-TNS kommuniziert mit UPP-NET über einen zugeordneten gemeinsam genutzten Speicherbereich

des eigenen Adressraums der CPU Z80 auf der UPP-Karte:

UPP-CPU-Adresse | Funktion (Zugriff von UPP-CPU)
--------------|------------------------------------------------
0x0000–0x0FFF | EPROM (Firmware, schreibgeschützt)
0x4000–0x4FFF | RAM (interne Variablen und Puffer, siehe unten)
0x5000–0x5FFF | Auslesen des Eingabepuffers (= was TNS an Adresse 0xA0 geschrieben hat)
| Format: [target_node(1B)] dann [length(1B)][data...]
| Besondere Werte: 0x80 = UPP-Hard-Reset
0x6000–0x6FFF | Schreiben in den Ausgabepuffer (UPP → TNS), OHNE Aktivierung von -SI1
0x7000–0x7FFF | Schreiben in den Ausgabepuffer (UPP → TNS), mit Aktivierung von -SI1
| (TNS-Prozessor-Interrupt)

6. Internes RAM-Layout 0x4000–0x43FF

Adresse | Länge | Titel | Beschreibung
------------|-------|-----------------------|------------------------------------------
0x4000–403F | 64 B | tx_seq_table | Tabelle der TX-Sequenznummern (pro Knoten)
|       |                        | unk_4000[n] = nächste TX-Sequenz für Knoten n
|       |                        | Bit7=1: Broadcast-/Sondermodus
|       |                        | Initialisierung: 0x80 (nicht initialisiert)
0x4040–407F | 64 B | rx_seq_table | Tabelle der RX-Sequenznummern (pro Knoten)
|       |                        |