*DECK NUMERED 
          IDENT  NUMERED
          ENTRY  NUMERED
          COMMENT  NUMERIC EDITING
NUMERED   TITLE    NUMERED - NUMERIC EDITING
*         ADAPTED FROM COBOL COMPILER ROUTINE - DDED
* 
*         INPUT 
*         INPUT REQUIREMENTS                                            000760
*                CCONVERT COMMON AREA MUST BE INITIALIZED AS FOLLOWS    000770
*                  SOURCEW CONTAINS ADDRESS OF SOURCE                   000780
*                  SOURCEL CONTAINS LENGTH OF SOURCE IN BYTES(@ 18)     000790
*                  SINKWOR CONTAINS ADDRESS OF SINK                     000800
*                  SINKBYT CONTAINS BYTE OFFSET OF SINK                 000810
*                  MURALAD CONTAINS ADDRESS OF EDITMURAL                000820
* 
*                   INPUT IS RIGHT-JUSTIFIED, ZERO-FILLED DISPLAY CODE
*                   DIGITS, NINES COMPLEMENT IF NEGATIVE. IE
*                   +4 = 3333333333333333333333333333333333333337 
*                   -4 = 4444444444444444444444444444444444444440       000840
* 
* 
*       M U R A L   C O D E S 
*    00  01  02  03  04  05  06  07  10  11  12  13  14  15  16  17 
*    END  9  CR  DB  WRD  R   Z   *   -   +   $   .   B   O   ,   / 
* 
* 
*         ENTRY AT D.EDITI INITIALIZES FOR CURRENCY SIGN AND RADIX POINT
*         AT D.EDITI B3 CONTAINS CURRENCY SIGN/RADIX PT/COMMA CHARACTERS
          EJECT 
 NUMERED  DATA   0
          SA3    SINKWOR     LOAD X3 WITH ADDRESS OF SINK               000860
          SB1    1           INITIALIZE INCREMENT VALUE                 000870
          SA4    SOURCEL     LOAD X4 WITH LENGTH OF SOURCE              000880
          SA2    SINKBYT     LOAD X2 WITH SINK BYTE OFFSET              000890
          SA1    SOURCEW     LOAD X1 WITH ADDRESS OF SOURCE             000900
          SB5    X3          B5 = SINK ADDRESS                          000910
          SB4    X4          B4 = SOURCE LENGTH                         000920
          SA5    MURALAD     LOAD X5 WITH ADDRESS OF MURAL              000930
          SA3    X1          LOAD X3 WITH 1ST WORD OF SOURCE            000940
          SB7    B0          INITIALIZE B7(B7 SET NEG IF *=SUPPRESS CHR)000950
          SA4    ZEROS       LOAD X4 WITH OCTAL 3"S (DISPLAY ZEROS)     000960
          SA1    X1+B1       LOAD X1 WITH 2ND WORD OF SOURCE            000970
          BX6    X3          X6 = 1ST WORD OF SOURCE                    000980
          SB6    X5          B6 = ADDRESS OF MURAL                      000990
          LX7    B0,X1       X7 = 2ND WORD OF SOURCE                    001000
          EJECT 
 EDIT1    BSS    0
          AX3    60 
          SB2    10 
          BX5    X3-X7       WORD 2 OF INPUT SET PLUS 
          AX7    B0,X3       SIGN TO X7 
          BX3    X3-X6       WORD 1 OF INPUT SET PLUS 
          SA7    SIGN        SAVE SIGN
          SB3    B4-B2
          NG     B3,WUNWD    JUMP IF LESS THAN 10 CHARS 
          SB3    B2-B3       ADJUST FOR MASK
          SA1    D.MASK+B3   GET MASK FOR UNUSED CHARS
          BX7    -X1*X3      MASK OFF CHARS USED
          BX1    X1*X4       GET ZEROS FOR UNUSED CHARS 
          BX3    X1+X7       WITH ZERO FILL 
          EQ     EDIT1B1
 WUNWD    BSS    0
          SB3    B0-B3       ADJUST B3 FOR MASK 
          SA1    D.MASK+B3   GET MASK FOR UNUSED CHARS
          BX3    X4          ZEROS TO FIRST WORD (ALL UNUSED) 
          BX7    -X1*X5      MASK OFF CHARS USED
          BX1    X1*X4       GET ZEROS FOR UNUSED CHARS 
          BX5    X1+X7       FILL 
 EDIT1B1  BSS    0
          PX2    B0,X2
          EQ     AOPT        ZERO OUT LEADING BLANKS
