\documentstyle[11pt,german,DIN_A4]{article}

\frenchspacing

\topmargin0cm

\headheight0pt

\headsep0pt

%\addtolength{\topmargin}{-2cm}

\parindent 0pt 

\parskip1.2ex plus0.3ex minus 0.3ex

\sloppy

\begin{document}

%*********************************************************************



\title{{\Huge\bf S I G N A L I S} \\[2.5cm]

       \normalsize{Programmbeschreibung V4.4} \\[1.5cm]

       }

\author{Detlef St�ckert \\[7cm]

       \date{\normalsize{D�sseldorf \\ Januar 1992}}

        }

\maketitle

%*********************************************************************

\newpage

\section*{Zur Benutzung}



Signalis ist ein Programm, da� dazu dient Me�daten auszuwerten und geeignet 
darzustellen. Es gibt ja nun eine ganze Reihe von Programmen die �hnliches 
k�nnen. Der Vorteil von SIGNALIS liegt vor allem in der einfachen 
Bedienbarkeit. Fehlbedienungen sind weitgehendst ausgeschaltet. Menue-Punkte, 
die noch nicht sinnvoll anwendbar sind (z.B. weil noch keine Daten vorhanden 
sind), sind deaktiviert worden.



SIGNALIS ist mit GFA-BASIC V3.07 programmiert. Es darf frei kopiert und 
weitergegeben werden. Bedingung dabei ist, dass die unten genannten Files 
komplett weitergegeben werden.



Zu Signalis geh�ren folgende Files:

\begin{itemize}

\item{Ordner  DATEIEN  Beispiele}

\item{Ordner  DRUCKER  Verschiedene Druckertreiber (sind in SIGNALIS.TRB 
      umzubenennen)}

