      SPC 1 
      CCA           SET LINE COUNT TO -1 FORCE PAGE EJECT 
      STA LINES       TITLE AT THE BEGINNING. 
      LDA LABCT     COMPLEMENT LABCT TO FACILITATE
      STA LBLCT 
      CMA            ITS USE AS A COUNTER.
      STA LABCT 
      SPC 1 
* SECTION TO PROCESS A SINGLE LABEL * 
      SPC 1 
DUMP  ISZ LABCT     ANY MORE LABELS ? 
      JMP DOLAB     YES.
      JSB EXEC
      DEF *+4      EJECT
      DEF .3             PAGE 
      DEF OCTCL 
      DEF LINES 
      LDB LBLCT 
      LDA LETOP 
      SZA,RSS 
      JMP STOP
      ISZ RUN      SET RUN NOT EQUAL TO ZERO
      CLB 
      STB FIRST     RESET FIRST TIME THRU INDICATOR 
      JSB %JFIL 
      CLB 
      STB FIRST     RESET FIRST TIME THRU INDICATOR 
      JMP FGSET+3  RETURN FOR NEXT LIMITS 
      SPC 2 
DOLAB LDA MAXCC     SET CCNT SO AS TO FORCE A 
      STA CCNT        BLANK LINE. 
      JSB LINE
      SPC 1 
* SEARCH LABEL TABLE TO FIND THE FIRST LABEL, ALPHABETICALLY *
      SPC 1 
      LDA MASK8     INITIALIZE TO A 
      STA LABEL       MAXIMUM.
      LDA FWA       INITIALIZE LPNTR TO POINT AT
      STA PNTR1       FIRST ENTRY.
      LDA LTAB.     SET LTAB. AS END OF TABLE 
      CMA,INA         POINTER.
      STA PNTR2 
      CLA           INTIALIZE ORDNL TO
      STA ORDNL       ZERO. 
DOLB1 ISZ ORDNL     ADVANCE ORDNL.
      LDB PNTR1     TEST FOR END OF LTAB. 
      ADB PNTR2 
      SSB,RSS       SKIP IF NOT END OF LABEL TABLE. 
      JMP GOTLB     GO TO PRINT SECTION.
      SPC 2 
* MOVE CURRENT LABEL TO TEST ARRAY. * 
      SPC 1 
      LDA BLBL      FIRST INITIALIZE TO BLANKS. 
      STA TEST+1
      STA TEST+2
      STA TEST+3   STORE BLANKS IN TEST BUFFER
      LDA PNTR1     SET TEMP TO POINT AT CURRENT
      STA TEMP        LABEL.
      LDB .TEST     SET B TO POINT AT TEST ARRAY. 
      LDA TEMP,I    GET FIRST WORD OF LABEL IN A. 
      AND MASK8     GET FIRST CHARACTER IN
      STA TEST           TEST.
      XOR TEMP,I    GET WORD COUNT IN HI-PART OF A. 
      ALF,ALF       ROTATE TO LO-PART.
      CMA,INA       STORE AS NEGATIVE IN COUNT. 
      STA COUNT 
DOLB2 ISZ TEMP      ADVANCE LABEL POINTER.
      ISZ COUNT     TEST FOR ANY MORE WORDS IN LABEL
      INB,RSS      ADVANCE TEST POINTER, SKIP 
      JMP COMPR     GO TO COMPARISON SECTION. 
      LDA TEMP,I    GET NEXT WORD OF LABEL. 
      STA 1,I         AND MOVE IT TO TEST ARRAY.
      JMP DOLB2 
      SPC 2 
* COMPARISON SECTION *
      SPC 1 
COMPR LDA .LAB      SET TEMP1 TO POINT
      STA TEMP1       AT LABEL
      LDB .TEST     AND B TO POINT AT TEST
      LDA MIN4     SET COUNT TO -4
      STA COUNT 
