: DRX gibt die Register einer Task in erweiterter Darstellung aus.: WRITTEN BY TP:   01.05.93 (START):                  03.05.93  (FIN): PPC EXTENDED AND BETTER 68K-VERSION BY I.HASSINE :                  04.02.99: FOR OLD AND NEW `L`-COMMAND (PR):                  24.02.99TWSOFF=16;     : Adressoffset der Register im TWSPDMLEN=40;      : Laenge des DM PTYPE='P68K';  : ProzessortypIF TEST -N $P_TYPE; THEN  : Nur auf neuerem System, wenn P_TYPE vorhanden ist.  IF TEST SEG[1,3]($P_TYPE) = 'PPC'; THEN    PTYPE='PPC';    TWSOFF=18; : Adressoffset der Register im TWSP    DMLEN=90;  : Laenge des DM : $A0 BYTES  FI;  FI;HILF='NEIN';   : ANNAHME: KEINE HILFE BENOETIGT;SYSTASK='NEIN';: ANNAHME: KEINE SYSTEMTASKIF TEST $# -NE '1'; THEN  HILF='JA1';ELSE  TASK=$1;  IF TEST $1 = '-?'; THEN    HILF='JA1';  FI;   FI;IF TEST $HILF='NEIN'; THEN    HILF='JA1';       :  ANNAHME: TASK NICHT IM SYSTEM                       FOR ZEILE IN -L `L`    DO      SET $ZEILE      IF TEST $# = '7';THEN            6=$7;        4=$5;      FI;      IF TEST $6=$TASK; THEN        HILF='NEIN';        ADDR=SEG[5,12]($4)        IF TEST $ADDR='00000000'; THEN          HILF='JA2';          BREAK;          ELSE             INPUT=`DM $ADDR+$TWSOFF,$DMLEN`;             BREAK;          FI;      FI;     DONE;FI;CASE $HILF IN JA1)  ECHO '      *** DRX : Version 24.02.99 ***';  ECHO 'DRX gibt eine leichter verstaendliche Darstellung der Register einer Task';  ECHO 'aus. Beispiel: DRX #USER0 zeigt die Register der Task #USER0.';;;  JA2)  ECHO $TASK' :   not active .';;;NEIN)  LOOPCT='1';  FOR ZEILE IN -L $INPUT  DO    SET $ZEILE;    : VERZWEIGUNG P68 <-> PPC    IF TEST $PTYPE='PPC';THEN    : AUSWERTUNG FUER PPC      IF TEST $LOOPCT = '1'; THEN        1=SEG[1,8]($1);        ECHO ;         ECHO 'Die Register liegen ab $'$1 'im Speicher.';        ECHO ;        ECHO 'REG HEXA      ASC   REG HEXA      ASC   REG HEXA      ASC   REG HEXA      ASC';          BL16='                ';      FI;      : ALS ERSTES  $2...$9 AUSWERTEN, BEVOR SHIFTEN SIE ZERSTOERT         CASE $LOOPCT IN        1)          ZEILE11=' r0 '$2' '$3;        ZEILE12='  r1 '$4' '$5;          ZEILE13='  r2 '$6' '$7;       ZEILE14='  r3 '$8' '$9;        ;;         2)          ZEILE21=' r4 '$2' '$3;        ZEILE22='  r5 '$4' '$5;          ZEILE23='  r6 '$6' '$7;       ZEILE24='  r7 '$8' '$9;        ;;        3)          ZEILE31=' r8 '$2' '$3;        ZEILE32='  r9 '$4' '$5;          ZEILE33=' r10 '$6' '$7;       ZEILE34=' r11 '$8' '$9;        ;;        4)          ZEILE41='r12 '$2' '$3;        ZEILE42=' r13 '$4' '$5;          ZEILE43=' r14 '$6' '$7;       ZEILE44=' r15 '$8' '$9;        ;;        5)          ZEILE51='r16 '$2' '$3;        ZEILE52=' r17 '$4' '$5;          ZEILE53=' r18 '$6' '$7;       ZEILE54=' r19 '$8' '$9;        ;;        6)          ZEILE61='r20 '$2' '$3;        ZEILE62=' r21 '$4' '$5;          ZEILE63=' r22 '$6' '$7;       ZEILE64=' r23 '$8' '$9;        ;;        7)          ZEILE71='r24 '$2' '$3;        ZEILE72=' r25 '$4' '$5;          ZEILE73=' r26 '$6' '$7;       ZEILE74=' r27 '$8' '$9;        ;;        8)          ZEILE81='r28 '$2' '$3;        ZEILE82=' r29 '$4' '$5;          ZEILE83=' r30 '$6' '$7;       ZEILE84=' r31 '$8' '$9;        ;;        9)          ZEILE91='CTR '$2' '$3;        ZEILE92=' XER '$4' '$5;          ZEILE93='  MQ '$6' '$7;       ZEILE94=' MSR '$8' '$9;        ;;        10)          ZEILE101=' PC '$2' '$3;       ZEILE102='  LR '$4' '$5;          ZEILE103='  CR '$6' '$7;            CR0=SEG[1,1]($6);            CR2=SEG[3,3]($6);        ;;        ESAC            : AUSWERTUNG FUER P68K    ELSE      IF TEST $LOOPCT = '1'; THEN        1=SEG[1,8]($1);        ECHO ;        ECHO 'Die Register liegen ab $'$1 'im Speicher.';        ECHO ;        ECHO 'REG HEXA      ASC  REG HEXA      ASC  REG HEXA      ASC     REG HEXA      ASC';        BL16='                ';      FI;      CASE $LOOPCT IN       1)        ZEILE44=' A7(US) '$2' '$3;        ZEILE53='                      A7(SS) '$4' '$5;        ZEILE11=' D0 '$6' '$7;            ZEILE12='  D1 '$8' '$9;        STELLVAR=$5;      ;;       2)        ZEILE13='  D2 '$2' '$3;           ZEILE14='     D3 '$4' '$5;        ZEILE21=' D4 '$6' '$7;            ZEILE22='  D5 '$8' '$9;      ;;      3)        ZEILE23='  D6 '$2' '$3;           ZEILE24='     D7 '$4' '$5;        ZEILE31=' A0 '$6' '$7;            ZEILE32='  A1 '$8' '$9;      ;;      4)        ZEILE33='  A2 '$2' '$3;           ZEILE34='     A3 '$4' '$5;        ZEILE41=' A4 '$6' '$7;            ZEILE42='  A5 '$8' '$9;      ;;      5)        ZEILE43='  A6 '$2' '$3;        CASE $STELLVAR IN            '07F8')  PC=$8' '$9;  SR=$7;;           '07F6')  PC=$7' '$8;  SR=$6;;           '07F4')  PC=$6' '&7;  SR=$5;;           '07F2')  PC=$5' '$6;  SR=$4;;        ESAC;        ZEILE51=' PC='$PC;                ZEILE52='  SR='$SR;      ;;      ESAC;    FI        : NUN ASCII TEXTE KITTEN, FALLS DIESE DURCH BLANKS GETRENNT WURDEN      LENASC=LEN($10);    IF TEST $LENASC != '16'; THEN      : REPARATUR NOTWENDIG      REGALL=$2$3$4$5$6$7$8$9  : REGISTERINHALTE DER VIER AKTUELLEN REGS      : ECHO $REGALL      SPALTCT=3;                               : BEGINN BEI ZWEITEM BYTE      AKTZ=SEG[1,2]($2);               :  ASCII WERT DES ERSTEN ZEICHENS      IF TEST $AKTZ='20'; THEN          : SCHON ERSTES ZEICHEN EIN BLANK        ASCII=''; ANZBL='1';        : ASCII-TEXT DER REGISTER VORBELEGEN      ELSE        ASCII=$10; SHIFT; ANZBL=0;      FI;            WHILE TEST $SPALTCT != 33; DO        AKTZ=SEG[$SPALTCT, EXPR $SPALTCT+1]($REGALL);        IF TEST $AKTZ = '20'; THEN          ANZBL=EXPR $ANZBL+1;   : BLANKCOUNTER HOCHZAEHLEN;        ELSE          IF TEST $ANZBL != 0; THEN            : KACKE AM DAMPFEN            : ECHO $ANZBL' Blanks hintereinander gefunden';            BLAKT=SEG[1,$ANZBL]($BL16)            ASCII=$ASCII$BLAKT; : VERLORENE BLANKS AUFFUELLEN            LENASC=LEN($ASCII);            : ECHO $LENASC;            : ECHO $ASCII'<<<';            IF TEST $LENASC = '16'; THEN              BREAK       : ALL DONE: LAST CHARACTERS ARE BLANKS             ELSE              ASCII=$ASCII$10; SHIFT; : DURCH BLANK ZERSTUECKELTEN TEIL            FI;                       : ANFUEGEN                       : ECHO $ASCII            ANZBL=0;           FI;        FI;                   SPALTCT=EXPR $SPALTCT+2;      DONE;      IF TEST $ANZBL != '0'; THEN   : RECHTSBUENDIGE BLANKS FEHLEN NOCH        : ECHO $ANZBL' Blanks hintereinander gefunden';        BLAKT=SEG[1,$ANZBL]($BL16)        ASCII=$ASCII$BLAKT; : VERLORENE BLANKS AUFFUELLEN      FI;      LENASC=LEN($ASCII)      IF TEST $LENASC != 16; THEN         ECHO 'Fehler im Programm. Abbruch';        ECHO $REGALL;        ECHO $ASCII'<<<';        ECHO $LENASC;        SLEEP 50; STOP;      FI;     ELSE      ASCII=$10;      SHIFT;     FI;    1=SEG[1,4]($ASCII);                2=SEG[5,8]($ASCII);    3=SEG[9,12]($ASCII);               4=SEG[13,16]($ASCII);        IF TEST $PTYPE='PPC'; THEN    : CHARACTER-AUSWERTUNG PPC      CASE $LOOPCT IN      1)        ZEILE1=$ZEILE11' '$1' '$ZEILE12' '$2' '$ZEILE13' '$3' '$ZEILE14' '$4;      ;;      2)        ZEILE2=$ZEILE21' '$1' '$ZEILE22' '$2' '$ZEILE23' '$3' '$ZEILE24' '$4;      ;;           3)        ZEILE3=$ZEILE31' '$1' '$ZEILE32' '$2' '$ZEILE33' '$3' '$ZEILE34' '$4;      ;;      4)        ZEILE4=$ZEILE41' '$1' '$ZEILE42' '$2' '$ZEILE43' '$3' '$ZEILE44' '$4;      ;;      5)        ZEILE5=$ZEILE51' '$1' '$ZEILE52' '$2' '$ZEILE53' '$3' '$ZEILE54' '$4;      ;;      6)        ZEILE6=$ZEILE61' '$1' '$ZEILE62' '$2' '$ZEILE63' '$3' '$ZEILE64' '$4;      ;;      7)        ZEILE7=$ZEILE71' '$1' '$ZEILE72' '$2' '$ZEILE73' '$3' '$ZEILE74' '$4;      ;;      8)        ZEILE8=$ZEILE81' '$1' '$ZEILE82' '$2' '$ZEILE83' '$3' '$ZEILE84' '$4;      ;;      9)        ZEILE9=$ZEILE91' '$1' '$ZEILE92' '$2' '$ZEILE93' '$3' '$ZEILE94' '$4;      ;;      10)        ZEILE10=$ZEILE101' '$1' '$ZEILE102' '$2' '$ZEILE103' '$3;      ;;      ESAC;    ELSE      : CHARACTER-AUSWERTUNG P68K      CASE $LOOPCT IN      1)        ZEILE4N=$ZEILE44' '$1;            ZEILE5=$ZEILE53' '$2;        ZEILE1=$ZEILE11' '$3$ZEILE12' '$4;      ;;       2)        ZEILE1=$ZEILE1$ZEILE13' '$1$ZEILE14' '$2;        ZEILE2=$ZEILE21' '$3$ZEILE22' '$4;      ;;      3)        ZEILE2=$ZEILE2$ZEILE23' '$1$ZEILE24' '$2;        ZEILE3=$ZEILE31' '$3$ZEILE32' '$4;      ;;      4)        ZEILE3=$ZEILE3$ZEILE33' '$1$ZEILE34' '$2;        ZEILE4=$ZEILE41' '$3$ZEILE42' '$4;      ;;      5)        ZEILE4=$ZEILE4$ZEILE43' '$1$ZEILE4N;        CASE $STELLVAR IN           '07F8')   ZEILE5=$ZEILE51' '$4$ZEILE52'      'SEG[3,4]($3)$ZEILE5;;           '07F6')   ZEILE5=$ZEILE51' 'SEG[3,4]($3)SEG[1,2]($4)$ZEILE52'      'SEG[1,2]($3)$ZEILE5;;           '07F4')   ZEILE5=$ZEILE51' '$3$ZEILE52'      'SEG[3,4]($2)$ZEILE5;;           '07F2')   ZEILE5=$ZEILE51' 'SEG[3,4]($2)SEG[1,2]($3)$ZEILE52'      'SEG[1,2]($2)$ZEILE5;;           ESAC;      ;;      ESAC;    FI;      IF TEST $# != '9'; THEN      ECHO 'Fehler beim SHIFTen in Zeile '$LOOPCT'. Abbruch'      ECHO '$#='$#;      STOP;    FI;    LOOPCT=EXPR $LOOPCT+1;  DONE;  IF TEST $PTYPE='PPC';THEN;    ECHO $ZEILE1;    ECHO $ZEILE2;    ECHO $ZEILE3;    ECHO $ZEILE4;    ECHO $ZEILE5;    ECHO $ZEILE6;    ECHO $ZEILE7;    ECHO $ZEILE8;    ECHO $ZEILE9;    ECHO $ZEILE10;    ECHO;    N=0; GT=0; Z=0; SO=0; V=0; C=0;    CASE $CR0 IN       1  ) SO=1;;       2  ) Z=1;;       3  ) Z=1; S0=1;;       4  ) GT=1;;       5  ) GT=1; SO=1;;       6  ) GT=1; Z=1;;       7  ) GT=1; Z=1; SO=1;;       8  ) N=1;;        9  ) N=1; SO=1;;       A  ) N=1; Z=1;;       B  ) N=1; Z=1; SO=1;;       C  ) N=1; GT=1;;       D  ) N=1; GT=1; SO=1;;       E  ) N=1; GT=1; Z=1;;       F  ) N=1; GT=1; Z=1; SO=1;;    ESAC;    CASE $CR2 IN       2 | 3 | A | B  ) C=1;;       4 | 5 | C | D  ) V=1;;       6 | 7 | E | F  ) V=1; C=1;;    ESAC;    ECHO 'Prozessorstatus-Bits:  N='$N'   GT='$GT'   Z='$Z'   SO='$SO'   V='$V'   C='$C' .';    ECHO;    ECHO 'DRX '$TASK': All done.'    ECHO;    ELSE    ECHO $ZEILE1;    ECHO $ZEILE2;    ECHO $ZEILE3;    ECHO $ZEILE4;    ECHO $ZEILE5;    T=0; X=0; N=0; Z=0; V=0; C=0;    DIG4=SEG[4,4]($SR);    CASE $DIG4 IN       1  ) C=1;;       2  ) V=1;;       3  ) V=1; C=1;;       4  ) Z=1;;       5  ) Z=1; C=1;;       6  ) Z=1; V=1;;       7  ) Z=1; V=1; C=1;;       8  ) N=1;;       9  ) N=1; C=1;;       A  ) N=1; V=1;;       B  ) N=1; V=1; C=1;;       C  ) N=1; Z=1;;       D  ) N=1; Z=1; C=1;;       E  ) N=1; Z=1; V=1;;       F  ) N=1; Z=1; V=1; C=1;;    ESAC;    IF TEST SEG[3,3]($SR) -NE 0 ; THEN ;       X=1;    FI;    IF TEST SEG[1,1]($SR) -NE 0 ; THEN ;       T=1;    FI;    ECHO;    ECHO 'Prozessorstatus-Bits:  T='$T'    X='$X'    N='$N'    Z='$Z'    V='$V'    C='$C' .';    ECHO;    ECHO 'DRX '$TASK': All done.'   FI; ;;ESAC  EXIT(0);