home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C128CPM / PIPMAG6.ARK / Z-CORNER.TXT < prev    next >
Encoding:
Text File  |  1990-07-25  |  36.4 KB  |  631 lines

  1.                               The Z-System Corner
  2.  
  3.                                     Jay Sage
  4.  
  5.        ******************************************************************
  6.        This  article originally appeared in The Computer  Journal,  Issue 
  7.        Number  42  (Copyright (C) 1990 by Technology Resources),  and  is 
  8.        presented here with the permission of the author.
  9.        ******************************************************************
  10.  
  11.         A number of newer TCJ readers have commented that with this column 
  12.      they feel that they are coming into the middle of a very involved 
  13.      discussion that is hard to catch on to.  Of course, one answer to that 
  14.      problem is for new TCJ readers to purchase back issues.  I have been 
  15.      writing this column regularly since issue #25, and I am quite sure 
  16.      that all those back issues are still available.  That solution 
  17.      notwithstanding, it is probably not a bad idea to stand back every so 
  18.      often and try to comprehend a larger picture.  That is one of the 
  19.      tasks I will undertake this time.
  20.  
  21.         Detailed technical content will not be forsaken entirely, however, 
  22.      since I regard that as the primary purpose of my column.  At this 
  23.      point, I suspect that I am too much of a Z-System expert to talk about 
  24.      very many topics at a level that is appropriate for beginners.  To 
  25.      serve their needs, I have been very actively soliciting articles from 
  26.      other authors.  In this issue, for example, we have the first of the 
  27.      columns I promised a couple of issues back on how to set up a remote 
  28.      access system (aka bulletin board system) under the NZCOM auto-install 
  29.      version of Z-System.  Lee McEwen (aka Chris McEwen) has done a lovely 
  30.      job with that assignment.
  31.  
  32.         The technical discussion this time will focus on some issues that 
  33.      arose in trying to install ZSDOS or ZDDOS on an SB180 computer with 
  34.      the XBIOS enhanced operating system.  Before you say "But I don't have 
  35.      an SB180," let me assure you that the techniques have more general 
  36.      applicability.  The specific XBIOS problem is one that has come up 
  37.      often and has been the source of considerable frustration to XBIOS 
  38.      users.  [They are in good company, by the way.  Just as I was 
  39.      finishing this article, I got a call from Bridger Mitchell about this 
  40.      very subject!] I am only sorry that it took me so long to get around 
  41.      to working on it.  Gene Pizzetta, a fellow Bostonian, was the squeaky 
  42.      wheel that finally got my attention, and he has contributed a number 
  43.      of his own ideas to the solution.
  44.  
  45.         Announcements
  46.  
  47.         Before we get down to business, I have, as usual, a few 
  48.      announcements to make.  First I would like to remind readers once 
  49.      again about Bill Tishey's superb collection of help files for the 
  50.      hundreds of Z-System programs now available.  Bill can now generate 
  51.      diskettes in many formats besides Apple (using his son's Commodore 
  52.      128), and he is willing to fill your diskettes with the files for only 
  53.      $10.  My column in issue #36 gave the following procedure to follow:  
  54.      (1) send enough formatted diskettes (plainly labeled with the format) 
  55.      to hold at least 1000K bytes (up from 800K back then); (2) use a 
  56.      reusable disk mailer or enclose a mailer suitable for returning the 
  57.      diskettes to you; and (3) enclose a return address label, return 
  58.      postage, and the $10 copying fee.  Bill's address is 8335 Dubbs Drive, 
  59.      Severn, MD 21144.  If you prefer (or if you need 96-tpi, 8" SSSD, or 
  60.      NorthStar hard-sector formats), you can send the diskettes to me as 
  61.      well.
  62.  
  63.         Second, I would like to make a special point of calling your 
  64.      attention to the GEnie RoundTable discussions that take place every 
  65.      Wednesday at 10pm Eastern time.  The first such session of each month 
  66.      is devoted to Z-System, and I am the moderator, so this is your chance 
  67.      for a real-time dialogue with me.  Go to page "685;2" on GEnie and 
  68.      enter "Room 2".
  69.  
  70.         There are several changes to report in the roster of Z-Nodes.  
  71.      Regrettably, Bob Paddock's node #38 in Franklin, PA, has gone off the 
  72.      air.  To offset that loss, however, node #73 in the St.  Louis, MO, 
  73.      area has come back to life after being down for several years.  Sysop 
  74.      George Allen and co-sy sop Walt Stumper would be happy to hear from 
  75.      you at 314-821-1078 (PC-Pursuit MO SLO/24).  The equipment is 
  76.      currently a Xerox 820-II with a 10 Meg drive, but the sysops hope to 
  77.      expand soon to a 30+ Meg Ampro.
  78.  
  79.         On the Z-Node front, I am also sorry to report that Z-Node Central 
  80.      (Lillipute) was downed by hardware failures on both computers!  They 
  81.      have been off the air for a couple of months already as I write this, 
  82.      and sysop Richard Jacobson has just faced the truth:  that it will not 
  83.      be coming back.  Ladera Z-Node (#2) in Los Angeles will take over as 
  84.      Z-Node Central.  Chicago area callers looking for Z support should 
  85.      check out the Antelope Freeway system run by ZDOS-coauthor Carson 
  86.      Wilson for CFOG (Chicago area FOG).  This is one of a small number of 
  87.      remote access systems running under the Z3PLUS flavor of Z-System.  
  88.      The phone number is 312-764-5152 (PC-Pursuit ILCHI/24).  We expect 
  89.      that its 'System One' will soon be a Z-Node ('System Two' supports MS-
  90.      DOS).
  91.  
  92.         Finally, there have been some very significant developments with 
  93.      BDS C.  Leor Zolman completed some major additions to the Z version 
  94.      (BDS Z), and the final release has just gone out as I write this 
  95.      column in mid October.  Programs generated by BDS Z now have a full Z-
  96.      System header and can be linked as type-3 programs to load and run at 
  97.      an arbitrary address.  ZDOS coauthor Cam Cotrill has already released 
  98.      a substantial amount of BDS Z code for performing the functions in the 
  99.      SYSLIB, VLIB, and Z3LIB assembly-language libraries that are not 
  100.      already built into BDS Z.
  101.  
  102.         Leor has now turned over all of the marketing and some of the 
  103.      development responsibility for BDS C to me.  Recognizing that the $90 
  104.      price tag of the full package, however reasonable for what one gets, 
  105.      is an impediment to new users who want to experiment with C, we have 
  106.      prepared a low cost introductory package that (1) includes only one 
  107.      version of the code (either standard CP/M or Z-System), (2) contains 
  108.      only the essential files, and (3) comes with an abridged version of 
  109.      the manual (and without the fancy BD Software binder).  This package 
  110.      will be offered for only $60.  Other parts of the full package can be 
  111.      added later:  $25 for the second version of the compiler, $25 for the 
  112.      support materials (RED editor, CDB debugger, and the parts of the 
  113.      manual covering them), or $40 for both at once.  If the whole package 
  114.      is ordered at once, it comes complete with an attractive binder (also 
  115.      available with the introductory package for $5 extra).
  116.  
  117.         It should be noted that BDS Z generates programs that run perfectly 
  118.      well under standard CP/M.  Naturally, they will not recognize Z-System 
  119.      features like named directories, but they will accept the now standard 
  120.      DU: extended drive/user syntax instead of the older U/D: format of 
  121.      standard BDS C.  The only disadvantage of using BDS Z rather than BDS 
  122.      C on a standard CP/M system is that the programs carry Z-System 
  123.      overhead (about 800 bytes) that don't provide them with any 
  124.      functionality.
  125.  
  126.         What is a Microcomputer Operating System For?
  127.  
  128.         The basic function of an operating system is to make one's life -- 
  129.      one's computing life, that is -- simpler.  When microcomputers first 
  130.      came out, the biggest burden was dealing with the hardware.  It was no 
  131.      fun for the computer user and programmer (largely synonymous in those 
  132.      days) to have to deal over and over with the intricacies of the 
  133.      physical operation of the hardware, such as getting characters to and 
  134.      from the terminal or paper tape reader/punch, not to mention the 
  135.      dauntingly more complex task of managing data on a magnetic tape or 
  136.      floppy diskette drive.
  137.  
  138.         Gary Kildall's CP/M operating system provided a solution -- and a 
  139.      very good one (by and large) in my opinion -- to those problems.  It 
  140.      did so by implementing a standardized and modular interface that 
  141.      handled the basic device communication tasks.  CP/M, which stood (I 
  142.      believe) for "Control Program for Microcomputers," was the master 
  143.      program that one got running on the computer right after power up.  It 
  144.      would then allow one to load and run other programs, with control 
  145.      always returning to the CP/M master program after each user program 
  146.      finished.
  147.  
  148.         Besides accepting and interpreting commands issued by the computer 
  149.      operator, an operating system like CP/M also provides resident code 
  150.      (always ready in memory) for performing certain functions that 
  151.      application programs will often want to use.  The simpler functions 
  152.      are things like sending a character to the terminal screen; the more 
  153.      complex ones include fetching from or writing to a floppy diskette the 
  154.      information associated with a logical entity known as a file.
  155.  
  156.         With these functions implemented in the operating system code, 
  157.      application programs are easier to write and do not have to include 
  158.      the same code over and over.  More importantly, they can run on a 
  159.      variety of hardware platforms, since the details of the physical 
  160.      hardware are handled by the operating system code, and the program can 
  161.      deal with things at a logical level.
  162.  
  163.         Logical vs.  Physical
  164.  
  165.         Perhaps this is a good time for a brief aside on this matter of 
  166.      logical versus physical.  We use the adjective "physical" when we are 
  167.      talking about things that are actually in the hardware.  In the case 
  168.      of a floppy disk, for example, the physical items are the bits of data 
  169.      stored as magnetization patterns.  These bits are grouped into 
  170.      sectors, and the sectors into tracks.  In the case of a terminal 
  171.      screen, the physical items are the patterns of illuminated dots that 
  172.      we recognize as letters, numbers, and other symbols.
  173.  
  174.         On the other hand, we use the adjective "logical" to describe those 
  175.      things which are essentially the creation of our minds (and programs).  
  176.      For example, there is no such physical thing as a "file." No matter 
  177.      how you examine a diskette, you will never find a file on it (as 
  178.      such); you will find only sectors and tracks.  It is our choice to 
  179.      organize the data on the disk in a way that associates groups of such 
  180.      sectors with a file names and to store the file names in a particular 
  181.      group of sectors on the disk.
  182.  
  183.         Modularity
  184.  
  185.         CP/M is modular in the sense that it divides up the functions of 
  186.      the operating system into separate packages.  One part is called the 
  187.      BIOS (basic input/output system).  This part, which lives at the very 
  188.      top of the memory address space, deals directly with the hardware.  It 
  189.      reads and writes physical sectors from and to a diskette; it 
  190.      determines whether or not a key has been pressed on the keyboard and, 
  191.      if so, which key; and it sends characters to the screen.  The BIOS is 
  192.      the only part of CP/M that is different for each hardware 
  193.      implementation of a CP/M computer.
  194.  
  195.         The second CP/M module is called the BDOS (basic disk operating 
  196.      system).  It deals with logical constructs.  We have already spoken of 
  197.      files.  When a file is referred to, the BDOS figures out which 
  198.      physical tracks and sectors contain the data for that file.  Another 
  199.      logical construct is lines of text.  The BDOS has a function to send a 
  200.      complete line of text to the screen (as opposed to the BIOS, which can 
  201.      send only a single character), and it has another function to get a 
  202.      complete line of text from the user, allowing a limited amount of 
  203.      editing.  These functions make it much easier for the application 
  204.      programmer to write his or her program.
  205.  
  206.         The last CP/M module is called the CCP (console command processor).  
  207.      It gets a command typed by the user at the console and takes the 
  208.      appropriate action to carry out that command.  Some commands, such as 
  209.      DIR or ERA, are implemented directly in the CCP code.  Others require 
  210.      that a COM file be loaded from diskette and executed.
  211.  
  212.         Command Processing Under CP/M
  213.  
  214.         For the most part, CP/M accomplishes the functions it was designed 
  215.      to perform in admirable fashion.  However, it was so concerned with 
  216.      solving the hardware interface problem (the programmer interface) that 
  217.      it devoted relatively little attention to the user interface.  To be 
  218.      fair, it was born in the days when 16K of memory cost about $500 (in 
  219.      1970s dollars, no less) and occupied an entire S-100 card (bigger by 
  220.      far than a whole SB180FX computer with 512K).  Today we might not 
  221.      think that 64K is very much (some say that OS/2 feels dreadfully 
  222.      cramped in less than 3 Megs!), but it makes a lot of things possible 
  223.      that 48K (or even less) would not allow.
  224.  
  225.         CP/M's command processor did little more than the minimum it was 
  226.      required to do, namely to run a few resident commands and to load 
  227.      external commands from disk.  It did not provide many services to make 
  228.      the operator's life easier.  You had to specify rather exactly the 
  229.      command you wanted performed; no leeway was allowed.  And if you made 
  230.      a mistake, CP/M did not try to help; it just shrugged its shoulders 
  231.      and emitted a question mark.
  232.  
  233.         The Niceties of Z-System
  234.  
  235.         The Z-System has evolved over a period of nearly a decade now, but 
  236.      its goal from the very beginning has always been to make it easier and 
  237.      more convenient to operate the computer.  My ideal is to have the 
  238.      computer do everything that it possibly can do for the user and leave 
  239.      to the user only those tasks that no computer could possibly figure 
  240.      out on its own.  The command processor improvements I have introduced 
  241.      and the utilities I have written have all been directed toward that 
  242.      goal.  I will now run through a short summary of Z-System features and 
  243.      try to indicate how they make the operator's life easier.  This list 
  244.      is adapted from my book, "The ZCPR33 User's Guide."
  245.  
  246.         User Area Access
  247.  
  248.         CP/M introduced the concept of disk "user" areas, which allowed the 
  249.      operating system to group files into separate logical directories 
  250.      (physically the files are all stored in the same directory, but they 
  251.      are tagged to indicate the user area).  Unfortunately, CP/M provided 
  252.      no practical way to access files across user areas, which made them 
  253.      almost useless.
  254.  
  255.         Back in the days when disks held only about 100K, there wasn't much 
  256.      need for this kind of organization, but today floppy diskettes 
  257.      commonly have a capacity between 350K and 1.3 Meg.  Hard disks with 
  258.      many tens of megabytes are also inexpensive and common.  Under these 
  259.      circumstances, a single logical drive can hold hundreds or even 
  260.      thousands of files, and some way to organize them becomes essential.
  261.  
  262.         Z-System makes it very easy and convenient to organize your files 
  263.      based on user numbers.  Where CP/M allowed only a drive prefix to a 
  264.      file name (D:NAME.TYP), Z-System allows drive and/or user number 
  265.      prefixes (DU:NAME.TYP) so that files in other user areas as well as 
  266.      other drives can be referenced directly.  In addition, Z-System allows 
  267.      meaningful names (similar to DOS subdirectory names) to be assigned to 
  268.      drive/user areas.  This provides an interface that is far more 
  269.      suitable to the way people think and remember.  With the DU: form, the 
  270.      operator has to think about the hardware (something he or she should 
  271.      not have to do, remember?); with named directories, the operator 
  272.      thinks in terms of function (TEXT: for text files, BDSC: for the C 
  273.      compiler, DBASE: for database files, and so on).
  274.  
  275.         Terminal Independence and the Environment
  276.  
  277.         While some would argue that the DOS hardware and software standards 
  278.      established by IBM's market dominance have resulted in an enforced 
  279.      mediocrity, there is no doubt that having a single environment in 
  280.      which to operate makes life much easier for applications programmers.  
  281.      Programs for DOS generally work right out of the box on any IBM 
  282.      compatible computer.  Configuration is required only for fine-tuning.
  283.  
  284.         CP/M, on the other hand, was designed to allow programs to run on 
  285.      an extremely wide variety of hardware.  In those days, "personal" 
  286.      computer took on a different meaning -- each person designed and built 
  287.      his own hardware.  CP/M could be made to work with all of them, but 
  288.      elaborate configuration procedures were generally required, especially 
  289.      to match programs to the particular terminal used.  To this day, we 
  290.      still have to deal with this hardware diversity.
  291.  
  292.         What CP/M could have but failed to provide was a means for 
  293.      conveying to application programs information about the operating 
  294.      environment.  Z-System has several modules that afford such 
  295.      communication.  An area called the environment descriptor (ENV) 
  296.      contains information about the system configuration.  Another system 
  297.      area called the message buffer (MSG) stores information that one 
  298.      program can leave for another program that runs later to read.
  299.  
  300.         Part of the ENV is a section called the TCAP or Terminal-CAPability 
  301.      descriptor.  The TCAP allows a program running under Z-System to 
  302.      determine the type of terminal in use and to adapt to the control 
  303.      codes it uses for special video operations.  The ENV has information 
  304.      about the size of the screen and the printer's page.  It also contains 
  305.      such information as the CPU clock speed and which disk drives are 
  306.      available (why allow attempts to log into drive C: if there is no 
  307.      drive C: -- it often just hangs the computer).  The Z-System supports 
  308.      many optional operating system features contained in optional modules, 
  309.      and the ENV contains information about these modules also.
  310.  
  311.         The ENV and TCAP not only relieve the user of the nuisance of 
  312.      installing programs; they also make it very easy to change the 
  313.      installation.  Suppose, for example, you want to print some files in 
  314.      132-column mode instead of the usual 80-column mode.  Under CP/M you 
  315.      might very likely have to get out a configuration program to redefine 
  316.      the printer setup.  With a Z- System print utility, you would simply 
  317.      change the mode on your printer, run CPSET (console/printer set) to 
  318.      select the 132-column printer definition, and run the same print 
  319.      program as before.
  320.  
  321.         Command Processing Enhancements
  322.  
  323.         Under CP/M, you have to specify where the COM file to be run is 
  324.      located (otherwise the current drive is assumed).  This is a perfect 
  325.      example of something that a computer can easily be smart enough to do 
  326.      for you, and Z- System does.  As with modern versions of DOS (which 
  327.      took many years to catch on to this Z-System feature), you specify a 
  328.      list of directory areas that the operating system will scan for a 
  329.      requested COM file.  If you wish (as you might when you know that your 
  330.      COM file is not on the search path), you can specify a directory using 
  331.      either the DU: prefix or the named directory DIR: prefix, and you are 
  332.      thus not limited to the current user area or the path.
  333.  
  334.         With Z-System one is also no longer limited to issuing commands one 
  335.      at a time (DOS has been even slower to catch on to this).  A single 
  336.      line of command input can contain a whole sequence of commands.  As a 
  337.      result, you do not have to interrupt your thinking to wait for one 
  338.      command to finish before you can specify the second and subsequent 
  339.      steps in a process.  You can work out a strategy for what you want to 
  340.      accomplish and issue all the commands at once, before you forget or 
  341.      get confused.
  342.  
  343.         Many oft-repeated computational tasks involve sequences of commands 
  344.      (e.g., editing, assembling, linking, running; or editing, spell 
  345.      checking, printing).  In such cases, the Z-System alias facility 
  346.      (similar in some ways to SUBMIT but far more flexible) can be used to 
  347.      define a new command name, which, when invoked, performs the entire 
  348.      sequence.  This saves the user a lot of typing but more importantly 
  349.      eliminates the need to remember exactly what the sequence is.  
  350.      Basically, you solve the problem once and put the solution into an 
  351.      alias script.  From then on, the computer is smart enough to take care 
  352.      of the complex details for you.  I have given many examples of this in 
  353.      past columns.
  354.  
  355.         Conditional Command Execution
  356.  
  357.         There is only so much one can accomplish on a computer (or in life) 
  358.      without making decisions.  Have you ever seen a programming language 
  359.      with no ability to perform tests and act in different ways depending 
  360.      on the results?  Flow control (IF/ELSE/ENDIF) is unique to the Z-
  361.      System command processor.  Other operating systems that offer flow 
  362.      control at all limit it to operation inside a batch or script 
  363.      language.
  364.  
  365.         A special set of Z-System commands can test a wide range of 
  366.      conditions, and the command processor will use the results of the 
  367.      tests to decide which subsequent commands will be performed and which 
  368.      will be skipped.  This allows the Z-System to respond in a remarkably 
  369.      flexible and intelligent way.  The solution to a complex computing 
  370.      task, one that requires on-the-spot decision-making, can be worked out 
  371.      once and embedded in an alias command.  Then you won't have to tax 
  372.      your brain the next time you need to perform this task, and novice 
  373.      users will be able to do things on your computer that would have been 
  374.      beyond their own ability to figure out.
  375.  
  376.         Command Processor Shells
  377.  
  378.         If you do not want to deal with the operating system at the command 
  379.      level or if you want to have a command processor with different 
  380.      features, the Z-System shell facility allows you to install substitute 
  381.      user interfaces of your own choice at will.  They can even be nested 
  382.      within each other.
  383.  
  384.         Shells come in two common varieties:  menu shells and history 
  385.      shells.  The menu interfaces allow the user to pick tasks with single 
  386.      keystrokes and have the shell program generate the complex sequences 
  387.      of commands required to perform those tasks.  The menu system shields 
  388.      the user from complexity, saves typing, and greatly reduces the chance 
  389.      of error.
  390.  
  391.         History shells are enhanced command processors that remember your 
  392.      commands and allow you to recall and edit previous command lines.  I 
  393.      wish the Apollo Domain minicomputer system I use at work (not to 
  394.      mention my DOS computer) had a history shell one quarter as nice as Z-
  395.      System's LSH or EASE.  They work like powerful wordprocessors on your 
  396.      command history, allowing searching and extensive editing.
  397.  
  398.  
  399.         What If You Make a Mistake
  400.  
  401.         This is one of the other areas in which most operating systems 
  402.      behave in an abominably primitive manner.  When you issue a command 
  403.      that cannot be performed, they just issue an error message and then 
  404.      dump you back to square one.  Often you are not even told what sort of 
  405.      error occurred (consider DOS's wonderfully helpful "bad command" 
  406.      message).
  407.  
  408.         The Z-System behaves in a civilized manner under these 
  409.      circumstances.  When an error occurs, the command processor turns the 
  410.      bad command line over to a user-specified error handler.  The most 
  411.      sophisticated error handlers allow the operator to edit the command 
  412.      and thus recover easily from typing mistakes.  In a multiple command 
  413.      sequence, if subsequent commands were allowed to run after an earlier 
  414.      command failed, there could be disastrous repercussions, and an error 
  415.      handler is indispensible.
  416.  
  417.         The system environment even contains an error type, which the error 
  418.      handler can use to give you more specific information about what went 
  419.      wrong.  It may be the familiar error of a COM file that could not be 
  420.      found, but there are many other possible causes for the difficulty.  A 
  421.      file that you specified as an argument might not have been found 
  422.      (e.g., "TYPE FILENAM" when you meant "TYPE FILENAME"), or you may have 
  423.      specified an ambiguous file name to a program that cannot accept one 
  424.      (e.g., "TYPE *.DOC").
  425.  
  426.         System Security
  427.  
  428.         Like minicomputer and mainframe operating systems, the Z-System is 
  429.      a secure operating system.  This means that it has mechanisms for 
  430.      limiting what any particular user can do or get access to.  Dangerous 
  431.      commands (such as erasing, copying, or renaming files) can be disabled 
  432.      when ordinary users are operating the system but enabled when a 
  433.      privileged user is at work.  Areas of your disk can be restricted from 
  434.      access for storage of confidential or other sensitive information.  
  435.      These security features come in very handy in the implementation of a 
  436.      remote access system or bulletin board (see Lee McEwen's article in 
  437.      this issue).  There is no need for additional security to be provided 
  438.      by the remote interface program (BYE).  The Z-System already includes 
  439.      a full suite of programs for regulating and controlling system 
  440.      security.
  441.  
  442.         Summary
  443.  
  444.         To sum it up, the goal of the Z-System is to provide an operating 
  445.      system that can be tailored extensively to user preferences and that 
  446.      can be made to handle on its own and automatically as many 
  447.      computational details as it can, leaving the user free to concentrate 
  448.      solely on those aspects of computer operation that require human 
  449.      intelligence.
  450.  
  451.         Faking Out The System
  452.  
  453.         For the technical part of this column, I would like to talk briefly 
  454.      about some techniques for adding extensions to a Z-System that it was 
  455.      not designed to accept.  The need for this trick arose in connection 
  456.      with the installation of ZSDOS and ZDDOS (and their clock drivers) on 
  457.      an SB180 computer with the XBIOS enhanced BIOS, but it can be useful 
  458.      in other situations as well.
  459.  
  460.         XBIOS is a very nice and flexible system.  One of its main features 
  461.      is that it keeps much of the BIOS in an alternate memory bank, leaving 
  462.      a much larger TPA (transient program area) for application programs 
  463.      than did the standard BIOS from MicroMint.  The configuration and 
  464.      loading process, however, is somewhat unconventional (a forerunner in 
  465.      some ways to the NZCOM and Z3PLUS techniques).
  466.  
  467.         The XBIOS system is loaded not from system tracks on the disk but 
  468.      from a file.  This file is generated by a special utility program 
  469.      called SYSBLD (SYStem BuiLD) that allows one to define in a rather 
  470.      flexible way the configuration of one's personal Z-System, including 
  471.      the names of the CCP and DOS files to be used.  Those component files, 
  472.      however, must be available in REL format, and the new Z-System DOS 
  473.      components are supplied in ZRL format only (because they have hooks to 
  474.      other parts of the system that can be resolved only by that format).
  475.  
  476.         Changing Systems Using JetLDR
  477.  
  478.         JetLDR is a lovely little utility written by Bridger Mitchell that 
  479.      knows how to load almost any module in a Z operating system.  It is 
  480.      much faster and more careful than its predecessors, LDR and LLDR, and 
  481.      it is not limited to the non-code Z modules -- such as the NDR (named 
  482.      directory register) -- or to code modules preassembled for a fixed 
  483.      system -- such as an RCP (resident command package) module FIXED.RCP.  
  484.      It can load code modules assembled in ZRL format to whatever address 
  485.      that module occupies in the current system and with all the hooks to 
  486.      other Z-System modules generated at load time.  Thus MYRCP.ZRL, 
  487.      assembled once, can be used in any system configuration that allocates 
  488.      enough room for an RCP of that size.
  489.  
  490.         Most remarkably, JetLDR can load even main operating system 
  491.      modules:  CCP, DOS, or BIOS.  Special adjunct configuration files 
  492.      (CFG) are used to help it in some of these specialized tasks (a little 
  493.      more about that later).  JetLDR's internal help screen is reproduced 
  494.      in Fig.  1 so you can see the whole list of modules it can handle.  It 
  495.      is available from the usual Z suppliers for $20.
  496.  
  497.         So, the obvious solution to the problem of getting ZSDOS or ZDDOS 
  498.      running under XBIOS is first to generate and boot a standard ZRDOS 
  499.      system (ZRDOS.REL comes with the SB180) and then to replace ZRDOS 
  500.      with, say, ZDDOS using the JetLDR command:
  501.  
  502.         JETLDR ZDDOS.ZRL
  503.  
  504.         ZSDOS can be loaded just as easily.  On my system I have ARUNZ 
  505.      aliases that swap DOSs in a jiffy this way in case I want to perform 
  506.      some experiments.
  507.  
  508.         There's The Rub
  509.  
  510.         Now comes the problem.  It's very nice that we now have ZDDOS or 
  511.      ZSDOS loaded and running, but if we want to take advantage of its 
  512.      wonderful time and date features, we must find a way to load its clock 
  513.      and (for ZSDOS) stamping module, too.  The ZDOS utility SETUPZST makes 
  514.      it very easy to create the required loader, LDTIM.COM; the problem is:  
  515.      where can LDTIM put the driver code?  [Aside:  For those who own it, I 
  516.      am told that the DateStamper BSX module will work with ZSDOS, but I 
  517.      have not tried this myself.  It requires no memory to load.]
  518.  
  519.         In an NZCOM system, the MKZCM system definition utility allows one 
  520.      to specify a "user buffer" area in memory, and this is just perfect 
  521.      for the clock/stamp module.  ZDOS even has special facilities for 
  522.      taking advantage of this buffer.  LDTIM can automatically determine 
  523.      the location of that buffer and install the drivers there, and a 
  524.      special patch to NZCOM (included with the ZDOS package) gives NZCOM 
  525.      the ability to reconnect the drivers automatically after a new DOS is 
  526.      loaded.
  527.  
  528.         XBIOS's SYSBLD utility, unfortunately, does not support such a user 
  529.      buffer (this is true even in the 1.2 version that is able to load ZRL 
  530.      files).  There is a way to trick the system into making some room for 
  531.      extra memory modules.  This is to assign the extra memory space needed 
  532.      to one of the standard modules, such as the RCP.  For example, if you 
  533.      use an RCP of the usual 2K (16 record) size and need one page (two 
  534.      records) of memory for a ZDDOS clock driver, you simply specify an 18-
  535.      record RCP space.  Then, when SETUPZST asks you for the address to 
  536.      which the clock driver should be loaded, you give it the starting 
  537.      address of the last page of this RCP space.
  538.  
  539.         Once these steps have been followed, ZDDOS should be running with 
  540.      date stamping.  ZSDOS could be installed similarly except that even 
  541.      more extra space would have to be allocated to the RCP.  Although what 
  542.      I have described so far will get the system running, there is some 
  543.      danger that an oversize RCP could be loaded by accident and overwrite 
  544.      the clock driver.  To prevent this, the ENV module should be patched 
  545.      to indicate that only the actual 16 records (10H) are available.
  546.  
  547.         For those who do not face the problem of installing ZDOS on an 
  548.      XBIOS- equipped SB180, there are other uses of this kind of trick.  
  549.      For people who do not have the necessary tools (e.g., MOVCPM) to move 
  550.      the BIOS down to make room for special drivers (such as RAM disk 
  551.      drivers and special I/O boards), this same trick can be applied to 
  552.      open up protected-memory space for them.  Other people may find it 
  553.      useful for quick experiments with special drivers before going to the 
  554.      trouble of moving the operating system around.
  555.  
  556.         There is one final refinement I would like to mention.  It is 
  557.      something I learned from Gene Pizzetta, who took my general 
  558.      recommendations above and worked out the details (see his file, ZD-
  559.      XB11.LBR, available on many Z- Nodes).  I have usually used either the 
  560.      IOP or RCP modules for this trick, but Gene recommended using the NDR 
  561.      instead.  The reason for this is that the IOP, RCP, and FCP get 
  562.      allocated in 128-byte chunks, while the NDR gets allocated in much 
  563.      smaller 18-byte chunks, the space required for one name.  If your 
  564.      clock driver takes, for example, 270 bytes (10EH), you would have to 
  565.      allocate three extra records, because the driver is a tiny bit over 
  566.      two records.  If you steal space from an NDR, you can add just two 
  567.      records, but reduce the number of names in the NDR by 1.
  568.  
  569.         Changing Command Processors
  570.  
  571.         Generating a new CCP using JetLDR is a little trickier than 
  572.      changing the DOS.  JetLDR could, as it does with a DOS or BIOS module, 
  573.      load the new CCP into its operating position in memory, but this would 
  574.      be of questionable value, since the CCP would survive only until the 
  575.      next warmboot.  So, instead, when processing a CCP ZRL module, JetLDR 
  576.      normally writes the resulting absolute-code CCP to a file ZCCP.CCP (in 
  577.      the root directory, I believe).
  578.  
  579.         This is where CFG files come into play.  They are special code 
  580.      modules that JetLDR uses to perform special processing (see the file 
  581.      JLTOOLS.LBR on Z-Nodes for more detailed information).  For example, 
  582.      CCPCFG.ZRL is one that tells JetLDR how to deposit the absolute CCP 
  583.      code that it generates directly into the XBIOS ram image of the CCP in 
  584.      banked memory (from which it is loaded on each warm boot).  A similar 
  585.      CFG file could be written to tell JetLDR how to install the new CCP 
  586.      onto the system tracks of the current drive-A disk, but so far no one 
  587.      has done this.  I would be happy to provide the CCPCFG module to XBIOS 
  588.      owners who would like it or to others who would like to use it as a 
  589.      model for writing other CFG files (send me a formatted disk with your 
  590.      copy of JetLDR, return mailer, etc.).
  591. --------------------------------------------------------------------------------
  592.  
  593. JetLDR for Z-Systems (ZCPR3), Version 1.00
  594. Copyright (c) 1988 Bridger Mitchell
  595.  
  596.  
  597. Syntax:
  598.    JetLDR  [du:][library][.lbr]  member1.typ  member2.typ  ...
  599.   or
  600.    JetLDR  [du:]file1.typ  [du:]file2.typ  [du:]file3.typ ...
  601.  
  602.   ENV - environment                FCP - flow commands
  603.   IOP - input/output               RCP - resident commands
  604.   NDR - named directories          Z3T - terminal capabilities
  605.   ZRL or REL - module in SLR or MS-relocatable (REL) format
  606.       with member name: RCP, FCP, IOP, CCP, CP3, DOS, DO3, BIO, CFG or BSX
  607.  
  608. Notes:
  609.   If first file is a library, extract remaining files from it.
  610.   An ENV file must be the first loaded.
  611.   Preceed special modules (DOS, RSX, BSX, ...) with appropriate CFG file.
  612.  
  613. Use Path: YES   Root Only: NO   Scan Current: YES   Explicit Directory: A0:
  614.  
  615.                          -------------------------
  616.  
  617. Figure 1.  This is the internal help screen displayed by the command
  618. "JETLDR //".  It shows how flexible a package loader JetLDR is.
  619. --------------------------------------------------------------------------------
  620.  
  621.                                  Editor's Note
  622.  
  623.         The Computer Journal is published six times a year.  It covers a 
  624.      broad range of computing topics, ranging from discussions of the new 
  625.      and esoteric to good old CP/M.  I highly recommend it.  For a 
  626.      subscription, send a check for $18.00 US drawn on a US bank to:
  627.  
  628.                The Computer Journal
  629.                190 Sullivan Crossroad
  630.                Columbia Falls, MT  59912
  631.