: DDX gibt die Device-Parameter einer Dation in erweiterter Darstel-
: lung aus.
: WRITTEN BY TP:     01.05.93
: LETZTE AENDERUNG:  16:05 24.02.94
HILF='NEIN';   : ANNAHME: KEINE HILFE BENOETIGT;
IF TEST $# -NE '1'; THEN
  HILF='JA';
ELSE
  IF TEST $1 = '-?'; THEN
    HILF='JA';
  ELSE
    IF O /NIL; ER /NIL; DD $1; THEN;
    ELSE
      HILF='JA';
    FI;  
  FI;   
FI;  
IF TEST $HILF = 'JA'; THEN
  ECHO 'DDX gibt eine leichter verstaendliche Darstellung der Device-Parameter einer ';
  ECHO 'DATenstatION aus. Beispiel: DDX /H0 zeigt die Parameter des Laufwerks H0.';
  EXIT(0);
FI;

ZEILE=`DD $1`;
STAT=$1;
SET $ZEILE;
1=SEG[5,8]($1);   : EXTRAKTION DER 'WICHTIGEN' NIBBLES DER ADRESSE 
ECHO 'Die Parameter stehen in Speicherzelle $'$1', sie lauten $'$2'.';

MASKE=$2       : DEVICEPARAMETER SICHERN    
#='16';        : PLATZ FUER DIE 16 ZUSTAENDE SCHAFFEN
2=''; 3=''; 4=''; 5=''; 6=''; 7=''; 8=''; 9=''; 10=''; 
11='';12=''; 13=''; 14=''; 15=''; 16='';  
LOOPCT='1';    : FUER DIE VIER DURCHLAEUFE
WHILE TEST $LOOPCT != '5'; DO
  : ALS ERSTES DEN ZU BEARBEITENDEN NIBBLE IN DEZIMALZAHL WANDELN
  NIBBLE=SEG[EXPR 5-$LOOPCT,EXPR 5-$LOOPCT]($MASKE); : NIBBLE HOLEN
  NIBDEZ='1';                             : NIEDERWERTIGSTES ZUERST
  WHILE TEST 17 -GT $NIBDEZ; DO
    CMPCH=SEG[$NIBDEZ,$NIBDEZ](0123456789ABCDEF);
    IF TEST $CMPCH = $NIBBLE  : WAHR: NIBBLE GEFUNDEN
    THEN
      NIBDEZ=EXPR $NIBDEZ - 1 + 18;  : KORREKTUR UND SCHLEIFENABBRUCH;
    ELSE
      NIBDEZ = EXPR $NIBDEZ+1;
    FI;  
  DONE;   
  IF TEST $NIBDEZ = '17'
  THEN
    ECHO 'DDX '$DAT': Fehler im Shellskript. Abbruch.';
    EXIT(1);
  FI;
  NIBDEZ = EXPR $NIBDEZ -18; : DEZIMALDARSTELLUNG DES NIBBLES 
   : NIBBLE IN BITS AUFSPLITTEN 
  BITNR='0';
  WHILE TEST '4' != $BITNR; DO     : 4 DURCHLAEUFE; 
    SHIFT; #=16;
    NIBD2=EXPR $NIBDEZ/2;
    16=EXPR $NIBDEZ-$NIBD2*2;
    NIBDEZ=$NIBD2;
    BITNR=EXPR $BITNR+1;
  DONE;
  LOOPCT=EXPR $LOOPCT+1;
DONE;

: XXXXECHO $16$15$14$13 $12$11$10$9 $8$7$6$5 $4$3$2$1;
: BITS SIND NUN AUFGESPLITTET MSB=$16; LSB=$1;
  ECHO '                                                             Bit benutzt von';
IF TEST $16='1'; THEN
  ECHO 'MSB 1 => REWIND ist moeglich.                                       BI';
ELSE
  ECHO 'MSB 0 => REWIND ist nicht moeglich.                                 BI';
FI;
IF TEST $15='1'; THEN
  ECHO '14: 1 => OPEN/CLOSE vor/nach Benutzung notwendig.                   BI';