\item{READ.ME       This (Nicht mehr aktualisiert ab V4.39, bitte das 
                    TEX-File benutzen}

\item{READ ME.TEX   Das gleiche in TEX}

\item{SIGNALIS.INF  Mit 'Einstellung sichern' erzeugte Datei}

\item{SIGNALIS.TRB  Druckertreiber}

\item{SIGNALIS.PRG  Das Programm}

\item{SIGNALIS.RSC  Das Resource-File}

\end{itemize}

\newpage



\subsection*{Installation}



Die einzelnen Files (*.RSC,*.TRB, *.INF) sollten im gleichen Ordner wie 
SIGNALIS.PRG stehen. Ansonsten gibt das Programm die Warnmeldung "`Diese 
Anwendung kann das angegebene Objekt nicht finden."' aus und setzt die Arbeit 
mit Defaultvorgaben fort. Auch der Pfad, um Dateien abzuspeichern, d�rfte 
dann nicht mehr stimmen. 

(Abhilfe: Eine Testdatei abspeichern und den Pfad in der Fileselectbox 
setzen. Wichtig ist hierbei die Fileselectbox mit "`Ok"' zu verlassen.)



Die Funktionen werden erst dann aktiviert, wenn mindestens zwei Zeilen 
gef�llt sind. Der Cursor l��t sich im Eingabemodus nur bis hinter die letzte 
gef�llte Zeile setzen. Die Arbeitsschritte beziehen sich, falls nicht 
explizit anders angegeben, immer auf die zweite Spalte als Argument. D.h. 
falls andere Spalten verarbeitet werden sollen, m�ssen diese erst in die 
zweite Spalte kopiert werden! 



\subsection*{Eingabe}



Die Eingabe der Daten erfolgt �ber Tastatur oder via Maus in eine bis zu 
sechsspaltige Tabelle. Die Eingabe per Maus erfolgt am besten �ber ein 
Gest�nge, das dazu dient die Maus parallel zu den Koordinatenachsen zu 
bewegen (Tips dazu weiter unten). Zus�tzlich kann �ber "`Load Block"' ein 
2-spaltiges Array eingelesen werden. 



\subsection*{Ausgabe}



Die Ausgabe erfolgt entweder als Tabelle oder als 2-dim. Grafik, wobei bis zu 
15 verschiedenen Kurvenz�ge in einem Diagramm dargestellt werden k�nnen. Die 
zus�tzlich eingebaute Hardcopyroutine (640*400 senkrecht) hat den Vorteil, 
da� sie mit allen Druckerspoolern zusammenarbeitet (Sie plottet um 90' 
gedreht). 



Wem die 640*400 dot Hardcopy zu mager ist, der kann via DRAFTplus - 
Kommandodatei die Bilder mit einer Aufl�sung von ca. 5200 * 5200 dots auf 
Diskette ablegen. Das funktioniert so: Vor Plotbeginn wird eine Datei XYZ.MAC 
ge�ffnet, in die die Makros geschrieben werden. Aus DRAFTplus ist unter 
'Kommandos' die Datei *.MAC zu laden, die dort gew�nschte Strichdicke ist 
vorher einzustellen. 



�hnlich funktioniert die Ausgabe von HP-GL Sequenzen. M�glich ist eine 
Aufl�sung bei DIN-A4 Bildern von 10000 * 7200 dots. (Man mu� also das File 
via "`PRINT XYZ.PLT"' oder "`COPY XYZ.PLT \$PLOTTER"' an den Plotter senden)

W�hlt man den Punkt "`Plot Plotter"' erfolgt die direkte Ausgabe am 
Modem-Port. Unterst�tzt wird der Befehlsumfang des HP7470. Im Gegensatz zu 
fr�heren Versionen, wo etliche Details zu Fu� ausgegeben wurden (z.B. die 
Symbole f�r die Punkte), wird nun auf einen gr��eren Befehlsumfang des 
Plotters zur�ckgegriffen. Ich hoffe nicht, da� dadurch Inkompatibilit�ten 
auftreten; der Vorteil der sich daraus ergibt, ist da� nur noch ca.50\% der 
alten Datenmenge �bermittelt werden m�ssen.





\subsection*{Sortieren}



Wenn die Option sortieren eingeschaltet ist, erfolgt das Sortieren nach dem 
Verlassen des Eingabemodus. Als Sortieralgorythmus wurde das 
Quicksortverfahren gew�hlt.



\subsection*{Overlay}



Falls mehrere Diagramme �bereinander gelegt werden sollen (Overlay 
einschalten), mu� nach dem Anw�hlen von Overlay der Punkt Plot nochmals 
angew�hlt werden, damit die Legende (erstmalig) aktualisiert wird.

Im Gegensatz zu den �blichen Tabellenkalkulationen werden hier die Diagramme 
einzeln gezeichnet. Das hei�t wenn zwei verschiedene Diagramme dargestellt 
werden sollen zeichnet man zuerst das erste Diagramm, w�hlt gegebenenfalls 
eine neue Einstellung und zeichnet dann das zweite. Dieses Vorgehen dauert 
zwar l�nger, aber die Variationsm�glichkeiten sind gr��er (und der 
Programmieraufwand kleiner).



\subsection*{Rechnen}



Zum einen ist es m�glich die Spalten mit den mathematischen Funktionen die 
GFA-BASIC anbietet umzurechnen. Hier ist eine Konstante die entscheidende 
Gr��e. Zum anderen kann man zwei Spalten mit den Grundrechenarten zu 
verkn�pfen. Dazu wird als Argument 'Spaltennummer' (ohne Anf�hrungszeichen) 
eingegeben. Bei einem mathematischem Fehler ( z.B. Log(x) mit x $\leq$ 0 ) 
wird als Ergebnis -8888888 geliefert. 



\subsection*{Grafik Zoom-Modus}



Eingeschaltet wird der Modus mit 'Rechtsclick' danach erscheint der 
Cursorpfeil (zeigende Hand) und man w�hlt mit gedr�ckter linker Maustaste die 
Dragbox, die beim Loslassen der Maustaste automatisch neu gezeichnet wird. 
Hierbei sind Vergr��erungen und Verkleinerungen (gemeint sind die 5 \% 
unbenutzter Rand) m�glich. Diese Option ist nur aktiv, wenn 'Autoskaling' und 
'Overlay' ausgeschaltet sind! 



\subsection*{Aufl�sung}



Low und Mid resolution wird nicht unterst�tzt, da einfach nicht genug Platz 
auf dem Bildschirm vorhanden ist. 



F�r High resolution gibt es eine zus�tzliche Hardcopyroutine (s.o.). Signalis 
funktioniert sowohl unter OVERSCAN (Karsten Isakovich), als auch unter 
BIGSCRN (Julian Reschke).



Ab V4.30 kann ich leider Overscan nicht mehr testen (meinen Rechner hat das 
Zeitliche (sprich der L�tkolben) gesegnet). Ich habe aber an der 
Grafikdarstellung seit dem nichts mehr ge�ndert. Es sollte also laufen! 



\subsection*{Letzte Anmerkungen}



Ich habe mich bem�ht alle Fehler zu eliminieren, but nobody (Nein nicht 
Terence Hill) is perfect. Falls Ihr noch Fehler findet oder Verbesserungs- 
vorschl�ge habt, schreibt mir bitte! Ansonsten ist das Programm weitgehend 
gegen Bedienungsfehler abgesichert (wer's dennoch schafft schreibe mir bitte 
erst recht) und selbsterkl�rend. Da der Programmierer in dieser Hinsicht 
allerdings immer einen �u�erst subjektiven Eindruck hat, bitte ich hier um 
Nachsicht. 



Stellt am Anfang bitte 'Help' ein ! 



An dieser Stelle m�chte ich rAlf Schultz f�r die Packroutinen im STAD- Format 
danken. 



Wer noch Fragen oder Anregungen hat meldet sich bitte bei mir, frankierten 
und adressierten R�ckumschlag nicht vergessen! Ansonsten schickt mir doch mal 
'ne Postkarte damit ein wenig response zur�ckkommt!     





Detlef St�ckert\\

K�nigsberger Str.4\\

4030 Ratingen 6\\



FIDO-NET:  2:242/19.3 



%--------------------------------------------------------------------------

\newpage

\section*{Hier die Men�punkte im einzelnen}



\begin{itemize}

\item{{\bf File}}

  %------------------------------------------------------------------------

  \begin{itemize}

  \item{{\bf New}  Das bestehende Datenfeld wird gel�scht.}

  \item{{\bf Delete File}  Ein File l��t sich auf der Diskette l�schen, 
       falls man nicht mehr genug Platz zum speichern hat.}

  \item{{\bf Load}  L�dt ein mit Signalis abgespeichertes File und gibt 
       dabei die Versionsnummer und die Feldaufteilung an. Wahlweise 
       erfolgt eine Anpassung an neue Feld-Dimensionen.}

  \item{{\bf Save}  Speichert die aktuellen Daten}

  \item{{\bf Save Data only}  Speichert die aktuellen Daten allerdings ohne 
        Datenkopf}  

  \item{{\bf Load Block}  L�dt ein 2-spaltiges (durch Komma getrenntes) 
       Array in die ersten beiden Spalten.}

  \item{{\bf Save Block}  Speichert die ersten beiden Spalten ohne 
       Datenkopf.}

  \item{{\bf Save Screen.PIC}  Speichert das zuletzt gezeichnete Bild im 
        Screenformat (32000b).}

  \item{{\bf Save Degas .PI3} Speichert das zuletzt gezeichnete Bild im 
        Degasformat.}

  \item{{\bf Save STAD  .PAC} Speichert das zuletzt gezeichnete Bild im 
        STADformat (horizontal gepackt. Beide Methoden zu testen dauert in 
        BASIC ein wenig lang (auch so sind es noch ca. 7s).}

  \item{{\bf Save ASCII}  Speichert die aktuellen Daten,so da� sie mit 
       1ST-WORD aufgenommen werden k�nnnen.}

  \item{{\bf Quit} $\Rightarrow$ DESKTOP}

  \end{itemize}

  %------------------------------------------------------------------------

\item{{\bf Parameter}}

  \begin{itemize}

  \item{{\bf Beschriftung}  Bild- und Tabellen�berschriften werden 
        festgelegt}

  \item{{\bf Struktur}  Der Aufbau des Datenfeldes (Gr��e,Genauigkeit) wird 
        festgelegt}

  \item{{\bf Grafik}  Die Grafikdarstellung wird festgelegt.}

  \item{{\bf Marken setzen}  Intervall f�r Block angeben, Sortieren mu� 
        eingeschaltet sein. In folgenden Operationen wird diese Grenze 
        anstatt einer Intervallabfrage verwendet: Blockoperationen, 
        Regressionsberechnungen, Datengl�ttung, Spaltencopy und -swap} 
  \item{{\bf Marken anzeigen}  Das Intervall wird in Hellgrau angezeigt.}

  \item{{\bf Marken l�schen}  Intervallgrenzen aufheben}

  \item{{\bf Block l�schen}  Daten die innerhalb der Marken liegen werden 
        gel�scht}

  \end{itemize}

  %------------------------------------------------------------------------

\item{{\bf Eingabe}}

  \begin{itemize}

  \item{{\bf Konsole}  Eingabe der Daten �ber Tastatur wie in eine 
        Tabellenkalkulation, nur da� bei Erreichen der letzten 
        Eingabespalte mit Return in die n�chste Zeile gewechselt wird. Wird 
        eine Zelle mit den Cursortasten verlassen anstatt mit Return, wird 
        der alte Wert wieder eingesetzt.}

  \item{{\bf USER-Port}  nicht fertig, geplant war/ist einen A/D Wandler 
        anzusprechen. (Mal sehen was die Zeit bringt ;-) )}

  \item{{\bf Maus}  Digitalisieren mit der Maus (s.u.). Bei gro�en Vorlagen 
        ist die Zeilenzahl unter "`PARAMETER/STRUKTUR"' zu erh�hen. Es wird 
        solange gescannt bis die Tabelle voll ist oder bis wieder die 
        Maustaste gedr�ckt wird.}

  \item{{\bf Swap Spalten}  vertauscht zwei Spalten incl. �berschriften}

  \item{{\bf Copy Spalten}  copiert eine Spalte auf eine andere}

  \end{itemize}

  %------------------------------------------------------------------------

\item{{\bf Ausgabe}}

  \begin{itemize}

  \item{{\bf Tabelle}  Ausgabe der Werte auf Bildschirm und Drucker}

  \item{{\bf Grafik}  verzweigt zum Grafik-Sub-Men�}

    %----------------------------------------------------------------------

    \begin{itemize}

    \item{{\bf Zeichen} Darstellung der Datenpunkte}

    \begin{itemize}

      \item{{\bf Plotzeichen} Form der Datenpunkte}

      \item{{\bf Gr��e}  Gr��e der Datenpunkte}

      \item{{\bf Ausgabe}  Verbindung der Punkte}

      \item{{\bf Grid}  unterlegtes Raster (nicht bei GFA-DRAFT)}

      \item{{\bf Regression}  die letzte berechnete Regression wird 
          gezeichnet}

    \end{itemize}

    \item{{\bf Ordinate}  Wahl der Spalte die als Argument dient}

    \item{{\bf Grafik}}

    \begin{itemize}

      \item{{\bf Plot Screen} $\Rightarrow$ Zeichnung}

      \item{{\bf Plot Plotter} $\Rightarrow$ Zeichnung via V.24 auf Plotter}

      \item{{\bf Overlay}  Bilder werden �bereinandergezeichnet}

      \item{{\bf Hardcopy}  Druckerausgabe}

      \item{{\bf Show last} letztes Bild wird gezeigt}

      \item{{\bf GFA-DRAFT} Grafikausgabe in File um als Makro einzulesen}

      \item{{\bf HP-GL} Grafikausgabe in File}

      \item{{\bf Intervall} Grenzen des Zeichenbreiches}

      \item{{\bf Autoskaling}  Alle Werte werden mit 5\% Rand gezeigt}

    \end{itemize}

    \item{{\bf Parameter - Grafik} wie im Hauptmen�}

    \item{{\bf Desktop}}

    \begin{itemize}

      \item{{\bf Help}  wie im Hauptmen�}

      \item{{\bf back} kehrt zum Hauptmenu zur�ck}

    \end{itemize}

    \end{itemize}

    %----------------------------------------------------------------------

     %(Die eingestellten Werte sind in den Infoboxen permanent zu erkennen)

  \end{itemize}

  %------------------------------------------------------------------------

\item{{\bf Rechnen}}

  %------------------------------------------------------------------------

  \begin{itemize}

  \item{{\bf Integration}  Berechnet das Integral und legt es wahlweise 
        in eine Spalte.}

  \item{{\bf Interpolation} lineare, Lagrange- und Spline Interpolation f�r 
        einzelne Werte oder auch f�r alle Zwischenwerte.}

  \item{{\bf Rechnen}  Hier k�nnen beliebige Spalten als Argument und als 
        Ergebnis gew�hlt werden. Die Rechenoperation erfolgen auf 
        Tastendruck nachdem evtl. vorher noch ein Wert abgefragt wird. 
        Sollen zwei Spalten miteinander verkn�pft werden, so ist als 
        Argument die Spaltennummer mit vorangestelltem "`\#"' anzugeben. 
        Bsp.: Summand? \#2 bedeutet jeder einzelne Wert von Spalte 2 wird 
        zum Wert der Argumentspalte addiert und das Ergebnis in der 
        Ergebnisspalte abgelegt. Das Ende einer Rechenoperation wird durch 
        ein BELL-Zeichen signalisiert. Mit Return gelangt man zur�ck.}



  \item{{\bf Modul}   einzelne - allerdings sehr spezielle - Umrechnungen}

  \item{{\bf Regression}  verzweigt zum Regressions-Sub-Men�}

    %---------------------------------------------------------------------

    \begin{itemize}

    \item{{\bf Regression}  startet die Regression mit folgenden Polynomen: 
          linear, quadratisch, kubisch}

    \item{{\bf Wichtung}}

    \item{{\bf Grundeinstellung}  setzt alle Wichtungen auf 1}

    \item{{\bf Wichtung}  einzelne Werte k�nnen mehrfach gewichtet werden} 
    \item{{\bf Anzeige}  Wichtung wird angezeigt}

    \item{{\bf Ordinate}  Wahl der Spalte die als Argument dient}

    \item{{\bf Statistik}  Mittelwerte etc.}

    \item{{\bf Desktop}}

    \item{{\bf Help}  wie im Hauptmen�}

    \item{{\bf back} kehrt zum Hauptmenu zur�ck}

    \end{itemize}

    %----------------------------------------------------------------------

  \item{{\bf gleitender Mittelwert}  Das Intervall vor und hinter dem Me�wert 
    wird gemittelt und an die Stelle des Me�wertes gesetzt (nach einem 
    kompletten Durchlauf)}

  \item{{\bf Datenreduktion} ein bestimmter Prozentsatz der Werte wird 
       gel�scht (z.B. jeder 10. Wert)}

  \end{itemize}

  %----------------------------------------------------------------------

\item{{\bf Diverses}}

  %----------------------------------------------------------------------

  \begin{itemize}

  \item{{\bf Test} f�llt die Tabelle mit verrauschten Me�ergebnissen}

  \item{{\bf Help} Es erscheinen an einigen Stellen Hilfstexte eingeblendet} 
  \item{{\bf Einstellung sichern} speichert Voreinstellungen in SIGNALIS.INF 
        ab.}

  \item{{\bf Free Space}  zeigt freien RAM- und Partition-Platz}

  \item{{\bf Treiber laden}   Bietet die M�glichkeit einen Druckertreiber 
        nachzuladen und zu installieren.}

  \item{{\bf Anti - Virus Aid}  Es wird die Programml�nge angezeigt. Sollten 
       sie eine l�ngere Version haben ist Virenbefall wahrscheinlich.}

  \end{itemize}

  %---------------------------------------------------------------------

\end{itemize}

%---------------------------------------------------------------------------


\section*{Mauseingabe}



Dazu wird die Me�kurve auf einer glatten Unterlage mit Tesafilm festgeklebt. 



Ich benutze dann eine 60 cm lange 12 mm durchmessende Stahlstange, die 
entlang der y-Achse der Me�kurve positioniert wird und �ber das Blatt rollt. 
An den Enden sind Gummiringe von Spielzeugautos aufgesteckt (Durchmesser = 20 
- 25 mm). Um die Maus daran zu befestigen habe ich einen Teflonquader ( ca. 
10*1.8*3 cm$^3$) l�ngs mit 12 mm durchbohrt, um die Stahlstange aufzunehmen. 
An die d�nne L�ngsseite wird die Maus mit Klettband befestigt, damit man sie 
leicht wieder abnehmen kann. Eine Ecke der Maus dient zum anvisieren der 
Me�kurve (hier kann man sich sicherlich noch besseres einfallen lassen). Die 
Genauigkeit der Eingabe ist durch das mechanische Spiel bedingt (zum einen 
hat die Mauskugel in ihrer Aufnahme etwas Spiel ca. +/- 1 mm, zum anderen 
entsteht ein gro�er Fehler durch die wahrscheinlich zu gro�e Bohrung). Die 
Vorlage sollte so gro� wie m�glich sein, um einen m�glichst kleinen Fehler zu 
erhalten. 



%---------------------------------------------------------------------------



\section*{Interna}



Die von SIGNALIS abgelegten Dateien haben folgendes Format:

Versionsstring\\

4 Integers f�r Eingabespaltenzahl,Gesamtspaltenzahl,Zeilenzahl,Dummy\\

10 Reales f�r diverse Einstellungen\\

10 Strings f�r diverse Bezeichnungen\\

Alle Tabellenk�pfe (Strings)\\

Alle Skalierungen f�r Grafikausgabe (Reales)\\

Alle Nachkommastellen (Integer)\\

Die Me�werte zeilenweise (Reales)\\



%---------------------------------------------------------------------------


Schaut Euch die Datei f�r den Druckertreiber (SIGNALIS.TRB) mal an, da stehen 
die Bedeutungen der Codes drin. Wer neue Druckertreiber anpast, den m�chte 
ich doch bitten, mir vielleicht ein Listing zukommen zu lassen.



%---------------------------------------------------------------------------


\end{document}



