
*                       * 
**  CHECK FOR A DIGIT  ** 
*                       * 
* 
*  ENTER WITH A CHARACTER IN (A).  IF IT IS A DIGIT, RETURN TO
*  (P+2) WITH THE BINARY DIGIT IN (A) AND (B).  OTHERWISE, RETURN 
*  TO (P+1) WITH THE CHARACTER IN (A).
* 
DIGCK NOP 
      LDB 0         ASCII 
      ADB LD72        72 OCT OR 
      SSB,RSS           GREATER?
      JMP DIGCK,I   YES 
      ADB LB12      NO, ASCII 57 OCT
      SSB             OR LESS?
      JMP DIGCK,I   YES 
      LDA 1         NO
      ISZ DIGCK 
      JMP DIGCK,I 
*                           * 
**  FETCH INPUT CHARACTER  ** 
*                           * 
* 
*  RETURN TO (P+2) WITH THE NEXT NON-BLANK CHARACTER FROM THE INPUT 
*  RECORD IN (A).  IF A CARRIAGE RETURN IS FOUND, RETURN TO (P+1) 
*  WITH IT IN (A).
* 
GETCR NOP 
      LDB BADDR     LOAD CHARACTER POINTER
      ISZ BADDR     ADVANCE IT
      CLE,ERB       LOAD
      LDA 1,I         WORD
      SEZ,RSS       ADJUST AS 
      ALF,ALF         NECESSARY 
      AND LB377     MASK OFF CHARACTER
      CPA BLANK     BLANK?
      JMP GETCR+1   YES, IGNORE IT
      CPA LB15      NO, CARRIAGE RETURN?
      JMP GETCR,I   YES, EXIT TO (P+1)
      ISZ GETCR     NO, EXIT
      JMP GETCR,I     TO (P+2)
      SKP 
*                                              *
**  FIND NEXT DISC WITH NON-ZERO SELECT CODE  **
*                                              *
* 
*  ENTER WITH TEMP3=> THE FIRST WORD OF ONE SEGMENT OF THE MHTBL. 
*  SEARCH FOR THE FIRST NON-ZERO SELECT CODE. IF FOUND, EXIT
*  IS TO (P+2) WITH TEMP3 => THE FIRST WORD OF THE NEXT SEGMENT,
*  TEMP2 => THE FIRST WORD OF THIS SEGMENT, TEMPO = SELECT CODE AND 
*  UNIT NUMBER AND TEMP1 = LOGICAL DISC #. IF NONE FOUND, EXIT IS 
*  TO (P+1) WITH TEMP3 => FIRST WORD OF TABLE.
* 
FNZSC NOP 
      LDB TMP3A,I 
FNZS1 EQU * 
      ADB L.2       => SELECT CODE
      LDA B,I 
      LDA A,I 
      SZA           SELECT CODE ZERO? 
      JMP FNZS3     NO
      ADB L.4       YES, MOVE TO NEXT ENTRY 
      CPB MHEND     END OF TABLE? 
      RSS           YES 
      JMP FNZS1     NO
FNZS2 LDB MHAD      RESET POINTER TO
      STB TMP3A,I     BEGINNING OF TABLE
      JMP FNZSC,I 
FNZS3 STA TMP0A,I   SAVE SELECT CODE
      ADB LM2       SET POINTER 
      STB TMP2A,I     TO THIS ENTRY 
      LDA MHAD      COMPUTE 
      CMA,INA         LOGICAL 
      ADA B             DISC
      CLB                 NUMBER
      DIV L.6 
      STA TMP1A,I   SAVE IT 
      LDB TMP2A,I 
      ADB L.6       => NEXT ENTRY 
      ISZ FNZSC     UP RETURN ADDRESS.
      CPB MHEND     END OF TABLE? 
      JMP FNZS2     YES 
      STB TMP3A,I   NO
      JMP FNZSC,I 
*                        *
**  FIX A DISC ADDRESS  **
*                        *
* 
*         ENTER WITH TEMP2 => A DISC ADDRESS; 
*     A = -# OF WORDS TO BE TRANSFERRED TO/FROM DISC, 
*     B = A POSITIVE INCREMENT IN BLOCKS. 
*     EXIT WITH (TEMP2) + B IN DISPT,I AND A = DISPT. 
* 
DAIR  NOP 
      STA MWORD     RECORD TRANSFER LENGTH
      STB LTMP0     SAVE INCREMENT
      DLD TMP2I,I   GET ADDRESS OF FIRST SECTOR 
      CLE,ERA       CONVERT 
      ERB,CLE        TO BLOCKS
      ADB LTMP0     ADD ON INCREMENT. 
      SEZ           CHECK FOR 
      INA             OVERFLOW
      DST ADTMP     SAVE ADDRESS
      LDA DISPT       AND POINTER 
      JMP DAIR,I    RETURN