DOLB3 LDA TEMP1,I   GET LABEL WORD IN A AND 
      CMA,INA        SUBTRACT IT FROM 
      ADA 1,I         TEST WORD.
      SSA           IF TEST WORD IS SMALLER, GO TO
      JMP MOVE       MOVE SECTION;
      SZA           IF BIGGER GO TO 
      JMP KEEP       KEEP SECTION.
      ISZ COUNT     TEST FOR ANY MORE WORDS.
      RSS           YES.
      JMP KEEP      NO--SHOULDN'T COME HERE 
      ISZ TEMP1     ADVANCE LABEL POINTER 
      INB             AND TEST POINTER
      JMP DOLB3 
MOVE  LDA 1,I       MOVE TEST WORD TO LABEL 
      STA TEMP1,I 
      ISZ TEMP1     ADVANCE 
      INB             POINTERS. 
      ISZ COUNT     ANY MORE WORDS IN TEST ?
      JMP MOVE      YES.
      LDA PNTR1     SET UP ADDRESS OF BEST LABEL
      STA BESTL       SO FAR. 
      LDA ORDNL     SET ORDINAL OF THAT 
      STA BESTO       LABEL ALSO. 
KEEP  LDA TEMP      SET PNTR1 TO NEXT LABEL, AND
      STA PNTR1       GO TO TEST THE
      JMP DOLB1         NEXT ONE. 
      SPC 2 
* SECTION TO PRINT FOR THE OPTIMUM LABEL *
      SPC 1 
GOTLB LDA BESTL,I   STORE A MAXIMUM CHARACTER 
      IOR MASK8       IN THIS LABEL SO THAT WE
      STA BESTL,I       DON'T PICK IT UP AGAIN. 
      LDA LABEL+3  SAVE LAST WORD OF LABEL
      STA TEMPZ    SAVE LAST WORD IN TEMPZ
      LDA BESTO     GET ADDRESS OF XTAB ENTRY 
      JSB ORDLK          IN A AND SAVE IN 
      STA PNTR1             PNTR1.
      LDA PNTR1,I   GET LENGTH OF ENTRY AND SAVE
      STA COUNT       IN COUNT. 
      LDB LABEL    LOAD B WITH FIRST WORD OF LABEL
      ADB UPBLN    ADD ENTRIES
      CPA MIN2     SEE IF ONLY ONE ENTRY
      ADB UPBLN 
      STB LABEL      OF LABEL 
GOTL1 ISZ COUNT     TEST COUNT FOR ANY MORE.
      JMP *+3       GO TO DO NEXT SEQUENCE NUMBER.
      JSB LINE
      JMP DUMP      GO TO DO NEXT LABEL.
      CCA           SUBTRACT 1 FROM PNTR1 SO AS 
      ADA PNTR1       TO HAVE IT POINT AT NEXT
      STA PNTR1         SEQUENCE NUMBER.
      LDA PNTR1,I   LOAD A WITH THE SEQUENCE NUMBER.
      AND MSK12     OBTAIN THE
      STA SEQNO       SEQNO AND 
      XOR PNTR1,I       TAPE NO.
ROTAT NOP          ROTATE TAPE # TO LOW BITS
      INA          INCREMENT A BY ONE 
      STA TAPNO 
      LDA BLANK     OUTPUT 2
      JSB OUTCR         CHARACTERS. 
      LDA .P10      SET SQ1 TO POINT AT POWERS OF 
      STA SQ1         TEN TABLE 
      LDA MIN4      SET -4 IN POWERS OF TEN COUNTER.
      STA PCOUN 
      LDB SEQNO    LOAD A WITH SEQUENCE NUMBER
      SZB,RSS      SKIP IF NOT ZERO 
      JMP UNDEF    GO MODIFY DEFINITION AREA