* NOW UNSIGNED INPUT IN X3/X5, OFFSET IN X2 
 EDIT1B   SA1    SIXTIES
          IX6    X5-X4       SUBTRACT DISPLAY ZEROS 
          BX0    X6*X1
          BX7    X1 
          SA1    ELEVENS
          IX6    X1-X6       SUBTRACT FROM 9*S
          BX6    X6*X7
          IX0    X0+X6
          NZ     X0,MURERR   BR IF INPUT WD 2 NOT NUMERIC 
          GE     B2,B4,EDIT1C JUMP IF 1 WORD INPUT
          IX6    X3-X4       SUBTRACT DISPLAY ZEROS 
          IX1    X1-X6       SUBTRACT FROM 9*S
          BX1    X1*X7
          BX7    X6*X7
          IX0    X1+X7
          NZ     X0,MURERR   BR IF INPUT WD 1 NON-NUMERIC 
 EDIT1C   MX6    0
          PX1    B0,X6       FORM 200000000000XXXXXXB 
          IX7    X5-X4       REMOVE ZERO BIAS FROM WD 2 OF INPUT
          BX2    X1-X2       OFFSET TO INTEGER
          IX6    X3-X4       REMOVE 0 BIAS WD1
          MX0    54 
          IX6    X6+X7       ADD INPUT WDS TOGETHER 
          SB3    B4-B2       NO OF NUMERIC DIGITS - 10
          MX7    56 
          SA6    ZROFLG      ZERO IF ZERO INPUT, ELSE NON-ZERO
          LT     B2,B4,EDIT2 BR IF 2 WD INPUT 
          EQ     B4,B0,EDIT2AA BR IF 0 DIGITS INPUT ( LIKE PIC IS $)
          SB3    B0 
* 
**               SPLATTER INPUT--1 CHR PER WORD 
**
* 
 EDIT2    SX4    INP         RECEIVING BUFFER 
          SB2    B4          NO OF DIGITS 
 EDIT2A   BX6    -X0*X5      MASK RTMOST DIGIT
          SB2    B2-B1       DECREMENT INDEX INTO INP 
          AX5    6           POSITION NEXT DIGIT
          SA6    X4+B2       STORE CHAR IN INP+B2 
          NE     B2,B3,EDIT2A BR IF MORE CHRS IN THIS WORD
          SB3    B0          SET LIMIT
          BX5    X3          MOVE WD 1 TO WORD 2
          NE     B2,B0,EDIT2A BR IF MORE DIGITS 
* 
* AT THIS POINT INP CONTAINS THE LEFTMOST DIGIT, INP+1 THE 2ND DIGIT TO 
*      ... INP+B4-1 THE RTMOST DIGIT OF THE INPUT FIELD,  ALL DIGITS
*      RT JUST BINARY ZERO FILLED B1,4,5,6,7 SAME AS ON INPUT 
*      X REGISTERS NOW ALL VOLATILE   X7=56 BIT MASK
 EDIT2AA  BSS    0
          SB3    10 
          SB4    X2          OFFSET 
          SA3    B6          MURAL
          LT     B4,B3,EDIT3
          SA4    TNTH        .1, 24 BINARY BIT FRAC 
          PX2    B0,X2
          SA5    INP-1
          DX1    X2*X4       .1 * OFFSET
          MX6    36 
          SA0    CODES
          BX2    -X6*X1      FRAC PART
          LX2    3           *8 
          BX6    -X6*X1      FRAC PART
          IX2    X2+X6       *9 
          AX1    24          WORD OFFSET RT JUST
          IX2    X2+X6       *10  (24 BIT FRAC) 
          SA4    B5+X1       LOAD SINK WORD 
          AX2    24          BCP IN CHRS
          BX5    X3          SAVE MURAL 
          LX3    4           SHIFT INDICATOR BITS 
          SA1    SHIFT2+X2   LOAD SHIFT CTR 
          SB4    X2          BCP
          SB2    B3-B4       10-BCP 
          SB6    X1          BCP IN BITS
          LX4    B6,X4       ALIGN SINK WORD
          PL     X5,EASY0 
          EQ     HARD 