*                      *
** READ A DISC LABEL  **
*                      *
* 
* ENTER WITH TEMP2 => FIRST WORD OF ONE SEGMENT OF THE MHTBL. 
* READ THE LABEL FROM THE DISC AND COMPUTE THE CHECKSUM. A VALID
* CHECKSUM EXITS TO (P+2), OTHERWISE TO (P+1).
* 
RDLBL NOP 
      LDA LM32      READ 32 WORDS 
      CLB           BLOCK ZERO IS LABEL.
      JSB DAIR      FIX DISC ADDRESS
      LDB LBUFI     CORE ADDRESS OF LABEL BUFFRR
      JSB DISCI,I 
      LDA LM31      CHECKSUM
      STA LTMP1       31 WORDS
      CCA 
      LDB LBUFD     => FIRST WORD OF BUFFER 
RDLB1 XOR B,I 
      INB 
      ISZ LTMP1     FINISHED 31 WORDS?
      JMP RDLB1     NO
      CPA B,I       YES, CHECKSUM OK? 
      ISZ RDLBL     BUMP EXIT 
      JMP RDLBL,I 
*                        *
**  WRITE A DISC LABEL  **
*                        *
* 
*  ENTER WITH TEMP2 => FIRST WORD OF ONE SEGMENT OF THE MHTBL.
*  COMPUTE THE CHECKSUM FOR THE LABEL AND WRITE IT TO THE DRIVE 
*  SPECIFIED BY TEMP2.
* 
WTLBL NOP 
      LDA LM31      CHECKSUM
      STA LTMP1       31 WORDS
      CCA 
      LDB LBUFD     => FIRST WORD OF BUFFER 
WTLB1 XOR B,I 
      INB 
      ISZ LTMP1     FINISHED 31 WORDS 
      JMP WTLB1     NO
      STA B,I       YES, SAVE CHECKSUM
      LDA LM128     WRITE THE WHOLE SECTOR
      CLB           BLOCK ZERO IS LABEL.
      JSB DAIR      FIX DISC ADDRESS
      LDB LBUFD 
      JSB DISCI,I   WRITE LABEL TO DISC 
      JMP WTLBL,I 
*                            *
**  SHORTEN DISC ADT ENTRY  **
*                            *
* 
*  ENTER WITH (A) = # OF BLOCKS TO BE REMOVED FROM ADT ENTRY, (B) 
*  => THAT ENTRY IN THE DISC ADT BUFFER AND TEMP5 => LENGTH OF
*  DISC ADT IN THE EQT. 
*  DCADT MUST POINT TO THE CORE BUFFER OF THE CURRENT DISC ADT. 
*  SHORTEN THE ADT ENTRY OR REMOVE IT IF IT WOULD HAVE LENGTH 0 
* 
SDADT NOP 
      STB LTMP1     SAVE POINTER
      ADB L.2       LENGTHS 
      CPA B,I         EQUAL?
      JMP SDAD1     YES 
      STA LTMP2     NO, SAVE # OF BLOCKS
      DLD LTMP1,I   COMPUTE 
      CLE 
      ADB LTMP2       NEW 
      SEZ 
      INA           ADDRESS 
      DST LTMP1,I   SAVE IN DISC ADT
      LDB LTMP1     COMPUTE 
      ADB L.2 
      LDA LTMP2       NEW 
      CMA,INA 
      ADA B,I           LENGTH
      STA B,I       SAVE IN DISC ADT
      JMP SDADT,I 
SDAD1 LDA TMP5I,I   REDUCE
      LDB A           DISC ADT
      ADA L.3           LENGTH
      STA TMP5I,I         IN EQT
      CMB,INB       NEED POSITIVE LENGTH
      ADB DCADT     POINTER FOR 
      STB LTMP3       END OF MOVE 
      LDB LTMP1     LTMP1 = DESTINATION ADDRESS 
      ADB L.3       (B) = SOURCE ADDRESS