DGLUP LDA SIXTY    INITIALIZE A TO ASCII 0
      ADB SQ1,I     TRY & SUBTRACT A POWER OF TEN.
      SSB           SKIP IF O.K.
      JMP *+3 
      INA           BUMP OUTPUT DIGIT 
      JMP *-4          & LOOP.
      CMB           ADD BACK THE
      ADB SQ1,I       POWER OF
      CMB               TEN, AND SAVE 
      STB SEQNO           REMAINDER IN SEQNO
      JSB OUTCR     OUTPUT THE DIGI 
      ISZ SQ1       ADVANCE POWER OF 10 POINTER.
      LDB SEQNO    LOAD B WITH SEQUENCE NUMBER
      ISZ PCOUN     ANY MORE DIGITS?
      JMP DGLUP     YES.
      LDA .TAPE    LOAD A WITH TAPE # PARAMETER 
      SZA          SKIP IF PARAMETER IS ZERO
      JMP EASYT    IF NOT ZERO SKIP OUTPUT TAPE NO. ROUT. 
      SPC 2 
* NOW OUTPUT THE TAPE NUMBER.*
      SPC 1 
      CPA TPCNT    IS THE TAPE COUNT ZERO 
      JMP EASYT    YES; GO OUTPUT BLANKS
      LDA SLASH     OUTPUT A SLASH. 
      JSB OUTCR 
      LDB TAPNO     GET TAPE NUMBER IN B
      LDA SIXTY       SET A TO ASC 0
      ADB MTEN      IF B IS GREATER OR EQUAL TO 10
      SSB 
      JMP *+3 
      INA             THEN THE FIRST DIGIT IS A 1 
      JMP *-4 
      ADB FEED
      STB TAPNO       AND THE SECOND IS TAPNO-10
      JSB OUTCR     FIRST DIGIT.
      LDA TAPNO 
      ADA SIXTY 
      JSB OUTCR     SECOND DIGIT
      JMP GOTL1 
      SPC 1 
UNDEF LDA QUEST    LOAD A WITH "$"
      LDB LABEL    LOAD B WITH FIRST WORD OF LABEL
      CPB BL.AS    COMPARE FIRST WORD WITH AN ASTERISK
      LDA STAR     LOAD A WITH A "*"
      CPB BL.EQ    COMPARE FIRST WORD WITH AN "=" 
      LDA DOT      LOAD A WITH A "."
FIELD JSB OUTCR    GO TO OUTPUT CHARACTER ROUTINE 
      ISZ PCOUN    INCREMENT POINTER
      JMP FIELD    RETURN FOR NEXT CHAR 
      LDB TPCNT    LOAD B WITH TAPE COUNT 
      SZB,RSS      SKIP IF COUNT NOT ZERO 
EASYT LDA BLANK     OUTPUT
      JSB OUTCR       THREE BLANKS
      JSB OUTCR         WHEN
      JSB OUTCR           TAPNO=1.
      JMP GOTL1 
      SPC 2 
* ROUTINE TO MOVE A CHARACTER TO THE OUTPUT BUFFER *
      SPC 1 
OUTCR NOP 
      STA CR1       SAVE CHARACTER IN CR1.
      ISZ CCNT      TEST FOR END OF LINE. 
      JMP *+3       NOT END OF LINE.
      JSB LINE      OUTPUT THE LINE.
      JMP *-3       TRY AGAIN.
      LDA CR1       PUT THE 
      LDB CPNTR       CHARACTER IN THE
      JSB A2BUF         OUTPUT BUFFER.
      ISZ CPNTR     ADVANCE CHARACTER POINTER.
      LDA CR1       RETURN WITH CHARACTER 
      JMP OUTCR,I     STILL IN A. 
      SPC 2 
* ROUTINE TO PRINT THE OUTPUT LINE *
      SPC 1 
LNE   NOP 
      ISZ LINES     ADVANCE THE LINE COUNT. 
      JMP LNE,I    IF NOT END OF PAGE SKIP OUT
      JSB EXEC
      DEF *+4 
      DEF .3
      DEF OCTCL 
      DEF LNSKP 
      LDA MIN6     LOAD A WITH -6 FOR NEXT SKIP PAGE END
      STA LNSKP    STORE IN END PAGE SKIP EXEC CALL 
      ISZ PAGNO    INCREMENT PAGE NUMBER BINARY 
      LDA PAGNO    CONVERT
      JSB CNDEC         BINARY
      STA PGNUM+1          PAGE 
      INB                    NUMBER 
      LDA B,I                    TO ASCII 
      STA PGNUM                        IN HEDDING 
