      JSB SPACE 
      CLA 
      IOR B1KKK     SET 'EQU' LABEL FLAG IN BIT 15. 
EQU25 LDB F1ADR     ADD FLD 1 LABEL TO SYMB TABLE.
      CLE 
      JSB SYMAD 
      CLA 
      JMP EQU,I     RETURN
EQU15 NOP 
      SKP 
* 
* 
*   'ERROR' PRINTS ERROR MESSAGES ON THE LIST DEVICE. 
* 
*   CALLING SEQUENCE: 
*      A REG SHOULD CONTAIN - ERROR MESSAGE # IF
*        ERROR HAS BEEN DISCOVERED IN PASS 1; 
*        + ERROR MESSAGE # IF ERROR HAS BEEN DISCOVERED 
*        IN PASS 2. 
*      JSB ERROR
* 
*   ON RETURN, MESSAGE WILL HAVE BEEN PRINTED 
*   ON LIST DEVICE. 
* 
ERROR NOP 
      ISZ NMERR 
      LDB LIST      SUPPRESS
      SZB,RSS       LISTING?
      LDB .+6 
      STB SAVH
      SSA,RSS       PASS I ERRORS?
      JMP EL2       NO.  PASS 2.
* 
*   PASS I ERRORS 
* 
EL1   CMA,INA       YES.  MAKE ERROR # POS. 
      LDB E1        PUT ERROR # INTO
      RBL           ERROR MESSAGE BUFFER. 
      JSB DECML 
      LDA SAVH
      CLB,INB 
      JSB SPACE     SPACE ONE LINE. 
      LDA .+2       OUTPUT ERROR MESSAGE. 
      JSB IOSUB 
      DEF SAVH
      DEF ERR1-1
      DEF .-14
      JMP ERROR,I    EXIT.
* 
* 
* PASS II ERRORS
* 
EL2   SZA,RSS       A = 
      JMP EL1       0?  YES.  GO BACK.
      LDB E2        PUT ERROR MESSAGE NO. INTO
      RBL           ERROR MESSAGE BUFFER. 
      JSB DECML 
      LDA LINE#     PUT LINE NO. INTO 
      LDB E3        ERROR MESSAGE BUFFER. 
      RBL 
      INB 
      JSB DECML 
      LDA SAVH
      CLB,INB 
      JSB SPACE 
      LDA .+2       OUTPUT ERROR MESSAGE. 
      JSB IOSUB 
      DEF SAVH
      DEF ERR2-1
      DEF .M28
      JMP ERROR,I 
      SKP 
* 
*   "IOSUB" DOES THE INPUT/OUTPUT.
* 
*   CALLING SEQUENCE: 
* 
*      LDA <1 FOR INPUT, 2 FOR OUTPUT>
*      JSB IOSUB
*      DEF <L.U. NO. OF I/O DEVICE> 
*      DEF <BUFFER> 
*      DEF <- NO. OF CHARS OR + NO. OF WORDS> 
* 
* 
IOSUB NOP 
* 
*   FIRST, SET UP THE .IOC. CALLING PARAMETERS. 
* 
      STA SAVA
      ALF,ALF       PUT READ/WRITE PARAM IN 
      ALF           PROPER PLACE. 
      LDB IOSUB,I   PLUG IN L.U.#.
      LDB 1,I 
      SZB,RSS       IS L.U.=0?
      JMP IOSUB,I   YES.  THEN QUIT RIGHT HERE. 
      IOR 1 
      STA IOW3
      LDA IOW0      SET UP
      AND UMSK      CONTROL WORDS.
      IOR 1 
      STA IOW0
      LDA IOW2
      AND UMSK
      IOR 1 
      STA IOW2
      LDA IOW4
      AND UMSK
      IOR 1 
      STA IOW4
      ISZ IOSUB     SET BUFFER ADDR.
      LDA IOSUB,I 
      STA IOBUF 
      ISZ IOSUB     SET # OF CHARS OR WORDS.
      LDA IOSUB,I 
      LDA 0,I 
      STA IONUM 
      ISZ IOSUB     SET RETURN ADDRESS. 
* 
*   NOW FIND OUT WHAT IS TO BE DONE AND MAKE
*   NECESSARY MODIFICATIONS IN CALLING PARAMETERS.
* 
      JSB .IOC. 
