C C C G E T L I N C C GET A SOURCE LINE C C THIS ROUTINE READS LINES FROM THE ASSEMBLY LANGUAGE SOURCE FILE FOR C BOTH PASS ONE AND PASS TWO. IF THE LINE IS BLANK OR CONTAINS ONLY A C COMMENT FIELD THE LINE IS WRITTEN TO THE LISTING FILE DURING PASS 2 C DURING PASS 1 COMMENT LINES AND BLANK LINES ARE IGNORED. IN C EITHER CASE ANOTHER LINE IS READ. WHEN A NON-BLANK NON-COMMENT ONLY C LINE IS READ THE LABEL AND/OR OPCODE FIELDS ( IF ANY ) ARE DECODED. C THE ROUTINE THE RETURNS TO THE CALLING ROUTINE. IF AN END OF FILE C CONDITION IS DETECTED AN ERROR FLAG IS RETURNED. C C CALL GETLIN ( IFLAG ) C C WHERE: C IFLAG- INTEGER VARIABLE WHICH RETURNS END OF FILE FLAGS. IF AN C AN EOF CONDITION IS DETECTED IFLAG IS SET TO -1 . IF AN C EOF WAS NOT DETECTED IFLAG IS SET TO 0. NORMALLY AN EOF C SHOULD NOT BE DETECTED SINCE THE .END DIRECTIVE SHOULD C END THE SOURCE PROGRAM. C SUBROUTINE GETLIN ( IFLAG ) INCLUDE 'BSUCOM.CMN' INCLUDE 'IODEVS.CMN' INCLUDE 'PRGDAT.CMN' INCLUDE 'REPEAT.CMN' INCLUDE 'SRCLIN.CMN' INTEGER SMICLN EQUIVALENCE ( KEYCHR(10) , SMICLN ) 10 CONTINUE CALL TRIVIA ( 1 , IFIRST ) !BLANK OUT LINBUF AND ERRFLG READ ( SRCUNT , 20 , END=100 ) EOL, LINBUF 20 FORMAT ( Q,80A1 ) D WRITE (5,1) LINBUF D 1 FORMAT (' GETLIN READ IN',/,80A1) IF (EOL.LE.0) GO TO 30 CALL TRIVIA ( 2 , IFIRST ) !FIND FIRST NON-BLANK IN LINBUF IF ( IFIRST .GE. EOL ) GO TO 30 !? BLANK LINE ? IF ( LINBUF(IFIRST) .NE. SMICLN ) GO TO 40 !? COMMENT ONLY? 30 CONTINUE IF ( PASNUM .EQ. 2 ) CALL PRTLIN ( -1 ) !PRINT BLANK/COMMENT GO TO 10 !LINE AND GET NEXT 40 CONTINUE CALL DECODE (IFLAG ) !DECODE SOURCE LINE IFLAG = 0 GO TO 150 100 CONTINUE IFLAG = -1 150 CONTINUE RETURN END