home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / jsage / znode3 / tcj / tcj42lm.ws < prev    next >
Encoding:
Text File  |  1994-09-02  |  27.8 KB  |  554 lines

  1. About the author and his system:
  2.  
  3.    Lee McEwen is a management analyst living in central New Jersey.  He hasì
  4. been running public bulletin boards since 1985 but only established a CP/M¡
  5. based system at the beginning of 1989.  Within three months, Socrates hadì
  6. gained Z-Node status.  Lee dedicated Socrates to learning, whether it be the ì
  7. Z-System or high level languages.  There is a message base devoted to theì
  8. new 'C' programmer.  In addition, Socrates is the central site for QBBS ì
  9. development.
  10.  
  11.    Socrates can be called at (201) 754-9067, at up to 2400 bps.  It runs onì
  12. an Ampro Little Board with a 64 meg drive.  Lee runs on Coke and potatoì
  13. chips.
  14.  
  15. =============================================================================
  16.  
  17.                             Using BYE with NZCOM
  18.                                      or
  19.                        The New Taming of an Old Shrew
  20.  
  21.                                by Lee McEwen
  22.                             Socrates Z-Node #32
  23.  
  24.    Socrates, my rcpm, went on line last December.  Evidently, this was moreì
  25. of an event than it seemed at the time.  Why?  I had just bought NZCOM theì
  26. week before, without any previous Z System experience, and getting BYE to ì
  27. peacefully coexist with NZCOM was supposed to be hard.  To be fair, mine ì
  28. wasn't the first rcpm to run under NZCOM.  Bob Dean converted Drexel Hill to ì
  29. NZCOM sometime the previous summer, and I am sure there were others.  Butì
  30. the difference, I'm told, was that a total neophyte managed to stumble inì
  31. the right combinations to make things work.  This seemed to interest Jayì
  32. Sage, who surely is more accustomed to dealing with people who can walk andì
  33. chew gum at the same time!  He asked me to tell you how I did it.
  34.  
  35.    Before we start, I should mention one thing.  It is true that you can'tì
  36. run NZCOM under BYE.  BYE is an RSX and protects itself from beingì
  37. overwritten.  NZCOM is a very powerful loader that can reconfigure theì
  38. memory map.  It looks for such programs as BYE and refuses to run when theyì
  39. exist.  But we don't need to run NZCOM while BYE is running.  We run itì
  40. before we run BYE, and we change systems with ENV files rather than ZCM,ì
  41. using JetLDR.  Our only real restriction is that we cannot change the memoryì
  42. map while BYE is active.
  43.  
  44.    In this article, we will set up a Xerox 16/8 DEM-II with a 10 meg hardì
  45. drive, which we have configured with three logical drives (A: through C:)ì
  46. for the hard drive and one floppy as drive D:.  Here is a list of steps toì
  47. take which we will discuss in turn:
  48.  
  49.             Get NZCOM running first.
  50.               RCP vs. Transient commands.
  51.               Become familiar with ZCM files and how to edit them.
  52.               Make your named directory files.
  53.             Patch WHL.COM and NZCOM.COM
  54.             Get BYE running next.
  55.               Watch out! There some traps here.
  56.               Z3BASE.LIB
  57.     +-+-+-> Tweak it.
  58.     | | |     Use MKZCM, NZCOM.COM and JETLDR.
  59.     | | |     Current public DU:'s will reflect in the new .ZCM files.
  60.     | | +-< Check SHOW, PATH and PUBLIC, and the BYE.PRN file.
  61.     | |     Get your BBS software up and running.
  62.     | +---< Make your aliases.
  63.     |         My usual ones.
  64.     |       Choose your transient commands carefully
  65.     |         What stays on A0:
  66.     |         What must be moved to A15:
  67.     +-----< Check the system on line.
  68.               Watch for security.
  69.  
  70.  
  71. GET NZCOM RUNNING FIRST.
  72.  
  73.    Why NZCOM first?  It is your operating system.  Imagine trying to run aì
  74. program without having CP/M installed on your computer.  BYE is a nastyì
  75. program in that it hooks itself very deeply into the system.  Getting itì
  76. running under the wrong system is a waste of time.
  77.  
  78.    We want to get the memory configuration of NZCOM that you will use withì
  79. the BBS going.  If you need a certain sized TPA for your BBS, you have toì
  80. make room for it here since we can't change the memory map later while BYEì
  81. is  running.  Place MKZCM, SHOW, PATH, and PUBLIC and your favorite editorì
  82. on A0:.  Run MKZCM to create your 'on line system'.  We will be makingì
  83. several versions of the system, but they must all have the same memory map.
  84.  
  85.    We will be setting up three systems.  The first is the one we will beì
  86. letting the callers use.  It will have significant restrictions set on it. ì
  87. Then we will set up a system for the sysop which will allow you to doì
  88. anything you like on your computer, but will lock out the floppy disk drive. ì
  89. Why do that?  What if you call in remotely and enter a command such as 'FF'ì
  90. that accesses the floppy, but you forgot to leave a disk in the drive? ì
  91. You'd hang the system.  Finally, we'll make one last system the same as theì
  92. sysop's, but it will let you at the floppy.  I found it easier to set up theì
  93. restricted system first and then after that is running properly, go back andì
  94. set up the sysop systems.
  95.  
  96.    I installed an NZCOM system without any RCP.  As I implied in the lead ì
  97. paragraph, my assembly programming experience is less than minimal.  As a ì
  98. result, I trust transient commands much more than I do anything permanent in ì
  99. the operating system itself.  If a command doesn't behave as I expected, I ì
  100. replace it, or get it out of harm's way.  The book says that IOP's are aì
  101. topic for advanced users.  Well, that did that!  I dumped them as well.  Iì
  102. then increased the number of named directories allowed.  And with that, Iì
  103. saved my new system.  Use the name 'USER' to save this configuration.
  104.  
  105.    MKZCM will save two files, each of which describes the configurationì
  106. you've  just done.  USER.ZCM is of particular interest to us as it describesì
  107. the  target system in a text file which you can easily edit.  Let's do thatì
  108. now.   Pay particular attention to MAXDRV, MAXUSR, QUIET, Z3WHL, DRVEC,ì
  109. PUBDRV, and  PUBUSR.  Load up your editor and bring up USER.ZCM in non¡
  110. document mode:
  111.  
  112.   EA06 CBIOS    0080 ENVTYP    E8F4 EXPATH    0005 EXPATHS   0000 RCP
  113.   0000 RCPS     0000 IOP       0000 IOPS      E200 FCP       0005 FCPS
  114.   E480 Z3NDIR   0023 Z3NDIRS   E900 Z3CL      00CB Z3CLS     E780 Z3ENV
  115.   0002 Z3ENVS   E700 SHSTK     0004 SHSTKS    0020 SHSIZE    E880 Z3MSG
  116.   E8D0 EXTFCB   E9D0 EXTSTK  ->0000 QUIET   ->E8FF Z3WHL     0004 SPEEDì
  117. ->0010 MAXDRV ->001F MAXUSR    0001 DUOK      0000 CRT       0000 PRT
  118.   0050 COLS     0018 ROWS      0016 LINS    ->FFFF DRVEC     0000 SPAR1
  119.   0050 PCOL     0042 PROW      003A PLIN      0001 FORM      0000 SPAR2
  120.   0000 SPAR3    0000 SPAR4     0000 SPAR5     CB00 CCP       0010 CCPS
  121.   D300 DOS      001C DOSS      E100 BIO     ->0001 PUBDRV  ->0080 PUBUSR
  122.  
  123.    This almost describes a Xerox 16/8 DEM-II computer, but it is wrong aboutì
  124. the drives we have.  Notice that MAXDRV is 0010, and DRVEC is FFFF.  Theseì
  125. two values say that we have 16 contiguous drives on the computer.  This isì
  126. not the case.  This system has four drives, but we are building a system forì
  127. public use, and we won't be letting the callers at our floppy drive.  Weì
  128. need to change MAXDRV to 0003.  
  129.  
  130.    That's easy enough.  But what of this DRVEC?  It is a bit map of theì
  131. valid drives, which lets NZCOM skip over any drive that is not present.  Youì
  132. can use the following chart to determine the value to give DRVEC.  Put a oneì
  133. over any drive that you have on the system.  Add up the values for eachì
  134. line, and write them down in hexadecimal to the right. 
  135.  
  136.                  Weight Factor:
  137.                8    4    2    1
  138.  
  139.                0    0    0    0    =    0---
  140.                P    O    N    M
  141.  
  142.                0    0    0    0    =    -0--
  143.                L    K    J    I
  144.  
  145.                0    0    0    0    =    --0-
  146.                H    G    F    E
  147.  
  148.                0    1    1    1    =    ---7
  149.                D    C    B    A
  150.                                         0007
  151.  
  152. Change DRVEC to 0007.
  153.  
  154.    We also want to limit the highest user area we will let the callers have ì
  155. access to.  All the sensitive commands such as ERA will be up high.  I have ì
  156. mine set at 7.  Change MAXUSR to 0007.
  157.  
  158.    The QUIET flag tells the system if it should report what it is doing toì
  159. the user.  We want this for ourselves, but not for our callers.  Part of our ì
  160. security is that we will be using aliases to load in modules which we willì
  161. be giving secret names.  If the quiet flag is off, the names will beì
  162. reported as they load.  So set QUIET to 0001.
  163.  
  164.    Take note of the value you have for Z3WHL.  You will want this later onì
  165. when  we get to BYE and save this file.
  166.  
  167.    But didn't we forget PUBDRV and PUBUSR?  These refer to the public driveì
  168. and user areas that ZRDOS will recognize, and are a bit of a bear.  On myì
  169. system, I have A8: set as a public DU: where I put WordStar.  Obviously weì
  170. don't want callers using that!  But every time I edited the USER.ZCM file toì
  171. say there were no public DU's, the next time I loaded the system, they'd beì
  172. back!  The trick here is to use the PUBLIC utility to cancel any public DU'sì
  173. before you load your new system.  Do that now.
  174.  
  175.     Now enter 'NZCOM A0:USER.ZCM' to load this system.  Be sure you includeì
  176. the prefix A0:.   Run SHOW to see if we have the values we want for theì
  177. drives and user areas.  You'll see this on screen 3.  Everything OK?  Ifì
  178. not, then go back to your editor and change USER.ZCM as needed.
  179.  
  180.    Run PATH to see if the QUIET flag is correct.  It won't tell you anythingì
  181. if the QUIET flag is on.  If it tells you what your path is, then the QUIETì
  182. flag is off.  That's not good.  Again, load your editor, and fix QUIET.
  183.  
  184.    If you've changed anything, reload with NZCOM and check everything againì
  185. with SHOW and PATH.  Keep editing, reloading, and checking until you have itì
  186. the way you want it.
  187.  
  188.    Now check for PUBLIC DU's.  You should have none.  If you do have any,ì
  189. clear them now.
  190.  
  191.    Run MKZCM one more time.  Don't change anything, just save it under theì
  192. same name.  Why do that?  Remember that MKZCM creates two files?  The oneì
  193. we've been working with has the extension of 'ZCM'.  If you noticed, theì
  194. other file MKZCM saved had the extension of 'ENV'.  This is what we've beenì
  195. after all this time because JetLDR can handle this file just fine.
  196.  
  197.    Check and recheck that the system is set as you'd want for open use. ì
  198. When you are happy with the users' system, we will go on to make the sysopì
  199. system.  Bring up MKZCM again, but this time save the result under a nameì
  200. that only you will know.  For our discussion, we will call it SYSOP.  Let'sì
  201. go back with your editor and give you some access on your own computer!
  202.  
  203.    Change MAXUSR to the maximum user area you have.  This is usually 15. ì
  204. Pull that DRVEC chart out again.  Check off all the drives you need accessì
  205. to,  except for floppy disks.  Then set QUIET to 0000.  But watch out! ì
  206. Don't do anything that changes the size of the system.  Save the results.
  207.  
  208.    Enter 'NZCOM A0:SYSOP.ZCM' to load this system.  Again, it is importantì
  209. to enter the A0:.  Run SHOW and PATH.  Is it set as you want?  If not, editì
  210. again and reload.
  211.  
  212.    Now set any public DU's you want.  After you've thoroughly verified the ì
  213. settings, run MKZCM to create an ENV of this system.  Finally, create oneì
  214. more system, but this time include the floppies.  Give this another secretì
  215. name.
  216.  
  217.    What have we done?  We've created three environment files that we can useì
  218. on-line to change a caller's access.  We don't need the ZCM files anyì
  219. longer, so you can erase them.  Use STAT or DFA to set all the ENV files toì
  220. $SYS so that users will not be able to see them with the DIR command.
  221.  
  222.    The last thing to do before we move on is to create the named directory ì
  223. files.  I use the same names as the environment files.  The big point hereì
  224. is that even if a DU: is out of range of the environment, if it has a nameì
  225. and no password, a caller can move there.  You can give passwords toì
  226. directories, but it is simpler just to not declare them in the first placeì
  227. if you don't want people going there.
  228.  
  229.    [Note by Jay Sage: I take a different approach and make extensive use ofì
  230. named directories with passwords.  In fact, the named directories on myì
  231. system are the same for users and sysops.  All I do to make the sysopì
  232. systems is turn on the wheel byte, since when this is on, passwords areì
  233. ignored, and one has free access to all the sysop directories.]
  234.  
  235.  
  236. PATCH WHL.COM AND NZCOM.COM
  237.  
  238.    Before we go too much further, you need to make two patches.  Make backup ì
  239. copies of NZCOM.COM.  If you dumped the RCP as I did, you need a transient ì
  240. called WHL32.COM to manipulate your wheel byte, and we will patch this as well.  If you are using the RCP, your system password is in there.  Bigì
  241. point here is to do this after you've made back-up copies of whatever youì
  242. are going to patch.  Can you say 'oops'?
  243.  
  244.    Use DU (disk utility), ZPATCH, or whatever you are comfortable with andì
  245. call in NZCOM.COM.  Search for NZCPM.  This will be in the FCB section ofì
  246. the program.  Change it to something else.  Your restrictions are that youì
  247. must make this eight characters or less, that you must pad it out to exactlyì
  248. eight characters with spaces, and that you must use capital letters.  Whatì
  249. you put here must be a secret.
  250.  
  251.    Now, why did we do this?  NZCOM will make a file called NZCPM.COM on theì
  252. disk if there isn't already one.  The purpose of this file is to allow youì
  253. to dump the NZCOM system and go into straight CP/M.  If a user does this onì
  254. line, he will effectively turn your BBS off.  He can't hurt anything, as BYEì
  255. won't be able to talk to the system any longer, but it won't reset when heì
  256. finally drops carrier, either.  You'll be crashed until you reboot.
  257.  
  258.    So we gave NZCPM a secret name.  Drop out of NZCOM and reload it.  Theì
  259. system will write NZCPM.COM under the name you just gave it.  Eraseì
  260. NZCPM.COM, and use STAT to make its replacement a $SYS file so that no oneì
  261. but you knows its name.
  262.  
  263.    [Note by Jay Sage:  Again, I can suggest an alternative and simplerì
  264. approach.  Leave NZCOM.COM as it is.  Run it to create the file NZCPM.COM,ì
  265. and then copy that file to a secure area.  Then use SALIAS to create anì
  266. alias called NZCPM that has the script command: "IF WH;DIR:NZCPM;FI", whereì
  267. DIR is the directory where you put the real NZCPM.COM.  The presence of thisì
  268. alias will inhibit NZCOM from creating a new NZCPM file, and the alias willì
  269. do something only in sysop mode (when the wheel byte is on).  If the wheelì
  270. byte is off, the command will do nothing.  If the wheel is on, then the realì
  271. NZCPM command will be invoked.]
  272.  
  273.    The other patch we have to make is the wheel password.  If you dumped theì
  274. RCP as I suggested, then you will be using WHL32.COM.  Patch that. ì
  275. Otherwise you patch NZRCP.ZRL in NZCOM.LBR.  Look for either SYSTEM orì
  276. PASSWORD.  I forget what it says in the distribution copy.  Change it toì
  277. something else.  Again, your restrictions are eight characters, padded withì
  278. spaces, in capital letters.  [Note added by Jay Sage:  This patch youì
  279. absolutely must do; you must not leave a wheel-setting command on the systemì
  280. with an unsecure password.  The wheel password is not determined by theì
  281. system but is set for each WHEEL program (e.g., WHL32 or the RCP WHLì
  282. command).  You should be able to find the password using a patching utilityì
  283. and change it to something secret.  Be sure to test it before putting yourì
  284. system on the air.]
  285.  
  286.  
  287. GET BYE RUNNING NEXT
  288.  
  289.    Now comes some real fun.  Getting BYE running for the first time isì
  290. almost guaranteed to take five years off your life and is more that we canì
  291. tackle in one article.  I suggest you work closely with a Z-Node sysop forì
  292. assistance as you go.  But here is the plan: get BYE running any way you canì
  293. at first, and then go back to tweak it.  I would suggest you rename DIR toì
  294. the name of the BBS you plan to run so that it will be the program run whenì
  295. you test BYE.  This eliminates any problems you may have with your BBSì
  296. system as you debug BYE itself.
  297.  
  298.    BYE is a necessary evil.  It hasn't been given a full rewrite in aboutì
  299. five years, and its age is showing.  The biggest problem is that it tries toì
  300. be all things for all systems.  All I want from BYE is modem redirection, aì
  301. few extra BDOS calls to handle situations that would only happen under aì
  302. remote system (such as time on line and carrier test), and maybe a few neatì
  303. function keys like "Who's on line?".  What I don't want it doing is messingì
  304. with the environment.  We have an operating system to do that for us. ì
  305. Unfortunately, BYE insists, and it usually messes things up.  One of theseì
  306. days we will have a BYE made for today's systems.  Until then, we have toì
  307. work with this monster.  [Note added by Jay Sage:  See my column in TCJ #40ì
  308. for a discussion of what BYE does.  I second Lee's comments about BYE andì
  309. the need for a replacement that is appropriate for Z-Systems.]
  310.  
  311.    I use QBYE, as it is the simplest to set up.  QBYE is based on NUBYE 1.01ì
  312. by Tom Brady.  Tom and Irv Hoff had worked together for most of theì
  313. development of BYE but parted company just as the last generation came out. ì
  314. I would expect whatever findings I have with QBYE you will have with BYEì
  315. 5.10.
  316.  
  317.    I noticed some very odd happenings at the OS level and suspected aì
  318. conflict between BYE and NZCOM.  There were two symptoms: the utilities thatì
  319. check the DRVEC seemed to be pretty solid, but those that checked MAXDRVì
  320. were flaky.  For example, FF (Find File) would not report any files found onì
  321. the highest drive.  If I set the system to sysop access while a user was onì
  322. line, it acted strangely once I would reset back to normal access.  The onlyì
  323. solution was to allow the caller to have wheel privileges for the durationì
  324. of the call.
  325.  
  326.    Finally, I pulled SHOW down while a caller was on line to see what wasì
  327. going on.  It seems that BYE was resetting the MAXDRV and MAXUSR bytesì
  328. erroneously.  On cold boot, it was giving MAXDRV one less drive thanì
  329. allowed, and MAXUSR one more.  More importantly, once any new environmentsì
  330. were loaded, it put invalid data into these bytes.
  331.  
  332.    Though I had told BYE not to monitor the maximum DU: settings, it was ì
  333. insisting on doing just that.  Worse, it wasn't doing it right!  See Fig. 1ì
  334. for the CCP settings in the BYE configuration file as used on Socrates.  Beì
  335. aware that ALL system security with these settings is now the purview ofì
  336. NZCOM.  BYE will not monitor anything for you.  Carefully test your variousì
  337. environment settings remotely before leaving the system for public calls. ì
  338. You should look through the PRN file to make sure the proper addresses areì
  339. being assigned, since the addresses will differ from system to system.
  340.  
  341.    You will notice reference to an include file named Z3BASE.LIB.  You willì
  342. have to generate such a file with definitions for the module addressesì
  343. referenced in BYE.  Fig. 2 shows the Z3BASE.LIB that I use.  You have toì
  344. edit this with your memory configuration before you assemble BYE.  Notes inì
  345. the file will explain.
  346.  
  347.    So now you have BYE running.  Go on-line and use SHOW to make sure theì
  348. system has stayed the way you want it to.  Use JetLDR to load the various ì
  349. environments we made up before and use SHOW to verify that MAXDRV, MAXUSR,ì
  350. and DRVEC have stayed correct.  Then, turn your WHL on and off while you try ì
  351. wheel-dependent commands such as ERA.  The system should respond correctly.  ì
  352. If you have problems, you need to edit either your Z3BASE or BYE again and ì
  353. reassemble.
  354.  
  355.    Once you have gotten this far, you are ready to install your BBSì
  356. software.  I use QBBS for a couple of reasons.  It holds messages fromì
  357. different areas completely apart, and it is distributed with full sourceì
  358. code.  It doesn't hurt that QBBS is almost a snap to install.  What is takenì
  359. as a negative by many, that it is written in compiled BASIC, is a plus in myì
  360. mind.  What does a BBS program do?  Basically, it is a text file reader thatì
  361. has to be capable of finding messages quickly.  Other than that, and theì
  362. message editor, a BBS program really isn't that involved.  I will put QBBSì
  363. up against PBBS and HBBS, both written in 100% machine code, in a speed testì
  364. any day of the week.  Also, modifying high level language programs isì
  365. usually easier.  But what you chose is up to you.
  366.  
  367.  
  368. MAKE UP YOUR ALIASES
  369.  
  370.    As I said earlier, part of your system security is that the names youì
  371. give  your environment files must be a secret.  The only way to invoke themì
  372. with a caller on line is to blank out the modem output with BYE's ESC-B, orì
  373. to load them through an alias.  I use the alias method.  If you haven'tì
  374. picked up on it by now, I don't trust BYE farther than I can throw it....
  375.  
  376.    Here are a couple of example aliases I have.  By the way, don't put theseì
  377. into your ALIAS.CMD file.  I've seen various versions of TYPE that let usersì
  378. type out a $SYS file, and that would blow the secret!
  379.  
  380. This is the alias to load the normal (secure) system.  It is named NZUSER:
  381.  
  382.     A0:NZUSER    --> ldr a0:user.env
  383.                      ldr a0:user.ndr
  384.                      whl <wheel password> /s
  385.                      path a0 $$$$ a0
  386.                      whl r
  387.                      echo system load done
  388.  
  389. Now the alias to load the sysop system:
  390.  
  391.     A0:NZSYSOP   --> if ~wh
  392.                           whl /s
  393.                      fi
  394.                       if wh
  395.                           ldr a0:sysop.ndr
  396.                           ldr a0:sysop.env
  397.                           path a0 $$$$ a15 A0
  398.                           echo sysop system loaded
  399.                       else
  400.                           echo access denied
  401.                       fi
  402.  
  403. This alias gives the user a chance to set the wheel in case it is off, butì
  404. will abort if he can't get it set.
  405.  
  406.    Two questions.  First, why do we load the SYSOP.NDR before we load theì
  407. SYSOP.ENV?  Remember the QUIET flag?  If we reversed the order, the systemì
  408. would report the name of our NDR file to the user.  Second, why do we loadì
  409. the extended path after we load the environment?  Because if we didn't, A15:ì
  410. would be an invalid DU:, and the system would refuse to allow a path to it.
  411.  
  412.    The alias to load the floppy system is the same as the sysop alias,ì
  413. except it loads the floppy environment.
  414.  
  415.    The last of what I feel are the essential aliases is called BYE.  Whyì
  416. would I do that?  Again, I don't trust the real BYE to handle systemì
  417. security properly, so I have this alias reset the environment through theì
  418. NZUSER before calling the real BYE.  Of course, rename your real BYE toì
  419. something else, and make it a $SYS file:
  420.  
  421.     A0:BYE       --> echo one moment please.
  422.                      nzuser
  423.                      echo thank you for calling.
  424.                      echo please call again.
  425.                      realbye $*
  426.  
  427.  
  428. CHOOSE YOUR TRANSIENTS
  429.  
  430.    You are very close to going on line.  Move MKZCM, SHOW, STAT, yourì
  431. editor, and anything else that allows someone to fool with the system up toì
  432. a safe, high user area.  Most of us use A15: for this.  Set all the ENV andì
  433. NDR files to $SYS status, as well as all NZCOM files and libraries and theì
  434. aliases we made up.  Not only does this keep people from trying things theyì
  435. shouldn't, it also keeps them from downloading them.  What good does it doì
  436. to go through all this to have someone download your NZCOM.LBR with itsì
  437. patched wheel password?
  438.  
  439.    Time to choose your transient commands.  You will need something for file ì
  440. transfers.  I use ZMD150 and RZMP16.  Something to type out text files?  Iì
  441. use ZLT12.  Something to lock into LBR and ARC files?  I have LUX77B, LUSH,ì
  442. and ZLUX26, none of which I am really happy with.  Gotta work with ARCì
  443. files, like it or not, so that means you need UNARC16.  Don't forget LDIR,ì
  444. and in today's world, ZIPDIR.  Does that about do it?
  445.  
  446.  
  447. LET'S GO SEE THE WORLD
  448.  
  449.    If you've gotten this far, you're ready to start taking calls.  I suggestì
  450. you start by calling it yourself!  Thrash it, bash it, try to break it.  Ifì
  451. you can't, then it is time to tell a few friends.  Give them the sameì
  452. assignment.  Have them do anything they can to crash the system.  If someoneì
  453. can do it, eventually they will, and it might as well be now, done by aì
  454. friend who will tell you how it happened.  Leave the system private amongstì
  455. yourselves for a couple of weeks.  If it still works as it should after thisì
  456. time, go public.  We will all welcome a new RCP/M.
  457.  
  458. Welcome to the club, sysop!
  459.  
  460.  
  461. -----------------------------------------------------------------------------
  462.  
  463. ; ++ CCP Options ++
  464. ;
  465. ZCPR2   EQU     no              ; Yes, if running ZCPR/ZCMD/NZCPR (1 or 2)
  466. ;
  467. ; NOTE: Requires MAC.COM to assemble if ZCPR3 is set YES.
  468. ;
  469. ZCPR3   EQU     yes             ; Yes, if running ZCPR3
  470. ;
  471.          IF     ZCPR3
  472.         MACLIB  Z3BASE          ; Requires MAC to assemble
  473.          ENDIF
  474. ;
  475. ; NZCPR/ZCMD/ZCPR all use bytes (at 3DH/3EH/3FH) to store the maximum
  476. ; drive, wheel status, and maximum user area.  QBBS pokes these values
  477. ; in QBYE which in turn maintains them in low memory bytes.
  478. ;
  479. USEZCPR EQU     yes             ; (QBBS = NO, except w/NZCOM. Then, YES)
  480. ;                               ;
  481. CHEKDU  EQU     no              ; Yes, if QBYE will monitor MAXDRIV/USER.
  482.                                 ;   If using ZCPR/ZCMD/NZCPR, set this NO,
  483.                                 ;   since they already do it (saves a lot of
  484.                                 ;   code, too).  In either case, QBYE will
  485.                                 ;   have the correct values in MAXDRIV/USER.
  486.  
  487. ;Set this equate to your system's ENV address:
  488. NZENV   EQU     0E780h          ; Required for use with NZCOM
  489.                                 ; this value will vary on each computer.
  490.                                 ; use SHOW to see where your ENV is.
  491. WHEEL   EQU     NZENV+17Fh      ; Location of ZCPR's wheel flag
  492. MAXDRIV EQU     NZENV+02Ch      ; ZCPR location of MAXDRIV byte
  493. MAXUSER EQU     NZENV+02Dh      ; ZCPR location of MAXUSR byte
  494. ;
  495.  
  496. MAXDRV  EQU     'J'             ; Highest drive supported
  497.                                 ; NZCOM:  Put this to highest + 1 on system 
  498.                                ; and let the OS control access.
  499. MAXUSR  EQU     15              ; Highest user area
  500.                                 ; NZCOM:  Put this to highest on system and
  501.                                 ; let the OS control access.
  502. ;
  503. ; In all cases, set SYSDRV/USR, since the ^B function gives you these
  504. ; d/u areas when used to toggle off the user temporarily.
  505. ;
  506. ;NZCOM:  Set SYSDRV to one more than you really want.
  507.  
  508. SYSDRV  EQU     'J'             ;#Highest local drive supported
  509. SYSUSR  EQU     15              ;#Highest local user area (0-15)
  510. ;
  511.                          -------------------------
  512.  
  513. Figure 1.  This is a section of the BYE configuration file showing theì
  514. proper settings to use on an NZCOM system.
  515.  
  516. -----------------------------------------------------------------------------
  517.  
  518. ;Z3BASE.LIB
  519. ;
  520. ;Last edited: 10 July 89, Lee McEwen
  521. ;
  522. ;Currently configured for use with:
  523. ;  Ampro LB, 64 MB / NZCOM
  524. ;  Maximum memory size for use on bbs under bye
  525. ;
  526. false   equ     0
  527. true    equ     not false
  528. off     equ     0
  529. on      equ     not off
  530.  
  531. base    equ     0
  532.  
  533. ;The following values are taken from screen 1 of SHOW:
  534.  
  535. z3cl    EQU     0DD00H                  ;mcl, multiple command line
  536. z3cls   EQU     203                     ; length of mcl in bytes
  537. expath  EQU     0DCF4H                  ;path
  538. expaths EQU     5                       ; number of path elements
  539. shstk   EQU     0DB00H                  ;shl, shell
  540. shstks  EQU     4                       ; number of shell entries
  541. shsize  EQU     32                      ; size of each shell entry
  542. z3env   EQU     0DB80H                  ;env, z-system environment
  543. z3envs  EQU     2                       ; size of env in records
  544. z3msg   EQU     0DC80H                  ;msg, system message buffer
  545. z3msgs  EQU     80                      ; size of msg in records
  546. z3whl   EQU     0DCFFH                  ;whl, location of wheel byte
  547. z3whls  EQU     1                       ; size of whl in bytes
  548.  
  549.                          -------------------------
  550.  
  551. Figure 2.  The part of the file Z3BASE.LIB needed for the assembly of BYE.
  552.  
  553. -----------------------------------------------------------------------------
  554.