home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
computervision.tar.gz
/
computervision.tar
/
kermit.unpack
< prev
next >
Wrap
Text File
|
1987-02-19
|
3KB
|
92 lines
* 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