SDAD2 EQU * 
      CPB LTMP3     FINISHED MOVE?
      JMP SDADT,I   YES 
      LDA B,I       MOVE
      STA LTMP1,I     DISC ADT
      INB               3 WORDS 
      ISZ LTMP1     NO
      JMP SDAD2 
      SKP 
*                            *
**  FIND SPACE IN DISC ADT  **
*                            *
* 
*     ON ENTRY, A = + BLOCK LENGTH OF DISC AREA NEEDED, 
*     B = POINTER TO ADT LENGTH WORD. 
*     DCADT MUST POINT TO THE CORE BUFFER OF THE CURRENT DISC ADT.
*     LTMP1 =0 IF END OF ADT IS TO BE COMPUTED FROM LENGTH WORD IN B
*           #0 IF END OF ADT IS ALREADY SET IN LTMP1
*     NO SKIP RETURN IF INSUFFICIENT ROOM IN CURRENT ADT. 
*     IF ROOM FOUND, SKIP RETURN WITH DISC ADDRESS IN A-B REGISTER
*     AND POINTER TO THAT ADT ENTRY IN ADTEN
*     IF THE ALTERNATE ALLOCATION ALGORITHM IS
*     BEING USED, THE ONE'S COMPLEMENT OF THE OLD DISC
*     ADDRESS SHOULD BE STORED INTO DCBV AND DCBV+1.
*     OTHERWISE, STORE A 0 INTO DCBV. 
*     IF DCFLG IS -1, FSDAD PERFORMS THE SEARCH AND RETURNS AS
*     ABOVE, BUT DOES NOT REMOVE THE ENTRY FROM THE ADT.
* 
FSDAD NOP 
      STA LTMP0     SAVE POSITIVE LENGTH
      STB TMP5A,I   SAVE POINTER IN TEMP5.
      LDA LTMP1     => END OF ADT 
      SZA             ALREADY SET?
      JMP FSDAF-1   YES 
      LDB B,I       GET ACTUAL LENGTH OF ADT. 
      CMB,INB       NEED POSITIVE LENGTH
      ADB DCADT     MAKE LWA
      STB LTMP1     => FIRST UNUSED LOCATION. 
      LDB DCADT     => AVAILABLE DISC TABLE 
FSDAF EQU * 
      STB LTMP2     SAVE CURRENT ADT POINTER. 
      CPB LTMP1     ARE WE DONE?
      JMP FSDAD,I   NO FIND RETURN. 
      LDA DCBV
      ELA           SAVE UPPER BIT IN E 
      DLD LTMP2,I   LOAD DISC ADDRESS 
      STA LTMP4     SAVE ADDRESS IN CASE ENTRY
      STB LTMP5       IS LONG ENOUGH
      ISZ LTMP2 
      ISZ LTMP2 
      SEZ,CME,RSS   CHECK E BIT 
      JMP FSDAH     NOT ALTERNATE ALLOCATION
      ADB DCBV+1    ADD LOWER HALF
      SEZ 
      INA 
      ADA DCBV
      SSA,RSS       CHECK FOR BEFORE CURRENT SLOT 
      JMP FSDAH     YES, USE THIS SLOT
      CLE 
      ADB LTMP2,I   ADD LENGTH OF SLOT
      CLB,SEZ,INB 
      INA 
      SSA,RSS       SKIP IF NOT FAR ENOUGH
      JMP FSDAH       OTHERWISE, PUT 'ER HERE 
      ADB LTMP2     => NEXT ADT ENTRY 
      JMP FSDAF 
FSDAH EQU * 
      LDB LTMP2     GET CURRENT ADT POINTER.
      LDA B,I       GET LENGTH OF THIS ENTRY. 
      CMA           MAKE ONES COMPLEMENT
      CLE,INB       MOVE TO NEXT ADT ENTRY
      ADA LTMP0     CHECK FOR ADEQUATE LENGTH 
      SEZ           SKIP IF LONG ENOUGH 
      JMP FSDAF     NOT LONG ENOUGH, TRY NEXT ENTRY 
      ADB LM3       B => ENTRY FOUND. 
      STB ADTEN     SAVE POINTER
      LDA LTMP0     GET +( REQUESTED LENGTH ) 
      ISZ DCFLG     TEST FOR SEARCH ONLY
      JSB SDADT     REMOVE ENTRY FROM ADT.
      ISZ FSDAD     FOR SKIP RETURN 
      LDA LTMP4 
      LDB LTMP5 
      JMP FSDAD,I   RETURN
