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 / JSAGE / ZSUS / TCJ / TCJ38.WS < prev    next >
Text File  |  2000-06-30  |  26KB  |  460 lines

  1.                                Z-System Corne≥ (c)
  2.                                  by Jay Sage
  3.                         The Computer Journal, Issue 38
  4.                           Reproduced with permission
  5.                            of author and publisher
  6.  
  7.  
  8.    True, February is a short month, but somehow I don't think that explainsì
  9. why the beginning of February (the due date for this column) came quickerì
  10. than usual.  It is probably a good thing that I have convinced severalì
  11. others to start contributing regular columns to TCJ.  That way, Art Carlsonì
  12. may be busy enough not to notice that the deadline passed without my column. ì
  13. Because it is late and because we now have quite a few prolific writersì
  14. joining the TCJ ranks, I'm going to keep my column shorter than usual thisì
  15. time (I know I have said that before, but this time I think it really willì
  16. be true).
  17.  
  18.    For this issue I will be catching up on some correspondence, informingì
  19. you of the imminent release of the first high level language for Z-Systemì
  20. programming, bringing you up to date on Z-Node developments (there is a newì
  21. Z-Node Central), and beginning a discussion of issues related to bringing upì
  22. a remote access system (so that more of you might decide to set up a Z¡
  23. Node).
  24.  
  25.  
  26.                                   Letters
  27.  
  28.    Despite our requests for letters with your comments and suggestions, weì
  29. don't get very many.  Recently, however, Art forwarded to me two lengthy andì
  30. thoughtful letters from James Ott.  I would like to begin by addressing someì
  31. of his comments and questions.
  32.  
  33.  
  34. The ZCPR33 Programmer's Reference Manual
  35.  
  36.    First, Mr. Ott asked about the "Programmer's Reference Manual" to which Iì
  37. made reference in my ZCPR33 User's Guide.  Well, the truth is that afterì
  38. writing the user's guide, I really didn't have energy left for another majorì
  39. manual.  Instead, I started to release programming notes one at a time asì
  40. files on the Z-Nodes.  Even at that, I only got to three of them.  The filesì
  41. have names of the form Z33PNOTE.###, where "###" is a sequence number.  Noteì
  42. 001 deals with the command status flag in the message buffer and theì
  43. extensions in its use introduced with ZCPR33.  Note 002 discusses properì
  44. coding techniques for shells under ZCPR33 and later.  The third note coversì
  45. the parsing of files by the Z33 and Z34 command processors.  I am tempted toì
  46. reproduce some of that material here, but then I would surely fail in myì
  47. resolve to keep this column to a reasonable length.  So you will just haveì
  48. to look for them at the Z-Node in your neighborhood.  If it is not there,ì
  49. see if the sysop will get a copy from Z-Node #3.
  50.  
  51.  
  52. Shells and ZEXè
  53.    Mr. Ott continued: "The User's Guide mentions an addition to shell codingì
  54. necessary to ensure the shell pushes its name onto the shell stack when itì
  55. is called by ZEX."  I think there is some misunderstanding here.  It wasì
  56. under previous versions of ZCPR3 that special code was required in shells toì
  57. deal with ZEX (and it never had to do with pushing anything onto the shellì
  58. stack).  Under Z33 and later, this code can (and, to make the programsì
  59. smaller, should) be removed.  It has now been quite some time since theì
  60. release of ZCPR33, and I think that most shells are now coded in the moreì
  61. efficient way.
  62.  
  63.    As we have discussed in previous columns, a shell command comes into playì
  64. when the command line buffer becomes empty.  In that case, if there is aì
  65. command on the shell stack, the command processor invokes that commandì
  66. instead of asking the user for the next command line.  In this way, theì
  67. shell takes over the function of the command processor.
  68.  
  69.    ZEX's function is similar to that of SUBMIT and XSUB together.  Whileì
  70. SUBMIT stores its script data in a disk file, ZEX keeps it in memory.  Thisì
  71. enables ZEX to run much faster, but it reduces the memory available toì
  72. programs.  A simple SUBMIT script feeds a series of commands to the commandì
  73. processor, thus doing under CP/M what the multiple command line of ZCPRì
  74. does.  SUBMIT can be useful even under ZCPR, however, because it can supplyì
  75. a longer string of commands than could fit into the command line buffer.
  76.  
  77.    XSUB running under SUBMIT allows characters in the script to be fed notì
  78. only to the command processor but also to programs as they run.  This isì
  79. what is called input/output (I/O) redirection.  In this case it is inputì
  80. redirection; the operating system is made to take its characters not fromì
  81. its normal source -- the keyboard -- but from a disk file (SUBMIT) or aì
  82. memory buffer (ZEX).  This is both extraordinarily useful andì
  83. extraordinarily tricky.  Long ago I promised to discuss this subject atì
  84. length in this column, but I have never gotten around to it.  Bridgerì
  85. Mitchell, Joe Wright, and I are now engaged in a joint project to perform aì
  86. major upgrading of ZEX, and I am sure it will be the subject of TCJ columnsì
  87. by one or more of us.
  88.  
  89.      The ZCPR33 command processor observes the following hierarchy forì
  90. acquiring new commands, where step 1 has the highest priority and step 5 theì
  91. lowest.  The way this hierarchy functions is described in more detail in theì
  92. ZCPR33 User's Guide.
  93.  
  94.     1.    Commands pending in the multiple command line buffer
  95.     2.    Commands from a ZEX script
  96.     3.    Commands from a SUBMIT script
  97.     4.    A shell command
  98.     5.    User input
  99.  
  100.    Under ZCPR30, ZEX did not appear explicitly in this hierarchy; it cameì
  101. into play only by virtue of its ability to redirect input at step 5.  Thisì
  102. posed a serious problem when a ZEX command was issued under a shell.    ì
  103. Although the user intended the script to be performed as commands, the shellìèwould take it as input to the shell instead.  To avoid this, rather lengthyì
  104. code had to be included in every shell to see if ZEX was running and, if so,ì
  105. to feed its input directly to the multiple command line buffer.  Thisì
  106. resulted in completely useless loads of the shell code for each line of theì
  107. ZEX script.  Execution was so slow and annoying that for all practicalì
  108. purposes ZEX scripts could not be run under shells.
  109.  
  110.    The ZCPR33 command processor was redesigned to deal with ZEX explicitlyì
  111. just as ZCPR30 always did with SUBMIT.  ZEX was placed above SUBMIT in theì
  112. hierarchy so that ZEX scripts would function like arbitrarily long commandì
  113. lines and could be invoked from SUBMIT scripts.
  114.  
  115.  
  116. The New Libraries
  117.  
  118.    Mr. Ott had several questions about the assembly-language libraries thatì
  119. support the Z-System.  I will not comment extensively here, but I would likeì
  120. to announce that new versions of the libraries, which have been in use by aì
  121. number of us for many months already, will soon be made available to theì
  122. public.  I had expected them to be a commercial product, but, for severalì
  123. reasons, it now appears that the code will be made available at no charge. ì
  124. Only the manual, which will be quite a large book, will be sold.  This isì
  125. good news.
  126.  
  127.    One of Mr. Ott's suggestions was that the Z3LIB routine called PRGLOAD,ì
  128. which is used for chaining from one program to another, be updated to allowì
  129. for type-3 programs.  This probably could be done without a great deal ofì
  130. difficulty, but I am not sure that it is worth the trouble.  What aboutì
  131. type-4 programs?  Loading them is much more complex because of the need toì
  132. compute the relocation to a run-time address.  It seems to me that a betterì
  133. way for programs to chain to other programs is via the multiple command lineì
  134. buffer.  If anyone can suggest any advantages of a direct load, I would beì
  135. interested in hearing them.
  136.  
  137.  
  138. The Command Line Tail
  139.  
  140.    One of the mistakes in ZCPR30 was its failure to check for command lineì
  141. tails that would not fit in the buffer from 80H to FFH.  CP/M had no problemì
  142. with this because the whole command line was not long enough to allow thisì
  143. to occur.  With a 200-or-more-character command line buffer, there isì
  144. nothing to stop a user from entering a command with a tail longer than 128ì
  145. bytes.  Under Z30 this caused a catastrophe, because the tail was copiedì
  146. into the buffer after the program was loaded, and then the tail couldì
  147. overwrite the beginning of the code.  Z33 and later monitor the length ofì
  148. the tail and stop copying before this can happen.
  149.  
  150.    With type-3 programs that load at addresses higher than 100H, longerì
  151. tails could be copied without damaging the code, and Mr. Ott requested thatì
  152. this be implemented in future versions of the command processor.  I thinkì
  153. this would be a very bad idea.  One of the reasons for using type-3 programsì
  154. is so that any code residing at 100H can be run again later using the GOìècommand.  If the type-3 program's tail overwrote the TPA, then trouble wouldì
  155. occur when the GO command was executed.
  156.  
  157.    Moreover, there is absolutely no need for such a feature.  If a programì
  158. wants to support a tail longer than 126 bytes (it doesn't even have to be aì
  159. type-3 program), it can simply read its arguments not from the buffer at 80Hì
  160. but directly from the multiple command line buffer.  As an aside, I haveì
  161. thought of making the command processor not convert the command line bufferì
  162. to upper case.  Then programs could process lower case input directly (as inì
  163. MS-DOS) without the special symbols to indicate case shifts as in the ECHOì
  164. and IF INPUT commands.  The command tail buffer at 80H must be converted toì
  165. upper case for compatibility with CP/M programs, which assume that that willì
  166. be done.  Besides the fact that there might be a significant code penaltyì
  167. (the command tail buffer and the command file control block would both haveì
  168. to be individually case shifted), I worry that there may be a number of Z¡
  169. System programs that either rely on the command line being in upper case or,ì
  170. worse, convert it to upper case.  I'd be interested in hearing any opinionsì
  171. on this topic.
  172.  
  173.  
  174. Still More on Z3 vs. Z2 Shells
  175.  
  176.    Mr. Ott sent me a lengthy letter with some interesting examples of theì
  177. use of the shell stack.  I think his is the first response I have receivedì
  178. that pointed out an aspect of the shell stack that I had not previouslyì
  179. appreciated.
  180.  
  181.    I don't think about shell command lines with more than one command, soì
  182. the following distinction never occurred to me.  One can think of the shellì
  183. stack as containing not just, say, four commands but rather four groups ofì
  184. commands.  The shell stack not only holds these commands; it also providesì
  185. the mechanism for grouping them, for providing parentheses, if you will. ì
  186. The Z2 approach to shelling would have a very hard time doing this.  Forì
  187. example, if the first element on the shell stack contains the command lineì
  188. "CMD1A;CMD1B" and the next lower element the line "CMD2A;CMD2B;CMD2C", theì
  189. equivalent Z2 situation would have the command line
  190.  
  191.     CMD1A;CMD1B;CMD2A;CMD2B;CMD2C
  192.  
  193. The SHCTRL POP command removes an entire Z3 shell entry, containingì
  194. possible multiple commands.  How could we implement this function with aì
  195. Z2-style shell?  Even if each command were marked with a "/s" token, oneì
  196. could still not tell which ones were grouped with which.  There might be aì
  197. solution to this problem, but the Z3 shell approach certainly handles itì
  198. nicely.
  199.  
  200.    Mr. Ott's letter included a very interesting application example.  I'veì
  201. made a few changes that, I hope, do not harm its essence.  When the computerì
  202. is booted, the STARTUP alias loads the command sequence "FIRSTSH;MENU",ì
  203. where FIRSTSH is a special utility that places the following commandì
  204. sequence onto the shell stack:
  205. è    PARK;VID RST.MSG;STOP
  206.  
  207. When this sequence runs, it will park the heads on the disk drive, display aì
  208. message to shut off the computer, and run a program called STOP that locksì
  209. the machine.  Of course, this multiple-command shell could easily beì
  210. replaced by an alias SHUTDOWN.
  211.  
  212.    This termination shell does not run immediately because of the commandì
  213. MENU following it in the command sequence.  This loads a second shell ontoì
  214. the shell stack.  The user then lives inside the MENU shell for some time. ì
  215. At some point, the user may make a selection that generates the command "CDì
  216. WORK:".  This would log into the WORK: directory and issue an automatic STì
  217. command there.  The ST alias might have the script
  218.  
  219.     LDR WORK.NDR;SHCTRL POP;ZFILER
  220.  
  221. This would install a new set of named directories, pop MENU off the shellì
  222. stack, and replace it with the ZFILER shell.  The user could then do someì
  223. work using ZFILER.  From ZFILER, a macro command might make another shellì
  224. change by popping the shell stack and installing another shell.
  225.  
  226.    The above process would continue until the user made an exit selection. ì
  227. This would pop the shell stack without installing a new shell.  As a result,ì
  228. that first line we put on the shell stack would become active, forcing theì
  229. computer to be shut down in an orderly, preplanned way.  Of course, thisì
  230. approach is not totally foolproof if the user has access to the power switchì
  231. or power cord.  But it certainly helps.
  232.  
  233.    Mr. Ott worried that this example could not be achieved using a Z2 shellì
  234. system.  I think it could, though not with quite the same ease and elegance. ì
  235. The STARTUP alias would contain the line
  236.  
  237.     MENU;SHUTDOWN
  238.  
  239. When MENU ran, it would substitute for itself in the command line theì
  240. desired command line plus its own reinvocation command with the flag "/S" toì
  241. mark it as a shell.  Thus the command line would become
  242.  
  243.     USERCMD;MENU /S;SHUTDOWN
  244.  
  245. For the user command CD WORK:, the command buffer would evolve as follows:
  246.  
  247.     CD WORK:;MENU /S;SHUTDOWN
  248.     ST;MENU /S;SHUTDOWN
  249.     LDR WORK.NDR;SHCTRL POP;ZFILER;MENU /S;SHUTDOWN
  250.  
  251. When the SHCTRL command ran, it would scan the command line for the nextì
  252. shell command as marked by the "/S" flag and remove it from the commandì
  253. line.  This would leave one with
  254.  
  255.     ZFILER;SHUTDOWN
  256. èWhen ZFILER generates a macro command, the command buffer would have
  257.  
  258.     MACROCMD;ZFILER /S;SHUTDOWN
  259.  
  260. This would continue until one cancelled the shell.  Then the SHUTDOWN aliasì
  261. would run.
  262.  
  263.    Mr. Ott was concerned that the command line would grow longer and longerì
  264. as old shell commands piled up.  Indeed, this would happen if there were noì
  265. 'popping' mechanism.  The "/S" marker I proposed in my previous columns isì
  266. critical here, since without it there would be no way to tell which commandì
  267. to pop.  This approach, I think, would fail with aliases as shell commands. ì
  268. The Z3-type shell really helps us in this case.
  269.  
  270.  
  271.                   High-Level-Language Support for Z-System
  272.  
  273.    I have some especially exciting news about the first high level languageì
  274. specially designed for Z-System.  In late January, I got a phone call fromì
  275. Leor Zolman, author of BDS C.  He was interested in bringing out a newì
  276. version of his C compiler for the modern 8-bit market.  After someì
  277. consultation with me on what was needed to support Z-System, Leor went toì
  278. work on the run-time code, and in less than two weeks he had a version readyì
  279. for beta testing
  280.  
  281.    He came over to my house to demonstrate the result, and I was amazed toì
  282. see how easily one could write a utility, complete with named-directoryì
  283. support, even including password protection.  A little fine-tuning is stillì
  284. needed, but I am already excited about the impact that the availability ofì
  285. this quality high level language will have on Z-System development. ì
  286. Marketing details have not been worked out at this point, but you can expectì
  287. the new BDS C to be available at an attractive price through Z Systemsì
  288. Associates (ZSA) channels (Plu*Perfect Systems, Sage Microsystems East, Z¡
  289. Nodes, and Z-Plan user groups).
  290.  
  291.  
  292.                            The New Z-Node Central
  293.  
  294.    Ron Bardarson, who had operated Z-Node Central after David McCord retiredì
  295. as the sysop, decided to change the focus of his system and his nodeì
  296. designation from Z-Node to X-Node.  This was to indicate its experimentalì
  297. nature and its focus on software and systems development rather than on theì
  298. distribution of Z-System software.  Its number remains 408-432-0821 (CASJOì
  299. on PC-Pursuit).
  300.  
  301.    To maintain a center of support for Z-System users and for Z-Node sysops,ì
  302. we have established a new Z-Node Central.  Richard Jacobson, whose Lilliputeì
  303. Z-Node in Chicago has long been, in my opinion, the premier Z-Node in theì
  304. country, has agreed to take on this new role.  He will continue to use theì
  305. delightfully ironic Gulliverian name (at over 100 Mbytes, his is the leastì
  306. Lilliputian of the Z-Nodes), but his node number now drops from 15 to 1.
  307. è   This new function is added to several special services that Lilliputeì
  308. already provides.  It is the official bulletin board and remote accessì
  309. system for both the North American One Eighty Group (NAOG) and TCJ.  Theì
  310. full system, comprising two independent computers, is available on aì
  311. subscription basis.  All users who provide registration information will getì
  312. 15 minutes per day of free access.  Unlimited access to both computersì
  313. (within reason) is available at a rate of $25 for six months or $40 for aì
  314. full year.  TCJ subscribers and NAOG members get free access to limitedì
  315. areas and can upgrade to full subscriber privileges at $5 less than theì
  316. standard rates.  Z-Node sysops will have free access to the full system. ì
  317. The phone numbers are 312-649-1730 and 312-664-1730, accessible via theì
  318. ILCHI outdial of PC-Pursuit.
  319.  
  320.  
  321.                        System Security Under Z-System
  322.  
  323.    As part of my plan to build up the network of Z-Nodes, I would like toì
  324. begin a series on issues related to setting up a remote access system (RAS)ì
  325. using Z-System.  Many people do not realize it, but NZCOM and Z3PLUS (theì
  326. automatic Z-Systems for CP/M-2 and CP/M-Plus, respectively) create systemsì
  327. with the full security capability necessary for a RAS.  It just takes a fewì
  328. simple operations to engage it.
  329.  
  330.    These issues have been brought to my attention recently because I haveì
  331. been in the process of setting up a second remote access system at my house. ì
  332. This one is for the BOSKUG group of the Boston Computer Society.  It will beì
  333. a two-line system running on a very powerful 16 MHz Kaypro 286 computer withì
  334. multitasking software.  For all this power, however, I was struck by theì
  335. tremendous complexity of setting up a remote system on such a computer, allì
  336. because of the lack of a secure operating system.
  337.  
  338.    With MS-DOS, a remote system absolutely cannot allow a caller to gainì
  339. direct access to the operating system command prompt, because once he hasì
  340. that access, there is no way to limit what he can do.  It made me realizeì
  341. how fortunate we are with Z-System to have an operating system with enoughì
  342. security to permit callers on a remote system to run the system more or lessì
  343. as if they were sitting at the keyboard of their personal machine.  Theyì
  344. don't have to have an elaborate apparatus standing between them and theì
  345. system.
  346.  
  347.    There are two main aspects of that security.  One is the wheel byte. ì
  348. This system flag is tested by many Z-System programs to determine whetherì
  349. certain operations should be permitted or denied.  Commands for doing thingsì
  350. like erasing, renaming, or copying files typically require that wheel statusì
  351. be in force.  Other commands will allow some operations to non-wheel usersì
  352. but deny other operations.  For example, some directory programs allowì
  353. writing an image of the directory to disk or to the printer.  These optionsì
  354. are (or should be) restricted to 'wheel' users.  The wheel byte itself isì
  355. set and cleared by special commands, such as the WHL command of the RCP. ì
  356. Obviously, a password must be entered correctly before WHL will set theì
  357. wheel byte.
  358. è   The second and more complex security feature in Z-System concerns theì
  359. facilities for limiting the disk areas which a user can access.  Many usersì
  360. are unaware of these features, and even those who are aware of them often doì
  361. not understand them fully and clearly.  I will cover the major points here.
  362.  
  363.    With version 3.3 of ZCPR, I introduced extensive and significant changesì
  364. in the way directory references and security are handled.  These changesì
  365. made understanding security more complex for the system implementor but muchì
  366. easier and less intrusive for the user.
  367.  
  368.    ZCPR3 supports two basic forms of directory reference, the disk/user orì
  369. DU form and the named directory or DIR form.  We will assume that the readerì
  370. is already somewhat familiar with the basic concepts.  The DU form is nativeì
  371. to CP/M, which knows about disk drives from 'A' to 'P' and user numbers fromì
  372. 0 to 31 (though there are restrictions on user numbers above 15).  The DUì
  373. form of directory reference is basically physical in nature.  Drive lettersì
  374. are associated with real physical devices, and the files in all user areasì
  375. associated with a given drive letter are stored on the same physical device. ì
  376. One can think of this directory structure as spanning a flat, two¡
  377. dimensional space (in contrast to the hierarchical tree-structuredì
  378. directories of Unix or MS-DOS).
  379.  
  380.    While the DU directories are basically physical, named directories areì
  381. purely logical constructs.  The named directory register (NDR) module in aì
  382. Z-System contains a mapping of directory names to drive/user values.  Theì
  383. user can load different sets of directory associations at different times. ì
  384. Thus, unlike the static (fixed in time) directory structure of Unix and MS¡
  385. DOS, the directory structure of Z-System can be dynamic (changing in time).
  386.  
  387.    When the DIR form is used, the command processor or a Z-System programì
  388. looks for the name in the NDR and substitutes the drive and user values. ì
  389. Only drive/user values are used in the actual file references processed byì
  390. the disk operating system (DOS).  Named directories provide two differentì
  391. and important functions.  One is convenience.  It is much easier to rememberì
  392. that one's assembly language tools are in ASM and one's wordprocessing filesì
  393. in TEXT than it is to remember that the directories are A7 and B13.  Theì
  394. second purpose of named directories is to provide security.
  395.  
  396.    Access to directory areas in a Z-System is controlled in both the DU andì
  397. DIR domains.  Under Z30 these two control mechanisms were completelyì
  398. independent; under Z33 and later, as we shall see, they are very closelyì
  399. coupled.  The limits in the DU domain are set by values in the environmentì
  400. descriptor (ENV) called max-drive and max-user.  They define a rectangularì
  401. area of allowed directories in the flat directory space, with drive valuesì
  402. ranging from 'A' to the drive specified by max-drive and user numbersì
  403. ranging from 0 to the number specified by max-user.  The smallest spaceì
  404. still includes the boot directory A0.
  405.  
  406.    Named directories offer a more flexible means of controlling access toì
  407. areas on a system.  The user can access a named directory even if it refersì
  408. to a DU area that is beyond the bounds defined above.  Each directory nameì
  409. can have an optional password associated with it.  Whenever a reference isìèmade to such a directory, the password is (should be) asked for and accessì
  410. granted only if it is entered correctly.
  411.  
  412.    There are a number of important exceptions to the two security limitsì
  413. described above.  One concerns the command search path specified in the Z¡
  414. System PATH module.  No restrictions whatever are imposed on the DU areasì
  415. specified there.  If the user was able to place a directory into the path,ì
  416. then it will always be scanned as necessary by the command processor, evenì
  417. if it would no longer be explicitly accessible.
  418.  
  419.    Another general exception occurs for the standard (but optional)ì
  420. configuration of the command processor called WPASS.  With this option, whenì
  421. the wheel byte is set, directory passwords are ignored.  The user can thenì
  422. freely make reference to any directories either within the specified DUì
  423. range or associated with a named directory (with or without a password).
  424.  
  425.    Versions of the command processor since Z33 also make the assumption thatì
  426. if a user is in a given directory at the present time he must have had theì
  427. authority to get there.  Therefore, the command processor will always acceptì
  428. any reference to the currently logged directory, even if the DU is out ofì
  429. range and it has no unprotected directory name.
  430.  
  431.    Another set of exceptions relates to the interplay of the DU and DIRì
  432. limits.  Recent versions of the command process act on the principle that ifì
  433. reference to a directory in one form (DU or DIR) would be allowed thenì
  434. references using the alternative form should be equally allowed.  Forì
  435. example, suppose that the max DU limit is set to B3 and that directory C4ì
  436. has the name DIRNAME with no password.  Z30 would have refused to accept aì
  437. reference to C4:, even though it would have no complaints about DIRNAME:. ì
  438. Under Z34, either would work.  Conversely, if directory area A3 in theì
  439. example had a directory name PRIVATE with password SECRET, Z30 would allow aì
  440. reference to A3: but would insist on correct password entry if the referenceì
  441. was made as PRIVATE:.  Again, Z34 always checks the alternate form ofì
  442. reference, and if either meets the security restrictions, then both areì
  443. accepted.
  444.  
  445.    The standard version of Z-System created by NZCOM or Z3PLUS has the maxì
  446. DU limit set to P31.  Thus all directories are allowed using the DU format. ì
  447. As a result, even when named directories with passwords are created, theyì
  448. are accepted freely.  In order to create a secure system, the values of max¡
  449. drive and max-user must be reduced.  Also, since password checking isì
  450. bypassed when the wheel byte is set, the wheel byte must be cleared beforeì
  451. the security limits imposed by directory passwords will take effect.  Onceì
  452. those two changes have been made, your NZCOM/Z3PLUS system is ready to serveì
  453. as a remote access system.
  454.  
  455. [This article was originally published in issue 38 of The Computer Journal,
  456. P.O. Box 12, South Plainfield, NJ 07080-0012 and is reproduced with the
  457. permission of the author and the publisher. Further reproduction for non-
  458. commercial purposes is authorized. This copyright notice must be retained.
  459. (c) Copyright 1989, 1991 Socrates Press and respective authors]
  460.