*DECK TEST6 
          IDENT  T8.TST6
          TITLE  ROUTINES TEST6, FXPTR
 TEST6    TITLE  TEST DISPLAY-CODE SOURCE FIELDS                        039710
*                                                                       039720
**    TEST6 - TEST DISPLAY-CODE SOURCE FIELDS 
*                                                                       039740
*         THIS CODE IS USED TO PERFORM SELECTION TESTING WHEN THE       039750
*        SOURCE RECORD IS IN DISPLAY CODE                               039760
*                                                                       039770
*         INPUT  -  B1 = 1                                              039780
*                   B6 = RETURN ADDRESS                                 039790
*                                                                       039800
*                T.INREC     POINTER TO CURRENT POSITION IN SOURCE      039810
*                T.RECORD    POINTER TO START OF SOURCE                 039820
*                T.COND      CONDITION CODE FOR RELATIONAL              039830
*                                                                       039840
*                   OTHER T.- CELLS AS DEFINED IN THE PARSE ROUTINE     039850
*                                                                       039860
*         OUTPUT -  X0 = RETURN CODE, 0=TRUE, NOT 0 = FALSE             039870
*                                                                       039880
*         PRESERVED  --, --, --, --, --, --, --, --                     039890
*                    A0, --, --, --, --, --, --, --                     039900
*                        B1, --, --, --, --, B6, --                     039910
*                                                                       039920
          SPACE  1
*CALL COM2
          SPACE  4                                                      039940
*                                                                       039950
* JUMP VECTOR FOR TESTING DISPLAY CODE                                  039960
*                                                                       039970
 TEST6    LETMASK R,(ABCDEINSUXZ)   LEGAL T1 TYPES                      039980
          J      *                                                      039990
          ECHO   1,P=(Z,X,U,S,N,I,E,D,C,B,A)                            040000
          J      TEST6._P                                               040010
*                                                                       040020
          ECHO   4,P=(Z,X,U,S,N,I,E,D,C,B,A)
 TEST6._P  LETMASK R,(ABCDEINSUXZ01)   LEGAL T2 TYPES                   040040
          J      *
          ECHO   1,Q=(1,0,Z,X,U,S,N,I,E,D,C,B,A)                        040050
          J      TEST6._P_Q                                             040060
*                                                                       040070
* THE CODE TO DO THE TESTS FOLLOWS                                      040080
*                                                                       040090
          SPACE  4                                                      040100
*                                                                       040110
* THE FOLLOWING ENTRIES ARE FOR SAME-TYPE STRING COMPARES               040120
*                                                                       040130
*                                                                       040140
 TEST6.AA SB7    TST6.1      A-A                                        040150
          EQ     FXAA                                                   040160
 TST6.1   SB7    TST6.2                                                 040170
          EQ     COMBIT                                                 040180
 TST6.2   SX5    SPACE.A     ASCII SPACE                                040190
          SX2    SIZE.A                                                 040200
          EQ     TST.CS      (COMMON CODE)                              040210
*                                                                       040220
          SPACE  2                                                      040230
*                                                                       040240
 TEST6.CC SB7    TST6.5      C-C                                        040250
          EQ     FXAA                                                   040260
 TST6.5   SB7    TST6.6                                                 040270
          EQ     COMBIT                                                 040280
 TST6.6   SX5    SPACE.C     EBCDIC SPACE                               040290
          SX2    SIZE.C                                                 040300
          EQ     TST.CS                                                 040310
*                                                                       040320
          SPACE  2                                                      040330
*                                                                       040340
 TEST6.XX SB7    TST6.7      X-X                                        040350
          EQ     FXXVXV 
 TST6.7   SB7    TST6.8                                                 040370
          EQ     COMBIT                                                 040380
 TST6.8   SX5    SPACE.X     DC SPACE                                   040390
          SX2    SIZE.X                                                 040400
          EQ     TST.CS                                                 040410
*                                                                       040420
          SPACE  2                                                      040430
*                                                                       040440
 TEST6.X1 SB7    TST6.7      X-S (LIKE XX)                              040450
          EQ     FXXVS
