*DECK C$EDITA 
          IDENT  C$EDITA
          TITLE  C.EDITA -  MOVE LBZ ITEM TO AN EDITED FIELD
          MACHINE  ANY,I
          COMMENT  MOVE LBZ ITEM TO AN EDITED FIELD 
          SPACE  4
**        C.EDITA -  MOVE LBZ ITEM TO AN EDITED FIELD 
* 
*         X4 = 42/UNUSED, 3/SIGN, 4/BCP, 11/LEN 
*                SIGN = 000:  SOURCE HAS NO SIGN
*                SIGN = 001:  SOURCE HAS TRAILING OVERPUNCH SIGN
*                SIGN = 010:  SOURCE HAS LEADING OVERPUNCH SIGN 
*                SIGN = 011:  SOURCE HAS NO SIGN
*                SIGN = 100:  SOURCE HAS SIGN IN X0 
*                SIGN = 101:  SOURCE HAS TRAILING SEPARATE SIGN 
*                SIGN = 110:  SOURCE HAS LEADING SEPARATE SIGN
*                SIGN = 111:  SOURCE HAS NINE-S COMPLEMENT SIGN, 1 WORD 
*                BCP = BEGINNING CHARACTER POSITION OF SOURCE WITHIN X1 
*                LEN = NUMBER OF CHARACTERS IN SOURCE 
*         B3 = ADDRESS DESTINATION DESCRIPTOR.
*                6/LEFT-FILL CHARACTER, 
*                6/RIGHT-FILL CHARACTER 
*                18/ADDRESS OF DESTINATION, 
*                1/1 IFF *BLANK WHEN ZERO*
*                1/(IGNORED), 
*                4/BCP OF DESTINATION,
*                4*6/EDIT COMMANDS
*              IF *ASTERISK WHEN ZERO*,  LAST EDIT COMMAND IS 71B 
*                INSTEAD OF 70B,  AND THE 71B IS FOLLOWED BY
*                6/BCP, 6/LEN RELATIVE TO A  *(30).*(29) FIELD
*                WHICH WILL BE THE ACTUAL SOURCE FIELD IF THE 
*                VALUE OF THE ORIGINAL SOURCE IS ZERO.
*         B4 = ADDRESS SOURCE 
* 
*         RJ     C.EDIT 
*         RJ     C.EDITA
* 
*         CODING PRIORITIES-
*                1)  BE FAST. 
*                2)  BE SMALL IN SIZE.
          EJECT 
**        RCV=X2 -  ADD CHARACTER IN X2 TO RECEIVING FIELD
* 
*         RCV=X2
* 
*         ADDS THE CHARACTER CURRENTLY IN X5 TO THE CURRENT RESULT (X6).
*         IF NECESSARY, STORES X6 AND RESETS THINGS.
*         MOVES X2 TO X5. 
* 
*         THIS METHOD ALLOWS THE PREVIOUS CHARACTER (I.E. X5) 
*         TO BE EASILY CHANGED. 
* 
*         USES-  B    * - - 4 - - -    *B1=1
*                X  - - - - - 5 6 - 
*                A  - - - - - - 6 - 
  
  
 RCV=X2   MACRO 
          LOCAL  RESUME,NEXTWD
          ZR     B4,NEXTWD
          LX6    6
          SB4    B4-B1
 RESUME   BX6    X6+X5
          LX5    X2 
          RMT 
 NEXTWD   SA6    A6+B1
          SB4    9
          BX6    X0-X0
          EQ     RESUME 
          RMT 
 RCV=X2   ENDM
          EJECT 
**        X2=SRC -  SET X2 TO NEXT SOURCE CHARACTER 
* 
*         X2=SRC
* 
*         SETS REGISTER X2 = NEXT SOURCE CHARACTER. 
*         IF THERE ARE NO MORE SOURCE CHARACTERS, 
*         X2 IS SET TO THE RIGHT-FILL CHARACTER.
* 
*         USES-  B    * - - - - 6 7    *B1=1
*                X  0 1 2 - - - - - 
*                A  0 1 - - - - - - 
  
  
 X2=SRC   MACRO 
          LOCAL  RESUME,NEXT,NEXTWD,ENDSOURC
          LE     B6,B0,NEXTWD 
          LX1    6
          SB6    B6-B1
 RESUME   BX2    -X0*X1 
          SX2    X2-1R
          NZ     X2,NEXT
          SX2    1R0-1R 
 NEXT     SX2    X2+1R
          RMT 
 NEXTWD   NG     B7,ENDSOURC
          SB7    B7-10
          SA1    A1+B1
          SB6    9
          LX1    6
          GE     B7,B0,RESUME 
          SB6    B7+10
          EQ     RESUME 
 ENDSOURC SX1    A5-B1
          EQ     RESUME 
          RMT 
 X2=SRC   ENDM
          EJECT 