* 
 EDIT3    SB6    B4+B4       OFFSET X 2 
          SA0    CODES
          SB6    B6+B4       OFFSET X 3 
          SA4    B5          SINK WORD TO X4
          SB6    B6+B6       OFFSET * 6 
          SA5    INP-1
          LX4    B6,X4       SHIFT SINK INTO PLACE
          SB2    B3-B4       10 - OFFSET
          BX5    X3          SAVE MURAL 
          LX3    4           STRIP OFF INDICATOR BITS 
          PL     X5,EASY0    EASY CASE
* NOW B2=10-BCP, A4=SINK ADDR., X4=1ST SINK WORD, X3=MURAL WD1 SHIFTED 4
* X5=MURAL WD 1, A5=ADD OF INP-1,A0=CODES, B3=10, A3=MURAL ADD
* NOTE THAT CODES EQU SIGN, X7=56 BIT MASK
 HARD     BSS    0
          EJECT 
* 
*                   THE -DIFFICULT- NUMERIC EDITING CASES 
* 
* 
          LX5    1
          SB6    B0          SET FLAG - PICK OFF INSERTION
          SB4    8
          SB5    11 
          PL     X5,HARD1    JUMP IF NOT ALL FLOAT/SUPPRESS 
          SA1    ZROFLG 
          ZR     X1,HRDD6 
* 
*                   ISOLATE INSERTION $ OR + OR -.
*                   ISOLATE THE FIRST FLOAT/SUPPRESS MURAL CODE.
* 
 HARD1    LX5    1
          PL     X5,HARD1C   JUMP IF NO $/+/- INSERTION 
 HARD1A   LX3    5
          BX2    -X7*X3      PICK OFF MURAL CODE
          SB7    X2 
          SA1    A0+B7
          EQ     B7,B3,HARD1B JUMP IF $ 
          GT     B4,B7,HARD1E JUMP IF Z OR ASTERISK 
          EQ     B7,B5,HARD1E JUMP IF . 
          GT     B7,B3,HARD1D JUMP IF SIMPLE INSERTION
          SA2    A0          X2 INDICATES SIGN OF INPUT 
          SA1    A0+B4       + OR - 
          NG     X2,HARD1B   JUMP IF NEGATIVE INPUT 
          SA1    A0+B7
          GT     B7,B4,HARD1B JUMP IF + MURAL CODE
          SX1    55B
 HARD1B   GT     B6,B0,HARD1E JUMP IF SUPPRESS CHARACTER
          LX4    6
          BX6    X0*X4
          SB2    B2-B1       DECREMENT CHARACTER COUNT
          IX4    X6+X1       INSERT INSERTION CHR 
          NE     B2,B0,HARD1C JUMP IF NOT COMPLETE SINK WORD
          BX6    X4 
          SB2    B3          RESET CHARACTER COUNT TO 10
          SA6    A4          STORE SINK WORD
          SA4    A4+B1       NEXT SINK WORD 
 HARD1C   LX5    1
          SB6    B1          SET FLAG - PICK OFF FLOAT/SPPRSS 
          NG     X5,HARD1A   JUMP IF FLOAT SUPPRESS 
          SA5    A5+B1       FIRST INPUT CHARACTER
          SB4    B4-B1       B4=7 
          EQ     HARD3B 
* 
 HARD1D   SA1    A0+B7       MURAL CODE IS AN INSERTION CHARACTER 
          LX4    6
          BX6    X0*X4
          SB2    B2-B1       DECREMENT CHARACTER COUNT
          IX4    X6+X1       INSERT CHARACTER 
          NE     B2,B0,HARD1DA   JUMP IF NOT COMPLETE SINK WORD 
          BX6    X4 
          SB2    B3          RESET CHARACTER COUNT TO 10
          SA6    A4          STORE SINK WORD
          SA4    A4+B1       NEXT SINK WORD 
 HARD1DA  PL     X3,HARD1A   JUMP IF NOT A REPEAT INSERTION 
          LX3    1           REALIGN MURAL
          EQ     HARD1D 
