<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Mon, 15 Jun 1981100:31:00-MDT
From   : AFITGORDON@BBNB
Subject: CP/M vs **NIX in the Office Environment

In response to the message sent  10 June 1981  22:29-PDT (Wednesday) from
WANCHO@DARCOM-KA

Greetings, Gentlemen,

        I  have  recently  noted  your  conversations  regarding   the
adoption  of  an  operating  system for microcomputers in an automated
office environment.  I would like to offer my opinions and comments in
the following document for your review.

        Your work is interesting and related to what  I  have  already
been  doing  with  CP/M.   The  following  document,  for example, was
composed on  my  personal  microcomputer  using  the  Word  Star  text
editor/formatter  under CP/M and automatically transmitted to the ARPA
Net, where it was further transmitted to you via electronic mail.

        The following, then, are my opinions, for what they are worth,
and they are submitted in the interest of  information  exchange  with
your community.

       
                                       Richard Conn


                       A Comparison of CP/M and UNIX
 
 
                       A Comparison of CP/M and UNIX
                             A Matter of Choice
 
             An  interesting  discussion and controversy  concerning 
        the  selection  of  an Operating System (OS)  for  a  micro-
        computer-based  office automation system has recently  taken 
        place between and within members of DARCOM (Dept of the Army 
        Readiness Command) and others on the ARPA Network.   Central 
        to  the  controversy are two basic groups -- those  for  the 
        CP/M OS and those for UNIX/UNIX-like OS's.
 
             This is the first such controversy I have observed that
        has taken any significant proportions,  and with the  advent 
        of  the new 16-bit microprocessors such as the 8086,  Z8000, 
        and  68000  and the "UNIX-like" operating  systems  such  as 
        OMNYX and XENIX,  the question of staying with CP/M or going 
        to the UNIX environment is going to arise with more and more 
        frequency.   UNIX  (first released by Bell Labs in 1969) has 
        recently  been hailed as the "Operating System of the  80'S" 
        by several people, and I feel that now may be a good time to 
        outline  a  comparison  of  CP/M 2.2  and  UNIX  for  future 
        reference.   Note that this comparison involves  traditional 
        UNIX  (NOT  necessarily identical to the  yet-to-be-released 
        XENIX).
 
             Having  done  some research on and used both  types  of 
        operating  systems,  I  offer the following  discussion  for 
        general dissemination.   This discussion is divided into two 
        parts  -- (1) a brief comparison of Bell's UNIX and CP/M 2.2 
        and (2) a brief discussion of the criteria for selection  of 
        the OS and my recommendation.
 
 
                                   Part 1
                  -- A Comparison of UNIX and CP/M 2.2 --
 
             The  following  is  a basic comparison of  several  key 
        points of the UNIX and CP/M 2.2 Operating Systems.  Data for 
        the UNIX part of the comparison was extracted from "The Bell 
        System Technical Journal",  July-Aug 78,  Vol 57, No 6, Part 
        2, ISSN0005-8580 (Articles:  "A Retrospective" by DM Ritchie 
        and "The UNIX Shell" by SR Bourne primarily).   Data for the 
        CP/M 2.2 part of the comparison was extracted from  "Digital 
        Research  CP/M 1.4 & 2.0 Documentation" reprinted by  Morrow 
        Designs,  Inc.  (Section II:   CP/M 2.0 User's Guide).   The 
        data  presented is edited and augmented by comments from  my 
        personal experiences.
 
                  UNIX                !         CP/M 2.2
        ------------------------------!----------------------------
        o No Unique Version           ! o Unique Version
          At least 5 versions exist:  !   Version 2.2 (Precisely
             1.  "Standard" maintained!    Defined)
        by the UNIX Support Group at  !
        Bell Labs                     !
 
 
                                                           Page 1
 
 
 
 
 
                       A Comparison of CP/M and UNIX
 
 
             2.  PWB/UNIX (Programmers!
        Work Bench)                   !
             3.  Version 6 (distrib.  !
        by Western Electric)          !
             4.  Version 7            !
             5.  The version currently!
        in use by the Computing       !
        Science Research System at    !
        Bell Labs                     !
                                      !
        o Multi-user/process          ! o Single-user/process
                                      !
        o File Size Limit             ! o File Size Limit
          ==  1e9 bytes (depends on   !   == 8e6 bytes
        version); e=10 to power       !
                                      !
        o Supports Random Access Files! o Supports RA Files also
                                      !
        o Targeted to the PDP-11 Fam  ! o Targeted to 8080/Z80
                                      !
        o Tree Directory Structures   ! o Dual-Level Directory
          (Indefinite number of levels!   Structure (USER/DIR or
        and Path Names)               ! SYS) and Limited Path (A:FN)
                                      !
        o Links Allowed               ! o Links Permitted (Extension)
          (Different dir entries pt to!
        same file for disk space save)!
                                      !
        o Device Transparency and Re- ! o Device Transparency and Re-
          directability Complete      !   directability limited to
          (I/O routed to/from files   !   terminal I/O
        and terminals with equal ease)!
 
                         User Interface Comparisons
                  UNIX                !         CP/M 2.2
        ------------------------------!--------------------------
        o Command Interpreter         ! o Command Interpreter
          "Shell"                     !   "CCP"
                                      !
        o Shell Easily Replaced       ! o CCP Replaced with
                                      !   difficulty
                                      !
        o Not Part of Kernal          ! o Not Part of Kernal
                                      !
        o Full Command Language is    ! o Full Command Language is
          relatively complicated      !   simple
                                      !
        o All commands have redirect- ! o Only terminal I/O is
          able I/O (<,<<,>,>>)        !   redirectable
                                      !
        o More extensive wild cards   ! o Simple wild cards
          (?,*,[c1-c2],[c1...cn])     !   (?,*)
                                      !
        o Interprocess information    ! o No equivalent
          transfer (pipes); coroutines!
 
 
                                                           Page 2
 
 
 
 
 
                       A Comparison of CP/M and UNIX
 
 
                                      !
        o Type-Ahead                  ! o Type-Ahead possible
                                      !   via BIOS
                                      !
        o Parallel processes          ! o No equivalent
                                      !
        o Indirect command files; no  ! o Indirect cmnd files; 20
          limit to arguments          !   argument limit
          (sh file arg1 arg2 ...)     !   (submit file arg1 ...)
                                      !
        o Conditional Execution       ! o No equivalent
          (ANDF - &&, ORF - !!)       !
                                      !
        o Construct Execution         ! o No equivalent
             if ... then ... else     !
             case ... in ...          !
             while ... do ...         !
             for ... do ...           !
             until ... do ...         !
                                      !
        o Shell Variables (Param sub) ! o No equivalent
          ex:  user=myfile            !
               print $user            !
                                      !
        o Command Substitution        ! o No equivalent
          ex:  d='pwd'                !
 
 
                                Other Items
                  UNIX                !         CP/M 2.2
        ------------------------------!----------------------------
        o Reliability - Good          ! o Reliability - Good
                                      !
        o Security - Fair             ! o Security - Poor
                                      !
        o Use of HOL                  ! o Use of HOL
          90-95% in C - OS            !   Mainly Assem - OS
          95-100% in C - Utilities    !   90% in PL/M - Std Utils
                                      !
        o ARPANET Interface (NCP)     ! o No Equivalent
          currently available         !   (except for terminal pgms)
                                      !
        o Extensive document prepara- ! o Extensive document prep
          tion facilities             !   facilities
             ed - simple char-oriented!    ED - simple char-oriented
               editor                 !      editor
             Are there any screen-    !    WM, EP - screen-oriented
               oriented editors or    !      editors
               formatters?            !    WS, MW - s-o edit/format
             troff, nroff - formatters!    TFS - formatter
               with macro expansion   !      with macro expansion
             eqn - mathematical expr  !    No known equivalent
               preprocessor           !
             tbl - table preprocessor !    No known equivalent
             spell - spelling check   !    SPELLGUARD - spell chk
 
 
                                                           Page 3
 
 
 
 
 
                       A Comparison of CP/M and UNIX
 
 
             speak - voice output     !    No known equivalent
             diff - file comparator   !    FILCOM - file comparator
                                      !
        o Online instruction          ! o Online instruction
             learn -- tutor           !    PILOT - CAI language
             online help?             !    HELP - online doc
                                      !
        o Exotic applications         ! o Exotic applications
             yacc - compiler-compilers!    MUMATH - symbolic
             others?                  !      algebra
                                      !
        o Languages                   ! o Languages
             C, FORTRAN 77, BASIC,    !    C, FORTRAN IV, BASICs,
        SNOBOL, APL, ALGOL 68, PASCAL ! APL, ALGOL 60, PASCALs,
        others?                       ! LISP, MUMATH, MUSIMP,
                                      ! PILOT, PL/I, COBOL
                                      ! others?
 
 
                             Part 1 Commentary
 
             From  the point of view of a hacker (such as I consider 
        myself to be),  both CP/M and UNIX are outstanding operating 
        systems to experiment with and study.   Systems  programming 
        on  each is relatively easy to do,  and both exhibit an  ex-
        treme  level of extensibility which may be utilized by  sys-
        tems  programmers.   By  this I mean that both OS's  can  be 
        modified,  tailored to a specific application,  with a great 
        deal  of  ease at the systems programming  level.   Each  is 
        flexible  enough to be used to create a "virtual machine" of 
        the system programmer's design which can react in almost any 
        way desired (e.g.,  text processing environments and program 
        development  environments  can be easily created  which  are 
        tailored to a user's particular needs).
 
             The particularly intriguing aspects of UNIX to me are:
                  1.   the  tree directory structures;  using these, 
        each user's projects and files can be logically grouped  and 
        organized as the user and/or his manager desires and special 
        work environments,  each with their own set of commands, can 
        be easily created
                  2.   the Shell (command interpreter) can be easily 
        replaced,  so specialized shells or even menu-driven command 
        environments may be created with ease
                  3.   device transparency and redirectability is an 
        outstanding  concept!   This  allows  instances  such  as  a 
        program  which  by default sends its output to the  terminal 
        (such  as a directory program) to be forced to  channel  its 
        output  to  a  different device,  a file,  or  even  another 
        process;  the potential for applications of this facility is 
        enormous!
                  4.  parallel processing and coroutines are common-
        place;  this  provides the very nice ability of a  user  to, 
        say,  initiate  the printing of a file while he goes off and 
        does  something  else  -- better yet,  one  user  may  issue 
 
 
                                                           Page 4
 
 
 
 
 
                       A Comparison of CP/M and UNIX
 
 
        several  commands to be executed concurrently while he  does 
        something else
                  5.   conditional executions (ANDF,  ORF), language 
        constructions in the command language (IF, WHILE, FOR, CASE, 
        etc.),   and  parameter  and  command  substitutions  (Shell 
        variables) are novel and interesting concepts
 
             On the other hand, the intriguing aspects of CP/M to me 
        are:
                  1.   the  ability to divide logical  projects  and 
        work  files into user areas,  with each user area having its 
        own  set of files and commands (any number of which  may  be 
        hidden  [transparent]  to  the  user);   in  a  single  user 
        environment,  this seems to be just as reasonable and useful 
        as the tree structure of UNIX
                  2.    the   ability  to  replace  the  CCP   (with 
        difficulty);  this can be done easier in UNIX, but it is not 
        outside  the  scope of a system programmer to do  this  with 
        CP/M  (I  have done it,  making a major  modification  which 
        greatly  enhances  CP/M's power -- command execution of  COM
        files under my new CCP searches the current user area on the 
        current  disk,  falls to user 0 of the current disk  if  not 
        found, finally falls to user 0 or drive A: if not found, and 
        finally   issues   an   error  message).    This   new   CCP 
        significantly places CP/M in a competative mode with UNIX in 
        command  execution  (UNIX  traces up the  tree  for  command 
        execution).
                  3.   CP/M's terminal I/O is redirectable, and this 
        buys a lot of flexibility for the user;  UNIX,  however,  is 
        equally redirectable and even more so
                  4.   CP/M  is  very small,  leaving  much  of  the 
        microcomputer's  memory  for the transcients and  utilities; 
        size   is   sometimes   a  problem,   but   with   the   new 
        microprocessors and their megabyte addressing  capabilities, 
        it should no longer pose such a problem
                  5.   finally, and perhaps most importantly, a wide 
        variety of relatively high-quality software (screen-oriented 
        editors,  language systems,  communications systems, etc) is 
        currently  available  for  CP/M,  and I have not  seen  such 
        quality  systems yet being prepared for systems  like  XENIX 
        (whose specs are not even out yet); there will be a definite 
        lag  before (and IF) XENIX and other such systems obtain the 
        software base currently in existence for CP/M!!!!!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                                           Page 5
 
 
 
 
 
                       A Comparison of CP/M and UNIX
 
 
 
                                   Part 2
         A Commentary -- Criteria for Selection and Recommendation
 
             In making such a selection of operating systems, I feel 
        that   there  are  five  basic  questions  which  should  be 
        considered in the evaluation.  In short, these questions are 
        the following:
 
                  1.   Is  the OS adequate to meet the needs of  the 
        user?  Is there enough memory for the required utilities and 
        applications  programs  to  run in (considering  the  memory 
        management schemes employed by the OS)?   VERY IMPORTANT  -- 
        Is  the OS responsive (In the microcomputer age,  I consider 
        the  time  of the user/programmer to be much  more  valuable 
        than the time of the machine, and an OS/machine which in any 
        way  slows the user/programmer down due to its lack  of  re-
        sponsiveness should be reevaluated!!!!)
                  2.   Is  the OS extensible (user-customizable  for 
        his  particular application)?   If I don't like the form  of 
        the  command language or the commands of the editor,  can  I 
        change these to meet my tastes?  If I want a menu-based user 
        interface, can I create one?
                  3.  Is software produced under the OS on machine A 
        easily  transportable to the same OS on machine B (allowing, 
        of course,  media compatability)?   Source code generally is 
        transportable provided the language is standardized (like  C 
        on UNIX),  but is the binary (including the OS "hooks") also 
        transportable (like on CP/M)?
                  4.   Are software tools (editors,  compilers,  de-
        buggers,  etc.) available AND effective for the target class 
        of users?   For instance, I would much rather give my secre-
        tary  a screen-oriented editor which is easy to use  as  op-
        posed  to  a character-oriented editor in which she  has  to 
        worry  about the position of an imaginary cursor.   The tool 
        should be easy to use, people should be quickly and inexpen-
        sively trained to use it,  and it should be efficient (fast,  
        capable,  and  requiring  as little overhead  as  possible).
        Also,  if  I currently have an existing tool base  which  my 
        people are already trained to use,  I should think carefully 
        about  moving  to  a new OS just because it is new  or  pro-
        mising.
                  5.   Finally,  is the software easily maintainable 
        and reliable?   Tools are seldom perfect,  and  improvements 
        are constantly coming out.   I would like to see the ability 
        to modify my tools if I desire (I own them, don't I?) and be 
        supported  by the vendor as new releases  emerge.   Also,  I 
        want  to use proven,  time-tested tools which I can rely  on 
        extensively.
 
             Hence, reader, from my point of view, presented are the 
        primary attributes of UNIX and CP/M 2.2 and my basic set  of 
        criteria to judge these systems by.   Coming from a largely-
        CP/M environment (I already have CP/M as a base), UNIX would 
        win hands down (looking through the eyes of a hacker).  UNIX 
 
 
                                                           Page 6
 
 
 
 
 
                       A Comparison of CP/M and UNIX
 
 
        is a fantastic software tool which supports many interesting 
        and exciting features,  and, regardless of the use I put the 
        UNIX  system  to,  I still have my CP/M base to  support  my 
        current applications and interests (also including hacking).
             The  above statement,  however,  was from the point  of 
        view  of  a hacker with a CP/M base.   The  question  posed, 
        however, was from the point of view of the creation of a new 
        system  to support office automation.   This is a management 
        system in a manager's environment,  not a hacker system in a 
        programmer's environment.  To make a choice for the manager, 
        let's fall back to the five criteria outline above.
             In  my opinion,  both operating systems come out  about 
        even in the first three items.   Both UNIX (XENIX?) and CP/M 
        are   generally   adequate,    extensible,    and    support 
        transportable software for the automated office environment.  
        In  both cases,  tools may have to be designed for  specific 
        needs  (like  XMSG for UNIX mail and CBBS software for  CP/M 
        mail).   Software  support  from  systems  programmers  will 
        probably  be  required  to design and  integrate  the  tools 
        necessary for an automated office system.
             Item  4 is perhaps a key point in the  decision.   CP/M 
        already has a relatively-large base of quality tools for the 
        target  class  (secretarial/managerial) of  user.   From  my 
        observation of automated office environments such as my  own 
        CP/M environment,  AUGMENT of Tymshare,  and NLS under TENEX 
        and TOPS-20,  I note that the majority of the time (at least 
        in  my  case,  and  I suspect most others) is spent  in  the 
        electronic mail system and the editors.  Consequently, tools 
        for these environments must be most effective,  allowing the 
        user to get his job done in a minimum amount of time with  a 
        minimum  amount of effort.   I am currently employing  menu-
        driven  mail  systems and fast screen-oriented  editors  for 
        these  functions,  and  I feel  that  (design-dependent,  of 
        course),  these  are the most productive alternatives avail-
        able today.  Specialized terminals designed with the editors 
        in  mind  (e.g.,  DNLS Workstations) are a  good  goal,  but 
        general CP/M screen editors such as Word Master,  Word Star, 
        and Magic Wand are already available, reliable, field-proven 
        and  tested,  and reasonably effective (I spend little  time 
        waiting on them/giving commands and more time composing than 
        I  do  with  more conventional editors).   I have  not  seen 
        comparable  field-proven software for the new  UNIX  systems 
        (they are not even out yet).
             Finally,    the   fifth   item,    that   of   software 
        maintainability and support, is concentrated on support from 
        this (office automation) level.   Your environment  probably 
        will not have systems programmers readily available,  so you 
        will  probably  be  largely  dependent  on  vendor  support.  
        Again, reliable, field-proven software is a big plus.
 
             Two  additional  points should be brought out  at  this 
        time  as well:   (1) the philosophy question of the state of 
        the  art and (2) the philosophy question of the use  of  the 
        new microcomputers (microprocessors).
             Concerning  the  state  of the art,  UNIX  (XENIX?)  is 
 
 
                                                     Page 7
 
 
 
 
 
                       A Comparison of CP/M and UNIX
 
 
        definitely closer to it than CP/M,  but the operating system 
        is just the RESOURCE MANAGER of the computer system, not the 
        KEY to the computer system.   The KEY to the system lies  in 
        the  TOOLS (utilities) which run under the operating system!  
        These tools must be reliable,  easy to use, and efficient in 
        human  terms.   From my observations,  EDITORS are the  most 
        instrumental   of   tools,   and   the   Word   Master   and 
        (particularly)  Word Star are the most  powerful,  reliable, 
        and  efficient  editors  I  have  seen  (with  the  possible 
        exception  of EMACS on MIT and the DNLS editor).   Such  are 
        already  available under CP/M,  and I know of no  comparable 
        editor (Such could exist,  of course) under XENIX (will  the 
        UNIX editors work on XENIX?).
             Concerning the philosophy question,  many people  still 
        look  at computer systems and operating systems from a "con-
        ventional" point of view.   The computer is typically viewed 
        as  an expensive resource which must be used as  efficiently 
        (in terms of computer thruput) as possible,  but the  micro-
        processor  has  changed that.   Under CP/M,  I am  currently 
        running  two  microcomputers (total cost is  under  $15,000) 
        quite  effectively.   These machines and their software  are 
        designed to serve me,  and to obtain a maximum of effective-
        ness for the user (measured in terms of minimum wait on  the
        computer),  operations such as number crunching programs and
        print  spooling  are sent to the second machine.   Too  many 
        times  I have working in environments such as a dual  CYBER, 
        DEC-10,  or  VAX where the machine's thruput was  considered 
        above the individual's effectiveness, and the responsiveness 
        of  these  machines to me was far less than that of  my  own 
        microcomputer!   I hope you consider this point;  individual 
        effectiveness and usefulness should be of prime concern, and 
        consider  the idea of supplying the single  individual  with 
        more than one processor/machine.  Many of the pro-UNIX types 
        may  cling  to the old (machine-thruput) school of  thought, 
        but much is to be said for the user-effective (made possible 
        by  the  inexpensiveness  of the  microcomputer)  school  of 
        thought.   The  multiprocess capabilities of UNIX are  nice, 
        but I consider multiprocessor capability to be nicer still!
 
             In  sum,  my recommendation is to go with CP/M if  your 
        need is immediate.   If not, wait and see what the UNIX-like 
        systems  have to offer in reliability,  tools,  and competa-
        tively-marketed (competition is very important for quaility)
        software.   "Something  better" is always  coming  out,  but 
        buying  "the best" (=most recent?) software at a given  time 
        is  not necessarily the best decision in the long run.   New 
        software  is  frequently  field-debugged  (not  always,   of 
        course),  and you should be leary of opening yourself up  to 
        do the debugging when you are trying to get a job done.
 
 
 
 
 
 
 
 
                                                           Page 8
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>