*                                   * 
**  REQUEST CONFIGURATION OPTIONS  ** 
*                                   * 
*  REQUEST CONFIGURATION OPTIONS, DEMANDING AN ANSWER OF 'YES' OR 
*  'NO' OR CARRIAGE RETURN. IF NO OR CR, SET COFLG = 0 AND EXIT TO
*  (P+1), OTHERWISE SET COFLG # 0 AND EXIT TO (P+2).
* 
RCOP  NOP 
RCOP1 EQU * 
      LDA L.24      REQUEST 
      LDB COPTA 
      JSB ASRDA,I     CONFIGURATION 
      CLA 
      JSB ASRDA,I       OPTIONS 
      JSB GETCR     GET A CHARACTER 
      JMP RCOP2     ASSUME NO 
      CPA ?Y        'Y'?
      JMP RCOP2+1   YES, ASSUME 'YES' 
      CPA ?N        NO, 'N'?
      JMP RCOP2     YES, ASSUME 'NO'
      LDA L.15      NO, OUTPUT
      LDB ILINL       ERROR 
      JSB ASRDA,I       MESSAGE 
      JMP RCOP1 
RCOP2 EQU * 
      CLA,RSS       SET FLAG TO 'NO'
      ISZ RCOP      BUMP EXIT 
      STA COFLA,I   SAVE FLAG 
      JMP RCOP,I
      SKP 
*                        *
**  REQUEST AN INTEGER  **
*                        *
* 
*  DEMAND AN INTEGER OF AT MOST 2 DIGITS IN THE RANGE [(A), (B)]. 
*  IF A VALID ONE IS FOUND, EXIT TO (P+3) WITH THE INTEGER IN (A).
*  IF A SIMPLE CARRIAGE RETURN RESPONSE, EXIT TO (P+2).  OTHERWISE
*  PRINT 'ILLEGAL INPUT' AND EXIT TO (P+1). 
* 
RQINT NOP 
      STA LTMP3     SAVE
      STB LTMP4       LIMITS
      CLA           REQUEST 
      JSB ASRDA,I     INPUT 
      JSB GETCR     FIRST CHARACTER 
      JMP RQIN3     DEFAULT RESPONSE
      JSB DIGCK     DIGIT?
      JMP RQIN1     NO
      STA LTMP1     YES, SAVE IT
      JSB GETCR     NEXT CHARACTER
      JMP RQIN2     CR
      JSB DIGCK     DIGIT?
      JMP RQIN1     NO
      STA LTMP2     YES 
      LDA LTMP1     COMPUTE 
      MPY L.10        TWO 
      ADA LTMP2         DIGIT 
      STA LTMP1           NUMBER
      JSB GETCR     CR FOLLOWS? 
      JMP RQIN2     YES 
RQIN1 EQU * 
      LDA L.15      NO, OUTPUT
      LDB ILINL       ERROR 
      JSB ASRDA,I       MESSAGE 
      JMP RQINT,I   EXIT TO (P+1) 
RQIN2 EQU * 
      LDA LTMP3     NUMBER
      CMA,INA 
      ADA LTMP1       TOO SMALL?
      SSA 
      JMP RQIN1     YES 
      LDA LTMP1     NO, TOO 
      CMA,INA 
      ADA LTMP4       BIG?
      SSA 
      JMP RQIN1     YES 
      LDA LTMP1     NO, LOAD INTEGER
      ISZ RQINT 
RQIN3 EQU * 
      ISZ RQINT 
      JMP RQINT,I 
      SKP 