* 
 ENDWRD   SA3    A3+B1
          EQ     HARD1A 
* 
 HARD1E   SX2    X2-4 
          ZR     X2,ENDWRD
          BX6    X1 
          SX2    33B         DISPLAY ZERO 
          SA6    A0-B1       SAVE FLOAT CHARACTER (OR .)
          SB4    B4-B1       B4=7 
          SX1    55B         BLANK FILLER 
          BX5    X6 
          NE     B7,B4,HARD1F JUMP IF BLANK FILLER
          SX1    47B         ASTERISK FILLER
 HARD1F   EQ     B1,B6,HARD1G JUMP IF NO SIMPLE INSERTIONS
          SB6    B6-B1       INSERT FILLER
          LX4    6           CHARACTER FOR EACH 
          BX6    X0*X4       LEADING SIMPLE 
          SB2    B2-B1       INSERTION
          IX4    X6+X1       CHARACTER
          NE     B2,B0,HARD1F JUMP IF NOT COMPLETE SINK WORD
          BX6    X4 
          SB2    B3          RESET CHARACTER COUNT TO 10
          SA6    A4          STORE SINK WORD
          SA4    A4+B1       NEXT SINK WORD 
          NE     B6,B1,HARD1F JUMP IF MORE SIMPLE INSERTIONS
 HARD1G   EQ     B7,B5,HARD3 JUMP IF .
          SB6    B7-4 
          GT     B7,B4,HARD2B JUMP IF $ OR - OR + 
          LX3    59 
          EJECT 
* 
*                   EDIT THRU TO NON-FLOAT/SUPPRESS STATUS (9 OR DECIMAL
*                   POINT MURAL CODE, OR NON-ZERO INPUT CHARACTER)
* 
* 
*                   X1 IS THE SUPPRESS FILLER CHARACTER (BLANK OR *)
*                   B7 IS THE MURAL CODE OF THE FIRST FLOAT/SUPPRESS
*                    CHARACTER (Z OR * OR $ OR - OR +)
*                  X2=33B 
*                  B3=10
*                  B4=7 
*                  B5=11
* 
 HARD2    SA5    A5+B1       NEXT INPUT CHARACTER 
          IX6    X5-X2
          NZ     X6,HARD2E   JUMP IF NOT A LEADING ZERO 
 HARD2A   LX4    6
          SB2    B2-B1       DECREMENT CHARACTER COUNT
          BX6    X0*X4
          LX3    1           SHIFT MURAL
          IX4    X6+X1
          EQ     B2,B0,HARD4 JUMP IF END OF SINK WORD 
 HARD2B   NG     X3,HARD2C   JUMP IF REPEAT MURAL CODE
          LX3    5
          BX6    -X7*X3      PICK OFF MURAL CODE
          LX3    59          REALIGN MURAL
          SB6    X6-4 
          ZR     X6,EASY4 
 HARD2C   GT     B6,B4,HARD2A JUMP IF SIMPLE INSERTION
          EQ     B6,B4,HARD2D JUMP IF DECIMAL POINT 
          GT     B6,B0,HARD2 JUMP IF FLOAT/SUPPRESS 
          EQ     B6,B0,HARD5 JUMP IF END OF MURAL WORD
          SB6    X6          9 MURAL CODE 
          SA5    A5+B1       NEXT INPUT CHARACTER 
          EQ     HARD2E 
 HARD2D   SA1    A0+B5       DECIMAL POINT
          BX5    X1 
 HARD2E   GE     B4,B7,HARD3 JUMP IF NO FLOATING CHARACTER
          LX4    6
          SA1    A0-B1       PICK UP FLOATING SIGN
          BX6    X0*X4
          SB2    B2-B1       DECREMENT CHARACTER COUNT
          IX4    X6+X1       INSERT CHARACTER 
          EQ     B6,B0,EASY4 JUMP IF END OF MURAL 
          NE     B2,B0,HARD3 JUMP IF NOT END OF SINK WORD 
          BX6    X4 
          SB2    B3          RESET CHR CT TO 10 
          SA6    A4          STORE SINK WORD
          SA4    A4+B1
          EQ     HARD3
          EJECT 
