home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / jsage / znode3 / tcj / tcj43.wz / TCJ43.WS
Encoding:
Text File  |  1993-06-07  |  13.3 KB  |  237 lines

  1. TCJ #43
  2.  
  3.                             The Z-System Corner
  4.  
  5.                                   Jay Sage
  6.  
  7.  
  8.    This time my column is going to be quite short.  In response to myì
  9. requests, a number of authors have submitted some very interesting articles,ì
  10. but there has not been enough space to print them.  I want to make sure thatì
  11. those articles are not delayed further.  One of them is on the superb LSHì
  12. history shell by Rob Friefeld, who has contributed quite a number ofì
  13. excellent Z-System programs (SALIAS, VCOMP, and BCOMP, to name a few).  Youì
  14. should not miss that article.
  15.  
  16.    After working first with the original Z-System history shell (HSH byì
  17. Michael Rubenstein) and then with EASE by Paul Pomerleau, it occurred to meì
  18. that it would be even nicer to have a full-screen history shell.  What Iì
  19. envisioned was bringing the full resources of a wordprocessor to bear on theì
  20. command transcript, so that commands could be easily viewed, modified,ì
  21. reordered, and regrouped.  If the history file were a standard ASCII file,ì
  22. then one could massage the file with a standard editor or even prepareì
  23. 'history' scripts in advance for special purposes.
  24.  
  25.    After seeing the splendid full-screen work Rob Friefeld had done in hisì
  26. SALIAS (Screen ALIAS editor), I asked him if he would take on the task ofì
  27. writing such a history shell.  He did, and he has done a splendid job.  Iì
  28. would, therefore, like to publicly take credit for that all-importantì
  29. management skill of asking the right person to do a job!
  30.  
  31.  
  32.                           Software Update Service
  33.  
  34.    While Echelon was still in business marketing the Z-System, they offeredì
  35. a very nice product called SUS or Software Update Service.  People who haveì
  36. modems and a nearby Z-Node or RCP/M system generally do not have muchì
  37. trouble picking up the latest releases of public-domain Z-System and generalì
  38. CP/M software.  However, for those who do not have modems or for whom theì
  39. nearest Z-Node is an expensive long-distance call, obtaining a full set ofì
  40. Z-System tools or keeping up with new releases is much more difficult.    ì
  41. The Echelon SUS was designed to solve that problem by making the materialì
  42. available on diskette by mail.  It was a disk subscription service, andì
  43. roughly every month subscribers would get a diskette full of public-domainì
  44. software.
  45.  
  46.    I am happy to announce that SUS is coming back, thanks to the urging andì
  47. energy of Chris McEwen, sysop of the Socrates Z-Node (#32), in Plainfield,ì
  48. NJ.  Chris and Bill Tishey, together with Sage Microsystems East, will beì
  49. offering an even more extensive service than Echelon's.  Bill Tishey, asì
  50. most of you know, has for some time been maintaining a complete catalog ofì
  51. Z-System programs (ZFILESnn.LST) and a compendium of HLP files covering allì
  52. of them.  At frequent intervals, Bill releases an update LBR with all theì
  53. new help files.  Now, in addition to that service, Bill will be puttingì
  54. together diskettes with the software as well as the documentation.
  55.  
  56.    This means that you will be able to purchase diskettes with the completeì
  57. set of Z-System programs and/or subscribe to a monthly update service.  Billì
  58. and Chris will be handling most of the diskette production; SME will handleì
  59. the orders and bookkeeping and will produce diskettes in the few formatsì
  60. that Chris and Bill cannot handle (8" IBM SSSD, NorthStar hard-sector, andì
  61. Amstrad 3").
  62.  
  63.    We have not yet worked out all the pricing details for all the options,ì
  64. but by the time you are reading this column, we will have flyers availableì
  65. with all the information.  Just drop me a letter or postcard, or leave aì
  66. message for me in any of the ways indicated in the sidebar to this column,ì
  67. and I will get a flyer to you.  To give you some idea of what we are talkingì
  68. about, a 6-month SUS subscription to a US address will probably be $48 ($8ì
  69. per disk) and a year's subscription $72 ($6 per diskette).  As you can see,ì
  70. we are trying to keep the price very low.  We really want all of you to beì
  71. able to get and use all these wonderful programs.
  72.  
  73.  
  74.                           Fully Customizing NZCOM
  75.  
  76.    My technical topic for this time will be about designing fully customizedì
  77. NZCOM Z-Systems.  I have always been satisfied with the systems that can beì
  78. produced so easily using the MKZCM (MaKe nZCoM) menu-driven utility, and soì
  79. I never really delved into this area very much.  About a week or so ago,ì
  80. however, Dave Goodman brought the problem to me.  He has a NorthStar Horizonì
  81. with an add-on hard disk, and the operating system has a ROM stuck somewhereì
  82. in the middle of the address space.  That left some disjoint blocks of freeì
  83. memory, and Dave really wanted to make use of all the space.  I told him myì
  84. standard answer to that problem.
  85.  
  86.    In section 5 (especially subsection 5.2.3) of the NZCOM manual, I pointì
  87. out that the NZCOM system is defined by a descriptor file and that this fileì
  88. (with type ZCM) is a pure ASCII file that can be edited with one's favoriteì
  89. text editor.  The manual recommends that everyone make certain changes soì
  90. that the descriptor will properly reflect the user's hardware environment,ì
  91. such as the disk drives available and the characteristics of the system'sì
  92. printer and terminal.
  93.  
  94.    I did not actually come out and say it explicitly, but there is anì
  95. implication that other values in the ZCM file can also be changed.  Theì
  96. truth is, I believe, that I avoided this subject in part because I was notì
  97. entirely sure which values could and which values could not be changed.  Myì
  98. suggestion to Dave Goodman was that he experiment with designing a customì
  99. memory map for his system, edit the values into the ZCM file, and see whatì
  100. happened when he tried to load it.
  101.  
  102.    Dave's report back to me, now confirmed by my own experiments on myì
  103. Televideo 803H, indicated that ALL values can be changed.  The onlyì
  104. requirement is that the values provide a memory map with no modulesì
  105. overlapping.  When you use MKZCM to design the system, it takes over theì
  106. responsibility for generating a valid memory map; if you do the designì
  107. yourself, you better be careful.
  108.  
  109. A Helpful Utility
  110.  
  111.    This suggests a very nice utility program that some thoughtful soul couldì
  112. contribute to the community.  This utility (let's call it ZMAP) might do aì
  113. number of helpful things.  First, it could display, perhaps in someì
  114. graphical or semi-graphical way, the memory map of a Z-System, the oneì
  115. actually running or one specified in the form of a ZCM or ENV file (andì
  116. maybe even the Z3PLUS descriptor file of type Z3P).  Present utilities, suchì
  117. as SHOW (ZSHOW) and Z3LOC, list the module addresses in a fixed order, notì
  118. in order of increasing memory address.  Thus they are not very helpful inì
  119. determining if there are gaps or overlaps in the map.  Ideally, ZMAP wouldì
  120. flag any such defects or potential defects in the map so that they could beì
  121. corrected before they cause harm.
  122.  
  123.    The final item on my wishlist -- and this might better be implemented inì
  124. a second, independent program (ZDESIGN perhaps) -- would be a general Z¡
  125. System designer, along the lines of MKZCM but without its restrictions.  Oneì
  126. would be able to specify the order of all the modules in memory and theirì
  127. sizes.  Given the highest memory address available, the program would thenì
  128. figure out and display the memory map.  One should be able easily to alterì
  129. the order of the modules, and one should be able to override specificì
  130. addresses to create gaps if necessary (but not to force overlaps).  Once theì
  131. desired system has been designed, the program should write out a ZCM or ENVì
  132. file for it.  Such a program is a good candidate for implementation with aì
  133. high level language such as BDS Z or Turbo Pascal.  And it sure would haveì
  134. helped me with the experiments that I am about to describe (several mistakesì
  135. resulted in crashes).
  136.  
  137. My Experiments
  138.  
  139.    Fig. 1 shows a printout of the standard NZCOM.ZCM file on my Televideoì
  140. 803H.  It has already been customized in several ways using MKZCM.  First,ì
  141. it allocates a 4-record VBIOS.  I use a version that fixes the 803's fauxì
  142. pas of clobbering the index registers during BIOS calls and implements aì
  143. check of the Z-System drive vector for BIOS disk-select calls as describedì
  144. in a previous column.  It also has room for a 20-record RCP, which allows meì
  145. to use a full-featured RCP with Carson Wilson and Rob Friefeld's residentì
  146. history shell, CLED (see RCPZRL11.LBR on Z-Nodes).
  147.  
  148. -----------------------------------------------------------------------------
  149.  
  150. E606 CBIOS    0080 ENVTYP    E3F4 EXPATH    0005 EXPATHS    D300 RCP
  151. 0014 RCPS    0000 IOP    0000 IOPS    DD00 FCP    0005 FCPS
  152. DF80 Z3NDIR    0023 Z3NDIRS    E400 Z3CL    00CB Z3CLS    E280 Z3ENV
  153. 0002 Z3ENVS    E200 SHSTK    0004 SHSTKS    0020 SHSIZE    E380 Z3MSG
  154. E3D0 EXTFCB    E4D0 EXTSTK    0000 QUIET    E3FF Z3WHL    0004 SPEED
  155. 0010 MAXDRV    001F MAXUSR    0001 DUOK    0000 CRT    0000 PRT
  156. 0050 COLS    0018 ROWS    0016 LINS    FFFF DRVEC    0000 SPAR1
  157. 0050 PCOL    0042 PROW    003A PLIN    0001 FORM    0000 SPAR2
  158. 0000 SPAR3    0000 SPAR4    0000 SPAR5    BB00 CCP    0010 CCPS
  159. C300 DOS    001C DOSS    D100 BIO    0000 PUBDRV    0000 PUBUSR
  160.  
  161. Figure 1.  The ZCM descriptor file for the normal NZCOM system I use on myì
  162. Televideo 803H computer.
  163.  
  164. -----------------------------------------------------------------------------
  165.  
  166.    I decided to be cautious, especially after one of my new system designsì
  167. caused the system to hang, and I made a series of systems, each differentì
  168. from the previous one in a relatively small way.  I am not going to show youì
  169. all the steps along the way but will go right to the most radicallyì
  170. different version.  See Fig. 2.  If you look carefully, I think you willì
  171. find that only the command line buffer (Z3CL) is still in the same place asì
  172. it was in the original system (but it is bigger now).
  173.  
  174. -----------------------------------------------------------------------------
  175.  
  176. E606 CBIOS    0080 ENVTYP    E3F4 EXPATH    0005 EXPATHS    D700 RCP
  177. 0014 RCPS    0000 IOP    0000 IOPS    D480 FCP    0005 FCPS
  178. D200 Z3NDIR    0023 Z3NDIRS    E400 Z3CL    00FB Z3CLS    E180 Z3ENV
  179. 0002 Z3ENVS    E100 SHSTK    0004 SHSTKS    0020 SHSIZE    E280 Z3MSG
  180. E2D0 EXTFCB    E300 EXTSTK    0000 QUIET    E2FF Z3WHL    0004 SPEED
  181. 0010 MAXDRV    001F MAXUSR    0001 DUOK    0000 CRT    0000 PRT
  182. 0050 COLS    0018 ROWS    0016 LINS    000F DRVEC    0000 SPAR1
  183. 0050 PCOL    0042 PROW    003A PLIN    0001 FORM    0000 SPAR2
  184. 0000 SPAR3    0000 SPAR4    0000 SPAR5    BA00 CCP    0010 CCPS
  185. C200 DOS    001C DOSS    D000 BIO    0000 PUBDRV    0000 PUBUSR
  186.  
  187. Figure 2.  A radically reconfigured NZCOM system produced by manuallyì
  188. editing the ZCM file.
  189.  
  190. -----------------------------------------------------------------------------
  191.  
  192.    Perhaps you are wondering why I didn't make the most dramaticì
  193. demonstration possible by changing absolutely every address (and perhapsì
  194. size, too).  Well, there was an extra constraint that I was exploring withì
  195. this system.  I am running ZDDOS, and I have specified that the clock driverì
  196. be loaded into the so-called user buffer.  I have even applied the NZCOMì
  197. patch (NZCOMPAT.HEX) that comes with the ZSDOS/ZDDOS package so that whenì
  198. new system configurations are loaded, the clock driver will be reconnectedì
  199. to the DOS automatically without the need for running LDTIM again.
  200.  
  201.    If you know a lot about Z-System, you will know that there is no suchì
  202. thing as a user buffer!  The user buffer is a special creature of NZCOM; itì
  203. is not defined in the Z-System environment descripter (or -- look closely --ì
  204. in the ZCM file).  How, then, does one determine where this special gap inì
  205. the memory map of an NZCOM system is located?  That is exactly what Iì
  206. wondered myself.  I could have called ZDOS authors Cam Cotrill or Hal Bowerì
  207. and asked them how they infer its location, but I decided to experimentì
  208. instead.  What I found after various trials and errors was that the NZCOMì
  209. patch seemed to be happy and able to find the LDTIM clock module so long asì
  210. the command line buffer stayed in the same place.  Apparently, theì
  211. assumption is made that the user buffer is the memory from 100H above theì
  212. start of the command line buffer up to the real CBIOS (E400 to E5FF in myì
  213. case).
  214.  
  215.    I did not perform exhaustive tests of this hypothesis.  Let us just sayì
  216. that it is not terribly prudent to try to make use of a 'user buffer' with aì
  217. fully customized system.  It would be wiser to design the system with a gapì
  218. below the CBIOS for the clock driver and to create a version of LDTIM withì
  219. an explicit load address.  The NZCOMPAT patch should be omitted from NZCOMì
  220. if such custom systems are going to be used.
  221.  
  222. A Few Bugs
  223.  
  224.    There were a few bugs in NZCOM that surfaced during this testing thatì
  225. suggest that NZCOM.COM was not quite designed to work rigorously and toì
  226. handle the most general system loading situations.  Sometimes I found thatì
  227. NDR modules became empty, and the command search path was rarely preservedì
  228. with these systems.  Code-containing modules, such as the FCP, RCP, DOS, andì
  229. so on, cannot be moved from one address to another.  If their startingì
  230. address changes, the code must be reloaded fresh from the ZRL file.  On theì
  231. other hand, modules that contain data, such as the NDR, shell stack, path,ì
  232. message buffer, and so on, can and should be moved to any new address, soì
  233. long as there is room for the old contents in the new home.  NZCOM sometimesì
  234. failed to do this.  Maybe now that I have uncovered these small problems, Iì
  235. can pass the information on to Joe Wright, and he can fix up the code toì
  236. handle these situations.
  237.