LNNE  LDA HEDCT    PRINT THE PAGE 
      LDB .NAME       HEADING.
      JSB WRITE 
      CLA 
      JSB WRITE 
      LDA MIN57     SET LINE COUNT TO -57.
      STA LINES 
      JMP LNE,I    RETURN 
LINE  NOP 
      JSB LNE      GO TEST AND PROCESS EOT
      LDA TEMPZ    RECALL LAST WORD OF LABEL
      STA LABEL+3  INSTAL INTO LAST POSITION OF LABEL 
      AND MASK8    SAVE LAST CHARACTER
      CPA BLANK      SEE IF LAST CHARACTER IS BLANK 
      JMP *+4      NO; SKIP NEXT FOUR INSTRS, 
      LDA DOT      LOAD A WITH A LOW CHAR DOT 
      IOR UPBLN    ADD A UPPER BLANK
      STA LABEL+4  STORE ONLY ONE DOT INSTED OF TWO 
      LDA CCNT     GET CHARACTER COUNT IN A 
      SZA,RSS       IF 0 THEN IT SHOULD BE -1.
      CMA 
      ADA DEC73    GET NUMBER OF  HARS FOR PRINT
      LDB ..LAB         PRINTED.
      JSB WRITE 
      LDA BLBL      BLANK OUT THE 
      STA LABEL       LABEL 
      STA LABEL+1       FIELD.
      STA LABEL+2 
      STA LABEL+3  BLANK OUT FIELD
      STA TEMPZ    SET LAST LABEL WORD TO BLANKS
      LDA OUTBF     RESET CPNTR TO POINT
      ADA MIN1
      STA CPNTR       BEYOND THE LABEL. 
      LDA SETCC     INITIALIZE CCNT 
      STA CCNT           &
      JMP LINE,I            RETURN
      SPC 2 
* ROUTINE TO FETCH A CHARACTER FROM A STRING *
      SPC 1 
BUF2A NOP 
      CLE,ERB       ROTATE TO GET ADDRESS IN B
      LDA 1,I       GET WORD IN A 
      SEZ,RSS        IF E=0, ROTATE TO GET CHARACTER
      ALF,ALF          IN LOW END.
      AND MASK7     MASK THE CHARACTER
      JMP BUF2A,I 
      SPC 2 
* ROUTINE TO STORE A CHARACTER INTO A STRING *
      SPC 1 
A2BUF NOP 
      STA TEMP      SAVE CHARACTER IN TEMP
      ERB           COMPLEMENT LOW ORDER BIT OF B.
      CME 
      ELB 
      JSB BUF2A     OBTAIN MATE TO THIS CHARACTER 
      ALF,ALF         IN HIGH END.
      IOR TEMP      INSERT THE OTHER CHARACTER
      SEZ             AND 
      ALF,ALF           ROTATE IF NECESSARY.
      STA 1,I       STORE THE WORD &
      JMP A2BUF,I     RETURN. 
      SPC 2 
* CHAR GETS THE NEXT CHARACTER FROM THE INPUT STRING *
      SPC 1 
CHAR  NOP 
      LDB CPNTR     GET CHARACTER POINTER.
      LDA FEED      IN CASE OF END OF RECORD. 
      ISZ CPNTR     BUMP CHARACTER POINTER. 
      ISZ CCNT      TEST FOR END OF RECORD. 
      JSB BUF2A     NOT END OF RECORD.
      JMP CHAR,I
      SPC 2 
* LOOK FINDS THE ID IN LABEL IN THE TABLE SPECIFIED * 
      SPC 1 