* 
*      ROUTINE CONVERTS THE FIRST FOUR WORDS OF A 
* DIRECTORY ENTRY INTO ASCII CODES IN A SPECIFIED BUFFER. 
* ENTER WITH A POINTER TO THE DIRECTORY ENTRY IN A
* AND A POINTER TO THE OUTPUT BUFFER IN B.  OUTPUT IS 
* SIX WORDS LONG. 
* 
CFFW  NOP 
      STA LTMP0     SAVE DIR ENTRY POINTER
      STB LTMP1     SAVE OUTPUT POINTER 
      LDA A,I       GET ID CODE 
      AND LM2K      MASK TO LETTER PART 
      RAR,RAR       MOVE TO POSITION
      STA LTMP2       AND SAVE FOR NOW
      LDA LTMP0,I   GET BACK THE ID CODE
      AND LB2KM     LEAVE THE NUMBER PART 
      CLB 
      DIV L.100     GENERATE FIRST DIGIT
      IOR LTMP2     OR IN LETTER PART 
      IOR ASCAZ     OR IN ASCII BITS
      STA LTMP1,I     AND STORE INTO OUTPUT BUFFER
      ISZ LTMP1     ADVANCE POINTER 
      LDA B         GET REMAINING TWO DIGITS
      CLB 
      DIV L.10      SEPARATE THE TWO
      ALF,ALF       MOVE DIGIT OVER TO LEFT 
      IOR B         PLUG IN LAST DIGIT
      IOR ASCZZ     MAKE INTO ASCII CODES 
      STA LTMP1,I   STORE INTO THE OUTPUT BUFFER
      ISZ LTMP1     AND ADVANCE THE POINTER 
      LDB LM4       LOAD COUNT OF WORDS REMAINING 
      LDA ASCBB     GET A WORD OF BLANKS
CFFWG EQU * 
      ISZ LTMP0     ADVANCE PICKUP POINTER
      STA LTMP1,I   STORE WORD INTO OUTPUT
      ISZ LTMP1     ADVANCE STORE POINTER 
      LDA LTMP0,I   GET NEXT WORD 
      INB,SZB       CHECK FOR DONE
      JMP CFFWG     STORE NEXT WORD 
      JMP CFFW,I    RETURN
      SKP 
*                              *
**  GET MESSAGE QUEUE BUFFER  **
*                              *
* 
*  THIS ROUTINE TELLS THE DISC DRIVER ERROR PRINTER THAT IT HAS A 
*  BUFFER FOR THE ERROR MESSAGE.  THE MESSAGE IS LATER PRINTED IN 
*  DISCZ. 
* 
GMQBD NOP 
      LDA GMQBH,I   LENGTH OF MESSAGE 
      SZA,RSS       SKIP IF MESSAGE TO PRINT
      JMP GMQBZ     NO MESSAGE, JUST RETURN BUFFER
      CLA,INA       CHAR COUNT IS ONE FOR LINE FEED 
      LDB ILINL     => A CONVENIENT LINE FEED 
      JSB ASRDA,I 
      LDA GMQBH,I   GET THE MESSAGE LENGTH
      INA           INCREMENT TO GET CARRIAGE RETURN
      LDB GMQBH     BUFFER POINTER
      INB           BUMP TO FIRST CHAR. WORD
      JSB ASRDA,I   OUTPUT THE PRIOR MESSAGE
GMQBZ EQU * 
* 
      LDA GMQBH     GIVE BACK 
      ISZ GMQBD       BUFFER
      JMP GMQBD,I       POINTER 
      SKP 
*                                                                  *
**  CLAIM DISC SPACE EITHER STARTING ON PHYSICAL CYLINDER BOUNDARY *
**  OR NOT CROSSING CYLINDER BOUNDARY.                             *
*                                                                  *
* 
* ENTER WITH:(A) = + # BLOCKS REQUESTED 
*            CLMFL => SUBROUTINE FOR UPDATING DCADT, LTMP1 & ADT. 
* EXIT WITH :(A) & (B) CONTAINING THE DOUBLE WORD DISC ADDRESS
*            ALLOCATED. 
* 
CLAIM NOP 
      STA RQLEN     SAVE REQUESTED LENGTH 
      LDA MHAD      START AT
      STA TMP3A,I     BEGINNING OF MHTBL
      JSB FNZSC     FIND ACTIVE DISC
      JMP LDRWA,I   OUT OF DISC SPACE ERROR 
      LDA TMP3A,I   SAVE => NEXT
      STA SVTP3       SEGMENT IN MHTBL
      LDA TMP1A,I   SAVE LOGICAL
      STA LDISC       DISC #
      CLB           INITIAL 
      STB LTMP1       SETUP 
      LDB ADTBF         FOR 
      STB DCADT           FSDAD 
      LDB DADLA 
