Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
01/16/07 19:06
Read: times


 
#130917 - ...and the reason is ...
Responding to: ???'s previous message
Richard Erlacher said:
Windows will not. In order to extract useful function, at the hardware level, from your PC, you have to have special drivers, which, unless they're correctly written, and most aren't, won't do what you expect.

The only way to get proper function out of your EPP-capable parallel port is to write a proper driver and run it under MS-DOS. Windows 9x will trip you up. Later Windows will stop you cold.

Useful and PC are potentially compatible. Useful, PC, and Windows, are not.


Jeez, Windows bashing. Shooting fish in a barrel.

The real reason NT-based Windows (incl. 2000, XP, Vista) specifically disallow direct hardware access is because with it's a multitasking operating system, and as such, there's a real possibility that more than one task may wish to access the hardware at the same time.

If this was allowed, then the result is undefined. It could be as benign as a program reading the wrong data, or as catastrophic as the machine crashing.

So the solution is (and this is not a Windows innovation; it's true for every multitasking operating system) to abstract the hardware. The application always talks to hardware through a driver. If another application is using the hardware, the port access is disallowed by the driver in a graceful manner. Another benefit here is that to access any and all devices belonging to a common class (for example, serial ports, or audio devices, or network cards, or whatever), your application talks to the driver using a standard set of API calls. The beauty of this is that the application can talk to a peripheral made by any vendor. And it can be extended further: your application doesn't have to know that the serial port isn't a "real" serial port but instead is a USB device. Audio applications talk to audio devices over the same API, whether the device itself is a PCI card, an ISA card, a USB or FireWire device.

And here's the really screwed up thing regarding RS-232 serial ports: the standard API used to talk to serial ports has existed, basically unchanged, in Windows since the beginning. Certainly it was in Windows 3.1, because I used it. If the very old software (that people still want to use??) had been written to use that API instead of the inport() and outport() BIOS pokes and peeks, the software would still be usable today. Sure, there was a learning curve associated with learning to write Windows code, but back then the Borland tools were pretty good and it wasn't difficult for this hardware guy to get a simple serial-interface program up and running. OK, not as simple as command-line DOS, but I'd argue more useful (which was true for my applications).

ANYWAYS: if you insist on using programs that do direct hardware access on a PC, boot the thing into DOS and bypass all Windows stuff entirely. As far as I know, there's nothing preventing that (although I've no idea if modern BIOSes even support the old BIOS calls).

-a

List of 25 messages in thread
TopicAuthorDate
doubt about ports            01/01/70 00:00      
   and one more doubt            01/01/70 00:00      
   Programming the PC            01/01/70 00:00      
   Off Topic            01/01/70 00:00      
      Wrong forum            01/01/70 00:00      
   Win ports            01/01/70 00:00      
      Bad practice...            01/01/70 00:00      
         Bad practice            01/01/70 00:00      
            some thoughts            01/01/70 00:00      
   Do not hard-code adresses!            01/01/70 00:00      
   You need to tell us more ...            01/01/70 00:00      
      MS-DOS            01/01/70 00:00      
         why?            01/01/70 00:00      
            Misunderstanding ?            01/01/70 00:00      
               Not quite so            01/01/70 00:00      
               a parallel in '51            01/01/70 00:00      
            Sharing            01/01/70 00:00      
         OK, the sad facts            01/01/70 00:00      
         MS-DOS will allow and do anything the PC can do            01/01/70 00:00      
            ...and the reason is ...            01/01/70 00:00      
               If Windows were truly multi-user/multitasking ...            01/01/70 00:00      
                  it's broken            01/01/70 00:00      
               So much for the "Good Old Days"            01/01/70 00:00      
                  Yes, and the ones that worked, worked really well            01/01/70 00:00      
                     The Right one            01/01/70 00:00      

Back to Subject List