**        *LX3 -  GET NEXT EDIT COMMAND 
* 
*        *LX3    N           (N = 3, 6, OR 12)
* 
*         LOGICALLY SHIFTS REGISTER X3 LEFT  N  BITS, 
*         REFRESHING X3 FROM MEMORY IF NECESSARY. 
*         ONLY THE LOWER 3 OR 6 BITS ARE GUARANTEED TO BE CORRECT.
*         THE INSTRUCTION (*LX3 3) MUST BE FOLLOWED BY A (LX3 3). 
  
  
 *LX3     MACRO  N
          LOCAL  RESUME,NEXTWD,NEXTWD1
1         IFNE   N,12 
          ZR     B5,NEXTWD
          LX3    N
          SB5    B5-B1
 RESUME   BSS    0
          RMT 
 NEXTWD   SA3    A3+B1
          SB5    9
          LX3    N
          EQ     RESUME 
          RMT 
1         ELSE
          LE     B5,B1,NEXTWD 
          SB5    B5-2 
 RESUME   LX3    12 
          RMT 
 NEXTWD   SA3    A3+B1
          ZR     B5,NEXTWD1 
          LX3    -6 
 NEXTWD1  SB5    8+B5 
          EQ     RESUME 
          RMT 
1         ENDIF 
 *LX3     ENDM
          EJECT 
          ENTRY  C.EDITA
 C.EDITA  BSS    1           ENTRY/EXIT WORD
          SA2    =XC.BINRY
          SX5    X2-3 
          NG     X5,EDIT0    OLD BINARY 
          SA1    B4 
          SA3    B3 
 EDIT0    BSS    0
          MX6    -11
          BX2    -X6*X4      LENGTH OF SOURCE 
          AX4    11 
          MX6    -4 
          BX5    -X6*X4      BCP OF SOURCE
          IX2    X5+X2       BCP + LENGTH 
          SB7    X2-11       END-OF-SOURCE-WORDS INDICATOR
          NG     B7,EDIT1    IF SOURCE ENTIRELY CONTAINED IN 1 WORD 
          SX2    10          BCP + (LENGTH OF SOURCE WITHIN THIS WORD)
 EDIT1    IX2    X2-X5       NUMBER OF SOURCE CHARACTERS LEFT IN X1 
          SB6    X2 
          IX7    X5+X5       BCP*2
          LX5    2           BCP*4
          IX7    X7+X5       BCP*6
          SB3    X7 
          LX1    X1,B3       LEFT-JUSTIFY FIRST SOURCE CHARACTER
          AX4    4
          MX7    -3          77777777777777777770B
          BX4    -X7*X4      POSITION OF SIGN IN SOURCE 
          SB2    X4 
          EJECT 
* 
*      CURRENT REGISTER USAGE-
*         B7 = NUMBER OF SOURCE CHARACTERS LEFT TO PROCESS
*         B6 = NUMBER OF SOURCE CHARACTERS LEFT IN CURRENT WORD 
*         B3 = LEFT-SHIFT COUNT NECESSARY TO POSITION SOURCE WORD 
*         B1 = 1
*         X7 = 77777777777777777770B
*         X3 = ORIGINAL EDIT COMMAND WORD 
*         A3 = ADDRESS OF X3
*         X1 = CURRENT SOURCE WORD;  NEXT SOURCE CHAR. IS LEFT-JUSTIFIED
*         A1 = ADDRESS OF CURRENT SOURCE WORD 
*         X0 = SIGN  (IF *SIGN* = TYPE 100) 
* 
          JP     SIGNS+B2    SPLIT ACCORDING TO TYPE OF SIGN
 SIGNS    BSS    0
  
                             000  SOURCE HAS NO SIGN