ELSE
  ECHO '14: 0 => OPEN/CLOSE vor/nach Benutzung nicht explizit notwendig.    BI';
FI;
IF TEST $14='1'; THEN
  ECHO '13: 1 => Nach jedem endenden CR ein LF angefuegen.               BI LZ';
ELSE
  ECHO '13: 0 => Nach endendem CR wird kein LF angefuegt.                BI LZ';
FI;
IF TEST $13='1'; THEN
  ECHO '12: 1 => Dialogfoermiges Datenterminal.                             BI';
ELSE
  ECHO '12: 0 => Kein dialogfoermiges Datenterminal.                        BI';
FI;
IF TEST $12='1'; THEN
  ECHO '11: 1 => Das Echo soll explizit unterdrueckt werden.             LZ BI';
ELSE
  ECHO '11: 0 => Das Echo wird nicht unterdrueckt.                       LZ BI';
FI;
IF TEST $11='1'; THEN
  ECHO '10: 1 => Loeschen von Files moeglich.                               BI';
ELSE
  ECHO '10: 0 => Loeschen von Files nicht moeglich.                         BI';
FI;
IF TEST $10='1'; THEN
  ECHO ' 9: 1 => Datenausgabe erlaubt.                                      BI';
ELSE
  ECHO ' 9: 0 => Datenausgabe nicht erlaubt.                                BI';
FI;
IF TEST $9='1'; THEN
  ECHO ' 8: 1 => Dateneingabe erlaubt.                                      BI';
ELSE
  ECHO ' 8: 0 => Dateneingabe nicht erlaubt.                                BI';
FI;
IF TEST $8='1'; THEN
  ECHO ' 7: 1 => DIR und FILES wird akzeptiert.                             BI';
ELSE
  ECHO ' 7: 0 => DIR und FILES wird nicht akzeptiert.                       BI';
FI;
IF TEST $7='1'; THEN
  ECHO ' 6: 1 => Explizite FORMatieranweisung wird akzeptiert.              BI';
ELSE
  ECHO ' 6: 0 => Explizite FORMatieranweisung wird nicht akzeptiert.        BI';
FI;   
IF TEST $6='1'; THEN
  ECHO ' 5: 1 => Befehl CF ist zugelassen.                                  BI';
ELSE
  ECHO ' 5: 0 => Befehl CF ist nicht zugelassen.                            BI';
FI;   
IF TEST $5='1'; THEN
  ECHO ' 4: 1 => RMDIR / MKDIR ist zugelassen.                              BI';
ELSE
  ECHO ' 4: 0 => RMDIR / MKDIR ist nicht zugelassen.                        BI';
FI;   
IF TEST $4='1'; THEN
  ECHO ' 3: 1 => SYNC / SEEK / SAVEP moeglich.                           LZ BI';
ELSE
  ECHO ' 3: 0 => SYNC / SEEK / SAVEP nicht moeglich.                     LZ BI';
FI;   
IF TEST $3='1'; THEN
  ECHO ' 2: 1 => Report-Error moeglich.                                     BI';
ELSE
  ECHO ' 2: 0 => Report-Error nicht moeglich.                               BI';
FI;   
IF TEST $2='1'; THEN
  ECHO ' 1: 1 => Terminal macht keinen automatischen Wrap am Zeilenende.    ED';
ELSE
  ECHO ' 1: 0 => Terminal macht automatischen Wrap am Zeilenende.           ED';
FI;   
IF TEST $1='1'; THEN
  ECHO 'LSB 1 => Cursor ueber ESC Sequenzen ansteuerbar (VT52).             ED';
ELSE
  ECHO 'LSB 0 => Cursor nicht ueber ESC Seq. ansteuern (z.B. Televideo).    ED';
FI;   
ECHO;
ECHO 'Erlaeuterungen: LZ=Laufzeitsystem (Hyperprozessor); ED=Editor';
ECHO 'BI=Bedieninterface und CMDEXW';
ECHO 'DDX '$STAT': All done.'
EXIT(0);

