IOW0  OCT 040000
      AND EQMSK 
      ALF,ALF 
      CPA .+2       PUNCH OUT?
      JMP IO2       YES.
      CPA B16       2767A LINE PRINTER OUTPUT?
      JMP IO3       YES 
      CPA B12       2610A/2614A LINE PRINTER OUTPUT?
      JMP IO3       YES.
      ADA .M20      NO.  MAG TAPE I/O?
      SSA 
      JMP IO4       NO. 
      ADA .M20
      SSA,RSS 
      JMP IO4       NO. 
      LDA IOW3      YES. SO FIX .IOC. CALL FOR
      IOR MCODE     MAG TAPE I/O. 
      STA IOW3
      LDA IONUM     NOW CONVERT - # OF CHARS
      CMA,INA 
      SLA           TO + # OF WORDS.
      INA 
      RAR 
      STA IONUM 
      JMP IOBEG 
IO2   NOP 
      LDA IOW3      PUNCH OUT:  FIX FUNCTION
      IOR PCODE     WORD FOR BINARY OUTPUT. 
      STA IOW3
      JMP IOBEG 
IO3   JSB .IOC.     LP OUTPUT: SET LP NORMAL MODE.
IOW2  OCT 030700
      JMP IO3 
      JMP IOBEG 
IO4   LDA IOW3      TTY I/O OR CARD READER INPUT. 
      LDB PNFLG     WE PUNCHING BINARY ON TTY?
      SZB 
      IOR =B500     YES.  SET FUNCTION WORD.
      IOR B400      NO. SET FUNCTION WORD FOR ASCII.
      STA IOW3
      JMP IOBEG 
* 
*   NOW BEGIN THE I/O.
* 
IOBEG NOP 
      JSB .IOC.     START THE I/O.
IOW3  NOP 
      JMP *-2 
IOBUF NOP 
IONUM NOP 
IOST  JSB .IOC.     I/O DONE YET? 
IOW4  OCT 040000
      SSA 
      JMP IOST      NO, KEEP WAITING. 
      RAL 
      SSA 
      JMP IOER2 
      CMB,INB       SAVE - # OF CHARS 
      LDA SAVA      READ IF THIS WAS A READ 
      CPA .+1       OPERATION.
      STB CRLEN 
      JMP IOSUB,I 
IOER2 HLT 36B       TRANSMISSION ERROR. 
      JMP IOBEG     GO TRY AGAIN. 
      SKP 
* 
* 
*  THIS ROUTINE GENERATES LEADR ON PUNCH DEVICE 
* 
*   CALLING SEQUENCE; 
*      JSB LEEDR
* 
LEEDR NOP 
      LDA PCH 
      SZA,RSS 
      JMP LEEDR,I 
      JSB TTYPL     LIST AND PUNCH ON TTY?
      SZA,RSS 
      HLT 52B       YES. LET USER TURN ON PUNCH.
      JSB LEADR 
      DEF *+3 
      DEF PCH 
      DEF .+12
      JSB TTYPL     LIST AND PUNCH ON TTY?
      SZA,RSS 
      HLT 53B       YES. LET USER TURN OFF PUNCH. 
      JMP LEEDR,I 
      SKP 
*   'LOADB' RETURNS IN THE A REG THE BYTE WHOSE 
*   BYTE ADDRESS WAS SPECIFIED IN THE B REG.
*   BYTE ADDRESS IS UNCHANGED UPON EXIT.
* 
*   CALLING SEQUENCE: 
*      B REG SHOULD CONTAIN BYTE ADDRESS OF 
*         BYTE TO BE FETCHED. 
*      JSB LOADB
*   UPON RETURN, THE BYTE WILL BE IN THE LOW BITS OF
*   THE A REG.  B REG WILL CONTAIN ORIGINAL 
*   BYTE ADDRESS. 
* 
* 
LOADB NOP 
      STB L.000     SAVE BYTE ADDRESS 
      CLE,ERB       SET E TO INDICATE HI OR LO BYTE 
      LDA 1,I       PICK UP WORD
      LDB HIMSK     PUT HIMASK IN B 
      SEZ           WANT HI BYTE? 
      BLF,BLF       NO MAKE MASK LO 
      AND 1         ISOLATE BYTE
      SEZ,RSS       IS BYTE HI? 
      ALF,ALF       YES  SHIFT LO 
      LDB L.000     RESET B 
      JMP LOADB,I   EXIT. 
      SKP 