+         BX4    X4-X4       SIGN = + 
          MX0    -6          77777777777777777700B
          EQ     EDIT2
  
                             001  SOURCE HAS TRAILING OVERPUNCH SIGN
+         SX4    1S20/10+1
          EQ     SETSIGN1 
  
                             010  SOURCE HAS LEADING OVERPUNCH SIGN 
+         BX4    X1 
          MX0    -6          77777777777777777700B
          EQ     SETSIGN2 
  
                             011  SOURCE HAS NO SIGN
+         BX4    X4-X4       SIGN = + 
          MX0    -6          77777777777777777700B
          EQ     EDIT2
  
                             100  SOURCE SIGN IS IN X0
+         BX4    X0          SIGN = X0
          MX0    -6          77777777777777777700B
          EQ     EDIT2
  
                             101  SOURCE HAS TRAILING SEPARATE SIGN 
          SX4    1S20/10+1
          EQ     SETSIGN5 
  
                             110  SOURCE HAS LEADING SEPARATE SIGN
+         MX0    -6          77777777777777777700B
          BX4    X1          6/1R+ OR 1R-, 54/... 
          EQ     SETSIGN6 
  
                             111  SOURCE IS 1-WORD, NINE-S COMPLEMENT 
+         SB2    60 
          EQ     SETSIGN7 
          SPACE  4
          EJECT 
 SETSIGN1 SX2    B7+10       (BCP + LENGTH - 1) 
          IX4    X2*X4       (BCP + LENGTH - 1)/10 * 2'20 
          AX4    20          (BCP + LENGTH - 1)/10
          SB5    X4          NWORDS - 1 
          SA5    A1+B5       LAST WORD OF SOURCE FIELD
          SB5    B5+B5       (NWORDS - 1)*2 
          LX4    3           (NWORDS - 1)*8 
          SB5    X4+B5       (NWORDS - 1)*10 = CHARS. NOT IN LAST WORD
          SB2    X2          (BCP + LENGTH - 1) 
          SB5    B2-B5       ECP WITHIN LAST WORD 
          LX5    6
          SB2    B5+B5       ECP*2
          SB5    B2+B2       ECP*4
          SB2    B5+B2       ECP*6
          LX5    X5,B2       RIGHT-JUSTIFY OVERPUNCHED DIGIT
          MX0    -6          77777777777777777700B
          BX4    -X0*X5 
          SA4    =XC.STRP+X4 1/SIGN BIT, 53/0, 6/CHAR&DIGIT 
          SX2    X4          KEEP ONLY (SIGNED DIGIT)&(UNSIGNED DIGIT)
          ZR     X2,EDIT2    IF SOURCE FIELD ALREADY OK 
          BX6    X5-X2       CONVERT FROM SIGNED TO ABSOLUTE VALUE
          SB5    54 
          SB2    B5-B2
          LX6    X6,B2       RE-POSITION WORD 
          SA6    DUMMYSRC+2  SAVE ABSOLUTE VALUE OF LAST, SIGNED WORD 
          SB5    A5          ADDRESS OF LAST, SIGNED WORD 
          SB4    A1          FIRST WORD OF SOURCE 
          EQ     B4,B5,L1    IF DONE COPYING
          SA5    A5-B1       COPY PREVIOUS WORD 
          SB5    B5-B1
          BX6    X5 
          SA6    A6-B1
          EQ     B4,B5,L1    IF SOURCE WAS TWO WORDS
          SA5    A5-B1       COPY THIRD WORD
          BX6    X5 
          SA6    A6-B1
 L1       SA1    A6          USE DUMMY SOURCE FIELD 
          LX1    X1,B3
          EQ     EDIT2
  
  
*                            SOURCE HAS LEADING OVERPUNCH 
 SETSIGN2 LX4    6
          BX4    -X0*X4 
          SA4    =XC.STRP+X4 1/SIGN BIT, 53/0, 6/CHAR&DIGIT 
          SX2    X4          KEEP ONLY (SIGNED DIGIT)&(UNSIGNED DIGIT)
          LX2    -6          LEFT-JUSTIFY CONVERSION VALUE
          BX1    X1-X2       CONVERT SIGNED DIGIT TO ABSOLUTE VALUE 
          EQ     EDIT2
  
  
