Anleitung zum List-mode-Transferprogramm LISTRA =============================================== Ausdrucken dieser Anleitung auf der VAX mit $PRINT EX_HELP:LTRHLP.TXT, wenn Sie auf Ihrem Experiment-Account eingelogged sind. Das LISTRA-Programm ist eine Hilfs-Task, die von Messprogrammen zum Ueber- tragen von List-Mode-Records zur VAX aufgerufen wird. Die List-Mode-Ubertragung wird ueberall dort sinnvoll eingesetzt, wo die anfallenden Daten nicht mehr zu Spektren reduziert werden koennen, bzw. solche Spektren den Rahmen des PDP11 Arbeitsspeichers sprengen wuerden. Die Daten werden dabei im wesentlichen unbearbeitet ueber das Netz zur VAX uebertragen. Um vorruebergehende Engpaesse bei der Uebertragung ausgleichen zu koennen, wird mit einem Transfer-Puffer waehlbarer Laenge gearbeitet. Dieser kann bei kurzzeitigen Messungen auch dazu verwendet werden, Datenraten zu verarbeiten, die groesser sind als die Transferrate zur VAX. Die maximale mittlere Verarbeitungsrate fuer Messdatenworte (4Bytes) wurde bei unbelasteter VAX750 gemessen: auf PDP11- 23+ 73 'shared file access' 2.2kHz 4.2kHz nein ?.?kHz 1.7kHz ja 'Shared file access' wird benoetigt, wenn auf der VAX gleichzeitig zur Mess- ung eine Auswertung Zugriff zu dem LIST-Mode-File haben soll. 'Shared file access' benoetigt leider ca. drei mal mehr Zeit auf der VAX. Hinzu kommt, dass gelegentlich (alle 100s) eine 'Open/Close file' Sequenz durchgefuehrt werden muss, um den File fuer das Auswerteprogramm zu aktualisieren. Diese Open/Close-Sequenz unterbricht aber fuer kurze Zeit den Datentransfer und wird deshalb nur durchgefuehrt, wenn der Transferpuffer noch ausreichend freien Platz hat (max. 10% Fuellung). Die Auswertung der Messdaten erfolgt auf der VAX mit Programmen, die dem jeweiligen Problem angepasst sind. Es gibt Beispiele fuer solche Programme. Die List-Mode-Files sind in 512 byte Records segmentiert, mit dem Header im ersten Record. Die Messprogramme sollten folgende Formatierung der Records sicherstellen: Jeder der Daten-Records enthaelt am Anfang eine fortlaufende Record-Nummer (2 Bytes), beginnend mit null, modulo 65536, sowie die Zeit (Realtime-Sekun- den, 2 Bytes, modulo 65536) nach Start der Messung. Ein Restart der Messung ist zu erkennen durch ein erneutes Beginnen der Blockzaehlung bei null. Die Daten werden im wesentlichen unveraendert abgelegt, so wie sie vom Experiment uebertragen werden: Datenformat: '80kkddee'X kk : 8 Datenkennungs-bits ddee: 16 Daten-bits Achtung: Bei Bearbeitung der Daten unter FORTRAN wird in I*1, I*2 und I*4 Feldern in folgender Reihenfolge auf die Daten-Bytes zugegriffen: BYTE(I+0,1,2,3) kk 80 dd ee WORD(I+0,1) 80kk ddee LONG(I) ddee80kk Glaubt mir, so isses! Falls nicht 'shared file access' gewaehlt wurde, ist waehrend der laufenden Messung der List-Mode-File auf der VAX 'write-allokiert' und Auswertepro- gramme haben keinen Zugriff! LISTRA erwartet, dass der zu beschreibende File auf der VAX bereits existiert, und haengt die folgenden Records mit OPEN/APPEND hinten an. Falls im File-namen ein Knotenname angegeben wurde, so wird zu diesem direkt ein Network-Link aufgebaut. Er muss deshalb (vorzugsweise als Aliasknoten mit Zugriffskontrollinformation) im RSX11S-System definiert sein. Wird kein Knotenname angegeben, so wird der Default-Alias eingesetzt, der zum Host-Rechner und -Account fuehrt. Aufruf des Programmes --------------------- LISTRA wird als Subtask aufgerufen. Die Kommunikation erfolgt ueber den zweiten Block im List-Mode-Buffer (REGION-Name LISTRA): ! Communication block task LISTRA INTEGER*4 LTCMD ! Commands transfered to LISTRA ! 0: clear error message ! 1: start data transfer ! 2: stop data transfer INTEGER*4 LTSTAT ! Status returned from LISTRA ! 0: LISTRA not busy ! 1: LISTRA busy !-3: LISTRA network error INTEGER*4 LTRECS ! Number of records in list mode buffer INTEGER*4 LTUDTM ! Period of file updates [s] INTEGER*2 LTMFLN ! Max length of file name PARAMETER(LTMFLN=52) CHARACTER LTFLNM*(LTMFLN) ! File name of spectrum BYTE LTBFLN(LTMFLN) EQUIVALENCE (LTBFLN,LTFLNM) BYTE LTLDSP,LTLFSP ! Length of dir., file specification INTEGER*2 LTLEN ! List mode buffer length LOGICAL*2 LTSHRD ! File sharing on/off CHARACTER*8 LTUSPR ! LTUSPR(1:1)='Y' use user host task BYTE LTBUSP(8) ! LTUSPR(1:1)='N' use DAP protocoll EQUIVALENCE (LTBUSP,LTUSPR) ! LTUSPR(1:1)='Y'/'N' shared file access ! LTUSPR(3:8) name of user host task Die Variable LTRECS wird sowohl vom Messprogramm als auch von LISTRA veraendert. Bei lese-schreibenden Zugriffen auf LTRECS muessen Zugriffs- kollisionen vermieden werden (z.B. mit Interrupt-Sperre oder INC- bzw. DEC- Befehlen). Zur Zeit steht nur die Uebertragung mittels DAP-Protokoll zur Verfuegung, die Uebertragung zu einer User-Prozedur ist noch nicht realisiert. LISTRA und das Messprogramm muessen die gleiche Prioritaet haben: bei hoeherer Prioritaet von LISTRA wuerde dieses nach einem Stau auf der VAX das Messprogramm ausbremsen; bei niedrigerer Prioritaet wuerde es selber durch untergeordnete Funktionen des Messprogrammes (z.B. SHOW HEADER) voellig ausgebremst werden; bei gleicher Prio tritt das Time-sharing in Kraft; Eine Zaehlratenbegrenzung des Messprogrammes kann zwei unterschiedliche Ziele haben: a) Ein wenig Luft fuer die Steuerfunktionen des Messprogram- mes. Die Rate kann um einiges hoeher sein als das, was zur VAX geschafft werden kann, und muss vom 'List-Mode- Buffer' aufgenommen werden. b) Ein wenig Luft fuer niedrig priore Tasks wie SHOSPE. Dann wuerden jedoch kurzfristige hoehere Raten, die noch vom 'List-Mode-Buffer' aufgenommen werden koennten, bereits zum 'data overrun' fuehren. Im ersten Block des 'extended memory' wird vom Messprogramm wie ueblich der Header-Block uebergeben. Der zweite Block dient ausschliesslich der Kommunikation mit LISTRA. LISTRA ist privilegiert gelinkt, damit es mit 'break through' Meldungen auf den vom Messprogramm allokierten Bildschirm bringen kann. Im Gegensatz zu frueheren Messprogrammversionen wird bei Angabe eines Knotens im File-Namen zu diesem Knoten direkt gelinkt. Deshalb muss dieser Knoten im System definiert sein (vorzugsweise als Alias-Knoten wegen der Zugriffsinformation).