*                                                                       040470
          SPACE  2                                                      040480
*                                                                       040490
 TEST6.BB SB7    TST.BB      B-B                                        040500
          EQ     FXBVBV 
*                                                                       040520
          SPACE  2                                                      040530
*                                                                       040540
* THE FOLLOWING ENTRIES ARE FOR MIXED-TYPE STRING COMPARES              040550
*                                                                       040560
*                                                                       040570
 TEST6.BX SB7    TST.B1      B-X                                        040580
          EQ     FXBVXV 
*                                                                       040600
          SPACE  2                                                      040610
          SPACE  2                                                      040620
*                                                                       040630
 TEST6.B1 SB7    TST.B1      B-STRING                                   040640
          EQ     FXBVS
*                                                                       040660
          SPACE  2                                                      040670
*                                                                       040680
 TEST6.XB SB7    TST.B1      X-B                                        040690
          EQ     FXXVBVR
*                                                                       040710
          SPACE  2                                                      040720
*                                                                       040730
 TEST6.BA SB7    TST6.21     B-A                                        040740
          EQ     FXBVA
 TST6.21  SX6    1           NUMBER OF BITS IN A BIT                    040760
          SX7    ZERO.A                                                 040770
          SB5    TR.BTOA     TRANSLATE INFO ADRESS                      040780
 TST6.22  SA6    T.M1                                                   040790
          SX6    SIZE.A      NUMBER OF BITS IN -A- CHARS                040800
          EQ     TST.SS                                                 040810
*                                                                       040820
          SPACE  2                                                      040830
*                                                                       040840
 TEST6.AB SB7    TST6.21     A-B                                        040850
          EQ     FXABVR 
*                                                                       040870
          SPACE  2                                                      040880
*                                                                       040890
 TEST6.BC SB7    TST6.26     B-C                                        040900
          EQ     FXBVA
 TST6.26  SX6    1           NUMBER OF BITS IN A BIT                    040920
          SX7    ZERO.C                                                 040930
          SB5    TR.BTOC     TRANSLATE INFO ADDRESS                     040940
          EQ     TST6.22                                                040950
*                                                                       040960
          SPACE  2                                                      040970
*                                                                       040980
 TEST6.CB SB7    TST6.22     C-B                                        040990
          EQ     FXABVR 
*                                                                       041010
          SPACE  2                                                      041020
*                                                                       041030
 TEST6.CX SB7    TST6.23     C-X                                        041040
          EQ     FXAXV
 TST6.23  SX6    SIZE.C      NUMBER OF BITS IN A -C- CHARACTER          041060
          SX7    SPACE.X                                                041070
          SB5    TR.CTOX     TRANSLATE INFO ADDRESS                     041080
          EQ     TST.B2 
*                                                                       041100
          SPACE  2                                                      041110
*                                                                       041120
 TEST6.XC SB7    TST6.23     X-C                                        041130
          EQ     FXXVAR 
*                                                                       041150
          SPACE  2                                                      041160
*                                                                       041170
 TEST6.CA SB7    TST6.24     C-A                                        041180
          EQ     FXAA                                                   041190
 TST6.24  SX6    SIZE.C      NUMBER OF BITS IN A -C- CHARACTER          041200
          SX7    SPACE.A                                                041210
          SB5    TR.CTOA     TRANSLATE INFO ADDRESS                     041220
          EQ     TST6.22                                                041230
*                                                                       041240
          SPACE  2                                                      041250
*                                                                       041260
 TEST6.AC SB7    TST6.24     A-C                                        041270
          EQ     FXAAR                                                  041280
*                                                                       041290
          SPACE  2                                                      041300
*                                                                       041310
 TEST6.AX SB7    TST6.25     A-X                                        041320
          EQ     FXAXV
 TST6.25  SX6    SIZE.A      NUMBER OF BITS IN AN -A- CHARACTER         041340
          SX7    SPACE.X                                                041350
          SB5    TR.ATOX     TRANSLATE INFO ADDRESS                     041360
          EQ     TST.B2 
*                                                                       041380
          SPACE  2                                                      041390
