home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / sigmv013.ark / SYSLIB.HLP < prev    next >
Text File  |  1985-02-09  |  37KB  |  783 lines

  1. Directory Manipulation Routines -- DIRECT, DIR, DIRSEL, DIRALP
  2. Numeric String Evaluation Routines -- EVAL, EVAL16, EVAL10, EVAL8, EVAL2
  3. Byte-Oriented File Input/Output Routines
  4. FI$OPEN and FO$OPEN, et al -- Byte-Oriented Input and Output File Open
  5. FI$CLOSE and FO$CLOSE, et al -- Byte-Oriented Input and Output File Close
  6. F$GET and F$PUT, et al -- Byte-Oriented Input and Output
  7. CP/M File Input/Output Routines
  8. INITFCB -- Initialize FCB
  9. File Manipulation -- F$OPEN, F$CLOSE, F$MAKE, F$DELETE
  10. File Input/Output Routines -- F$READ and F$WRITE
  11. Input Line Editor -- INLINE
  12. String Output Routines -- PRINT, LPRINT, PSTR, LPSTR
  13. Numeriπá Outpu⌠ Routine≤ -- PHL4HC,PHL5DC,PHLDC,PA2HC,PA3DC,PADC¼ L's, M's
  14. String and Value Comparison Routines -- COMPHD,COMPB,COMPBC,SCANNER,INSTR
  15. <CR> <LF> Output -- CRLF and LCRLF
  16. Conditional Input -- CONDIN
  17. General Input Routines -- CST, CIN, RIN
  18. General Output Routines -- COUT, LOUT, POUT, CCOUT, CLOUT, CPOUT
  19. Misπ Routine≤ -- BDOS¼ CAPS¼ CIO¼ EN¼ FILLB¼ FILLBC¼ MOVEB¼ MOVEBC¼ CATH
  20. :Directory Manipulation Routines -- DIRECT, DIR, DIRSEL, DIRALP
  21.      Routine Name:  DIRECT
  22.      Function║á  DIREC╘á load≤á ß cop∙ oµ thσ director∙á oµá thσá currentl∙ ì
  23. logged-iε disδ drivσ int∩ thσ 3▓ ° 6┤ bytσ buffe≥ pointeΣ t∩ b∙ HL¼ select≤ ì
  24. al∞á filσ entrie≤ whicΦ matcΦ thσ content≤ oµ thσ 11-bytσ filσ namσá buffe≥ ì
  25. pointeΣá t∩á b∙á D┼ (buffe≥ ma∙ contaiε ?'≤ a≤á wilΣá specifications)¼á anΣ ì
  26. alphabetize≤ thσ entrie≤ iε thσ buffe≥ eithe≥ b∙ filσ name/typσ o≥ b∙á filσ ì
  27. type/name«á  Onl∙á entrie≤á wherσ thσ exten⌠ i≤ zer∩ (1s⌠ filσá entry⌐á arσ ì
  28. returned.
  29.      Inputs:  HL points to the 32 x 64 byte buffer for the directory
  30.               D┼ point≤ t∩ thσ 11-bytσ filσ name/typσ buffe≥ containinτ thσ ì
  31. file name/type to select
  32.               ┴á i≤ alphabetizatioε indicator╗á A=░ =╛ alphabetizσ b∙á filσ ì
  33. name and type, A<>0 => alphabetize by file type and name
  34.      Outputs:  A = number of entries in directory buffer
  35.      Registers Affected:  PSW
  36.      SYSLIB Routines Called:  -None- (All calls within module)
  37.      Special Error Conditions:  -None-
  38.  
  39.      Routine Name:  DIR
  40.      Function║á  DI╥ load≤ ß cop∙ oµ thσ director∙ oµ thσ currentl∙ logged-ì
  41. iε disδ drivσ int∩ thσ 3▓ ° 6┤ bytσ buffe≥ pointeΣ t∩ b∙ L«á  Oε return¼á ┴ ì
  42. contains a count of the number of entries in the directory.
  43.      Inputs:  HL points to the 32 x 64 byte buffer for the directory
  44.      Outputs:  A = number of entries in directory buffer
  45.      Registers Affected:  PSW
  46.      SYSLIB Routines Called:  -None-
  47.      Special Error Conditions:  -None-
  48.  
  49.      Routiεe ╬ame:  DIRSEL (DIRSELECT)
  50.      Function║  DIRSE╠ scan≤ thσ director∙ buffe≥ pointeΣ t∩ b∙ H╠ fo≥á thσ ì
  51. filσáá name/typσá pointeΣá t∩á b∙á D┼á (ma∙á contaiεá ?'≤á fo≥á wilΣáá carΣ ì
  52. specifications)«á  I⌠ restructure≤ thσ director∙ buffe≥ t∩ contaiε onl∙ thσ ì
  53. matchinτ entries«á  Oε return¼ A=numbe≥ oµ entrie≤ iε buffer«  Onl∙ entrie≤ ì
  54. witΦ extent≤ equa∞ t∩ zer∩ arσ selected╗á al∞ entrie≤ witΦ non-zer∩ extent≤ ì
  55. are rejected.
  56.      Inputs:  HL points to the 32 x 64 byte buffer for the directory
  57.               DE points to the 11-byte file name/type buffer
  58.               A = number of entries in directory buffer
  59.      Outputs:  A = number of entries in directory buffer
  60.      Registers Affected:  PSW
  61.      SYSLIB Routines Called:  -None-
  62.      Special Error Conditions:  -None-
  63.  
  64.      Routine Name:  DIRALP (DIRALPHABETIZE)
  65.      Function║á  DIRAL╨ alphabetize≤ thσ director∙ buffe≥ pointeΣ t∩ b∙á H╠ ì
  66. accordinτá t∩ thσ comparσ optioε passeΣ iε ├ (iµ C=0¼á alphabetizσ b∙á filσ ì
  67. name & type; if C<>0, alphabetize by file type & name).
  68.      Inputs:  HL points to the 32 x 64 byte buffer for the directory
  69.               C = alphabetization flag (FN & FT if C=0, FT & FN if C<>0)
  70.               A = number of entries in directory buffer
  71.      Outputs:  -None- (buffer is alphabetized)
  72.      Registers Affected:  -None-
  73.      SYSLIB Routines Called:  -None-
  74.      Special Error Conditions:  -None-
  75. :Numeric String Evaluation Routines -- EVAL, EVAL16, EVAL10, EVAL8, EVAL2
  76.      Routine Name:  EVAL
  77.      Function║  Thi≤ routinσ convert≤ thσ characte≥ strinτ pointeΣ t∩ b∙ H╠ ì
  78. int∩á thσá 16-bi⌠á binar∙á numbe≥ representeΣ b∙á it«á  EVA╠á perform≤á thσ ì
  79. conversioε unti∞ ß non-hexadecima∞ characte≥ i≤ encountered¼á a⌠ whicΦ timσ ì
  80. i⌠á look≤ a⌠ thσ las⌠ characte≥ anΣ thσ previou≤ characte≥ t∩ determinσá iµ ì
  81. thσ strinτ i≤ representinτ ß binary¼ octal¼ decimal¼ o≥ hexadecima∞ number«  ì
  82. Inpu⌠ strinτ character≤ ma∙ bσ upper- o≥ lower-case«  ValiΣ format≤ fo≥ thσ ì
  83. input string are --
  84.           bbbbbbbbbbbbbbbbB -- b=0 or b=1; Binary string
  85.           ttttt or tttttD -- 0 <= t <= 9; Decimal string
  86.           hhhhH or hhhhX -- 0 <= h <= F; Hexadecimal string
  87.           oooooooO or oooooooQ -- 0 <= o <= 7; Octal string
  88.  
  89.  
  90.      Inputs:  HL points to the first byte of the string to convert
  91.               String is loaded in a buffer
  92.      Outputs:  HL points to next character after converted string
  93.                DE contains 16-bit value
  94.                A = E
  95.                CARR┘á Flaτá Se⌠ mean≤ aε erro≥ wa≤á encountereΣá iεá strinτ ì
  96. format
  97.      Registers Affected:  PSW, DE, HL
  98.      SYSLIB Routines Called:  CAPS, EVAL16, EVAL10, EVAL8, EVAL2
  99.      Specia∞á Erro≥ Conditions║  CARR┘ Flaτ Se⌠ indicate≤ tha⌠ aε erro≥ wa≤ ì
  100. encountereΣá iεá thσ evaluatioε oµ thσ string╗á iµ so¼á H╠á point≤á t∩á thσ ì
  101. offending character
  102.  
  103.      Routine Name:  EVAL16
  104.      Function║á  EVAL1╢ convert≤ thσ strinτ oµ ASCI╔ hexadecima∞ character≤ ì
  105. pointeΣ t∩ b∙ H╠ int∩ ß 16-bi⌠ binar∙ value«á  Conversioε progresse≤á unti∞ ì
  106. an invalid hexadecimal digit (0-9, A-F) is encountered.
  107.      Inputs:  HL points to the first byte of the string to convert
  108.               String is loaded in a buffer
  109.      Outputs:  HL points to the offending character
  110.                DE contains the 16-bit value
  111.                A = E
  112.      Registers Affected:  PSW, DE, HL
  113.      SYSLIB Routines Called:  CAPS
  114.      Special Error Conditions:  -None-
  115.  
  116.      Routine Name:  EVAL10
  117.      Function║á  EVAL1░á convert≤á thσ strinτ oµ ASCI╔á decima∞á character≤ ì
  118. pointeΣ t∩ b∙ H╠ int∩ ß 16-bi⌠ binar∙ value«á  Conversioε progresse≤á unti∞ ì
  119. an invalid decimal digit (0-9) is encountered.
  120.      Inputs:  HL points to the first byte of the string to convert
  121.               String is loaded in a buffer
  122.      Outputs:  HL points to the offending character
  123.                DE contains the 16-bit value
  124.                A = E
  125.      Registers Affected:  PSW, DE, HL
  126.      SYSLIB Routines Called:  -None-
  127.      Special Error Conditions:  -None-
  128.  
  129.      Routine Name:  EVAL8
  130.      Function║  EVAL╕ convert≤ thσ strinτ oµ ASCI╔ octa∞ character≤ pointeΣ ì
  131. t∩á b∙á H╠á int∩ ß 16-bi⌠ binar∙ value«á  Conversioεá progresse≤á unti∞á aε ì
  132. invalid octal digit (0-7) is encountered.
  133.      Inputs:  HL points to the first byte of the string to convert
  134.               String is loaded in a buffer
  135.      Outputs:  HL points to the offending character
  136.                DE contains the 16-bit value
  137.                A = E
  138.      Registers Affected:  PSW, DE, HL
  139.      SYSLIB Routines Called:  -None-
  140.      Special Error Conditions:  -None-
  141.  
  142.      Routine Name:  EVAL2
  143.      Function║á  EVAL▓á convert≤á thσá strinτ oµá ASCI╔á binar∙á character≤ ì
  144. pointeΣ t∩ b∙ H╠ int∩ ß 16-bi⌠ binar∙ value«á  Conversioε progresse≤á unti∞ ì
  145. an invalid binary digit (0-1) is encountered.
  146.      Inputs:  HL points to the first byte of the string to convert
  147.               String is loaded in a buffer
  148.      Outputs:  HL points to the offending character
  149.                DE contains the 16-bit value
  150.                A = E
  151.      Registers Affected:  PSW, DE, HL
  152.      SYSLIB Routines Called:  -None-
  153.      Special Error Conditions:  -None-
  154. :Byte-Oriented File Input/Output Routines
  155.      Thσá followinτá documentatioε cover≤ thσ serie≤ oµ byte-orienteΣá filσ ì
  156. input/outpu⌠á routine≤á iεá SYSLIB«á  Thesσá routine≤á allo≈á thσá use≥á t∩ ì
  157. sequentiall∙á reaΣ froφ (GET⌐ anΣ writσ t∩ (PUT⌐ ß filσ oε ßá byte-for-bytσ ì
  158. basis«á  Hence¼á thesσ routine≤ providσ aε exceptionall∙ simplσ methoΣá fo≥ ì
  159. handling input from and output to a file.
  160.      ┴á typica∞ prograφ whicΦ employ≤ thesσ routine≤ mus⌠ opeε thσ requireΣ ì
  161. file≤ beforσ doinτ an∙ processing¼á mus⌠ theε perforφ thσ processinτ oε thσ ì
  162. openeΣá files¼á anΣá mus⌠á theεá closσ thσ file≤á wheεá thσá processinτá i≤ ì
  163. completσá (closinτ thσ file≤ i≤ optiona∞ fo≥ inpu⌠ file≤ anΣ mandator∙á fo≥ ì
  164. output files).
  165.      SYSLI┬ provide≤ fou≥ set≤ oµ routine≤ fo≥ byte-orienteΣ filσ inpu⌠ anΣ ì
  166. output.  These routines are --
  167.  
  168.    Input Open     Output Open     GET    PUT   Input Close  Output Close
  169.    ----------     -----------     ---    --¡   -----------  ------------
  170.     FI$OPEN        FO$OPEN       F$GET  F$PUT   FI$CLOSE     FO$CLOSE
  171.     F1I$OPEN       F1O$OPEN      F1$GET F1$PUT  F1I$CLOSE    F1O$CLOSE
  172.     F2I$OPEN       F2O$OPEN      F2$GET F2$PUT  F2I$CLOSE    F2O$CLOSE
  173.     F3I$OPEN       F3O$OPEN      F3$GET F3$PUT  F3I$CLOSE    F3O$CLOSE
  174.  
  175.      Thi≤ systeφ allow≤ thσ use≥ t∩ havσ u≡ t∩ ╕ file≤ opeεá simultaneousl∙ ì
  176. -- fou≥á arσá opeε fo≥ inpu⌠ usinτ GE╘ anΣ fou≥ arσ opeε fo≥á outpu⌠á usinτ ì
  177. PUT«á  Fo≥á example¼á thσá followinτ i≤ ß samplσ codσ sectioεá usinτá thesσ ì
  178. routines for two files:
  179.  
  180.  
  181.           EXT  FI$OPEN   ; DECLARE LIBRARY REFERENCES
  182.           EXT  FO$OPEN
  183.           EXT  FI$CLOSE
  184.           EXT  FO$CLOSE
  185.           EXT  F$GET
  186.           EXT  F$PUT
  187.           ...
  188.           LXI  D,FCBI    ; PT TO FCB OF INPUT FILE
  189.           CALL FI$OPEN
  190.           LXI  D,FCBO    ; PT TO FCB OF OUTPUT FILE
  191.           CALL FO$OPEN
  192.           ...
  193.           [body containing CALL F$GET and CALL F$PUT where required]
  194.           ...
  195.           CALL FI$CLOSE  ; CLOSE FILE
  196.           CALL FO$CLOSE
  197.           ...
  198.           END
  199.  
  200.      Notσá tha⌠á onl∙á thσ routine≤ t∩ bσ useΣ arσ referenceΣá iεá thσá EX╘ ì
  201. statements«á  Iµ yo⌡ d∩ no⌠ neeΣ ß particula≥ routine¼ d∩ no⌠ referencσ it«  ì
  202. No⌠á referencinτá aε unneedeΣ routinσ generall∙ save≤ thσá overheaΣá memor∙ ì
  203. spacσ oµ loadinτ i⌠ froφ thσ library.
  204.      EacΦ se⌠ oµ OPEN¼á CLOSE¼á GET¼á anΣ PU╘ routine≤ i≤ containeΣ iεá onσ ì
  205. librar∙á module¼á s∩á referencinτ an∙ oµ thesσ routine≤ cause≤á thσá entirσ ì
  206. modulσá t∩á bσá loaded¼á anΣ al∞ thσ routine≤ arσ accessablσá t∩á thσá use≥ ì
  207. (provideΣá the∙á arσá mentioneΣá iε thσ extena∞á definitions⌐á withou⌠á an∙ ì
  208. additiona∞ memor∙á overhead«á  Specifically¼á FI$OPEN¼á FI$CLOSE¼á FO$OPEN¼ ì
  209. FO$CLOSE¼á F$GET¼á anΣ F$PU╘ arσ containeΣ iε onσ module¼á anΣ referencσ t∩ ì
  210. an∙á oµá thesσ routine≤ load≤ thσ entirσ module╗á thσ samσ i≤ truσ fo≥á thσ ì
  211. other sets of routines.
  212.      Thσá CLOS┼ routinσ fo≥ outpu⌠ (FO$CLOSE⌐ i≤ ALWAY╙ required╗á i⌠ fill≤ ì
  213. thσá res⌠á oµ thσ curren⌠ blocδ witΦ Ctrl-┌ followeΣ b∙á <NULL╛á byte≤á anΣ ì
  214. properl∙á close≤ file«á  Thσ CLOS┼ routinσ fo≥ inpu⌠ (FI$CLOSE⌐ i≤ requireΣ ì
  215. ONL┘á I╞á yo⌡á arσ goinτ t∩ late≥ opeε anothe≥ filσá fo≥á inpu⌠á usinτá thσ ì
  216. correspondinτá OPE╬ routinσ (FI$OPEN)«á  FI$CLOS┼ onl∙ serve≤ t∩ rese⌠á thσ ì
  217. OPE╬á flaτá (useΣá t∩á GE╘ t∩ ascertaiε tha⌠ thσá filσá ha≤á beeεá properl∙ ì
  218. opened).
  219. :FI$OPEN and FO$OPEN, et al -- Byte-Oriented Input and Output File Open
  220.      Routine Names:  FI$OPEN, F1I$OPEN, F2I$OPEN, F3I$OPEN
  221.      Function║  Opeε thσ filσ whosσ FC┬ i≤ pointeΣ t∩ b∙ D┼ fo≥ inpu⌠á (usσ ì
  222. witΦ F$GET).
  223.      Inputs:  DE = ptr to FCB of file to open
  224.      Outputs:  -None- (File is Opened)
  225.      Registers Affected:  PSW
  226.      SYSLIB Routines Called:  F$OPEN, PRINT
  227.      Special Error Conditions:  Failure to properly open aborts to CP/M.
  228.  
  229.      Routine Names:  FO$OPEN, F1O$OPEN, F2O$OPEN, F3O$OPEN
  230.      Function║  Opeε thσ filσ whosσ FC┬ i≤ pointeΣ t∩ b∙ D┼ fo≥ outpu⌠ (usσ ì
  231. with F$PUT).
  232.      Inputs:  DE = ptr to FCB of file to open
  233.      Outputs:  -None- (File is Opened)
  234.      Registers Affected:  PSW
  235.      SYSLIB Routines Called:  F$OPEN, PRINT
  236.      Special Error Conditions:  Failure to properly open aborts to CP/M.
  237. :FI$CLOSE and FO$CLOSE, et al -- Byte-Oriented Input and Output File Close
  238.      Routine Names:  FI$CLOSE, F1I$CLOSE, F2I$CLOSE, F3I$CLOSE
  239.      Function║á  Closσá thσá filσ previousl∙ openeΣá b∙á thσá correspondinτ ì
  240. FI$OPE╬á routine«á  Usσá oµ thesσ routine≤ i≤ optiona∞ iµ thσ anothe≥á filσ ì
  241. wil∞á no⌠á bσá openeΣ late≥ iε thσ prograφá b∙á thσá correspondinτá FI$OPE╬ ì
  242. routine.
  243.      Inputs:  -None-
  244.      Outputs:  -None- (File is Closed)
  245.      Registers Affected:  -None-
  246.      SYSLIB Routines Called:  F$OPEN, PRINT
  247.      Specia∞á Erro≥á Conditions║á  Iµ ß filσ i≤ no⌠ alread∙ openeΣá b∙á thσ ì
  248. corresponding FI$OPEN routine, no error results.
  249.  
  250.      Routine Names:  FO$CLOSE, F1O$CLOSE, F2O$CLOSE, F3O$CLOSE
  251.      Function║á  Closσá thσá filσ previousl∙ openeΣá b∙á thσá correspondinτ ì
  252. FO$OPE╬á routine«á  Usσ oµ thesσ routine≤ i≤ MANDATOR┘ afte≥ outpu⌠ t∩á thσ ì
  253. file (using the corresponding F$PUT routine) is complete.
  254.      Inputs:  -None-
  255.      Outputs:  -None- (File is Closed)
  256.      Registers Affected:  -None-
  257.      SYSLIB Routines Called:  F$OPEN, PRINT
  258.      Specia∞á Erro≥á Conditions║  Iµ ß filσ i≤á no⌠á alread∙á opened¼á thi≤ ì
  259. routine aborts to CP/M.
  260. :F$GET and F$PUT, et al -- Byte-Oriented Input and Output
  261.      Routine Names:  F$GET, F1$GET, F2$GET, F3$GET
  262.      Function║á  Ge⌠á thσá nex⌠ bytσ iε sequencσ froφ thσá filσá previousl∙ ì
  263. openeΣ b∙ thσ correspondinτ FI$OPE╬ routine«á  Bytσ i≤ returneΣ iε Registe≥ ì
  264. A.
  265.      Inputs:  -None-
  266.      Outputs:  A = Next byte from file
  267.                Carry Flag is Set (C) if EOF or past EOF read occurs
  268.                Carry Flag is Reset (NC) if read was OK
  269.      Registers Affected:  PSW
  270.      SYSLIB Routines Called:  F$OPEN, PRINT
  271.      Specia∞á Erro≥ Conditions║  Erro≥ conditioε i≤ returneΣ iε Carr∙ Flag«  ì
  272. Iµá ß filσ wa≤ no⌠ previousl∙ openeΣ b∙ thσ correspondinτ FI$OPE╬á routine¼ ì
  273. abort≤ t∩ CP/M.
  274.  
  275.      Routine Names:  F$PUT, F1$PUT, F2$PUT, F3$PUT
  276.      Function║á  Pu⌠á thσá bytσá iε Registe≥ ┴ ont∩ thσá enΣá oµá thσá filσ ì
  277. previously opened by the corresponding FO$OPEN routine.
  278.      Inputs:  A = Byte to PUT
  279.      Outputs:  -None-
  280.      Registers Affected:  -None-
  281.      SYSLIB Routines Called:  F$OPEN, PRINT
  282.      Specia∞á Erro≥ Conditions║  Iµ ß filσ wa≤ no⌠ previousl∙ openeΣ b∙ thσ ì
  283. correspondinτá FO$OPE╬á routine¼á abort≤ t∩ CP/M«á  Iµ aε erro≥á occur≤á iε ì
  284. writinτ t∩ thσ disk¼ abort≤ t∩ CP/M.
  285. :CP/M File Input/Output Routines
  286.      Thσá followinτá routine≤ arσ general-purposσ filσ I/╧á routine≤á whicΦ ì
  287. interfacσ t∩ CP/═ througΦ thσ Entr∙ Poin⌠ a⌠ locatioε 5«  The∙ preservσ BC¼ ì
  288. DE¼á anΣá HL¼á anΣá the∙ returε witΦ thσ standarΣ CP/═ erro≥ code≤ fo≥á thσ ì
  289. corresponding routines.
  290.      Specifically, these routines are --
  291.  
  292.           INITFCB   Initialize FCB from a string of the form "filename.typ"
  293.           F$OPEN    Open a file
  294.           F$CLOSE   Close a file
  295.           F$MAKE    Create a file
  296.           F$DELETE  Delete a file
  297.           F$READ    Read a block (128 bytes) from a file
  298.           F$WRITE   Write a block (128 bytes) to a file
  299. :INITFCB -- Initialize FCB
  300.      Routine Name:  INITFCB
  301.      Function║á  Giveε thσ namσ oµ ß filσ (filename.typ⌐ pointeΣ t∩á b∙á H╠ ì
  302. anΣá ß 33-bytσ buffe≥ pointeΣ t∩ b∙ DE¼á INITFC┬ initialize≤ thi≤ buffe≥ a≤ ì
  303. aεá FC┬á containinτá thσ filσ namσ anΣ filσ typσ correctl∙á placeΣá iεá thσ ì
  304. buffe≥á anΣá al∞á othe≥ entrie≤ zero«á  Thσ inpu⌠ strinτá consist≤á oµá 1-╕ ì
  305. character≤ fo≥ thσ filσ name¼á ß decima∞ poin⌠ (optional)¼á 1-│á character≤ ì
  306. fo≥á thσ filσ typσ (optional)¼á anΣ ß trailinτ characte≥ oµ spacσ (<SP>⌐ o≥ ì
  307. less«  WilΣ card≤ (?,*⌐ ma∙ bσ includeΣ iε thσ string«  ┴ samplσ usagσ is: 
  308.  
  309.           ...
  310.           LXI  H,NAME
  311.           LXI  D,FCB     ; HL PTS TO FILE NAME, DE PTS TO BUFFER
  312.           CALL INITFCB
  313.           ...
  314. NAME:     DB   'FILE.TYP',0
  315. FCB:      DS   33
  316.           ...
  317.  
  318.  
  319.      Inputs:  HL = pointer to file name string "filename.typ<SP>"
  320.               DE = pointer to FCB buffer
  321.      Outputs:  A = Error Code
  322.                    0 --> No Error
  323.                    1 --> File name > 8 characters
  324.                    2 --> File type > 3 characters
  325.      Registers Affected:  PSW
  326.      SYSLIB Routines Called:  -None-
  327.      Special Error Conditions:  -None-
  328. :File Manipulation -- F$OPEN, F$CLOSE, F$MAKE, F$DELETE
  329.      Routine Name:  F$OPEN
  330.      Function║á  Opeε thσ filσ specifieΣ b∙ thσ FC┬ pointeΣ t∩ b∙á DE«á  Iµ ì
  331. filσ i≤ no⌠ found¼ F$OPE╬ ask≤ thσ use≥ (oε CON:⌐ iµ hσ wishe≤ t∩ creatσ i⌠ ì
  332. anΣá doe≤á s∩ iµ thσ answe≥ i≤ 'Yº o≥ 'yº (F$OPE╬ simpl∙á return≤á witΦá aε ì
  333. appropriate error code if answer is negative).
  334.      Inputs:  DE = pointer to FCB
  335.      Outputs:  A = Error Code
  336.                    0    --> No Error
  337.                    0FFH --> File not opened or created
  338.      Registers Affected:  PSW
  339.      SYSLIB Routines Called:  BDOS, CAPS, CIN, COUT, CRLF, PRINT
  340.      Special Error Conditions:  -None-
  341.  
  342.      Routine Name:  F$CLOSE
  343.      Function:  Close the file whose FCB is pointed to by DE.
  344.      Inputs:  DE = pointer to FCB
  345.      Outputs:  A = Error Code
  346.                    0    --> No Error
  347.                    0FFH --> Error in closing file
  348.      Registers Affected:  PSW
  349.      SYSLIB Routines Called:  BDOS
  350.      Special Error Conditions:  -None-
  351.  
  352.      Routine Name:  F$MAKE
  353.      Function:  Create (Make) the file whose FCB is pointed to by DE.
  354.      Inputs:  DE = pointer to FCB
  355.      Outputs:  A = Error Code
  356.                    0FFH --> No directory space available
  357.                    Not 0FFH --> No Error; Value is byte address in
  358.                                 TBUFF (80H-0FFH) of directory entry
  359.                                 allocated to the FCB
  360.      Registers Affected:  PSW
  361.      SYSLIB Routines Called:  BDOS, F$DELETE
  362.      Special Error Conditions:  -None-
  363.  
  364.      Routine Name:  F$DELETE
  365.      Function║á  Deletσá thσ filσ whosσ FC┬ i≤ pointeΣ t∩ b∙ DE«á  Iµá filσ ì
  366. does not exist, nothing happens (no error message or code is given).
  367.      Inputs:  DE = pointer to FCB
  368.      Outputs:  -None-
  369.      Registers Affected:  PSW
  370.      SYSLIB Routines Called:  BDOS
  371.      Special Error Conditions:  -None-
  372. :File Input/Output Routines -- F$READ and F$WRITE
  373.      Routine Name:  F$READ
  374.      Function║  ReaΣ nex⌠ blocδ (12╕ bytes⌐ froφ thσ openeΣ filσ whosσá FC┬ ì
  375. is pointed to by DE into TBUFF (buffer at 80H - 0FFH).
  376.      Inputs:  DE = pointer to FCB
  377.      Outputs:  A = Error Code
  378.                    0 --> No Error
  379.                    1 --> Read past end of file
  380.                    2 --> Reading unwritten data in random access
  381.      Registers Affected:  PSW
  382.      SYSLIB Routines Called:  BDOS
  383.      Special Error Conditions:  -None-
  384.  
  385.      Routine Name:  F$WRITE
  386.      Function║á  Writσá nex⌠ blocδ (12╕ bytes⌐ froφ TBUF╞ (buffe≥ a⌠ 80╚á - ì
  387. 0FFH) to the opened file whose FCB is pointed to by DE.
  388.      Inputs:  DE = pointer to FCB
  389.      Outputs:  A = Error Code
  390.                    0    --> No Error
  391.                    1    --> Error in extending file
  392.                    2    --> End of disk data
  393.                    0FFH --> No more directory space
  394.      Registers Affected:  PSW
  395.      SYSLIB Routines Called:  BDOS
  396.      Special Error Conditions:  -None-
  397. :Input Line Editor -- INLINE
  398.      Routine Name:  INLINE
  399.      Function║á  INLIN┼ allow≤ thσ use≥ t∩ inpu⌠ ß linσ oµ tex⌠á froφá CON║ ì
  400. int∩ thσ buffe≥ pointeΣ t∩ b∙ HL«á  Thσ use≥ i≤ alloweΣ t∩ edi⌠ thσ tex⌠ a≤ ì
  401. he types it, and INLINE responds to the following editor commands:
  402.  
  403.    Key Command      Function
  404.    -----------      --------
  405.      <BS>           Delete previous character and back up cursor
  406.      <DEL>          Delete previous character and echo it (like CP/M)
  407.      <CR>           Input complete -- return to calling program
  408.      <LF>           Skip down to next physical line and insert a <CR> <LF>
  409.                       into buffer
  410.      <TAB>          Tabulate to next tab stop (every 8, as in CP/M)
  411.      Ctrl-U,        Erase current line (clear buffer) and restart input
  412.        Ctrl-X
  413.      Ctrl-R         Retype current line
  414.  
  415. Oε exit¼á thσ buffe≥ contain≤ thσ tex⌠ entereΣ followeΣ b∙ ß <NULL╛ (binar∙ ì
  416. 0); the <CR> typed to end the input is NOT placed in the buffer.
  417.  
  418.      Inputs:  HL = pointer to input line buffer
  419.      Outputs:  -None- (Input line buffer contains text typed by user)
  420.      Registers Affected:  -None-
  421.      SYSLIB Routines Called:  CCOUT, CIN, COUT, CRLF
  422.      Specia∞á Erro≥ Conditions║  <BEL╛ (Bee≡ a⌠ CON:⌐ i≤ outpu⌠ iµá attemp⌠ ì
  423. i≤ madσ t∩ deletσ characte≥ (<BS╛ o≥ <DEL>⌐ beforσ beginninτ oµá line«á  N∩ ì
  424. limi⌠á o≥á erro≥á checkinτá i≤ donσ oε thσ sizσ oµ thσá inpu⌠á linσá buffe≥ ì
  425. (buffe≥á overflo≈á i≤ possible¼á s∩ i⌠ i≤ recommendeΣ tha⌠ buffe≥á i≤á madσ ì
  426. arbitraril∙ large)«á  HasΦ marδ (#⌐ i≤ printeΣ iε responsσ t∩ Ctrl-R¼ Ctrl-ì
  427. U, and Ctrl-X.
  428. :String Output Routines -- PRINT, LPRINT, PSTR, LPSTR
  429.      Routine Names:  PRINT, LPRINT
  430.      Function║á  Prin⌠á strinτá pointeΣ t∩ Γ∙ thσ returεá addres≤á oεá CON║ 
  431. (PRINT⌐ o≥ LST║ (LPRINT)«á  Strinτ i≤ terminateΣ b∙ ß binar∙ 0«  Contro∞ i≤ 
  432. returned to byte following string.
  433.      Inputs:  Return Address = pointer to string to be printed
  434.      Outputs:  HL points to byte after string
  435.                (string is printed on CON: or LST:)
  436.      Registers Affected:  HL
  437.      SYSLIB Routines Called:  PSTR (for PRINT); LSTR (for LPRINT)
  438.      Specia∞á Erro≥ Conditions║  Thσ strinτ MUS╘ bσ terminateΣ b∙ ßá binar∙ ì
  439. 0!!!
  440.  
  441.      Routine Names:  PSTR, LPSTR
  442.      Function║á  Prin⌠á strinτá pointeΣ t∩ b∙ H╠ oεá CON║á (PSTR⌐á o≥á LST║ ì
  443. (LPSTR).  String is terminated by a binary 0.
  444.      Inputs:  HL = pointer to string to be printed
  445.      Outputs:  -None- (string is printed on CON: or LST:)
  446.      Registers Affected:  -None-
  447.      SYSLI┬á Routine≤ Called║  CCOUT¼á COU╘ (fo≥ PSTR)╗á LCOUT¼á LOU╘á (fo≥ ì
  448. LPSTR)
  449.      Specia∞á Erro≥ Conditions║  Thσ strinτ MUS╘ bσ terminateΣ b∙ ßá binar∙ ì
  450. 0!!!
  451. :Numeric Output Routines -- PHL4HC,PHL5DC,PHLDC,PA2HC,PA3DC,PADC, L's, M's
  452.      Routine Names:  PHL4HC, LHL4HC
  453.      Function║á  Prin⌠á H╠á a≤á fou≥ (4⌐á hexadecima∞á character≤á oεá CON║ ì
  454. (PHL4HC) or LST: (LHL4HC).
  455.      Inputs:  HL = value to be printed
  456.      Outputs:  -None- (Value is printed)
  457.      Registers Affected:  -None-
  458.      SYSLIB Routines Called:  PA2HC (for PHL4HC); LA2HC (for LHL4HC)
  459.      Special Error Conditions:  -None-
  460.  
  461.      Routine Name:  MHL4HC
  462.      Function║á  Storσ H╠ a≤ fou≥ (4⌐ hexadecima∞ character≤ iε thσá 4-bytσ ì
  463. memor∙ buffe≥ pointeΣ t∩ b∙ DE«  Oε return¼ D┼ point≤ t∩ thσ bytσ followinτ ì
  464. this buffer.
  465.      Inputs:  HL = value to be converted and stored
  466.               DE points to 4-byte buffer
  467.      Outputs:  DE points to byte after buffer
  468.      Registers Affected:  DE
  469.      SYSLIB Routines Called:  MA2HC
  470.      Special Error Conditions:  -None-
  471.  
  472.      Routine Names:  PHL5DC, LHL5DC
  473.      Function║  Prin⌠ H╠ a≤ fivσ (5⌐ decima∞ character≤ oε CON║ (PHL5DC⌐ o≥ ì
  474. LST║ (LHL5DC).
  475.      Inputs:  HL = value to be printed
  476.      Outputs:  -None- (Value is printed)
  477.      Registers Affected:  -None-
  478.      SYSLIB Routines Called:  POUT (for PHL5DC); LOUT (for LHL5DC)
  479.      Special Error Conditions:  -None-
  480.  
  481.      Routine Name:  MHL5DC
  482.      Function║  Storσ H╠ a⌠ fivσ (5⌐ decima∞ character≤ iε memor∙ iε thσ 5-ì
  483. bytσ buffe≥ pointeΣ t∩ b∙ DE«á  Oε return¼ D┼ point≤ t∩ thσ bytσ afte≥ thi≤ ì
  484. buffer.
  485.      Inputs:  HL = value to be converted and stored
  486.               DE points to a 5-byte buffer
  487.      Outputs:  DE points to the byte following the buffer
  488.      Registers Affected:  DE
  489.      SYSLIB Routines Called:  -None-
  490.      Special Error Conditions:  -None-
  491.  
  492.      Routine Names:  PHLDC, LHLDC
  493.      Function║  Prin⌠ H╠ a≤ u≡ t∩ fivσ (5⌐ decima∞ character≤ witΦá leadinτ ì
  494. spaces (<SP>) on CON: (PHLDC) or LST: (LHLDC).
  495.      Inputs:  HL = value to be printed
  496.      Outputs:  -None- (Value is printed)
  497.      Registers Affected:  -None-
  498.      SYSLIB Routines Called:  POUT (for PHLDC); LOUT (for LHLDC)
  499.      Special Error Conditions:  -None-
  500.  
  501.      Routine Name:  MHLDC
  502.      Function║á  Storσ H╠ a≤ u≡ t∩ fivσ (5⌐ decima∞ character≤ witΦ leadinτ ì
  503. spaces in the 5-byte memory buffer pointed to by DE.
  504.      Inputs:  HL = value to be converted and printed
  505.               DE points to the 5-byte buffer
  506.      Outputs:  DE points to the byte after the buffer
  507.      Registers Affected:  DE
  508.      SYSLIB Routines Called:  -None-
  509.      Special Error Conditions:  -None-
  510.  
  511.      Routine Names:  PA2HC, LA2HC
  512.      Function║á  Prin⌠ ┴ a≤ tw∩ (2⌐ hexadecima∞ character≤ oε CON║á (PA2HC⌐ ì
  513. or LST: (LA2HC).
  514.      Inputs:  A = value to be printed
  515.      Outputs:  -None- (Value is printed)
  516.      Registers Affected:  -None-
  517.      SYSLI┬á Routine≤ Called║  E╬ (fo≥ both)╗á POU╘ (fo≥ PA2HC)╗á LOU╘ (fo≥ ì
  518. LA2HC)
  519.      Special Error Conditions:  -None-
  520.  
  521.      Routine Name:  MA2HC
  522.      Function║á  Storσá ┴ a≤ tw∩ (2⌐ hexadecima∞ character≤ iεá thσá 2-bytσ ì
  523. memory buffer pointed to by HL.  On return, HL points to byte after buffer.
  524.      Inputs:  A = value to be converted and stored
  525.               HL points to 2-byte buffer
  526.      Outputs:  HL points to byte after this buffer
  527.      Registers Affected:  HL
  528.      SYSLIB Routines Called:  EN
  529.      Special Error Conditions:  -None-
  530.  
  531.      Routine Names:  PA3DC, LA3DC
  532.      Function║  Prin⌠ ┴ a≤ threσ (3⌐ decima∞ character≤ oε CON║ (PA3DC⌐á o≥ ì
  533. LST: (LA3DC).
  534.      Inputs:  A = value to be printed
  535.      Outputs:  -None- (Value is printed)
  536.      Registers Affected:  -None-
  537.      SYSLIB Routines Called:  POUT (for PA3DC); LOUT (for LA3DC)
  538.      Special Error Conditions:  -None-
  539.  
  540.      Routine Name:  MA3DC
  541.      Function║á  Storσá ┴á a≤ threσ (3⌐ decima∞ character≤á iεá thσá 3-bytσ ì
  542. memor∙ buffe≥ pointeΣ t∩ b∙ HL«  Oε return¼ H╠ point≤ t∩ thσ bytσ afte≥ thσ ì
  543. buffer.
  544.      Inputs:  A = value to be converted and stored
  545.               HL points to the 3-byte buffer
  546.      Outputs:  HL points to the byte after the buffer
  547.      Registers Affected:  HL
  548.      SYSLIB Routines Called:  -None-
  549.      Special Error Conditions:  -None-
  550.  
  551.      Routine Names:  PADC, LADC
  552.      Function║á  Prin⌠ ┴ a≤ u≡ t∩ threσ (3⌐ decima∞ character≤ witΦ leadinτ ì
  553. spaces (<SP>)áonáCON: (PADC) or LST: (LADC).
  554.      Inputs:  A = value to be printed
  555.      Outputs:  -None- (Value is printed)
  556.      Registers Affected:  -None-
  557.      SYSLIB Routines Called:  POUT (for PADC); LOUT (for LADC)
  558.      Special Error Conditions:  -None-
  559.  
  560.      Routine Name:  MADC
  561.      Function║  Storσ ┴ a≤ u≡ t∩ threσ (3⌐ decima∞ character≤ witΦá leadinτ ì
  562. space≤ iε thσ 3-bytσ memor∙ buffe≥ pointeΣ t∩ b∙ HL«á  Oε return¼ H╠ point≤ ì
  563. to the byte after the buffer.
  564.      Inputs:  A = value to be converted and stored
  565.               HL points to the 3-byte memory buffer
  566.      Outputs:  HL points to the byte after the buffer
  567.      Registers Affected:  HL
  568.      SYSLIB Routines Called:  -None-
  569.      Special Error Conditions:  -None-
  570. :String and Value Comparision Routines -- COMPHD,COMPB,COMPBC,SCANNER,INSTR
  571.      Routine Name:  COMPHD
  572.      Function║  Comparσ H╠ t∩ DE«  Oε return¼ Zer∩ Flaτ Se⌠ =╛ HL=DE¼ Carr∙ ì
  573. Flag Set => HL<DE.
  574.      Inputs:  HL, DE -- Values to compare
  575.      Outputs:  Zero and Carry Flags
  576.      Registers Affected:  PSW
  577.      SYSLIB Routines Called:  -None-
  578.      Special Error Conditions:  -None-
  579.  
  580.      Routine Names:  COMPB, COMPBC
  581.      Function║  Vecto≥ Comparσ Routines«á  Comparσ thσ vecto≥ pointeΣ t∩ b∙ ì
  582. H╠ witΦ tha⌠ pointeΣ t∩ b∙ D┼ (Vector≤ arσ oµ equa∞ length)«  Vector≤ arσ ┬ ì
  583. byte≤ lonτ fo≥ COMP┬ anΣ B├ byte≤ lonτ fo≥ COMPBC«á  Oε exit¼ Zer∩ Flaτ Se⌠ ì
  584. indicate≤á tha⌠á vector≤ arσ identical╗á Carr∙ Flaτ Se⌠ indicate≤ tha⌠á thσ ì
  585. vector pointed to by HL is less than the vector pointed to by DE.
  586.      Inputs:  HL, DE -- Pointers to vectors to compare
  587.               B (for COMPB), BC (for COMPBC) -- number of bytes in vectors
  588.      Outputs:  Zero and Carry Flags
  589.      Registers Affected:  PSW
  590.      SYSLIB Routines Called:  -None-
  591.      Special Error Conditions:  -None-
  592.  
  593.      Routine Name:  SCANNER
  594.      Function║  SCANNE╥ scan≤ thσ vecto≥ oµ byte≤ pointeΣ t∩ b∙ H╠ fo≥á thσ ì
  595. vecto≥á oµ byte≤ pointeΣ t∩ b∙ DE«á  Thσ HL-bytσ vecto≥ i≤ ┬ byte≤ lonτ anΣ ì
  596. thσ DE-bytσ vecto≥ i≤ ├ byte≤ long«á  Oε return¼ iµ found¼ H╠ point≤ t∩ thσ ì
  597. beginninτ locatioε withiε thσ origina∞ H╠ vecto≥ oµ thσ locateΣ vecto≥á anΣ ì
  598. thσá Zer∩á Flaτ i≤ Set╗á iµ no⌠ found¼á Zer∩ Flaτ i≤ no⌠ se⌠ anΣ H╠ i≤á no⌠ ì
  599. affected (points to the beginning of the original HL-byte vector).
  600.      Inputs:  HL = Pointer to vector to be scanned
  601.               DE = Pointer to vector to scan for
  602.               B = Number of bytes in HL-vector
  603.               C = Number of bytes in DE-vector
  604.      Outputs:  If found, Zero Set and HL pts to located vector
  605.                If not found, Zero Reset and HL unaffected
  606.      Registers Affected:  PSW, HL
  607.      SYSLIB Routines Called:  -None-
  608.      Specia∞ Erro≥ Conditions║  Automatiπ succes≤ iµ vecto≥ searcheΣ fo≥ i≤ ì
  609. null.
  610.  
  611.      Routine Name:  INSTR
  612.      Function║á  INSTRIN╟ Function«á  Scaε thσ strinτ pointeΣ t∩ b∙ H╠á fo≥ ì
  613. thσ strinτ pointeΣ t∩ b∙ DE«  ┴ strinτ i≤ ß vecto≥ oµ byte≤ terminateΣ b∙ ß ì
  614. binary 0.
  615.           Oε return¼á iµ found¼á Zer∩ Flaτ i≤ Se⌠ anΣ H╠ point≤ t∩ 1s⌠ bytσ ì
  616. oµ substrinτ withiε scanneΣ string╗á iµ no⌠ found¼ Zer∩ Flaτ i≤ no⌠ se⌠ anΣ ì
  617. HL is not affected.
  618.      Inputs:  HL = Pointer to string to be scanned
  619.               DE = Pointer to string to scan for
  620.      Outputs:  If found, Zero Set and HL pts to located substring
  621.                If not found, Zero Reset and HL unaffected
  622.      Registers Affected:  PSW, HL
  623.      SYSLIB Routines Called:  -None-
  624.      Specia∞ Erro≥ Conditions║  Automatiπ succes≤ iµ strinτ searcheΣ fo≥ i≤ ì
  625. null.
  626. :<CR> <LF> Output -- CRLF and LCRLF
  627.      Routine Names:  CRLF, LCRLF
  628.      Function:  Print <CR> and <LF> on CON: (CRLF) or LST: (LCRLF).
  629.      Inputs:  -None-
  630.      Outputs:  -None- (<CR> <LF> is printed)
  631.      Registers Affected:  -None-
  632.      SYSLIB Routines Called:  POUT (for CRLF); LOUT (for LCRLF)
  633.      Special Error Conditions:  -None-
  634. :Conditional Input -- CONDIN
  635.      Routine Name:  CONDIN
  636.      Function║  Inpu⌠ ß characte≥ froφ CON║ iµ onσ i≤ available╗ otherwise¼ ì
  637. return a flag stating that a character is not available on CON:.
  638.      Inputs:  -None-
  639.      Outputs:  A = character typed at CON: (if available)
  640.                Zero Flag is set (Z) if no character is available
  641.                Zero Flag is reset (NZ) if character is available
  642.      Registers Affected:  PSW
  643.      SYSLIB Routines Called:  CST, CIN
  644.      Special Error Conditions:  -None-
  645. :General Input Routines -- CST, CIN, RIN
  646.      Routine Name:  CST
  647.      Function║á  Inpu⌠á thσ statu≤ oε CON║ iε Registe≥á A«á  Iµá ReaΣá Datß ì
  648. Available, A=0; otherwise, A=1.
  649.      Inputs:  -None-
  650.      Outputs:  A = Console Status
  651.                    0 --> Read Data Available (RDA)
  652.                    1 --> Read Data Not Available (Not RDA)
  653.      Registers Affected:  PSW
  654.      SYSLIB Routines Called:  -None-
  655.      Special Error Conditions:  -None-
  656.  
  657.      Routine Names:  CIN, RIN
  658.      Function║ Inpu⌠ characte≥ froφ CON║ (CIN⌐ o≥ RDR║ (RIN⌐ iε Registe≥ A.
  659.      Inputs:  -None-
  660.      Outputs:  A = Character input from CON: or RDR:
  661.      Registers Affected:  PSW
  662.      SYSLIB Routines Called:  -None-
  663.      Special Error Conditions:  -None-
  664. :General Output Routines -- COUT, LOUT, POUT, CCOUT, CLOUT, CPOUT
  665.      Routine Names:  COUT, LOUT, POUT
  666.      Function║  Outpu⌠ characte≥ iε Registe≥ ┴ t∩ CON║ (COUT)¼ LST║ (LOUT)¼ ì
  667. or PUN: (POUT).
  668.      Inputs:  A = Character to output
  669.      Outputs:  -None- (Character is output)
  670.      Registers Affected:  -None-
  671.      SYSLIB Routine Called:  -None-
  672.      Special Error Conditions:  -None-
  673.  
  674.      Routine Names:  CCOUT, CLOUT, CPOUT
  675.      Function║  Outpu⌠ characte≥ iε Registe≥ ┴ t∩ CON║ (COUT)¼ LST║ (LOUT)¼ ì
  676. o≥á PUN║á (POUT⌐ witΦ contro∞ characte≥ processing«á  Al∞á character≤á witΦ ì
  677. ASCI╔á code≤á les≤ thaε <SP╛ (spacσ ╜ 20H⌐ iε valuσ excep⌠á <NULL>¼á <BEL>¼ ì
  678. <BS>¼á <LF>¼á anΣá <CR╛á arσá outpu⌠á a≤ aε uparro≈á (^⌐á followeΣá b∙á thσ ì
  679. correspondinτ lette≥ generateΣ b∙ addinτ 40╚ t∩ thσ characte≥ valuσá (i.e.¼ ì
  680. ▒ output≤ a≤ "^A"¼á ▓ a≤ "^B"¼ etc.)«  Again¼ thσ character≤ les≤ thaε <SP╛ ì
  681. in value NOT output in this manner are --
  682.  
  683.           <NULL>  <BEL>  <BS>  <LF>  <CR>
  684.  
  685. Any character of value greater than <SP> is output normally.
  686.      Inputs:  A = Character to output
  687.      Outputs:  -None- (Character/Code is output)
  688.      Registers Affected:  PSW (only the Flags; Register A is NOT affected)
  689.      SYSLI┬ Routine≤ Called║  COU╘ (fo≥ CCOUT)╗ LOU╘ (fo≥ CLOUT)╗ POU╘ (fo≥ ì
  690. CPOUT)
  691.      Special Error Conditions:  -None-
  692. :Miscellaneou≤ Routine≤ -- BDOS¼á CAPS¼á CIO¼á EN¼á FILLB¼á FILLBC¼á MOVEB¼ ì
  693. MOVEBC, CATH
  694.      Routine Name:  BDOS
  695.      Function║á  Cal∞ CP/═ Entr∙ Poin⌠ a⌠ locatioε ╡ anΣ preservσ Register≤ ì
  696. HL and DE.
  697.      Inputs:  -As Required by User-
  698.      Outputs:  PSW, BC
  699.      Registers Affected:  PSW, BC
  700.      SYSLIB Routines Called:  -None-
  701.      Special Error Conditions:  -Determined by Routines Called-
  702.  
  703.      Routine Name:  CAPS
  704.      Function║á  Capitalizσ ASCI╔ characte≥ iε Registe≥ ┴ iµ i⌠á i≤á lower-ì
  705. case alphabetic (a-z); otherwise, return A unaffected.
  706.      Inputs:  A = character to capitalize
  707.      Outputs:  A = capitalized character
  708.      Registers Affected:  PSW
  709.      SYSLIB Routins Called:  -None-
  710.      Special Error Conditions:  -None-
  711.  
  712.      Routine Name:  CIO
  713.      Function║á  CP/═á I/╧ througΦ BIO╙ Jum≡ Table«á  Thi≤ routinσá indexe≤ ì
  714. int∩ thσ CP/═ BIO╙ Jum≡ Tablσ anΣ allow≤ thσ use≥ t∩ addres≤ an∙ routinσ iε ì
  715. thσá BIO╙á (accessablσá routine≤á only)«á  I⌠ i≤á calleΣá witΦá Registe≥á ┴ ì
  716. containinτá thσ inde° offse⌠ (seσ tablσ below⌐ anΣ Register≤ B├á containinτ ì
  717. an∙ requireΣ inpu⌠ arguments«  Thσ followinτ tablσ summarize≤ thσ BIO╙ Jum≡ ì
  718. Table entries --
  719.  
  720. Offset Function                    Offset Function
  721.    0   Warm Start                     7   Home Disk Head
  722.    1   Console Status; A=0FFH if      8   Select Disk; C=Disk Number (A=0,
  723.        char ready, A=0 if not             B=1, C=2, D=3) passed
  724.    2   Console Input; A=result        9   Set Track Number; C=Track Number
  725.    3   Console Output; C=char passed      passed
  726.    4   List Output; C=char passed    10   Set Sector Number; C=Sector
  727.    5   Punch Output; C=char passed        Number passed
  728.    6   Reader Input; A=result        11   Set DMA Address; BC=adr passed
  729.                                      12   Read Disk; A=0 if ok, 1 if err
  730.                                      13   Write Disk; A=0 if ok, 1 if err
  731. Any other offset results in a Cold Start being performed.
  732.  
  733.      Inputs:  A = Offset
  734.               BC = Data Passed to Routine
  735.      Outputs:  A = Output or Error Indicator
  736.      Registers Affected:  PSW
  737.      SYSLIB Routines Called:  -None-
  738.      Special Error Conditions:  -None-
  739.  
  740.      Routine Name:  EN
  741.      Function║á  Exchangσ Nybble≤ iε Register A╗á High-orde≥ fou≥ bit≤á arσ ì
  742. exchanged with Low-order four bits of Register A.
  743.      Inputs:  A = Byte input
  744.      Outputs:  A = Byte output
  745.      Registers Affected:  PSW
  746.      SYSLIB Routines Called:  -None-
  747.      Special Error Conditions:  -None-
  748.  
  749.      Routine Names:  FILLB, FILLBC
  750.      Function║á  Thesσ routine≤ fil∞ aε areß oµ memor∙ witΦ ß constan⌠ bytσ ì
  751. value«  FILL┬ caε fil∞ u≡ t∩ ß 256-bytσ buffer¼ anΣ FILLB├ caε fil∞ u≡ t∩ ß ì
  752. 65,536-byte (within reason) buffer.
  753.      Inputs:  HL points to the first byte of the buffer to be filled
  754.               B (for FILLB) or BC (for FILLBC) = number of bytes in buffer
  755.               A = byte value to fill buffer with
  756.      Outputs:  -None- (Buffer is filled)
  757.      Registers Affected:  -None-
  758.      SYSLIB Routines Called:  -None-
  759.      Special Error Conditions:  -None-
  760.  
  761.      Routine Names:  MOVEB, MOVEBC
  762.      Function║á  Movσá thσ blocδ oµ memor∙ pointeΣ t∩ b∙ H╠ t∩á thσá memor∙ ì
  763. locatioεá pointeΣ t∩ b∙ DE«á  MOVE┬ caε movσ u≡ t∩ ß 256-bytσá buffer¼á anΣ ì
  764. MOVEBC can move up to a 65,536-byte buffer.
  765.      Inputs:  HL points to the first byte of the buffer to move
  766.               DE points to the first byte of the buffer to move to
  767.               B (for MOVEB) or BC (for MOVEBC) = number of bytes in buffer
  768.      Outputs:  -None- (Buffer is moved)
  769.      Registers Affected:  -None-
  770.      SYSLIB Routines Called:  -None-
  771.      Special Error Conditions:  -None-
  772.  
  773.      Routine Name:  CATH
  774.      Function║á  Conver⌠ thσ ASCI╔ Hexadecima∞ characte≥ iε thσ ┴á Registe≥ ì
  775. t∩ binar∙ iε thσ ┴ Register«á  Iµ invaliΣ characte≥ (no⌠ 0-9¼á A-F)¼ returε 
  776. <SP> (20 Hex) in A Register as error code.
  777.      Input:  A = ASCII Hex Character (0-9, A-F)
  778.      Output:  A = Binary value represented by char
  779.      Registers Affected:  PSW
  780.      SYSLIB Routines Called:  -None-
  781.      Specia∞ Erro≥ Conditions║  Iµ invaliΣ he° char¼ <SP╛ (2░ Hex⌐ returneΣ ì
  782. in A Register.
  783.