*DECK CON6
          IDENT  T8.CN6 
          TITLE  ROUTINES CON6, NXDIGX
 CON6     TITLE  CON6 - 6BIT SOURCE CONVERSION ROUTINES                 006990
*                                                                       007000
**    CON6 - ROUTINES TO PICK UP 6-BIT SOURCE FIELDS (NUMERIC MODE) 
*                                                                       007020
*         INPUT  -  B1 = 1                                              007030
*                   X1 = SOURCE POINTER                                 007040
*                   B5 = RETURN ADDRESS                                 007050
*                                                                       007060
*         OUTPUT -  NONE IN REGISTERS                                   007070
*                                                                       007080
*         PRESERVED  --, --, --, --, --, --, --, --                     007090
*                    A0, --, --, --, --, --, --, --                     007100
*                        B1, --, --, --, B5, B6, B7                     007110
*                                                                       007120
*         TEMPORARY CELLS USED..                                        007130
*                                                                       007140
*                T.NUM,+1,+2    RESULT, A TRIPLE PRECISION NUMBER       007150
*                T.TEMP1     TEMPORARY                                  007160
*                                                                       007170
*         NOTES..   THE ROUTINES THAT FOLLOW ARE NAMED -CON6.Q.-,       007180
*                 WHERE -Q- IS A VALID SOURCE TYPE FOR 6-BIT FIELDS     007190
*                 (B,X,A,C,I,U,E,D,S,N,Z).                              007200
*                                                                       007210
*                   THESE ROUTINES ARE FOR NUMERIC PICKUP ONLY, AND     007220
*                LEAVE A TRIPLE PRECISION REAL NUMBER IN T.NUM.         007230
*                                                                       007240
          SPACE  1
*CALL COM2
          SPACE  4                                                      007260
*                                                                       007330
*  X,A AND C  FIELDS                                                    007340
*                                                                       007350
 CON6.X.  SB4    NEXTNUM     GET -X- ITEM                               007360
          EQ     CONA.X                                                 007370
*                                                                       007380
 CON6.A.  SB4    NXTNUMA     GET -A- ITEM                               007390
          EQ     CONA.X                                                 007400
*                                                                       007410
 CON6.C.  SB4    NXTNUMC     GET -C- ITEM                               007420
          EQ     CONA.X                                                 007430
*                                                                       007440
          SPACE  2                                                      007450
*                                                                       007460
*  S,N AND Z FIELDS                                                     007470
*                                                                       007480
 CON6.S.  SB4    GETZSN.S    GET -S- ITEM                               007490
          EQ     CON6.9                                                 007500
*                                                                       007510
 CON6.N.  SB4    GETZSN.N    GET -N- ITEM                               007520
          EQ     CON6.9                                                 007530
*                                                                       007540
 CON6.Z.  SB4    GETZSN.Z    GET -Z- ITEM                               007550
*                                                                       007560
* 
*         SAVE B5, B6, AND B7 IN T.TEMP1
* 
 CON6.9   MX5    -18         (X5) = 42/77...7B,18/0 
          SX6    B5-0 
          SX7    B6-0 
          BX6    -X5*X6 
          BX7    -X5*X7 
          LX6    18 
          BX6    X6+X7       (X6) = 24/0,18/B5,18/B6
          SX7    B7-0 
          BX7    -X5*X7 
          LX6    18 
          BX6    X6+X7       (X6) = 6/0,18/B5,18/B6,18/B7 
          SA4    T.M1 
          BX7    X4 
          SB7    NXDIGX 
          SA7    T.P                                                    007670
          SB6    CONA.R                                                 007680
          SA6    T.TEMP1                                                007690
          JP     B4          CONVERT STRING                             007700
*                                                                       007710
          SPACE  2                                                      007720
*                                                                       007730
 CON6.U.  SX5    B6          GET -U- ITEM                               007740
          SX7    15                                                     007750
          SX2    60                                                     007760
          SB6    CON6.10                                                007770
          SA7    T.P                                                    007780
          EQ     NXBITS                                                 007790