* 
*   "LOGUN" RETURNS THE BINARY EQUIVALENT OF THE  ASCII 
*   LOGICAL UNIT NO. ON A CONTROL CARD. 
* 
*   CALLING SEQUENCE: 
*      B REG CONTAINING BYTE ADDRESS OF ANY CHAR
*      AFTER "$" AND BEFORE "=" IN A CONTROL STATEMENT. 
*      A REG DOESN'T MATTER;
*      JSB LOGUN
* 
*   UPON EXIT: A REG WILL CONTAIN BINARY EQUIVALENT OF
*   LOGICAL UNIT NO., UNLESS OVERFLOW IS SET, IN WHICH
*   CASE AN ERROR HAS BEEN DETECTED, AND A REG IS 
*   GARBAGE.
*   NOTE! LOGICAL UNIT NO. MUST BE IN THE RANGE 1 THRU
*   74 OCTAL. 
* 
LOGUN NOP 
      CLO 
      LDA .EQ.      SKIP TO 
      JSB SKPTO     EQUALS SIGN.
      SOC           REACH END OF CARD FIRST?
      JMP LOGUN,I   YES, SO ERROR.
      INB           NO. SET NEXT BYTE ADDRESS.
      LDA SPAC      SKIP OVER 
      JSB SKIP      BLANKS. 
      SOC           REACH END OF CARD?
      JMP LOGUN,I   YES, SO ERROR.
      CLA           CONVERT ASCII LOGICAL UNIT NO.
      JSB CNVRT     (OCTAL NO.) TO BINARY.
      SOC           ANY ERRORS? 
      JMP LOGUN,I   YES.
      STA 1         NO. IS THE NO. OUT OF RANGE?
      SZA,RSS 
      JMP LOG1      YES.  IS 0. 
      SSA 
      JMP LOG1      YES.  IS NEG. 
      ADA MB75
      SSA,RSS 
      JMP LOG1      YES, IS > 74 OCT. 
      LDA 1         NO, IS OK.  PUT IN A REG. 
      JMP LOGUN,I 
LOG1  STO 
      JMP LOGUN,I 
      SKP 
* 
* THIS ROUTINE CONTROLS THE LISTING OF
* SOURCE PROGRAM
* 
*   CALLING SEQUENCE: 
*      LDA <- # OF CHARS IN SOURCE RECORD IF YOU WANT 
*           TO LIST LINE #-SOURCE RECORD ONLYF
*           + # OF CHARS IN SOURCE RECORD IF YOU
*             WANT TO LIST LINE #-OCTAL CODE-SOURCE-
*             RECORD> 
*      JSB LSTR 
* 
* 
LSTR  NOP 
      LDB LIST      SUPPRESS
      SZB,RSS       LISTING?
      JMP LSTR,I    YES RETURN
      SSA,RSS       NO. FORMAT 1? 
       JMP LSTR2
* 
* LIST FORMAT 1 
* 
LSTR1 ADA .M25      YES.  ADJUST CHAR 
      STA CLEN      COUNT TO INCLUDE LINE NO. AND 
      LDB ABF0      SPACES.  CONVERT
      RBL           LINE
      LDA LINE#     NO. 
      JSB DECML     TO DECIMAL
      LDA .+2       OUTPUT LINE.
      JSB IOSUB 
      DEF LIST
      DEF OUTBF-1 
      DEF CLEN
      JMP LSTR,I    RETURN