* 
*         FLOAT/SUPPRESS HAS TERMINATED.  EDIT THRU TO END OF MURAL 
* 
* 
 HARD4A   BX6    X4 
          SB2    B3 
          SA6    A4 
          SA4    A4+B1
          PL     X3,HARD3B
 HARD3    LX4    6           MURAL CODE IS NOT AN INSERTION 
          SB2    B2-B1       DECREMENT CHARACTER COUNT
          BX6    X0*X4
          LX3    1
          IX4    X6+X5       INSERT CHARACTER 
          SA5    A5+B1       NEXT INPUT CHARACTER 
          EQ     B2,B0,HARD4A JUMP IF END OF SINK WORD
 HARD3A   NG     X3,HARD3    JUMP IF REPEAT (NON-INSERTION) 
* 
 HARD3B   LX3    5
          BX2    -X7*X3      PICK OFF NEXT MURAL CODE 
          LX3    59          REALIGN MURAL
          SB7    X2 
          SB6    X2-3 
          ZR     X2,EASY4    JUMP IF END OF MURAL 
          EQ     B7,B1,HARD3 JUMP IF 9
          EQ     B7,B3,HARD3 JUMP IF $
          GT     B7,B3,HARD3C JUMP IF INSERTION 
          GE     B1,B6,HARD3E JUMP IF CR/DB/END MURAL WORD
          GE     B4,B7,HARD3 JUMP IF Z OR * OR REPEAT FLOAT 
          LX3    6           + OR - 
          BX6    -X7*X3      PICK OFF NEXT MURAL CODE 
          LX3    54          REALIGN MURAL
          NZ     X6,HARD3    JUMP IF NOT TRAILER
          SB4    B4+B1       B4=8 
          SA2    A0 
          SA1    A0+B4
          NG     X2,HARD3G   JUMP IF NEGATIVE INPUT 
          SA1    A0+B7
          NE     B7,B4,HARD3G JUMP IF + MURAL CODE
          SX1    55B
          EQ     HARD3G 
* 
 HARD3D   BX6    X4 
          SB2    B3          RESET CHR CTR TO 10
          SA6    A4          STORE SINK WORD
          SA4    A4+B1       NEXT SINK WORD 
          PL     X3,HARD3B
 HARD3C   SA1    A0+B7       MURAL CODE IS AN INSERTION CHARA 
          LX4    6
          SB2    B2-B1       DECREMENT CHARACTER COUNT
          BX4    X0*X4
          LX3    1           REALIGN MURAL
          IX4    X4+X1       INSERT CHARACTER 
          EQ     B2,B0,HARD3D 
          PL     X3,HARD3B   BR IF NO REPEAT
          EQ     HARD3C 
* 
 HARD3E   EQ     B6,B1,HARD5A JUMP IF END OF MURAL WORD 
*                  CR OR DB MURAL CODE
          SA2    A0 
          SA1    A0+B7
          NG     X2,HARD3F   JUMP IF NEGATIVE INPUT 
          SX1    5555B
 HARD3F   SB2    B2-B1       DECREMENT CHARACTER COUNT
          LX4    6
          BX2    -X0*X1 
          BX6    X0*X4
          IX4    X6+X2       INSERT  -C- OR -D- OR 55B
          AX1    6           SHIFT TO -R- OR -B-
          NE     B2,B0,HARD3G JUMP IF NOT COMPLETE SINK WORD
          BX6    X4 
          SB2    B3          RESET CHARACTER COUNT TO 10
          SA6    A4          STORE SINK WORD
          SA4    A4+B1       NEXT SINK WORD 
 HARD3G   LX4    6
          BX6    X0*X4
          SB2    B2-B1       DECREMENT CHARACTER COUNT
          IX4    X6+X1       INSERT LAST CHR
          EQ     EASY4
* 
*                  END OF SINK WORD 
* 
 HARD4    BX6    X4 
          SA6    A4          STORE SINK WORD
          SB2    B3          RESET CHARACTER COUNT TO 10
          SA4    A4+B1       NEXT SINK WORD 
          EQ     HARD2B 
