      HED ERROR ROUTINES* *  WHILE READING A PROGRAM IN 'TAPE' MODE, ERRONEOUS STATEMENTS *  ARE REPLACED WITH ERROR PSUEDO-STATEMENTS.  THESE ARE THREE*  WORD 'STATEMENTS':  THE STATEMENT NUMBER, THE LENGTH (ALWAYS *  3), AND THE ERROR NUMBER.  SINCE BITS 15-9 ARE CLEAR IN WORD *  THREE, ERRORS HAVE A STATEMENT TYPE OF 0.  ERRCT HOLDS A *  COUNT OF THE EMBEDDED ERRORS AND THE USER'S BIT OF TERR IS *  SET IF ANY EMBEDDED ERRORS EXIST.  ADDITIONALLY, THE 'OUT-OF-*  STORAGE' ERROR SETS SYMTB = 1 TO ASSIST SYNTAX.  ALL STATEMENTS*  WITH A SEQUENCE NUMBER OF ZERO WILL BE COLLAPSED INTO A SINGLE *  ERROR AND UNDER/OVERFLOWS IN NUMERICAL CONSTANTS ARE NOT *  REPORTED.* **                             ** ***  OUTPUT TAPE MODE ERRORS  *** **                             ** * *  UPON ENTRY ALL EMBEDDED ERRORS ARE STRIPPED FROM THE PROGRAM *  AND STORED BELOW IT AS TWO-WORD QUANTITIES (THE LENGTH WORD*  IS DROPPED).  FOLLOWING THIS THE ERRORS ARE PRINTED ONE BY *  ONE WITH LINE NUMBERS.  AFTER PRINTING ALL ERRORS (OR, IF THE*  USER ABORTS THE ERROR PRINTING, AFTER THE USER TYPES THE NEXT*  LINE) EVERYTHING IS CLEANED UP AND A MESSAGE PRINTED TO SAY*  THE LAST RECEIVED INPUT HAS BEEN IGNORED.* TAPER CLA           FIRST       CPA ERRCT       ENTRY?      JMP TAPE5     NO      STA SYMTB     YES, RESET 'OUT OF STORAGE' FLAG      LDA PBPTR     INITIALIZE      STA SPTR      LDB PBUFF       PROGRAM       STB DEST      STB SOURC         POINTERS*                               * **  STRIP OUT EMBEDDED ERRORS  ** *                               * TAPE1 INB           SET (B)       LDA 1           TO FIRST WORD       ADB 1,I           OF NEXT       ADB .-1             PROGRAM STATEMENT       INA           IS THE      LDA 0,I         CURRENT STATEMENT       AND OPMSK         OF TYPE       SZA                 'ERROR' ?       JMP TAPE1     NO      LDA SOURC     YES, LOAD SOURCE ADDRESS      STB SOURC     SET SOURCE TO NEW VALUE       ADB .-3       JUXTAPOSED      CPA 1           ERRORS?       JMP TAPE2     YES, NO MOVE NEEDED       CPA DEST      NO, FIRST ERROR ENCOUNTERED?      JMP TAPE6     YES       JSB MOVER     NO, DELETE PRIOR ERROR(S) TAPE2 LDB PBPTR     ENOUGH      STB TAP0      INB             USER SPACE      CPB LWAUS       JMP TAPE7         TO TRANSFER       INB       CPB LWAUS           ERROR?      JMP TAPE7     NO      STB PBPTR     YES, APPEND TWO WORDS       LDB 0,I       TRANSFER      STB TAP0,I      LINE NUMBER       ISZ TAP0      ADA .+2       TRANSFER      LDB 0,I         ERROR       STB TAP0,I        NUMBER      LDB SOURC     RETRIEVE POINTER TO STATEMENT       CCA           DECREMENT       ADA ERRCT       ERROR       STA ERRCT         COUNTER       SZA           ALL ERRORS DELETED?       JMP TAPE1     NO      CPB SPTR      YES, PROGRAM REMAINING?       JMP TAPE3     NO      LDA SOURC     YES, SLIDE UP       LDB SPTR        OVER LAST       JSB MOVER         ERROR(S)*                           * **  OUTPUT ERROR MESSAGES  ** *                           * TAPE3 LDA RETAD     SET       STA SERR        RETURN ADDRESS      LDA WERRA     FAKE      CMA,INA         'WARNING ONLY'      STA LT5           ERROR MODETAPE4 CCB           FORCE       STB LT6         LINE NUMBER       LDB SPTR,I    MAKE LINE NUMBER OF       STB .LNUM       CURRENT ERROR ACCESSIBLE      ISZ SPTR      LOAD      LDA SPTR,I      ERROR NUMBER      CLB           EXIT TO       JMP SERR1+3     ERROR PRINTER RETAD DEF *+1       ISZ SPTR      MORE      LDA SPTR      CPA PBPTR       ERRORS?       RSS           NO      JMP TAPE4     YES TAPE5 LDA DEST      CORRECT POINTER TO      STA PBPTR       LAST WORD +1 OF PROGRAM       CLF 0       LDA TERR      TURN      AND CMSK        ERROR FLAG      STA TERR          OFF       STF 0       JSB RERRS+33,I  EMIT PARTING SHOT * TAPE6 STB DEST      SET DESTINATION POINTER       LDA 1           TO FIRST ERROR ENCOUNTERED      JMP TAPE2 TAPE7 STA TAP1      SAVE SOURCE ADDRESS       CMA,INA       COMPUTE SIZE OF AREA      ADA DEST        TO BE RECLAIMED       STA TAP0          AND SAVE IT       ADA SPTR      RESET POINTER TO      STA SPTR        LAST WORD +1 OF PROGRAM       LDB SOURC     SET POINTER TO      ADB TAP0        NEXT STATEMENT      STB SOURC         TO NEW VALUE      LDA TAP1      RETRIEVE SOURCE ADDRESS       LDB PBPTR     RECLAIM       JSB MOVER       SPACE       LDB DEST      SET NEW POINTER TO      STB PBPTR       PROTECTED AREA      LDA SOURC     COMPUTE POINTER TO      ADA .-3         CURRENT ERROR STATEMENT       STA DEST      SET NEW DESTINATION POINTER       JMP TAPE2+1 **                              *****  MOVE BLOCK TO LOWER CORE  *****                              *** *  UPON ENTRY (B) POINTS TO THE LAST WORD +1 TO BE MOVED AND*  (A) POINTS TO THE FIRST WORD TO BE MOVED.  DEST POINTS TO THE*  FIRST WORD OF THE DESTINATION SPACE. * #MOVE STB MVEND     SAVE POINTER TO LAST WORD +1      LDB 0,I       TRANSFER      STB DEST,I      WORD      ISZ DEST      BUMP      INA             POINTERS      CPA MVEND     DONE?       JMP MOVER,I   YES       JMP #MOVE+1   NO**                             ** ***  OUTPUT AN ERROR MESSAGE  *** **                             ** * *  ERRORS ARE IDENTIFIED, THE APPROPRIATE SECTOR OF DISC LOADED,*  AND THE MESSAGE PRINTED.  IF A SYNTAX ERROR AND IN 'TAPE'*  MODE, THE ERROR IS EMBEDDED IN THE PROGRAM AS A PSUEDO-*  STATEMENT AND THE ERROR FLAGS ADJUSTED AS APPROPRIATE.  IF A *  SYNTAX ERROR AND IN 'KEY' MODE, 'ERROR' IS PRINTED AND INPUT *  REQUESTED.  THE ERROR MESSAGE IS PRINTED IF THE REPLY IS OTHER *  THAN A SIMPLE CARRIAGE RETURN.  IF THE LENGTH WORD OF THE ERROR*  MESSAGE IS POSITIVE THE CURRENT LINE NUMBER IS APPENDED. * #SERR CCA           COMPUTE       ADA SERR      LDA 0,I         AND SAVE      ADA SERRA       AND B777          ERROR NUMBER      STA LT3       ADA RERRA       STA LT5       SYNTAX      SSA,RSS         ERROR?      JMP SERR1     NO      LDA TAPEF     YES, TAPE       AND LMSK      SZA             MODE?       JMP SERR6     YES       CLB           NO      STB LT2       OUTPUT      LDA ASCER       'ERROR'       STA LT1           AND       LDA .-3             WAIT      JSB OUTST             FOR       JSB SCHIN,I             INPUT.      CCA           SET       ADA LBUFA,I     BUFFER      STA BADDR         POINTER       JSB GETCR     CARRIAGE RETURN ONLY?       JMP SERR4     YES *                       * **  PRINT THE MESSAGE  ** *                       * SERR1 LDA LT3       NO      CLB       STB LT6       LOAD      RRR 4       STB LT3       QUADRANT      ADA DSERR       LDB 0,I           ADDRESS       LDA LT3       COMPUTE       RAL,RAL       AND .+3         SECTOR      ADA 1       LDB D100      CLF 0       STB WORD      READ      LDB ERSCA       ADB FLGBT       SECTOR      JSB DISC,I      LDA ENDSK       SZA           DONE?       JMP *-2       NO      LDA LT5       YES       SSA,RSS       EXECUTION ERROR?      JMP SERR5     YES       LDA B377      NO, OUTPUT      JSB OUTCR       A RUBOUT      LDA .-7       STA LT1       OUTPUT      LDA .+40B       JSB OUTCR       7       ISZ LT1       JMP *-3           BLANKS. SERR2 LDA LT3       COMPUTE       ALF,ALF       AND .+60B       MESSAGE       ADA ERSCA       STA LT1           ADDRESS       CCB       LDA 0,I       SSA           LINE NUMBER?      JMP *+3       NO      STB LT6       YES, SET FLAG       CMA,INA       CLB           OUTPUT      STB LT2         ERROR       JSB OUTST         MESSAGE       ISZ LT6       LINE NUMBER FLAG SET?       JMP SERR3     NO      LDA LINEA     YES       STA LT1       PRINT       CLB       LDA .-5         " IN LINE "       JSB OUTST       LDB .LNUM     OUTPUT      JSB OUTIN       LINE NUMBER SERR3 LDA LT5       'BAD      ADA WERRA       INPUT'      SZA,RSS           ERROR       JMP SERR8     YES       STA LT5       NO, SAVE FOR RETURN CHECK       LDA .+15B     OUTPUT      JSB OUTCR       CARRIAGE RETURN SERR4 LDA .+12B     OUTPUT      JSB OUTCR       LINE FEED       LDA LT5       WARNING       SSA             ONLY?       JMP SCHEN,I   NO      CLA           YES SERR8 STA CHRCT       JMP SERR,I* SERR5 LDA .+15B     OUTPUT      JSB OUTCR       CARRIAGE RETURN       LDA .+12B         AND       JSB OUTCR           LINE FEED       JMP SERR2 SERR6 LDB PBPTR       ADB .+2       STORE       LDA LT3         ERROR       STA 1,I           NUMBER      INB           SET POINTER TO      STB SBPTR       LAST WORD +1 OF ERROR       SZA,RSS       'OUT OF STORAGE' ERROR?       ISZ SYMTB     YES       CLF 0         NO      LDA TERR      FIRST       IOR LMSK      CPA TERR        ERROR?      JMP *+4       NO      STA TERR      YES, SET FLAG       CLA           CLEAR       STA ERRCT       ERROR COUNTER       STF 0       ISZ ERRCT     COUNT ERROR       JSB BCKSP     SEEKSERR7 JSB GETCR       CARRIAGE RETURN       JMP ACCSA,I       JMP *-2 * ASCER DEF ERR-1 ERR   OCT 5105      ASC 2,RRORLINEA DEF *       ASC 4, IN LINE      OCT 20000       HED LIST ROUTINES * **************************                  *** ***  LIST THE PROGRAM  *******                  *** * *********************** * * *  'LIST' CONVERTS THE CURRENT USER PROGRAM TO A STANDARD ASCII *  FORMAT AND PRINTS IT ON THE TELETYPE ONE LINE PER PROGRAM*  STATEMENT.  'PUNCH' ADDS A LEADER AND TRAILER TO THE ASCII *  PROGRAM DUMP.  LISTING BEGINS WITH THE FIRST PROGRAM STATEMENT *  UNLESS DIRECTED OTHERWISE BY THE 'LIST' OR 'PUNCH' COMMAND.*  LT1 IS THE PROGRAM POSITION POINTER.  LT2 IS THE STATEMENT *  LENGTH COUNTER.* PUNCH CCA,RSS       SET TO 'PUNCH' MODE LIST  CLA           SET TO 'LIST' MODE      STA LT0       SAVE MODE       LDB PBUFF     NULL      CPB PBPTR       PROGRAM?      JMP LIS16     YES       STB LT3       NO      JSB SINIT     PREPARE PROGRAM FOR LISTING       LDB PBPTR       LDA CFLAG     SAVE      AND LMSK        PROGRAM       STA LT5           MODE*                                            ***  DETERMINE FIRST STATEMENT TO BE LISTED  ***                                            *      SZA           SAVE POINTER TO       LDB SPTR        LAST WORD +1      STB LT6           OF PROGRAM      JSB GETCR     STARTING LINE NUMBER?       JMP LIST1     NO      JSB BCKSP     YES       JSB BLDIN     FETCH INTEGER       CPA .+15B     END OF RECORD?      RSS           YES       JSB RERRS+12,I  NO      LDA LT6       SEEK      JSB FNDPS       STATEMENT       JMP LIS16     ALL LINE NUMBERS < GIVEN INTEGER      NOP           SAVE DESIRED      STB LT3         STARTING POINTLIST1 LDA .+12B     OUTPUT A      JSB OUTCR       LINE FEED *                         * **  OUTPUT PROGRAM NAME  ** *                         *       LDA LNAME       STA LT1       INA           NULL      LDA 0,I       SZA,RSS         NAME?       JMP *+7       YES       CLB           NO      STB LT2       OUTPUT      LDA .-3         PROGRAM       JSB OUTST         NAME      LDA .+15B     OUTPUT      JSB OUTCR       CARRIAGE RETURN       LDA .+12B         AND       JSB OUTCR           DOUBLE      LDA .+12B             LINE      JSB OUTCR               FEED*                              ***  OUTPUT LEADER IF 'PUNCH'  ***                              *      CLA           'LIST'      CPA LT0         MODE?       JMP LIST2-2   YES       LDA M72B      NO,       STA DIGCT       OUTPUT      CLA               FEED      JSB OUTCR           FRAMES      ISZ DIGCT             FOR       JMP *-3                 LEADER      LDB LT3       SET POINTER TO      STB LT1         STARTING POINT*                    ***  MAIN LIST LOOP  ***                    *LIST2 LDB LT1       PROGRAM       CPB LT6         EXHAUSTED?      JMP LIS15     YES       LDB LT1,I     NO, OUTPUT      JSB OUTIN       LINE NUMBER       LDA .+40B     OUTPUT      JSB OUTCR       BLANK       ISZ LT1       SET       LDA LT1,I       LENGTH      CMA,INA           COUNTER       INA                 FOR       STA LT2               STATEMENT       JMP LIST3       LDB LT1,I    OUTPUT       JSB OUTIN       BOUND LIST3 ISZ LT1       MORE OF       ISZ LT2         STATEMENT?      JMP LIST4     YES       LDA .+15B     NO,       JSB OUTCR       OUTPUT A      LDA .+12B         CARRIAGE RETURN       JSB OUTCR           AND LINE FEED       JMP LIST2 *                       * **  IDENTIFY OPERATOR  ** *                       * LIST4 LDA LT1,I     EXTRACT       AND OPMSK       OPERATOR      SZA,RSS       NULL OPERATOR?      JMP LIST5     YES       CPA LETOP     NO, 'IMPLIED' LET?      JMP LIST5-2   YES, OUTPUT A BLANK       ALF,ALF       NO,       ADA D62         SINGLE-CHARACTER      SSA,RSS           OPERATOR?       JMP LIS12     NO      ADA B63       YES,      ADA FOPBS       EXTRACT       LDA 0,I           ASCII       ALF,ALF             CODE      AND B177      CPA .+42B     " ?       JMP LIS14     YES       RSS           NO      LDA .+40B     LOAD A BLANK      JSB OUTCR *                      ***  IDENTIFY OPERAND  ***                      *LIST5 LDA LT1,I     EXTRACT       AND OPDMK       OPERAND       STA LT3       SSA           FLAG BIT SET?       JMP LIST9     YES       CLB           NO, NULL      CPB LT3         OPERAND?      JMP LIST3     YES       CPB LT5       NO, 'COMPILED' ?      JMP LIST0     NO      ADA .-1       YES       ALS           LOAD      ADA SYMTB       ACTUAL      LDA 0,I           SYMBOL      STA LT3       SAVE SYMBOL *                           * **  LIST SYMBOLIC OPERAND  ** *                           * LIST0 AND PDFFL     ISOLATE TYPE PART       CPA .+17B     FUNCTION?       JMP LIST8     YES LIST6 LDA LT3       NO,       RRR 4           COMPUTE       AND .+37B         ASCII FOR       ADA B100            LETTER      JSB OUTCR     OUTPUT LETTER       LDA LT3       AND .+17B       CPA .+17B     FUNCTION?       JMP LIST3     YES       SZA,RSS       NO, STRING VARIABLE?      JMP LIST7     YES       ADA .-5       NO      SSA           DIGIT?      JMP LIST3     NO      ADA .+60B     YES,      JSB OUTCR       OUTPUT IT       JMP LIST3 LIST7 LDA .+44B     LOAD ASCII '$'      JMP *-3 LIST8 LDA F         OUTPUT      JSB OUTCR       LDA N           'FN'      JSB OUTCR       JMP LIST6 *                                        ***  LIST CONSTANT OPERAND OR PARAMETER  ***                                        *LIST9 ELA,CLE,ERA   CLEAR FLAG BIT      SZA           CONSTANT?       JMP LIS10     NO      STA CHRCT     YES, SET      STA SIGN        FOR NO SIGN       ISZ LT1       LOAD      ISZ LT2       DLD LT1,I       CONSTANT      ISZ LT1       ISZ LT2       CLE,SSA       NEGATIVE NUMBER?      CCE           YES, ENABLE SIGN      JSB NUMOT     OUTPUT THE CONSTANT       JMP LIST3 LIS10 AND .+17B     ISOLATE TYPE PART       CPA .+3       PROGRAM INTEGER?      JMP LIS11     YES       CPA .+17B     NO, PRE-DEFINED FUNCTION?       RSS           YES       JMP LIST6     NO, MUST BE A PARAMETER SYMBOL      LDA LT3       OUTPUT      ALF,RAL       LDB ATAB        FUNCTION      JSB MCOUT       JMP LIST3         SYMBOLLIS11 ISZ LT1       ISZ LT2       LDA LT4       LISTING A       CPA DIMOP       <DIM STATEMENT> ?       JMP LIST3-2   YES       LDA LT5       NO      LDB LT1,I     LOAD PROSPECTIVE INTEGER      SZA           PROGRAM 'COMPILED' ?      LDB 1,I       YES       JSB OUTIN     OUTPUT INTEGER      ISZ LT1       MORE      ISZ LT2         STATEMENT?      RSS           YES       JMP LIST3+3   NO      LDA .+54B     EMIT      JSB OUTCR       A COMMA       JMP LIS11+5 *                                  ***  LIST MULTICHARACTER OPERATOR  ***                                  *LIS12 LDA .+40B     OUTPUT      JSB OUTCR       A BLANK       LDA LT1,I     OUTPUT      LDB MCBOP       MULTICHARACTER      JSB MCOUT         OPERATOR      LDA .+40B       LDB LT4       WAS IT      CPB REMOP       A 'REM' ?       JMP LIS13     YES       CPB FILOP     NO, 'FILES' ?       JMP LIS13-1   YES       JSB OUTCR     NO, OUTPUT A BLANK      JMP LIST5       JSB OUTCR     OUTPUT A BLANKLIS13 LDA LT2       OUTPUT      CCB             THE       JSB OUTST         REMARK      JMP LIST3 *                            ***  LIST A STRING CONSTANT  ***                            *LIS14 JSB OUTCR     OUTPUT "      LDA LT1,I     COMPUTE       AND B377        WORDS       SZA,RSS       JMP LIS17       CMA,INA           OF      ARS                 STRING      CLB           OUTPUT      JSB OUTST       STRINGLIS17 LDA .+42B     OUTPUT      JSB OUTCR       CLOSING "       JMP LIST3 *                               * **  OUTPUT TRAILER IF 'PUNCH'  ** *                               * LIS15 ISZ LT0       'LIST' MODE?      JMP SCHEN,I   YES       LDA M72B      NO,       STA DIGCT       OUTPUT      CLA               FEED      JSB OUTCR           FRAMES      ISZ DIGCT             FOR       JMP *-3                 TRAILER       JMP SCHEN,I * LIS16 LDA .+12B     ECHO      JSB OUTCR       LINE      JMP SCHEN,I       FEED**                                  *****  LIST A MULTICHARACTER SYMBOL  *****                                  *** *  UPON ENTRY (A) HOLDS A WORD CONTAINING A SYMBOL CODE AND (B) *  HOLDS A POINTER TO THE PRINT NAME TABLE.  THE SYMBOL IS FOUND*  IN THE TABLE AND ITS ASCII FORM OUTPUT.* #MCOT AND OPMSK     SAVE      STA LT4         SYMBOLMCOT1 LDA 1,I       DESIRED       AND OPMSK       TABLE       CPA LT4           ENTRY?      JMP MCOT2     YES       LDA 1,I       NO,       AND .+7         COMPUTE       ADA .+3           ADDRESS       ARS                 OF NEXT       ADB 0                 ENTRY       JMP MCOT1 MCOT2 LDA 1,I       COMPUTE       AND .+7         COUNT       CMA,INA           OF      ARS                 ASCII       STA LT3               WORDS       STB OUTST     SAVE ASCII SYMBOL ADDRESS MCOT3 ISZ OUTST     MOVE TO NEXT WORD OF SYMBOL       LDA OUTST,I   OUTPUT      ALF,ALF         HIGH      JSB OUTCR       LDA OUTST,I   OUTPUT      AND B377        LOW CHARACTER       SZA               IF NOT      JSB OUTCR           NULL      ISZ LT3       MORE SYMBOL?      JMP MCOT3     YES       JMP MCOUT,I   NO**                   ** ***  LIST A STRING  *** **                   ** * *  UPON ENTRY (A) HOLDS A NEGATIVE WORD COUNT OF THE STRING.  IF*  (B) # 0 THE STRING BEGINS WITH THE LOW HALF OF (LT1),I ; IF*  (B) = 0 IT BEGINS WITH THE HIGH HALF OF THE WORD FOLLOWING *  (LT1),I .  A TRAILING NULL CHARACTER WILL NOT BE PRINTED.* #OTST STA LT4       SAVE STRING WORD COUNT      SZB           'REM' ?       JMP OTST2     YES OTST1 ISZ LT1       NO, MOVE TO       ISZ LT2         NEXT PROGRAM WORD       LDA LT1,I     OUTPUT      ALF,ALF         HIGH      JSB OUTCR OTST2 LDA LT1,I     OUTPUT      AND B377        LOW CHARACTER       SZA               IF NOT      JSB OUTCR           NULL      ISZ LT4       MORE STRING?      JMP OTST1     YES       JMP OUTST,I   NO