cdc:nos2.source:nam5871:ssbebf
Table of Contents
SSBEBF
Table Of Contents
- [00002] PROC SSBEBF (TABLE, ORD, BIT, LEN, RESULT)
- [00003] SSBEBF - EXTRACT BITFIELD FROM A TABLE.
- [00007] EXTRACT BITFIELD FROM A TABLE.
Source Code
- SSBEBF.txt
- *DECK SSBEBF
- PROC SSBEBF (TABLE, ORD, BIT, LEN, RESULT);
- # TITLE SSBEBF - EXTRACT BITFIELD FROM A TABLE. #
- BEGIN # SSBEBF #
- #
- ** SSBEBF - EXTRACT BITFIELD FROM A TABLE.
- *
- * D. G. DEPEW. 81/10/08.
- *
- * PROC SSBEBF (TABLE, ORD, BIT, LEN, RESULT)
- *
- * ENTRY TABLE = ARRAY FROM WHICH BITFIELD IS TO BE EXTRACTED.
- * ORD = WORD ORDINAL WITHIN TABLE WHERE BITFIELD STARTS.
- * BIT = STARTING BIT POSITION WITHIN THE WORD (SYMPLESE).
- * LEN = NUMBER OF BITS TO EXTRACT (RANGE: 1 TO 60).
- *
- * EXIT RESULT = RESULT OF THE EXTRACTION, CONCATENATED (WHEN A
- * WORD BOUNDARY IS CROSSED) AND RIGHT JUSTIFIED
- * WITH LEADING ZEROES.
- * TABLE = UNCHANGED.
- * ORD = INCREMENTED BY 1 IF THE BITFIELD SPANS A WORD
- * BOUNDARY.
- * BIT = FIRST BIT POSITION AFTER THE EXTRACTED BITFIELD.
- * LEN = UNCHANGED.
- *
- * NOTES RESULT IS UNPREDICTABLE IF LEN IS OUT OF RANGE.
- * IF THE SPECIFIED BITFIELD SPANS A WORD BOUNDARY, THE
- * OVERFLOW BITS ARE TAKEN FROM THE NEXT CONSECUTIVE CM
- * WORD. THAT IS, NO CONSIDERATION IS MADE FOR SYMPL
- * PARALLEL ARRAYS OR FOR ARRAYS WITH AN ENTRY SIZE
- * GREATER THAN ONE.
- #
- ARRAY TABLE [00:00] S(1); #TABLE CONTAINING BITFIELD #
- ITEM T$WD U(00,00,60);
- ITEM ORD; #WORD WITHIN TABLE #
- ITEM BIT; #STARTING BIT WITHIN WORD #
- ITEM LEN; #LENGTH OF BITFIELD #
- ITEM RESULT U; #WORD THAT RECEIVES BITFIELD #
- ITEM THIS; #NUM OF BITS TO EXTRACT FM SPECIFIED WORD #
- ITEM NEXT; #NUM OF BITS TO EXTRACT FM FOLLOWING WORD #
- IF (BIT + LEN) GR 60
- THEN # WORD BOUNDARY IS SPANNED #
- BEGIN
- THIS = 60 - BIT;
- NEXT = BIT + LEN - 60;
- RESULT = (B<BIT,THIS> T$WD[ORD] * 2 ** NEXT)
- LOR (B<0,NEXT> T$WD[ORD + 1]);
- ORD = ORD + 1;
- BIT = NEXT;
- END
- ELSE # WORD BOUNDARY NOT SPANNED #
- BEGIN
- RESULT = B<BIT,LEN> T$WD[ORD];
- IF (BIT + LEN) EQ 60
- THEN # BITFIELD ENDS ON WORD BOUNDARY #
- BEGIN
- ORD = ORD + 1;
- BIT = 0;
- END
- ELSE # SIMPLEST CASE #
- BIT = BIT + LEN;
- END
- END # SSBEBF #
- TERM
cdc/nos2.source/nam5871/ssbebf.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator