Ray Gwinn's story about the SIO-driver

From OS2World.com Wiki
Jump to: navigation, search

By Kim Haverblad - 11/30/2000

Next interview presented in the column "Developers around the World" is with Raymond Gwinn - the author of SIO drivers. The replacement drivers for IBMs com port drivers. Many along with me has been wondering what has happened with Raymond. After over two years of silence we suddenly got the message that there will be a new version of the so well known SIO drivers released. Current there is a beta version of the new SIO 2000 available for download from Raymonds home page. Question to be asked also is if there still is a need for the SIO drivers? Raymond gives us some great and educational answers for this in this interview.

Q: Where are You located (city and country)?

A: I live in Beckley, a small town in southern West Virginia, in the United States of America.

Q: What is Your occupation/profession?

A: I am semi-retired. I owned and operated a successful company that manufactured and sold data communications equipment for IBM mainframes. The business was sold in 1995.

Q: What is Your family status?

A: I have been happily married for 36 years (I have the feeling you are now realizing I am a older than you thought). We have two adult daughters.

Q: Describe Yourself in couple sentence for the readers?

A: This is a tough question for me, but I will try. I have two occupational loves that are more like hobbies; computer technology and Land Surveying. I am licensed as a Professional Surveyor. I spend most of my time working on computers in one form or another. When I need a break from computers, I will do some property surveys. I spend some time helping a local College with their computer networks in return for a T1 connection to the internet. I rarely take vacations as the work I do seems like a constant vacation. I have an extra class ham radio license (AA4VA), but I am very rarely on the air.

When I get the programming fever, I work at it 12 to 15 hours a day, and dare my wife to speak to me, (kidding here about the wife).

Q: How long have you been using OS/2 and what version are You current using?

A: I cannot remember the year, but it was in the mid 1980s. I had and used the first OS/2 beta. I still have copies of OS/2 versions 1.0 and 1.1; I seem to have lost my copy of 1.2. I am not sure if I ever had 1.3 or not. BTW, I also have a copy of DOS 1.1 in its original shrink wrap box. However, I did not start using OS/2 as my primary operating system until version 2.0. OS/2 2.0 was a true revolution in computer operating systems. Remember, if there had not been an OS/2 2.0, we would all probably be using Windows at about version 3.3 by now.

Raymonds Developing Area!

I have 5 systems with OS/2 installed. Four systems have Warp 4, at FP14 and DD02. One of the 4 systems has two versions of OS/2 installed, Warp 4 and WSeB/SMP. The fifth system has Warp Connect (V3.0) installed on it, but I do not remember the fixpak level of that system.

Raymonds maze!

Q: Was this also the first operating system that You started to develop for?

A: When I did my first computer programming development, there was no such thing as an operating system. A programmer plugged wires into a board, and inserted the board into the proper slot of the computer and hit the start button. This was an early second generation computer (solid state, ie no tubes).

Raymonds Developing Area!

Just in case you need a history lesson, and very simply stated the three computer generations were originally defined like this. First generation computers used tubes. Second generation computers were totally solid state; that is no tubes at all, some second generation computers stored programs internally, and some did not. Third generation computers introduced interrupts; that is the computer did not come to a stop when I/O occurred and the programs were always stored internally, loaded from cards, disk, tape etc.

My first experience with programming a computer where the program was internally stored (third generation) was the IBM 1130, in 1965. Although there was a minimal operating system, I do not remember it having a name. The 1130's OS had two programming languages, ForTran and Assembler. Shortly thereafter I did some programming on a 360/30 and 360/50, both using DOS, yes DOS. However, this DOS was not even remotely similar to the DOS used on PCs.

Raymonds Developing Area!

Most of my early programming was on an IBM 1800, using an operating system called MPX (multi-programming executive) in about 1968. My first intensive experience with serial communications was on this system. I do not think that UARTs had been invented yet. I know that none of the IBM mainframes that I worked on were equipped with such devices. Anyhow, the IBM 1800 had 16 bits of analog input and 16 bits of analog output. In plain english, there were 32 connectors that one could connect wires to. From software one could detect the presents and absents of a voltage level on the analog inputs, and set or reset a voltage level on the analog outputs. I wrote software using the 1800's analog I/O that was the equivalent of 16 serial ports, sending and receiving data one bit at a time at the blazing speed of 110 bits per second.

Q: Was SIO the first "application" that You manage to get out on the OS/2 "market"?