* 
*  LIST FORMAT 2
* 
LSTR2 ADA .P27      ADJUST LINE CHAR COUNT. 
      CMA,INA       TO INCLUDE
      STA CLEN      OTHER STUFF.
      LDA LINE#     CONVERT LINE NO. TO DECIMAL 
      LDB ABF0      AND PUT IN OUTPUT BUFFER. 
      RBL 
      JSB DECML 
      LDA EQUFL     IS THIS AN EQU STATEMENT? 
      SZA 
      JMP LST4      YES, SO JUST PRINT IT.
      LDA INST2     NO.  CONVERT ADDR PORTION TO
      AND HIMSK     ABS AND PUT IN ASCII OUTPUT 
      ALF,ALF 
      IOR T.002     BUFFER. 
      LDB ABF0
      RBL 
      ADB .+5 
      JSB OCTL
      DEC 4 
      LDA INST2     NOW CONVERT BITS 16-23 OF 
      AND LOMSK     MICROINSTRUCTION TO ASCII 
      LDB ABF0      AND PUT IN ASCII OUTPUT 
      RBL           BUFFER. 
      ADB .+10
      JSB OCTL
      DEC 3 
      LDB ABF0      CONVERT BITS 15-0 OF MICRO- 
      RBL           INSTRUCTION WORD TO ASCII AND 
      ADB .+14      PUT INTO OUTPUT BUFFER. 
      LDA INST1 
      JSB OCTL
      DEC 6 
LST4  LDA .+2       OUTPUT THE LINE.
      JSB IOSUB 
      DEF LIST
      DEF OUTBF-1 
      DEF CLEN      LINE
      JMP LSTR,I    EXIT. 
      SKP 
* 
*   'NOPER' PUTS NOP'S IN THE FIELD WORDS, SO THEY
*   CAN BE COMBINED TO MAKE A WORD TYPE 1 NOP 
*   MICROINSTRUCTION. 
* 
*   CALLING SEQUENCE: 
*      JSB NOPER
* 
NOPER NOP 
* 
*   PUT NOP'S IN THE FIELDS OF A TYPE 1 WORD. 
* 
      LDA SPNOP     'SPECIAL' NOP 
      STA FLD3      INTO FIELD 3. 
      LDA STNOP     'STORE' NOP 
      STA FLD5      INTO FIELD 5. 
      LDA SBNOP     'S-BUS' NOP 
      STA FLD6      INTO FIELD 6. 
      LDA PASS      'ALU' NOP 
      STA FLD4      INTO FIELD 4. 
      LDA OPNOP     'OPCODE' NOP
      STA FLD2      INTO FIELD 2. 
      JMP NOPER,I 
      SKP 
* 
*   "NUM" CONVERTS A FIELD WHOSE STARTING BYTE ADDRESS
*   IS IN B REG., INTO A BINARY NO.  THE NO.
*   IS RETURNED IN THE A REG.  IF ERROR, OVERFLOW 
*   BIT IS SET ON RETURN. 
* 
*   CALLING SEQUENCE: 
*      LDB <BYTE ADDRESS OF START OF FIELD> 
*      JSB NUM
* 
*   UPON RETURN:   A REG. CONTAINS THE BINARY NO. 
*                  OVERFLOW BIT SET IF ERROR
* 
*   ALLOWABLE CONTENTS OF FIELD ARE:
*      <LABEL>
*      <LABEL> FOLLOWED BY '+' OR '-' <ADDRESS> 
*      '*'
*      '*' FOLLOWED BY '+' OR '-'<ADDRESS>
*      <ADDRESS>
*   WHERE <ADDRESS> CAN BE: 
*      <STRING OF OCTAL ASCII DIGITS>B
*      %<STRING OF OCTAL ASCII DIGITS>
*      <STRING OF DECIMAL ASCII DIGITS> 
* 
*   NOTE: IN THIS SUBR, THE FIELD IS DIVIDED INTO 3 
*   SUBFIELDS.  SUBFIELD 1 CONTAINS A LABEL (SYMBOL) OR 
*   AN '*' OR A OCT OR DEC  #.  SUBFIELD 2 MAY CONTAIN
*   A '+' OR '-' OR A SPACE.  SUBFIELD 3 MAY CONTAIN
*   AN OCTAL OR DEC # (OR, OF COURSE, A SPACE). 
* 
NUM   NOP 
      STB NSAVB     SAVE FIELD STARTNG BYTE ADDR. 
      CLA 
      STA FLG2      CLEAR '+ OR -' FLAG.
      STA SYVAL     CLEAR TEMP VALUE HOLDER.
