Did Windows 1.04 support VGA resolution (640x480)?

Discuss MS-DOS, Windows 1, 2 and 3.
Raiker
Posts: 419
Joined: Tue Aug 28, 2007 11:18 pm
Contact:

Did Windows 1.04 support VGA resolution (640x480)?

Post by Raiker »

As I understand, although 1.04 supported PS/2:
The 1.04 release of Microsoft Windows now supports the IBM
Personal System/2 family of equipment.
it didn't support VGA's native mode and worked en EGA-compatible mode. For example, there is no VGA choiсe in 1.04 installation. However I remember there was an screenshot in the web where 1.04 was running in 640x480 resolution. How is it possible?
Quod licet Jovi, non licet bovi

z180
Donator
Posts: 982
Joined: Sat Aug 21, 2010 5:10 pm
Location: In front of my Toughbook

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by z180 »

Perhaps it only activated if you choose PS/2 as machine during installation.
You can also try to copy a driver from 2.03 to your setup files.
Stephen Elop….I curse you, that after your death your soul will be forever trapped in the sourcecode of Windows and one day Microsoft will fall because of that virus code!

Rob Jansen
User avatar
Donator
Posts: 5271
Joined: Sat May 12, 2007 1:05 pm
Location: The Collection Book
Contact:

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by Rob Jansen »

@z180:
You can try, but I think it doesn't work, it works for the mouse driver, but during setup you must select the Videocard you have, in the 2.03 setup and higher there is an VGA option, while during the 1.x setup it doesn't say VGA.

yksoft1
User avatar
Posts: 750
Joined: Thu Nov 26, 2009 7:14 am

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by yksoft1 »

Rob Jansen wrote:@z180:
You can try, but I think it doesn't work, it works for the mouse driver, but during setup you must select the Videocard you have, in the 2.03 setup and higher there is an VGA option, while during the 1.x setup it doesn't say VGA.
I replaced egahires.drv, however the system won't boot with it.
Offtopic Comment
I booted Windows 3.0 (real mode) with Windows 2.1's VGA driver,,,
Image

GL1zdA
User avatar
Posts: 515
Joined: Thu Dec 03, 2009 3:32 pm
Location: Warsaw, PL

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by GL1zdA »

Raiker wrote:As I understand, although 1.04 supported PS/2:
The 1.04 release of Microsoft Windows now supports the IBM
Personal System/2 family of equipment.
it didn't support VGA's native mode and worked en EGA-compatible mode. For example, there is no VGA choiсe in 1.04 installation. However I remember there was an screenshot in the web where 1.04 was running in 640x480 resolution. How is it possible?
You need drivers and appropriate hardware. There was no generic Windows 1.0 VGA driver because it was released 2 years before the release of the PS/2. And PS/2 compatibility meant it is compatible with the hardware (memory etc), not that it provides a VGA driver. Here are some graphic cards which support Windows, but it's impossible to find the drivers because no one archived them: http://books.google.com/books?id=_z4EAA ... &q&f=false
Image

roytam1
Posts: 735
Joined: Mon Nov 03, 2008 6:15 am

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by roytam1 »

yksoft1 wrote:
Rob Jansen wrote:@z180:
You can try, but I think it doesn't work, it works for the mouse driver, but during setup you must select the Videocard you have, in the 2.03 setup and higher there is an VGA option, while during the 1.x setup it doesn't say VGA.
I replaced egahires.drv, however the system won't boot with it.
Offtopic Comment
I booted Windows 3.0 (real mode) with Windows 2.1's VGA driver,,,
Image
Nice screenshot! :wink:

z180
Donator
Posts: 982
Joined: Sat Aug 21, 2010 5:10 pm
Location: In front of my Toughbook

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by z180 »

That screenshot shows how the fake "Windows 2.9" was made.
Stephen Elop….I curse you, that after your death your soul will be forever trapped in the sourcecode of Windows and one day Microsoft will fall because of that virus code!

WinPC

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by WinPC »

Actually, the fake Windows 2.9 used the normal drivers, not to also mention that it was almost completely the same as Windows 3.00a.

If you ask me, I would say that that is among the worst fake builds that I've ever seen, and this is coming from someone of whom has known about this fake build for a few years now.

trustBA
User avatar
Donator
Posts: 1206
Joined: Sat Jun 14, 2008 11:30 am
Location: In the Floating island above the sky
Contact:

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by trustBA »

Did you try pce-ibmpc? I think it supports VGA.
Online periodically.
---
M$ Software Labels | OS Tester | Software Geek | Creative Agent!

Last edited by trustBA on Mon, 3rd Nov, 2013 6:99 am, edited 100 times in total.

kalakala
Posts: 26
Joined: Thu Jul 28, 2011 12:32 pm

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by kalakala »

