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