Tektronix 4006-1

  • lieber hier, als beim "Mein neustes Etwas" möchte ich ein paar Fragen im Zusammenhang mit dem Tektronix stellen.


    Schaltet man das Gerät aus und nach einer Weile wieder ein, sind noch Teile vom Bild erhalten:



    Allerdings fressen sich mit zeitlichem Abstand immer mehr helle Störstellen hinein. Bei meinem Gerät ist nach etwa 10 Minuten ausgeschaltet sein,nichts mehr vom Bild übrig nach erneutem Einschalten.

    Wie lang ist es zu erwarten, dass ein Bild den ausgeschalteten Zustand überlebt?


    Um das Terminal grafisch nutzen zu können, hatte Tektronix eine Software namens PLOT-10 im Angebot. Davon gab es wohl etliche verschiedene Binaries oder Bibliotheken für Fortran. Hier ist ein Dokument "Controlling the Tektronix 4006...."

    in dem beschrieben wird, was man tun kann um die grafische Ausgabe komfortabel in Basic zu nutzen. Das würde mir natürlich sehr gefallen, habt ihr da was am Start? Gerne würde ich natürlich die PDP8 unter OS/8 dazu nutzen.


    Lieben Gruß

    Volker

    Suche Teile und Geräte für DEC PDP8 Systeme, DEC PDP 11/40 (Unibus) und Teletype ASR-33+ ASR-35. Sowie Zubehör, Doku usw. aus dem Umfeld.

  • Allerdings fressen sich mit zeitlichem Abstand immer mehr helle Störstellen hinein. Bei meinem Gerät ist nach etwa 10 Minuten ausgeschaltet sein,nichts mehr vom Bild übrig nach erneutem Einschalten.

    Völlig normales Verhalten, keine Eingreifen nötig. Es war gar nie vorgesehen das Bilder eine Ein-Aus Zyklus uberleben.


    Zur ansteuerung : spezialsoftware wie PLOT10 oder das angepasste OS8-Basic ist nicht notwendig. Man muss lediglich die richtigen Command-bytes zum Terminal schicken, wie in der Doku beschrieben. Ich hab das damals direkt in BBC-Basic gemacht, klappte problemlos.

  • Danke für die Info. Die Doku habe ich gestern durchgesehen, das lässt sich natürlich selbst machen. Wobei der Zusammenbau der Steuerzeichen schon etwas eigen ist.

    Mag natürlich sein, dass der Mehrwert des PLOT10 nicht direkt erkennbar ist. Würde mich aber trotzdem reizen, besonders die Fortran Routinen.


    Auch habe ich in einer Doku etwas gelesen, was darauf deutet eine Hardcopy Skizze auf Calcomp Plotter ausgeben zu können. Aber ich fürchte dazu braucht man mehr als nur das Terminal und die Software (Plotter hätte ich).

    Suche Teile und Geräte für DEC PDP8 Systeme, DEC PDP 11/40 (Unibus) und Teletype ASR-33+ ASR-35. Sowie Zubehör, Doku usw. aus dem Umfeld.

  • Es gibt den Tektronix 4632 Hardcopy unit : der kan vom Terminal direkt angesteuert werden. Der schreibt die Daten auf fotografisches Papier mittels eine spezialrohre : volle Breite, aber nur eine einzige Bildzeile hoch.....


    Ich vermute das Calcomp Plotter nur uber extra Software angesteuert werden konnen.


    Naturlich wahre es nett PLOT10 oder die spezial-variante von OS8 Basic zu benutzen, aber die muss man erst mal finden.

    Ich hab irgenwo ein kleines "cheat sheet" zur programmierung des TEK4014, nur lasst sich das Teil mal wieder nicht finden....

  • Danke für die Info. Die Doku habe ich gestern durchgesehen, das lässt sich natürlich selbst machen. Wobei der Zusammenbau der Steuerzeichen schon etwas eigen ist.

    Mag natürlich sein, dass der Mehrwert des PLOT10 nicht direkt erkennbar ist. Würde mich aber trotzdem reizen, besonders die Fortran Routinen.


    Auch habe ich in einer Doku etwas gelesen, was darauf deutet eine Hardcopy Skizze auf Calcomp Plotter ausgeben zu können. Aber ich fürchte dazu braucht man mehr als nur das Terminal und die Software (Plotter hätte ich).

    Eine Quelle für PLOT10 habe ich im anderen Thread genannt.


    PLOT10 ist eine Bibliothek, die eine einheitliche Schnittstelle für diverse Ausgabegeräte bereitstellt. Viele wissenschaftliche Software nutzte PLOT10.


    Solche Vektorplotsoftware war damals praktisch Standard - jedes Rechenzentrum das etwas auf sich hielt, hatte so eine Plotsoftware mit der man die Ausgaben eines (meist Fortran) Programms auf diverse Ausgabegeräte oder auch auf Metafiles umlenken konnte. Viele basieren auf PLOT10, was man an moveto und lineto Kommandos mit den codes 3 und 2 erkennt.


    Ich habe mir auch eine Mini-Tek Bibliothek für Microsoft Fortran-80 unter CP/M geschrieben - verwendete ich auf einem AVR-CP/M Stick um meinen Tektronix-Emulator mit dem "blue-pill board" zu testen.

  • Genau, das Links ist die Hardcopy-unit. Technisch interessantes Gerat, aber nicht mehr verwendbar da das Spezialpapier seit mindestens 20 Jahre nicht mehr lieferbar ist.

    Rechts das Tektronix 4054. Der grosse Bruder des Tek4052 : ein 16 bit Computer auf AMD2901 basis, mit Bildspeicherrohre.

    Fur die Tektronix 4052 und 4054 biete ich einen DRP an : ein Nachbau des Debugging-tools von Tektronix. Das hilft Fehler im Digital-teil zu finden. Vorher muss aber die Powersupply in Ordnung sein.

  • Danke Martin,

    das sind die Fortran Routinen. Sehr schön und werde ich mich demnächst damit beschäftigen.

    Im zitierten Artikel werden aus Basic heraus Aufrufe gesteuert, die wohl auf vorhandene binär Bibliotheken verweisen. Hätte da ehlich gesagt etwas umfänglicheres zum Thema PLOT10 erwartet. Gerade, weil das so eine art Standart war, seinerzeit.

    Suche Teile und Geräte für DEC PDP8 Systeme, DEC PDP 11/40 (Unibus) und Teletype ASR-33+ ASR-35. Sowie Zubehör, Doku usw. aus dem Umfeld.

  • Die Assembler/BASIC Kombination in dem Artikel ist sehr rudimentär - PLOT10 hat da viel mehr Funktionalität, ist aber immer noch als Basis-Software zu verstehen. Es gab da auch kommerzielle Bibliotheken wie DISSPLA (ähnliches gibt es heute noch kommerziell), aber die habe ich leider nie in freier Wildbahn als Quellcode gesehen.

    Meine kleine Fortran Bibliothek für Tektronix-Ausgabe habe ich angehängt - sollte auf vielen Fortran 77 übersetzbar sein wobei LOGICAL*1 für ein Byte verwendet wird, was nicht unbedingt überall erlaubt ist. Wie gesagt, ursprünglich für MS-Fortran 3.44 unter CP/M geschrieben.


    Die Pixeldimensionen sind in TINIT mit DATA DX,DY,SX,SY /0.0,0.0,4095.0,3119.0/ für ein Tektronix 4014 definiert, das müsstest Du eventuell anpassen.


    TEKLIB.zip

  • Ich habe mein Tektronix über SmallBasic angesteuert, SendTerm ist die interessante Routine, die eine Linie vom Startpunkt sx,sy zum Endpunkt ex,ey zieht. Quick and Dirty (globale Variablen anstatt Parameter), war aber auch nie zum Veröffentlichen gedacht. Der Rest des Codes öffnet eine serielle Schnittstelle (über USB-RS232 Wandler) und zeichnet ein Muster aus Quadraten, die immer kleiner werden und dabei etwas gedreht werden.

  • Auch habe ich in einer Doku etwas gelesen, was darauf deutet eine Hardcopy Skizze auf Calcomp Plotter ausgeben zu können. Aber ich fürchte dazu braucht man mehr als nur das Terminal und die Software (Plotter hätte ich).

    Da muss ich meine eigene Angaben mal wiedersprechen : falls dein Terminal den Enhanced Graphics Module hat, dan kann man direkt angesteuerte mechanische Plotter verwenden.


    Mist......Hatte den Calcomp plotter vor 20 Jahren doch mitnehmen mussen....

  • TEKTRONIX Fortransoftware -Test an TeraTerm


    Hallo Martin Hepperle -


    ich habe mir mal den MS Fortran 3.44 und den L80 auch 3.44 besorgt.

    Dazu deine Software als TEKLIB und TEKTEST als .zip geangelt.

    Schöne Arbeit für den Tektronix - Grafikbereich, Danke.

    für MS-Fortran 3.44 unter CP/M geschrieben

    Ich arbeite mit einer alphaTronic P2U mit cp/m unter 100h TPA. Über den Printeranschluss mit 9600 Bd an ein Labtop unter TeraTerm.


    Vorab - ich habe "C Unit 2 is preassigned to LST:" passend geändert.

    Die TEKLIB und TEK1 sind alle .FOR- Quellen glatt durchgelaufen.


    Leider sehe ich nicht die ersten Textanzeigen als zu zeichnenden Schritzug.

    Da scheint irgenwie bei jedem Zeichen gewisse Elemente ausreissen -

    noch habe ich bisher keine Tiefenforschung angefangen.

    Zur besseren Ansicht - habe ich in dem TEK1.COM nur die Drehungen dem "Hello World:" unterdrückt.


    Mit Fortran 3.44 sollte eigentlich dem LEVEL IV Fortran entsprechen.

    Oder gibt es andere Nebenforderungen für die Schriftausgabe ( Vektoren im Selbstbau) für die TEK Emulation beim TeraTerm?


    Ich werde mal das TEKTEST.FOR ( ohne Schrift) mal später probieren.

    Vielen Dank vorab und Grüße.

  • CODE vom 3.44 F80 nach FORTRAN IV


    macht den INDEX Zugriff m.E. richtig.

    wobei LOGICAL*1 für ein Byte

    Es geht um das Testprogramm TEK1.FOR.


    LOGICAL kennt der F80 richtig als ein Byte je Feldelement.


    Meine Untersuchung:

    Das Bytefeld TEXT(12) muss ja auf die TEXT+0 Adresse mit dem Index 1 erreichen. Das wird ja richtig mit dem LXI D,TEXT-1 (um ein byte zurück in DE geladen). Nun mit der Laufvariablen I über LHLD I geladen.


    Bei Standard FORTRAN IV - so meine ich - wird mit 1 der Index begonnen. Dann also zum ersten ELEMENT vom TEXT Bytefeld - wird tatsächlich auf das Zeichen "H" mit dem DAD D - jetzt mit HL gezeigt. Und nun das Zeichen wird geangelt!!! Mit MOV A,M ... siehe CODE-LISTING Auszug.

    Vom Verfahren wäre der Indexzugriff ok - aber bei der Schleife mit I= 0,11 wird falsch angefangen. Das erste beliebige Zeichen (Byte) wird verwendet in der Schleife, ist aber nicht ein ELEMENT von TEXT.


    Also TEK1.FOR habe ich mal den CODE vom F80 ( Version 3.44 - die ich benutze) unten abgelegt.

    Daher wäre die Übersetzung für ein INDEX -Verfahren richtig behandelt!

    Nur der Compiler geht bei Feldern offenbar von einem ersten INDEX als :== ! aus.


    Klar, bei anderen FORTRAN LEVEL Varianten kennen Felder mit Angaben der Indexbegrenzungen.

    Wie z.B Type FELD(-4..7) - das ist sowas wie es schon früh bei ALGOL gab.

    Diese Stelle ist der PUNKT zu betrachten:

    Code
    *****   006F'   LHLD    I
    *****   0072'   LXI     D,TEXT-0001 ;first element must start
    *****   0075'   DAD     D           ;on TEXT(1) -standard FORTRAN
    *****   0076'   MOV     A,M         ;so if I=1 than TEXT-1 -> is right

    Die INDEX-Verschiebung wäre also hier nur der "falscher ANFANG" dargestellt ( geplottet). Daher könnten noch evtl. andere Indexzugriffe bei den Character-Subroutine, +++ ? - oder sonst wo was zum falschen PLOT erfolgen ??

    Das könnte eher der Erfinder der Quellprogrammteilen leicht erkennen.

    Auf eine Weisheit zu der Problembeseitigung wäre prima.


    Grüße helwie44 †

  • TEK1.FOR in Arbeit - Falsche Grafik


    So sehen die Daten über den LOOP mit der original Schleife vom Kontrolldruck ( auf TTY:) aus.

    Die Fehler bei dem Zeichen-Plot entstehen aber offenbar in einigen Txxxx.FOR Unterprogrammen.

    Also alle Txxx.FOR ( die subroutine zum Zeichen) sind ja alle zu einer TEKLIB.REL zusammen gefasst.

    Für das Handling der F80, L80, LIB80 usw - ist kein Problem. Selbst vor sehr... sehr vielen Jahren her habe ich die Software Tools im Griff. Meistens.


    45 WRITE(1,99)I,X,Y,ICHR,ICHR,SIZE,ANNGLE

    Die erste Spalte zeigt und folgende Spalten:

    ::= I ,

    ..= X ,

    ::= Y,

    ::= ICHR _als Integer print

    .:= ICHR _als ASCII Format

    ::= SIZE _120.00 ok

    ::= ANGEL_ .00 ok

    Klar sieht man das bei dem gezeigten "d" Ende der Schleife ist.

    Es fehlt der ":" Doppelpunkt, wie in der DATA definiert is .


    Eigentlich kein Problem - nur vermutlich etwas tiefer in anderen Subroutinen könnten die "wilden Zägezahn-Schriftzeichen" möglich mit dort ähnliche Index-Bereiche die Ursache sind.

    Teilansicht auf dem TTY:-TeraTerm und das Ergebnis vom TerTerm TEK Window.

  • Hallo,


    der Index-Fehler kommt bei MS-Fortran vor 3.44 vor.

    Das macht einige Sachen bei der Parameterübergabe einfach falsch.


    Ich hatte anfangs mit Version 3.4 gearbeitet und dabei diesen und andere Fehler gefunden.

    Versionen vor 3.44 sind aus meiner Sicht unbrauchbar.

    Ich glaube ich hatte auch eine vermeintliche 3.44 Version gefunden, die dann aber doch 3.4 war.

    Das kann man prüfen wenn man den Compiler ein Listing /L erzeugen lässt. Im Listing steht dann oben die Versionsnummer.


    Inzwischen verwende ich meistens INTEGER*1 anstelle von LOGICAL*1 ist aber egal.


    In Fortran vor Version 77 beginnen Feldindizes immer bei 1. Erst ab FTN-77 kann man beliebige Startindizes bei der Dimensionierung vorgeben z.B. REAL X(-7:11).

    Sicherheitshalber nochmal meine aktuellen Quellen von meinem AVR-CP/M System.


    Martin


    TECLIB.ZIP

  • Hallo;

    Ich hangel mich schon durch deinen .FOR Quellen ( symbolisch var = var +1 von dir korrigiert sind ?) mal durch.

    Ich habe ja im Moment genau F80 als 3.44 Version im Einsatz.


    Da sollten bisher die richtigen Indices im CODE generiert werden.

    Ich bin aber noch nicht durch. Es gibt's ja sonst nichts tu tuen. (kl. Scherz).

  • ... nchmal zur Un-Klarstellung:


    Ich bin mir selbst nicht mehr sicher, welche Version ich damals hier abgelegt hatte.

    Eventuell war das eine, die ich für 3.4 (das ich für 3.44 gehalten hatte) korrigiert hatte, d.h. die dort falschen Feldzugriffe in meinem Code umgangen hatte.


    Die gerade geschickte Version sollte mit 3.44 funktionieren. Aus den Einzeldateien kann man mit LIB80 eine Bibliothek bauen (teklib-rel.zip)


    Martin

  • Hallo,

    9600 Baud ist vll etwas schnell fur den 4006 ?

    Und erwartet die 4006 nicht 7 bit, anstelle vom sonst ueblichen 8-N-1 ?

    Für einen realen 4006 war die Übertrgung weniger als 9600 Bd.

    Ich kann mich nicht mehr aus ca. 1975 erinnern, wie ich damals mit einem realen 4006 - mit welchen V24 Parametern ich benutzte? Aber es könnten 4800 Bd gewesen oder viel weniger sein???

    (es soll doch eine .pdf 4006 Beschreibung geben?)


    Aus dier Zeit hatte ich für sks eine kleinen IKP entwickelt.

    Dort befindet sich ein kleiner Beitrag zu einer Textronix 4006 Anwendung.


    Bei meinen kleinen Tests - benutze ich ja über die TeraTerm eine TEK-Emulation.

    Da geht schon bis 38400 Bd die Brause ab.


    Bei der Übertragung werden - soweit ich meine - immer nur 7Bit Datenbits verwendet.

    Klar das dürfte keine Kollision mit einer N81 V24 Einstellung als Sender ( hier alphaTronic P2U) und zu dem WIN7 PC ) und beide Einheiten gleich eingestellt werden.


    Grüße

  • Hallo,

    prima das die teklib.rel (apr-2020) offenbar mit dem F80 3.44 Vers. die .FOR Programmteile übersetzt wurden - danke.

    eine Bibliothek bauen (teklib-rel.zip)

    Nur zur Erinnerung bei vorherigen Beiträgen von mir:

    Vorher und beim TEK1 habe ich die FNT Ausgabeneinheiten dort als NDEV / IDEV mit = 2, also dem PRINTER

    zugeordnet. Weil ich einfach den P2-Printeranschluss mit 19200 Bd an die TeraTerm TEK V24 verbungen habe.


    TEST-Beispiel mal versuchen.

    Dein TEK1.FOR Beispiel ( Test-Fonts) habe ich mit dem Index - klar jetzt auf I=1,12 geändert.

    Übersetzt und mit deiner neuen TEKLIB.REL lief der Link (L80) ohne Probleme.


    Aber oh- Schreck - der ganzer TEK-Datenstrom landet fix immer auf meine alphaTronic P2U - also dem Bildschirm. Den Kram zeige ich hier nicht!

    Da habe ich danach gleich mal die kleinen Assemblerinstruktionen mit dem SID angesehen.


    Du hast offenbar den OUTPUT - Textronik Datenstrom mit einer TCONS ( Tek CONSole output ? möglich die Namensgebung, oder?) etwas optimiert. Aber leider die Ausgabeeinheit ist jetzt immer TTY: - mit der schön von dir auch noch etwas verkleinert die teklib.rel hast.

    Nach meinem PATCH ist dann endlich dieses Ergebnis. Ich meine wie es gedacht war.


    Plot Beisiel auf der TeraTerm TEK Emulation - geht doch.


    Ich selbst stricke mir eine etwa die TCONS ... aber mit der ( TTY: oder RrN:) - mal sehen.

    Alles kein Problem für einige Modifikationen.

    Vielen Dank und ich schau mal später was ich mache.

    Grüße helwie44 †

  • ... ah, sehr schön - mühsam ernährt sich das Eichhörnchen ...


    Ich hatte diese TCONS Routine (Alle meine Tektronix Routinen fangen mit "T" an) geschrieben, da mit Fortran immer Steuerzeichen (1H , 1H+, 1H0, 1H1 zur Vorschubsteuerung verwendet werden und es keinen Standard-Fortran Weg gibt, dies zu unterdrücken (manche Fortrans haben da Nicht-Standard Erweiterungen, bei MS-Fortran 3.4 konnte ich auf die Konsole als Binärdatei schreiben, das mochte dann 3.44 nicht mehr).


    Die Assembler Datei hatte ich im Archiv vergessen mit einzupacken ... 'tschuldigung.


  • Alles in der richtigen Spur.


    Evtl. in der Routine einfach z.B. im Kopf,


    LDA IDEV ; Ausgabe-Einheit Variable ist ja im TINIT.FOR

    MOV C,A ; cp/m Functioncode for device

    .....

    oder noch FNT device to cp/m Function-device...mehr Logik...,

    aber es gibts immer was zu werkeln.

  • Ja, so ähnlich habe ich das nun gelöst.


    Eigentlich hatte ich die TEKLIB schon zu den Akten gelegt, da ich mich danach eher auf GSX und eine entsprechende GLIB verlegt hatte.


    Damit das Ganze aber wieder stimmig ist, habe ich die TCONS Routine nochmals überarbeitet.

    Sie heißt nun TSOUT weil sie _T_ektronix _S_tring _OUT_givet. Sie ist nun nicht mehr auf die TTY Konsole fixiert.


    TSOUT greift auf die Variable IDEV im Fortran COMMON Block /SCALE/ zu und entnimmt daraus die Fortran Logical Unit auf die der Tektronix-Datenstrom fliessen soll.

    Dazu führt sie nun zwar jedesmal eine kleine Indexberechnung für einen Tabellenzugriff durch, aber das fällt nicht groß ins Gewicht.

    Ich habe sie in Z80 Mnemonics umgeschrieben, was mir klarer als die 8080 Mnemonics erscheint und ich konnte den tollen DJNZ Opcode verwenden - Geschmacksfrage.

    Man kann jetzt also wieder wie in der ursprünglichen (an das fehlerhafte MS-FTN 3.4 angepassten) Version mit TINIT(NDEV) ein Ausgabegerät (1,3,5=TTY:, 2=LST:, 3=PUN:) wählen und die Ausgabe wird auf das entsprechende Gerät umgeleitet.

    LST: habe ich nicht getestet, da ich kein Grafik-Ausgabeterminal mit Parallel-Schnittstelle habe.

    Das könnte ich theoretisch mit meinem Centronics -> Seriell Umsetzer testen, aber ich habe keinen Centronics-Centronic Female-Female Adapter.


    Die Ausgabe auf PUN: habe ich jedenfalls mit einem HP 150 im Tektronix-Kompatibilitätsmodus getestet und es funktioniert wie es soll.

    Nur bei den Teraterm-spezifischen Einschalt- und Ausschaltsequenzen zeigt er natürlich ein, zwei Zeichen Unfug an.

    Das könnte man in TINIT und TCLOSE leicht ändern, aber dann würde Teraterm nicht mehr so schn automatisch zwischen VT100 und Tektronix Fenster hin- und her wechseln.


    Kleine Beschleunigungsmöglichkeiten wären:

    - anstelle das aktuelle Ausgabegerät jedesmal aus der Tabelle zu lesen, dieses einmal bei TINIT aktiv setzen,

    - generell alle TSOUT Ausgaben puffern und erst dann ausgeben, wenn z.B. 128 Bytes zusammengekommen sind und bei TCLOSE der Rest ausspülen. Dann würde die Ausgabe aber je nach Puffergröße etwas hinterherhumpeln.


    Beides dürfte sicher keinen extremen Effekt erzielen, sodass ich das als Übung für den interessierten Leser offen lasse.


    Na ja, ich denke erstmal ist das ausreichend für die praktische Anwendung.


    Viel Spaß am tüfteln,

    Martin

  • Zu den vorher schon hier aufgeführten Laufzeitoptimierungen bringen nichts richtiges - ganz evtl. wenig.

    Wie Martin Hepperle schon gesagt hat.


    Ich meine die meiste Rechenlaufzeit wird bei dem CLIP -ing verbraucht, und/ oder bei den Typenwandlungen.


    Ich habe keine merklichen Laufzeiten - Unterschieden - ob ich mit 4800 Bd. oder mit 19200 Bd arbeite.

    Selbst ich meine, auch etwa bei 1200 Bd.- hängt die Ausgabegeschwindigkeit an den Rechenzeiten und nicht im Verhältnis zur reinen V24 - Übertragungsgeschwindigkeit.


    Ich habe bisher nicht tief in die Txxx.FOR Quellen reingesehen.