* 
*   BEGIN BY LOOKING AT SUBFIELD 1. 
*   (SECOND TIME AROUND, IT'S SUBFIELD 3 WE'RE
*   LOOKING AT.)
* 
NUM1  LDB NSAVB 
      JSB LOADB     GET 1ST CHAR IN SUB-FIELD.
      CPA PRCNT     IS IT '%'?
      JMP NUM12     YES.
      CPA ASTER     NO.  IS IT '*'? 
      JMP NUM24     YES.
      JMP NUM8      NO.  SEE IF IT'S A SYMBOL.
NUM12 INB           INC TO NEXT BYTE. 
      JMP NUM30     GO GET AN OCTAL #.
NUM24 LDA PCNTR     SET 'SYVAL' TO CURRENT
      STA SYVAL     PROG COUNTER VALUE. 
      JMP NUM9      GO LOOK AT SUBFIELD 2.
NUM8  LDB NSAVB     GET SUBFIELD 1 START BYTE ADDR. 
      JSB SERCH 
      SSA           FIND SYMBOL IN SYMBOL TABLE?
      JMP NUM10     NO. 
      ADA .+4       YES.  BRING WORD CONTAINING 
      LDA 0,I       VALUE INTO 'A' REG. 
      AND =B077777  CLEAR POSSIBLE 'EQU' FLAG BIT.
      STA SYVAL     SAVE SYMBOL ABS VALUE.
*   NOW WE 'CUT ACROSS THE BACK LOT', SO TO SPEAK,
*   AND GRAB WHAT AMOUNTS TO THE SUBFIELD 2 STARTING BYTE 
*   ADDRESS+1 OUT OF 'TLOAD' SUBR.  'TLOAD' WAS CALLED
*   BY 'SERCH' ABOVE. 
      LDB SAVC      GRAB SUBFLD 2 BYTE ADDR + 1.
      ADB .-1       BACK UP 1 BYTE. 
      JMP NUM90     GO SEE WHAT'S IN SUBFIELD 2.
* 
*   HERE WE DETERMINE IF SUBFIELD 2 IS A SPACE, 
*   '+', OR '-'.
* 
NUM9  INB 
NUM90 JSB LOADB     IS NEXT CHAR A SPACE? 
      CPA SPAC
      RSS           YES.
      JMP NUM91     NO. 
      LDA SYVAL     THEN 'SYVAL' HAS FINAL VALUE. 
      JMP NUM14     PUT IN 'A' REG. 
NUM91 CPA PLUS      IS IT '+'?
      JMP NUM95     YES.
      CPA MINUS     NO.  IS IT '-'? 
      JMP NUM96     YES.
      JMP NUM6      NO.  THEN ERROR.
NUM95 LDA .+2       SET 'FLG2' TO '2' FOR '+'.
      STA FLG2
      JMP NUM97 
NUM96 LDA .+3       SET 'FLG2' TO '3' FOR '-'.
      STA FLG2
NUM97 INB           INC TO NEXT SUBFIELD START BYTE.
      STB NSAVB     SAVE THAT BYTE ADDR.
      JMP NUM1      GO SEE WHAT'S IN SUB-FIELD 3. 
* 
*   DOES # STRING HAVE A 'B' ON THE END?
* 
NUM10 LDA .B
      LDB NSAVB 
      JSB SKPTO 
      SOC 
      JMP NUM4      NO.  MUST BE DEC # THEN.
      JMP NUM3      YES.  MUST BE OCTAL #.
* 
*   GO GET AN OCTAL #.
* 
NUM3  LDB NSAVB 
NUM30 CLA 
      JSB CNVRT 
      SOC 
      JMP NUM6      BAD OCTAL #, SO ERROR.
      JMP NUM14     GOOD OCTAL #. 
* 
*   GO GET A DECIMAL #. 
* 
NUM4  LDB NSAVB 
      CLA,INA 
      JSB CNVRT 
      SOC 
      JMP NUM6      BAD DEC #, SO ERROR.
      JMP NUM14     GOOD DEC #. 
