home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / computervision / kermit.un&pack < prev    next >
Text File  |  2020-01-01  |  3KB  |  92 lines

  1. * 27-AUG-83 JDG
  2. *
  3. *-------------------------------------------  ???????.UN&PACK ----------
  4.     E:F A:S(NWLS , STKARG)
  5. *-----------------------------------------------------------------------
  6. *
  7. * PURPOSE
  8. *
  9. *     PACKLINE: ADD CHAR TO AN ARRAY
  10. *     EMPTLINE: UNPACK A CHAR FROM ARRAY CHARACTER INTO CHAR
  11. *
  12. * INPUT
  13. *
  14. *     PACKLINE: CHAR:   ELEMENT TO ADD TO ARRAY
  15. *               ARRAY:  ARRAY TO STUFF CHAR INTO
  16. *     EMPTLINE: ARRAY:  ARRAY FROM WHICH TO DRAW CHAR
  17. *
  18. * OUTPUT
  19. *
  20. *     PACKLINE:    UPDATED ARRAY
  21. *                  F:N TRUE ==> ARRAY FULL
  22. *                  F:N FALSE==> ARRAY NOT FULL
  23. *     EMPTLINE:    CHAR FROM ARRAY,UPDATED ARRAY
  24. *                  F:N TRUE ==> ARRAY EMPTY
  25. *                  F:N FALSE==> ARRAY NOT EMPTY
  26. *
  27. * LOCAL DEFINITIONS
  28. *
  29.       I:R CHAR          ; contains char to be put into array
  30.                         ; char format can be the same as fig-forth
  31.                         ; char is in lower byte of word  '00cc' where
  32.                         ; cc is the hex code for a char
  33.                         ; or the chat format can be that of cgos where
  34.                         ; the char is in the high order byte and has
  35.                         ; the '80' bit turned on
  36.  
  37.       D:N ARRAY(81)     ; array contains the string of packed chars
  38.                         ; the format of array is :
  39.                         ; |xxxx|cccc|cccc|cc??|
  40.                         ; xxxx = count of char in string
  41.                         ; cccc = two packed char in one word
  42. *
  43.       I:R TCHAR         ; temp version of char
  44. *
  45. * DATA STATEMENT
  46. *
  47.       V:S MAXNDX = '80'
  48.       V:S TRUE = -1
  49.       V:S FALSE = 0
  50. *
  51. ************************************************************************
  52. *                START OF EXECUTABLE CODE
  53. ************************************************************************
  54. *
  55.       E:O PACKLINE.(CHAR,ARRAY)
  56. *
  57.       W:R ARRAY(0).UGE.MAXNDX
  58.          STAT = TRUE
  59.       O:E
  60.          W:R CHAR .L. 0
  61.             TCHAR = CHAR .RSH. 8
  62.          O:E
  63.             TCHAR = CHAR .LAND. '7F' .LOR. '80' ; MAKE IT CGOS FORMAT
  64.          E:L
  65.          E'E STBYTT.(TCHAR, ARRAY(1), ARRAY(0))
  66.          ARRAY(0) = ARRAY(0) + 1
  67.          W:R ARRAY(0).UL.MAXNDX
  68.              STAT = FALSE
  69.          O:E
  70.              STAT = TRUE
  71.          E:L
  72.       E:L
  73. #  W:R ARRAY(0) .UGE. MAXNDX , E:E HEXDMP.(1,1,1,ARRAY(0))
  74.          F:N STAT
  75. *
  76. ************************************************************************
  77. *
  78.       E:O EMPTLINE.(CHAR,ARRAY)
  79. *
  80.       W:R ARRAY(0).E.0, F'N TRUE       ; EMPTY ARRAY
  81.       ARRAY(0) = ARRAY(0) - 1
  82.       ; pull char out of array from front to back
  83.       CHAR = LDBYTT.(ARRAY(1), MAXNDX - ARRAY(0))
  84.       W:R ARRAY(0).NE.0
  85.          STAT = FALSE
  86.       O:E
  87.          STAT = TRUE
  88.       E:L
  89.       F:N STAT
  90. *
  91.       E:N
  92.