A: Yes, SIO was my first product for OS/2. A successor, SIO2K, will probably be my only other product for OS/2. To possibly correct your question slightly, I do not think my products are application programs, but I guess they are applications (without the word program attached). To me, application programs are programs like ZOC, WordPerfect, and NetScape Communicator; that is, programs that interface directly with users. Device drivers are not really application programs in my terminology as they primarily interface with the computer and application programs. Some of my supporting programs like PMLM would qualify an application program in my terminology. The reason I make the distinction is that I do not consider myself to be a good applications programmer; that is, writing programs that interface with users. However, I feel I am good at writing software that interfaces the other software and the computer hardware.

Q: For readers that has not used SIO before - What is SIO and why should You use it?

A: When OS/2 2.0 was first released, the serial drivers COM.SYS and VCOM.SYS were, in my opinion, in very sad shape. IBM had restricted the speed to 9600 bits per second (bps), and the drivers did not seem to work well at any speed. Even at this time, there were modems available for 14400bps, and I did not like losing those 5kbps using only 9600bps.

I had previously written serial device drivers for DOS that were, and still are, used in the FidoNet community. With IBM seeming not too willing (or possibly not able for whatever reason) to improve the OS/2 serial drivers, I decided to write a set of serial drivers for my own use. To keep the answer short, the drivers ended up being direct replacements for COM and VCOM with some different default settings and several enhancements. I decided to release the drivers as shareware to help pay for my computers and equipment that I just had to have (boy's toys).

My drivers seemed to be more stable than the IBM drivers of the time. Even IBM support advised users to try the SIO drivers if they were having problems in that area. DOS and Windows application that would not work with the IBM drivers, worked with SIO. The SIO drivers also offered several enhancements over the IBM drivers of the time. Bit rates to 115200 (and up) were allowed. I do not think IBM realized how much people were using null modem cables to transfer information from computer to computer, and the difference between 9600bps and 115200bps is a big difference. One could also use their 14400bps modem at full speed.

Development tools like PMLM were added to the SIO driver set. PMLM is a program that allows one to see every character that is sent and received, and to store the information disk for later examination. I would bet that the developer of every serial application for OS/2 2.0 can tell one exactly what PMLM is. PMLM was/is also an insurance policy. It is a very useful development tool, and I felt that almost all developers of serial programs for OS/2 would use PMLM. Since the developers would have to use SIO to use PMLM, it insured that the developed application programs would work with SIO.

Q: Is there still any need for SIO, hasn't IBM made any improvement to com.sys?

A: Yes to both questions.

As far as they go, and as far as I know, the IBM drivers are both reliable and improved to the point that they meet the needs of most users. They especially meet the needs of average and new computer users. Most users only use their serial ports for modem connections. So long as the IBM drivers can exceed the maximum speed of the users modem and are stable, the IBM drivers are all the user needs.

There are still limitations in the IBM drivers. Looking at source code of COM/VCOM in the DDK, I feel their code is not as efficient as the code in either set of SIO drivers. If I am correct, this means the SIO drivers use less processor time to achieve the same task. As computer speed advances, this is more of an artistic advantage than a practical one.

Starting from here, when I say the SIO drivers, I mix into the discussion features of the SIO2K drivers that can be obtained from [www.gwinn.com].

The IBM drivers have no support for PCI serial cards, which seems to be the only serial cards being manufactured now. This means that on modern computers the IBM drivers only support the serial devices on the motherboard, and/or on older ISA cards that the user has. Even then, the IBM drivers do not support the enhanced features (speed and FIFO size) of the UARTs that are on the motherboard. The motherboard UARTs are almost always components on a single chip called a SuperIO chip. Currently the enhanced features of the SMC SuperIO, devices used on many desktops, are supported by the SIO drivers. The same is true for the enhanced features of the National Semiconductor SuperIO, used on many notebooks. I plan to add support for other SuperIO devices.

The most advanced device UART that the IBM drivers support is the 16550. The SIO drivers support device with larger FIFOs and speeds. The use of the larger FIFOs can reduce the interrupt load on the processor by several factors.

Beyond the UARTs supported by the IBM drivers, the SIO drivers supports the 16650, 16750, 16850, and 16950 UARTs. My favorite of these devices is the Oxford Semiconductor 16950 in its various forms. The 16650, at least, should be the standard used on newly manufactured PCs. All of these devices provide on chip flow control. This eliminates overflow problems on receive, no matter how busy the computer is. As side comment, I do not care for the 16750. In my opinion, the 16750 is inferior to the 16650, 16850, and 16950.

The SIO driver automatically probe the FIFO size on a UART. Knowing the UART type does not mean the FIFO size is known. Some 16550s have FIFOs larger than 16 bytes. Some flavors of the 16650 has 32 byte FIFOs, while other 16650s have 64 byte FIFOs. The 16950 has 128 byte FIFOs The IBM drivers always assume a FIFOed device has a FIFO size of 16 bytes. This assumption is a performance hit.

The SIO drivers automatically probe the frequency of the crystal oscillator that is driving the UART. That is, the maximum bit rate of the serial port is automatically determined. Most UARTs are capable of speeds exceeding 921600bps. However, their maximum speed is often limited by the frequency of the crystal oscillator providing the clock to the UART. On the original PC, a crystal frequency was selected that set a maximum speed of 115200bps. The IBM drivers assume this is always the case, that is, the maximum speed of any serial port is always 115200bps. If one is using a board with a 4x crystal (4 times the normal crystal frequency), then one must fake out the IBM drivers to obtain a given bit rate. For example if a board has a 4x crystal, one must tell the IBM drivers to set a bit rate of 28800bps to ACTUALLY obtain a bit rate of 115200. Note that 28800 is one fourth of 115200. Crystal frequencies of 4x, 8x, and 12x are common on modern PCI cards. With the SIO drivers, if one asks for 11500bps, they get 115200bps. This is not necessarly so with the IBM drivers.

On FIFOed devices, the SIO drivers use block input and output instructions. That means multiple characters are sent or received from the hardware using a single computer instruction. The IBM drivers always send and receive the characters one byte at a time. Said another way, the SIO drivers can fill the 16 byte FIFO of a standard 16550 in a single computer instruction. The IBM drivers will execute a loop 16 times; possibly executing hundreds of instructions to achieve the same task.

I believe the difference between the IBM drivers and the SIO drivers can be summarized as being much the same as the difference between the family sedan and a highly tuned sports car with evey gizmo one can imagine. This is how I view the SIO drivers.

Q: Regarding SIO as a product, is that connected to any company or is it still developed as an individual software?

A: Yes, there is an officially incorporated company named Electronic Data Communications Corporation, and correctly registered as "Trading As" The Software Division. However, the corporation is made up of my wife and I, and it operates out of our home. I am the only developer.

Q: What is the future plans regarding developing for OS2?

A: I hope to get the SIO2K set drivers released soon. The current beta is actually releasable, or very near so. The biggest problem now is setting up and modernizing the distribution, web servers and the like.

Then I have to go to work on the supporting applications for the SIO2K driver set to match those in the original SIO drivers, like PMLM.

The keen observer will notice the structure of the SIO2K drivers is completely different from that of the first version of the SIO drivers and the IBM drivers. SIO2K.SYS is really an interface with application programs, but does no actual I/O. Supporting, or server/serving drivers (like UART.SYS) are actually interfacing with the hardware. The interface between SIO2K.SYS and the server/serving drivers is a standardized C callable interface.

I plan on publishing the interface specification, possibly in the form of a developers kit. This will allow others to develop drivers and applications like Vmodem, without the really tough job of the application interface that SIO2K.SYS and VSIO2K.SYS perform. A natural for this interface is a driver supporting USB modems and serial devices. Yes, IBM provides USB modem drivers, but can you access the USB devices from a DOS or Windows application? A USB driver using the SIO2K interface will be accessible by DOS and Windows sessions.

Q: Is OS/2 the only operating system that You developing for?

A: OS/2 is the only system that I develop software for distribution. I have several Linux servers for which I regularly develop supporting software for a local college and myself.

I have considered developing a set of serial drivers for Windows, but I immediately bump into that huge learning curve. So far, that learning curve has stopped me. I am also concerned what MicroSoft's reaction would be to a sophisticated set of serial drivers. My opinion is that MicroSoft does not like software that replaces their standard Windows software, and could possibly turn loose their dogs.

Q: What do you think are the most important factors for an OS2 software to have commercial success?

A: I can only provide advice for the small developers distributing their products as shareware. Obviously, the product(s) must provide some useful purpose. Then become active in the electronic conservation areas, like news groups, chat rooms, CompuServe Forums, AOL discussion groups. Offer polite assistance to others on subjects that you know about, even if the subject is not directly related to the product you are selling. Each time you see a message where your product may be of use, insert a polite, low key, response telling the user to "take a look at -------", and "you can get a copy at www.xyx.com".

When writing electronic messages, use the words "may" and "could" instead of "will" and "should". For example, "you could try this" instead of "you should try this", and "this may help" instead of "this will help". Admit your mistakes openly, do not try to "keep face" by ONLY explaining away a mistake or poorly written message.

It is an absolute MUST, that users can try the product at no cost. I personally never disable the product after a period of time. That is, a shareware version is always fully functional. Annoying messages is the best procedure to get shareware registered. Disabling your product after a period of time almost always angers the user and may result in the product being deleted. Annoying messages are just that; annoying. As long as the user knows the product will continue to work, they will probably not delete it, and eventually purchase the product to get rid of the annoying messages. In the first version of my drivers, the annoying messages appeared for the first 5 days of the every other month. I assumed the first few days of the month is when the user would most likely have some disposable funds.

When talking about your product, NEVER say things about a competitor's product like it's junk or worthless. Simply point out how your product is different, and or better. If you make a claim of superiority, you should provide a detailed experiment the user can perform for themselves. If you are in a public debate with a competitor, they may deny your experiment shows superiority, but lurkers will run the experiment also, and the competitor will lose credibility if the competitor's denials are spin control.

Q: How do you look to the market for OS2 application, would it survive without the Windows market?

A: Perhaps I am naive, but I think the applications available for OS/2 would explode if there was no Windows Market.

I read once that J. P. Morgan was asked how he made his fortune. His answer was "I did what everyone else was not doing." I understand this quote to mean that one's best chance for commercial success is to seek a niche with minimal completion and expand from there.

OS/2 is not THE major operating system, but I believe there are more users out there than even IBM admits to. And those users are absolutely starving for applications. I believe the major software publishers are missing profits by ignoring the OS/2 market.

I believe the small companies and developers have a much better chance of success in the OS/2 market than in the Windows market (what everyone else is doing).

The Windows market is a BIG bucks market. There are thousands of Windows software publishers watching and waiting for a good idea for a new application. Of those thousands some have really smart programmers that can duplicate and improve upon an application quickly. Of those with really smart programmers, there are some with unimaginable marketing funds available. So, a small company, or individual has practically no chance in the Windows market. There are, of course exceptions, but they are rare. Some people win the Lottery too, but its just not you.

If your Product is truly revolutionary or evolutionary, the Evil Empire may step in and turn loose their dogs and/or lawyers, and you are dead in no time. Look at Borland, QuarterDeck, NetScape, and even OS/2.

Of those thousands watching and waiting in the Windows market, most do not even know that OS/2 exists. The OS/2 environment is the perfect place for small companies to introduce new products, ideas and applications. Small companies and individuals are where real innovation takes place; large companies are good at turning good apps into bloat ware. Small companies should have time to mature their products, distribution and support in the OS/2 marketplace. Then, after maturing the product in the OS/2 environment, move into the Windows market with a mature product that is very difficult for others to compete with. Even if the new product/idea is cloned by someone in the Windows market, the small developer will likely make as much money in OS/2 sales as they would have if they had released into the Windows market first.

Q: Piracy.... I guess that You also have had problem mentioned topic. Has it had any impact for You when developing for OS/2?

A: Yes, piracy has had a very large impact on my development for OS/2. Had it not been for piracy, the SIO2K drivers would probably have been released about two years ago.

Sometime in 1997 (I think) a program was released that would turn shareware versions of SIO into registered ones. Within a matter of weeks, registrations and orders for SIO came to an absolute standstill.

I could have easily circumvented the problem, but I felt betrayed both by those that distributed openly the piracy program, and the programmer that released the program. The SIO drivers had been in release for about 6 years. I continued to improve them and make new releases, and never asked users for an upgrade fee. Then this piracy program takes away even the one time fee that I had asked for. I was heavily into developing SIO2K at the time and after a few weeks or possibly months, I simply quit development, and almost completely stopped any effort to support SIO. I guess I was blaming the world for the actions of a single individual. My feelings were, well you have it, but that is all you are going to get from me.

I completely dropped out for almost two years. Then one day a few months ago, I had nothing to do and looked at code of the SIO2K drivers. To be somewhat immodest, I was impressed and decided I really should finish the drivers, even it they get stolen also.

Being a good assembly language programmer, I know that any software protection scheme can be circumvented or cracked. But only an immature show off will publicly release a program like this for others to use.

Q: Is there any other software that You develop that we are not aware of?

A: Possibly. As I mentioned above, I developed and released the FOSSIL drivers X00 for use on DOS systems. X00 is also serial device drivers. They were extremely popular (and free) in the 1980's. The X00 drivers are still in use today, because I still get support questions from time to time. They may be very dated by now as I have done nothing to the code in about 10 years.

Q: Which of the applications do You feel most for?

A: The SIO drivers for OS/2.

Q: What system You're using for Your development?

A: OS/2 primarily, and Linux.

Q: What tools and utilities are You using during Your daily work?

A: Here I will date myself also. My development file system is organized around PVCS (PolyTron Version Control System), vintage about 1990.

My major programming language is assembler and I use MASM 6.00B, the last version of MASM to work on OS/2 in native mode. I have and use from time to time, Microsoft C V6.00 (I think), also the last to work OS/2 in native mode. I also have Borland C for OS/2 which I also use from time to time. I do not use the IDE; I am a command line and makefile programmer. I use the linker from the OS/2 DDK.

I still use the text editor Brief, the original from UnderWare. I have sincerely tried other text editors and used them for months, but they fall short in my environment. In my opinion, Brief is the best text editor ever written. Borland purchased Brief, and seems to have only purchased Brief to let it die. OS/2 is the only system that Brief continues to function on. When not on OS/2, I use SlickEdit which to me is a bloat ware version of Brief, with some important features missing.

Many people are surprised and in disbelief that I very rarely use a debugger. When I do use a debugger, I am usually working on an app in C or C++. I have never used the OS/2 kernel debugger.

The reason I rarely use debuggers is that when I first learned to program, debuggers had not even been dreamed of, and I learned very effective debugging techniques that I still use. In today's world, my debugging techniques are far too complicated and time consuming for new programmers to learn, and I would not recommend my debugging techniques to anyone.

Q: Any new project in pipeline?

A: I have thoughts or plans of a turnkey system that will allow an ISP to service a thousand, and possibly more, users from a single OS/2 system, and at costs much less than the costs of today.

Q: Any drivers to non supported hardware for OS/2 that You are missing that You would like to see for OS/2?

A: I would like to see OS/2 plug and play support at the same level of sophistication as that of Windows 98. Really, an OS supported, standard way of installing device drivers and related software. I suspect there would be many more drivers available for OS/2 if there was a standardized, OS supported, method of installing drivers on OS/2. As it is now, each company has to come up with an install program, method, and instructions. Then they have to test all this on OS/2. With Windows 98, they make up a text file, and place the drivers in appropriate directories on a diskette or CD. Most of the work is then done by Windows.

Q: What is Your favorite OS/2 software?

A: ZOC and NetScape

Q: What application will you like to be made/ported for OS/2?

A: Adobe PhotoShop

Q: Did You attend to Warpstock in US this Year?

A: No, I think I was still hiding at the time, or just coming out of hiding. I may attend next year.

Q: Anyone in the OS2 community You think should get mentioned for excellent work?

A: Yes, the employees of IBM who worked so hard on OS/2, only to be abandoned by their own company. In particular and in the order I came to know them, Doug Azzatito, Scott Garfinkle, and Sam Detwiler. I do not know if these people still work at IBM or not.

Q: Any others comments regarding the OS/2 community?

A: Well here is a little something that I only learned of a few weeks ago, and I see little mention of. It's possible that this is old news to everyone else. It seems IBM has licensed OS/2 to another company.

As I read what little I can find, the "new" operating system will be called eComStation (a really dumb name, I think) and the first release is due out in the next few months. I have seen comments that a beta is now out, but I could not find it.

From what little I can find, it seems the OS is at its heart WSeB and will be sold in a client and server arrangement. From what I can gather, and I could easily be wrong, the client is WSeB single processor, and the server is WSeB/SMP. They seem to also avoid using the name OS/2 as much as possible. Its possible this is forced on them by their contract with IBM.

If these people are better at handling an OS than they are in selecting a name, there may be some new life in the OS/2 community. The URLs to look at are [www.touchvoicecorp.com/eComStation.htm] and [www.egroups.com/messages/eComStation].

Q: And the final question: What is one of the first thing You do when You get up in the morning (checking mail, read the news paper etc.)?

A: Well the first thing is always a cup of coffee and a cigarette (old habits die hard). After that the routine varies somewhat depending on what I was doing the day before. If I was programming, and went to bed in the middle of coding something, I will immediately continue coding until I reach a good stopping point. I usually take a walk through my computer lab to make sure nothing fried overnight. I then check the logs of servers to see what the hackers are up to, and if they have done damage that needs looking after I will start on that.

Raymond himself!

An email check usually comes after that. I may answer the email then, or put it off until the evening. From there, I proceed with whatever I have planed for the rest of the day. Currently, it is programming that I am doing for the remainder of the day.

And here the interview comes to the end and I would like to thanks Raymond for his effort of doing this interview. I also want to thank him for the provided photos. For more information regarding SIO drivers, check out Raymonds home page at [www.gwinn.com].