*                            SOURCE HAS TRAILING SEPARATE SIGN
 SETSIGN5 SX2    B7+11       (BCP + NYTLEN - 1) 
          IX4    X2*X4       (BCP + BYTLEN - 1)/10 * 2'20 
          AX4    20          (BCP + BYTLEN - 1)/10
          SB5    X4          NWORDS - 1 
          SA5    A1+B5       WORD CONTAINING SIGN CHARACTER 
          SB5    B5+B5       (NWORDS - 1)*2 
          LX4    3           (NWORDS - 1)*8 
          SB5    X4+B5       (NWORDS - 1)*10 = CHARS. NOT IN LAST WORD
          SB2    X2          (BCP + BYTLEN - 1) 
          LX5    4           TO GET PROPER BIT FROM 1R+ OR 1R-
          SB5    B2-B5       ECP OF SIGN CHARACTER IN LAST WORD 
          SB2    B5+B5       ECP*2
          MX0    -6          77777777777777777700B
          SB5    B2+B2       ECP*4
          SB2    B5+B2       ECP*6
          LX4    X5,B2       SIGN BIT = 1 IFF SOURCE IS NEGATIVE
          EQ     EDIT2
  
  
*                            SOURCE HAS LEADING SEPARATE SIGN 
 SETSIGN6 LX1    6           LEFT-JUSTIFY FIRST DIGIT 
          LX4    4           X4 = + IFF SIGN = 1R+ (OR 100101 BINARY) 
                                           VS. 1R- (OR 100110 BINARY) 
          EQ     B6,B1,L2    IF ONLY SIGN WAS IN X1,  OR IF NUMLEN = 1
          NG     B7,EDIT2    IF ENTIRE SOURCE IS IN X1
          SB6    B6-B1       SKIP SIGN CHARACTER
          SB7    B7+B1       DO NOT FORGET LAST SOURCE DIGIT
          EQ     EDIT2       DONE WITH SIGN 
  
 L2       SB2    -B1
          LT     B7,B2,EDIT2 IF ENTIRE SOURCE IS IN X1
          SA1    A1+B1       LOAD NEXT WORD 
          SB7    B7-9 
          SB6    10          ASSUME 10 DIGITS IN THIS WORD
          GE     B7,B0,EDIT2 IF LONG SOURCE,  DONE WITH SIGN
          SB6    B7+11       SET NUMBER OF DIGITS LEFT IN THIS WORD 
          EQ     EDIT2       DONE WITH SIGN 
  
  
*                            SOURCE IS NINE-S COMPLEMENT
 SETSIGN7 SB2    B2-B3       60 - LEFT-SHIFT COUNT
          LX4    X1,B2       LEFT-JUSTIFY SIGN BIT
          AX4    59          000...000B IFF +,  777...777B IFF -
          BX1    X1-X4       ABSOLUTE VALUE OF INPUT
          MX0    -6          77777777777777777700B
*         (FALL THROUGH TO EDIT2) 
          EJECT 
* 
*      FINISH INITIALIZING
* 
 EDIT2    SX7    B1          MASK FOR BIT 0 
          LX3    30          RIGHT-JUSTIFY DESTINATION ADDRESS
          SA2    X3-1 
          SA5    X3          FIRST WORD OF DESTINATION
          BX6    X2 
          LX3    1           RIGHT-JUSTIFY BWZ BIT
          BX7    -X3*X7      0 IFF *BLANK WHEN ZERO*
          SA7    NONZERO
          MX7    -4          77777777777777777760B TO GET BCP 
          LX3    5           RIGHT-JUSTIFY BCP
          SA6    A2          INITIALIZE A6 TO FWA DEST. - 1 
          BX6    -X7*X3      BEGINNING CHARACTER POSITION OF DESTINATION
          SX7    A2          (BWZ:  SAVE ADDRESS BEFORE DESTINATION)
          SB2    X6-1 
          SA2    =XC.MASK+X6 <BCP>77-S, <10-BCP>00-S
          SB4    10-1+1      (+1 FOR PSEUDO-FIRST DESTINATION CHARACTER)
          SA7    A7+B1 DESTADDR  (BWZ:  SAVE ADDRESS BEFORE DESTINATION)
          BX7    X6          (AWZ:  PREPARE TO SAVE DESTINATION BCP)
          SB4    B4-B2       NUMBER OF SLOTS IN DEST. WORD
          BX6    X2*X5       KEEP ALL NON-DESTINATION CHARACTERS
          SB5    B2+B2       (BCP-1)*2
          SA5    =10H           (BWZ:  PREPARE TO INSERT BLANKS)
          SA7    A7+B1 DESTBCP  (AWZ:  SAVE DESTINATION BCP)
          SB2    B5+B5       (BCP-1)*4
          BX5    -X2*X5      (BWZ:  GET ONLY BLANKS FOR DEST. FIELD)
          SB2    B2+B5       (BCP-1)*6
          IX7    X6+X5       (BWZ:  MERGE NON-DEST. CHARS WITH BLANKS)
          LX6    X6,B2       LEFT-JUSTIFY FIRST DESTINATION SLOT