*                                                                       041400
 TEST6.XA SB7    TST6.25     X-A                                        041410
          EQ     FXXVAR 
*                                                                       041430
          SPACE  2                                                      041440
*                                                                       041450
 TEST6.C1 SB7    TST6.23     C-STRING                                   041460
          EQ     FXAS                                                   041470
*                                                                       041480
          SPACE  2                                                      041490
*                                                                       041500
 TEST6.A1  SB7   TST6.25     A-STRING                                   041510
          EQ     FXAS                                                   041520
*                                                                       041530
          SPACE  4                                                      041540
*                                                                       041550
*  THE FOLLOWING SECTIONS HANDLE NUMERIC COMPARISONS.  ARRAYS T.NUM(3)  041560
*   AND T.NUM1(3) ARE USED TO HOLD THE TRIPLE-PRECISION QUANTITIES TO   041570
*   BE COMPARED.  NOTE THAT T.NUM MAY ALREADY BE HOLDING A VALUE IF     041580
*   A NUMERIC STRING WAS USED.                                          041590
*                                                                       041600
*   THE COMPARISON IS FOR (T.NUM -REL- T.NUM1).                         041610
*                                                                       041620
*         TEMPORARY CELLS USED..                                        041630
*                                                                       041640
*                T.SAVEB5    TEMPORARY SPOT TO HOLD RETURN ADDRESS      041650
*                T.TEMP                                                 041660
*                                                                       041670
          SPACE  2                                                      041680
*                                                                       041690
* THE FIRST SECTIONS BELOW ARE GENERAL ROUTINES, CORRESPONDING TO       041700
*  ROW AND COLUMN ENTRIES OF THE TEST-MATRIX.                           041710
*                                                                       041720
          SPACE  2                                                      041730
*                                                                       041740
 TST6..0  EQU    TST..0      NUMERIC LITERAL                            041750
*                                                                       041760
          SPACE  2                                                      041770
*                                                                       041780
 TST6..1  EQU    TST..1      STRING LITERAL                             041790
*                                                                       041800
          SPACE  2                                                      041810
*                                                                       041820
 .A       ECHO   ,Q=(X,A,C,S,N,Z,U,I,D,B)                               041830
 TST6..Q  SB4    CON6.Q.                                                041840
          EQ     TST..$                                                 041850
          SPACE  2                                                      041860
 .A       ENDD                                                          041870
*                                                                       041880
 .B       ECHO   ,Q=(X,A,C,S,N,Z,U,I,D,B)                               041890
 TST6.Q.  SB5    TST.COM                                                041900
          EQ     CON6.Q.                                                041910
 .B       ENDD                                                          041920
*                                                                       041930
          SPACE  4                                                      041940
*                                                                       041950
* GENERATE CODE FOR TEST POINTS                                         041960
*                                                                       041970
*                                                                       041980
 .A       ECHO   ,P=(Z,U,S,N,I,D),R=(X,W,X,X,W,D)                       041990
 .B       ECHO   ,Q=(1,X,C,B,A),T=(S,XV,A,B,A)
 XXX      SYMBOL                                                        042010
 TEST6.P_Q  SB7  "XXX"       P-Q                                        042020
          EQ     FX_R_T                                                 042030
 "XXX"    SB5    TST6.P.                                                042040
          EQ     TST6..Q                                                042050
          SPACE  2                                                      042060
 .B       ENDD                                                          042070
 .A       ENDD                                                          042080
*                                                                       042090
 .A       ECHO   ,P=(Z,X,U,S,N,I,D,C,B,A),R=(X,XV,W,X,X,W,D,A,B,A)
 .B       ECHO   ,Q=(0,Z,U,S,N,I,D),T=(( ),X,W,X,X,W,D)                 042110
 XXX      SYMBOL                                                        042120
 TEST6.P_Q  SB7  "XXX"       P-Q                                        042130
          EQ     FX_R_T                                                 042140
 "XXX"    SB5    TST6.P.                                                042150
          EQ     TST6..Q                                                042160
          SPACE  2                                                      042170
 .B       ENDD                                                          042180
 .A       ENDD                                                          042190
