dg@pallio.UUCP (David Goodenough) (11/01/90)
The following article appeared in the PIPMAG online magazine on GEnie. I found it interesting because of the history it contains, but also because it explains why I spend my time beating my head against a 14" green phosphor tube, covered with the Z80 assembler neumonics that make up QTERM, when I could do it in C on the 386 UNIX crate at work, and get it written much quicker. It is reproduced with permission of the author. -- dg@pallio.UUCP - David Goodenough +---+ IHS | +-+-+ ..... !harvard!xait!pallio!dg +-+-+ | AKA: dg%pallio.uucp@xait.xerox.com +---+ ----------------------------------------------------------------------------- Zen and the Art of CP/M by Robert Coleman (R.COLEMAN3) It was late. Maybe midnight, and quiet in the house. Upstairs, my wife and son were probably asleep. I could hear the faint sound of the TV droning; that and the soft breeze outside my opened window. Whoosh! Drive A on my computer was busy at work. I was backing up some files and doing general housekeeping after a long session at the keyboard. Tic-tic, whoosh, tic-tic! Drive B kicked in. I watched. I had to smile. It was noisier than drive A -- always was (I could close my eyes and tell which of my drives were running, just by the sounds they made). Drive B was perhaps the better of the two. It was newer. But they were both slow; just as slow and tired as I was now. I looked up at the window and felt the cool breeze on my skin. No, they weren't the fastest drives. Not like the 1.2 Meg on my 386 at work. That was much faster; faster by a country mile. And I pushed it too -- pushed the hell out of it. But that was work. Now, just being here late at night with this old CP/M computer, it was somehow different... Zen and the Art of CP/M? (...like Motorcycle Maintenance? [1]) Crazy? Hey, I'm not the first to get this feeling of religious fervor over a computer operating system. How about 'The SOUL of CP/M' and 'The CP/M BIBLE' [2,3]. Mr. Waite and associates, they too had reverence for this IDEA. In spite of MS-DOS, countless thousands still cling to CP/M. Why? Good question. Perhaps it has more to do with the intangibles -- faith, acceptance, quiet devotion, and a brand of grass-roots, seat-of-the-pants wisdom. The CP/Mer assumes a tongue-in-cheek posture; all the while, watching the rest of the computer world spin its wheels in a deluge of glitter, gloss and Madison Avenue hype. It appears that regardless of the odds, in an era of disposable widgets and planned obsolescence, in the face of such staunch and resolute adversity, CP/M is here to stay. In the words of one PIPMAG author, Jim Taylor, CP/M is 'the peoples operating system'. It is interesting that in spite of CP/M's continued popularity, the name 'CP/M' has been interpreted to mean several things: The CP/M Bible refers to it as 'control program for microprocessor'. In one Digital Research, Inc. CP/M Users Manual dated 1979, it is referred to as 'control program for microcomputer'. Still, I have heard it referred to as 'control program monitor'. These discrepancies of course only add to the mystique. I guess any CP/Mer worth his salt has read the basics, but just where DID CP/M come from? Where does it fit into the computer world as we enter the 1990s? Perhaps the largest MAINFRAME computer, and the grand-daddy of them all, was the UNIVAC computer of 1950. Built entirely of vacuum tubes, it was so big it filled a large room. And the PDP-8 MINICOMPUTER, costing a mere $50,000, brought computing to corporate business in the mid-60s. But it was the advent of the microprocessor that made the MICROCOMPUTER a reality. In 1969, engineers at Datapoint Corporation of San Antonio, Texas, designed a simple central processing unit and contracted both Intel and Texas Instruments to implement the design on a single piece of silicon. Intel succeeded, but the product ran ten times slower than had been agreed upon, so Datapoint backed out of the deal. Intel decided to go ahead and market the device and called it the 8008 microcomputer [4]. Little did they know that this humble device signaled the beginning of the microcomputer revolution. The 8008 was truly limited, and was used as a controller such as in robot stepper motors and push button TVs. The 8080, more-or-less its direct descendent, was the first microprocessor with an instruction set powerful enough to do real data processing. But these were still humble beginnings. In 1974, a microcomputer kit was sold to hobbyists called the Altair 8800. It featured switches to enter data, and LEDs as a monitor device. There was no keyboard, no CRT, and no floppy drives, which meant no stored programs. All programs had to be tediously entered by hand, byte by byte. This was indeed the stone age of microcomputing. They say that necessity is the mother of invention -- thus the birth of an operating system. CP/M was originally developed by Gary Kildall in 1973 for testing 8" Shugart disk drives. Later, in 1976, he founded Digital Research, Inc. and released CP/M, targeted at 8080 microcomputer hobbyists [5]. But the 8080 was slow, and needed three different voltage levels and several support ICs to operate. It was soon replaced by the 8085 which required only +5 volts to run. Then, later came the Z80. It was not only 8080/8085 software compatible, but included many additional, more powerful instructions. By 1980, with the Z80, CP/M had truly become the industry standard. This is where Big Blue enters the picture. Microcomputers by this time were starting to find use in the business world. IBM realized the vast commercial potential and was gearing up for a major onslaught. They had been associated with quality mainframe computers, and most experts agreed that they would become the leader in the microcomputer field -- in essence, they would decide the future of microcomputing. IBM chose the 8088 microprocessor by Intel, and with Microsoft, they developed a new operating system called PC-DOS (essentially the same as MS-DOS -- Microsoft's stand alone version). Today, PC doesn't just mean personal computer -- it means IBM compatible. For the uninitiated, let's take a look inside these machines and see what all the fuss is about. The 8088/8086 microprocessor, which is used in the PC-XT and its clones, is vaguely similar to our 8080 (the NEC V20 version can run 8080 instructions). It has an 8-bit data bus but 16-bit internal architecture and is considered a 16-bit microprocessor. The 8086 is an upgrade with a full 16-bit data bus. The major feature of the 8088/8086 is the ability to address up to 1M of RAM using 'segment address-extension' registers. This method is similar to CP/M 3.0's method of using multiple banks, only in the 8088/8086, this technique is used to the fullest. Much like the 8080, the 8086 can only use 64K at a time, but it has 10 banks of 64K each. This makes a total of 640K of RAM. By using other tricks it can access many megabytes of additional memory. Another member of the 8086 family is the 80286. It provides 12 Mhz operation, a crude form of multi-tasking (running several SMALL programs at once) and is used in the PC-AT and its clones. The 80386 is another upgrade which provides up to 33 Mhz operation, a full 32- bit bus and addressing up to 4 Gigabytes of memory. And the 80486 is yet the latest upgrade, which provides further streamlining with a built-in cache memory controller and a coprocessor to speed up floating point calculations. These microprocessors are currently considered the 'leading edge technology' and are the darlings of the micro world [6]. But even now, there is talk of MS-DOS being replaced in the 1990s with UNIX, a true multi-user/multi-tasking operating system. There is another class of super microprocessors, such as the Motorola 88000. These new devices use RISC technology (RISC -- 'Reduced Instruction Set Computer'). They provide even faster execution by implementing a more efficient set of instructions and executing these within one machine cycle. Whew! Okay, so what does this mean for CP/M? The microcomputer, which started out as an experiment and a boon for hobbyists has now become the workhorse of the corporate business establishment. The 80286-386- 486 explosion is being fueled by big business, where money is no object and there is a constant demand for ever more speed and efficiency. Through CAD (Computer Aided Design), these powerful microcomputers are now being used by scientists and engineers. By connecting them together with LANs (Local Area Networks), some experts predict microcomputers will be direct competition for the minicomputer market which has already taken a beating in recent times. But while these advances are impressive, it leaves one piece of the puzzle missing. What about the consumer? It is true, most people can afford a simple XT. What does that mean really? Today, most GOOD software written for MS-DOS is expensive. And to enjoy the fruits of the leading edge, you have to constantly upgrade your equipment. The latest software offerings for PCs aren't designed to run on two floppies -- a hard drive is MANDATORY. A VGA monitor alone can cost more than an entire monochrome XT package. Getting caught up in this spiraling staircase of madness is frightening and can lead to gross over-spending and perhaps even what I like to call 'PC-phobia' -- the fear of owning an inferior computer. In reality, the PC revolution could be thought of as a plush banquet, where Big Business is picking up the tab, and the gamers are picking up the crumbs, hanging on to Sugar Daddy's coat tails. The dream among countless, now defunct computer manufacturers in the early 80s of fully automated lifestyles with a computer in every home was just that, a dream, and one that I fear will not soon be realized. Let's face it, using a computer requires some effort, some learning on the part of the user. You can't just turn it on like a VCR or a Nintendo. Even the 'point and click' fad is too strenuous for most of the general public. I venture to say that there is NO well defined home computer market. All the non-IBM/clone platforms are beginning to fall away; ie: Commodore C-series, Atari, even some Apple II-series. The only true home computer market is really the COMPUTER HOBBYIST, and CP/M is still the ideal operating system for such a phenomenon. It is conceivable that a CP/M supercomputer could be designed to have many of the bells and whistles of MS-DOS. The HD64180 is an integrated Z80 microcontroller with several built-in features: 10 Mhz operation, two DMA controllers, two serial ports, and a programmable timer. But the most notable feature is the ability to address up to 1 Meg of memory using a built-in MMU (Memory Management Unit -- similar to the 'segment address-extension registers' in the 8086 family, previously mentioned). A SCSI bus (Small Computer System Interface) could be used to interface up to eight devices; ie: hard drives, floppy drives, tape drives, printers, etc. This system could have high-resolution bit-mapped graphics, and perhaps even some form of multi-tasking (MP/M-II). The only problem is that CP/M as we know it has no provisions for handling graphics, let alone 1 Meg of memory! Alas, I have found myself fantasizing at times about such a machine. I have personally designed several 68000 microprocessor-driven systems, and it would not be exceptionally difficult to implement the 64180. Of course, outside of a few crazies like myself, such a machine would have no commercial value in light of the current technologies. It would merely be one CP/Mers dream of power and glory. (NOTE: anyone out there who has similar ideas of building a CP/M supercomputer or who knows of such a beast, please drop me a line via GEnie mail. [Note - I posted asking about that large multi-user CP/M system in the Netherlands a few days ago, I'd like to pass that information on to Rob Coleman -- dg] Anyway, what makes CP/M so special? Well, to begin with, it was the first successful disk operating system. Living life as a microcomputerist before CP/M was akin to living without indoor plumbing. And to think that a boni fide computer system like the UNIVAC, that once filled an entire room, could now sit on a table top, I find astonishing. And further, the BDOS/BIOS concept is ingenious. The compatablitily of CP/M operated systems allows the user to share the experience with dissimilar hardware platforms -- thus a whole computing community is enriched. And even more, anyone who lives in the MS-DOS world can feel comfortable with CP/M. After all, MS-DOS really grew out of CP/M; many of the commands and file handling schemes are similar. But more than anything else, maybe SIMPLICITY is what makes CP/M so appealing. As in Art, there is a beauty in simplicity and symmetry, combined with functionality. And CP/M is just that, a simple, straight-forward solution to operating a personal microcomputer system. I guess personal computing is different for others. There's Dan- the-man, my snippidy next door neighbor, the one with the super AT with VGA. I have been to his house to marvel over his computer before, and it IS a remarkable machine. It would be ridiculous to ignore the fact that this is no doubt a far superior machine to anything in the CP/M world. The speed is overwhelming, the graphics dazzling. It is awe inspiring, the shear, unbridled power! (Excuse me, I get excited about computers -- any flavor.) Dan-the-man is indeed one happy camper, as well he should be. But I am baffled. What I find unsettling is the way he PERCEIVES personal computing. Case in point: No sooner did he get this amazing machine, then he was planning to buy another, more powerful one. Why? I'm not sure. Is it the 'first on the block' syndrome, or is it that he really needs that kind of computing power? Dan-the-man plays many computer games and experiments with various software packages. Now six months later, he's ready for a new machine. He hasn't even learned how to use THIS one yet. Speaking of falling in love with one's computer; Dan-the-man not only has no loyalty, he is a technological flirt! In this relationship, there seems to be something missing. Hmmm... Anyone who would care to notice, would be astounded at the longevity of the Commodore 64 computer. True, this little machine is edging its way to obsolescence, but what a journey it has seen! Nearly eight years after its debut, there is still a large group of devotees. There are, as a rough guesstimate, about seven or eight million of these machines around the world. Not all gamers either I remind you; there are multitudes of application programs that have been written for it. With its handful of ROM-based kernel calls and its graphics capabilities, the C64 is a veritable programmer/hacker's delight. How many imaginations have been stirred by these 8-bit wonders? How many computer software careers do you suppose have been launched by these little 'toy' computers? I have read articles in some trade magazines by professional programmers who STILL enjoy hacking on them. These people really love the little computer. In this relationship, there seems a great deal of dedication. Obviously, personal computing means different things to different people. Meanwhile, back in my den, whoosh-tic! Both drives came to a halt. I read the directory of the backed-up floppy. Everything looked good. I wondered, should I check for bad sectors? But then again, the format command should have detected any of these. I yawned. Now I yearned for sleep. Inadvertently, I ran scan.com to look for a bad sector, only I entered the A drive by mistake. I cringed as I realized that my boot disk was now being scanned for bad sectors. This is NOT what I had intended. So much for working when I was tired. But behold! There was a bad sector detected on my boot floppy! I glared at the message on the monitor with disbelief. I thought to myself, maybe the A drive was overheating. That had to be it. I ran scan.com again with the boot disk in the B drive. Again -- a bad sector -- the same one. I decided to fix the problem NOW. No matter how tired I was, I couldn't go to sleep having my boot disk corrupted. No way. That would be sacrilege. I pulled out my back-up boot disk (yes, I had a back-up, but that is a different story!). I pip'd the contents to my RAM drive and then reformatted the corrupted boot disk. Outside my window, I heard a bird call, close in, near the house. I looked briefly to the open window, then back to the task at hand. Once again, I ran scan.com. Good! No bad sectors. Patiently, I waited as the RAM disk contents were copied back onto the boot floppy. 'Booting' -- what an odd term. In the early 1970s, practically all memories were magnetic core types. These memories had tiny toroid- shaped magnets spaced between a lattice-work of wires. The direction of the current through one wire determined the logic value, and current through the other determined whether that value was read or written into the magnet-element. These devices were non-volatile, and held their contents even when the power was removed. But when this data was corrupted, a small program had to be entered to load the system code. This was a tedious process in those days -- done either with switches or paper tape input. The solution? A small loader program was entered manually which loaded another program which actually loaded the system code. This small loader program was called a 'bootstrap' loader. The system was loaded, or pulled up by its own bootstraps. Hence the term -- 'boot' [7]. Whoosh-tic! The A drive came to a stop. I then rebooted. It was done. All was fine in the world. Again, there was the bird outside my window. I got up and walked over to have a look. Again, I heard the cooing. It came from the bushes near the tree out front. It was really too dark to see. Up in the sky, I could see the crescent moon hanging lazily in the heavens, amidst a slight veil of wispy cloud. I listened and heard silence. In the dim light, I glanced back at my computer; my reconditioned boot disk. Yes... all WAS fine in the world. I was ready for sleep. It has been said that perhaps the true delight is not in arriving at the destination, but in the journey itself; to occasionally stop and enjoy the view. If even just to simply smell the fragrance of flowers, or ponder over a private thought. I, myself, find the personal computing experience to be just that -- PERSONAL. It is a quiet time alone, away from the stress and strain of everyday life. And it is during these times that I learn about strength and weakness, success and failure; the value of work; and play for the sake of play; and ways of acceptance. Perhaps it is in this process of DOING that I find the real reward. Knowing the joy of getting a five page, hand typed program to finally run. Learning to accept that slow, noisy drive. Learning that there is always another corner to turn, another page to read. Learning that maybe there is wisdom in discovering even just one little, simple thing each day. If only for this, it has been worth the while. Oh yes, it could be model cars, or stamp collecting, or flower arranging. But it is when these things cease to be mere objects and become vehicles, taking us someplace else, to some secret, private place, they bring us closer to the inner self. By pouring over the tired guts of my old CP/M computer, cursing myself for having misplaced my screw driver AGAIN, perhaps I learn a little more about myself. References / Odds and Ends 1. Zen and the Art of Motorcycle Maintenance, Robert M. Pirsig, Bantam. This book is not about fixing motorcycles, or even CP/M, but I strongly recommend it. 2. The Soul of CP/M, The Waite group, Howard Sams. Out of print, but a real gem for programmers. I have read excerpts from some old copies of Computers and Electronics magazine, but I don't own a copy myself. I'm still looking but to no avail. (If anyone knows of an available copy please let me know.) 3. The CP/M Bible, Waite and Angermeyer, Howard Sams. Out of print. This book is useful for someone running several versions of CP/M. It includes a handy cross reference section for 1.X, 2.X, and 3.X systems. I found a NEW hard-bound copy in a used book shop for $4. Note: Many CP/M computer books are now out of print but can be found at 'fire-sale' prices in used book stores. With little money, you can build an impressive CP/M library. 4. An Introduction to Microcomputers, Vol. 1 Basic Concepts, Adam Osborne, Osborne/Mcgraw Hill. A good book for newcomers or anyone who wants to know generally how a microcomputer works. 5. TC128 Compendium #1, Issue #2, CP/M Update, by Todd Madson. Any one who uses a C128 should subscribe to Twin Cities 128 magazine. It deals ONLY with the Commodore 128. But I must say, I wish there was more CP/M coverage. 6. EDN magazine, #24, Nov. 23, 1989. The Annual uP/uC directory. This magazine is written for professional electronic design engineers and is a good source of info on new technology. 7. CP/M Assembly Language Programming, Ken Barbier, Prentice Hall. As far as I know, this book is out of print. However, it is an excellent tutorial on CP/M system programming with the 8080 instruction set. ----- About the Author ----- Robert Coleman is an electronics engineer for Data General, Telecommunication Products Division. Besides designing microprocessor-based electronic circuits, and fiddling around with CP/M in his spare time, he enjoys reading, writing and playing bass in a part-time rock 'n' roll band.