home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / jsage / znode3 / z3lib / libhl45a.lbr / Z3LIB.LBR / Z3LIB2.HZP / Z3LIB2.HLP
Encoding:
Text File  |  1993-06-07  |  16.3 KB  |  468 lines

  1.  Introducton to IOP Concepts                29 Aug 92
  2.  IOP            - GETION, GETIOP, GETIOS, IOMATCH, PUTIOD
  3.  IOP Recording  - IORCOFF, IORCON, IORLOFF, IORLON
  4.  DU/Max DU      - GETDUOK, GETMDISK, GETMUSER, PUTs, HIGHUSER
  5.  DU from FCB    - GCMDDU
  6.  Messages       - GETMSG, GETSHM, PUTSHM
  7.  Named Dir      - ADDNDR, DIRNDR, DUNDR, GETNDR/0, SUBNDR, IDXNDR
  8.  Path           - GETPATH
  9.  Processor Spd  - GETSPEED, PUTSPEED
  10.  Quiet Flag     - GETQUIET, PUTQUIET
  11.  RCP Address    - GETRCP
  12.  Shell Stack    - GETSH1,  GETSH2
  13.  Wheel Byte     - GETWHL,  PUTWHL
  14. :         Introduction to IOP Concepts 
  15.  
  16. This set of routines provide access to the system I/O Package
  17. (IOP).  The devices in an IOP are identified by a logical ID
  18. (referring to the generic CON,  RDR, PUN, and LST devices) and
  19. a physical ID (referring to the specific device under the
  20. generic).  By convention, routines in this collection always
  21. pass the logical ID in the B register and the physical ID in
  22. the C register.  The following table shows the assignments:
  23.  
  24.     Logical ID
  25.      (B Reg)       Device
  26.     ----------     ------
  27.         0        CON:
  28.         1        RDR:
  29.         2        PUN:
  30.         3        LST:
  31.  
  32.  
  33. The IOP status table, contained in every IOP, returns info on
  34. the physical IDs.  It tells how many physical devices (PID) are
  35. available for each logical ID, and the current assignment (0 to
  36. PID-1).  This table is structured as:
  37.  
  38.     Offset            Number of     Current
  39.     Bytes      Device    Devices    Assignment
  40.     ------      ------    ---------    ----------
  41.      0-1       CON:         Byte 0      Byte 1
  42.      2-3       RDR:         Byte 2      Byte 3
  43.      4-5       PUN:         Byte 4      Byte 5
  44.      6-7       LST:         Byte 6      Byte 7
  45.  
  46. For example, if byte 0 (number of physical consoles) is 5, then
  47. byte 1 (current physical console assignment) can only be in the
  48. range from 0 to 4.  GETIOS returns the address of this table.
  49.  
  50.  
  51. The routines in the IOP collection are:
  52.  
  53.     GETION    Return a string giving the name of the device
  54.         identified by a logical ID and a physical ID
  55.  
  56.     GETIOP    Return the address and size of the IOP
  57.  
  58.     GETIOS    Return a pointer to the IOP status table
  59.  
  60.     IOMATCH    Searches for a physical device name associated
  61.         with a particular logical ID
  62.  
  63.     PUTIOD    Select and IOP device by logical and physical ID
  64.  
  65. :IOP Address     GETION - GETIOP - GETIOS - IOMATCH - PUTIOD 
  66.  
  67. GETION - Return Address of Name for specified device
  68.  
  69.   ENTER:  B = Logical Device ID (0..3)
  70.       C = Physical ID
  71.   EXIT : HL = Address of String Naming the indicated device
  72.       A <> 0, Zero Flag Clear (NZ) if No Error
  73.         A = 0, Zero Flag Set (Z) if No IOP or Range Error
  74.   USES : AF,HL
  75.  
  76.  Usage:  GETION (Get IO Name) returns a pointer to the string
  77.   describing the device whose logical ID (0 to 3, where CON=0,
  78.   RDR=1, PUN=2, and LST=3) is in B and physical ID is in C.
  79.  
  80. GETIOP - Return address and size of IOP Buffer Definition
  81.  
  82.   ENTER: None
  83.   EXIT : HL = Address of IOP Buffer
  84.       A = # of 128-byte blocks in Buffer, Zero Clear (NZ)
  85.         A = 0, Zero Flag Set (Z) if No Buffer
  86.   USES : AF,HL
  87.  
  88.  Usage:  This routine simply returns details on the IOP Buffer
  89.   Address and size from the Environment Descriptor, but it does
  90.   not say if an IOP is resident.  To find this out, examine the
  91.   first byte of the IOP Buffer.  If zero, then no IOP is exists.
  92.  
  93.  
  94. Example:
  95.     EXT    GETIOP        ; Declare the routine
  96.     ...            ; ..preceeding code
  97.     CALL    GETIOP        ; Get IOP Buff data from ENV
  98.     JR    Z,NOIOP        ; ..jump if No IOP Buffer
  99.     LD    A,(HL)        ; Else get first byte
  100.     OR    A        ; Is anything installed?
  101.     JR    Z,LODIOP    ; ..jump to load if not there
  102.     ...            ; Else continue, IOP present
  103.  
  104. GETIOS - Return pointer to I/O Package Status Table
  105.  
  106.   ENTER: None
  107.   EXIT : HL = Address of IOP Status Table
  108.       A <> 0, Zero Flag Clear (NZ) if Ok
  109.         A = 0 Zero Set (Z) if No IOP Loaded
  110.   USES : AF,HL
  111.  
  112.  Usage:  This routine returns a pointer to the I/O Package
  113.   status table in HL.  The table is structured as:
  114.  
  115.     Offset            Number of     Current
  116.     Bytes      Device    Devices    Assignment
  117.     ------      ------    ---------    ----------
  118.      0-1       CON:          Byte 0      Byte 1
  119.      2-3       RDR:          Byte 2      Byte 3
  120.      4-5       PUN:          Byte 4      Byte 5
  121.          6-7       LST:          Byte 6      Byte 7
  122.  
  123. IOMATCH - Search for Physical Device Name for Logical ID
  124.  
  125.   ENTER: HL = Address of Device Name String
  126.       B = Logical ID (Con=0, Rdr=1, Pun=2, Lst=3)
  127.   EXIT :  C = Physical ID
  128.       A <> 0, Zero Flag Clear (NZ) if Ok
  129.         A = 0, Zero Flag Clear if Not Found or No IOP
  130.   USES : AF,C
  131.  
  132.  Usage:  This routine searches for the name of a physical
  133.   device associated with a particular logical ID.  This name
  134.   is a Null-terminated string or any character less than or
  135.   equal to a space.  The name is capitalized internally.  If
  136.   found, C returns the physical ID of the device.
  137.  
  138. Example:
  139.     EXT    IOMATCH        ; Declare the routine
  140.     ...            ; ..preceeding code
  141.     LD    HL,MYCON    ; Point to Name String
  142.     LD    B,0        ; Select CON device
  143.     CALL    IOMATCH        ; Search for the device
  144.     JR    Z,ERROR        ; ..jump error if Bad
  145.     ...            ; Else C=Physical ID of MYCON
  146.  MYCON:    DEFB    'CRT1',0    ; Name of desired CON device
  147.  
  148. PUTIOD - Select the IOP device from specified Logical ID
  149.  
  150.   ENTER:  B = Logical ID (Con=0, Rdr=1, Pun=2, Lst=3)
  151.       C = Physical ID
  152.   EXIT :  A <> 0, Zero Flag Clear (NZ) if Ok
  153.         A = 0, Zero Flag Set (Z) if No IOP or Range Error
  154.            (physical or logical ID number invalid)
  155.   USES : AF
  156.  
  157.  Usage:  This routine is used to select an IOP device from a
  158.   set of Logical and Physical IDs.  Logical ID numbers are in 
  159.   the range of 0 to 3, where CON = 0, RDR = 1, PUN = 2, and 
  160.   LST = 3.  See the introductory IOP section for more details.
  161.  
  162. :IOP Recording      IORCOFF - IORCON - IORLOFF - IORLON 
  163.  
  164. IORCON  - Turn Console I/O Recording On in Current IOP
  165. IORCOFF - Turn Console I/O Recording Off in Current IOP
  166. IORLON  - Turn List I/O Recording On in Current IOP
  167. IORLOFF - Turn List I/O Recording Off in Current IOP
  168.  
  169.   ENTER: HL = Addr of ZCPR3 FCB for recorded information
  170.   EXIT :  A <> 0, Zero Flag Clear (NZ) if Ok
  171.         A = 0, Zero Flag Set (Z) if No IOP or
  172.             recording not supported in IOP
  173.   USES : AF
  174.  
  175.  Usage:  These routines enable or disable functions specified
  176.   above.  The FCB passed to these routines is a standard ZCPR3
  177.   FCB, where offset 0 contains the disk and offset 13 contains
  178.   the user data.  A particular IOP may or may not pay attention
  179.   to this FCB pointer, depending on implementation.
  180.  
  181. :DU   GETDUOK, GETMDISK, GETMUSER, PUTDUOK, PUTMDISK, PUTMUSER 
  182.  
  183. GETDUOK - Return the value of the DUOK flag
  184.  
  185.   ENTER: None
  186.   EXIT : A <> 0, Zero Flag Clear (NZ) if DU: use Ok
  187.         A = 0, Zero Flag Set (Z) if DU: use NOT Allowed
  188.   USES : AF
  189.  
  190.  Usage:  Return the DUOK flag value which tells the program if
  191.   it is permissible to specify the DU: prefix to change Disk
  192.   and User area.  ZCPR3 utilities can always specify a DIR:
  193.   prefix (named directory) in identifying the Disk and User
  194.   area to examine, but in some "secure" applications it is not
  195.   desirable to allow the user to employ the DU: prefix to
  196.   access ANY Disk/User area.  This flag (DUOK) tells the
  197.   utility if it is OK for the user to employ the DU: prefix.
  198.  
  199. GETMDISK - Return the Maximum allowable Disk Number
  200.  
  201.   ENTER: None
  202.   EXIT : A = Maximum Disk Number (A = 1,..P = 16)
  203.   USES : AF
  204.  
  205.  Usage:  This routine is used to obtain information from the
  206.   ZCPR3 Environment Descriptor which may be used to restrict
  207.   access to certain parts of the system.  For instance, a
  208.   "normal user" may be denied access to disks C and D and to
  209.   any user area beyond 10.  A "priveleged user" who has the
  210.   power to change the ZCPR3 Environment Descriptor can gain
  211.   access to any desired disk or user area.
  212.  
  213. GETMUSER - Return the Maximum allowable User Area Number
  214.  
  215.   ENTER: None
  216.   EXIT : A = Maximum allowable User Ares (0..31)
  217.   USES : AF
  218.  
  219.  Usage:  This routine provides information from the ZCPR3
  220.   Environment Descriptor which may be used to restrict access
  221.   to certain parts of the system.  For instance, a "normal
  222.   user" may be denied access to Disks C and D and to any User
  223.   area beyond 10.  A "priveleged user" who has the power to
  224.   change the ZCPR3 Environment Descriptor can gain access to
  225.   any desired Disk or User Area.
  226.  
  227. PUTDUOK - Set the DU OK byte to specified value
  228.  
  229.   ENTER: A = DUOK Value (0 = DU Not Ok, 0FFH = DU is Ok)
  230.   EXIT : None
  231.   USES : None
  232.  
  233.  Usage:  This routine sets the DU OK byte from A.  If A = 0,
  234.   DUOK is False and DU: form of file specification is NOT Ok.
  235.   If A<>0 (0FFH is preferred), DUOK is True and file specifi-
  236.   cation using the DU: form is permitted.
  237.  
  238. PUTMDISK - Set the Maximum Allowable Disk in the ENV
  239.  
  240.   ENTER: A = Maximum Allowable Disk Number (A = 1,..P = 16)
  241.   EXIT : None
  242.   USES : None
  243.  
  244.  Usage:  This routine sets the maximum allowable disk in the
  245.   Environment Descriptor.  Valid Disk numbers range from 1 for
  246.   Drive A, to 16 for Drive P.
  247.  
  248. PUTMUSER - Set the Maximum Allowable User Number (0..31)
  249.  
  250.   ENTER: A = Maximum Allowable User Number (0..31)
  251.   EXIT : None
  252.   USES : None
  253.  
  254.  Usage:  This routine sets the Maximum allowable User Area in
  255.   the Environment Descriptor.  Valid User numbers range from 0
  256.   through 31.
  257.  
  258. HIGHUSER - Return flag showing Users > 15 Support             (*)
  259.  
  260.   ENTER: None
  261.   EXIT : F - Zero Clear (NZ) if Users > 15 supported
  262.         Zero Set (Z) if No ZCPR 3.3 or NO users > 15
  263.      A - Undefined
  264.   USES : AF
  265.   REQUIREMENTS: Command Processor must be ZCPR 3.3 or later
  266.  
  267.  Usage:  This routine returns a flag indicating whether User
  268.   Numbers greater than 15 are supported.  This definition is
  269.   obtained from the ZCPR 3.3 or later Command Processor.
  270.   NOTE: The Command Processor must NOT have been overwritten.
  271.  
  272. :GCMDDU - Return Drive and User Number in External FCB         (*)
  273.  
  274.   ENTER: None
  275.   EXIT : BC = DU.  B=Drive (A=0,..P=15), C=User (0..31)
  276.   USES : BC
  277.   REQUIREMENTS: FCB MUST have been parsed by ZCPR 3.3 or later
  278.         which places User # in FCB+13, Drive in FCB+14.
  279.  
  280.  Usage:  This routine returns the Drive and User for the File
  281.   specified in the ZCPR 3.3 and later External FCB.  It is
  282.   often used to determine where the file was actually found
  283.   (Shell, Path, etc) in order to log into, or save that
  284.   location.
  285.  
  286. :Messages     GETMSG - GETSHM - PUTSHM 
  287.  
  288. GETMSG - Return the address of the ZCPR3 Message Buffer
  289.  
  290.   ENTER: None
  291.   EXIT : HL = Address of the ZCPR3 Message Buffer
  292.       A <> 0, Zero Flag Clear (NZ) if Valid
  293.         A = 0, Zero Flag Set (Z) if No Buffer
  294.   USES : AF,HL
  295.  
  296.  Usage:  This routine is used in conjunction with other message
  297.   routines for synchronization between programs, and status
  298.   info.  See Z3LIB information sections on ZCPR3 Messages.
  299.  
  300. GETSHM - Get value of Shell Message for Specified Msg Number
  301.  
  302.   ENTER:  B = Message Number (0, 1, 2)
  303.   EXIT :  A = Message Value (Zero Flag Set Accordingly)
  304.   USES : AF
  305.  
  306.  Usage:  This routine returns the value of the shell message
  307.   whose number is specified.  There are three shell messages, 
  308.   so 0 <= B <= 2 (you must be sure a valid value is presented).
  309.  
  310. PUTSHM - Set the value of specified Shell Message Number
  311.  
  312.   ENTER:  A = Message Value
  313.       B = Message Number (0,1,2)
  314.   EXIT : None
  315.   USES : None
  316.  
  317.  Usage:  This routine is used to place a message into one of
  318.   the three message positions in the Shell area.
  319.  
  320. ::Z3LIB2A.HLP
  321. :GETPATH - Return Addr of the Command Search Path from the ENV
  322.  
  323.   ENTER: None
  324.   EXIT : HL = Address of ZCPR3 Search Path from Env Descriptor
  325.           A = Number of Elements, Zero Flag Clear (NZ) if Ok
  326.               A = 0, Zero Set (Z) if No Path defined in ENV
  327.   USES : AF,HL
  328.  
  329.  Usage:  Return the address of the ZCPR3 Command-Search Path as
  330.   defined in the Environment Descriptor.  If there is a ZCPR3
  331.   Path, it will be structured as a series of two-byte path
  332.   elements structured as:
  333.  
  334.     DEFB    1    ; Disk #1 (Current='$', A=1,..P=16)
  335.     DEFB    15    ; User #1 (Current='$', 0..31)
  336.     DEFB    '$'    ; Disk #2
  337.     DEFB    0    ; User #2
  338.     DEFB    0    ; End-of-List is Drive = 0
  339.  
  340. :Processor Speed       GETSPEED - PUTSPEED 
  341.  
  342. GETSPEED - Return Processor Speed in MHz from ENV
  343.  
  344.   ENTER: None
  345.   EXIT : A = Processor speed in MegaHertz
  346.   USES : AF
  347.  
  348.  Usage:  This routine is most often used in Software timing
  349.   loops to permit a greater amount of portability in software.
  350.   The returned value in to the nearest MegaHertz, so 1 = 1 MHz,
  351.   4 = 4 MHz, etc.
  352.  
  353. PUTSPEED - Set Processor Speed in ENV to Specified value
  354.  
  355.   ENTER: A = Processor Speed in MHz
  356.   EXIT : None
  357.   USES : None
  358.  
  359.  Usage:  This routine sets the Processor Speed as defined in
  360.   the Environment Descriptor to the specified value in Mega-
  361.   Hertz where 1 = 1 MHz, 4 = 4 MHz.
  362.  
  363. :Quiet Flag         GETQUIET - PUTQUIET 
  364.  
  365. GETQUIET - Return value of QUIET Flag
  366.  
  367.   ENTER: None
  368.   EXIT : A = Value of Quiet Flag from ENV.  Zero Flag Set
  369.              accordingly (0=Z=Not Quiet, 0FFH=NZ=Quiet)
  370.   USES : AF
  371.  
  372.  Usage:  This routine is often used in programs to suppress
  373.   unneeded/unwanted status messages.  By sensing the Quiet
  374.   flag and using conditional print statements, more pleasing
  375.   operation can result.  The Quiet Flag value in stored in
  376.   the Environment Descriptor.
  377.  
  378. PUTQUIET - Set the value of the Quiet Flag
  379.  
  380.   ENTER: A = Quiet Glag value (0=Not Quiet, 0FFH=Quiet)
  381.   EXIT : None
  382.   USES : None
  383.  
  384.  Usage:  This routine sets the Quiet Flag to the specified
  385.   value.  While 0FFH is preferred to indicate Quiet operation,
  386.   any Non-Zero value will suffice.
  387.  
  388. :GETRCP - Return Address and Size of RCP defined in ENV
  389.  
  390.   ENTER: None
  391.   EXIT : HL = Address of RCP Buffer
  392.       A = Size of Bufr in 12-byte blocks, Zero Clear (NZ)
  393.         A = 0, Zero Flag Set (Z) if No RCP Defined
  394.   USES : AF,HL
  395.  
  396.  Usage:  This routine simply returns the Resident Command
  397.   Package buffer definitions contained in the Environment
  398.   Descriptor.  Your program must check for a valid package
  399.   if necessary by examining the first byte of the buffer.
  400.  
  401. Example:
  402.     EXT    GETFCP        ; Declare the routine
  403.     ...            ; ..preceeding code
  404.     CALL    GETFCP        ; Get ENV definitions
  405.     JR    Z,NOFCPBUF    ; ..jump if No RCP exists
  406.     LD    A,(HL)        ; Check first byte of bufr
  407.     OR    A        ; Anything there?
  408.     JR    Z,LODRCP    ; ..jump if not to load
  409.     ...            ; Else have an RCP in place
  410. :Shell Stack             GETSH1 - GETSH2 
  411.  
  412. GETSH1 - Return Defined Shell Stack Parameters from ENV
  413.  
  414.   ENTER: None
  415.   EXIT : HL = Address of Shell Stack
  416.       B = Number of bytes in each Shell Stack Entry
  417.       A = Number of Possible Entries, Zero Clear (NZ)
  418.          A = 0, Zero Flag Set (Z) if No Shell Stack
  419.   USES : AF,B,HL
  420.  
  421.  Usage:  This routine simply returns data on the overall Shell
  422.   Stack system from the Environment Descriptor.  See SHPUSH
  423.   and SHPOP routines for details on other facilities for
  424.   dealing with Shell Stacks provided by Z3LIB.  
  425.  
  426. GETSH2 - Return Defined Shell Stack Parameters from ENV
  427.  
  428.   ENTER: None
  429.   EXIT : HL = Address of Shell Stack
  430.          DE = Number of bytes allowed in each Stack Entry
  431.          B,A = Number of allowed Entries, Zero Clear (NZ)
  432.               A = 0, Zero Set (Z) if No Shell Stack defined
  433.   USES : AF,B,DE,HL
  434.  
  435.  Usage:  This is an alternative routine to recover Shell Stack
  436.   parameters from the Environment Descriptor.  For some uses,
  437.   this form is more easily manipulated than GETSH1 covered
  438.   above.  See SHPUSH and SHPOP routines for details on other
  439.   facilities for dealing with Shell Stacks provided by Z3LIB.
  440.  
  441. :Wheel Byte              GETWHL - PUTWHL 
  442.  
  443. GETWHL - Return the Wheel Byte value from the ENV
  444.  
  445.   ENTER: None
  446.   EXIT : A = Wheel Byte, Flags set accordingly
  447.              (0, Z, Not Wheel; 0FFH, NZ, IS Wheel)
  448.   USES : AF
  449.  
  450.  Usage:  This routine is used to restrict users from accessing
  451.   parts of programs, or affecting program flow.  For example,
  452.   you may not wish remote users to change the Path definition.
  453.   By assigning "No Wheel" status to remote users, the PATH
  454.   utility will refuse to allow changes since it senses the
  455.   priveleges with this routine.
  456.     While a 0FFH value is listed for granting Wheel priveleges,
  457.   any non-zero value currently suffices.
  458.  
  459. PUTWHL - Set the value of the Wheel Byte in the ENV
  460.  
  461.   ENTER: A = Wheel Byte Value to set (0=No Wheel, 0FFH=Wheel)
  462.   EXIT : None
  463.   USES : None
  464.  
  465.  Usage:  This routine is used to set the Wheel Byte to ON
  466.   (0FFH) or OFF (0) thereby granting or denying Wheel
  467.   priveleges to executing programs.
  468.