===============================================================================
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 *-*