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