*                                                                       007800
 CON6.10  SX4    B0                                                     007810
 CON6.11  OR     X6,CON6.13  TAKE CARE OF OUT-OF-RANGE                  007820
          OR     X4,CON6.12                                             007830
          ID     X6,CON6.13  TAKE CARE OF INDEFINITE                    007840
          ID     X4,CON6.12                                             007850
 CON6.15  NX7    X6                                                     007860
          NX4    X4                                                     007870
          FX6    X4+X7       OK, JUST SHUFFLE STUFF TOGETHER            007880
          DX7    X4+X7                                                  007890
          SA6    T.NUM                                                  007900
          SA7    A6+B1                                                  007910
          AX6    59 
          DX6    X6+X7                                                  007930
          SB6    X5                                                     007940
          SA6    A7+B1                                                  007950
          JP     B5          EXIT                                       007960
*                                                                       007970
 CON6.12  BX6    X4          HANDLE UNUSUAL FORMS                       007980
 CON6.13  BX7    X6                                                     007990
          MX0    12                                                     008000
          AX7    59                                                     008010
          BX6    X6-X7                                                  008020
          BX6    X6*X0       MASK MANTISSA TO ZERO                      008030
          BX6    X6-X7                                                  008040
          SA6    T.NUM                                                  008050
          BX7    X6                                                     008060
          SA7    A6+B1                                                  008070
          SB6    X5                                                     008080
          SA6    A7+B1                                                  008090
          JP     B5          EXIT                                       008100
*                                                                       008110
*                                                                       008120
 CON6.E.  EQU    CON6.U.     GET -E- ITEM                               008130
*                                                                       008140
*                                                                       008150
 CON6.I.  SX5    B6          GET -I- ITEM                               008160
          SX7    18                                                     008170
          SX2    60                                                     008180
          SB6    CON6.14                                                008190
          SA7    T.P                                                    008200
          EQ     NXBITS                                                 008210
*                                                                       008220
 CON6.14  BX4    X6                                                     008230
          SB2    48                                                     008240
          AX6    48                                                     008250
          PX4    X4,B0                                                  008260
          PX6    X6,B2                                                  008270
          EQ     CON6.15                                                008280
*                                                                       008290
*                                                                       008300
 CON6.D.  SX5    B6          GET -D- ITEM                               008310
          SX7    29                                                     008320
          SX2    60                                                     008330
          SB6    CON6.16                                                008340
          SA7    T.P                                                    008350
          EQ     NXBITS                                                 008360
*                                                                       008370
 CON6.16  SA6    T.TEMP1                                                008380
          SB6    CON6.17                                                008390
          EQ     NXBITS                                                 008400
*                                                                       008410
 CON6.17  SA4    T.TEMP1                                                008420
          EQ     CON6.11                                                008430
 NXDIGX   TITLE  NXDIGX - PICK UP -X- DIGIT FOR Z,S OR N CONVERSION     019100