*         NOTE-  THE ABOVE SHIFT IS CONCEPTUALLY INCORRECT FOR BCP = 0, 
*         BUT X6 = 0 THEN,  SO THE RESULT IS CORRECT ANYWAY.
          LX3    -30
          SA7    A7+B1 DESTWORD  (BWZ:  SAVE FIRST WORD)
          BX2    -X0*X3      LEFT-FILL CHARACTER
          SA0    X2 
          LX3    6
          SB2    X2          LEFT-FILL CHAR. FOR FLOAT/SIGN INSERTION 
          BX2    -X0*X3      RIGHT-FILL CHARACTER 
          LX3    18+6        LEFT-JUSTIFY NEXT EDIT COMMEND 
          SA5    X2+B1       A5 = (RIGHT-FILL CHARACTER) + 1
          PX4    X4,B2       PACK IN FLOAT/SIGN CHARACTER 
          SB5    4           4 EDIT COMMANDS LEFT IN X3 
          SB3    B0          T-FLIP-FLOP = NOT SET
          BX5    X0-X0       PSEUDO-FIRST DESTINATION CHARACTER 
          MX7    -3          77777777777777777770B
          EJECT 
* 
*      REGISTER USAGE DURING EXECUTION OF EDIT COMMANDS 
* 
*         B7 = TOTAL NUMBER OF SOURCE CHARACTERS LEFT TO PROCESS
*         B6 = NUMBER OF SOURCE CHARACTERS LEFT IN CURRENT WORD 
*         B5 = NUMBER OF EDIT CHARACTERS LEFT IN CURRENT WORD 
*         B4 = NUMBER OF AVAILABLE CHARACTERS LEFT IN DEST. CURRENT WORD
*         B3 = T-FLIP-FLOP
*         B2 = SCRATCH
*         B1 = 1
*         X7 = 77777777777777777770B
*         X6 = CURRENT RESULT 
*         A6 = ADDRESS OF LAST-STORED RESULT. 
*         X5 = CHARACTER FROM PREVIOUS CALL OF RCV=X2 
*         A5 = (VALUE OF RIGHT-FILL CHARACTER) + 1
*         X4 = SIGN   (BIT 59 = 0 IFF +)
*              (ALSO, FLOAT/SIGN/LEFT-FILL CHAR PACKED INTO IT) 
*         X3 = CURRENT EDIT COMMAND WORD
*         A3 = ADDRESS OF CURRENT EDIT COMMAND WORD 
*         X2 = SCRATCH
*         A2 = SCRATCH
*         X1 = CURRENT SOURCE WORD
*         A1 = ADDRESS OF CURRENT SOURCE WORD   (UNLESS SIGN TYPE = 111)
*         X0 = 77777777777777777700B
*         A0 = VALUE OF LEFT-FILL CHARACTER 
* 
  
  
*                            READ NEXT EDIT INSTRUCTION 
 RNI     *LX3    3           RIGHT-JUSTIFY COMMAND OPCODE 
          BX2    -X7*X3      COMMAND OPCODE 
          SB2    X2 
          LX3    3           RIGHT-JUSTIFY REPEAT COUNT 
          JP     COMMANDS+B2 GO EXECUTE COMMAND 
          EJECT 
 COMMANDS BSS    0
                             000  DATA