* ZERO INPUT--CK FOR  0 INSERTIONS  EQ ZZ.Z0  --
 HRDD6    BSS    0
          LX3    5B          DOES B APPEAR BEFORE * 
          MX1    56 
          BX2    -X1*X3 
          SX1    X2-14B 
          LX3    55 
          ZR     X1,HARD1    JUMP IF B BEFORE * 
          SX6    A3 
          SB6    13 
          SA6    SVPICA 
 HRDD6A   LX3    5
          BX2    -X7*X3 
          SB4    X2 
          EQ     B4,B6,SPZR  BR IF 0 IN PIC 
          EQ     B4,B0,EOP   BR IF END OF PIC 
          SB4    B4-4 
          EQ     B4,B0,EOMW  BR IF END OF MURAL WORD
          PL     X3,HRDD6A
 REPT     LX3    1
          NG     X3,REPT
          EQ     HRDD6A 
 EOMW     SA3    A3+B1       LOAD NEXT MURAL WRD
          LX3    1
          EQ     HRDD6A 
 EOP      SA2    A6          SVPICA    END OF PIC 
          SB6    B0 
          SA3    X2          RESTORE MURAL FIRST WRD TO X3
          LX3    4
          EQ     HARD6
 SPZR     SA2    A6          SVPICA 
          SB4    8           ZERO INSERTION PRESENT 
          SA3    X2 
          SB6    B0 
          LX3    4
          EQ     HARD1
 SVPICA   BSSZ   1
* 
* 
*                  END OF MURAL WORD
* 
 HARD5    SA3    A3+B1       NEXT MURAL WORD
          EQ     HARD2B 
* 
 HARD5A   SA3    A3+B1       NEXT MURAL WORD
          EQ     HARD3B 
 EASY0    LX5    1
          PL     X5,EASY     BR IF NOT BWZ
          SA1    ZROFLG 
          NZ     X1,EASY     BR IF NON-ZERO INPUT 
* 
*                  INPUT IS ZERO
*                  MURAL CONTAINS ALL FLOAT/SUPPRESS CODES (PLUS ANY
*                  INSERTIONS), OR -BLANK WHEN ZERO- CLAUSE PREVAILS. 
*                  B7 IS NEGATIVE IF -*- IS THE SUPPRESSION CHARACTER 
* 
 HARD6    SX1    55B         BLANK
          LX3    5           MURAL CODE RT JUST 
          BX2    -X7*X3      MASK OFF MURAL CODE
          LX3    59          REALIGN MURAL FOR LOOPS
          BX5    X1 
          GE     B7,B0,HARD6B BR IF BLANK IS SUPPRESS CHR 
          SX5    57B         PERIOD 
          SX1    47B         ASTERISK 
          SB6    X2-3        MURAL CODE-3 
          EQ     HARD6E      ASTERISK IS SUPPRESS. CHR
 HARD6A   LX3    5
          BX2    -X7*X3      NEXT MURAL CODE
          ZR     X2,EASY4    BR IF END OF MURAL 
          SB6    X2-3 
          LX3    59 
          EQ     B6,B1,HARD6G BR IF END OF MURAL WORD 
          EQ     HARD6E 
 HARD6F   BX6    X4 
          SB2    B3          RESET CHR CT TO 10 
          SA6    A4          STORE SINK 
          SA4    A4+B1       LOAD NEXT SINK WORD
          PL     X3,HARD6A   BR IF NO REPEAT
 HARD6B   LX4    6           POSITION SINK WD 
          BX6    X0*X4       MAKE HOLE
          SB2    B2-B1       DECRM CHR CTR
          IX4    X6+X1       INSERT SUPPRESS. CHR 
          LX3    1           SHIFT MURAL
          EQ     B2,B0,HARD6F BR IF NO MORE CHRS
          NG     X3,HARD6B   BR IF REPEAT 
          EQ     HARD6A      MURAL CHANGE 
 HARD6E   NE     B6,B4,HARD6B JUMP IF NOT PERIOD
          LX4    6           ALIGN SINK WORD
          SB7    B0 
          BX6    X0*X4       MAKE HOLE
          SB2    B2-B1       DECRM CHR CTR
          IX4    X6+X5       INSERT PERIOD
          LX3    1           SHIFT MURAL
          EQ     B2,B0,HARD6F BR IF NO MORE CHRS
          PL     X3,HARD6A   BR IF MURAL CHG
          EQ     HARD6B      2 PERIODS IN ROW--SOMETHINGS WRONG 
