Xenix VP/IX serial driver support -- what is needed?

clewis at ecicrl.UUCP clewis at ecicrl.UUCP
Sat Apr 1 12:20:36 AEST 1989


In article <3200 at ddsw1.MCS.COM> karl at ddsw1.MCS.COM (Karl Denninger) writes:
>We've got a small problem.  There's this serial driver that we have for
>Xenix & 386/ix.  The problem is that we need to handle VP/IX sessions on it,
>and currently it won't work - - complains about not being able to set the
>mode it wants, and then it's boom-boom time.
>
>Obviously since we're coming from a terminal we can't generate scan codes
>(they don't exist!).  How do we kludge things in such that it will work,
>even if only in "stupid" mode.

DOSMODE has nothing to do whatsoever with scan-code-mode on the terminal.
Support of scancode and nonscancode mode terminals is *entirely* within 
VP/IX (eg: /usr/vpix/term/wyse60, /usr/vpix/term/vt100 etc.) and has nothing to
do with the serial driver.  The VP/IX administrator's guide describes how
to support non-scancode terminals on serial lines.

VP/IX support requires that the device driver supports quite a number
of extra ioctl's over and above the normal termio.h stuff.  Eg: stuff
in asy.h and v86.h and a few other headers.  In brief, VP/IX needs to
set DOSMODE on or off - which is an driver flag which enables/disables
various driver functionality, including:

    - allow device driver activity to appear as virtual interrupts
      to the emulated DOS environment.
    - implementation of a pseudo "raw" input mechanism.
    - whenever a DOS program attempts to read/write a virtual COMM port
      register, VP/IX catches it and turns it into a ioctl, which
      it hands to the driver.  The driver then must attempt to
      simulate what is actually an 8251 register peek or poke on
      whatever hardware you may have (eg: dual-ported intelligent
      serial I/O card which uses entirely different chips).

      Eg: it must be able to convert a write to the *virtual* 8251 
      baud register into the appropriate commands on the *real* hardware.
    - change start/stop characters and understand their behaviour.

Read the manual pages on asy, v86, VP/IX references and whatever else 
you can find.  Except for the 8251 emulation (which many DOS programs 
don't need), it's only about 15 lines.  But as far as I can tell, nobody's
ever published examples.  And the code *is* tricky.  I implemented VP/IX 
functionality into a smart card driver (about the time Computone first got 
theirs working), but I needed help.  We did get it working.  Even though
our board never went into production, I couldn't publish the source even 
if I still had it.

The ISC VP/IX documentation is reasonably complete regarding the
routines and parameters required for doing this, but sadly lacking
in any description of why or how they should be used.
[Sort of like telling you how to turn a steering wheel, without telling
you why you'd ever want to]
-- 
Chris Lewis, Markham, Ontario, Canada
{uunet!attcan,utgpu,yunexus,utzoo}!lsuc!ecicrl!clewis
Ferret Mailing list: ...!lsuc!gate!eci386!ferret-request
(or lsuc!gate!eci386!clewis or lsuc!clewis)



More information about the Comp.unix.xenix mailing list