comp.os.coherent comp.os.linux.announce comp.os.mach comp.os.minix
comp.os.xinu comp.periphs comp.unix.bsd comp.unix.pc-clone.32bit c
omp.os.386bsd.developmet

Released 03:37:46 Sat  03-20-1993
       +----------------------------------------+
         QQQQQQ   II   CCCCCC
         QQ  QQ   II   CC        N  E  W  S
         QQ  QQ   II   CC
         QQ  QQ   II   CC        for 386bsd
         QQQQQQ   II   CCCCCC    Vol.1   no.3
            QQ               (r)
       +----------------------------------------+
               News about QIC-40/80

  From the desk of the quasi-editor-in-chief:
       "Just because I am numbering these things don't get the idea
        that I am going to do any more of these".

  Disclaimer:
       "QIC" is a registered trademark of the
       Quarter-Inch Cartridge Drive Standards, Inc. (QIC).

       This publication is not affiliated with "QIC" or "QIC DATA NEWS".

       All comments, issues, and errors are only attributable
       to the quasi-editor-in-chief.

  Thanks:
       Will Crawford, Wolfhound Computer Service, for the editorial critique
       and his comments on software design.

       Jennifer Gordon for being the editoral goddess of grammar corrections.


       *=======================================*
       |       Tabloid contents                |
       *=======================================*
       |  <1>__ Implementation problems        |
       |  <2>__ Design problems                |
       |  <3>__ Backward compatibility problem |
       |  <4>__ Problem of the (un)Convention  |
       |  <M>__ Meaningless dribble.           |
       |  <F>__ FLAMES to the editor           |
       |  <N>__ NEXT ISSUE                     |
       *=======================================*
       hint: search for "<?>__"

 <1>__ Implementation Problems (from the software side).

               NO Shared Libraries
               -------------------
               Oddly enough, I believe there is a shareable library,
       but the documentation is not complete enough in a lot of cases.
       Since the underlying structure for the I/O bus is different than
       the traditional VME BUS, the documentation previously released
       does not apply. In the long run, problems like this will
       be handled by OOPS type implementations to the OS, but, until
       then you must really hunt and peck.


               Unsure About Library Calls
               ----------------------------
               It may seem like another odd topic, but take the
       rarely documented problem of writing to I/O ports incorrectly.
       The problem is that some chips sets expect a latency time
       between writes to multiplexed ports, like the EGA ports.  What
       may happen is this: If a writer does an "outw" (out single word)
       when he/she should be doing a double "outb" (out single byte),
       the port will jam. In the case of the EGA, since most of the
       ports are read only, the writer will lose the context of the
       situation and not be able to resolve it quickly.... It is a
       really messy problem...

       This code clip shows the right way and wrong way.

               ;; wrong way
               outw    dx, ax  ;; write a word (16-bits) to a port

               ;; right way
               outb    dx, al  ;; write the LSB (least significant byte)
               xchg    al,ah   ;; exchange high for low
               nop             ;; wait settle time (about 2 clock cycles)
               outb    dx, al  ;; write new LSB


               Is OS Giving Me Priority?
               -------------------------
               What a question to ask! I wish I could answer this
       question with some certainty, but there has not yet been a way to
       get this information cleanly.
               The problem arises when some hardware, which is being
       ported, expects a real-time response.  The QIC tape drive is one
       such device.  The specifications for use of the FDC in an "interrupt
       mode" calls for a "Maximum Time Allowed for a Service" at 14us
       for the data rate of 500kbps.  This means that if the interrupt
       for a DMA transfer or a "result phase" is not answered in the
       allotted time, the FDC will mark it as an error.  This is, of
       course, important to the QIC tape drive since the FDC is
       intermediate for all communications between it and the CPU.

 <2>__ Design Problems.

               The problems now become more general in nature. The
       reason is the future.
               Without getting too philosophical, I will state plainly
       that many of you have seen the technology move, in gross
       dimensions, to progressively smaller hardware implementations.
       Obviously, as things get smaller and smaller, we will be asked to
       do more with the hardware objects of the same size. It is only
       reasonable.

               So, how does this become a Design Problem?
               It means we have to design the software before the
       hardware gets to us.

               How do we do this?
               Tools of caliber and precision.

               How do we know what tools we will need?
               Lucidity provokes us with the contention that every possible
       implementation cannot be foreseen. However,64-bit or 128-bit data paths
       provide the next logical choices.  The 32-bit systems are our present
       reality; We just have to plan a bit better.

               I've gotten a bit too far out in left field.

               "Let's cut to the chase". If you know about OOPS design,
       like say, Smalltalk, then you know that we need solutions in that
       realm.
               You may be asking "Isn't C++ OOPs?".
               NO, not really. It has a lot of neat OOPs-type ideas
       working for it, but it tries to bind tightly to the original
       "C" idea.  It will just need to be re-examined,
       especially by the mass of "C" programmers.

               'NUF soapbox stuff.

 <3>__ Backward Compatibility Problems.

               SCHEMA, the idea--not the language. I won't let this get
       too ugly; I will just say the word is related to SCHEME.  Previous
       OSs (Operating Systems), this one included, work on ideas that are
       now dead... like core_memory, drum_memory, punch_tape, and 6-bit
       codes. I don't want to get into detail on this, so if you have
       any questions, please post them for general response.

               The next related item is a perplexing one. It is that of
       "not carrying the old bugs with you".  It would seem that we would
       like to get rid of bugs, but some old codes do not transport
       well to new hardware.  Examples of this are best visible when
       you look at the TTY driver sets.  Let's say a terminal does not follow
       the VT100 "command set".   You can see entries, such as this, that seem
       to follow the hardware fix almost verbatim.

               The last problem I will mention, in this regard, is that
       of "garbage collection". This is an old paradox and is mentioned
       again and again as a constant thorn.   Here is an example of the
       classic situation: Old code is being rewritten for a new driver,
       but do you remove the old patches to hardware problems?   And if
       you do remove the patches, do you also remove the old errors codes
       that went with it?
               Can we get a handle on this problem? Yes, if the
       documentation and "regression tests" reflect the old code SCHEMA
       correctly... hmm... we just made a vicious circle.


 <4>__ Problems of the (un)Convention.

               Following tradition? Does this mean that I have to
       follow bad ideas?  And, what is a bad idea?  I won't say any more
       on this, except for the obvious.

               Did the constructors of the original drivers give it
       structure?  Is it modular?

               In a lot of cases, the code is not modular.  This can be
       seen in the way the I/O buffer variables migrate in and out
       of the old drivers.  This was a good idea then;  it was a way to
       cut down on overhead.  However, when you do this, implicitly you
       slow the system down.  So, maybe, we need to get rid of this and
       add modular structure.

               Why do we want to add modularity?
               With modularity, you explicitly get transportability.
       If done right then, transportability, in theory, crosses hardware
       boundaries.
               Where can you get the most transportability?
       In OOPs type design.  The place I can describe this best is
       inheritance.  With inheritance, new hardware implementations
       need only modify the section of code that pertains to it,
       such as "xxprobe()" and/or a "xxprep()**".
               At this point you might say "Well, that's great theory,
       but that's not life!".   Well, the QIC-40/80 now becomes the
       best example.  Here we have a device which attaches to a known
       port and does not act as expected.
               What do I do?
               Rewrite and duplicate the FDC?
               Forget that idea, from a purely overhead point of view
       the prospectus to look for a standard.  So for the QIC, then,
       there is the QIC-117.  Under observation, though, we can see
       that the FDC interface does not follow FDC logic.
               So, now what?
               I alias the function in a virtual method through a
       dynamic bind.  Unfortunately, this methodology is not as
       clean and clear as other languages.  The bind is an explicit
       method, not an implicit, like Smalltalk.

               BTW, if "virtual method" and "dynamic bind" sound like
       Greek, ask someone.

               OK, now the rough part.
               Identification with the familiar.

               Whose form of code style blocking should I use?
               If I am going to migrate to a new method of thinking, then
       shouldn't my writing style reflect this?  I have been talking a lot
       about Smalltalk, so you might think I am an advocate of it. I am, but
       not for Operating Systems.

               In Smalltalk, the sections between the double quotes
       are the comments.  The sections between the "|" are local
       temporary variables.  The ":=" is an assignment symbol.
       The call to the function is made as:

               changeBits: theAddressOfTheBitYouWantToCha


       HERE is a clip from Smalltalk:
       ------------------------------
       changeBits: aPoint
               "The select button has been pressed at aPoint in the
                magnified pane. Reverse the bit under the cursor and
                all bits the cursor moves over until the select button
                is released."

           | aChar locX locY newX newY |

           locX := -1.
           locY := -1.
           [newX := Cursor offset x - bitPen clipX // scale.
           newY := Cursor offset y - bitPen clipY // scale.
           (newX = locX and: [newY = locY])
               ifFalse: [
                   locX := newX.
                   locY := newY.
                   self setX: locX
                       Y: locY].
           Terminal read == EndSelectFunction]
               whileFalse: [self checkCursor]!

       **  xxprep is going to be for the FDC driver, a new vital
           function for preparing the FDC for commands.


 <M>__ Meaningless Dribble.

       "I hope you do continue sending me the money; you know,
        it costs lots to look this cheap."

                       -Dolly Parton
                       -Tonight Show/03-05-1993

       "Parallelism is the norm, purely sequential problem
          solving is the anomalous restriction"

                       -Nicholas Carriero & David Gelernter
                       -How to Write Parallel Programs
                       -Chapter 1, p.1

       "You hang out with some pretty amazing losers"

                       -Jeff Dehard
                       -Poet, Rock Mewzician

 <F>__ FLAMES To The Editor

       ====================================================
       to: [email protected]
       from: "common net wisdom"

       re: Subject: Re: Subject re: Subject: Re: Subject re: Subject: ...

       >      Before I tear some new *ssh#l%s, I would ask your opinion.
       >      ::
       >      How long has this continued BS of professed knowledge
       >      been going on with this group?

       Which particular BS are you referring to. Remember, this is
       Usenet... AKA the Net of a Million Lies. There is no entrance
       exam, and nothing but the quality of ones posts differentiates
       the fools from the folks with real understanding. Rest assured
       that the people who are worth convincing can figure out which
       are which without the need to flame.

       Not that it doesn't feel good to flame a fool on occasion, it's
       kind of like wrestling with a pig. The pig enjoys it, and you
       both get dirty.

       ====================================================
       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

       With wisdom such as this, I sometimes wonder why I speak.

                               Thanks for your comments,
                                       [email protected]

       ====================================================
       Subject: no subject (file transmission)
       Date: Fri, 12 Mar 93 8:23:09 CST
       From: Al Amet <[email protected]>

       To: [email protected]
       Subject: QIC NEWS


       I thought I would inform you in case you didn't
       know "QIC" is a registered trademark of the
       Quarter-Inch Cartridge Drive Standards, Inc. (QIC).

       Oh yea, they have a publication called QIC DATA NEWS.

       ---
       --------------------------------------------------------------
       Al Amet (Unc Al)                        Tallgrass Technologies
       [email protected]                     11100 West 82nd Street
       Voice:(913)492-6002                      Lenexa, KS 66214-3313
       ====================================================
       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

       Thank you AL,

               I believe that the Supreme Court stated
       that any words (or acronyms) that go into wide use
       are no longer considered trademarks or copyrightable
       (i.e., book titles and song titles are not copyrightable).
       The phrase "Xerox copy" is also uncopyrightable or
       cannot be legally defended as a trademark.

               But, in the interest of fair play, and the
       fact that without the good people at QIC and
       Freeman Associates,  I could not produce such dribble.
       I will, in the future, acknowledge their trademark
       and the distinction that they publish a newsletter
       with a similar name to mine.

                               Thanks for your comments,
                                       [email protected]
       ====================================================
       From: [email protected] (Nate Williams)
       Date: Fri, 12 Mar 1993 20:44:14 -0700
       To: [email protected] (Jesus Monroy Jr)
       Subject: Re: Subject: Some Sample Projects for 386BSD

       >         NOTE to NATE or/and Jordan:
       >                 You have my messages to you... If you feel that
       >         I did not communicate them effectively _or_  I sound like
       >         blithering fool _________ e-mail me.

       Well, to be completely honest (no offense to you), sometimes the
       'additional editorial' information you attach with your posts tends
       to be quite distracting.

       For example, statements like

       >         "If you cannot -in the long run- tell everyone what you
       >          have been doing, your doing has been worthless."
       >                                         -Erwin Schrodinger.

       tend to put people off.  This is a technical newsgroup, and most of the
       readers are not interested in philosophical statements by some person
       they have never heard of(or if they have heard of them, they really
       don't care).

       People are interested in results, not talk.  But, as you ....
          ::

       It may be in your personality to keep technical and philosophical
       thoughts in the same vein, but speaking for myself (and others with
       whom I've had conversations), it tends to make me lost track of what
       you are saying.

          ::
        [deleted]
          ::

       Oh, one more thing.  One of my PET PEEVES is not sticking with
       standard coding styles.  I understand that some people work
       better with this coding style or that coding style, but your
       fd.c driver was SO HACKED UP from the original that it's
       impossible to tell what, if anything you've done with it.

       1) The BSD copyright was removed.  The original was, and still is
       copyrighted by UCB, since Bill donated the code.

       2) It's impossible to track changes you've made from the original

       3) After reading lots of 386BSD code, you get used to the style that is
       used, and your code stands out like a sore thumb, and a person has to
       re-learn how to read it. Pain in the BUTT

       4) I don't have a 132 column printer, or monitor.  This code is going to
       be distributed to thousands of people who also have limited resources.

       I realize this isn't released code, but I think placing some of your
       comments in a separate file would be more beneficial than placing long
       documentaries at the beginning of the file.

       Anyway, sorry for the long dissertation, but you did ask for comments.
       ====================================================
       VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV

               I wish half the people who write to me could be as honest
       and clear about what they are saying.
               Any further comments to Nate are between ourselves, but
       I have seen some of his comments as helpful and, by the time most
       of you read this, I will have already posted:

               "Kindling Material .... send flames in early"

                               Thanks for your comments,
                                       [email protected]

       ====================================================

 <N>__ NEXT ISSUE


       Dumb things not to DO.
       Smart things you should consider.