Common COMKFLD

Library Member Format: MODIFY

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.comkfld +++|          CTEXT  COMKFLD - FIELD MARCRO.
00002  M00S00002.comkfld +++|          SPACE  4
00003  M00S00003.comkfld +++|          BASE   D
Line S00004 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00004  M01S00004.281l803 ---|*         COMMENT COPYRIGHT CONTROL DATA CORP.  1976.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00005  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00006  M00S00005.comkfld +++|***       FLD - DEFINE FIELDS.
00007  M00S00006.comkfld +++|*         G. W. PROPP.  76/05/01.
00008  M00S00007.comkfld +++|*         L. E. LOVETT.      80/04/01.
00009  M00S00008.comkfld +++| FLD      SPACE  4,10
00010  M00S00009.comkfld +++|*         FLD - DEFINE FIELDS.
00011  M00S00010.comkfld +++|*         TAGS ARE GENERATED TO GIVE THE WORD LOCATION, BIT
00012  M00S00011.comkfld +++|*         LOCATION, AND NUMBER OF BITS IN FIELD.
00013  M00S00012.comkfld +++|*
00014  M00S00013.comkfld +++|*         ENTRY  TAG FIELD WP,LB,RP
00015  M00S00014.comkfld +++|*         TAG =  NAME OF FIELD (1-6 LEGAL COMPASS CHARACTERS)
00016  M00S00015.comkfld +++|*             =  *, USE CURRENT VALUE OF PSEUDO ORG COUNTER ORLOC1$
00017  M00S00016.comkfld +++|*         LB  =  LEFT-MOST BIT POSITION WITHIN A WORD (BIT 59 BEING
00018  M00S00017.comkfld +++|*                SIGN BIT).
00019  M00S00018.comkfld +++|*         RB  =  RIGHT-MOST BIT POSITION WITHIN A WORD.
00020  M00S00019.comkfld +++|*
00021  M00S00020.comkfld +++|*         EXIT   TAGW = WORD LOCATION OF FIELD.
00022  M00S00021.comkfld +++|*                TAGS = LEFT BIT POSITION OF FIELD.
00023  M00S00022.comkfld +++|*                TAGN = NUMBER OF BITS IN FIELD.
00024  M00S00023.comkfld +++|
00025  M00S00024.comkfld +++|
00026  M00S00025.comkfld +++|          MACRO  FIELD,TAG,WP,LB,RB
00027  M00S00026.comkfld +++|          IFC    NE,/WP//,4
00028  M00S00027.comkfld +++|          IFC    EQ,/WP/*/,2
00029  M00S00028.comkfld +++| _TAG_W   EQU    ORLOC1$
00030  M00S00029.comkfld +++|          SKIP   1
00031  M00S00030.comkfld +++| _TAG_W   EQU    WP
00032  M00S00031.comkfld +++| _TAG_S   EQU    LB
00033  M00S00032.comkfld +++| _TAG_N   EQU    LB-RB+1
00034  M00S00033.comkfld +++|          ENDM
00035  M00S00034.comkfld +++|          SPACE  4,30
00036  M00S00035.comkfld +++|**        PUTFLD - PUT DATA INTO FIELD DEFINED BY *FIELD* MACRO.
00037  M00S00036.comkfld +++|*         THE DATA TO BE STORED MUST BE CONTAINED,RIGHT JUSTIFIED,
00038  M00S00037.comkfld +++|*         IN X REGISTER *Y*.
00039  M00S00038.comkfld +++|*
00040  M00S00039.comkfld +++|*         ENTRY  PUTFLD  Y,RN,TAG
00041  M00S00040.comkfld +++|*         Y     = NUMERIC CHARACTER FOR X REGISTER CONTAINING
00042  M00S00041.comkfld +++|*                RIGHT JUSTIFIED DATA TO BE STORED INTO FIELD *TAG*.
00043  M00S00042.comkfld +++|*                2 THRU 7 FOR X2 THRU X7 MAY BE SPECIFIED.
00044  M00S00043.comkfld +++|*         RN   = REGISTER CONTAINING FIRST WORD ADDRESS OF THE TABLE
00045  M00S00044.comkfld +++|*                WHICH CONTAINS THE SPECIFIED FIELD *TAG*.
00046  M00S00045.comkfld +++|*                REGISTER B1 - B7, A2 - A7, X1 - X6.
00047  M00S00046.comkfld +++|*                X*Y*,X1,A1,X7 MAY NOT BE USED.
00048  M00S00047.comkfld +++|*         TAG  = NAME OF FIELD SPECIFIED FOR *FIELD* MACRO.
00049  M00S00048.comkfld +++|*
00050  M00S00049.comkfld +++|*         EXIT   THE CONTENTS OF X REGISTER *Y* IS STORED INTO THE
00051  M00S00050.comkfld +++|*                FIELD *TAG* AT LOCATION *RN* + *TAGW*.
00052  M00S00051.comkfld +++|*                ALL OTHER FIELDS IN THE SAME WORD ARE UNCHANGED.
00053  M00S00052.comkfld +++|*                ON COMPLETION OF *PUTFLD*, THE RIGHT JUSTIFIED
00054  M00S00053.comkfld +++|*                FIELD IN X REGISTER *Y* IS INTACT .
00055  M00S00054.comkfld +++|*                REGISTERS A1, X1, A7 AND X7 ARE
00056  M00S00055.comkfld +++|*                CHANGED BY *PUTFLD*.
00057  M00S00056.comkfld +++|*                NOTE - *TAGW* IS THE TABLE WORD INDEX AS GENERATED
00058  M00S00057.comkfld +++|*                       BY THE *FIELD* MACRO.
00059  M00S00058.comkfld +++|*
00060  M00S00059.comkfld +++|*         USES   X*Y*, X1, X7.
00061  M00S00060.comkfld +++|*                A1, A7.
00062  M00S00061.comkfld +++|
00063  M00S00062.comkfld +++|
00064  M00S00063.comkfld +++|          PURGMAC PUTFLD
00065  M00S00064.comkfld +++|*
00066  M00S00065.comkfld +++| PUTFLD   MACRO  Y,RN,TAG
00067  M00S00066.comkfld +++|          IFC    EQ,/Y/1/
00068  M00S00067.comkfld +++|          ERR - DATA AND TEMP LOAD REGISTERS SAME.
00069  M00S00068.comkfld +++|          ENDIF
00070  M00S00069.comkfld +++|          IFC    EQ,/Y/7/
00071  M00S00070.comkfld +++|          ERR - DATA AND TEMP STORE/MASK REGISTERS SAME.
00072  M00S00071.comkfld +++|          ENDIF
00073  M00S00072.comkfld +++|          IFC    EQ,/XY/RN/
00074  M00S00073.comkfld +++|          ERR - DATA AND BASE ADDR. REGISTERS SAME.
00075  M00S00074.comkfld +++|          ENDIF
00076  M00S00075.comkfld +++|          IFC    EQ,/RN/X1/
00077  M00S00076.comkfld +++|          ERR - BASE ADDR. AND TEMP LOAD REGISTERS SAME.
00078  M00S00077.comkfld +++|          ENDIF
00079  M00S00078.comkfld +++|          IFC    EQ,/RN/A1/
00080  M00S00079.comkfld +++|          ERR - BASE ADDR. AND TEMP LOAD REGISTERS SAME.
00081  M00S00080.comkfld +++|          ENDIF
00082  M00S00081.comkfld +++|          IFC    EQ,/RN/X7/
00083  M00S00082.comkfld +++|          ERR - BASE ADDR. AND TEMP STORE/MASK REGISTERS SAME.
00084  M00S00083.comkfld +++|          ENDIF
00085  M00S00084.comkfld +++|          MX7    -_TAG_N
00086  M00S00085.comkfld +++|          BX_Y    -X7*X_Y
00087  M00S00086.comkfld +++|          SA1    RN+_TAG_W
00088  M00S00087.comkfld +++|          LX1    _TAG_N-1-_TAG_S
00089  M00S00088.comkfld +++|          BX1    X7*X1
00090  M00S00089.comkfld +++|          BX7    X1+X_Y
00091  M00S00090.comkfld +++|          LX7    _TAG_S-_TAG_N+1
00092  M00S00091.comkfld +++|          SA7    A1
00093  M00S00092.comkfld +++| PUTFLD   ENDM
00094  M00S00093.comkfld +++|          SPACE  4,25
00095  M00S00094.comkfld +++|**        GETFLD - GET DATA FROM FIELD DEFINED BY *FIELD* MACRO.
00096  M00S00095.comkfld +++|*         THE SPECIFIED DATA FIELD IS PLACED INTO X REGISTER *Y*
00097  M00S00096.comkfld +++|*         RIGHT JUSTIFIED WITH ZERO FILL.
00098  M00S00097.comkfld +++|*
00099  M00S00098.comkfld +++|*         ENTRY  GETFLD  Y,RN,TAG
00100  M00S00099.comkfld +++|*         Y    = NUMERIC CHARACTER FOR X REGISTER TO RECEIVE THE
00101  M00S00100.comkfld +++|*                RIGHT JUSTIFIED DATA FROM FIELD *TAG*.
00102  M00S00101.comkfld +++|*                1 THRU 5 FOR X1 THRU X5 MAY BE SPECIFIED.
00103  M00S00102.comkfld +++|*         RN   = REGISTER CONTAINING FIRST WORD ADDRESS OF THE TABLE
00104  M00S00103.comkfld +++|*                WHICH CONTAINS THE SPECIFIED FIELD *TAG*.
00105  M00S00104.comkfld +++|*                REGISTER B1 - B7, X1 - X6, A1 - A7.
00106  M00S00105.comkfld +++|*         TAG  = NAME OF FIELD SPECIFEID FOR *FIELD* MACRO.
00107  M00S00106.comkfld +++|*
00108  M00S00107.comkfld +++|*         EXIT   X REGISTER *Y* CONTAINS THE CONTENTS OF FIELD
00109  M00S00108.comkfld +++|*                *TAG* AS OBTAINED FROM LOCATION *RN* + *TAGW*.
00110  M00S00109.comkfld +++|*                THE DATA IS RIGHT JUSTIFIED AND ZERO FILLED.
00111  M00S00110.comkfld +++|*                REGISTERS X7 AND A*Y* ARE CHANGED
00112  M00S00111.comkfld +++|*                NOTE - *TAGW* IS THE TABLE WORD INDEX AS
00113  M00S00112.comkfld +++|*                       GENERATED BY THE *FIELD* MACRO.
00114  M00S00113.comkfld +++|*
00115  M00S00114.comkfld +++|*         USES   X*Y*,X7.
00116  M00S00115.comkfld +++|*                A*Y*.
00117  M00S00116.comkfld +++|
00118  M00S00117.comkfld +++|
00119  M00S00118.comkfld +++|          PURGMAC GETFLD
00120  M00S00119.comkfld +++|*
00121  M00S00120.comkfld +++| GETFLD   MACRO  Y,RN,TAG
00122  M00S00121.comkfld +++|          IFC    GE,/Y/6/
00123  M00S00122.comkfld +++|          ERR - LOAD REGISTER .GT. 5.
00124  M00S00123.comkfld +++|          ENDIF
00125  M00S00124.comkfld +++|          IFC    EQ,/Y/0/
00126  M00S00125.comkfld +++|          ERR - LOAD REGISTER ZERO.
00127  M00S00126.comkfld +++|          ENDIF
00128  M00S00127.comkfld +++|          SA_Y    RN+_TAG_W
00129  M00S00128.comkfld +++|          MX7    -_TAG_N
00130  M00S00129.comkfld +++|          LX_Y    _TAG_N-1-_TAG_S
00131  M00S00130.comkfld +++|          BX_Y    -X7*X_Y
00132  M00S00131.comkfld +++| GETFLD   ENDM
00133  M00S00132.comkfld +++|          BASE   *
00134  M00S00133.comkfld +++|          ENDX