* 
*   COMPUTE FINAL VALUE FOR ENTIRE FIELD. 
* 
NUM14 LDB FLG2      WE JUST COMPLETE A
      SZB,RSS       SUBFIELD 3 PASS?
      JMP NUM5      NO. SO WE'RE DONE.
      CPB .+3       YES.  '-' IN SUBFIELD 2?
      CMA,INA       YES, SO NEGATE SUBFLD 3 #.
      ADA SYVAL     ADD TO PREVIOUS VALUE.
      JMP NUM5      WE'RE DONE. 
* 
*   'GOOD # IN FIELD' EXIT. 
* 
NUM5  CLO 
      JMP NUM,I     RETURN. 
* 
*   ERROR IN FIELD CONTENTS.
* 
NUM6  STO 
      JMP NUM,I 
FLG2  BSS 1 
SYVAL NOP 
* 
      SKP 
*   'OCTL' CONVERTS A POSITIVE BINARY NO. INTO AN 
*   OCTAL ASCII EQUIVALENT WITH A SPECIFIED NO. OF DIGITS.
* 
*   CALLING SEQUENCE: 
*      B REG SHOULD CONTAIN DESTINATION BYTE ADDRESS
*      OF MOST SIGNIFICANT OCTAL ASCII DIGIT. 
*      A REG SHOULD CONTAIN THE POSITIVE BINARY NO. 
*      JSB OCTL 
*      <+DEC NO. OF OCTAL ASCII DIGITS THE BINARY 
*         NO. IS TO BE CONVERTED INTO.  MUST BE IN
*         THE RANGE 1 THRU 6. 
* 
*   UPON EXIT, THE OCTAL ASCII NO. WI.L BE AT 
*   THE SPECIFIED ADDRESS.
* 
OCTL  NOP 
      STA SAVP
      CLA           CLEAR NON-ZERO DIGIT FLAG.
      STA FLG 
      LDA OPAD      INITIALIZE ADDRESS OF LIST
      STA SAVQ      OF ROTATE INSTRUCTIONS. 
      LDA .-6 
      STA OCONT 
* 
*   PROCESSING LOOP BEGINS HERE.
* 
OCTO  LDA SAVQ,I    HAVE WE LOOKED AT 
      CPA .-1       6 OCTAL FIELDS YET? 
      JMP OCT5      YES.  SO EXIT.
      STA OP1       NO.  SET UP NEXT
      ISZ SAVQ      PAIR OF ROTATE
      LDA SAVQ,I    INSTRUCTIONS. 
      STA OP2 
      ISZ SAVQ
      LDA SAVP
OP1   NOP           NOW ROTATE THE NEXT OCTAL FIELD 
OP2   NOP           INTO THE LOW 3 BITS OF A REG. 
      AND .+7 
      STA SAVR      SAVE THE FIELD. 
      LDA OCONT     ARE WE ON DIGIT NO.  <= 
      ADA OCTL,I    NO. OF DIGITS SPECIFIED?
      SSA 
      JMP OCT3      NO. SO IGNORE THIS FIELD. 
      LDA SAVR      YES.  SO CONVERT AND STORE
      ADA B60       THIS FIELD. 
      JSB STORB 
OCT3  ISZ OCONT     DECREMENT NO. OF FIELDS 
      JMP OCTO      YET TO BE LOOKED AT.
OCT5  ISZ OCTL
      JMP OCTL,I
*   IMPORTANT! 'DP1' MUST BE ADDRESSED BY AN INDIRECT THROUGH 
*   BASE PAGE, BECAUSE INSTRUCTION REFERENCING IT 
*   (SEE UNDER 'OPAD') IS MOVED BY ABOVE SUBROUTINE.
DP1   DEF .+1 
FLG   BSS 1 
SAVP  BSS 1 
SAVQ  BSS 1 
SAVR  BSS 1 
      SKP 
*   'ONEST' TESTS FOR A 'ONES' STATEMENT AND PROCESSES IT IF
*   IT FINDS ONE. 
* 
*   CALLING SEQUENCE: 
* 
*      JSB ONES 
* 
*   UPON RETURN:
* 
*      IF 'A' REG = 0, STATEMENT WAS NOT A 'ONES' STATEMENT.
*      IF 'A' REG # 0, STATEMENT WAS A 'ONES' STATEMENT 
*         AND ALL 1'S HAVE BEEN PUT INTO THE MICRO
*         INSTRUCTION.
* 
ONEST NOP 
      LDB F2ADR     GET FIELD 2 BYTE ADDR.
      LDA ONEAD     GET REF STRING WORD ADDR. 
      JSB CHECK     WE GOT A 'ONES' STATEMENT?
      SZA,RSS 
      JMP ONEST,I   NO.  RETURN.
      LDA =B177777  YES.  SET LOW 16 BITS TO 1'S. 
      STA INST1 
      LDA =B377     SET HIGH 8 BITS TO 1'S. 
      STA INST2 
      JMP ONEST,I 
      SKP 
