*DECK,GTSRC 
          IDENT  GTSRC
          TITLE  GTSRC - READ SOURCE CARD 
          COMMENT  GTSRC - READ SOURCE CARD 
          SST 
          LIST   F
          SPACE  4
**        GTSRC - READ SOURCE CARD
* 
*         READS A SOURCE CARD FROM LOGICAL INPUT FILE INTO SORCARD. 
*         IMAGE IS BLANK FILLED 
* 
*         CALL- 
*                   GTSRC(BUF,EOF)
* 
*         IF PREREAD .LT. 0 ON ENTRY NOTHING IS DONE (THE CALLER GETS 
*         BACK THE PREVIOUS CARD IMAGE) 
*         ELSE THE PREVIOUS CARD IS LISTED (IF WANTED) AND THE NEXT CARD
*         IS READ 
*         CARD IMAGE IS RETURNED IN ARRAY SORCARD 
* 
* 
          SPACE  4
 THISOVL  MICRO  1,, 00      THIS DECK,S OVLY RESIDENCE (FOR CCON MACRO) 21FEB77
          SPACE  4                                                       21FEB77
*         COMDECKS
  
*CALL COMSTUF 
          SPACE  4
 GTSRC    ENTRY. ** 
          SA2    PREREAD     IF FLAG = 0 THEN 
          SA5    A1+1 
          SX6    X5 
          SA6    EOFADDR     SAVE END-OF-DATA EXIT
          PL     X2,ADDIN    LIST PREVIOUS CARD 
          MX7    0
          SA7    A2 
          EQ     GTSRC
  
 READ     BSS    0
          SA1    EOFLAG      .DONT READ IF EOF SET /MIGHT PASS
          NZ     X1,G.EOF 
          SB1    1
          SA4    CRDNO
          SX6    X4+B1
          SA6    A4          KEEP CARD COUNT
          READH  =XF.IN,SORCARD,10
          NZ     X1,G.EOF 
  
          EQ     GTSRC
          SPACE  4
 ADDIN    BSS    0
          SX0    55B
          SX1    77B
          LX1    12 
          LX0    12 
          SA2    SORIMAG           GET THE LINE NUMBER
          SA3    =10H 
          SA4    =O660000        XOR MASK 
          SA5    =O450000        CARRY CATCHER
          BX3    X3-X2
          ZR     X3,OUT2           DON-T INCR LINE NUMBER IF IT IS BLANK
          SX3    10000B 
          IX6    X2+X3
 BCDADD   BSS    0
          BX7    X6*X5
          IX7    X7-X5
          NZ     X7,OUT 
          LX1    6
          LX0    6
          BX3    X6*X1       .ISSOC NEXT CHAR 
          IX3    X3-X0
          NZ     X3,BCDADD1 
          BX6    -X1*X6      .REMOVE BLSNK
          BX1    X4 
          LX1    5           .   66 BECOMES 3300
          IX6    X6+X1
 BCDADD1  BSS    0
          IX6    X6+X4
          LX4    6
          LX5    6
          EQ     BCDADD 
 OUT      BSS    0
          SA6    A2 
 OUT2     BSS    0                 END OF INCR LINE NUM CODE
* 
* CODE HERE TO CHECK FOR COPIES LIST/NOLIST 
* 
          SA3    ERRLST 
          ZR     X3,ERRLSTA 
          MX6    0
          SA6    A3 
          EQ     PRINT
  
 ERRLST   ENTRY. 0
 ERRLSTA  BSS    0
          SA5    =XOPTION 
          LX5    59-1RL 
          PL     X5,SKIP
          SA5    NOLIST 
          ZR     X5,PRINT 
          PL     X5,SKIP
          BX7    -X5         PRINT THE NOLIST CARD
          SA7    A5 
 PRINT    BSS    0
          SA1    ARGS 
          RJ     =XPTLSTV 
 SKIP     SA5    =10H 
          SA2    SORIMAG+1
          SA3    SKIPOF$
          MX0    24          .CLEAR BEGIN /END AREA 
          ZR     X3,SKIP4 
          MX0    36          .CLEAR - OR * AS EWLL
 SKIP4    BX5    X0*X5
          BX2    -X0*X2 
          BX6    X2+X5
          SA6    SORIMAG+1   CLEAR BEGIN/END AREA 
          SA2    PREREAD
          ZR     X2,READ     NORMAL READ
          MX7    0
          SA7    A2 
          EQ     GTSRC
          SPACE  4
**        G.EOF - END-OF-DATA PROCESSING
* 
*         BLANKS OUT CARD IMAGE IN PRINT LINE.
*         JUMPS TO CALLER DEFINED EXIT
* 
  
 G.EOF    BSS    0
          SA1    =10H                  CLEAR CARD IMAGE 
          SB4    SORIMAG
          SB2    SORIMAG+11        CLEAR ALL INFO FROM CARD IMAGE 
          BX6    X1 
          SB1    1
 GEOFF1   SA6    B4 
          SB4    B4+B1
          NE     B4,B2,GEOFF1 
          SA5    EOFADDR
          SX7    X5 
          SA7    EOFLAG 
          SB7    X5 
          JP     B7          END-OF-FILE ON INPUT 
          TITLE  GSRC - GET FIRST CARD OF PROGRAM 
**        GSRC - GET FIRST CARD OF PROGRAM
* 
*         THIS ROUTINE IS CALLED FROM CONTROL TO GET THE FIRST SOURCE 
*         CARD OF A PROGRAM (NOT NECESSARILY THE FIRST CARD IN INPUT DUE
*         TO STACKED COMPILATIONS)
* 
*         CALLING SEQUENCE- 
*                SA1   APLIST 
*                RJ   =XGSRC
*                WHERE
*                APLIST WORD 1 = FWA OF BUFFER TO PUT CARD IMAGE IN 
*                APLIST WORD 2 = END OF DATA EXIT 
* 
  
 GSRC     ENTRY. ** 
          SA2    GSRC 
          SA3    A1+1 
          BX7    X2 
          BX6    X3 
          SA7    GTSRC
          SA6    EOFADDR
          EQ     READ 
          EJECT 
*         APLIST FOR PTLST CALL 
  
 ARGS     BSS    0
 +        VFD    60/SORIMAG 
          VFD    60/SORWDS
 EOFLAG   DATA   0           SET IF END-OF-DATA READ ON PREVIOUS CALL 
 EOFADDR  DATA   0           END OF DATA EXIT SPECIFIED BY CALLER 
          USE    /CRDCOM/ 
 SORIMAG  VFD    60/10H       0.   SOURCE LINE NUMBER (IN BCD)
          DATA   10H
 SORCARD  DATA   40H
          DATA   40H
 SEQSTUF  DATA   10H
          DATA   10H
          BSS    2
          USE    *
 SORWDS   DATA   12 
 PREREAD  ENTRY. 0
 SKIPOF$  ENTRY. 1
          END 
