*DECK BUG203S 
          PROC  BUG203S;
  
#**       BUG203SET -  SET DEBUG INFORMATION FROM *PARAM* CARD
* 
*         CARD IMAGE SHOULD BE IN COMMON BLOCK /PARAMS/.
* 
*      CALLING FORM:  
*         BUG203SET 
* 
*      DOES:  
*         SETS DEBUG CONTROL INFORMATION IN /BUG203C/.
# 
  
          BEGIN 
          $BEGIN
  
*CALL BUG203C 
  
*CALL CHAR$ 
  
*CALL LISTCTL 
  
*CALL PARAMS
  
*CALL RAPLUSC 
  
          XREF
              BEGIN 
              PROC  CBLIST;            # PROCESS COBOL LIST FILE       #
              FUNC  OCT        C(20);  # OCTAL DISPLAY VALUE           #
              END 
  
          ITEM  LINE         C(140);
          ITEM  NGRP         I;        # INDEX USED TO SET LINE LIMITS #
          ITEM  CHAR         I;        # CURRENT CHARACTER FROM CARD   #
          ITEM  I            I;        # SCRATCH                       #
          ITEM  GC$POS       I;        # BIT POSITION OF NEXT CHAR     #
          ITEM  GC$I         I;        # WORD INDEX TO CARD            #
          ITEM  GC$WORD      I;        # CURRENT WORD FROM CARD        #
          ITEM  BEGLIMIT     I;        # RESULT FROM *GETLIMITS*       #
          ITEM  ENDLIMIT     I;        # RESULT FROM *GETLIMITS*       #
          ITEM  NUM          I;        # RESULT FROM *GETNUM*          #
  
  
          DEF  LOOP          #I=I#; 
  
  
  
  
          PROC  GETCHAR;
          BEGIN 
          IF GC$POS EQ 60  THEN 
              BEGIN 
              GC$I = GC$I + 1;
              GC$WORD = PARAMSWORD[GC$I]; 
              GC$POS = 0; 
              END 
          CHAR = B<GC$POS,6>GC$WORD;
          GC$POS = GC$POS + 6;
          END 
  
  
  
  
          PROC  GETNUM; 
          BEGIN 
          NUM = CHAR - CHAR$ZERO; 
          GETCHAR;
          FOR LOOP WHILE CHAR GQ CHAR$ZERO  AND 
                         CHAR LQ CHAR$NINE  DO
              BEGIN 
              NUM = 10*NUM + CHAR-CHAR$ZERO;
              GETCHAR;
              END 
          END 
  
  
  
  
          PROC  GETLIMITS;
          BEGIN 
          GETCHAR;
          GETNUM; 
          BEGLIMIT = NUM; 
          IF CHAR NQ CHAR$COMMA  THEN 
#****GOTO#    GOTO ERROR; 
          GETCHAR;
          GETNUM; 
          ENDLIMIT = NUM; 
          IF CHAR NQ CHAR$RPAREN  THEN
#****GOTO#    GOTO ERROR; 
          GETCHAR;
          END 
CONTROL EJECT;
  
#      PRIME *GETCHAR*                                                 #
  
          GC$I = 0;                              # INDEX TO CARD       #
          GC$WORD = PARAMSWORD[GC$I];            # CURRENT WORD        #
          GC$POS = 36;                           # (SKIP *PARAM,*)     #
  
#      PROCESS THE CARD                                                #
  
          NGRP = 0; 
          GETCHAR;
  
          FOR I = 1 STEP 1 UNTIL 10  DO 
              BEGIN 
              BUG203C$LOW[I] = BUG203C$INF; 
              BUG203C$HIGH[I] = BUG203C$INF;
              END 
  
          FOR I=I WHILE CHAR NQ CHAR$BLANK  DO
              BEGIN 
  
              IF CHAR EQ CHAR$LPAREN  THEN
                  BEGIN 
                  GETLIMITS;
                  NGRP = NGRP + 1;
                  BUG203C$LOW[NGRP] = BEGLIMIT; 
                  BUG203C$HIGH[NGRP] = ENDLIMIT;
                  TEST I; 
                  END 
  
              IF CHAR GQ CHAR$ZERO
               AND CHAR LQ CHAR$NINE  THEN
                  BEGIN 
                  GETNUM; 
                  NGRP = NGRP + 1;
                  BUG203C$LOW[NGRP] = NUM;
                  BUG203C$HIGH[NGRP] = NUM; 
                  TEST I; 
                  END 
  
              IF CHAR EQ CHAR$COMMA  THEN 
                  BEGIN 
                  GETCHAR;             # SKIP THE COMMA                #
                  TEST I; 
                  END 
              IF CHAR EQ O"11" THEN 
                  BEGIN 
                  GETCHAR;
                  IF CHAR EQ O"04" THEN 
                      BUG203C$CID = TRUE; 
                  ELSE
                      GOTO ERROR; 
                  GETCHAR;
                  TEST I; 
                  END 
  
              IF CHAR NQ CHAR$BLANK  THEN 
                  BEGIN 
#***#             GOTO ERROR; 
                  END 
  
              END 
  
          BUG203C$NGRP = 1;            # INDEX TO NEXT GROUP           #
          RETURN; 
  
  
  
  
ERROR:  
          CBLIST(LISTCTL"LINE", "ERROR IN ASSEM *PARAM* CARD", 27); 
          RETURN; 
  
          $END
          END 
          TERM