*                                                                       019110
**    NXDIGX - PICK UP AN "X( CHARACTER FOR Z,S,N CONVERSIONS (-GETZSN*)
*                                                                       019130
*         INPUT  -  B1 = 1                                              019140
*                   X1 = SOURCE POINTER                                 019150
*                   B5 = RETURN ADDRESS                                 019160
*                   B7 = LINKAGE TO THIS ROUTINE                        019170
*                                                                       019180
*         OUTPUT - X1 = UPDATED SOURCE POINTER (=0 IF END OF STRING)    019190
*                   X6 = CHARACTER (DIGIT)                              019200
*                                                                       019210
*         PRESERVED  X0, --, X2, --, X4, X5, --, --                     019220
*                    A0, A1, A2, --, A4, A5, A6, A7                     019230
*                        B1, --, --, B4, B5, B6, --                     019240
*                                                                       019250
*         NOTES..   IF THE CHARACTER IS A DIGIT, IT IS RETURNED IN      019260
*                 X6 REDUCED TO (0D TO 9D).  IF THE CHARACTER IS NOT    019270
*                 A DIGIT, A CODE IS PLACED IN X6 AS FOLLOWS..          019280
*                                                                       019290
*                    BLANK        -0                                    019300
*                      -          -1                                    019310
*                      +          -2                                    019320
*                    OTHER        -3                                    019330
*                                                                       019340
*                 IF THE CHARACTER CORRESPONDS TO A SIGN-OVERPUNCH      019350
*                 DIGIT, THIS ROUTINE RETURNS THE DIGIT AND THEN THE    019360
*                 SIGN ON A SUBSEQUENT CALL.                            019370
*                                                                       019380
*                   THIS ROUTINE EXPECTS TO BE ENTERED VIA A -JP B7-,   019390
*                 AND MAY MODIFY B7.                                    019400
*                                                                       019410
          SPACE  4                                                      019430
 NXDIGX   SB7    B6          MAIN ENTRY                                 019440
          SB6    NXDX.1                                                 019450
          EQ     NNBL        GET CHARACTER                              019460
 NXDX.1   SB6    B7                                                     019470
          NG     X6,NXDX.N   JP IF NO MORE                              019480
          SB2    X6-1R9                                                 019490
          SX6    X6-1R0                                                 019500
          GT     B2,B0,NXDX.2  JP IF NOT DIGIT                          019510
          NG     X6,NXDX.2           NOT DIGIT                          019520
          SB7    NXDIGX      RESTORE B7 
          JP     B5          DIGIT, RETURN                              019530
*                                                                       019540
 NXDX.2   SB2    B2+1R9-1R   NON DIGIT, CHECK OTHER CODES               019550
          ZR     B2,NXDX.B    BLANK                                     019560
          SB2    B2+1R -1R-                                             019570
          ZR     B2,NXDX.M    MINUS                                     019580
          SB2    B2+1R--1R+                                             019590
          ZR     B2,NXDX.P    PLUS                                      019600
          SX6    X6+1R0-72B                                             019610
          ZR     X6,NXDX.3    +0                                        019620
          SX6    X6+72B-66B                                             019630
          ZR     X6,NXDX.5    -0                                        019640
          SB2    B2+1R+-1RI                                             019650
          SX6    X6+66B-1RA                                             019660
          GT     B2,B0,NXDX.4                                           019670
          NG     X6,NXDX.4                                              019680
          SX6    X6+1         +OVERPUNCH DIGIT                          019690
 NXDX.3   SB7    NXDX.P                                                 019700
          JP     B5          RETURN WITH DIGIT                          019710
*                                                                       019720
 NXDX.4   SB2    B2+1RI-1RR                                             019730
          SX6    X6+1RA-1RJ                                             019740
          GT     B2,B0,NXDX.U                                           019750
          NG     X6,NXDX.U                                              019760
          SX6    X6+1         - OVERPUNCH DIGIT                         019770
 NXDX.5   SB7    NXDX.M                                                 019780
          JP     B5          RETURN WITH DIGIT                          019790
*                                                                       019800
 NXDX.B   BX6    -X6-X6      BLANK                                      019810
          SB7    NXDIGX      RESTORE B7 
          JP     B5                                                     019820
*                                                                       019830
 NXDX.P   SX6    -2          PLUS                                       019840
 NXDX.Q   SB7    NXDIGX       RESTORE SCAN IF TURNED OFF                019850
          JP     B5                                                     019860
*                                                                       019870
 NXDX.M   MX6    59          MINUS  (-1)                                019880
          EQ     NXDX.Q                                                 019890
*                                                                       019900
 NXDX.N   SX1    0           NO MORE                                    019910
 NXDX.U   MX6    58          UNRECOGNIZED CNARACTER  (-3)               019920
          JP     B5          FINAL EXIT                                 019930
          END 
