home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / ZCPR33 / S-Z / SLB36HLP.LBR / SYSLIBE.HZP / SYSLIBE.HLP
Text File  |  2000-06-30  |  8KB  |  232 lines

  1. Note on Switched Output
  2. PRINT/EPRINT/LPRINT/SPRINT -- Print String at Return Address
  3. PSTR/EPSTR/LPSTR/SPSTR     -- Print String at HL
  4. Overview of File Name Output
  5. Sample File Name Outputs
  6. LFNn/PFNn/SFNn             -- Print File Name
  7. MFNn                       -- Store File Name
  8. :Note on Switched Output
  9.  
  10.      Thσá SwitcheΣá Outpu⌠ serie≤ oµ routine≤á i≤á differen⌠ ì
  11. froφá thσá othe≥ serie≤ iε tha⌠ thσ SwitcheΣá Outpu⌠á serie≤ ì
  12. use≤ aε externa∞ datß bytσ t∩ determinσ wherσ thσ outpu⌠á i≤ ì
  13. t∩ bσ routed«  Thi≤ bytσ i≤ referreΣ t∩ a≤ SCTLF╠ (╙ Contro∞ ì
  14. Flag)¼ anΣ it≤ switchinτ functioε i≤ illustrateΣ below:
  15.  
  16.      ----- SCTLFL -----
  17.       Binary        Hex       Outputs to
  18.  
  19.      00000000B      00H       Nothing
  20.      00000001B      01H       Console
  21.      10000000B      80H       Printer
  22.      10000001B      81H       Console and Printer
  23.  
  24.  
  25.      Iµá thσá programme≥á doe≤á no⌠á initializσá thσá SCTLF╠ ì
  26. variablσ beforσ hσ use≤ aε S-routine¼á outpu⌠ wil∞ g∩ t∩ thσ ì
  27. consolσ (defaul⌠ valuσ oµ SCTLF╠ i≤ 01H).
  28.  
  29.  
  30.      Aε examplσ oµ codσ usinτ S-routine≤ is:
  31.  
  32.           EXT  SCTLFL,SADC    ; SCTLFL flag, SADC routine
  33.           ...
  34.           MVI  A,81h     ; enable printer and console
  35.           STA  SCTLFL
  36.           ...
  37.           MVI  A,32      ; print number 32
  38.           CALL SADC
  39.           ...
  40.           MVI  A,80H     ; enable printer only
  41.           STA  SCTLFL
  42.           ...
  43.           MVI  A,150     ; print number 150
  44.           CALL SADC
  45.           ...
  46.  
  47.  
  48. :Print String at Return Address
  49.      Routine:  PRINT, EPRINT, LPRINT, SPRINT
  50.  
  51.      Function:
  52.  
  53.      Prin⌠á strinτ pointeΣ t∩ b∙ thσ returε addres≤ oεá CON║ ì
  54. (PRIN╘á anΣá EPRINT)¼á LST║á (LPRINT)¼á o≥á switcheΣá outpu⌠ ì
  55. (SPRINT)«á  Strinτ i≤ terminateΣ b∙ ß binar∙ 0«á  Contro∞ i≤ ì
  56. returneΣá t∩á bytσá followinτá string«áá  PRIN╘á anΣá LPRIN╘ ì
  57. interpre⌠ contro∞ characters¼á sendinτ theφ t∩ thσ CON:/LST║ ì
  58. device≤á a≤ "^có sequences«á  EPRIN╘ (fo≥ Exac⌠ Print⌐á onl∙ ì
  59. expand≤ tabs¼ sendinτ al∞ othe≥ character≤ as-is.
  60.  
  61.      Inputs:  Returε Addres≤ ╜ pointe≥ t∩ strinτ t∩ be
  62.           printed
  63.  
  64.      Outputs:  HL points to byte after string
  65.                (string is printed on CON: or LST:)
  66.  
  67.      Registers Affected:  HL
  68.  
  69.  
  70.      SYSLIB Routines Called:  PSTR (for PRINT);
  71.                               EPSTR (for EPRINT);
  72.                               LPSTR (for LPRINT);
  73.                               SPSTR (for SPRINT)
  74.  
  75.      Special Error Conditions:
  76.  
  77.           Thσ strinτ MUS╘ bσ terminateΣ b∙ ß binar∙ 0!!!
  78.  
  79. :Print String Pointed to by HL
  80.      Routine:  PSTR, EPSTR, LPSTR, SPSTR
  81.  
  82.      Function:
  83.  
  84.      Prin⌠ strinτ pointeΣ t∩ b∙ H╠ oε CON║ (PST╥ anΣ EPSTR)¼ ì
  85. LST║áá (LPSTR)¼á o≥á switcheΣá outpu⌠á (SPSTR)«á  Strinτá i≤ ì
  86. terminateΣá b∙á ßá binar∙ 0«á  H╠ point≤ t∩á bytσá followinτ ì
  87. strinτáá oεá exit«áá  PST╥á anΣá LPST╥áá interpre⌠áá contro∞ ì
  88. characters¼á sendinτá theφ t∩ thσ CON:/LST║á device≤ a≤ "^có ì
  89. sequences«á  EPST╥á (fo≥á Exac⌠ Print⌐á onl∙á expand≤á tabs¼ ì
  90. sendinτ al∞ othe≥ character≤ as-is.
  91.  
  92.      Inputs:  HL = pointer to string to be printed
  93.  
  94.      Outputs:  HL pts to the byte following the terminating 0
  95.                 (string is printed on CON: or LST:)
  96.  
  97.      Registers Affected:  HL
  98.  
  99.  
  100.      SYSLI┬áRoutine≤ Called║  CCOUT¼ COU╘ (fo≥ PSTR)╗
  101.                                COUT (for EPSTR);
  102.                                CLOUT¼ LOU╘ (fo≥ LPSTR);
  103.                                CSOUT, SOUT (for SPSTR)
  104.  
  105.      Special Error Conditions:
  106.  
  107.           Thσ strinτ MUS╘ bσ terminateΣ b∙ ß binar∙ 0!!!
  108.  
  109. :Overview of File Name Output
  110.  
  111.      Thσá filσ namσ outpu⌠ routine≤ describeΣ herσ arσá useΣ ì
  112. t∩á outpu⌠á thσá filσ namσ anΣ typσ storeΣ iε aεá FC┬á iεá ß ì
  113. variet∙ oµ forms«  Thesσ form≤ arσ illustrateΣ a≤ follows:
  114.  
  115. Ex 1           Ex 2           Comment
  116. ----           ----           -------
  117. MYFILE__.TY╨   T_______.T_▀   12-cha≥ field¼ embeddeΣ spaces
  118. MYFILE.TYP__   T.T_________   12-char field, trailing spaces
  119. MYFILE.TYP     T.T            N-char field, no spaces
  120.  
  121.  
  122.      Iεá addition¼á eacΦá oµ thesσ routine≤ ha≤ ß prefi°á t∩ ì
  123. thei≥ names║á  L¼ M¼ P¼ o≥ S«  Thesσ prefixe≤ indicatσ wherσ ì
  124. thσá outpu⌠ i≤ goinτ to«á  ╠ indicate≤ thσ LST║á devicσá (o≥ ì
  125. printer)¼ ═ indicate≤ memory¼ ╨ indicate≤ thσ consolσ (prin⌠ ì
  126. thσ output)¼á anΣ ╙ indicate≤ ß switcheΣ outpu⌠ t∩á nothing¼ ì
  127. the console, the printer, or both.
  128.  
  129.  
  130.      For example,
  131.  
  132.           PFN▒ send≤ thσ filσ namσ anΣ typσ pointeΣ t∩ b∙ D┼ ì
  133. iε ß 12-characte≥ fielΣ witΦ embeddeΣ space≤ t∩ thσ console¼ ì
  134. whilσá LFN▒ send≤ thσ filσ namσ anΣ typσ pointeΣ t∩ b∙ D┼ iε ì
  135. ß 12-characte≥ fielΣ witΦ embeddeΣ space≤ t∩ thσ printer.
  136.  
  137. :Sample File Name Outputs
  138.      Thσá followinτá table≤á illustratσ ho≈ value≤á wil∞á bσ ì
  139. outpu⌠á b∙ thσ variou≤ routines«á  Thσ underscorσá characte≥ ì
  140. (_⌐ indicate≤ ß space.
  141.  
  142. FCB Name/Type   xFN1           xFN2           xFN3
  143.  
  144. FILENAMETY╨     FILENAME.TY╨   FILENAME.TY╨   FILENAME.TYP
  145. MYFILE  TXT     MYFILE__.TXT   MYFILE.TXT     MYFILE.TXT__
  146. R       R       R_______.R__   R.R            R.R_________
  147. S               S_______.___   S.             S.__________
  148.         T       ________.T__   .T             .T__________
  149.  
  150.      "x", as in "xFN1", may be any one of:
  151.  
  152.      Letter    Example   Outputs To
  153.  
  154.         L      LFN1      LST: Device (printer)
  155.         M      MFN1      Memory pted to by HL
  156.         P      PFN1      CON: Device (console)
  157.         S      SFN1      Switched Output
  158.  
  159. :Print File Name Routines
  160.      Routine:  LFNn, PFNn, SFNn
  161.  
  162.      Function:
  163.  
  164.      Prin⌠ FC┬ Filσ Namσ anΣ Typσ pointeΣ t∩ b∙ D┼ (FCB+▒ i≤ ì
  165. addres≤á iε DE⌐ t∩ CON║á (PFNn)¼á LST║á (LFNn)¼á o≥ SwitcheΣ ì
  166. Outpu⌠ (SFNn)«á  Thσ variou≤ value≤ oµ ε arσ ▒ t∩ 3¼ wherσ ▒ ì
  167. output≤ witΦ embeddeΣ spaces¼á ▓ output≤ witΦ n∩ spaces¼ anΣ ì
  168. │ output≤ witΦ trailinτ space≤ (ie¼ PFN1¼ PFN2¼ anΣ PFN3).
  169.  
  170.      Inputs:  DE = Address of FCB+1
  171.  
  172.      Outputs:  -None- (Value is printed)
  173.  
  174.      Registers Affected:  -None-
  175.      SYSLI┬áRoutine≤ Called║  LOU╘ (fo≥ LFNn);
  176.                                COUT (for PFNn);
  177.                                SOUT (for SFNn)
  178.      Special Error Conditions:  None
  179.  
  180. :Store File Name Routines
  181.  
  182.      Routine:  MFNn
  183. è     Function:
  184.  
  185.      Storσ appropriatσ outpu⌠ int∩ memor∙ a⌠ buffe≥á pointeΣ ì
  186. t∩ b∙ HL«  FCB+▒ i≤ pointeΣ t∩ b∙ D┼ oε input«  Fo≥ MFN▒ anΣ ì
  187. MFN3¼á thσá numbe≥á oµ character≤ storeΣ wil∞ alway≤ bσá 12«  ì
  188. Fo≥ MFN2¼á thσ numbe≥ oµ character≤ storeΣ i≤á varying¼á bu⌠ ì
  189. will never exceed 12.
  190.  
  191.      Inputs:  DE pts to FCB+1
  192.               HL pts to memory buffer
  193.  
  194.      Outputs:  None (Characters are stored in memory buffer)
  195.  
  196.      Registers Affected:  None
  197.      SYSLIB Routines Called:  None
  198.      Special Error Conditions:  None
  199.  
  200.      Notes:
  201.  
  202.      1«á  Usσá oµá MFN▒ anΣ MFN│ i≤á quitσá straight-forwarΣ ì
  203. sincσáá the∙á alway≤á fil∞á exactl∙á 1▓á byte≤á oµáá memory«  ì
  204. Advancinτá t∩á thσá nex⌠ bytσ afte≥ thσ las⌠ bytσá i≤á quitσ ì
  205. simple, as the following code illustrates:
  206.  
  207.           ...
  208.           LXI  D,FCB+1   ; pt to FN field
  209.           LXI  H,BUFFER  ; pt to buffer
  210.           CALL MFN1      ; store name
  211.           LXI  B,12      ; skip to after last byte
  212.           DAD  B         ;   by adding 12 to HL
  213.           ...
  214.  
  215.  
  216.      2«á  Usσ oµ MFN▓ i≤ no⌠ quitσ a≤ straight-forwarΣ sincσ ì
  217. i⌠á fill≤ a⌠ mos⌠ 1▓ bytes¼á bu⌠ coulΣ fil∞ les≤ thaεá this«  ì
  218. Thi≤ probleφ caε bσ eliminateΣ b∙ usinτ thσ FILL┬ anΣá SKNS╨ ì
  219. routines, as illustrated:
  220.  
  221.           ...
  222.           LXI  H,BUFFER  ; pt to buffer
  223.           MVI  B,13      ; fill following 13 bytes with
  224.           MVI  A,' '     ;   spaces
  225.           CALL FILLB
  226.           LXI  D,FCB+1   ; pt to FN field
  227.           CALL MFN2      ; store name
  228.           CALL SKNSP     ; skip over non-spaces (HL now
  229.                          ;   points to after last character)
  230.           ...
  231.  
  232.