home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / zsys / simtel20 / syslib / syslib.lbr / SYSLIBD.HQP / SYSLIBD.HLP
Encoding:
Text File  |  1986-02-07  |  6.4 KB  |  178 lines

  1. ARGV    -- Parse Similar to ARGC/ARGV under UNIX
  2. CAPS    -- Capitalize a Character
  3. CAPSTR  -- Capitalize a String
  4. ISx     -- Character Test Routines
  5. SKx     -- Character Skip Routines
  6. :ARGV
  7.      Routine:  ARGV
  8.  
  9.      Function║
  10.      ARG╓ i≤ ß UNIX-stylσ ARGC/ARG╓ strinτ parser«á  I⌠ i≤ passeΣ ì
  11. ß null-terminateΣ strinτ iε H╠ anΣ thσ addres≤ oµ ß tokeε pointe≥ ì
  12. table which is structured as follows:
  13.  
  14.           DB   MAX$ENT   ; number of token pointers
  15. filled|   DS   1         ; number of tokens found by ARGV
  16. in    |   DS   2         ; pointer to token 1 (in string)
  17. by    |   DS   2         ; pointer to token 2 (in string)
  18. ARGV  |   ...
  19.       |   DS   2         ; pointer to token MAX$ENT (in string)
  20.  
  21.      Token≤ arσ delimiteΣ b∙ space≤ anΣ tabs«  Fo≥ example:
  22.           "  THIS     IS    FUN  "
  23. contain≤ threσ tokens¼á anΣ ARG╓ wil∞ returε pointer≤ t∩ thσ ╘ iε ì
  24. THIS, the I in IS, and the F in FUN.
  25.  
  26.  
  27.      Iµá ┴ <╛ ░ oε input¼á ARG╓ wil∞ storσ ß binar∙ ░ (null⌐ int∩ ì
  28. thσ strinτ afte≥ eacΦ tokeε fo≥ late≥ easσ iε analysis«á  Iεá thσ ì
  29. abovσ example¼ ß ░ woulΣ bσ storeΣ ove≥ thσ firs⌠ spacσ followinτ ì
  30. thσ ╙ iε THIS¼á thσ ╙ iε IS¼ anΣ thσ ╬ iε FUN«  Iµ A=0¼ ARG╓ doe≤ ì
  31. no⌠ makσ an∙ change≤ t∩ thσ string«á  Seσ thσ SYSLI┬ tes⌠ prograφ ì
  32. STEST016.MAC for examples of the use of ARGV.
  33.      Oε output¼ ARG╓ ha≤ loadeΣ it≤ pointer≤ int∩ thσ tokeε tablσ ì
  34. anΣ return≤ witΦ A=░ anΣ thσ Zer∩ Flaτ Se⌠ iµ n∩ error«  Iµ therσ ì
  35. werσá morσá token≤á iε thσ strinτ thaε alloweΣ fo≥ iεá thσá tokeε ì
  36. table¼ ARG╓ return≤ witΦ A=0FF╚ anΣ thσ Zer∩ Flaτ Rese⌠ (NZ)«  Iε ì
  37. thi≤á case¼á thσá las⌠á tokeε pointe≥ point≤ t∩á thσá las⌠á tokeε ì
  38. allowed¼á anΣ thi≤ extend≤ t∩ thσ enΣ oµ thσ string«  Thσ nul∞ i≤ ì
  39. no⌠á placeΣá afte≥á thσ las⌠ token¼á s∩ thσ res⌠á oµá thσá strinτ ì
  40. appears as a token (and may be parsed by ARGV again).
  41.  
  42.  
  43.      Inputs:  HL = address of string
  44.                DE = address of token table
  45.                A = 0 if null is not to be placed after each token
  46.                A = 0FFH if null is placed after each token
  47.  
  48.      Outputs:  A = 0 and Zero Flag Set (Z) if no error
  49.                A = 0FFH and Zero Flag Reset (NZ) if more tokens
  50.                     than allowed for (last token pointer points
  51.                     to the rest of the string)
  52.  
  53.      Registers Affected:  PSW
  54.  
  55.      SYSLIB Routines Called:  -None-
  56.  
  57.      Special Error Conditions:  None
  58.  
  59. :Capitalize a Character
  60.      Routine:  CAPS
  61.  
  62.      Function║
  63.      Capitalizσá ASCI╔á characte≥á iε Registe≥ ┴á iµá i⌠á i≤ ì
  64. lower-casσ alphabetiπ (a-z)╗ otherwise¼ returε ┴ unaffected«  ì
  65. Onl∙á thσ lowe≥ seveε bit≤ oµ thσ bytσ arσá considered¼á anΣ ì
  66. thσ Mos⌠ Significan⌠ Bi⌠ i≤ maskeΣ ou⌠ t∩ zero.
  67.  
  68.      Inputs:  A = character to capitalize
  69.      Outputs:  A = capitalized character
  70.  
  71.      Registers Affected:  PSW
  72.  
  73.      SYSLIB Routines Called:  -None-
  74.      Special Error Conditions:  -None-
  75.  
  76. :Capitalize a String
  77.      Routine:  CAPSTR
  78.  
  79.      Function:
  80.      CAPST╥ capitalize≤ thσ <NULL>-terminateΣ (0-terminated⌐ ì
  81. strinτ pointeΣ t∩ b∙ HL«  N∩ Register≤ arσ affected.
  82.  
  83.      Inputs:  HL pts to first byte of string
  84.      Outputs:  None (String is Capitalized)
  85.  
  86.      Registers Affected:  None
  87.  
  88.      SYSLIB Routines Called:  CAPS
  89.      Special Error Conditions:  None
  90.  
  91. :Character Test Routines
  92.  
  93.      Thσá Characte≥ Tes⌠ routine≤ checδ thσ characte≥ iε thσ ì
  94. ┴ registe≥ (afte≥ maskinτ ou⌠ it≤ MSB⌐ t∩ seσ iµ i⌠ meet≤á ß ì
  95. condition.  These conditions are:
  96.  
  97. èISALNUM     -- Is Alphanumeric Char?
  98. ISALPHA     -- Is Alphabetic Char?
  99. ISCTRL      -- Is Control Char?
  100. ISDIGIT     -- Is Digit Char?
  101. ISGRAPH     -- Is Graphic Char?
  102. ISHEX       -- Is Hexadecimal Char?
  103. ISPRINT     -- Is Printable Char?
  104. ISPUN       -- Is Punctuation Char?
  105. ISSP        -- Is Space Char?
  106.  
  107.  
  108.      Iε al∞ cases¼ thσ routine≤ conforφ t∩ thi≤ description:
  109.  
  110.      Routine:  ISx
  111.  
  112.      Function║  T∩ tes⌠ t∩ seσ iµ thσ characte≥ iε ┴ meet≤ ß ì
  113. certaiεá conditioεá (thσ MS┬ i≤ maskeΣ ofµ oµ ┴á beforσá thσ ì
  114. test).
  115.  
  116.      Inputs:  A = Char
  117.      Outputs:  Zero Flag is Set (Z) if Condition is TRUE;
  118.                Zer∩ Flaτ i≤ Rese⌠ (NZ⌐ iµ ConΣ i≤ FALSE;
  119.                A is not affected, only PSW
  120.  
  121.      Registers Affected:  PSW (NOT including A)
  122.  
  123.      SYSLIB Routines Called:  None
  124.      Special Error Conditions:  None
  125.  
  126.      The characters tested for by these routines are:
  127.  
  128. ISALNUM     -- Is Alphanumeric Char?    -- A-Z, a-z, 0-9
  129. ISALPHA     -- Is Alphabetic Char?      -- A-Z, a-z
  130. ISCTRL      -- Is Control Char?         -- Less than SP or DEL
  131. ISDIGIT     -- Is Digit Char?           -- 0-9
  132. ISGRAPH     -- Is Graphic Char?         -- Between SP and DEL
  133. ISHEX       -- Is Hexadecimal Char?     -- 0-9, A-F, a-f
  134. ISPRINT     -- Is Printable Char?       -- Between SP and DEL,
  135.                                              incl SP
  136. ISPUN       -- Is Punctuation Char?     -- Between SP and DEL,
  137.                                              DEL, NOT 0-9,
  138.                                              A-Z, or a-z
  139. ISSP        -- Is Space Char?           -- HT, LF, VT, FF, CR,
  140.                                              and SP
  141.  
  142.  
  143. :Character Skip Routines
  144.  
  145.      Thesσá routine≤ arσ useΣ t∩ ski≡ ove≥ character≤ iε thσ ì
  146. strinτ pointeΣ t∩ b∙ H╠ unti∞ eithe≥ ß characte≥ oµ thσ typσ ì
  147. the∙á arσá no⌠á skippinτ i≤ encountereΣ o≥ thσá enΣá oµá thσ ì
  148. string (NULL character) is encountered.
  149.  
  150.      The character skip routines are:
  151.  
  152. SKNPUN      -- Skip Over Non-Punctuation Chars
  153. SKNSP       -- Skip Over Non-Space Chars
  154. SKPUN       -- Skip Over Punctuation Chars
  155. SKSP        -- Skip Over Space Chars
  156.  
  157.      ┴á Punctuatioε Characte≥ i≤ ß characte≥ betweeε S╨á anΣ ì
  158. DE╠ whicΦ i≤ no⌠ 0-9¼ A-Z¼ o≥ a-z«  ┴ Spacσ Characte≥ i≤ an∙ ì
  159. of HT, LF, VT, FF, CR, or SP.
  160.  
  161.  
  162.      All of these routines are characterized as follows:
  163.  
  164.      Routine:  SKx
  165.  
  166.      Function║á  T∩ ski≡ ove≥ ß certaiε clas≤ oµá character≤ ì
  167. iεá thσ strinτ pointeΣ t∩ b∙ H╠ unti∞ ß characte≥ NO╘ iε thσ ì
  168. ski≡á grou≡á i≤ encountereΣ o≥ thσ enΣ oµ thσá strinτá (NUL╠ ì
  169. character) is encountered.
  170.  
  171.      Inputs:  HL pts to first character in string
  172.      Outputs:  HL pts to character which terminated the skip
  173.  
  174.      Registers Affected:  HL
  175.  
  176.      SYSLIB Routines Called:  ISPUN or ISSP, as appropriate
  177.      Special Error Conditions:  None
  178.  
  179.