WHEREIS Horn Engineering Associates 1714 Patricia Lane Garland, Texas 75042 09/27/85 ----------------------------------------         v1.05: Adam Koczarski - Adam's RiBBS (206) 882-3684         WHEREIÓ  v1.0µ correctó incompatibilitù problemó betweeî WIÓ anä         ZCPR3® Iæ yoõ arå runninç undeò ZCPR3¬ seô ZCPÒ anä ZCPR³ eqõ tï         TRUE®  Seô thå MXDRV anä MXUSR equateó equaì tï thå  appropriatå         values in your Z3 environment.         v1.04:         WHEREIÓ  v1.0´ merelù correctó á probleí witè thå prograí  logiã         whicè  causeä  thå  prograí  tï  searcè  drivå  Aº  anä  useò  °         regardlesó  oæ thå dõ mað setting®  Thió waó á probleí  foò  aô         leasô  onå SYSOÐ whï doesn'ô allo÷ accesó tï useò ° oî hió  harä         disk. v1.03: WHEREIS v1.03 has one added feature: user-areas can be mapped as well as drives. Each drive has a two-byte userarea map attached to it, all of this compiled into a 32-byte drive-user map. The map itself begins at 0103h and is formatted as follows: 103h user-area map for drive A: 105h user-area map for drive B: ... 121h user-area map for drive P: Each user-area map takes the form of a 16-bit binary number, each bit representing one user: High byte Low byte --------- -------- Bit: 76543210 76543210 |||||||| |||||||| = user 11111100 00000000 54321098 76543210 Setting all bits to 0 effectively removes the corresponding drive from the WHEREIS file search. For example, to set a user-area map to skip over users 1 and 12, you would set it to: Š 11101111 11111101 (EFFDhex) | | | +------------(no user 1) +------------------------(no user 12) The default values are FFFFhex for all drives (all drives-user- areas active). Note that the maxdrive and maxuser values, either from ZCPR or hardcoded into the program, take precedence over the du map, therefor even if all drives-users are listed as active in the table only those drives/users up to maxdrive/maxuser will be searched. If you modify the map, please remember that the user-area map low bytes go first. For convenience' sake, here's a list of the addresses of each user-area map: A: = 103-104h E: = 10B-10Ch I: = 113-114h M: = 11B-11Ch B: = 105-106h F: = 10D-10Eh J: = 115-116h N: = 11D-11Eh C: = 107-108h G: = 10F-110h K: = 117-118h O: = 11F-120h D: = 109-10Ah H: = 111-112h L: = 119-11Ah P: = 121-122h NOTE: The code used to decipher the du map contains two Z-80 macro directives, therefor the equate MAPDU has been provided to disable this feature. If you don't have a Z-80 or compatible CPU, or must assemble the program with ASM or some other non- macro assembler, you must set this equate to false and forgo the drive-user map feature. Defaults to TRUE. ---------------------------------------------------------------- WHEREIS basically performs the same function as FILEFIND, but with some nice added features that will be discussed in this document. It's worth noting that the WHEREIS code is in no way related to the operating code of FILEFIND, but is instead an original program. Operation: WHEREIS is invoked as follows: WHEREIS where is any valid CP/M file name (wildcards ? and * are OK). If no file is specified, brief instructions will be displayed. WHEREIS searches all of the available drives/user-areas online (using the ZCPR maxdrive and maxuser bytes or, optionally, hardcoded values as guides) for the file specified. If a match is found, the filename(s) will be displayed along with its (their) drive(s)/user-area(s). In addition, a section name may Š be displayed, see "Features of WHEREIS/Section names" below for more information. If no match is found, WHEREIS simply exits saying "File(s) not found..." ---------------------------------------- Features of WHEREIS: Constant updating of actions: This is the main reason WHEREIS was created. The biggest gripe I have with FILEFIND is that it doesn't tell the user what it's doing, just sitting there while the program goes off and spends an eternity looking at all the drives. This program solves that by updating the user of its actions via a "Searching drive du:" message. * * * MAXDRIVE/MAXUSER: If you are using NZCPR-style MAXDRIVE and MAXUSER values at bytes 3Dhex and 3Fhex (respectively) WHEREIS can look at these bytes to determine which drives and user-areas to search. If not, these values must be hardcoded into the program. Set the equate ZCPR to FALSE and the DB statements MXDRV and MXUSR to the appropriate values. Where these DB values end up in the object code depends upon whether or not the drive map is being used. If so, maxdrv will be at 103hex and maxusr at 104hex; if not, maxdrv will be at 105hex, maxusr at 106hex. ZCPR defaults to TRUE. * * * Section names: If a label file (-*.*) is found on the drive/user-area being searched, it will be displayed along with the du: in messages featuring the du: or filenames. This is especially useful if you're using SECTION or some other program to reference drives/user-areas by section names. As it does cost some time and isn't useful for everyone, this feature may be removed by setting the SHOWLBL equate to FALSE. Defaults to TRUE. ---------------------------------------- If you have any questions or suggestions, please call B-RCP/M at (214) 278-3870 and use the CP/M NOTE command to leave me a message, or write: Bob Horn c/o Horn Engineering Associates 1714 Patricia Lane Garland, Texas 75042