+         BX2    -X7*X3      REPEAT COUNT 
          EQ     DATA 
  
                             001  SIGN
+         BX2    -X7*X3      REPEAT COUNT 
          SB2    X2 
          EQ     SIGN 
  
                             010  INSERT
+         BX2    -X7*X3      REPEAT COUNT 
          SB2    X2 
          EQ     INSERT 
  
                             011  LONG COPY, OVERPUNCH DIGIT,LONG INSERT
+         BX2    -X7*X3      0=LONG COPY, 1=OVERPUNCH, 2=LONG INSERT
          SB2    X2 
          EQ     LONG 
  
                             100  T-FLOAT 
+         BX2    -X7*X3      REPEAT COUNT 
          SB2    X2 
          EQ     TFLOAT 
  
                             101  T-SIGN
+         BX2    -X7*X3      REPEAT COUNT 
          SB2    X2 
          EQ     TSIGN
  
                             110  T-INSERT
+         BX2    -X7*X3      REPEAT COUNT 
          SB2    X2 
          EQ     TINSERT
  
                             111  END-OF-EDIT 
+         BX2    -X7*X3      1 IFF *ASTERISK WHEN ZERO* 
          EQ     END
          EJECT 
  
  
                             000  DATA
*                            (ALSO HERE FROM *LONG*)
 DATA     NZ     B3,DATA1    IF NO FLOAT/SIGN WORRY 
          UX4    X4,B2       UNPACK FLOAT/SIGN CHARACTER
          SB2    A0-B2       IF FLOAT/SIGN CHAR = LEFT-FILL CHAR, IGNORE
          ZR     B2,DATA1 
          SB2    -B2         (FLOAT/SIGN CHAR) - (LEFT-FILL CHAR) 
          SX5    B2+A0       SET PREVIOUS CHARACTER 
 DATA1    SB3    B1          SET T-FLIP-FLOP
          ZR     X2,RNI      IF REPEAT COUNT = 0
          SB2    X2          PREPARE FOR COUNT DOWN 
 DATA2    X2=SRC             COPY DIGIT 
          RCV=X2
          SX2    X2-1R0 
          ZR     X2,DATA3    IF *BLANK WHEN ZERO* MAY STILL BE ALLOWED
          SA7    NONZERO     PREVENT BLANKING BY *BWZ*
 DATA3    BSS    0
          SB2    B2-B1       DECREMENT REPEAT COUNT 
          NZ     B2,DATA2    IF MORE SOURCE DIGITS TO COPY,  LOOP 
          EQ     RNI
  
  
*                            001  SIGN
 SIGN     NG     X4,SIGN2    IF SOURCE SIGN IS NEGATIVE 
          ZR     X2,RNI      IF NO REPEAT COUNT 
         *LX3    6           CHARACTER FOR POSITIVE SIGN
          BX2    -X0*X3 
 SIGN1    RCV=X2
          SB2    B2-B1       DECREMENT REPEAT COUNT 
          NZ     B2,SIGN1    IF MORE DUPLICATION,  LOOP 
         *LX3    6           SKIP CHARACTER FOR NEGATIVE SIGN 
          EQ     RNI
  
*                            SOURCE SIGN IS NEGATIVE
 SIGN2    ZR     X2,RNI      IF NO REPEAT COUNT 
         *LX3    2*6         SKIP CHARACTER FOR POSITIVE SIGN 
          BX2    -X0*X3      CHARACTER FOR NEGATIVE SIGN
 SIGN3    RCV=X2
          SB2    B2-B1       DECREMENT REPEAT COUNT 
          NZ     B2,SIGN3    IF MORE DUPLICATION,  LOOP 
          EQ     RNI
  
  
*                            010  INSERT
*                            (ALSO HERE FROM *LONG*)
 INSERT   ZR     X2,INSERT2  IF REPEAT COUNT IS ZERO
         *LX3    6           INSERTION CHARACTER
          BX2    -X0*X3 
 INSERT1  RCV=X2
          SB2    B2-B1       DECREMENT REPEAT COUNT 
          NZ     B2,INSERT1  IF MORE DUPLICATION,  LOOP 
          EQ     RNI
  
 INSERT2 *LX3    6           SKIP INSERTION CHARACTER 
          EQ     RNI
  
  