LOOK  NOP 
      LDA LOOK,I    GET TABLE STARTING ADDRESS. 
      STA .LOOK 
      ISZ LOOK
      LDA LOOK,I    GET TABLE ENDING ADDRESS
      CMA,INA       STORE AS NEGATIVE 
      STA LOOK. 
      CLA      INITIALIZE LOOKC 
      STA LOOKC      TO ZERO. 
      ISZ LOOK      SET LOOK TO POINT TO RETURN ADRS
LOOK1 ISZ LOOKC     BUMP COUNTER. 
      LDB .LOOK     TEST FOR END OF LIST
      ADB LOOK.     B POSITIVE IF THE END.
      CLA 
      SSB,RSS       SKIP IF NOT END OF LIST.
      JMP LOOK,I    RETURN WITH A=0 IF END OF LIST. 
*                                   * THIS CODE IS APPLICABLE 
      LDA .LOOK,I   * WHEN PROCESSING OP-CODES
      ALF           * DEFINED BY MIC INST. ONLY.
      AND .15       * 
      STA OPCNT     SAVE NUMBER OF OPERANDS 
      LDA .LOOK,I   GET FIRST WORD OF LIST ELEMENT
      ALF,ALF       GET NUMBER OF WORDS IN A. 
      AND .15 
      LDB .LOOK     GET ADDRESS OF LIST ELEMENT IN B
      ADA 1         AND ADD WORD COUNT TO IT SO  IT 
      STA .LOOK       POINTS AT NEXT ELEMENT. 
      LDA .LAB      SET TEMP TO POINT AT THE
      STA TEMP        LABEL.
      LDA 1,I       GET FIRST WORD OF LABEL 
      AND MASK9     STRIP NUMBER OF OPERANDS
      RSS 
LOOK2 LDA 1,I       LOAD A WORD FROM THE ELEMENT IN-
      CPA TEMP,I     TO A AND COMPARE WITH LABEL. 
      INB,RSS       BUMP LIST ELEMENT POINTER.
      JMP LOOK1     IF NOT EQUAL GO GET NEXT ELEMENT
      LDA LOOKC       COMPARE TO NEW VALUE OF .LOOK 
      CPB .LOOK     RETURN WITH A=LOOKC IF EQUAL. 
      JMP LOOK,I
      ISZ TEMP      BUMP LABEL POINTER ALSO AND 
      JMP LOOK2       CONTINUE CHECKING THIS ELEMENT
      SPC 2 
* LLKUP RETURNS THE ORDINAL OF LABEL IN THE LABEL TABLE * 
      SPC 1 
LLKUP NOP 
      JSB LOOK      LOOK UP LABEL IN LABEL TABLE
FWA   DEF * 
LTAB. BSS 1         END OF LABEL TABLE. 
      SZA           IF ORDINAL NOT 0, LABEL IS IN 
      JMP LLKUP,I    TABLE, SO RETURN.
      LDA LABEL     GET FIRST WORD OF LABEL AND FIND
      ALF,ALF        ITS WORD COUNT.
      AND .15 
      CMA,INA       STORE AS NEGATIVE IN
      STA PCOUN       PCOUN.
      ADA .XTAB     COMPUTE .XTAB-LTAB.+PCOUN-1 
      CMA,INA         AND TEST FOR POSITIVE.
      ADA LTAB. 
      CMA,SSA 
      JMP OVERR     OTHERWISE, TABLE OVERFLOW.
      LDB .LAB      MOVE LABEL TO LABEL TABLE.
      LDA 1,I       A_LABEL WORD
      STA LTAB.,I   PUT IN LTAB 
      ISZ LTAB.     BUMP THE
      INB             POINTERS. 
      ISZ PCOUN     ANY MORE? 
      JMP *-5       YES 
      LDA MIN2      NO. SET -2 IN XTAB AS NUMBER OF 
      STA .XTAB,I     WORDS IN ENTRY. 
      ADA .XTAB     SUBTRACT 2 FROM XTAB TO POINT IT
      STA .XTAB      AT NEW BEGINNING OF TABLE. 
      INA           STORE A ZERO IN XTAB ENTRY TO 
      CLB            SAY THAT LABEL IS UNDEFINED SO 
      STB 0,I         FAR.
      LDA LOOKC     RETURN LOOKC AS ORDINAL OF THIS 
      ISZ LABCT       LABEL.
      JMP LLKUP,I 
      SPC 2 