yksoft1 wrote:
Rob Jansen wrote:@z180:
You can try, but I think it doesn't work, it works for the mouse driver, but during setup you must select the Videocard you have, in the 2.03 setup and higher there is an VGA option, while during the 1.x setup it doesn't say VGA.
I replaced egahires.drv, however the system won't boot with it.
Offtopic Comment
I booted Windows 3.0 (real mode) with Windows 2.1's VGA driver,,,
Image
I managed to patch Windows 2.03 vga driver to work with Windows 1.03.
But no text. Needs more work.
Image
:)

yksoft1
User avatar
Posts: 750
Joined: Thu Nov 26, 2009 7:14 am

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by yksoft1 »

How did you patch it? in header or entry point code?

DarkerJ
User avatar
Donator
Posts: 1637
Joined: Thu Jun 10, 2010 7:44 pm
Location: Take a backward step, then a forward step
Contact:

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by DarkerJ »

yksoft1 wrote:How did you patch it? in header or entry point code?
I think he patched it via version number hacking. Windows 2.0 and Windows 1.0 are virtually the same OS, except that Windows 2.0 has overlapping windows and there are versions designed just for the Intel i286 and i386.

kalakala wrote: I managed to patch Windows 2.03 vga driver to work with Windows 1.03.
But no text. Needs more work.
Image
Well, at least you have it running in 640x480. :) I think the issue with the text is that the Windows 2.0 driver uses smaller text sizes, while Windows 1.0 uses the standard size fonts, and Windows 1.0 doesn't want to use Windows 2.0's smaller text size.
<°)))><●▬▬▬▬๑۩۩๑▬▬▬▬●><(((°>
Image
Image
When in doubt...
iddqd
idkfa

kalakala
Posts: 26
Joined: Thu Jul 28, 2011 12:32 pm

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by kalakala »

yksoft1 wrote:How did you patch it? in header or entry point code?
I used IBMPS250.DRV
It uses keyboard driver ordinal that is not in Windows 1.03 driver. No point to try adding keyboard.drv as it calls kernel ordinal not in 1.03.
In Enable it calls function into USER. NOP it out or you get AUX error.
So i patched segment relocation where keyboard call is used (to LOCALINIT). Then added ret in one location. But it seems i forget one place.

Edit:
Got it working. Font is roman.fon.
In ENABLE i NOP'd call to hook_int_2Fh.

Image

Patched drv and some images. Have fun.
http://www.mediafire.com/?az6ea1rvqhq9xir
:)

yksoft1
User avatar
Posts: 750
Joined: Thu Nov 26, 2009 7:14 am

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by yksoft1 »

I remember there are sources of Windows 3.0/3.1's default display drivers in Win 3.0/3.1 DDK...
And

DDL 1/87 Windows Device Driver Library Volume 1

Additional support for display devices,
printers, and pointing devices added
from http://support.microsoft.com/kb/32905
we could find something in it..

Seemed you bypassed ScreenSwitchEnable... However after I played a bit on Windows 286/2.1's IBMPS250.drv (removed calls that invoke ScreenSwitchEnable, and NOPed the unknown USER call in Enable) the debug kernel still complain that there is one and only one missing reference in KEYBOARD.
Invalid ordinal reference to KEYBOARD: C:\103\KEYBOARD.DRV 1DBF:00A7
If I choose Ignore, Windows started without more complaints.

kalakala
Posts: 26
Joined: Thu Jul 28, 2011 12:32 pm

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by kalakala »

Seemed you bypassed ScreenSwitchEnable... However after I played a bit on Windows 286/2.1's IBMPS250.drv (removed calls that invoke ScreenSwitchEnable, and NOPed the unknown USER call in Enable) the debug kernel still complain that there is one and only one missing reference in KEYBOARD.
Invalid ordinal reference to KEYBOARD: C:\103\KEYBOARD.DRV 1DBF:00A7
If I choose Ignore, Windows started without more complaints.
You need to change segment relocation table where KEYBOARD call is. Look at bindiff files i posted.
But you still need to bypass these calls. I made jmp/ret mods. To be sure.
:)

yksoft1
User avatar
Posts: 750
Joined: Thu Nov 26, 2009 7:14 am

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by yksoft1 »

kalakala wrote:
Seemed you bypassed ScreenSwitchEnable... However after I played a bit on Windows 286/2.1's IBMPS250.drv (removed calls that invoke ScreenSwitchEnable, and NOPed the unknown USER call in Enable) the debug kernel still complain that there is one and only one missing reference in KEYBOARD.
Invalid ordinal reference to KEYBOARD: C:\103\KEYBOARD.DRV 1DBF:00A7
If I choose Ignore, Windows started without more complaints.
You need to change segment relocation table where KEYBOARD call is. Look at bindiff files i posted.
But you still need to bypass these calls. I made jmp/ret mods. To be sure.
You didn't include your changes of the import table in two bindiff screenshots. The two diffs are for the ScreenSwitchEnable and the unknown USER call.

kalakala
Posts: 26
Joined: Thu Jul 28, 2011 12:32 pm

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by kalakala »


You didn't include your changes of the import table in two bindiff screenshots. The two diffs are for the ScreenSwitchEnable and the unknown USER call.
In first image bindiff1 at offset 0x48FD is KEYBOARD.100 (ScreenSwitchEnable) changed to KERNEL call.
I use debug version of 1.03 and made regular install from 1.03 version. No errors.
:)

