[comp.unix.xenix] COM3 Under Xenix

adtaiwo@athena.mit.edu (Ademola Taiwo) (12/18/89)

Hi netters,
	Sometime in the not too distant past, someone posted some instructions
on how to make xenix recognise com[34] on startup. I now have a need for this
patch, if anyone knows how to acheive this feat, or saved the initial posting
please e-mail me. Thank you.

coertvnk@neabbs.UUCP (COERT VONK) (12/19/89)

Dear Ademola Taiwo :

I can not supply you with that specific copy, but this is what I have
on that subject (I don't know the name of the original author) :


                         How to add comm3 and comm4

                                    under

                                  SCO Xenix



                                 Coert Vonk

                              October 22, 1989


The basement of the following text was extracted from a usenet message
in comp.unix.xenix.  It describes how to add additional IBM-Standard
COMM PORTS as comm3 and comm4 under SCO Xenix.


1.  what do we have?
~~~~~~~~~~~~~~~~~~~~

      IBM-Standard COMM PORTS may be characterized as:

                name        base        irq 
                           address
                ---------------------------
                comm1       0x3f8        4
                comm2       0x2f8        3
                comm3       0x3e8        5
                comm4       0x2e8        2
        
      If you think this looks to organized I can set you at ease.  At
      the time IBM released his PC-XT/AT machines, only comm1 and
      comm2 were defined.  Pushed by the demand of the market clone
      manufactures developed two other sio ports.  Due to the lack of
      concerted attention there exist almost more characteristics for
      these ports than manufactures.

      With the release of PS/2 machines IBM set the standard for the
      comm3 and comm4 ports as represented above.  Although all kinds
      of sio ports may be added, I focus to the standard address and
      irq of comm3.  By the way if you intend to your another irq,
      you could check if it's is currently in by the
      /usr/sys/conf/vectorsinuse command (or read the master file
      yourself, more about this later).
      

2.  edit sioconf.c
~~~~~~~~~~~~~~~~~~
      
      Add new a descriptor to /usr/sys/io/sioconf.c using an ordinary
      text editor (i.e.  vi,lyrix).  It should have the format as
      descripted in /usr/sys/io/sioconf.h :

           int b_num;     /* board number */
           int b_type;    /* each manufacturer gets a different one */
           int b_pcnt;    /* port count on the board */
           int b_vec;     /* interrupt vector */
           int b_dev;     /* minor dev base */
           sd  b_addr;    /* base address of board */
           int b_poll;    /* interrupt poll addr */
           int b_inc;     /* increment (spacing) of io ports on board */
           int b_outbits; /* value for OUT1/OUT2 bits in MCR */

      Doing so we get:
           {2,IBM_BOARD, 1,5,4,  (sd)0x3e8,0,  0,MCRBIT3},  /*ibm COM3*/

      Some remarks on this:
         -- the next available IBM_BOARD board number is 2 (3 for comm4)
         -- I use irq5 for the board (irq2 for comm4)
         -- the minor device base is 4 (could be 12 for comm4)
         -- the base address is 0x3e8 (0x2e8 for comm4)


3.  edited master
~~~~~~~~~~~~~~~~~
      
      The /usr/sys/conf/master file contains information about
      different devices including interrupt vectors used.  Serial
      (marked sio) devices used originally irqs 3,4,33 and 34.  The
      irq33 and irq34 were originally placed in the table because
      Xenix got confused by the comm3 or comm4 port, and took it for
      a 4-port.

             vec.cnt                              irqA irqB irqC irqD
         -------------------------------------------------------------
         sio    4    0577 104 sio 0  0  5  1  7     3   4    33   34
         pa     2    0133 004 pa  0  0  6  1  2     5   7    0    0

      When we correct this recognition problem we get:
         
         sio    2    0577 104 sio 0  0  5  1  7     3   4    0    0
         pa     2    0133 004 pa  0  0  6  1  2     5   7    0    0

      If we want to use irq5 for comm3, we have to steal if from
      parallel adapter.  This brings the vector count for pa down to
      1.
             
         sio    2    0577 104 sio 0  0  5  1  7     3   4    0    0
         pa     1    0133 004 pa  0  0  6  1  2     7   0    0    0
      
      By now it is time to introduce my new comm port.  Filling in
      it's irq vector of 5, increments the sio vector count by one.
      Yielding in:

         sio    3    0577 104 sio 0  0  5  1  7     3   4    5    0
         pa     1    0133 004 pa  0  0  6  1  2     7   0    0    0
      
      I think now the time has come to make the machine contribute
      his/her part ...


4.  make
~~~~~~~~
      
      I recompiled all modified sources with make (yes, you need
      development system to do this) and copied the just linked new
      kernel to the root directory (/xenix.comm3).


5.  reboot
~~~~~~~~~~

      I rebooted my system and to the boot-prompt I entered
      xenix.comm3 (name of the new untested kernel).  Everything
      worked fine, comm1, comm2, and comm3 were found.



Help save the world!  Communicate any problems and suggestions to me,
mcsun!hp4nl!neabbs!coertvnk (Coert Vonk).


____
By the way, I am interested in an internship at an American University.  Any
ideas ..., please e-mail them. 

    ____
   /                       / Uucp address:                Mailing address:
  /      ___   __   __  __/   mcsun!hp4nl!neabbs!coertvnk Eikstraat 17
 /      /  /  /_/  /    /    Telephone:                   4621 JL Bergen op Zoom
/___   /__/  /__  /    /__    + 31 1640 42366             The Netherlands