*                                                                       042200
*  COVER ALL TYPE -E- CONVERSIONS AS TYPE -U-                           042210
*                                                                       042220
 ..1      ECHO   ,P=(Z,X,U,S,N,I,D,C,B,A)                               042230
 TEST6._P_E  EQU  TEST6._P_U                                            042240
 TEST6.E_P   EQU  TEST6.U_P                                             042250
 ..1      ENDD                                                          042260
*                                                                       042270
          ECHO   1,P=(1,0,E)                                            042280
 TEST6.E_P   EQU  TEST6.U_P                                             042290
 FXPTR    TITLE  FIXPTR -- SUBROUTINES TO FIX UP TEST POINTERS (6-BIT)  052200
*                                                                       052210
**** FIXPTR - A SERIES OF ROUTINES TO FIX UP POINTERS FOR TESTING FIELDS
*         IN 6-BIT CODE                                                 052230
*                                                                       052240
          SPACE  1,21                                                   052260
*                                                                       052270
*     THE FOLLOWING ROUTINES ARE USED TO SET AND CHECK THE POINTERS     052280
*      FOR TESTING.  THEY USE THE SINGLE POINTER PICKUP ROUTINES        052290
*      DESCRIBED LATER.                                                 052300
*                                                                       052310
*      ALL OF THESE ROUTINES PUT POINTER 1 IN T.T1 AND POINTER 2 IN T.T2052320
*      UNLESS THE NAME IS SUFFIXED BY -R-, IN WHICH CASE THE POINTERS   052330
*      ARE REVERSED.                                                    052340
*                                                                       052350
*      ENTER WITH   B7 = RETURN ADDRESS                                 052360
*                                                                       052370
*      THE ROUTINES ARE NAMED.. FX-A-B                                  052380
*         WHERE A AND B ARE ONE OF    W  -60 BIT WORD                   052390
*                                     D  -120 BIT DOUBLE WORD           052400
*                                     B  -BIT STRING                    052410
*                                     BV -BIT STRING (VARIABLE LENGTH)
*                                     X  -6-BIT CHARACTER STRING        052420
*                                     XV -6-BIT CHARACTER STRING
*                                         (VARIABLE LENGTH) 
*                                     A  -12-BIT CHARACTER STRING       052430
*                                         (VARIABLE LENGTH) 
*                                     S  -THE LITERAL STRING            052440
*                                  BLANK -THE NUMERIC LITERAL           052450
*                                                                       052460
****
          SPACE  4                                                      052480
 FX.      SA7    T.T2 
          JP     B7 
* 
 FX.R     SA3    T.COND      REVERSE ORDER TEST 
          LX4    X3,B1
          BX4    X4-X3       XOR BITS 1 AND 2 OF CONDITION FLAG 
          LX4    59-2 
          PL     X4,FX.RX    EQUAL OR NOT EQUAL, NO CHANGE
          SX6    6B 
          BX6    X3-X6       FLIP SENSE OF INEQUALITY 
          SA6    A3 
 FX.RX    SA7    T.T1 
          JP     B7 
          SPACE  3
 .B       ECHO   ,Q=(W,D,B,BV,X,XV,A,S) 
          SPACE  2                                                      052550
 FX._Q      SA7    T.T1                                                 052560
          SB3    FX.                                                    052570
          EQ     FXP2M_Q                                                052580
 .A       ECHO   ,P=(W,D,B,BV,X,XV,A) 
          SPACE  1                                                      052600
 FX_P_Q      SB3    FX._Q                                               052610
          EQ     FXP1M_P                                                052620
 .A       ENDD                                                          052630
 .B       ENDD                                                          052640
          SPACE  1                                                      052650
 .B       ECHO   ,Q=(BV,A)
          SPACE  2                                                      052670
 FX._Q_R    SA7    T.T2                                                 052680
          SB3    FX.R                                                   052690
          EQ     FXP2M_Q                                                052700
 .A       ECHO   ,P=(XV,A)
          SPACE  1                                                      052720
 FX_P_Q_R    SB3    FX._Q_R                                             052730
          EQ     FXP1M_P                                                052740
 .A       ENDD                                                          052750
 .B       ENDD                                                          052760