*                                  (IGNORE PROBLEM) 
* 
*                   END OF MURAL WORD 
* 
 HARD6G   SA3    A3+B1       NEXT MURAL WORD
          EQ     HARD6A 
          EJECT 
* 
*         THE -EASY- NUMERIC EDITING CASES.  MURALS CONTAIN 9(S)
*         AND INSERTION CHARACTERS WITH NO LEADING OR TRAILING SIGNS
*         (+, -, CR, DB). 
* 
 EASY3    BX6    X4          END OF SINK WORD 
          SB2    B3          B2=10
          SA6    A4          STORE SINK WD
          SA4    A4+B1       LOAD NEXT SINK WD
          PL     X3,EASY
 EASY1    LX4    6           MURAL CODE IS A -9-
          SA5    A5+B1       INPUT CHARACTER
          BX6    X0*X4       MAKE HOLE IN SINK WORD 
          SB2    B2-B1       DECREMENT CHARACTER COUNT
          LX3    1           REALIGN MURAL
          IX4    X6+X5       INSERT DIGIT 
          EQ     B2,B0,EASY3 JUMP IF COMPLETE SINK WORD 
          NG     X3,EASY1 
* 
 EASY     LX3    5
          BX2    -X7*X3      PICK OFF MURAL CODE
          SB7    X2 
          LX3    59          REALIGN MURAL
          EQ     B7,B1,EASY1 JUMP IF MURAL CODE IS 9
          EQ     B7,B0,EASY4 JUMP IF END OF MURAL 
          SA1    A0+B7       POSSIBLE INSERTION CHARACTER 
          GE     B7,B3,EASY2
          EQ     EASY5
* 
 EASY3A   BX6    X4          END OF SINK WORD 
          SB2    B3 
          SA6    A4 
          SA4    A4+B1
          PL     X3,EASY
 EASY2    LX4    6           MURAL CODE IS AN INSERTION CHAR
          SB2    B2-B1       DECREMENT CHARACTER COUNT
          BX6    X0*X4       MAKE HOLE IN SINK WD 
          LX3    1           REAILGN MURAL
          IX4    X6+X1
          EQ     B2,EASY3A
          NG     X3,EASY2 
          LX3    5           REPEATS EASY 
          BX2    -X7*X3 
          SB7    X2 
          LX3    59 
          EQ     B7,B1,EASY1
          EQ     B7,B0,EASY4
          SA1    A0+B7
          LT     B7,B3,EASY5
          EQ     EASY2
* 
*                END OF MURAL 
* 
 EASY4    SA5    SHIFT2+B2
          SB2    X5          BYTE CTR * 6 
          LX6    B2,X4
          SA6    A4 
          EQ     NUMERED     EXIT 
* 
*                  END OF MURAL WORD
* 
 EASY5    SA3    A3+B1       NEXT MURAL WORD
          EQ     EASY 
          EJECT 
* 
*                   ROUTINE TO CONVERT BLANKS IN INPUT TO ZEROS.  USED
*                   WHEN A-OPTION PREVAILS.  POSITIVE INPUT IN X3/X5. 
* 
 AOPT     SA1    BLANKS 
          SB3    3
          BX6    -X5-X1      ANY (AND ONLY) 55 BECOMES 77 
          LX7    B3,X6
          SA1    TENS        101010...10B 
          BX7    X6*X7       TOP 3 BITS OF 6-BIT BYTE WILL BE 
          BX6    X1*X7       7 ONLY IF ORIGINALLY A 77
          LX0    B1,X6
          BX6    X0*X7
          LX0    B1,X6
          BX6    X0*X7       TOP BIT OF 6-BIT BYTE WILL BE 1 ONLY IF