* ORDLK GETS THE ADDRESS OF THE NTH ENTRY IN XTAB * 
      SPC 1 
ORDLK NOP 
      CMA,INA       GET N IN PUTS1 AS 
      STA PUTS1       NEGATIVE. 
      LDA LWA 
      ISZ PUTS1     TEST FOR A LINK 
      RSS 
      JMP ORDLK,I 
      ADA 0,I       LINK THROUGH XTAB 
      JMP *-4 
      SPC 2 
* MKSEQ STORES THE CURRENT SEQUENCE NUMBER IN 0,I * 
      SPC 1 
MKSEQ NOP 
      STA 1 
      LDA SEQNO 
      IOR TAPNO 
      STA 1,I 
      JMP MKSEQ,I 
      SPC 2 
* PUTSQ INSERTS THE CURRENT SEQUENCE NUMBER IN XTAB. A CONTAINS THE 
* ORDINAL, AND B=-1 IF THIS IS ONLY TO BE STORED AS THE LABEL SE- 
* QUENCE NUMBER, OR B=0 IF THE TABLE MUST BE EXPANDED TO ADD A NEW
* ELEMENT TO THE SPECIFIED ENTRY. 
      SPC 1 
PUTSQ NOP 
      JSB ORDLK     GET ADDRESS OF ENTRY
      SZB,RSS       IF B IS ZERO, GO TO TABLE MOVE
      JMP PUTS2       SECTION.
      ADA 1         SET A TO POINT AT LABEL SEQ.NO. 
      LDB 0,I       TEST TO SEE IF A SEQUENCE NUMBER
      SZB             IS ALREADY THERE. 
      JMP DDERR     DOUBLY DEFINED SYMBOL.
PUTS3 JSB MKSEQ     NOW COMPUTE THE SEQUENCE NUMBER 
      JMP PUTSQ,I 
PUTS2 CCB           ADD ONE TO THE
      ADB 0,I         NUMBER OF ELEMENTS IN THE 
      STB 0,I           ENTRY.
      ADA 0,I       ADD THIS TO A (AND ADD THE 1
      INA             BACK IN) TO GET THE ADDRESS 
      STA PUTS1         OF THE NEW ELEMENT. 
      LDA .XTAB     MOVE ELEMENTS IN [.XTAB+1,PUTS1]
      STA PUTS5      DOWN 1 LOCATION. 
      CMA           -.XTAB-1
      ADA LTAB.       +LTAB.
      SSA,RSS       IF POSITIVE, THEN 
      JMP OVERR       TABLE OVERFLOW. 
      LDB .XTAB     SET B TO BEGINNING OF BLOCK.
      CPB PUTS1 
      JMP PUTS6     BLOCK MOVED.
      INB 
      LDA 1,I       MOVE A
      STA PUTS5,I     WORD. 
      ISZ PUTS5     ADVANCE DESTINATION POINTER.
      JMP *-6 
      SPC 2 
PUTS6 CCA           DECREMENT .XTAB 
      ADA .XTAB 
      STA .XTAB 
      LDA PUTS1 
      JMP PUTS3 
      SPC 2 
* ID SCANS THE INPUT STRING & BUILDS THE NEXT IDENTIFIER. IF THERE
* IS ONE, IT SKIP RETURNS.
      SPC 1 
ID    NOP 
      LDA BLBL      INITIALIZE LABEL TO BLANKS. 
      STA LABEL+1 
      STA LABEL+2 
      STA LABEL+3  BLANK OUT FIELD
      LDA ONEBL 
      STA LABEL 
      STA L.DLM 
      LDA MIN6      INITIALIZE CHARACTER COUNTER. 
      STA ID1 
      LDA LABCH     SET LABEL CHARACTER POINTER IN
      STA TEMP1          TEMP1
      LDA NEXT IF LAST CHARACTER WAS A
      CPA FEED FEED , THIS IS THE END OF
      JMP ID,I  CARD
