home *** CD-ROM | disk | FTP | other *** search
- * 27-AUG-83 JDG
- *
- *------------------------------------------- ???????.UN&PACK ----------
- E:F A:S(NWLS , STKARG)
- *-----------------------------------------------------------------------
- *
- * PURPOSE
- *
- * PACKLINE: ADD CHAR TO AN ARRAY
- * EMPTLINE: UNPACK A CHAR FROM ARRAY CHARACTER INTO CHAR
- *
- * INPUT
- *
- * PACKLINE: CHAR: ELEMENT TO ADD TO ARRAY
- * ARRAY: ARRAY TO STUFF CHAR INTO
- * EMPTLINE: ARRAY: ARRAY FROM WHICH TO DRAW CHAR
- *
- * OUTPUT
- *
- * PACKLINE: UPDATED ARRAY
- * F:N TRUE ==> ARRAY FULL
- * F:N FALSE==> ARRAY NOT FULL
- * EMPTLINE: CHAR FROM ARRAY,UPDATED ARRAY
- * F:N TRUE ==> ARRAY EMPTY
- * F:N FALSE==> ARRAY NOT EMPTY
- *
- * LOCAL DEFINITIONS
- *
- I:R CHAR ; contains char to be put into array
- ; char format can be the same as fig-forth
- ; char is in lower byte of word '00cc' where
- ; cc is the hex code for a char
- ; or the chat format can be that of cgos where
- ; the char is in the high order byte and has
- ; the '80' bit turned on
-
- D:N ARRAY(81) ; array contains the string of packed chars
- ; the format of array is :
- ; |xxxx|cccc|cccc|cc??|
- ; xxxx = count of char in string
- ; cccc = two packed char in one word
- *
- I:R TCHAR ; temp version of char
- *
- * DATA STATEMENT
- *
- V:S MAXNDX = '80'
- V:S TRUE = -1
- V:S FALSE = 0
- *
- ************************************************************************
- * START OF EXECUTABLE CODE
- ************************************************************************
- *
- E:O PACKLINE.(CHAR,ARRAY)
- *
- W:R ARRAY(0).UGE.MAXNDX
- STAT = TRUE
- O:E
- W:R CHAR .L. 0
- TCHAR = CHAR .RSH. 8
- O:E
- TCHAR = CHAR .LAND. '7F' .LOR. '80' ; MAKE IT CGOS FORMAT
- E:L
- E'E STBYTT.(TCHAR, ARRAY(1), ARRAY(0))
- ARRAY(0) = ARRAY(0) + 1
- W:R ARRAY(0).UL.MAXNDX
- STAT = FALSE
- O:E
- STAT = TRUE
- E:L
- E:L
- # W:R ARRAY(0) .UGE. MAXNDX , E:E HEXDMP.(1,1,1,ARRAY(0))
- F:N STAT
- *
- ************************************************************************
- *
- E:O EMPTLINE.(CHAR,ARRAY)
- *
- W:R ARRAY(0).E.0, F'N TRUE ; EMPTY ARRAY
- ARRAY(0) = ARRAY(0) - 1
- ; pull char out of array from front to back
- CHAR = LDBYTT.(ARRAY(1), MAXNDX - ARRAY(0))
- W:R ARRAY(0).NE.0
- STAT = FALSE
- O:E
- STAT = TRUE
- E:L
- F:N STAT
- *
- E:N
-