*                            011  LONG FORM OF COMMAND
 LONG     EQ     B2,B1,LONG2 IF OVERPUNCH DIGIT 
         *LX3    6
          BX2    -X0*X3 
         *LX3    6           RIGHT 6 BITS OF REPEAT COUNT 
          LX2    6
          NZ     B2,LONG1    IF COMMAND = INSERT,  GO PROCESS 
          SB2    X2 
          BX2    -X0*X3 
          SX2    B2+X2
          EQ     DATA 
  
 LONG1    SB2    X2 
          BX2    -X0*X3 
          SX2    B2+X2
          SB2    X2 
          EQ     INSERT 
  
 LONG2    X2=SRC             GET NEXT DIGIT 
          PL     X4,LONG3    IF NUMBER IS POSITIVE
          BX0    X2          (REGISTER X0 IS USED ONLY LOCALLY) 
          SA2    =X_C.ZN+X2-1R0  GET OVERPUNCHED DIGIT
          BX2    X0-X2       APPLY OVERPUNCH
          MX0    -6          RESET X0 
 LONG3    RCV=X2             INSERT DIGIT 
          EQ     RNI
  
  
*                            100  T-FLOAT 
 TFLOAT  *LX3    6           RIGHT-JUSTIFY FLOAT CHARACTER
          BX2    -X0*X3      EXTRACT FLOAT CHARACTER
          EQ     TCOPY       GO COPY WITH FLOAT CHARACTER 
  
  
*                            101  T-SIGN
 TSIGN    NG     X4,TSIGN1   IF NEED TO GET NEGATIVE SIGN CHARACTER 
         *LX3    6           RIGHT-JUSTIFY POSITIVE SIGN CHARACTER
          BX2    -X0*X3      EXTRACT POSITIVE SIGN CHARACTER
         *LX3    6           SKIP NEGATIVE SIGN CHARACTER 
          EQ     TCOPY       GO COPY WITH FLOAT CHARACTER 
  
 TSIGN1  *LX3    12          RIGHT-JUSTIFY NEGATIVE SIGN CHARACTER
          BX2    -X0*X3      EXTRACT NEGATIVE SIGN CHARACTER
*         EQ     TCOPY       GO COPY WITH FLOAT CHARACTER 
  
  
*                            100/101  COMMON CODE FOR T-FLOAT, T-SIGN 
 TCOPY    SB1    X2          (B1 IS ONLY CHANGED LOCALLY) 
          PX4    X4,B1       SAVE FLOAT CHARACTER FOR LATER 
          SB1    1           RESET B1 = 1 
          NZ     B3,TCOPY4   IF MUST ONLY COPY DIGITS 
  
 TCOPY1   ZR     B2,RNI      IF NO MORE SOURCE DIGITS TO COPY/CHECK 
          X2=SRC             GET NEXT SOURCE DIGIT
          SB3    X2-1R0      B3 = 0 IFF ZERO SOURCE DIGIT 
          NZ     B3,TCOPY2   IF NON-ZERO SOURCE DIGIT ENCOUNTERED 
          SX2    A0          LEFT-FILL CHARACTER
          RCV=X2             INSERT LEFT-FILL CHARACTER 
          SB2    B2-B1       DECREMENT REPEAT COUNT 
          EQ     TCOPY1      LOOP FOR NEXT DIGIT
  
*                            FIRST NON-ZERO DIGIT ENCOUNTERED 
 TCOPY2   UX4    B3,X4       EXTRACT FLOAT CHARACTER
          SB3    A0-B3
          ZR     B3,TCOPY3   IF FLOAT CHARACTER = LEFT-FILL,  SKIP
          SB3    -B3         (FLOAT CHARACTER) - (LEFT-FILL CHARACTER)
          SX5    B3+A0       PREVIOUS CHARACTER = FLOAT CHARACTER 
 TCOPY3   SB3    B1          ENSURE T-FLIP-FLOP IS ON 
          RCV=X2             INSERT FIRST NON-ZERO DIGIT
          SA7    NONZERO     PRESERVE FIELD FROM *BWZ* OR *AWZ* 
  
          SB2    B2-B1       DECREMENT REPEAT COUNT 
 TCOPY4   ZR     B2,RNI      IF NO MORE SOURCE DIGITS TO CHECK
          X2=SRC             COPY SOURCE DIGIT
          RCV=X2               TO RECEIVING FIELD 
          SB2    B2-B1       DECREMENT REPEAT COUNT 
          EQ     TCOPY4      LOOP 
  
  
*                            110  T-INSERT
 TINSERT *LX3    6           RIGHT-JUSTIFY INSERTION CHARACTER
          BX2    -X0*X3      EXTRACT INSERTION CHARACTER
          NZ     B3,TINSERT1 IF T-FLIP-FLOP SET, GO INSERT CHARACTER
          SX2    A0          LEFT-HAND FILL CHARACTER 
 TINSERT1 RCV=X2             INSERTION OF LEFT-HAND FILL CHARACTER
          SB2    B2-B1       DECREMENT REPEAT COUNT 
          NZ     B2,TINSERT1 IF MORE CHARACTERS TO INSERT,  LOOP
          EQ     RNI
  
  
  
*                            111  END-OF-EDIT 
 END      RCV=X2             ADD X5 TO RECEIVING FIELD
          NZ     X2,END4     IF *ASTERISK WHEN ZERO*
          SA4    NONZERO     0 IFF DESTINATION NEEDS BLANKS 
          ZR     X4,END2
 END0     BSS    0
          ZR     B4,END1     IF JUST FILLED COMPLETE WORD 
          SB2    B4+B4       NSLOTS*2 
          SB4    B2+B2       NSLOTS*4 
          MX0    1
          SA2    A6+B1       DESTINATION WORD TO BE FILLED
          SB2    B4+B2       NSLOTS*6 
          SB4    60-1 
          SA4    NONZERO
          ZR     X4,END0A 
          LX6    X6,B2
 END0A    BSS    0
          SB4    B4-B2       DEST. SIZE - 1 
          AX0    X0,B4
          BX2    -X0*X2 
          BX6    X0*X6       (BWZ:  STRIP EXCESS BLANKS)
          BX6    X6+X2       MERGE DESTINATION CHARACTERS AND ORIGINAL
*                            X6 IS READY TO BE STORED 
 END1     SA6    A6+B1
          EQ     C.EDITA     EXIT 
  
 END2     SA2    A4+B1 DESTADDR 
          SB2    X2 
          SB3    A6 
          SA2    DESTWORD 
 END3     BX6    X2          PREPARE TO STORE 
          EQ     B2,B3,END0  IF FOUND LAST WORD 
          SB2    B2+B1       INCREMENT ADDRESS
          SA2    =10H 
          SA6    B2          STORE BLANKED WORD 
          EQ     END3        TRY FOR NEXT WORD
  
  
*                            NEEDS ASTERISKS
 END4     SA4    NONZERO     -7 IFF NON-ZERO DIGITS WERE MOVED
          NG     X4,END0     IF FIELD IS NOW CORRECT
         *LX3    6           RIGHT-JUSTIFY BCP
          BX2    -X0*X3 
          SB6    X2          SOURCE BCP 
         *LX3    6           RIGHT-JUSTIFY LENGTH OF FIELD
          BX2    -X0*X3 
          SB7    X2          LENGTH OF FIELD
          SB5    ASTERS      SOURCE FWA 
          SA2    DESTADDR    (FWA DESTINATION) - 1
          SA4    DESTBCP
          SB3    X2+B1       DESTINATION FWA
          SB4    X4          DESTINATION BCP
          MX2    0           PAD NO BLANKS
          RJ     =X_C.MOVE   GO MOVE THE ASTERISK TO DESTINATION FIELD
          EQ     C.EDITA     EXIT 
  
 ASTERS   DATA   30H******************************
          DATA   30H.*****************************
  
  
 DUMMYSRC BSS    3           DUMMY SOURCE FOR TRAILING OVERPUNCH SIGN 
 NONZERO  BSS    1           " 0 IFF FIELD NOT TO BE BLANKED           1
 DESTADDR BSS    1           ADDRESS BEFORE FIRST WORD OF DESTINATION  2
 DESTBCP  BSS    1           DESTINATION BCP                           3
 DESTWORD BSS    1           BLANKED FIRST WORD OF DESTINATION         4
          SPACE  4
          END 
