PIPMAG COPYRIGHT NOTICE PIPMAG, the Online Magazine of The National CP/M RoundTable on GEnie is Copyrighted in its entirety by Brad Harris for the protection of the authors' articles contained within this Online Publication. This in no way supersedes the Copyright by the original authors. Distribution and electronic transmittal is encouraged for individual, private use and for Non-Profit BBSs'. Use by, or transmittal to Commercial or charge services is prohibited. When distributed, the entire issue (complete) con tained within must be intact. Written permission to copy or otherwise distribute portions of PIPMAG may be obtained through the individual authors or through Brad Harris (GEnie mail address BRAD-HARRIS) Copyright (C) 1990 by Brad Harris VIEWING PIPMAG PIPMAG may be read, buffered or scanned in menu form, as you are doing now. PIPMAG will also be available as an .ARK file in the CP/M Library. Please use Control S to pause, and Control Q to resume viewing. The CP/M PIPMAG dBASE Importing and Exporting by RICHY One of the things I like most about dBase is the ease of importing data, which is a big work saver when I get to save all the time needed to enter the data manually. Special options of the APPEND FROM and COPY TO commands make it easy to import and export data with dBase. The easiest way to import data is to use a word processer and format the data as regular text into rows and columns. Here is an example, (I have put the "to be" field names above the columns): Area State City code Missouri Cape Girardeau 314 Pennsylvania Norristown 215 California El Monte 818 Hawaii Honolulu 808 Each row or line equals one record, each column equals one field. Simply line up the fields and end each line with a carriage return. Then count the digits of each column and note them down for when you go to CREATE your data base. For the above example count the digits for each column. The correct counts are State = 15, City = 15, and Areacode = 3. Below is a look at the data base structure for this data base: Structure for file: M:AREACODE.DBF Number of records: 00000 Date of last update: 00/00/00 Primary use database Fld Name Type Width Dec 001 STATE C 015 002 CITY C 015 003 AREACODE C 003 ** Total ** 00034 Below shows how to import data from a text file. The "sdf" at the end of the command line tells dBase that the file which is being appended from is in the System Data Format: . use areacode . append from areacode.txt sdf 00004 records added . list 00001 Missouri Cape Girardeau 314 00002 Pennsylvania Norristown 215 00003 California El Monte 818 00004 Hawaii Honolulu 808 NOTE: This process is not sensitive to file tail. The .sdf tail is an option to help you keep track of what type of file it is. No tail is necessary for the process. Now here is a look at the records using the edit option of dBase. This shows that the importing was perfect, with the first character of the fields falling right after the colon. If you find this not to be the case when you use the System Data Format, (.sdf), then check the uniformity of your columns, recount the digits of your columns, and check this against the data base structure. RECORD # 00001 STATE :Missouri : CITY :Cape Girardeau : AREACODE :314: RECORD # 00002 STATE :Pennsylvania : CITY :Norristown : AREACODE :215: RECORD # 00003 STATE :California : CITY :El Monte : AREACODE :818: RECORD # 00004 STATE :Hawaii : CITY :Honolulu : AREACODE :808: Text is just as easy to extract with dBase with the COPY TO command: . use areacode . copy to areacode sdf 00004 records copied \ . This extracts the data and copies it into a text file named areacode.txt. Any tail may be supplied if desired. If no tail is provided dBase will use the .txt tail. . copy to areacode.doc sdf The above command line will give a text file called areacode.doc. The other file type used for dBase importing and exporting is the delimited type. Instead of outputting a file in perfect rows and columns, this method outputs a file which is delimited with commas, apostrophes, quotation marks, and others as you can specify. I won't get into a lot of detail here, but simply say this is an excellent way to backup a .dbf file. Here is how you would use the delimited option: . use areacode . copy to areacode.cdf delimited 00004 records copied \. Here is what the output would look like: 'Missouri','Cape Girardeau','314' 'Pennsylvania','Norristown','215' 'California','El Monte','818' 'Hawaii','Honolulu','808' Notice the byte count would be less, since the trailing spaces have been trimmed. This can save up to 50% in disk space for keeping a backup data file. Here is how you would import the data back into a .dbf file. . append from areacode.cdf delimited NOTE: It would be a good idea at the time of backup to keep a copy of the .dbf structure along with the delimited backup data file. Here is how to make an easy copy of the structure: . copy structure to backup This will give you a .dbf file named backup.dbf which will be empty and ready to use in case of a loss of the original. When using the delimited option for output, you have a choice of how the file is delimited. Fields will be separated by commas, but you can select the character you wish the fields to be bracketed with. There is a WITH option you can use at this point. Say you have apostrophes in a field, and you want to avoid confusing the process, since the apostrophe ' is the default character dBase uses to bracket each field. Here are 4 examples, and their output. Notice the last one I inserted a comma in Cape,Girardeau. (The bracketing of each field allows for commas to be a natural part of a character field with out messing up the process of delimited file types. Copy to filename.cdf delimited with * would yield *Missouri*,*Cape Girardeau*,*314* *Pennsylvania*,*Norristown*,*215* *California*,*El Monte*,*818* *Hawaii*,*Honolulu*,*808* Copy to filename.cdf delimited with " would yield "Missouri","Cape Girardeau","314" "Pennsylvania","Norristown","215" "California","El Monte","818" "Hawaii","Honolulu","808" Copy to filename.cdf delimited with + would yield +Missouri+,+Cape Girardeau+,+314+ +Pennsylvania+,+Norristown+,+215+ +California+,+El Monte+,+818+ +Hawaii+,+Honolulu+,+808+ Copy to filename.cdf delimited would yield 'Missouri','Cape,Girardeau','314' 'Pennsylvania','Norristown','215' 'California','El Monte','818' 'Hawaii','Honolulu','808' If the WITH option was used, then you would need to include it to import the data back into dBase, using the same delimiter you had use when exporting the file. Well that wraps up this little article. Hope it helps you out as you explore the power of dBase. The CP/M PIPMAG Write it Right By Robert Coleman (R.COLEMAN3) CP/M abounds with writing tools. This is one application where even staunch critics of CP/M agree. And it's true. Wordprocessing is perhaps how most CP/Mers (and home computerists in general) spend their time, happily typing away. It would not be surprising then, that any article extolling the virtues of one wordprocessing tool versus another would draw heated debate. So, with that in mind, I would like to share some of the programs which I find useful, knowing that they represent only a few of many, currently available both commercially or in the public domain. One overlooked tool available to a writer is a good outliner or what is sometimes known as a 'thought processor'. When starting out on a project, nothing can be as intimidating as an blank monitor screen. With the outliner you can casually sit back and just think, jot down some ideas, and before you know it, you are getting ORGANIZED. The best PD program I have found in the GEnie CP/M RoundTable libraries is Outliner by David A. Usher [1]. It is easy to learn -- many of the editing commands are similar to WordStar. As an example, I have included a simple outline of this article. Effortlessly, sitting there practically drooling in my shoes, I was able to create this simple beginning: introduction outliners wordprocessors spellcheckers Grammatik closing Impressive? No. Okay, but at least it's a start. Next, my mind will start wandering while my fingers hunt and peck. Soon I arrive at the next level of complexity: introduction CP/M abounds with good writing tools outliners Outliner wordprocessors WS 4.0 VDE 2.66 spellcheckers Spellguard The Word Plus Grammatik a friend -- a proofreader closing include odds/ends section Quickly, this handful of words start to come together and form more ideas. I find myself moving from line to line, inserting, deleting, thinking --creating the shell of a piece of writing. I find that it really gets the juices flowing. This procedure continues: introduction CP/M abounds with good writing tools outliner Outliner this one is nice with adequate editing ability wordprocessors WS 4.0 I am a big ws fan VDE 2.66 I was impressed with D.FOWLER's review spellcheckers Spellguard a solid product The Word Plus many advanced features Grammatik a friend -- a proofreader closing include odds/ends section One remarkable feature of Outliner is that you can observe varying levels of complexity during this brainstorming process. With a simple keystroke you can view only the main topics and then expand back to the sub-levels at will. Another nice feature is the ability to create .TXT files of any displayed level. The examples above are the ACTUAL Outliner screens, saved as text files, one at a time. Then while writing this article, I simply inserted (^KR) them in. (Talk about integrated software!) In short, this is a handy tool. The above examples are only a preview of its true potential. It can be used to write speeches, presentations, itineraries, even the outline of an entire novel. Needless to say, the more organized you are in the beginning, the easier it is later. With a good outline, the actual work of writing can be easier and even fun. Even with a simple outline, it is just a matter of expanding on the topics and filling in the details with your favorite wordprocessor. I won't go on about 'WordStar 4.0' [2]. It's been reviewed to death. I will say that for $90, which is what I paid to be a registered owner, it is worth every penny. Sure, it's big and slow, but it's also tried and true, and it is the standard by which other such programs are measured. Running on a 1750 REU and my C128, it is WONDERFUL. But I must admit, you need a RAM drive or a fast hard drive to avoid the long pauses for disk accesses. After reading Dennis Fowler's review of VDE in PIPMAG5 and Tom Mcenroe's article on ZDE in the same issue, I think I might give one of these a try on my Osborne 1. WordStar 4.0 does run like a dog off a floppy drive. For the most part though, WordStar and its clones are the mainstay programs of CP/M, and there's not much to be added here. After a writing session, I like to 'sleep on it'. The next day, I always find a better way to say something (in fact, I could keep twiddling with ideas forever if I didn't force myself to eventually give them up and move on). Anyway, after your masterpiece is 'finished', a spellchecker is the next order of business. Again, there are many PD as well as commercial programs available. There are two with which I have some experience. One is 'Spellguard' [3]. It is menu driven with the regular Add/Mark/Ignore features found in most spellchecker programs, where 'Add' -- adds words that are in fact spelled correctly, but are not currently in the dictionary; 'Mark' -- you can flag a misspelled word with a character of your choice, go back with your wordprocessor, search for the character and then correct the misspelled word; and 'Ignore' -- you can skip certain words that are okay, ie: names, abreviations, etc. Perhaps the only problem with Spellguard is the wimpy 20K word dictionary. Of course you can add your own word lists later, as it includes some nifty maintenance utilities. To sum it up, Spellguard is not a killer but a respectable and well documented commercial program. Again, I promised not to go on about WordStar 4.0, but 'The Word Plus' which is the spellchecker program provided with WS 4.0 is really something. Not only does it have the Add/Mark/Ignore features, it also has 'Lookup' -- which looks throughout the dictionaries (both main and user) for words that are similar to the misspelled word. There is 'Correct' -- which allows you to use a word found with Lookup, or simply type a correction at the prompt. You can 'Add' a word to a user dictionary. You can also move to a 'Previous' word or the 'Next' word in the misspelled word list during the same session! This is great for those times when you get an afterthought, or you inadvertently made some regrettable addition to your dictionary. But the feature that I find the most powerful is 'View' -- you can view the misspelled word within the actual text. I have found myself at times picking up a thesaurus (unfortunately, The Word Plus does not include one) and even changing the misspelled word to an entirely different word. The Word Plus also includes some utilities; some unusual. There is 'Find' -- which can be used with wildcards ('?') to solve crossword puzzles! There is also 'Anagram' -- finding words within scrambled groups of letters. There is 'Homonym' -- to help find similar sounding words with different meanings such as: Bazaar vs. Bizarre, etc. And of course, there is 'WordCount' -- to count the number of words in your document, and also 'WordFreq' -- to help you analyze your choice of words. Indeed, these are helpful utilities. The Word Plus has got to be among the top spellcheckers available for CP/M. Now, you started with an outline, wrote your document, and checked the spelling so that even my old sixth grade teacher Mrs. PruneJuice would find it halfway acceptable. Most people would wrap it up and throw in the towel at this point. But there is still another step to achieving good writing: having a proofreader is a valuable asset. Afterall, the writer gets so close to his work that perhaps he can't be objective; that and is going blind reading and re-reading the darn thing. I have found 'Grammatik' [4] to be an indispensable tool. What is Grammatik? It is a program designed to proofread your document and help find the flaws in your grammar. This program is menu driven, much like a spellchecker, but uses a dictionary of phrases as well as words. After making some of the menu choices for ignoring certain WordStar format characters, and setting up destination files and printer/display options, I send the program off to proofread my document. The program flags errors for such things as: vague adverb usage, wordy phrases, archaic or awkward usage, redundant phrases, etc. The list goes on, and when the proofreading is completed, I have a file with the errors flagged and ready for yet another edit. Some of the suggestions offered are not always accurate, but I am always amazed at just how much better my writing can be when I take another look. Grammatik is a valuable utility for anyone who strives to write effectively. Odds and Ends [1] Outliner, release 1.0. Copyright 1987, David A. Usher, GEnie CP/M RoundTable library #12, file #4846. [2] WordStar 4.0, Copyright 1979,1987, Micro Pro. $89.95. phone 1-800-227- 5609. [3] Spellguard, version 2.0, Copyright 1980, Sorcim. * [4] Grammatik, version 1.82, Copyright 1981, Aspen Software Co. * * Note: Both of these programs can be purchased from Public Domain Software Copying Company (PDSCC), 33 Gold St. 13, NYC, NY 10038. Phone: 1-800-221-7372. Both cost $28 each, or $10 each with the purchase of WordStar 2.26 ($39). This company sells many CP/M titles, some still in the shrink-wrap. If anything, call and have them send you a free brochure. Creative Micro Designs HD-20 A Hard Disk for Commodore Computers Review by Brad Harris (BRAD-HARRIS) As 8-bit computers from Commodore slowly fade into the sunset, so goes third- party support. One of the remaining few companies that still supports Commodore computers, and without question one of the hottest, is Creative Micro Designs. Their initial offering, JiffyDos, brought disk access speed up to par with the rest of the computing world. The only thing still lacking was a truly compatible hard disk drive that was both affordable and simple to install and use. With the introduction this past spring of the HD series, that void has been filled. The drives come in three storage capacities. The basic model is the HD-20, reviewed here, which is (logically enough) a 20 Megabyte unit. Also available are the HD-40 and the HD-100, differing only in the amount of disk space they offer. Physically, the drives are slightly larger that a 1581 and use an external power supply. They contain an SCSI controller and either a Seagate or Connor SCSI drive. They also feature a battery-backed real-time clock-calender. On the rear panel are the usual two serial ports, power connection and an on-off switch. There is also an SCSI port for connecting other SCSI devices, and auxiliary and parallel ports, neither of which are implemented at present. The SCSI port can be used to expand the capacity of the unit by connecting additional drives. There are no device number switches. Selection of the unit's device number is done through software. Internally, there is no traditional DOS ROM. Rather than burn the DOS onto a chip, CMD (Creative Micro Designs) elected to put it in software and read it into the drive RAM at power- up. This allows for easy upgrades. On the front panel are a set of status lights and four buttons. The buttons allow you to swap the HD-20 with whichever drive is currently device 8 or 9, write protect the whole drive, and reset the unit. These buttons also allow you to change partitions, which can be very helpful when in a program that doesn't allow you to send commands to the drive. The manual is contained in a loose-leaf binder. It is for the most part extremely comprehensive although in a couple of areas it is painfully brief. The table of contents is good, and the organization of the manual is fairly logical (although in this writer's opinion, CP/M should come first). There is no index. Support is an area where CMD stands out. They offer help here on GEnie in the Flagship RoundTable (Page 625) Bulletin Board, Category 21. They also have a support area on another commercial system which for obvious reasons will remain nameless. And they operate their own BBS system, using the only HD-200 in existence for storage. The drive can be divided into a maximum of 254 separate partitions. Several different partition type are supported, four of which emulate standard Commodore drives to ensure maximum compatibility. These are the 1541, 1571, 1581, and 1581 CP/M modes, and to the computer and most software, these ARE the drives they emulate right down to the BAM, track and sector level. Copy- protected programs (or copy programs, for that matter) that look for specific data in the drive's ROM will not be fooled, however. To load copy-protected programs onto the hard disk, a utility that removes the protection must be used to create an unprotected version on another floppy disk. This can then be copied to the HD-20. Native mode partitions are variable in size. A partition may be as large as 16 Megabytes, or as small as 256 blocks. These can be further broken down into MS- DOS style directories and sub-directories. In addition, two utilities, 1541SUB and 1581SUB, are provided which will create 1541 or 1581 type subdirectories for use with programs which expect to find the directory track in a specific location on a disk. Foreign mode partitions potentially allow the HD-20 to be shared with another computer that uses an SCSI interface. This is done through the port on the back of the drive, which is pin-compatible with the Apple Macintosh. However, the manual only contains one paragraph on this. Installing the drive is as simple as it can possibly be. One end of the serial cable is plugged into the computer, or into another drive as part of a daisy chain; the other end is plugged into the hard drive. Then, after making sure that the switches on both the power supply and the drive are turned off, the appropriate cords from the power supply are plugged into the wall socket and the drive. Once all connections have been completed, turn everything on in your usual order, and you're ready to go. My C128 won't recognize any drives which are off when the computer is first powered up, so the HD-20 gets turned on first. CMD recommends leaving the power supply plugged in and turned on at all times and using the switch on the drive to turn it on and off, stating that this will extend the life of the clock battery. Those of us who live in lightning-prone areas will want to follow our usual procedure of unplugging everything when not in use. As shipped, the HD-20 is configured as device 12. It is already formatted and is set up with at least one of each type of partition, with the contents of the supplied utility disks already loaded into one of them. The device number is changed from within the HD-TOOLS program, which is one of those utilities. This program is also used to select the partition which the HD-20 is in at power-up (default partition), view the partition table, and add or delete partitions. Deleting a partition other than the last one automatically moves up everything which follows it, to fill the void. This means that nothing in a deleted partition can be recovered, as it has already been overwritten, and the process can take a considerable amount of time. Take care when using this command. A much safer way to go is to use the DOS NEW command instead. The programs which come with the HD-20 include the aforementioned HD-TOOLS and 1541SUB and 1581SUB. There is also a file copier, and a whole-disk copier which doubles as a backup program; head parkers, a clock utility, an autoboot maker, a track and sector editor, and a program to scan for and lock out bad blocks. In addition, there are programs to upgrade the DOS, perform a low- level format of the disk, configure the SCSI controller for additional drives, and read the data from the manufacturer's information area of the hard disk. There are a number of GEOS utilities. GEOS can be made to boot from the hard disk, but you have to supply your own copy. Also included is software for the above mentioned but still nameless commercial information system. Last, but most important (at least to me), is SPORT.COM, a CP/M program that sends commands to any device on the serial bus. This allows switching between CP/M partitions without having to leave CP/M, make the switch, then reboot. More on this in a bit. The HD-20 is fairly fast. In conjunction with JiffyDos on a C64 or a C128 in C64 mode it's nothing short of greased lightning, offering about an 88% reduction in load times. On a C128 in native or CP/M mode, however, it is only marginally faster than a 1581. I've been told that the limiting factor here is the speed of the Commodore's serial bus. RAMLINK, a parallel adapter that is in the works at CMD, and will offer RAM expansion capability as well, will overcome this limitation and provide true hard disk speed. This will plug into the cartridge port on a C64 or C128, and connect to the parallel port on the HD-20. It's scheduled for release around the end of the summer (in other words "Real Soon Now"). Speed aside, the main attraction of a hard disk is it's storage capacity. At the beginning of this review I mentioned partitions of up to 16 Megabytes. While this is true in Native mode partitions, these are only accessible in the C64 and C128 modes of the computer. In CP/M mode only 1581 CP/M partitions can be used. While you can create as many of these as you wish, and can switch between them using either SPORT.COM or the front panel buttons, this is a serious deficiency in the operating system. SPORT.COM itself deserves a few words. This little utility (it's less than 900 bytes long, although it takes 2K of disk space) is one of the handiest thins to hit the pike since perforated toilet paper. It allows you to send commands to any device on the serial bus. In the case of the HD-20, this includes things like switching partitions. But it's use isn't limited to the hard drive. You can also use it to do things like send commands to the printer or printer interface, or to any of your other drives. If you ever wanted to know what Error: BDOS function 17 Filename ????????.??? means in plain Commodore- speak, this is what you need to use to find out. Since it's a copyrighted program, you have to buy an HD-20 to get it. Using the HD-20 in its most basic functions is no harder than using any other Commodore disk drive. All of the Commodore DOS commands are supported, including direct block access; memory reads, writes, and executes; burst commands; and utility (U) commands. Some of them don't really do anything, but are just there for compatibility's sake, and a number of them are enhanced to take advantage of the HD-20's features. Many of these enhanced features can used in BASIC or machine language programs, and with JiffyDos can use a much shorter syntax than is used normally. In most of the Commodore world, CP/M is viewed as a poor stepchild. Unfortunately it seems that this is Creative Micro Designs' opinion too. The ability to change partitions from the front panel helps increase the utility of the drive, as does the SPORT.COM program. The Swap 8 button allows CP/M (or anything else that must be run from the first floppy) to be booted from the HD- 20, and this is also helpful. Still and all, what the HD-20 boils down to for CP/M use is just a very expensive box of 3.5" disks, and if your primary use of the C128 is for CP/M that's exactly what I recommend you buy. A 1581 drive and 30 disks will cost you a lot less and give you more storage capacity, and if you put the box of disks on top of the drive, won't take up any more desk space. An upgrade to the operating system which allowed the HD-20 to be used as a real hard disk in CP/M mode would be reason for me to completely reverse the above recommendation. Are you listening, CMD? For the C64 user, or C128 user who doesn't do much with CP/M, the HD-20 is the be-all and end-all of disk drives. In this case it offers massive storage capacity and instant access. What more can you ask for? The HD series of Commodore-compatible hard disk drives is available from: Creative Micro Designs, Inc. 50 Industrial Drive P.O. Box 646 East Longmeadow MA 01028 Phone - (413) 525-0023 FAX - (413) 525-0147 BBS - (413) 525-0148 HD-20 - $599.95 HD-40 - $799.95 HD-100 - $1299.95 Shipping and handling - $25.00 Prices and shipping higher for foreign orders The CP/M PIPMAG The Art Of Conferencing or How to get more out of a Conference by Peter Jacobson (PETER-CPM) If you haven't attended a formal or informal Real Time Conference on GEnie, here are some tips to get you started with a minimum of fuss. First off, you should choose a terminal program which has either a "split- screen" or a "chat line" option. The reason for a "chat line" is that it will allow you to "type ahead" your message without interference from others who may be messaging at the same time. It also makes the screen easier to read without "doubling" what you type in. [Editor's note: The only CP/M terminal that I am aware of which offers a split- screen "Chat" mode is David Goodenough's QTERM, file 7239. There are versions or overlays available for a number of different computers.] When you first enter the Conference Room, you should already have your "chat line" enabled. After you enter, to promote a more friendly atmosphere, you should add your first name to your GEMAIL "name" with the "/nam" command in the RTC. The syntax is: /nam firstname . While you're at it, say "hello" and introduce yourself if you care to. For online HELP, type a "?" (without the quotes) as the first character on a line and a RETURN. At times when there is a "formal" Conference, you will usually be so informed before you enter the Room or shortly thereafter. One way to determine this if you're not sure is if after you do a "/nam" it does not appear onscreen. This means that the Meeting Leader had put the Room in what is called "Listen Only" mode. This is usually the case when there is a guest speaker. Listen Only keeps others from "chatting" when the guest speaker has the "floor". If you decide you would like to ask a question of the guest speaker, simply type in: /RAI and you will be put into a queue with others who have questions. When it comes to your turn to ask your question you will be notified onscreen by the meeting leader. Be sure to type in your question into your buffer and be ready to hit when your turn comes up. This tends to speed up the Conference and keeps the Conference flowing. Here is a rundown on the most commonly used commands in the RTC: /HELp - Gives a list of all the commands /BYE - Leave the RTC /EXIt - Return to the last menu /KNOck rr - Knock on door of room 'rr' (used when room is 'locked') /MONitor rr - Monitor room 'rr' /NAMe nn - Add first name 'nn' to GEMAIL address /QUIt - Return to menu /RAIse-hand - Get the attention of the Meeting Leader /ROOm rr - Move to room 'rr' /SENd jj m - Sends to job 'jj', message 'm' /SHOw hh - Show job of address 'hh' /STAtus rr - See users in room 'rr' /TIMe - Display time and day /USErs - See number of users /WHO jj - See address of JOB 'jj' /XMOnitor - Exit monitor mode Using /STA will give you the GEMAIL names of everyone who is in the Conference Room. In the listing you will see a number in front of the name and either "L" or "N". The number you see is the number you use when you want to send a private message to someone in the Conference Room. The command you use is /SEN. The syntax is: /SEN contents of your message . It should be used when you don't wish the message to be seen by others. If you wish to know who the MEETING LEADER is, that is signified by the "L" near their name in the /STA command. For the most part, our Conferences in the CPM RT are informal. We tend to keep them that way so that more can participate in discussions. It is the attendees that make a conference what it is. Everyone is welcome to attend. Don't be shy about asking questions or offering comments ... Some people tend to think they shouldn't ask a question because they think it's "stupid". Well, there is no such thing as a "stupid" question if you don't know the answer. We are here to help you to make your adventure into CP/M a pleasant one. Come join us every Wednesday night 10:00 PM ET for our regular Conferences and every Saturday night at 10:00 PM ET for our CP/M Help Desk. The CP/M PIPMAG The Z-System Corner Jay Sage This article originally appeared in The Computer Journal, Issue Number 42 (Copyright (C) 1990 by Technology Resources), and is presented here with the permission of the author. A number of newer TCJ readers have commented that with this column they feel that they are coming into the middle of a very involved discussion that is hard to catch on to. Of course, one answer to that problem is for new TCJ readers to purchase back issues. I have been writing this column regularly since issue #25, and I am quite sure that all those back issues are still available. That solution notwithstanding, it is probably not a bad idea to stand back every so often and try to comprehend a larger picture. That is one of the tasks I will undertake this time. Detailed technical content will not be forsaken entirely, however, since I regard that as the primary purpose of my column. At this point, I suspect that I am too much of a Z-System expert to talk about very many topics at a level that is appropriate for beginners. To serve their needs, I have been very actively soliciting articles from other authors. In this issue, for example, we have the first of the columns I promised a couple of issues back on how to set up a remote access system (aka bulletin board system) under the NZCOM auto- install version of Z-System. Lee McEwen (aka Chris McEwen) has done a lovely job with that assignment. The technical discussion this time will focus on some issues that arose in trying to install ZSDOS or ZDDOS on an SB180 computer with the XBIOS enhanced operating system. Before you say "But I don't have an SB180," let me assure you that the techniques have more general applicability. The specific XBIOS problem is one that has come up often and has been the source of considerable frustration to XBIOS users. [They are in good company, by the way. Just as I was finishing this article, I got a call from Bridger Mitchell about this very subject!] I am only sorry that it took me so long to get around to working on it. Gene Pizzetta, a fellow Bostonian, was the squeaky wheel that finally got my attention, and he has contributed a number of his own ideas to the solution. Announcements Before we get down to business, I have, as usual, a few announcements to make. First I would like to remind readers once again about Bill Tishey's superb collection of help files for the hundreds of Z-System programs now available. Bill can now generate diskettes in many formats besides Apple (using his son's Commodore 128), and he is willing to fill your diskettes with the files for only $10. My column in issue #36 gave the following procedure to follow: (1) send enough formatted diskettes (plainly labeled with the format) to hold at least 1000K bytes (up from 800K back then); (2) use a reusable disk mailer or enclose a mailer suitable for returning the diskettes to you; and (3) enclose a return address label, return postage, and the $10 copying fee. Bill's address is 8335 Dubbs Drive, Severn, MD 21144. If you prefer (or if you need 96-tpi, 8" SSSD, or NorthStar hard-sector formats), you can send the diskettes to me as well. Second, I would like to make a special point of calling your attention to the GEnie RoundTable discussions that take place every Wednesday at 10pm Eastern time. The first such session of each month is devoted to Z-System, and I am the moderator, so this is your chance for a real-time dialogue with me. Go to page "685;2" on GEnie and enter "Room 2". There are several changes to report in the roster of Z-Nodes. Regrettably, Bob Paddock's node #38 in Franklin, PA, has gone off the air. To offset that loss, however, node #73 in the St. Louis, MO, area has come back to life after being down for several years. Sysop George Allen and co-sy sop Walt Stumper would be happy to hear from you at 314-821-1078 (PC-Pursuit MO SLO/24). The equipment is currently a Xerox 820-II with a 10 Meg drive, but the sysops hope to expand soon to a 30+ Meg Ampro. On the Z-Node front, I am also sorry to report that Z-Node Central (Lillipute) was downed by hardware failures on both computers! They have been off the air for a couple of months already as I write this, and sysop Richard Jacobson has just faced the truth: that it will not be coming back. Ladera Z-Node (#2) in Los Angeles will take over as Z-Node Central. Chicago area callers looking for Z support should check out the Antelope Freeway system run by ZDOS-coauthor Carson Wilson for CFOG (Chicago area FOG). This is one of a small number of remote access systems running under the Z3PLUS flavor of Z-System. The phone number is 312-764-5152 (PC-Pursuit ILCHI/24). We expect that its 'System One' will soon be a Z-Node ('System Two' supports MS-DOS). Finally, there have been some very significant developments with BDS C. Leor Zolman completed some major additions to the Z version (BDS Z), and the final release has just gone out as I write this column in mid October. Programs generated by BDS Z now have a full Z-System header and can be linked as type-3 programs to load and run at an arbitrary address. ZDOS coauthor Cam Cotrill has already released a substantial amount of BDS Z code for performing the functions in the SYSLIB, VLIB, and Z3LIB assembly-language libraries that are not already built into BDS Z. Leor has now turned over all of the marketing and some of the development responsibility for BDS C to me. Recognizing that the $90 price tag of the full package, however reasonable for what one gets, is an impediment to new users who want to experiment with C, we have prepared a low cost introductory package that (1) includes only one version of the code (either standard CP/M or Z-System), (2) contains only the essential files, and (3) comes with an abridged version of the manual (and without the fancy BD Software binder). This package will be offered for only $60. Other parts of the full package can be added later: $25 for the second version of the compiler, $25 for the support materials (RED editor, CDB debugger, and the parts of the manual covering them), or $40 for both at once. If the whole package is ordered at once, it comes complete with an attractive binder (also available with the introductory package for $5 extra). It should be noted that BDS Z generates programs that run perfectly well under standard CP/M. Naturally, they will not recognize Z-System features like named directories, but they will accept the now standard DU: extended drive/user syntax instead of the older U/D: format of standard BDS C. The only disadvantage of using BDS Z rather than BDS C on a standard CP/M system is that the programs carry Z-System overhead (about 800 bytes) that don't provide them with any functionality. What is a Microcomputer Operating System For? The basic function of an operating system is to make one's life -- one's computing life, that is -- simpler. When microcomputers first came out, the biggest burden was dealing with the hardware. It was no fun for the computer user and programmer (largely synonymous in those days) to have to deal over and over with the intricacies of the physical operation of the hardware, such as getting characters to and from the terminal or paper tape reader/punch, not to mention the dauntingly more complex task of managing data on a magnetic tape or floppy diskette drive. Gary Kildall's CP/M operating system provided a solution -- and a very good one (by and large) in my opinion -- to those problems. It did so by implementing a standardized and modular interface that handled the basic device communication tasks. CP/M, which stood (I believe) for "Control Program for Microcomputers," was the master program that one got running on the computer right after power up. It would then allow one to load and run other programs, with control always returning to the CP/M master program after each user program finished. Besides accepting and interpreting commands issued by the computer operator, an operating system like CP/M also provides resident code (always ready in memory) for performing certain functions that application programs will often want to use. The simpler functions are things like sending a character to the terminal screen; the more complex ones include fetching from or writing to a floppy diskette the information associated with a logical entity known as a file. With these functions implemented in the operating system code, application programs are easier to write and do not have to include the same code over and over. More importantly, they can run on a variety of hardware platforms, since the details of the physical hardware are handled by the operating system code, and the program can deal with things at a logical level. Logical vs. Physical Perhaps this is a good time for a brief aside on this matter of logical versus physical. We use the adjective "physical" when we are talking about things that are actually in the hardware. In the case of a floppy disk, for example, the physical items are the bits of data stored as magnetization patterns. These bits are grouped into sectors, and the sectors into tracks. In the case of a terminal screen, the physical items are the patterns of illuminated dots that we recognize as letters, numbers, and other symbols. On the other hand, we use the adjective "logical" to describe those things which are essentially the creation of our minds (and programs). For example, there is no such physical thing as a "file." No matter how you examine a diskette, you will never find a file on it (as such); you will find only sectors and tracks. It is our choice to organize the data on the disk in a way that associates groups of such sectors with a file names and to store the file names in a particular group of sectors on the disk. Modularity CP/M is modular in the sense that it divides up the functions of the operating system into separate packages. One part is called the BIOS (basic input/output system). This part, which lives at the very top of the memory address space, deals directly with the hardware. It reads and writes physical sectors from and to a diskette; it determines whether or not a key has been pressed on the keyboard and, if so, which key; and it sends characters to the screen. The BIOS is the only part of CP/M that is different for each hardware implementation of a CP/M computer. The second CP/M module is called the BDOS (basic disk operating system). It deals with logical constructs. We have already spoken of files. When a file is referred to, the BDOS figures out which physical tracks and sectors contain the data for that file. Another logical construct is lines of text. The BDOS has a function to send a complete line of text to the screen (as opposed to the BIOS, which can send only a single character), and it has another function to get a complete line of text from the user, allowing a limited amount of editing. These functions make it much easier for the application programmer to write his or her program. The last CP/M module is called the CCP (console command processor). It gets a command typed by the user at the console and takes the appropriate action to carry out that command. Some commands, such as DIR or ERA, are implemented directly in the CCP code. Others require that a COM file be loaded from diskette and executed. Command Processing Under CP/M For the most part, CP/M accomplishes the functions it was designed to perform in admirable fashion. However, it was so concerned with solving the hardware interface problem (the programmer interface) that it devoted relatively little attention to the user interface. To be fair, it was born in the days when 16K of memory cost about $500 (in 1970s dollars, no less) and occupied an entire S- 100 card (bigger by far than a whole SB180FX computer with 512K). Today we might not think that 64K is very much (some say that OS/2 feels dreadfully cramped in less than 3 Megs!), but it makes a lot of things possible that 48K (or even less) would not allow. CP/M's command processor did little more than the minimum it was required to do, namely to run a few resident commands and to load external commands from disk. It did not provide many services to make the operator's life easier. You had to specify rather exactly the command you wanted performed; no leeway was allowed. And if you made a mistake, CP/M did not try to help; it just shrugged its shoulders and emitted a question mark. The Niceties of Z-System The Z-System has evolved over a period of nearly a decade now, but its goal from the very beginning has always been to make it easier and more convenient to operate the computer. My ideal is to have the computer do everything that it possibly can do for the user and leave to the user only those tasks that no computer could possibly figure out on its own. The command processor improvements I have introduced and the utilities I have written have all been directed toward that goal. I will now run through a short summary of Z-System features and try to indicate how they make the operator's life easier. This list is adapted from my book, "The ZCPR33 User's Guide." User Area Access CP/M introduced the concept of disk "user" areas, which allowed the operating system to group files into separate logical directories (physically the files are all stored in the same directory, but they are tagged to indicate the user area). Unfortunately, CP/M provided no practical way to access files across user areas, which made them almost useless. Back in the days when disks held only about 100K, there wasn't much need for this kind of organization, but today floppy diskettes commonly have a capacity between 350K and 1.3 Meg. Hard disks with many tens of megabytes are also inexpensive and common. Under these circumstances, a single logical drive can hold hundreds or even thousands of files, and some way to organize them becomes essential. Z-System makes it very easy and convenient to organize your files based on user numbers. Where CP/M allowed only a drive prefix to a file name (D:NAME.TYP), Z-System allows drive and/or user number prefixes (DU:NAME.TYP) so that files in other user areas as well as other drives can be referenced directly. In addition, Z-System allows meaningful names (similar to DOS subdirectory names) to be assigned to drive/user areas. This provides an interface that is far more suitable to the way people think and remember. With the DU: form, the operator has to think about the hardware (something he or she should not have to do, remember?); with named directories, the operator thinks in terms of function (TEXT: for text files, BDSC: for the C compiler, DBASE: for database files, and so on). Terminal Independence and the Environment While some would argue that the DOS hardware and software standards established by IBM's market dominance have resulted in an enforced mediocrity, there is no doubt that having a single environment in which to operate makes life much easier for applications programmers. Programs for DOS generally work right out of the box on any IBM compatible computer. Configuration is required only for fine-tuning. CP/M, on the other hand, was designed to allow programs to run on an extremely wide variety of hardware. In those days, "personal" computer took on a different meaning -- each person designed and built his own hardware. CP/M could be made to work with all of them, but elaborate configuration procedures were generally required, especially to match programs to the particular terminal used. To this day, we still have to deal with this hardware diversity. What CP/M could have but failed to provide was a means for conveying to application programs information about the operating environment. Z-System has several modules that afford such communication. An area called the environment descriptor (ENV) contains information about the system configuration. Another system area called the message buffer (MSG) stores information that one program can leave for another program that runs later to read. Part of the ENV is a section called the TCAP or Terminal-CAPability descriptor. The TCAP allows a program running under Z-System to determine the type of terminal in use and to adapt to the control codes it uses for special video operations. The ENV has information about the size of the screen and the printer's page. It also contains such information as the CPU clock speed and which disk drives are available (why allow attempts to log into drive C: if there is no drive C: -- it often just hangs the computer). The Z-System supports many optional operating system features contained in optional modules, and the ENV contains information about these modules also. The ENV and TCAP not only relieve the user of the nuisance of installing progra (text lost - replace from TCJ #42) erfect for the clock/stamp module. ZDOS even has special facilities for taking advantage of this buffer. LDTIM can automatically determine the location of that buffer and install the drivers there, and a special patch to NZCOM (included with the ZDOS package) gives NZCOM the ability to reconnect the drivers automatically after a new DOS is loaded. XBIOS's SYSBLD utility, unfortunately, does not support such a user buffer (this is true even in the 1.2 version that is able to load ZRL files). There is a way to trick the system into making some room for extra memory modules. This is to assign the extra memory space needed to one of the standard modules, such as the RCP. For example, if you use an RCP of the usual 2K (16 record) size and need one page (two records) of memory for a ZDDOS clock driver, you simply specify an 18-record RCP space. Then, when SETUPZST asks you for the address to which the clock driver should be loaded, you give it the starting address of the last page of this RCP space. Once these steps have been followed, ZDDOS should be running with date stamping. ZSDOS could be installed similarly except that even more extra space would have to be allocated to the RCP. Although what I have described so far will get the system running, there is some danger that an oversize RCP could be loaded by accident and overwrite the clock driver. To prevent this, the ENV module should be patched to indicate that only the actual 16 records (10H) are available. For those who do not face the problem of installing ZDOS on an XBIOS- equipped SB180, there are other uses of this kind of trick. For people who do not have the necessary tools (e.g., MOVCPM) to move the BIOS down to make room for special drivers (such as RAM disk drivers and special I/O boards), this same trick can be applied to open up protected-memory space for them. Other people may find it useful for quick experiments with special drivers before going to the trouble of moving the operating system around. There is one final refinement I would like to mention. It is something I learned from Gene Pizzetta, who took my general recommendations above and worked out the details (see his file, ZD-XB11.LBR, available on many Z-Nodes). I have usually used either the IOP or RCP modules for this trick, but Gene recommended using the NDR instead. The reason for this is that the IOP, RCP, and FCP get allocated in 128-byte chunks, while the NDR gets allocated in much smaller 18-byte chunks, the space required for one name. If your clock driver takes, for example, 270 bytes (10EH), you would have to allocate three extra records, because the driver is a tiny bit over two records. If you steal space from an NDR, you can add just two records, but reduce the number of names in the NDR by 1. Changing Command Processors Generating a new CCP using JetLDR is a little trickier than changing the DOS. JetLDR could, as it does with a DOS or BIOS module, load the new CCP into its operating position in memory, but this would be of questionable value, since the CCP would survive only until the next warmboot. So, instead, when processing a CCP ZRL module, JetLDR normally writes the resulting absolute- code CCP to a file ZCCP.CCP (in the root directory, I believe). This is where CFG files come into play. They are special code modules that JetLDR uses to perform special processing (see the file JLTOOLS.LBR on Z-Nodes for more detailed information). For example, CCPCFG.ZRL is one that tells JetLDR how to deposit the absolute CCP code that it generates directly into the XBIOS ram image of the CCP in banked memory (from which it is loaded on each warm boot). A similar CFG file could be written to tell JetLDR how to install the new CCP onto the system tracks of the current drive-A disk, but so far no one has done this. I would be happy to provide the CCPCFG module to XBIOS owners who would like it or to others who would like to use it as a model for writing other CFG files (send me a formatted disk with your copy of JetLDR, return mailer, etc.). ------------------------------------------------------------------------------- JetLDR for Z-Systems (ZCPR3), Version 1.00 Copyright (c) 1988 Bridger Mitchell Syntax: JetLDR [du:][library][.lbr] member1.typ member2.typ ... or JetLDR [du:]file1.typ [du:]file2.typ [du:]file3.typ ... ENV - environment FCP - flow commands IOP - input/output RCP - resident commands NDR - named directories Z3T - terminal capabilities ZRL or REL - module in SLR or MS-relocatable (REL) format with member name: RCP, FCP, IOP, CCP, CP3, DOS, DO3, BIO, CFG or BSX Notes: If first file is a library, extract remaining files from it. An ENV file must be the first loaded. Preceed special modules (DOS, RSX, BSX, ...) with appropriate CFG file. Use Path: YES Root Only: NO Scan Current: YES Explicit Directory: A0: ------------------------- Figure 1. This is the internal help screen displayed by the command "JETLDR //". It shows how flexible a package loader JetLDR is. ------------------------------------------------------------------------------- Editor's Note The Computer Journal is published six times a year. It covers a broad range of computing topics, ranging from discussions of the new and esoteric to good old CP/M. I highly recommend it. For a subscription, send a check for $18.00 US drawn on a US bank to: The Computer Journal 190 Sullivan Crossroad Columbia Falls, MT 59912 The CP/M PIPMAG 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 Altos 8000. 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.) 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. The CP/M PIPMAG Why ZMODEM? A discussion of the various protocols on GEnie by Brian Moore (BRIAN-CPM) GEnie has various methods for downloading files. Which method you use can save you time (and money) while downloading files on GEnie. In this article, I will explain how each protocol works and which will work best on GEnie. The XMODEM protocol is the oldest and simplest of GEnie protocols. This sends out 128 bytes of data in each block with a few extra bytes for error checking. When your computer receives a block, it checks to see if it is okay, and if it is, it sends an 'acknowledgement' back to GEnie. If the block does not check out on your end, your computer will send back a 'negative acknowledge' and GEnie will try again. This is why XMODEM is an 'error-checking' protocol. It will keep resending a block until your system receives it with no errors. You can use XMODEM to download files with no fear of line noise corrupting a 200k download. XMODEM-1K is a simple improvement to standard XMODEM. Instead of sending blocks of about 128 bytes, it sends blocks with 1k of data and the same number of header bytes. This speeds things up a bit when dealing with network computers, as there are less 'acknowledgements' for the sender to wait for. YMODEM adds some enhancements over XMODEM-1k, most notably the ability to send a batch of files. If you wish to get more than one file from a RoundTable, you can select the files and go watch TV while it sends them one after another. (But remember to come back to log off!) You don't have to ask GEnie to send the files one by one. Like XMODEM, though, GEnie will stop sending while waiting for your system to acknowledge the last block of data. Which leads us right up to ZMODEM. ZMODEM was developed especially for systems like GEnie that are running on huge networks. It, like YMODEM, has the ability to accept batch downloads. Remember that for X/YMODEM, GEnie has to stop sending while it waits for your system to acknowledge the block. ZMODEM was designed to send (literally) all the data your system can take in one continuous stream and not wait for any acknowledgements. Does this mean it doesn't correct errors? No, it still does that: it will resend a block if your computer requests it, but unlike the other protocols, it won't wait for your system to ask for the next block. In, fact, that also allows a special feature for ZMODEM for _continuing_ an aborted download. Suppose for example that you begin downloading a 200k file. A friend shows up at your front door and you decide to leave. Since you don't want to leave your computer logged on while you are out, you abort the download and sigh as you realize the last 20 minutes of downloaded were wasted. Well, with MOST protocols that would be the case: you would have to start from the beginning of the file and download it all over again. ZMODEM, though, has the ability for the receiving system to request sending after a certain point. If you have downloaded the first 100k of a 200k file and then come back later to finish it, ZMODEM will only send the last 100k. (ZMP will ask if you wish to continue an aborted transfer. Answering 'yes' will continue from where you left off.) In addition to all that, ZMODEM has a special auto-start feature. Once you tell it to start sending, it will tell your terminal program that it wants to send a file and your terminal program will handle the rest (provided, of course, that it knows how to do ZMODEM). So which protocol should you use? Well, if you have ZMP, the public domain ZMODEM program for CP/M, you should certainly use ZMODEM. It beats all the other protocols hands down for speed, error detection, and even recovers from severe problems. (I have unplugged my modem data cable and picked up the phone while downloading with Zmodem. When I put things back, ZMODEM was still running and not at all upset about the noise, or the fact that my system was several thousand bytes behind what GEnie was sending.) ZMODEM protocol will save you connect time and thus, money. If you don't have ZMP, then you have two choices: Use the best protocol your program supports (in order of abilities, highest to lowest: YMODEM, XMODEM-1k, XMODEM), or you could get ZMP for your system. ZMP is very easy to use (menus are provided and are only a keystroke away) as well as flexible. The file with ZMP and its documentation is ZMP15.LBR in the CP/M RT on GEnie (file #6912). ZMP has already been installed for a variety of systems and most (if not all) of these are also available on GEnie. Use the 'Search File Directory' and look for 'ZM' to get a list of these. To get you started, here is a list of files for the more popular systems: File# Name Size 6955 ZMO-KP11.ZZ0 10080 Overlay for Kaypros 6923 ZMP15KP.LBR 21420 ZMP _installed_ for Kaypro 6954 ZMO-MD05.ZZ0 7560 Morrow MD-3 6964 ZMO-1805.ZZ0 10080 SB180-fx There is not at present an overlay for C128 users, but anyone with a C128 and programming experience is welcome to write one! If your system isn't among the 30 or so that already have overlays on GEnie and you write one or find it somewhere else, please upload it! Remember: uploads are free on GEnie, and you will be helping out a lot of people using the same system as you. The CP/M PIPMAG Pipmag According to Brad or Who Can You Ask When You Can't Ask No-one At All Welcome to PIPMAG. This is the sixth in the series, the third since I took over the editorial duties, and in my not too humble opinion the best to date. Before I give you a rundown of the goodies there are a couple of news items I think will be of interest. New ZMODEM Version Works With ZMP A new version of ZMODEM has been installed in the CP/M RoundTable, and is compatible with ZMP. This means that you can now download files at unprecedented speeds with full error checking and correction. (Uploads are still restricted to XMODEM.) The secret to this is that while most protocols send packets of fixed size, then wait for some sort of checksum to be sent back in order to check for transmission errors, ZMODEM sends continuously, as much as the receiving machine can take. And not only is there full error checking, but ZMODEM can pick up an interrupted download where it left off. How is this miracle accomplished? I haven't the faintest idea, and although I suspect magic is involved I am told otherwise. If all goes well here in the CP/M RoundTable, expect to see this version of ZMODEM throughout GEnie. Many thanks are due CP/M SysOp BRIAN-CPM among many others, without whose tireless efforts this would not be possible. ZMP is available here in CP/M Library 20 as ZMP15.LBR, File 6912. Overlays are available for a wide range of computers from A to (I just have to say this) Z. Commodore 64 Transmits Data At 38,400 Bits Per Second (Film at 11) A new cartridge is available for Commodore computers which contains the communication chip that these machines have always needed but Commodore left out. The SwiftLink-232 plugs into the expansion port and can be used in conjunction with a RAM Expander. It has been found in testing to achieve reliable speeds of up to 38,400 BPS over a null-modem cable. Again I suspected that magic was involved, but I've been assured by Kent Sullivan of Dr. Evil Laboratories, the developer of the cartridge, that there is a purely technical explanation. The $29.95 package includes the cartridge, and communication (terminal) programs for the C64, the C128 in native mode, and the C128 in CP/M mode. I have one, and it works exactly as advertised. For more information see Message 1 in Category 8, Topic 49 of the CP/M Bulletin Board. If you ever needed a reason to figure out how to use the BB, this is it. Look for an article from Kent in the next issue of PIPMAG. The CP/M RoundTable Is Proud To Support "Hot Summer Nights" In support of GEnie's "Hot Summer Nights" promotion, going on throughout the month of August, the CP/M RoundTable has scheduled some special Real Time Conferences (RTC's), and other goodies. These conferences are in addition to those regularly scheduled every Wednesday and Saturday. This information may change at any time, so watch the Bulletin Board for updates. RTC's in the CP/M RT for Hot Summer Nights August 11th SwiftLink-232 RTC August 22 CP/M RTC (regular) August 23 Chat with the CP/M Sysops (Thursday) August 24 Harrass Harris, Pipmag Editor August 25 CP/M Help desk Other RTC's for Hot Summer Nights August 10th Meet the CP/M Sysops, GEnius RT (10pm) Freebies for CP/M RT August 19 to 25th Free time on Page 688 (PIPMAG) August 25th to 31st Free CP/M B.B. Also watch for exciting news, film at 11:00!! The conferences, except as noted, will be held in Conference Room 2 in the CP/M RoundTable, and will start at 10:00 PM Eastern Standard Time, which should be late enough to let our left coast members get home from work and have a bit of dinner first. The titles were chosen (and spelled) by our own SysOp C128-BILL, whose real name is Mud. PIPMAG Announces New Submission Policy While getting articles for this issue turned out to be less of a problem than I expected, things were a little touch and go for a while. In order to encourage more of you to share your accumulated CP/M wisdom with the rest of us, I'm happy to announce that beginning with PIPMAG7 and continuing for as long as I can, the author of any article submitted which is accepted for publication will receive a week of weekdays (that's Monday through Friday) free connect time in the CP/M RoundTable. If you think you could write something but don't know what, just scan the Bulletin Board. There are a LOT of questions begging extended answers, and I've posted a few messages on the subject. Articles needn't be original, but if you send me one that has appeared elsewhere you must have the ability to grant me permission to use it. Anyone who gets me sued for Copyright violation will be cordially invited to join the party. And now, in no particular order and without further ado.... In This Issue This issue is once again kind of heavy with articles on the perennial number one use of computers, word processing. Along with a follow-up to my last Wordstar piece we have an article on how to get the output you want from your printer from Tom McEnroe (T.MCENROE1), and one on a number of writer's tools from Robert Coleman (R.COLEMAN3). Conventional wisdom, which is like common sense in that it's in fact nonexistent, says that keeping track of a checking account is no job for a computer because it can be done just as easily with a pocket calculator. This explains why checking programs are at or near the top of the best-selling software lists month after month. This time around, we have for your reading pleasure an article about one such program for CP/M computers by Wade Baugher (W.BAUGHER). Finally there's a hard disk for Commodore computers that's affordable, easy to install, and easy to use. Sounds like just what we've all been waiting for, but is it? Read the review by yours truly. Been afraid to get into the online Real Time Conferences? The short article here by SysOp PETER-CPM should help you get into the swing of things. In another article from Robert Coleman he talks about the Zen of CP/M computing. After reading it I'm sure you'll be able to identify with it. You've been seeing the "Hot Summer Nights" notices when you log on but you might still be wondering what it's all about. The article by GEnie's own Laura Staley (L.STALEY) should help answer your questions. Summer is thunderstorm season. Is your computer protected. Find out why it may not be in the article by Chris Bannister (C.BANNISTER). In a lighter vein, find out why there aren't any CP/M viruses in the piece by Jim Taylor (JF.TAYLOR). Dennis Fowler (D.FOWLER2) talks a bit about some of the trials and tribulations of being the local CP/M guru. The response to the new Letters To The Editor column has been a little disappointing, but I did get two. Brian Moore (BRIAN-CPM) gives us a short discussion of the download protocols XMODEM, XMODEM 1K, YMODEM and ZMODEM. And last, but hardly least, world famous Z-System developer and guru Jay Sage (JAY.SAGE) joins these pages (files?) at long last with an article from The Computer Journal. Closing Notes Have you seen PIPMAG on a BBS or system other than GEnie? I've recently learned that it's made it as far as Yurrup, Japan, and Australia. I'd be interested in knowing where else it's been and just how famous I am :) I'm looking for information on the PCZ, otherwise known as the Grudge. Anyone who has one, has one on order, or has tried to order one, please get in contact with me. I have a new GEMail address, BRAD-HARRIS. As always, you can send comments, questions, and articles to PIPMAG$. Articles can also be uploaded to any CP/M RT Library (FREE), with PIPMAG in either the short or long file description. That's all until next time. Remember ... N - E - E - D I - N - P - U - T !!! The CP/M PIPMAG PIPMAG Article and Submission Guidelines by Brad Harris (BRAD-HARRIS), Editor Rule 1: There are no rules. Rule 2: See Rule 1 Seriously, It's my feeling that many of you out there have vast knowledge of various aspects of the CP/M world. The spreading of that knowledge is what keeps this world viable. In other words, we all need to pass on our experience in order to insure that CP/M continues to thrive. PIPMAG is your magazine. Your input is needed. Almost anything submitted will be considered for publication. The author of the BEST PIPMAG article will be be awarded 3 days of Free Connect Time in the CP/M RoundTable! Have the hot set-up for the latest term program? Write it up and send it in! Have a template for dBASE or PCFILE that you think others could use or learn from? Send it in! Have you found something that would make using our CP/M machines easier or more enjoyable? Send it! Opinions are welcome. So are reviews. Have a humorous anecdote that relates to CP/M? Send it in! I would especially like articles about games (which I don't play enough of), and Z-System. If you have developed a commercial product that you would like to advertise - well, maybe. Contact me via GEMail and we'll see. The only things that will be rejected out-of-hand are outright obscenity, and anything legally actionable (y'know, slander, libel, violations of Copyright, and like that). Submissions may be uploaded to any CP/M library (free), or sent to me via GEMail at either PIPMAG$, or BRAD-HARRIS. If uploaded to the libraries, be sure to note that it is for PIPMAG in either the short or long file description. Wordstar or straight ASCII format for text is appreciated. Compression types supported are ARK, ARC, ZIP, ZOO, LZH, or within .LBRs, SQUEEZE, CRUNCH, and LZH. Remember ... N - E - E - D I - N - P - U - T !!!