*                                                                       052770
* THE FOLLOWING ARE USED FOR -0 TYPES (NUMERIC LITERAL)                 052780
*                                                                       052790
.B        ECHO   ,Q=(W,D,B,X,XV,A)
          SPACE  2                                                      052810
 FX_Q      SB3    FX.RX 
          EQ     FXP1M_Q                                                052830
 .B       ENDD                                                          052840
*                                                                       052850
          SPACE  4,28                                                   052860
**    THE FOLLOWING ROUTINES PICK UP A POINTER, PUT IT IN X7, AND 
*      CHECK THE M-VALUE FOR LEGALITY..                                 052890
*                                                                       052900
*                   FXP1MW         -PTR 1, 60 BIT WORD                  052910
*                   FXP2MW         -PTR 2, 60 BIT WORD                  052920
*                                                                       052930
*                   FXP1MD         -PTR 1, 120 BIT DOUBLE WORD          052940
*                   FXP2MD         -PTR 2, 120 BIT DOUBLE WORD          052950
*                                                                       052960
*                   FXP1MB         -PTR 1, BIT STRING                   052970
*                   FXP2MB         -PTR 2, BIT STRING                   052980
* 
*                   FXP1MBV        -PTR 1, BIT STRING (VAR. LENGTH) 
*                   FXP2MBV        -PTR 2, BIT STRING (VAR. LENGTH) 
*                                                                       052990
*                   FXP1MX         -PTR 1, 6-BIT CHARACTER STRING       053000
*                   FXP2MX         -PTR 2, 6-BIT CHARACTER STRING       053010
*                                                                       053020
*                   FXP1MXV        -PTR 1, 6-BIT CHARACTER STRING (VAR) 
*                   FXP2MXV        -PTR 2, 6-BIT CHARACTER STRING (VAR) 
* 
*                   FXP1MA         -PTR 1, 12-BIT CHARACTER STRING (VAR)
*                   FXP2MA         -PTR 2, 12-BIT CHARACTER STRING (VAR)
*                                                                       053050
*                   FXP2MS         SPECIAL, LITERAL CHARACTER STRING    053060
*                                                                       053070
*      ENTER WITH..                                                     053080
*                                                                       053090
*         B3   =  RETURN ADDRESS                                        053100
*                                                                       053110
*      THESE ROUTINES CALL FXP1 AND FXP2.                               053120
*                                                                       053130
          SPACE  4                                                      053150
*                                                                       053160
 FXP1MW   SB5    FXPM.2      PTR 1, 60 BIT WORD                         053170
 FXPM.1   SB4    B0                                                     053180
          EQ     FXP1                                                   053190
 FXPM.2   SA2    T.M1                                                   053200
 FXPM.3   SX3    60D                                                    053210
 FXPM.4   PL     X2,FXPM.E1  ERROR, M SPECIFICATION ILLEGAL             053220
 FXPM.5   BX6    X7                                                     053230
          AX6    36                                                     053240
          IX6    X6-X3                                                  053250
          NG     X6,FXPM.E2  ERROR, FIELD EXTENDS PAST END OF RECORD    053260
 FXPM.5A  MX0    24 
          LX3    36          ALIGN NEW LENGTH 
          BX6    -X0*X7      MAKE HOLE FOR LENGTH 
          IX7    X6+X3       UPDATED PTR WORD 
 FXPM.5B  BX1    X7          PTR
          JP     B3                                                     053270
*                                                                       053280
 FXP2MW   SB5    FXPM.7      PTR 2, 60 BIT WORD                         053290
 FXPM.6   SB4    B0                                                     053300
          EQ     FXP2                                                   053310
 FXPM.7   SA2    T.M2                                                   053320
          EQ     FXPM.3                                                 053330
*                                                                       053340
 FXP1MD   SB5    FXPM.8      PTR 1, 120 BIT DOUBLE WORD                 053350
          EQ     FXPM.1                                                 053360
 FXPM.8   SA2    T.M1                                                   053370
 FXPM.9   SX3    120D                                                   053380
          EQ     FXPM.4                                                 053390
