From: Eric B. <ebo...@li...> - 2001-03-21 00:05:21
|
I may look a little maniac about Win2k ;-) but some time ago Vincent and I came across the following problem: the mouse doesn't work under Win2k. There are three mouse drivers in the DOS port: - the 'mickeys' driver that uses relative position data supplied by int33h (default), - the 'int33' driver that uses absolute position data supplied by int33h, - the 'polling' driver that periodically polls (!) the mouse via int33h. The two first drivers uses a real-mode callback (RMCB) function registered through int33h, whereas the third driver doesn't. Now it's a well known fact that RMCBs are broken under Windows NT4. Therefore, if Windows NT is detected, Allegro simply refuses to use the two first drivers and switches to the third one. But Vincent found that this third driver doesn't work on his Win2k box. And as Win2k is reported as Windows NT by Allegro, we are deadlocked. But hope can sometimes come from unexpected place ;-) since the RMCB bug is fixed in Win2k; so the first driver does work under Win2k. Therefore the solution would be to use the 'mickeys' driver under Win2k and the 'polling' driver under WinNT4. Unfortunately, although the guys from comp.os.msdos.djgpp have been trying to find it for more than one year, there is currently *no* way of telling Win2k from WinNT4 in a DOS program. So we're apparently stuck. Any suggestion ? -- Eric Botcazou ebo...@mu... |
From: Eric B. <ebo...@li...> - 2001-04-13 20:04:39
Attachments:
dmouse.zip
|
Since no progress was made on the Win2k mouse bug, I think we could rely on the user to select a proper mouse driver under WinNT 3.5x/4.0 and Win2k. Here's the situation: - the mickeys driver (driver #1) crashes under WinNT and works under Win2k, - the int33h driver (driver #2) crashes under WinNT and doesn't work (but doesn't crash) under Win2k, - the polling driver (driver #3) works under WinNT and doesn't work (but doesn't crash) under Win2k. To make things as clear as possible, I'm proposing to add two specific drivers: a WinNT 3.5x/4.0 specific driver (driver #4) and a Win2k specific driver (driver #5) that are of course only wrappers for driver #3 and driver #1 respectively. The mouse driver won't never crash on any system if no driver is selected in allegro.cfg; the patch is attached. -- Eric Botcazou ebo...@mu... |
From: Eric B. <ebo...@li...> - 2001-04-30 20:48:37
|
Not many comments... The big advantage of this patch is that it doesn't modify the code. -- Eric Botcazou ebo...@mu... |
From: Laurence W. <lwi...@lw...> - 2001-03-21 00:05:54
Attachments:
signature.asc
|
In reply to Eric Botcazou <ebo...@li...>: >Therefore the solution would be to use the 'mickeys' driver under Win2k and >the 'polling' driver under WinNT4. Unfortunately, although the guys from >comp.os.msdos.djgpp have been trying to find it for more than one year, >there is currently *no* way of telling Win2k from WinNT4 in a DOS program. > >So we're apparently stuck. >Any suggestion ? Here are a couple: - examine the output of the `ver' command - look at some file which is present in both OSes but differs in=20 filesize or contents (eg. $WINDIR/win.com or some such thing). Bye for now, --=20 Laurence Withers, lwi...@lw... http://www.lwithers.demon.co.uk/ |
From: Henrik S. <hst...@pr...> - 2001-03-21 00:05:51
|
On Mon, 19 Mar 2001, Eric Botcazou wrote: > Therefore the solution would be to use the 'mickeys' driver under Win2k and > the 'polling' driver under WinNT4. Unfortunately, although the guys from > comp.os.msdos.djgpp have been trying to find it for more than one year, > there is currently *no* way of telling Win2k from WinNT4 in a DOS program. > > So we're apparently stuck. > Any suggestion ? allegro successfully detects if NT is installed by checking if the environment variable OS == "Windows_NT". Can you check what int 0x2f, ax=0x160a returns in ax, bx and cx for windows nt 4 and windows 2000? that's the only thing i can think of for the moment. this works at least on windows 3.1 and up to windows ME. for reference check ralph brown's interrupt list. there should also be a somewhat undocumented VxD call in NTKERN for returning NT kernel version. (int 0x20, vxd=0x004b) should i code a test program? -- Sincerely Henrik Stokseth. ---------------------------------------------------------------------------- "Linux is keyboard friendly. I don't smash it like I used to with Windows." Homepage: http://hstokset.n3.net E-mail: hst...@pr... |
From: Javier G. <xav...@ho...> - 2001-03-21 00:06:39
|
I would say right now there are more chances to see an allegro user using Win2K than WinNT (and in general, games). So i would go with Win2K support... My two cents > I may look a little maniac about Win2k ;-) but some time ago Vincent and I > came across the following problem: the mouse doesn't work under Win2k. > > There are three mouse drivers in the DOS port: > - the 'mickeys' driver that uses relative position data supplied by int33h > (default), > - the 'int33' driver that uses absolute position data supplied by int33h, > - the 'polling' driver that periodically polls (!) the mouse via int33h. > > The two first drivers uses a real-mode callback (RMCB) function registered > through int33h, whereas the third driver doesn't. > Now it's a well known fact that RMCBs are broken under Windows NT4. > Therefore, if Windows NT is detected, Allegro simply refuses to use the two > first drivers and switches to the third one. But Vincent found that this > third driver doesn't work on his Win2k box. And as Win2k is reported as > Windows NT by Allegro, we are deadlocked. > > But hope can sometimes come from unexpected place ;-) since the RMCB bug is > fixed in Win2k; so the first driver does work under Win2k. > > Therefore the solution would be to use the 'mickeys' driver under Win2k and > the 'polling' driver under WinNT4. Unfortunately, although the guys from > comp.os.msdos.djgpp have been trying to find it for more than one year, > there is currently *no* way of telling Win2k from WinNT4 in a DOS program. > > So we're apparently stuck. > Any suggestion ? > > -- > Eric Botcazou > ebo...@mu... > > |
From: Grzegorz A. H. <gr...@in...> - 2001-03-21 00:06:40
|
On Mon, 19 Mar 2001, Eric Botcazou wrote: > there is currently *no* way of telling Win2k from WinNT4 in a DOS program. > > So we're apparently stuck. > Any suggestion ? Maybe a force configuration option in allegro.cfg? I think that's the most reasonable for the moment, until there's some way to find out if W2k is there (maybe searching for critical files in windows directory?). Grzegorz Adam Hankiewicz gr...@in... - http://gradha.infierno.org Other web pages: http://glub.ehu.es/ - http://welcome.to/gogosoftware/ |
From: Chris J. <do...@bi...> - 2001-03-21 00:06:49
|
> Unfortunately, although the guys from comp.os.msdos.djgpp have been > trying to find it for more than one year, there is currently *no* way of > telling Win2k from WinNT4 in a DOS program. How about detecting for the presence of the LFN API, which Win2k supports but NT4 doesn't? |
From: Eric B. <ebo...@li...> - 2001-03-21 22:42:12
|
Henrik wrote: > allegro successfully detects if NT is installed by checking if the > environment variable OS == "Windows_NT". Can you check what int 0x2f, > ax=0x160a returns in ax, bx and cx for windows nt 4 and windows 2000? > that's the only thing i can think of for the moment. this works at least > on windows 3.1 and up to windows ME. for reference check ralph brown's > interrupt list. Eli Zaretskii told me the guys from comp.os.msdos.djgpp had already tried all the known methods and the results are strictly the same under WinNT4 and Win2k. With Vincent we checked that Win2k returns 0x532 (v5.5) for _get_dos_version(1) and "Windows_NT" for getenv("OS"). I also tried some trickery with int33h itself, but in vain. > there should also be a somewhat undocumented VxD call in NTKERN for > returning NT kernel version. (int 0x20, vxd=0x004b) > > should i code a test program? Please do and send it (in compiled form) to Vincent. Laurence wrote: > Here are a couple: > > - examine the output of the `ver' command Same result: v5.5 for both. > - look at some file which is present in both OSes but differs in > filesize or contents (eg. $WINDIR/win.com or some such thing). Is this really reliable ? You will have to take care of various Win2k versions, localized versions, service packs... Grzegorz wrote: > Maybe a force configuration option in allegro.cfg? I think that's the most > reasonable for the moment, until there's some way to find out if W2k is > there (maybe searching for critical files in windows directory?). I don't see any other solution. Javier wrote: > I would say right now there are more chances to see an allegro user using > Win2K than WinNT (and in general, games). So i would go with Win2K > support... Same story as with DirectX 3 vs DirectX 5: should we drop WinNT4 support ? Chris Jones: > How about detecting for the presence of the LFN API, which Win2k supports > but NT4 doesn't? Are you sure ? I would say that the djgpp guys have already tried the LFN approach, but could you code something though ? -- Eric Botcazou ebo...@mu... |