=============================================================================== Volume 1 Issue 10 December 1989 ------------------------------------------------------------------------------- _____ _____ ____ ____ ___________ / | / | | | | | | _____ \ / |/ | | | | | | | \__\ / /| /| | | | | | | | / / | / | | | | | | | | / / | / | | | | | | | | ____ / / | / | | | | | | | | |__ \ / / | / | | \ \_______| | | |_________\ \ |___| |/ |___| \____________| |________________\ __ __ ____ ______ _____ ____ | \ || / __ \ --,,-- |,--- //--\\ ||\\ || || || || || \\__ || \\ || || || || |,== ---\\ || \\|| ||__|| || ||___ ___// || \_| \____/ || |____ ___/ The Official Newsletter of: The Motorola Users Group of London =============================================================================== =============================================================================== A Very Merry Christmas to All! =============================================================================== December 1989 MUG Notes Page 1 Motorola Users Group of London 1989 EXECUTIVE PRESIDENT Stan Bischop 500 Osgoode Dr. #122. London N6E 2G9 668-7277 VICE- PRESIDENT Erik Tromp 1 Partridge St.. London N6A 1T4 679-6168 SECRETARY Judy Daviau 500 Osgoode Dr. #122 London N6E 2G9 668-7277 TREASURER Sheila Smith 11 Bridle Path London N6Y 2H1 672-4913 APPOINTED POSITIONS MEMBERSHIP CO-ORDINATOR Judy Daviau 500 Osgoode Dr. #122 London N6E 2G9 668-7277 NEWSLETTER EDITOR Sheila Smith 11 Bridle Path London N6Y 2H1 672-4913 P.D.LIBRARIAN Diane Gubbels R.R. #1 Miller Rd. Delaware N7G 3H8 652-3844 PUBLIC RELATIONS Gerry Thomas 232 Oakland Ave. London N5V 4H1 659-1374 B.B.S. SYSOP Wayne Morrison 532 Pinetree Dr. London N6H 3N1 471-5064 NEWSLETTER PUBLISHER Wayne Morrison 532 Pinetree Dr. London N6H 3N1 471-5064 TECHNICAL ADVISORS Stan Bischop 500 Osgoode Dr. #122 London N6E 2G9 668-7277 Wayne Morrison 532 Pinetree Dr. London N6H 3N1 471-5064 MUG Line B.B.S. 24 Hours Daily 300/1200 Baud N-8-1 641-0927 DISCLAIMER The opinions expressed by the authors are not necessarily those of the Motorola Users Group of London, the editors, or the club members. While we try to make sure that all software and hardware projects in this newsletter have been tested and do work, we will not be responsible for any damage to your own personal equipment resulting from using information contained in this newsletter. COPYRIGHT NOTICE Contents of this newsletter are copyrighted 1989 by the Motorola Users Group of London. Reproduction by any means other than for the personal use of members without prior written consent is forbidden. Other non-profit computer clubs may make use of the enclosed material as long as written acknowledgement is made of the source. MANDATE This newsletter is published by and for the Motorola Users Group of London. This club has no affiliation with the Motorola Corporation. This club is a non-profit organization for anyone that may have an interest in Motorola 68XX and 68XXX based microcomputers and the use and exchange of information about these machines. November 1989 MUG Notes Page 2 Table of Contents Page Item ==== ==== 1.....................List of Officers and Mandate 2.....................Table of Contents 3.....................October General Meeting Minutes 4.....................PD. Notes 5.....................Telecom Comments 6.....................About Basic09 7.....................Calculating CRC's 14....................A Healthy Hard Disk 16....................OS-9 Program Review 18....................1990 Calendar SPECIAL INTEREST GROUPS The Motorola Users Group of London sponsors two special interest groups (SIG's for short). For December, the beginners SIG has been cancelled. The advanced SIG meets at Sheila Smith's (11 Bridle Path) Wednesday nights starting at 7:00 P.M. Whether you have just started out or you are an experienced hacker, there should be something of interest for you! December 1989 MUG Notes Page 3 General Meeting of The Motorola Users Group October 10, 1989 Secretary's Report The general meeting for October was called to order by Stan Bischop at 7:07 pm. and Wayne Morrison briefed the newsletter at this time. Stan made an announcement that he received the newsletter from the Durham Computer Club and he handed out some copies of these. Gerry Thomas picked up from there and showed us the program that he created to advertise our club meetings. Gerry followed this up with a demonstration of Color Max III, which is a Graphics Creation Program. The program was written by Eric Gavriluk and Greg Miller and originally cost about $70.00 U.S. Gerry drew a picture of a man's face (????) to demonstrate how you can create, edit and use color to make graphic pictures. He demonstrated Color Max III's ability to use "pencil, eraser, paint, cut & paste, rubber band lines, etc." Color Max III would appear to be almost identical to Coco Max III in it's abilities. After Gerry's demonstration, Stan announced that he has selected Erik Tromp as our new Vice President and that Erik has accepted the appointment. We would like to take this time to welcome Erik to the Executive and commend his bravery in taking on the task. Good Luck Erik!! Stan announced that there is to be a party held at 122-500 Osgoode Dr. on Saturday, October 28. It is requested that everyone wear a costume but it is not mandatory. The party is open to all club members and their escorts and the purpose is to find new ideas to improve our great club. There will be further details posted on the MUG Line so keep tuned to the BBS for further info. It should prove to be a good time. Sheila made an announcement that almost every article in this months newsletter was written by Wayne Morrison and made an appeal to the members to become more involved in writing articles in the future. Our newsletter is one of the things that keeps our club together and it is not fair to expect only one or two members to continually keep it going. Even one article from each member would add a variety to our newsletter that could not be matched anywhere. The club is made by the members and it can also be broken by them. Wayne picked up from there and did a demonstration of Coco Graphics Designer Plus. It is a program that can make banners, greeting cards and signs. The cost is $29.95 (U.S.) and the software is available through Zebra Systems. Their address can be found in the Rainbow Magazine. Our meeting ended at 8:43pm and many of our members met after the meeting at the Swiss Chalet for coffee and chit chat. December 1989 MUG Notes Page 4 PD. NOTES ************* BY:GERARD GUBBELS For the month of December we will be looking at two disks packed with programs.The first disk is mainly graphics, it is MUG Coco 3 015. The main stay of this disk is a program called HiRes Writer, it is a shareware program, that allow you print and draw on a hires screen. I find you must be careful with the program and follow every step in the directions. If something funny has happened you probably have done something wrong. With this program you can 'paste' text, along with drawings of your own creation. This will be saved to disk for future updating. There are doc's provided for this program. The other treasures on this disk include picture files, christmas, unicorn3, haloween, and rudolph with sound. There are also some real good demo's of what the coco 3 is all capable of, using graphic displays under Rsdos. The second disk we will be looking at tonight is a new one in the library (Mug CoCo 3 016). This disk comes available to us courtesy of Stan, from downloads from bulletin boards. It has a real good game of soltaire, with good graphics and speed. Moon is a game which is joystick operated and you have to avoid meteor showers, and rough terrain. See how good you are bowling and keep track of your scores. A good warm up before you enter that tournament and embarrass yourself. Klingon is a strategy game not unlike a commerically available game called Warp Factor-X. Get even with those tupperware parties and start your own business. See if you can rule the town with the most sales, and take over the competition. Give tuperwars a try. We also have some sound files, disk shrinking, and unarc utilities available on this disk. These two disks have some high quality software on them, giving good value for the buck. So enjoy these offerings and have a nice Christmas and a Happy New Year. December 1989 MUG Notes Page 5 TELECOM COMMENTS by W. Morrison In the last month, our club has been able to make quite a bit of progress in becoming self-sufficient. We have purchased our own computer, disk drive, and RS-232 Pack. These items were definitely needed for us to maintain our BBS service, as until now we had been using equipment borrowed from our club members. On the weekend of December 2, 1989, this equipment was brought into service, and I am quite pleased to be able to say that it appears to be functioning flawlessly! Definite thank-yous have to go out to two club members in particular, Stan Bischop our president, and Rick Tower for the generous loan of the equipment that has made everything possible. We are still waiting for a "Y" cable, which is on order, and when that arrives, the last of the borrowed equipment will be able to be returned. Considering that we are fast approaching the end of the year, I would like to depart from my usual column format and reflect on the past year, and the very busy time that we have all had. In the space of about ten months we have managed to launch a club with the intent of helping its members, create our own on-line electronic BBS system, and maintain its reliability to the point where our members have been able to access it and make use of it almost whenever they wanted. We have also been able to provide our members with a dynamic newsletter through the BBS and maintain a reasonably good number of downloads for our members. When you remember that there have been NO additional charges for these services, our yearly membership dues come out looking pretty good. May this kind of progressive success stay with us for the next decade! Our board will be approaching its three thousandth call before the end of 1989, and again, we are planning a little contest for the person who makes call number three thousand. There will be a prize, so I would like to suggest that you all get involved and lets see who wins it. I would also like to throw in a plug here for BBSing in general. If your Christmas wish list has any room on it for computer equipment, I would highly recommend your asking for a modem. There is a lot of fun to be had on-line and it is a great way to gather information about our hobby and meet new people! Although I hope to be able to see most, if not all of you before Christmas, I would like to take this opportunity to wish all our club members a very merry Christmas and an extremely happy New Year! After all it is not every year that we get to welcome in a whole new decade. May it be a good one for all of you! December 1989 MUG Notes Page 6 ABOUT BASIC09 by W. Morrison Last time we looked at the concept of modular programming and wrote some code to locate the cursor anywhere on the screen that we might want it to be. This time we are going to look at modular programming some more, specifically, a module to selectively clear portions of the computer screen. This type of feature might be used in a database for example, where you may want to clear out the portion of the screen holding the actual data without removing the headings. If you had a program which set up the following information; Name: Wayne Morrison Postal Code: N6C 3N1 and you wanted to clear out the name and postal code in preparation to display new data, you would need a simple way to erase everything to the left of the colons.The following procedure, when used along with the "locate" module that we looked at last time will do exactly that. PROCEDURE partcls DIM job:INTEGER PARAM horz,vert,finis:INTEGER FOR job=vert TO finis STEP 1 RUN locate(horz,job) PRINT CHR$(4) NEXT job END Lets dissect it line by line. The first line is the title of the procedure. The second line dimensions a variable called job which we want to use as an integer value. The third line tells Basic09 that we will be passing three values from the parent process and that they will all be integers. As their names suggest, horz tells the program how far in from the left margin to start erasing, vert tells the program how far down from the top to start erasing, and finis tells the program how far down the screen to erase before stopping. The fourth line sets up a "for next" loop starting with the value assigned for vert, and ending with the value assigned for finis. Line five locates the curser at the beginning of each line, in turn, that we want to erase. Line six uses a control code to erase the current line from the cursor position to the end of the line. Line seven returns the procedure to line four to find out what line is next and then repeat what we are doing, and finally, the last line ends the procedure after all lines have been erased. This procedure, when used with the "locate" procedure from last month, is quite effective at selectively erasing only portions of your screen, and it allows for some very interesting and professional looking effects. December 1989 MUG Notes Page 7 Calculating CRC's ================================================================ Date: Fri, 21 Oct 88 23:07:02 PDT Reply-To: COCO - Tandy Color Computer List Sender: COCO - Tandy Color Computer List From: tim koonce Subject: CRC calculation article (long) Due to popular request, this is an article that I wrote up last week describing what a CRC is, the basic mathematics behind it, and a brief introduction to the code that calculates it. I've not bothered to do a careful analysis of CRCs other than the standard CRC-CCITT (Once you understand that, you might want to tackle the 24th degree one used by OS9 for module CRCs. It's very interesting in that the generating polynomial has a LOT of zeroes, and they managed to optimize the calculation incredibly much by taking advantage of that. The algorithm they use is outlined in Puckett and Dibbles original Rainbow Guide.) It's a little long, but (I hope) well worth printing out and studying if you're at all interested in CRCs. If there's enough interest, I'll try to write up some similar articles in the future and post them here. - Tim Koonce ---------------------------------------------------------------------- What is a CRC, and how can it be calculated quickly? (c) 1988 Tim Koonce This article may be distributed freely, as long as this copyright notice remains intact. There are many misconceptions about what CRCs are. One document I read recently referred to a CRC as being a division by a prime number, then claimed that the prime number used was 69,665 (which is obviously not prime!). CRCs are not particularly complicated, but they do require a bit of thought before you understand the relation between the mathematical definition in terms of generating polynomials, and the actual code, which is simply a lot of bit twiddling. This article will attempt to explain the mathematics behind the Cyclic Redundancy Check calculation, and present some example source code to calculate the most common CRC, with some explanations of how to get fast enough CRC calculations. The only math background assumed is high school algebra. You should know how to do long division of polynomials, and should understand binary arithmetic. December 1989 MUG Notes Page 8 First, I'll explain a few basic mathematical concepts. In high school algebra, most people are introduced to modular arithmetic, or "clock arithmetic" as it's often called. As one example, our normal time system uses arithmetic modulo 12. This means that 12 + 1 = 1 (mod 12). The part in parentheses means that two numbers are considered the same if they differ only by a multiple of 12. For example, when telling time, 13 o'clock and 1 o'clock are really the same. (We're conveniently ignoring the difference between a.m. and p.m. here.) The equivalent to this for binary arithmetic is a number system called Z2. There are only two numbers in Z2, and they obey the obvious addition, multiplication, and subtraction. First, here are the addition and subtraction tables for Z2: + | 0 1 - | 0 1 ---+---------- ---+---------- 0 | 0 1 0 | 0 1 1 | 1 0 1 | 1 0 Take a few minutes to check these and make sure you understand where each entry comes from. Now, one important thing to notice (that we'll take advantage of later) is that in Z2, addition and subtraction are the same, and that addition in Z2 is exactly the same as the 'exclusive or' operation, which I'll write as XOR. The XOR of two binary digits is 1 if the two binary digits are different, 0 if they are the same. For completeness, I'll include the multiplication table for Z2: * | 0 1 ---+---------- 0 | 0 0 1 | 0 1 Now, I want to talk about polynomials a little bit, since they are at the core of CRC calculation. In high school algebra, you learned that a polynomial is a sum of terms, and that a term is a number multiplied by a power of the symbol 'x'. As an example, you learned that 3x^9, x^23, and 126x^100 are all terms, and that 4x^7 + 2x^4 + x + 3 is a polynomial. You also learned how to multiply and divide polynomials. As a quick review, you might want to look over the following long division problem to make sure you remember how it all works: December 1989 MUG Notes Page 9 4x^2 - 8x^1 +13 ---------------------------------- x^2 + 2x + 1 ) 4x^4 + 0x^3 + 1x^2 + 6x^1 + 5 - (4x^4 + 8x^3 + 4x^2) -------------------- -8x^3 - 3x^2 + 6x^1 - (-8x^3 -16x^2 - 8x^1) ---------------------- 13x^2 +14x^1 + 5 - (13x^2 +26x^1 +13) ------------------ -12x^1 - 8 So the remainder (which is the part we're going to really be interested in in a minute) is -12x-8. Now for the big jump. When calculating CRC's, we're actually doing polynomial arithmetic where the coefficients (the numbers before the 'x's) are all in Z2. Here's an example of a division problem where the polynomials are all over Z2. ('over Z2' just means that the coefficients are in Z2.) 1x^2 + 0x^1 + 0 --------------------------------- 1x^2 + 0x + 1 ) 1x^4 + 0x^3 + 1x^2 + 1x^1 + 0 - (1x^2 + 0x^3 + 1x^2) -------------------- 0x^3 + 0x^2 + 1x^1 - (0x^3 + 0x^2 + 0x^1) --------------------- 0x^2 + 1x^1 + 0 - (0x^2 + 0x^1 + 0) ----------------- 1x^1 + 0 Here, the remainder was simply x. Now, if you look closely, you'll see that we could really have written down this entire problem without writing down any of the x's. Here is the exact same problem written in a somewhat more concise format: 1 0 0 ---------------- 1 0 1 ) 1 0 1 1 0 - 1 0 1 ------- 0 0 1 - 0 0 0 ------- 0 1 0 - 0 0 0 ------- 1 0 December 1989 MUG Notes Page 10 Although you probably don't realize it, we've just calculated a CRC. In this example, the 'message' was the bit string '1 0 1 1 0', the 'generating polynomial' was '1 0 1', and the resulting CRC was the remainder, in this case '1 0'. Let's look a little more closely at this. Since the only numbers in Z2 are 0 and 1, any sequence of 0's and 1's can be interpreted as a polynomial in Z2. As an example, the byte value '10101101' can be interpreted as the polynomial x^7+x^5+x^3+x^2+1. Since we know how to divide polynomials over Z2, we can take any sequence of bits, divide it by a certain fixed polynomial, and the remainder is the CRC of that 'message polynomial' divided by the corresponding 'generating polynomial'. Let's look at the problem above more closely. Notice that in calculating the result, we only needed to look at 3 bits at a time. We took the remainder of the first subtraction (0 0 in this case), added the next bit, then did another divide operation. Also notice that using a fact noted above, each subtraction is exactly a bitwise XOR operation. Finally, to simplify the whole thing, since we're dealing with Z2, the only possible results for each partial division are 0 and 1, so the 'multiply back' part of the long division is very easy. Let's look at one more, slightly longer problem. Take a careful look at each of the subtraction steps, and exactly how we decide whether the result of each partial divide is zero or one. This time, we'll take a nine-bit generating polynomial, and divide it into a fourteen-bit message. This example is written out even more concisely than the ones above, so you might want to print this out and use a pencil to keep track of it all. 111010 -------------------- 101001111 ) 11010111010101 101001111 111000011 101001111 100011000 101001111 010101111 000000000 101011110 101001111 000100011 000000000 00100011 December 1989 MUG Notes Page 11 Notice a few things that happen here. First, due to a basic property of dividing polynomials, the size of the remainder is always one less than the size of the generating polynomial. In this case, our generating polynomial was 9 bits, and our remainder was 8 bits. So, in order to get the standard CRC used in systems such as YModem, which have a 16 bit remainder, our generating polynomial must be 17 bits. (equivalently, our generating polynomial must be 16th degree, i.e. the highest exponent must be 16.) Also notice that in calculating a CRC, the result of the division is not important, only the remainder. Finally, as noted above, each subtraction is exactly the XOR of the remainder so far with either all zero's, or with the generating polynomial. From this, we should be able to write out a brief flowchart for calculating CRCs. We'll assume that our generating polynomial is 17 bits, although it's easy to generalize this algorithm to any number of bits. 1) Let S be the first 17 bits of our message polynomial. 2) If the highest bit of S is 1, then XOR S with our generating polynomial 3) If there are any bits left in our message polynomial, then shift S left one, set the last bit of S to the next bit of our message polynomial, and goto step 2. 4) The bottom 16 bits of S are our CRC. You might want to compare this with the last division operation above to make sure that you understand this algorithm. Now, for real-world CRC's. One minor change to the above is necessary in order to calculate real CRC's, that is that we first add 16 zero bits to the end of our message polynomial. In the parlance of CRC calulation, this is 'multiplying our message polynomial by x^16.' For YModem, we use the standard CCITT CRC generating polynomial x^16 + x^12 + x^5 + 1. (Which corresponds to the bit string '1000100000010001', or $11021 in hex.) Now for some actual code. The following is taken from Chuck Forsberg's document explaining the YModem protocol. Chuck Forsberg is the inventor of YModem, and this short bit of C code is widely copied. /* * This function calculates the CRC used by the XMODEM/CRC Protocol * The first argument is a pointer to the message block. * The second argument is the number of bytes in the message block. * The function returns an integer which contains the CRC. * The low order 16 bits are the coefficients of the CRC. */ December 1989 MUG Notes Page 12 int calcrc(ptr, count) char *ptr; int count; { int crc, i; crc = 0; while(--count >= 0) { crc = crc ^ (int)*ptr++ << 8; (*) for(i = 0; i < 8; ++i) if(crc & 0x8000) crc = crc << 1 ^ 0x1021; else crc = crc << 1; } return (crc & 0xFFFF); } Chuck has made a few optimizations here over the algorithm we gave above. First, XOR (represented by ^ in the C code above) has a property which mathematicians call 'associativity', which means that if you're going to XOR several things together, then you can do them in any order. Notice that, in our algorithm above, if we consider what we do with a single byte of our message, then we XOR in each bit of that byte, then XOR in several copies of the generating polynomial. In Chuck's code, above, he XOR's in the entire byte at once (in the line I've marked with (*)), and then goes through and decides whether or not to XOR a copy of the generating polynomial. Also notice that he doesn't in fact use all 17 bits of the generating polynomial. Since the 17th bit is just going to get thrown away anyway, we can just use the bottom 16 bits of the generating polynomial to do our calculations (that explains the hex constant 0x1021 in the code). Several table-driven CRC functions take advantage of another observation that can be made here. Since XOR is associative, and since the where and when we XOR in the generating polynomial above only depends on the high-order byte of the result after (*), we can construct a table which will allow us to shorten the code above to: int calcrc(ptr, count) char *ptr; int count; { int crc, temp; crc = 0; while(--count >= 0) { crc = crc ^ ( (int)*ptr++ << 8 ); temp = (crc >> 8) & 0x00FF ; (A) crc = (crc << 8) ^ crctable[temp] (B) } return (crc & 0xFFFF); } December 1989 MUG Notes Page 13 Line A simply puts the high-order byte of crc into temp, and line B replaces the for loop in the previous example by using a table with the appropriate XORs already calculated. This method can be used to write extremely fast CRC calculation routines. It is even possible to get acceptably fast calculations using this method in BASIC. The only real drawback is the memory required to store the table, and the time and energy needed to calculate the values in the table. While the code fragments above are perfectly usable, it turns out that it is possible to write fairly short assembly language CRC routines that are much faster than the first C code example above (at least compared to the code generated by the Microware C compiler), and are not much slower than the table-driven code. The routine that follows is the fastest non-table driven CRC routine that I've found for the Motorola 6809. It takes advantage of all of the 6809 registers, and uses the carry flag to keep track of the 17th bit when needed: * * CRCCAL * * Entry conditions: * X - points to data * Y - holds length of data in bytes * Exit conditions: * D - CRC of block * All other registers except CC preserved * CRCCAL PSHS X,Y,U LDD 0 Start CRC at 0. TFR X,U We need X for counting. CRC1 EORA ,U+ XOR the next byte. LDX 8 CRC2 LSLB ROLA BCC CRC3 If the 17th bit is set, then EORA $10 XOR in the generating poly. EORB $21 CRC3 LEAX -1,X Have we finished all 8 bits? BNE CRC2 LEAY -1,Y Have we finished the block? BNE CRC1 PULS X,Y,U,PC Restore the regs and return. This short bit of code accumulates the CRC of a block of data more quickly than any non-table driven routine I've seen. One trick that is convenient at times is to accumulate the CRC as each byte becomes available. With all three of these code examples, it is not hard to see how to do that. I do have some sample source code for the IBM PC in BASICA that calculates the CRC acceptably quickly using a table. It may be fast enough to use in RSDOS, and should certainly be fast enough for BASIC09. If there is enough interest, I'll try my hand at adapting it to the CoCo, and post it here. I personally recommend the assembly code above for all but the most demanding applications, where a table-driven version should be used. The code above has been used with YModem at 2400 baud with no problems. Hope this helps people to understand what a CRC is, and how to calculate it quickly. - Tim Koonce December 1989 MUG Notes Page 14 6 PRESCRIPTIONS FOR A HEALTHY HARD DISK *************************************** BY: BRUNO BEVILACQUA SOURCE: AGRICULTURAL COMPUTER EXTENSION Volume 8, Number 2, October 1989 FACE IT: Your hard disk is bound for trouble. That's not a idle threat. Typical hard disk life expectancy (measured as the mean time between failures or MTBF) is 20,000 hours, or two and quarter years. And that's the mean rating. Half the hard disks with a 20,000-hour rating will fail before that time. Why is this crucial component of your computer system so susceptible to malfunction? The reason is that hard disks, unlike other computer components, are mechanical devices. Proper operation depends on the interaction of two extremely delicate parts: the read/write heads and the disk platters that store your data. Under average working conditions, these parts are exposed to a variety of physical and environmental stresses, including bumps and jolts to the computer system, power outages, and everyday wear and tear. Over time, it's almost inevitable that one or more of these factors will become a problem for your hard disk. Because hard disks are so senitive, it makes sense to take good care of them - and institute safegaurds to preserve your data when something does go wrong. The folowing tips should be included as part of a daily maintenance routine, you will extend the life of your hard disk - and stop playing Russian roulette with your hard disk data. 1. BACK UP YOUR DATA! You've heard it a million times, but its importance cannot be overstated: Always back up important hard disk data onto floppy disks or storage tape. Do not use the PBB method [Prayer-Based Backup - hope it'll never happen!]. Your hard disk will not work forever, and there is no way to predict when it will fail. Remember, with hard disks it's not a question if you'll lose data, but when. 2.RUN CHKDSK REGULARLY One of the most important pieces of information your hard disk contains is the file-allocation table(FAT). This table is created and maintained by DOS in order to keep track of where all the pieces of files are stored. If the FAT becomes damaged, DOS loses its links to file culters, and you end up with lost or scrambled data. FAT damage can occur if you turn off your system - or experience a power failure - while the hard disk is performing a write operation. It can also happen if you turn off or reset the system while a file is still open. If CHKDSK finds a problem it simply converts the affected file clusters to *.CHK files in your root directory and reclaims the diskspace for future use. Although this in itself will not restore your data, it does ensure the integrity of the FAT and proper operation of your hard disk. (Remember to delete the *.CHK files from the root directory) To ensure complete disk integrity you should run CHKDSK at least once a week. December 1989 MUG Notes Page 15 3.KEEP IT COOL Keeping your drive from overheating will minimize failures and extend its life. To ensure proper ventilation, make sure your system's cooling fan is operational. (You should be able to hear the fan when you power on the system. Alternatively, try holding your hand behind the power supply to see if you can feel the fan's exhaust.) Sometimes, ventilation to the hard disk can become blocked by dust or other obstructions to the airflow openings. To facilitate air intake, keep air vents in the front of your computer and the airflow paths around the hard disk free of dust. A good vacuuming once a month will do the trick. Finally, make sure your computer is positioned on your desk so that the back is at least several inches away from the nearest wall to facilitate the air exhaust. 4.AVOID DRAMATIC TEMPERATURE CHANGES When the ambient temperatures of your computer changes, the data storage platters in your hard disk expand and contract. Using it while it's in this state can result in data read/write errors. It's a good idea to give your drive time to adjust to extreme changes in the thermal environment before using it. This is particularly important for owners of portable computers to remember when transporting their laptops in the winter time. Generally, allow the hard disk one hour to adjust to significant changes in the thermal environment before turning on the computer. 5.USE A STURDY DESK By now, it should be clear that hard disks don't respond well to rough treatment. Even seemingly trival actions, such as tossing a book onto your desk or someone bumping your desk as you pass by, can cause the drive's read/write heads to strike the platters and destroy data. To minimize the likelihood of this happening, keep your computer on a strudy desk. Also, do not keep devices that generate vibrations-such as your printer-on the same desk as your computer. Instead, keep them on a separate table. 6.LET IT RUN Have you ever noticed that light bulbs seem to burn out just after you've turned on the light switch? The reason for this is that the bulb experiences the greatest stress at the moment you turn the power on. The same principle applies to components in your computer, including the hard disk. Each time you power on the hard disk, the stress of this action shortens its life. Consequently, many computer technologists recommend leaving your computer turned on virtually all the time - even at night! This is especially recommended if you computer every day. (I turn my system off only when I know that I will be away for several days.) Although It's OK to leave the computer on, you may want to dim or turn off your display monitor to avoid the possibility of the screen image becoming permanently etched on the monitor (a problem known as phosphor burn-in) December 1989 MUG Notes Page 16 Custom OS-9 Program Review By Len Fluhrer Oct. 27, 1989 Creating a boot disk under OS-9 level 2 is a real pain, the hardest part is trying to sort through the manual to find out how to do it. Sure there is Config but, Config will only handle 2 screen of devices, there doesn't appear to be a way to handle more then these two screens of modules. This dispite the fact that config will tell you there are more modules present. I have now comletely abandoned the config utility, and I almost tempted to delete from my disk as a waste of space. Instead of config I've found the EZGEN program from Burke & Burke listed in the Rainbow. This is one of the neatest programs I have seen yet, and is a must for any serious OS-9 user, it can be bought separately from Burke & Burke or with a hard drive interface as mine did. It completely replaces the config and modpatch programs that come with OS-9 and does the job one better on each of these programs. To use this program follow the following steps 1. Boot up OS-9 with your current OS-9 working copy. 2. format a new boot disk. format /d1 "new disk" r 3. Use the OS-9 cobbler command to put a new "boot strap" on track 34 of this new disk. cobbler /d1 4. When this is done you will have a copy of the most recently used os9boot file on the new disk in drive 1. This will be the only file on that disk you must now make a commands directory. makdir /d1/cmds 5. Copy over shell and grfdrv from your old boot disk. copy /d0/cmds/shell /d1/cmds/shell 32k copy /d0/cmds/grfdrv /d1/cmds/grfdrv 6. Envoke ezgen. Ezgen /d1/os9boot Note: this assumes you have already moved ezgen into your cmds directory. Ezgen will take a while to boot. 7. After the drive stops spinning you are in complete control to modify your new boot disk, add, subtract or append to the os9boot module. example 1. To delete w3 from the os9Boot l w3 ........ loads w3 submodule d ........ d deletes it December 1989 MUG Notes Page 17 example 2. Change from a 35 track drive 0 to 40 track 0 l d0 u /d0/modules/d0_40d.dd .... 40 track double sided You can also use the c option like modpatch except you don't need to know the old value to change it. c offset, newvalue. v verifies The q option quits out of ezgen and updates the file. Now all you have to do is power down your system and reboot using your new disk. See the manual for more details, EZgen also has its manual stored on the disk so if you ever lose the hard copy you could al ways print it out to the printer or term, a very nice feature. EZgen does have a bug that should be mentioned and that is that it will abort without updating anything if an error is encountered at any time. This is a problem if you are trying to do a lot of changes at one time from the keyboard and type the wrong key, a re-enter feature would be a nice improvement to this program. EZgen 1.06 cost 19.95 Burke & Burke PO BOX 58342 Renton, WA 98058 Rating ****1/2 stars out of 5 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * T H E N E X T M E E T I N G O F * * * * _____ _____ ____ ____ ___________ * * / | / | | | | | | _____ \ * * / |/ | | | | | | | \__\ * * / /| /| | | | | | | | * * / / | / | | | | | | | | * * / / | / | | | | | | | | ____ * * / / | / | | | | | | | | |__ \ * * / / | / | | \ \_______| | | |_________\ \ * * |___| |/ |___| \____________| |________________\ * * * * Will Be Held On July 11, 1989 * * 6:30pm to 9:00pm * * London Central Public Library * * Lower Level * * Room #3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ============= | | | DEC 1989 | | | ============= SUN MON TUE WED THU FRI SAT ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1| 2| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3| 4| 5| 6| 7| 8| 9| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 10| 11| MUG 12| 13| 14| 15| 16| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 17| 18| 19| 20| 21| 22| 23| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 24| 25| 26| 27| 28| 29| 30| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 31| | | | | | | ============================================================================== Motorola Users Group *-* MUG *-* ============= | | | JAN 1990 | | | ============= SUN MON TUE WED THU FRI SAT ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1| 2| 3| 4| 5| 6| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7| 8| MUG 9| 10| 11| 12| 13| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 14| 15| 16| 17| 18| 19| 20| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 21| 22| 23| 24| 25| 26| 27| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 28| 29| 30| 31| | | | ============================================================================== Motorola Users Group *-* MUG *-* ============= | | | FEB 1990 | | | ============= SUN MON TUE WED THU FRI SAT ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1| 2| 3| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4| 5| 6| 7| 8| 9| 10| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 11| 12| MUG 13| 14| 15| 16| 17| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 18| 19| 20| 21| 22| 23| 24| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 25| 26| 27| 28| | | | ============================================================================== Motorola Users Group *-* MUG *-* ============= | | | MAR 1990 | | | ============= SUN MON TUE WED THU FRI SAT ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1| 2| 3| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4| 5| 6| 7| 8| 9| 10| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 11| 12| MUG 13| 14| 15| 16| 17| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 18| 19| 20| 21| 22| 23| 24| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 25| 26| 27| 28| 29| 30| 31| ============================================================================== Motorola Users Group *-* MUG *-* ============= | | | APR 1990 | | | ============= SUN MON TUE WED THU FRI SAT ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1| 2| 3| 4| 5| 6| 7| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8| 9| MUG 10| 11| 12| 13| 14| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 15| 16| 17| 18| 19| 20| 21| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 22| 23| 24| 25| 26| 27| 28| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 29| 30| | | | | | ============================================================================== Motorola Users Group *-* MUG *-* ============= | | | MAY 1990 | | | ============= SUN MON TUE WED THU FRI SAT ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1| 2| 3| 4| 5| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 6| 7| MUG 8| 9| 10| 11| 12| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 13| 14| 15| 16| 17| 18| 19| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 20| 21| 22| 23| 24| 25| 26| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 27| 28| 29| 30| 31| | | ============================================================================== Motorola Users Group *-* MUG *-* ============= | | | JUN 1990 | | | ============= SUN MON TUE WED THU FRI SAT ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1| 2| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3| 4| 5| 6| 7| 8| 9| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 10| 11| MUG 12| 13| 14| 15| 16| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 17| 18| 19| 20| 21| 22| 23| ============================================================================== | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 24| 25| 26| 27| 28| 29| 30| ============================================================================== Motorola Users Group *-* MUG *-*