*                                                                       053400
 FXP2MD   SB5    FXPM.10     PTR 2, 120 BIT DOUBLE WORD                 053410
          EQ     FXPM.6                                                 053420
 FXPM.10  SA2    T.M2                                                   053430
          EQ     FXPM.9                                                 053440
*                                                                       053450
 FXP1MB   SB5    FXPM.11     PTR 1, BIT FIELD                           053460
          SB4    B1                                                     053470
          EQ     FXP1                                                   053480
 FXPM.11  SA3    T.M1                                                   053490
 FXPM.12  PL     X3,FXPM.5                                              053500
          SX3    1           USE 1 BIT IF UNSPECIFIED                   053510
          EQ     FXPM.5                                                 053520
*                                                                       053530
 FXP2MB   SB5    FXPM.13     PTR 2, BIT FIELD                           053540
          SB4    B1                                                     053550
          EQ     FXP2                                                   053560
 FXPM.13  SA3    T.M2                                                   053570
          EQ     FXPM.12                                                053580
* 
 FXP1MBV  SB5    FXPM.13A    PTR 1, BIT FIELD (VARIABLE LENGTH) 
          SB4    1
          EQ     FXP1 
 FXPM.13A SA3    T.M1 
 FXPM.13B PL     X3,FXPM.13C
          SX3    1           USE 1 BIT IF UNSPECIFIED 
 FXPM.13C BX6    X7 
          AX6    36 
          IX6    X6-X3
          PL     X6,FXPM.5A  USE SPECIFIED LENGTH 
          EQ     FXPM.5B     USE REST OF RECORD 
* 
 FXP2MBV  SB5    FXPM.13D    PTR 2, BIT FIELD (VARIABLE LENGTH) 
          SB4    1
          EQ     FXP2 
 FXPM.13D SA3    T.M2 
          EQ     FXPM.13B 
*                                                                       053590
 FXP1MX   SB5    FXPM.14     PTR 1, 6-BIT CHAR FIELD                    053600
          EQ     FXPM.1                                                 053610
 FXPM.14  SA2    T.M1                                                   053620
 FXPM.15  PL     X2,FXPM.16                                             053630
          SX2    1           USE 1 CHAR IF UNSPECIFIED                  053640
 FXPM.16  IX3    X2+X2                                                  053650
          LX2    2                                                      053660
          IX3    X2+X3                                                  053670
          LX3    X3,B4                                                  053680
          EQ     FXPM.5                                                 053690
*                                                                       053700
 FXP2MX   SB5    FXPM.17     PTR 2, 6-BIT CHAR FIELD                    053710
          EQ     FXPM.6                                                 053720
 FXPM.17  SA2    T.M2                                                   053730
          EQ     FXPM.15                                                053740
*                                                                       053750
 FXP1MXV  SB5    FXPM.17A    PTR 1, 6-BIT CHAR FIELD (VAR.) 
          EQ     FXPM.1 
 FXPM.17A SA2    T.M1 
 FXPM.17B PL     X2,FXPM.17C
          SX2    1           USE 1 CHAR IF UNSPECIFIED
 FXPM.17C IX3    X2+X2       *2 
          LX2    2           *4 
          BX6    X7 
          IX3    X2+X3       *6 
          AX6    36 
          LX3    X3,B4       *6 OR *12 = BITS 
          IX6    X6-X3
          PL     X6,FXPM.5A  USE SPECIFIED LENGTH 
          IX6    X6+X3       BITS LEFT IN RECORD
          IX2    X6/X3,6     NUMBER OF 6-BIT CHARACTERS IN RECORD 
          AX2    X2,B4       NUMBER OF (6 OR 12 BIT) CHARACTERS 
          EQ     FXPM.17C 
* 
 FXP2MXV  SB5    FXPM.17D    PTR 2, 6-BIT CHAR FIELD (VAR)
          EQ     FXPM.6 
 FXPM.17D SA2    T.M2 
          EQ     FXPM.17B 