CLM1  CLA           SET 
      STA DCBV
      LDA DCADT       UP
      STA FADT
      CCA               FOR 
      STA DCFLG 
      LDA RQLEN           FSDAD 
      JSB FSDAD     FIND DISC SPACE 
      JMP CLM5      NO ROOM ON THIS DISC
      DST DSCA      SAVE DISC ADDR
      SWP 
      DIV PHBPC,I   DIVIDE BY #BLKS PER PHYSICAL CYL
      STA SCYL        TO GET STARTING PHYS. CYL. #
      STB SBLK          & STARTING BLK #
      SZB,RSS       ON CYLINDER BOUNDARY? 
      JMP CLM2        YES 
* 
      CCA           COMPUTE 
      ADA RQLEN       ENDING ADDRESS
      CLE               = STARTING ADDR + RQLEN -1
      LDB DSCA          USING 
      ADA DSCA+1          DOUBLE WORD 
      SEZ                   ADD 
      INB 
      DIV PHBPC,I   GET ENDING CYLINDER # IN (A)
      CPA SCYL      CROSSING CYL BOUNDARY?
      RSS           NO
      JMP CLM10     YES.
CLM2  EQU * 
      LDA FADT      SET FOR 
      STA DCADT       SDADT 
      JSB CMPLW     COMPUTE POINTER TO LENGTH WORD
      STA TMP5A,I   SET 
      LDB ADTEN       FOR 
      LDA RQLEN         SDADT 
      JSB SDADT     SHORTEN OR REMOVE ADT ENTRY 
CLM3  DLD DSCA      RETURN WITH 
      JMP CLAIM,I     DISC ADDR ALLOCATED 
* 
CLM5  EQU * 
      LDA SVTP3     FINISHED
      CPA MHAD        ALL DISCS?
      JMP LDRWA,I   YES. OUT OF DISC SPACE ERROR
      STA TMP3A,I   NO. RESTORE => TO NEXT SEG OF MHAD
      JSB FNZSC     FIND NEXT ACTIVE DISC 
      JMP LDRWA,I   OUT OF DISC SPACE ERROR 
      LDA TMP3A,I   SAVE
      STA SVTP3       => NEXT SEG IN MHTBL
      LDA TMP1A,I   SAVE
      STA LDISC       LOGICAL DISC #
      JSB CLMFL,I   UPDATE ADT, DCADT, LTMP1
CLM7  JSB CMPLW     COMPUTE POINTER 
      LDB A           TO LENGTH OF ADT
      JMP CLM1      LOOK FOR DISC SPACE ON THIS DISC
* 
CLM10 EQU * 
      LDA ADTEN     GET 
      ADA L.2         AVAILABLE 
      LDA A,I           LENGTH IN +BLOCKS 
      LDB SBLK      COMPUTE 
      CMB,INB         LENGTH AVAILABLE
      ADB PHBPC,I       IF STARTING ON CYL BNDRY: 
      STB SLEN      SAVE SHORTENED LENGTH(+#BLKS) 
      CMB,INB       (B) = -(PHBPC - SBLK) 
      ADA B         (A) = LENGTH - (PHBPC - SBLK) 
* 
*    DO A 16-BIT NUMBER SUBTRACTION 
* 
      LDB RQLEN     WILL NEW LENGTH (IN A-REG)
      CMB,INB         BE LONG ENOUGH
      CLE 
      ADA B             FOR THE REQUESTED LENGTH? 
      STA RMLEN           I.E.
      SEZ,RSS                 (A) >= RQLEN; 
      SZA,RSS                   I.E. (E)=1 OR (A)=0 
      JMP CLM11     YES 
* 
      LDA ADTEN     NO. 
      ADA L.3         TRY 
      STA DCADT         NEXT ENTRY
      CPA LTMP1     END OF ADT? 
      JMP CLM5      YES. TRY.NEXT DISC
      JMP CLM7      NO
* 
CLM11 EQU * 
      LDA SCYL      COMPUTE NEW 
      INA               STARTING
      MPY PHBPC,I         DISC
      SWP 
      DST DSCA              ADDRESS 
      CLE           COMPUTE 
      ADB RQLEN       STARTING ADDRESS
      SEZ               OF NEW
      INA                 ADT ENTRY 
      DST INTMP     SET FOR ISADT                [B]
      LDA ADTEN     UPDATE
      ADA L.2         LENGTH WORD 
      LDB SLEN          OF CURRENT
      STB A,I             ADT ENTRY 
      INA           => NEXT 
      STA ADTEN       ADT ENTRY 
      LDA INTMA 
      JSB ISADT     INSERT ADT ENTRY
      JMP CLM3      RETURN
      SKP 