*                                ORIGINALLY A 77
          AX7    B1,X6
          BX6    X7+X6
          BX7    X6 
          SA1    BLANKS 
          LX7    57 
          IX7    X6+X7       6-BIT BYTE WILL BE 66 ONLY IF
*                                ORIGINALLY A 77-REST ARE 00
          BX0    X5-X1       AND (ONLY) 55 BECOMES 00 
          IX6    X0+X7       AND ONLY 00 BECOMES 66 
          BX5    X6-X1       ANY (AND ONLY) 66 BECOMES 33 
          GE     B2,B4,EDIT1B BR IF 1 WORD INPUT
          BX6    -X3-X1      SAME COMMENTS APPLY FOR UPPER
          LX7    B3,X6       HALF OF INPUT (X3) 
          SA1    TENS 
          BX7    X6*X7
          BX6    X1*X7
          LX0    B1,X6
          BX6    X0*X7
          LX0    B1,X6
          BX6    X0*X7
          AX7    B1,X6
          IX6    X7+X6
          BX0    X6 
          LX0    57 
          SA1    BLANKS 
          IX7    X6+X0
          BX0    X3-X1
          IX6    X0+X7
          BX3    X6-X1
          EQ     EDIT1B 
          EJECT 
* 
*                   ROUTINE TO OBTAIN OFFSET LT 10
          EJECT 
* 
*                   ERROR ROUTINES
* 
 MURERR   SX7    97          DIAG NR FOR BAD MURAL DIAGNOSTIC           001020
          SA7    RETURNC                                                001030
          EQ     NUMERED                                                001040
          EQ     NUMERED     EXIT 
* 
 SHIFT2   DATA   0
          DATA   6
          DATA   12 
          DATA   18 
          DATA   24 
          DATA   30 
          DATA   36 
          DATA   42 
          DATA   48 
          DATA   54 
          DATA   0
 D.MASK   DATA   0
          DATA   1L;
          DATA   2L;; 
          DATA   3L;;;
          DATA   4L;;;; 
          DATA   5L;;;;;
          DATA   6L;;;;;; 
          DATA   7L;;;;;;;
          DATA   8L;;;;;;;; 
          DATA   9L;;;;;;;;;
          DATA   10L;;;;;;;;;;
          EJECT 
 ZROFLG   BSS    1           ZERO IF ZERO INPUT, ELSE NONZERO 
          BSS    1           HOLDS FLOATING CHARACTER 
 SIGN     BSS    0           HOLDS INPUT WORD (POS OR NEG)
 CODES    BSS    1           MURAL CODES     END OF MURAL 
          BSS    1           9
          VFD    48/0,12/2HRC 
          VFD    48/0,12/2HBD 
          BSS    1           END OF MURAL WORD
          BSS    1           REPEATED FLOATING CHARACTER
          VFD    54/0,6/1HZ 
          VFD    54/0,6/1H* 
          VFD    54/0,6/1H- 
          VFD    54/0,6/1H+ 
 DOLLAR   BSS    0
          VFD    54/0,6/1H$ 
 PERIOD   BSS    0
          VFD    54/0,6/1H. 
          VFD    54/0,6/1H           BLANK
          VFD    54/0,6/1H0 
 COMMA    BSS    0
          VFD    54/0,6/1H, 
          VFD    54/0,6/1H/ 
 INP      BSSZ   18          HOLDS SPLATTERED INPUT 
          BSS    3
 ZEROS    VFD    60/10H0000000000 
 BLANKS   VFD    60/10H 
 TENS     DATA   10101010101010101010B
 SIXTIES  DATA   60606060606060606060B
 ELEVENS  DATA   11111111111111111111B
 TNTH     DATA   20000000000006314632B      .1 24 BIT FRAC PART 
 D.AO     DATA   0
          USE    /CCONVER/                                              001080
          BSS    2                                                      001090
 SOURCEW  BSS    1                                                      001100
 SOURCEL  BSS    1                                                      001110
          BSS    1                                                      001120
 SINKBYT  BSS    1                                                      001130
 SINKWOR  BSS    1                                                      001140
          BSS    2                                                      001150
 MURALAD  BSS    1                                                      001160
          BSS    1                                                      001170
 RETURNC  BSS    1                                                      001180
          END 