* 
 FXP1MA   SB5    FXPM.18     PTR 1, 12-BIT CHAR FIELD (VAR.)
          EQ     FXPM.1                                                 053770
 FXPM.18  SB4    B1                                                     053780
          EQ     FXPM.17A 
*                                                                       053800
 FXP2MA   SB5    FXPM.19     PTR 2, 12-BIT CHAR FIELD (VAR.)
          EQ     FXPM.6                                                 053820
 FXPM.19  SB4    B1                                                     053830
          EQ     FXPM.17D 
*                                                                       053850
 FXP2MS   SA2    T.I2        SET UP POINTER TO LITERAL STRING           053860
          SX7    T.STRING                                               053870
          LX2    36                                                     053880
          BX7    X2+X7                                                  053890
          BX1    X7 
          JP     B3                                                     053900
*                                                                       053910
          SPACE  2                                                      053920
**    ERROR ACTIONS 
*                                                                       053950
 FXPM.E1  SA2    FXPM.M1     ERROR, M SPECIFICATION ILLEGAL             053960
          EQ     ERR.CON                                                053970
 FXPM.E2  SA2    FXPM.M2     ERROR, FIELD EXTENDS PAST END OF RECORD    053980
          EQ     ERR.CON                                                053990
****
*                                                                       054000
 FXPM.M1  VFD    12/0,18/E.TST,12/0,18/*+1
          DATA    C/M SPECIFICATION ILLEGAL FOR DATA TYPE/              054020
 FXPM.M2  VFD    12/0,18/E.TST,12/0,18/*+1
          DATA    C/TEST FIELD EXTENDS PAST END OF RECORD/              054040
****
          SPACE  4,17                                                   054050
**    FXPTR IS THE WORKER-BEE IN THIS SET OF ROUTINES.  IT EXPECTS
*                                                                       054080
*         X2   =  REL WORD                                              054090
*         X3   =  I   WORD                                              054100
*         A4   =  ADDRESS OF W WORD                                     054110
*         B5   =  RETURN ADDRESS                                        054120
*                                                                       054130
*         THE RESULTANT POINTER WORD IS LEFT IN X7 UPON EXIT.           054140
*                                                                       054150
* FXP1, FXP2  ARE USED TO CALL FXPTR WITH THE PROPER POINTERS (1 OR 2)  054160
*             ENTER WITH                                                054170
*                                                                       054180
*         B4   =  CHAR/BIT FLAG. (0=CHAR,  1=BIT)                       054190
*         B5   =  RETURN ADDRESS, RETURN IS DIRECTLY FROM FXPTR         054200
*                                                                       054210
          SPACE  2                                                      054230
 FXPTR    IX0    X3+X3       *2                                         054240
          LX3    2           *4                                         054250
          IX0    X0+X3       *6 = BITS                                  054260
          SA5    T.RECORD                                               054270
          PL     X2,FXPT.1   JP IF REL                                  054280
          SX3    6           ABS, OFFSET BY 6 BITS                      054290
          IX0    X0-X3                                                  054300
          EQ     FXPT.A                                                 054310
 FXPT.1   LX2    59          REL, FIX UP SIGN OF OFFSET                 054320
          SA3    T.INREC     CURRENT POINTER                            054330
          AX2    59                                                     054340
          SX7    X5                                                     054350
          BX0    X0-X2       SIGNED OFFSET IN X0                        054360
          SX6    X3                                                     054370
          AX5    18                                                     054380
          IX7    X6-X7       NUMBER OF WORDS TO CURRENT POSITION        054390
          AX3    18                                                     054400
          SX5    X5          USED BITS FROM START                       054410
          BX6    X7                                                     054420
          SX4    X3          USED BITS AT CURRENT POSITION              054430
          LX6    6           WORDS * 64                                 054440
          IX4    X4-X5       EXTRA BIT OFFSET IN POINTER DIFFERENCE     054450
          LX7    2           WORDS * 4                                  054460
          IX0    X0+X4                                                  054470
          SA5    A5                                                     054480
          SX2    5                                                      054490
          IX0    X0+X6       BIT OFFSET TO DESIRED POSITION IN X0       054500
          IX0    X0-X7                                                  054510
          IX0    X0+X2                                                  054520
          IX0    X0/X2,6     MAKE IT A MULTIPLE OF 6                    054530
          IX2    X0+X0                                                  054540
          LX0    2                                                      054550
          IX0    X2+X0       NOW IT IS *6                               054560
 FXPT.A   SA4    A4          PICK UP W OFFSET                           054570
          SX7    X5          BASE WORD                                  054580
          AX5    18                                                     054590
          ZR     X4,FXPT.A1 
          SX4    X4-1 
 FXPT.A1  BSS    0
          IX0    X0+X4       FINAL OFFSET INTO RECORD                   054600
          SX6    X5          USED BITS IN FIRST WORD                    054610
          AX5    18                                                     054620
          NG     X0,FXPT.E1  ERROR, OFFSET IS NEGATIVE                  054630
          IX5    X0-X5                                                  054640
          IX0    X0+X6       MAKE OFFSET RELATIVE TO A WORD BOUNDARY    054650
          PL     X5,FXPT.B   FIELD PAST RIGHT END OF RECORD 
          BX2    X0                                                     054670
          BX5    -X5         REMAINING BITS AFTER ADJUSTMENT            054680
          IX2    X2/X3,60    GET NUMBER OF WORDS OFFSET                 054690
          IX7    X7+X2       ADD TO BASE WORD                           054700
          LX5    36                                                     054710
          BX3    X2                                                     054720
          LX2    6           *64                                        054730
          IX0    X0-X2                                                  054740
          LX3    2           *4                                         054750
          IX0    X0+X3       GIVES USED BITS                            054760
          BX7    X7+X5                                                  054770
          LX0    18                                                     054780
          BX7    X7+X0       POINTER WORD NOW IN X7                     054790
          JP     B5          EXIT                                       054800
* 
 FXPT.B   MX7    0           NULL FIELD, PAST RECORD END
          JP     B3 
          SPACE  2
**    ERROR ACTIONS 
*                                                                       054830
 FXPT.E1  SA2    FXPT.M1     ERROR, POSITION OFF LEFT END               054840
          EQ     ERR.CON                                                054850
****
*                                                                       054880
 FXPT.M1  VFD    12/0,18/E.TST,12/0,18/*+1
          DATA    C/TEST FIELD NOT IN RECORD, ON LEFT/                  054900
****
          SPACE  4                                                      054940
*                                                                       054950
 FXP1     SA4    T.W1        PROCESS POINTER 1                          054960
          SA2    T.REL1                                                 054970
          SA3    T.I1                                                   054980
          NZ     X3,FXPTNZ
          SX6    B0 
          BX3    X6                FORCE TO RELATIVE +0 
          SA6    T.REL1 
          BX2    X3 
          SA6    T.I1 
 FXPTNZ   BSS    0
          ZR     X4,FXPTR                                               054990
          NZ     B4,FXPTR                                               055000
          EQ     FXP.E1      ERROR, W NOT ZERO                          055010
*                                                                       055020
 FXP2     SA4    T.W2        PROCESS POINTER 2                          055030
          SA2    T.REL2                                                 055040
          SA3    T.I2 
          NZ     X3,FXPTNZ2 
          SX6    B0 
          BX3    X6 
          SA6    T.REL2 
          BX2    X3 
          SA6    T.I2 
 FXPTNZ2  BSS    0
          ZR     X4,FXPTR                                               055060
          NZ     B4,FXPTR                                               055070
          EQ     FXP.E2      ERROR, W NOT ZERO                          055080
*                                                                       055090
* ERROR ACTIONS                                                         055100
*                                                                       055110
 FXP.E1   SA2    FXP.M1                                                 055120
          EQ     E.CON                                                  055130
 FXP.E2   EQU    FXP.E1                                                 055140
****
*                                                                       055150
 FXP.M1   VFD    12/0,18/E.TST,12/0,18/*+1
          DATA    C/BIT SPECIFICATION ILLEGAL FOR NON BIT FIELD/        055170
****
          END 
