Path: utzoo!mnetor!motto!ecijmm!ecicrl!clewis From: clewis@ecicrl.UUCP Newsgroups: comp.unix.xenix Subject: Re: Xenix VP/IX serial driver support -- what is needed? Message-ID: <225@ecicrl.UUCP> Date: 1 Apr 89 02:20:36 GMT References: <3200@ddsw1.MCS.COM> Reply-To: clewis@ecicrl.UUCP (Chris Lewis) Organization: Elegant Communications Inc. (CRL Division) Lines: 55 In article <3200@ddsw1.MCS.COM> karl@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)