ID2   JSB CHAR      GET NEXT CHARACTER
      STA NEXT      PUT INTO NEXT.
      CPA EQUAL    IS THE CHAR AN #="?
      JMP LITRL    YES, GO PROCESS THE LITERAL
      CPA BLANK     SKIP BLANKS 
      JMP ID2 
      JSB LETTR     IS IT A LETTER
      JMP NONID ...NO-GO TO SCAN FOR END OF FIELD 
      SPC 2 
* ADD THIS LETTER TO THE LABEL SO FAR * 
      SPC 1 
ID4   LDB ID1       LABEL CHARACTER COUNT.
      INB,SZB,RSS   MORE THAN 5 CHARACTERS ?
      JMP ID3       YES 
      STB ID1      BUMP CHARACTER COUNT 
      ISZ TEMP1     BUMP CHARACTER POINTER
      LDB TEMP1     INSERT CHARACTER IN 
      JSB A2BUF       LABEL STRING
      LDA LABEL 
      LDB ID1       ADD ONE TO LABEL WORD COUNT 
      SLB,RSS        IF ID1 IS EVEN.
      ADA HIGH1 
      STA LABEL 
      LDA NEXT     LOAD THE LAST CHARACTER READ.
      CPA TEMP     IS THE LAST CHARACTER PROCESSED? 
ID3   JSB CHAR      GET NEXT CHARACTER
      AND MASK7    ISOLATE THE LOWER 7 BITS 
      STA NEXT     SAVE THE NEW CHARACTER 
      ISZ L.DLM    CHARACTER #3 OF A LITERAL
      JMP ID0      NO, CONTINUE 
ID5   CPA FEED     END OF ERCORD? 
      JMP ID6      YES, GO ISSUE A SKIP RETURN. 
      JMP ID4      NO, GO INSERT CHARACTER IN LABEL 
ID0   CLB,INB      ENTER: B=1 
      CPB L.DLM    CHARACTER #4 OF A LITERAL? 
      JMP ID5      YES GO BACK FOR EOR CHECK
      JSB LETTR     IS IT A LETTER
      RSS           NO
      JMP ID4       YES 
      JSB DIGIT     IS IT A DIGIT 
      JMP ID4       YES 
      STA NEXT
ID6   ISZ ID
      JMP ID,I
      SPC 2 
NOTID STA NEXT      SCAN FOR END OF FIELD.
      CPA BLANK 
      JMP ID,I
NONID CPA COMMA 
      JMP ID,I
      CPA PLUS
      JMP ID,I
      CPA MINUS 
      JMP ID,I
      CPA FEED
      JMP ID,I
      JSB CHAR
      JMP NOTID 
      SPC 2 
* LETTER DETERMINES WHETHER THE CHAR IN A IS A LEGAL HPAP LETTER *
      SPC 1 
LETTR NOP 
      CPA BLANK     BLANKS
      JMP LETTR,I    &
      CPA FEED        LINE FEEDS ARE
      JMP LETTR,I      NOT LETTERS. 
      JSB DIGIT     IS IT A DIGIT ? 
      JMP LETTR,I   YES--NOT A LETTER.
      LDB 0         GET CHARACTER IN B &
      CMB,INB       SUBTRACT FROM 
      ADB LETMX     LETMX 
      SSB           IF NOT SMALLER THEN 
      JMP ISLET      IT IS A LETTER.
      ADB LETMN     OTHERWISE TEST AGAINST
      SSB,RSS        LETMN. 
ISLET ISZ LETTR 
      JMP LETTR,I 
LITRL JSB CHAR     GO GET NEXT CHARACTER
      STA NEXT     SAVE THE NEW CHARACTER 
      CPA FEED     END OF RECORD? 
      JMP ID,I     YES, RETURN
      CPA BLANK    JUMP IF BLANK
      JMP LITRL    YES, GO GET NEXT CHARACTER 
                                                                                                                                                                                                                                              