* 
*   'OUTPT' LISTS A RECORD AFTER PASS 2 PROCESSING, AND 
*   ALSO PUNCHES OUT THE BINARY OBJECT CODE, IF 
*   PUNCH BUFFER IS FULL. 
* 
*   CALLING SEQUENCE: 
*      JSB OUTPT
* 
OUTPT NOP 
      CLB,INB 
      LDA PCNTR 
      INA           INCREMENT PROG COUNTER. 
      AND LOMSK     IS REL ADDR OF PROG COUNTER 
      CPA LOMSK     = 377 OCT?
      STB BEWFL     YES.  SET BEWARE FLAG.
      LDA PCNTR     NO.  DOES IT MAKE NEXT REL
      INA 
      AND =B777     ADDR = 401 OCT? 
      CPA =B401 
      RSS           YES.
      JMP OUT0      NO, SO OK.
      LDA BEWFL     IS 'BEWARE WE PASSED THRU 
      CPA .+1       REL ADDR 377' FLAG SET? 
      JMP OUT2      YES. PROG IS OUT OF BOUNDS. 
OUT0  LDB EQUFL     IS THIS AN EQU STATEMENT? 
      SZB,RSS 
      JMP OUT1      NO. 
      LDA CRLEN     MAKE # OF CHARS IN RECORD POS 
      CMA,INA       TO INDICATE PASS 2. 
      JSB LSTR
      JMP OUT15 
OUT1  LDA PCNTR     PUT ADDRESS IN HIGH BITS
      AND LOMSK 
      ALF,ALF       OF MICROINSTRUCTION.
      IOR INST2 
      STA INST2 
      LDA CRLEN 
      CMA,INA 
      JSB LSTR      LIST THE LINE.
      JSB EMCDE     PUNCH OUT THE CODE. 
      ISZ PCNTR     INCREMENT PROGRAM COUNTER.
OUT15 ISZ LINE#     INCREMENT LINE COUNTER. 
      JMP OUTPT,I 
OUT2  LDA .+9 
      JSB ERROR 
      JMP ABORT 
      SKP 
* 
* 
* 
PAGER NOP 
      ISZ #LNES 
      JMP PAGER,I 
      JSB EJECT 
      JMP PAGER,I 
      SKP 
* 
*   THIS ROUTINE CONTROLS SOURCE INPUT FROM CARD READER, PHOTOREADER, 
*   OR TTY.   NOTE THAT WE STAY IN THIS SUBROUTINE UNTIL THE ENTIRE 
*   RECORD HAS BEEN READ, AS IT DOES NO GOOD TO START PROCESSING
*   UNTIL THE ENTIRE RECORD IS IN.  IN OTHER WORDS, WE DON'T TAKE 
*   ADVANTAGE OF INTERRUPT HERE.
* 
*   CALLING SEQUENCE: 
*      JSB RDCRD
* 
* 
RDCRD NOP 
      LDA .P40      FILL INPUT BUFFER  WITH 
      LDB ACARD     SPACES. 
      JSB CLEAN 
      DEF BLNK2 
      LDA .+11      FILL ASCII OUTPUT BUFFER
      LDB ABF0      WITH SPACES.
      JSB CLEAN 
      DEF BLNK2 
      LDA PASSN     IS THIS PASS 2? 
      CPA .+2 
      RSS           YES.
      JMP RDCR8     NO. 
      LDA MAG       IS SOURCE ON MAG TAPE?
      SZA,RSS 
      JMP RDCR8     NO. 
      LDA MAGAD     YES.  THEN CHANGE INPUT DEVICE
      STA RDCR9     L.U. # IN 'IOSUB' CALL. 
* 
*   READ A RECORD.
                                                                                                                            