Volume 4, Number  4                               26 January 1987
    +---------------------------------------------------------------+
    |                                                  _            |
    |                                                 /  \          |
    |                                                /|oo \         |
    |        - FidoNews -                           (_|  /_)        |
    |                                                _`@/_ \    _   |
    |        International                          |     | \   \\  |
    |     FidoNet Association                       | (*) |  \   )) |
    |         Newsletter               ______       |__U__| /  \//  |
    |                                 / FIDO \       _//|| _\   /   |
    |                                (________)     (_/(_|(____/    |
    |                                                     (jm)      |
    +---------------------------------------------------------------+
    Editor in Chief:                                   Thom Henderson
    Chief Procrastinator Emeritus:                       Tom Jennings

    FidoNews is the official newsletter of the International  FidoNet
    Association,  and is published weekly by SEAdog Leader, node 1/1.
    You  are  encouraged  to  submit  articles  for  publication   in
    FidoNews.  Article submission standards are contained in the file
    ARTSPEC.DOC,  available from  node  1/1.

    Copyright (C) 1987,  by the  International  FidoNet  Association.
    All  rights  reserved.  Duplication and/or distribution permitted
    for noncommercial purposes only.  For use in other circumstances,
    please contact IFNA.




                            Table of Contents

    1. ARTICLES
       The Logical Technologies VS. Hoard Feil Story
       The IBM View of the Universe
       Topical TechMail Files
       WARNING: System Crashed by User
    2. COLUMNS
       CRC Calculations
    3. NOTICES
       The Vote is In!
       The Interrupt Stack




    Fidonews                     Page 2                   26 Jan 1987


    =================================================================
                                ARTICLES
    =================================================================

    Brian Walsh, 109/640

                               Howard Feil
                                    VS
                    Logical Technologies & Brian Walsh


        Recently I finally got the time to catch up on my reading  of
    Fidonews  and while reading Fidonews Volume 3 Number 45 I noticed
    an article written by a teenage boy by the name of  Howard  Feil.
    After  reading  the  article I was not the happiest person in the
    world.I was also extremely surprised to see it because this child
    was  logged by my sysop log,  AT&T,  & My local telephone Company
    (C&P telephone) to have been the person  who  was  attempting  to
    "crash"  my Bulletin Board System.  My attorney swiftly contacted
    his parents regarding the severity of his actions and was offered
    a notarized letter stating that his actions against myself  &  my
    company   (Logical  Technologies)  would  cease  immediately.   I
    accepted this and dropped all charges and informed  AT&T  that  I
    would  not prosecute in this matter.  After receiving his parents
    letter I noticed that I was being Bothered no  more  and  assumed
    that  the matter was over.  I now know I was incorrect.  I'm sure
    that all of you  are  wondering  what  REALLY  went  on  in  that
    situation  that  Howard  told  in Fidonews so I will now tell the
    WHOLE Story.  Incidentally please keep in mind that I WILL supply
    ANYONE who submits a requests with the written  evidence  proving
    that  what  I am about to write on these electronically generated
    pages is the complete truthful story.

         On May 19th,  1986 I was Hired to the  position  of  Service
    manager to ComputerLand of Howard County in Columbia,  MD.  While
    under there employ in early August I submitted a request to "set-
    up" a computer operated Bulletin  Board  System  (BBS)  operating
    under the fido-net BBS software and to be linked int the Fido-net
    electronic mail system in Net 109.  My request was approved and I
    did so and received the "node number" of 109/640.  I then noticed
    that  the  BBS  was  lacking  information  that was available for
    download and knew that the company would not approve  my  calling
    other  BBSs  while  on  company time and my wife wouldn't like my
    spending our money to get the information for my  employer  so  I
    submitted a request to run a contest in which the first person to
    submit 100 different NON-Copyrighted files would receive a Hayes-
    Compatible internal Hayes Compatible Modem. That request was also
    approved  with  the  Condition that the contest was held with the
    knowledge that Brian Walsh was running the contest and that  only
    He  was  liable for it.  They also stated that I would be able to
    purchase the modem at ComputerLand's  Cost  for  the  contest.  I
    accepted  those  terms  and  proceeded  to  "set-up"  the contest
    information and did supply the information that I was running  it
    and  NOT ComputerLand.  At that point the contest started to take
    off and I was receiving many good files and Howard Feil  (Howard)
    was  in  second  place  when the problem occurred.  First the BBS
    Fidonews                     Page 3                   26 Jan 1987


    system crashed & I lost everything ( the store would  supply  the
    software  to operate the Tape back-up installed in the machine ).
    I reconstructed as much as I could and had also  kept  a  written
    tally  of the contest so I still knew the status of that.  I then
    found out that the company had entered Chapter 11 and I submitted
    my resignation,  two weeks notice and a letter stating that I was
    removing  the BBS from operation when I left because there was no
    one working there at that point except for myself.  I then placed
    a notice on the BBS stating that The system would not be run from
    ComputerLand  in  2 weeks but from my home and after the move the
    contest would continue.  All went well with the move and  My  net
    Coordinator,  Kurt  Reisler,  was very understanding and made the
    change in the nodelist VERY Quickly.  Then I resumed the  contest
    and it wasn't going very quickly when within one saturday evening
    from  11:30pm to 3:00am the next morning I received 47 files from
    Howard putting his tally at 107 and placed notice to  the  public
    on  the  BBS  and  to  him personally.  I know now what I did was
    premature. While waiting for Howard to log on and see what he had
    won I started my own Computer company Logical Technologies. After
    He had seen the message and called me by voice and ask if he  was
    really  the  winner and I stated to him,  "You are the winner and
    will be receiving the prize as soon as the files can be  verified
    to  be  valid  under the rules of the contest." He then said that
    that was fine  and  would  be  awaiting  me  to  contact  him  to
    "formerly" announce him as the winner.  I then check the file and
    found them to be in reality approximately 15 different file  that
    where  not  Copyrighted,  a  pirated copy of SideTalk ( a Memory-
    resident telecommunications  package  from  Lattice)  and  a  few
    trojan  programs.  The rest were duplicates of the original files
    with different file names.  I then notified him  of  this  in  an
    online  chat  and he replied with,  "...well I think you'd BETTER
    give my the modem if you want users and a BBS...." I then set his
    user level to twit and attempted to continue with the contest but
    the interest had died off.  I later noticed many users that would
    call once and leave a message like "This BBS eats S**T" and so on
    and  strange  enough  the user always had a users name of "Howard
    Feil." with the rest being some numeric amount.  I  twitted  each
    user  and after the third user like that I contacted AT&T and C &
    P telephone to ask them to put a "Call Log" on my BBS line.  they
    did  and  then  I noticed that both the users that were using the
    name of "Howard Feil."...  and the new person attempting to crash
    the BBS using the bugs that were in versions prior to 11w (thanks
    Tom)  were  all  calling  from the same telephone number and that
    number was registered to be located in the dwelling where  Howard
    Feil resided.  I then contacted my Attorney and he acted swiftly.
    I then was contacted with Howard's parents request  to  submit  a
    letter stating that they would guarantee that these actions would
    cease.  I  accepted  the offer while thinking of the thing that I
    did at his age and knowing the horrors of  being  "just  a  kid".
    Then  All  ceased  for  a  bit  and then I noticed the article in
    fidonews that prompted my present actions including this article.

       I am now informing AT&T,  C&P telephone and my attorney the  I
    want  this  child to "learn a very hard lesson" from his actions.
    The charge I am bringing up at present are  Slander,Slander  with
    intent  to  harm,  harassment,  &  loss  of business.  AT&T & C&P
    Fidonews                     Page 4                   26 Jan 1987


    telephone,  to the best of my knowledge,  are charging  him  with
    Toll  Freud  and  using  Federal  Communication lines to commit a
    crime.  Please note that I do not enjoy nor make a habit of doing
    this and hope that this article will at least  clear  my  and  My
    companies name with you the readers of Fidonews. Thanks You.


    Sincerely,
    Brian Walsh Jr.
    President, Logical Technologies
    Sysop, Fido 109/640

    -----------------------------------------------------------------

    Fidonews                     Page 5                   26 Jan 1987


                       The IBM View of the Universe


         In the beginning,  there was  chaos  and  the  Universe  was
    without  form  and  void.  The  Lord  looked  upon His domain and
    decided to declare His presence.  "I be" he said, then to correct
    his grammar added "am."

         If   the   Lord  had  decided  to  work  on  irregular  verb
    conjugation first,  this wouldn't have happened.  God would later
    curse  the English language for its part,  but in that moment IBM
    came into being.

         The Lord looked out upon the IBM He  had  created  and  said
    "This  is  good."  That's  what  He said,  but He shook his head,
    wondered what the boys at the User Group  would  say,  split  the
    light  from  the dark and went to bed.  Thus passed the Beginning
    and the end of the first day.

         On the second day,  the Lord summoned IBM unto His presence.
    "There  is chaos out there,  and the Universe is without form and
    void.  I must correct this and I can  use  your  help.  Is  there
    anything you can do for me?"

         "I can take care of form," IBM replied. "Put me in charge of
    computers and I will take care of form for you."

         The  Lord  thought that this was good and said "Let there be
    computers.  Let IBM have my powers of creation  that  pertain  to
    computers and form." Thus saying, the Lord went off to His second
    day's work while IBM created the 1401.

         On  the  third day,  while the Lord was out,  IBM decided to
    subdivide the assgined task.  "Let there be systems that make the
    computer  work  and  let  them  be called Operating Systems.  Let
    there also be systems that make use of the computer and let  them
    be called Application Systems." Thus,  there came into being both
    Operating Systems and Application Systems, but there were no pro-
    grammers.

         The next morning IBM had to give the Lord a status report.

         "What did you do yesterday?" the Lord asked.

         "I invented the operating system" IBM replied.

         "You did?" the Lord shuddered. "Oh dear."

         "Yes I did," IBM confirmed, "but I find I need something you
    alone can provide."

         "And what is that?"

         "I need programmers to  use  my  computers,  to  operate  my
    operation system and to apply my applications."

    Fidonews                     Page 6                   26 Jan 1987


         "That  can't be done now," said the Lord.  "This is only the
    fourth day and there won't be people until the sixth day."

         "I need programmers and I need them now.  If they  can't  be
    people they can't be people, but we have to work this out today."

         "Give  me  some  specifications and I'll see what I can do."
    IBM hastily worked up  specs  for  programmers  (are  specs  ever
    anything other than hasty) and the Lord reviewed them.

         The Lord knew the specs weren't sufficient but followed them
    anyway.  He  also  made  some  programmers  that  did  just  what
    programmers  were  supposed  to  do,  just  to  spite  IBM.   The
    programmers  and  IBM  spent  the  rest  of  the day creating the
    Assembler and FORTRAN.  On the morning of the fifth day,  IBM re-
    ported to the Lord once again.

         "The  programmers  you  created for me have a problem.  They
    want a programming language that is easy to use  and  similar  to
    English.  I  told  them  you  had cursed English,  though I still
    don't know why.  They wanted me to ask your indulgence on this."

         The Lord had cursed English for good reason, but didn't want
    to explain this to IBM. He said "let there be COBOL" and that was
    that.

         On the status report of the  next  day  IBM  announced  that
    computers  had  gone  forth  and multiplied.  Unfortunately,  the
    computers still weren't big enough or fast enough to do what  the
    programmers  wanted.  The  Lord  liked  the  idea  of going forth
    multiplying,  and used the line Himself later on that  day.  This
    sixth day being particularly busy, He declared "Let there be MVS"
    and there was MVS.

         On  the  seventh day God had finished creation and computers
    had COBOL and MVS.  The Lord and IBM  took  the  day  off  to  go
    fishing.  IBM  hung a sign on the door to help programmers in his
    absence.

         IF AT FIRST YOU DON'T SUCCEED, TRY, TRY AGAIN - AND HAVE THE
         FOLLOWING READY BEFORE CALLING IBM.

         On the start of the second week the  programmers  went  over
    IBM's cathode ray tube directly to God.

         "We  have  a horrible problem," they complained.  "Our users
    want systems that perform according to their expectations."

         "USERS!" the Lord bellowed.  "Who said that you should  have
    users!   Users   are   the   difference   between  good  and  bad
    applications,  a  function  I  have  reserved  unto  myself!  Who
    authorized you to have users?"

         "Well, IBM..."

         "IBM!!  You!!  You did this to my programmers! You gave them
    Fidonews                     Page 7                   26 Jan 1987


    the knowledge of good and evil. For that you shall suffer through
    eternity!

         "Let  there  be  competition.  Let it be called Anacom,  and
    Burroughs, and CDC."

         The Lord went through the alphabet several times.  "With all
    this  competition  you  shall  still suffer the pain of antitrust
    legislation all the days of your existence."


         This was the start of the  second  week,  and  it  seems  an
    appropriate  place  to  conclude  our report.  In case you missed
    something, a summary of key points follows:

    1. Users and their needs are and always have been  a  subject  of
       dispute.  Nobody  can  learn  English  because it is cursed by
       God. IBM manuals are doubly cursed and therefore twice as hard
       to understand.  Of the programming languages,  only COBOL  can
       claim  divine origin.  People are people,  but programmers are
       something else.

    2. Computers may be a gift from heaven,  but  there's  no  divine
       help  in  getting  them  to  work.  Because  of  IBM's initial
       assignment,  there are more forms than anyone knows what to do
       with.  Finally,  chaos  was  part of the original state of the
       Universe and not a product of the data processing industry.

    -----------------------------------------------------------------

    Fidonews                     Page 8                   26 Jan 1987


    Ken McVay, 340/20

                  Topical EchoMail Files in ASCII Format

    Many  users have found themselves frustrated when trying to  keep
    up  with  the  message  base in some  of  the  large  continental
    echomail conferences.  With incoming mail increasing that message
    base at the rate of perhaps 75-100 messages per day, seven days a
    week, it takes real dedication of wade through them!

    TECH, one of the popular "continentals," is a case in point. When
    I joined the conference,  I quickly discovered that no matter how
    long  the  users spent reading the  mail,  they  invariably  fell
    behind.  Quite often,  if they missed a span of several days, and
    then  checked  again,  they discovered that RENUM had been  there
    first  and  clobbered half the mail.  Running RENUM on  a  weekly
    basis  was a mandatory chore for me,  as storage  space  demanded
    that the message base be maintained at under 1MByte.

    Another  common  problem  was  that TECH  contained  hundreds  of
    messages  that were of little or no interest to  my  users.  They
    were,  for  instance,  concerned with hard drive and  DOS-related
    issues,   and  cared  little  for  80386  vrs.   80286  technical
    discussions,  or the infamous AMIGA vrs. VAX wars...at first they
    tried  using the "Inquire" option,  but quickly learned that  not
    only could it not find all the topics they were looking for,  but
    that  it  also  took a great deal of time searching  through  the
    mail.

    When a question related to the DOS PATH command generated  dozens
    (they are STILL coming it,  6 weeks later!) of replies, I decided
    to  port them into a text file so users interested  in  improving
    their knowledge of DOS could find all the mail in one place.

    Thanks  to  Rick  Duff,  the SysOp of the  Zanzibar  Hotel  (Fido
    340/11)  in  Victoria,  B.C.,  who provided me with a  delightful
    utility (PRINTMSG.COM) for converting FidoMail to ASCII format, I
    found  it  easy  to convert the  DOS  messages,  sort  them  into
    chronological  order,  and group them into a text file.  I  could
    then edit the text file,  delete all the SEEN-BY lines,  etc.  to
    reduce  storage space,  and tuck the resulting files into my  DOS
    file  area,  where they could be downloaded or read with the TYPE
    command.

    To make a long tale less so:  There are now several topical  text
    archives  available  on my system (some of the un-arc'd ones  are
    listed below),  and more are added as the need arises.  The  file
    names  indicate which month's messages are within the  file,  and
    the  nature of the topic.  Some of these files have grown to over
    70K in the course of a month, while others remain quite small. In
    particular,  both the fixed drive and DOS archives have grown  to
    the point where they are now mini-encyclopaedias.

    My  system is a semi-private one,  and I have created a "generic"
    user  to eliminate access delays which often run-up log  distance
    rates.  Those of you who are interested in obtaining these  files
    Fidonews                     Page 9                   26 Jan 1987


    should  log  on as TECH USER,  password TECH.  The  archives  are
    stored in file area 16.

    3861286  MSG        80386/P-DOS
    AUTOCAD  MSG        CAD/CAM
    COMM1186.MSG        COMMUNICATIONS
    DOS0187  MSG        MS-DOS
    DPUB0187 MSG        DESKTOP PUBLISHING/LASER PRINTERS
    FIRM1286 MSG        GRAPHICS AND MISC. FIRMWARE
    HD1186   MSG        FIXED DRIVES
    LANTECH  MSG        LANS
    MULT1286 MSG        MULTITASKING
    PRNT0187 MSG        PRINTERS
    SEADOG   MSG        SEADOG
    TANDY    MSG        TANDY 1000PC
    V20TECH  MSG        NEC V-20 CPU

    I will be happy to transfer any or all of these files to diskette
    for  anyone who wants them - the archives presently total 2.25MB,
    so you'll need about 7 diskettes to be sure of getting them  all.
    Please include a decent mailer and return postage - the diskettes
    will be returned to you the same day they arrive here.

    Ken McVay, 1B Systems Management
    1602B Northfield Road, Nanaimo, British Columbia, CANADA V9S 3A7
    (VOICE) 604-758-4137       (FIDO) 604-758-4137 (1200 Baud)

    -----------------------------------------------------------------

    Fidonews                     Page 10                  26 Jan 1987


    Sysop, 11/301

                                 WARNING
                          System Crashed by User

    I am the system operator of Fido 11/301.  The following  sequence
    of event occured on January 14, 1987, beginning at 13:30.  A Dave
    Maxwell logged on,  for the first time, according to the log.  He
    made two attempts to download USER.BBS.  The log shows  ERROR  on
    both  attempts.  He  was  on for 10 minutes and used the password
    ANA.  City and State were Asdf Saf.  He was on  for  10  minutes.
    At  13:42 SYSOP successfully logged on.  SYSOP is me,  of course.
    No,  I did not  do  the  logging  on.  Someone  had  acquired  my
    password.  The  user attempted to download *.dog,  after changing
    the file designation for an area to the fido root  directory.  He
    apparently  had a problem and was on for only 5 minutes.  Whoever
    this was came on again at 13:48,  again as  SYSOP,  and  uploaded
    ARC.COM to my net mail area.  (ARC is an EXE,  I think).  Anyway,
    he then exited to DOS and  started  to  build  and  ARC  file  of
    somesort  in  the root directory.  I entered the room and saw the
    constant disk activity and  switched  to  the  bbs  partition  of
    DoubleDos.  You  can  imagine  my  astonishment  to  see WatchDog
    activated.  I then booted the system immediately.  The end result
    was some problem with cross linked files,  possibly caused by the
    intruders  actions,  possibly  not.  The  bottom  line  is  this.
    Someone obtained user.bbs.  Someone exited to Dos, someone messed
    up some files.  I have since removed the exit to DOS switch  from
    runbbs.

    Take  this  as  you  will.  I  am  making  no accusations against
    anyone, just repeating what appeared in SYSOP.LOG and what CHKDSK
    revealed.

    -----------------------------------------------------------------

    Fidonews                     Page 11                  26 Jan 1987


    =================================================================
                                 COLUMNS
    =================================================================

    Orv Stoll, 103/531

                       Sixteen Bit CRC Calculations


         Cyclic Redundancy Check or CRC is  one  of  the  best  error
    detection methods available. It is used primarily for serial data
    transfers  such  as  disk,  tape,  and error free serial transfer
    protocols.  Concentrating on uses found in bulletin boards, CRC's
    are  used  to detect errors in 8 bit data streams such as XMODEM,
    KERMIT,  and 8 bit data files that are commonly transferred which
    could  use  extra error detection,  namely those found in the ARC
    program.

         There are two common types of CRC calculations used  with  8
    bit  data  types.  XMODEM and KERMIT use what is called CRC-CCITT
    while ARC uses CRC-16.  The difference is the polynomial used  in
    generating  the check values.  In each of these two methods there
    are two different ways that data  can  be  fed  through  the  CRC
    generator.  The  classical  method which the CRC instructions and
    CRC hardware chips often use is to feed data from each byte least
    significant bit first.  This is due to the fact that serial  data
    is sent that way.

         The  CRC  process  is  defined  by polynomial division.  The
    message is seen as defining a polynomial.  As an example consider
    a single byte message 01100101, the polynomial this represents is
    x^6+x^5+x^2+1.  The  right  most  bit  is x^0 (or 1) and each bit
    left of this is powers 1,  2,  and  so  on.  Taking  a  128  byte
    message  such  as is found in an XMODEM block,  the polynomial it
    represents could have powers  as  high  as  x^1023.  The  message
    polynomial M(x) is divided by the CRC generating polynomial G(x).
    The CRC check sum is the remainder of the division of M(x) * x^16
    /  G(x).  The G(x) for the CCITT CRC is x^16+x^12+x^5+1 while the
    CRC-16 G(x) is x^16+x^15+x^3+1.  The idea is that by  adding  the
    remainder  to the original message the resultant message when run
    through the CRC generator will have  a  remainder  of  zero.  The
    reason  for  multiplying  the  message  by  x^16  is  so that the
    remainder (which will have an order of x^15  or  less)  will  not
    alter  the  data  bits  in  the message (multiplying M(x) by x^16
    simply adds 16 zero bits to the end of the  data).  Both  16  bit
    CRC's  have  a  generating polynomial with x^16 powers in them in
    order to yield a 16 bit remainder (CRC check) which can  be  sent
    as  exactly two bytes.  A G(x) with a power of x^24 would yield 3
    bytes and so on.  An example using a smaller CRC polynomial and a
    short message appears below.

         Take  a  6  bit  message  101101  which  would represent the
    polynomial x^5 + x^3 + x^2 + 1 and use the generating  polynomial
    x^4  +  x^3  + x.  The remainder will be at most a cubic equation
    which can be represented by a 4 bit  number.  The  total  message
    length  would  be  10  bits.  To  start the 6 bit message M(x) is
    Fidonews                     Page 12                  26 Jan 1987


    multiplied by x^4 to allow the remainder to be added to the 6 bit
    message without altering its' six bits.  The new polynomial to be
    divided would be:

        x^9 + x^7 + x^6 + x^4  reduced by g(x) * x^5 leaves
        -x^8 + x^7 + x^4       reduced by g(x) * -x^4 leaves
        2x^7 + x^5 + x^4       reduced by g(x)* 2x^3 leaves
        -2x^6 + x^5 - x^4      reduced by g(x)* -2x^2 leaves
        3x^5 - x^4 + 2x^3      reduced by g(x)* 3x leaves
        -4x^4 + 2x^3 -3x^2     reduced by g(x)* -4 leaves
        6x^3 - 3x^2 + 4x.

    In columnar form this division looks like:

                                    1 -1  2 -2  3 -4
        1  1  0  1  0 | 1  0  1  1  0  1  0  0  0  0
                        1  1  0  1  0
                          -1  1  0  0  1
                          -1 -1  0 -1  0
                              2  0  1  1  0
                              2  2  0  2  0
                                -2  1 -1  0  0
                                -2 -2  0 -2  0
                                    3 -1  2  0  0
                                    3  3  0  3  0
                                      -4  2 -3  0  0
                                      -4 -4  0 -4  0
                                          6 -3  4  0

    If this remainder is added to  the  original  message  polynomial
    then the remainder should be zero:

                                   1 -1  2 -2  3 -4
        1  1  0  1  0| 1  0  1  1  0  1 -6  3 -4  0
                       1  1  0  1  0
                         -1  1  0  0  1
                         -1 -1  0 -1  0
                             2  0  1  1 -6
                             2  2  0  2  0
                               -2  1 -1 -6  3
                               -2 -2  0 -2  0
                                   3 -1 -4  3 -4
                                   3  3  0  3  0
                                     -4 -4  0 -4  0
                                     -4 -4  0 -4  0
                                      0  0  0  0  0



    The  new message polynomial is x^9+x^7+x^6+x^4-6x^3+3x^2-4x which
    in binary is 101101???0.  The problem is how can multiples  of  a
    power  that  is  not  zero or one be represented by a single bit,
    they can't.  For CRC calculations the polynomial division  method
    is  redefined such that negative powers are made positive.  Since
    remainders in each step will be entirely positive,  the remainder
    in  the  next step will only have powers with multipliers 0 or 1.
    Fidonews                     Page 13                  26 Jan 1987


    The above problem in columnar form now looks like this:

                                   1  1  0  0  1  0
        1  1  0  1  0| 1  0  1  1  0  1  0  0  0  0
                       1  1  0  1  0
                          1  1  0  0  1
                          1  1  0  1  0
                                   1  1  0  0  0
                                   1  1  0  1  0
                                            1  0  0

    The remainder is simply x^2 which when added will result  in  the
    division:

                                   1  1  0  0  1  0
        1  1  0  1  0| 1  0  1  1  0  1  0  1  0  0
                       1  1  0  1  0
                          1  1  0  0  1 < note these results
                          1  1  0  1  0
                                   1  1  0  1  0 <
                                   1  1  0  1  0
                                         0  0  0  0

    The  result  of  each  subtraction  being  forced  to be positive
    results in a bit wise operation that is simply an exclusive or.


         In 8088 assembly language the CRC values can  be  calculated
    two  ways  depending  on whether the data is to be taken least or
    most significant bit first (for  each  byte).  XMODEM  takes  the
    most  significant  bit  while  KERMIT the least.  The methods are
    both called CRC-CCITT but yield different results  and  can't  be
    mixed.

    ;
    ; CRC-CCITT accumulator using most significant bit first
    ; crcval should be set to zero before the first call of this
    ; routine. AL is sent in having the next character to add
    ;
    crcadd     proc    near
               mov     bx,crcval
               mov     cx,8
    crclop:    shl     al,1
               shl     bx,1
               jnc     crcnxt
               eor     bx,1021h   ;or use 8005h for CRC-16
    crcnxt:    loop    crclop
               mov     crcval,bx
               ret
    crcadd     endp

    The  above  routine  could generate CRC-16 values by changing the
    eor instruction to:
               eor     bx,8005h

    To generate CRC values with the data shifted in LSBit  first  the
    Fidonews                     Page 14                  26 Jan 1987


    body of the routine would look like this:

    crcadd     proc    near
               mov     bx,crcval
               mov     cx,8
    crclop:    shr     al,1
               shr     bx,1
               jnc     crcnxt
               eor     8408h           ;for CRC-16 use A001h
    crcnxt:    loop    crclop
               mov     crcval,bx
               ret

    When  using each of the above routines for generating CRC values,
    two bytes of zeros must be fed through crcadd after  the  message
    is  sent  through  but  before  the  crcval  is  transmitted.  On
    reception the received CRC bytes should  be  run  through  crcadd
    after  which  crcval  will  be zero if there were no errors.  For
    example the message "THE" would be run through:

               mov     crcval,0
               mov     al,'T'
               call    send
               call    crcadd
               mov     al,'H'
               call    send
               call    crcadd
               mov     al,'E'
               call    send
               call    crcadd
               mov     al,0
               call    crcadd
               mov     al,0
               call    crcadd
               mov     al,crcval+1     ;send MSB first
               call    send
               mov     al,crcval       ;then LSB
               call    send


         With a slight change in the CRC  accumulator  "crcval"  will
    have  a value that includes two zero bytes.  This means that they
    would not have  to  be  added  at  the  end  to  finish  the  CRC
    calculation.


    crcadd     mov     cx,8
               mov     bx,crcval
    crclop:    shl     al,1
               jnc     nobit
               eor     bh,80h
    nobit:     shl     bx,1
               jnc     noeor
               eor     bx,1021h        ;or 8005h for CRC-16
    noeor:     loop    crclop
               mov     crcval,bx
    Fidonews                     Page 15                  26 Jan 1987


               ret


    When shifting data in LSBit:

    crcadd     mov     cx,8
               mov     bx,crcval
    crclop:    shr     al,1
               jnc     nobit
               eor     bl,1
               shr     bx,1
               jnc     noeor
               eor     bx,8408h        ;or a001 for CRC-16
    noeor:     loop    crclop
               mov     crcval,bx
               ret

    Although these methods automatically multiply the message by x^16
    the  loop  is  slower.  The message "THE" using the LSBit routine
    above would be sent:

               mov     al,'T'
               call    send
               call    crcadd
               mov     al,'H'
               call    send
               call    crcadd
               mov     al,'E'
               call    send
               call    crcadd
               mov     al,crcval       ;send LSB first
               call    send
               mov     al,crcval+1     ;then MSB
               call    send

    The receiver would receive it:

               mov     crcval,0
               call    receive
               call    crcadd
               call    receive
               call    crcadd
               call    receive
               call    crcadd
               call    receive
               call    crcadd
               call    receive
               call    crcadd
               cmp     crcval,0
               jnz     error

         CRC calculations are unusual in that they  are  more  easily
    done  in assembly than in any high level language (excepting ones
    with a CRC function).  The process of polynomial division,  which
    sounds like trouble, turns out to be a snap in assembly, in Basic
    though it is trouble.  MS Basic won't do "eor"s with anything but
    Fidonews                     Page 16                  26 Jan 1987


    integer values.  They can be in a floating point number but  must
    be  less  than  32768.  The  CRC  accumulator uses all bits in an
    integer so that the value often gets above 32767  where  the  EOR
    operator will give an overflow error.  To get around this the CRC
    accumulator needs to be split into two parts. The shift operation
    turns into a multiply by 2  operation.  Again  an  overflow  will
    result  if the top bit is remembered and then stripped before the
    multiply.  If you must code a CRC in Basic be prepared for a very
    slow  process.  The best way is to use the CALL statement and put
    the CRC calculator in assembly.  It isn't all that hard since the
    assembly portion needs no storage for itself. For XMODEM a verbal
    procedure would be:

    1. Set crcval to zero.
    2. For each byte in the block do eight times:
       1. Shift the bits of the byte left one position.
       2. Shift crcval left one position.
       3. If a bit is shifted left of bit 7 in step 2.1 add 1 to
          crcval
       4. If a bit is shifted left of bit 15 in step 2.2
          exclusive or crcval with 0001000000100001 or 1021H
    3. If transmitting the block:
       1. Repeat 2.1-2.4 with two zero bytes
       2. Send block, the upper 8 bits of crcval, then the lower
          eight bits of crcval.
    4. If receiving the block:
       1. crcval should now be zero if there were no errors.
       2. The last two bytes of the block should be discarded.

    -----------------------------------------------------------------

    Fidonews                     Page 17                  26 Jan 1987


    =================================================================
                                 NOTICES
    =================================================================

                             The Vote is In!

    We have not yet received the written report  from  the  CPA,  but
    we've  been told by phone that the results of the bylaws vote are
    as follows:

        Votes received:     148
        Votes in favor:     127
        Votes against:       16
        Votes disqualified:   5

    I am told that the  five  disqualified  votes  were  disqualified
    because  the  voters were not listed in node list #311,  but that
    all five were in favor of the proposed bylaws.

    In other words,  the bylaws were passed by almost eight  to  one.
    We extend our thanks to everyone who took the time out to express
    an opinion.

    -----------------------------------------------------------------

                         The Interrupt Stack


    17 May 1987
       Metro-Fire Fido's Second Birthday BlowOut and Floppy Disk
       Throwing Tournament!  All Fido Sysops and Families Invited!
       Contact Christopher Baker at 135/14 for more information.

    24 Aug 1989
       Voyager 2 passes Neptune.


    If you have something which you would like to see on this
    calendar, please send a message to FidoNet node 1/1.

    -----------------------------------------------------------------