yksoft1
User avatar
Posts: 750
Joined: Thu Nov 26, 2009 7:14 am

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by yksoft1 »

I will need continue tweak that for myself since my IBMPS250.drv is not the same as the one in Windows 286 2.03..

yksoft1
User avatar
Posts: 750
Joined: Thu Nov 26, 2009 7:14 am

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by yksoft1 »

I found the reference to KEYBOARD from Windows 2.1/286's IBMPS250.drv Segment 0001
at 48FFh from the start of the file:
03 01 90 40 01 00 64 00
first "01" represent an ordinal import.
the second "01 00" (16-bit unsigned integer 1 in little-endian) represent KEYBOARD in import modules.
the "64 00" represent the ordinal 0064h of KEYBOARD (still present in NTVDM's keyboard.drv as a stub), ScreenSwitchEnable.
If I simply change 01 00 to 02 00 the kernel will stop complaining about the unsatisfied KEYBOARD dependency, however ordinal 0064h of KERNEL is ValidateCodeSegments, which is not in SDK windows.h, but documented in later SDK as

Code: Select all

VOID FAR PASCAL ValidateCodeSegments(void); 
I don't know if an argument pushed into stack for such a function which doesn't need arguments will affect the stability, but I didn't find anything wrong for now.

And the USER import is in fact RePaintScreen. This is undocumented however I remember that one of Win9x tricks call that to refresh the desktop quickly.

I did get a working IBMPS250.drv for 1.03 and 1.04 with only 2 bytes different with original one.
Last edited by yksoft1 on Tue Aug 02, 2011 4:42 pm, edited 1 time in total.

kalakala
Posts: 26
Joined: Thu Jul 28, 2011 12:32 pm

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by kalakala »

In my sample these calls are never made in one place jmp is made over call and ret before call.

Change it to ordinal witch is present in kernel and then bypass if possible. But you cant use call xxxx:xxxx for your code as kernel writes seg:offs to this location when relocations are made.

Windows 3.x DDK display source will help a little bit.
:)

yksoft1
User avatar
Posts: 750
Joined: Thu Nov 26, 2009 7:14 am

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by yksoft1 »

There are 4 places that calls the code for calling ScreenSwitchEnable in Windows 2.1's IBMPS250.drv. Now that ScreenSwitchEnable is remapped to ValidateCodeSegments, it will be interesting when the system actually runs into those calls..

By the way the bitmap fonts problem might be much, much harder to fix...

kalakala
Posts: 26
Joined: Thu Jul 28, 2011 12:32 pm

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by kalakala »

yksoft1 wrote:
By the way the bitmap fonts problem might be much, much harder to fix...
Yes, i agree. And i think sometimes vga driver is unstable.
Like i cant edit text in notepad. Some strange keyboard errors.
:)

yksoft1
User avatar
Posts: 750
Joined: Thu Nov 26, 2009 7:14 am

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by yksoft1 »

kalakala wrote:
yksoft1 wrote:
By the way the bitmap fonts problem might be much, much harder to fix...
Yes, i agree. And i think sometimes vga driver is unstable.
Like i cant edit text in notepad. Some strange keyboard errors.
Image

Image

z180
Donator
Posts: 982
Joined: Sat Aug 21, 2010 5:10 pm
Location: In front of my Toughbook

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by z180 »

There is an unofficial VGA mode 800x600 16 colours.
I cant say if it is present on all hardware.
Stephen Elop….I curse you, that after your death your soul will be forever trapped in the sourcecode of Windows and one day Microsoft will fall because of that virus code!

DarkerJ
User avatar
Donator
Posts: 1637
Joined: Thu Jun 10, 2010 7:44 pm
Location: Take a backward step, then a forward step
Contact:

Re: Did Windows 1.04 support VGA resolution (640x480)?

Post by DarkerJ »

kalakala wrote:
yksoft1 wrote:How did you patch it? in header or entry point code?
I used IBMPS250.DRV
It uses keyboard driver ordinal that is not in Windows 1.03 driver. No point to try adding keyboard.drv as it calls kernel ordinal not in 1.03.
In Enable it calls function into USER. NOP it out or you get AUX error.
So i patched segment relocation where keyboard call is used (to LOCALINIT). Then added ret in one location. But it seems i forget one place.

Edit:
Got it working. Font is roman.fon.
In ENABLE i NOP'd call to hook_int_2Fh.

Image

Patched drv and some images. Have fun.
http://www.mediafire.com/?az6ea1rvqhq9xir
Can you change it to the normal Windows 1 font? (I think it's either HIFONTS.FON or LOFONTS.FON)

Also, I remember seeing on Toastytech Windows 2.0 running at 1024x768. Maybe we could get Windows 1.0 to do the same. :)
<°)))><●▬▬▬▬๑۩۩๑▬▬▬▬●><(((°>
Image
Image
When in doubt...
iddqd
idkfa

Post Reply