Jump to content

Windows XP/2003 x32 on Modern Hardware FAQ


Mov AX, 0xDEAD
 Share

Recommended Posts


@Mov AX, 0xDEAD

I am very much interested in NDIS 6.x for Windows XP/2003.

Especially for a driver for the Intel Lan i219 under XP.

Because a lot of boards now on the market without Realtek RTL8111H or Intel <i219 network,

but also still a lot of new boards with the i219 chip

Dietmar

Link to comment
Share on other sites

VMWare is wrote min-port and used Mesa Winsys for Video , we can write a minport with UEFI support , and use Opengl/Vulkan/OpenCL/Directx9 on modern Intel/AMD GPU even on Nvidia with terrible performance.

https://archive.mesa3d.org/

mesa-21.2.6/src/gallium/frontends/wgl/stw_device.c

You can check it out , XP DDK and Server 2003 DDK have some driver example for Display.

Thing is studying the driver and mesa and making a new driver , not gonna be easy but 80% work is already done by Mesa guys.

Speaking of Intel i219

https://doxygen.reactos.org/dir_1fd5db4229a5858743134ea1546c500f.html

Linux kernel have e1000e interrupts linked in the driver.

https://github.com/ddk50/winkvm 

This WinKVM have Linux Kernel Mode Api wrapper,

Linux ALSA driver can be ported for Universal audio driver to Windows XP , including WiFi 6 driver.

Edited by Dibya
Link to comment
Share on other sites

  • 2 weeks later...
On 4/17/2022 at 12:31 PM, George King said:

@Mov AX, 0xDEAD 

In was wondering about x64 UEFI based PC to boot 32 bit XP - Do you think is possible to compile current NTLDR as NTLDR.efi x86_x64 target?

1) ntldr x32 based on BIOS API, Itanium version has some EFI support, i did not discovered it

2) bootvid.dll requires CSM Video to show something on screen

3) better try longhorn/vista bootmgr with native efi support to load legacy xp kernel

Link to comment
Share on other sites

  • 2 weeks later...
Quote

Compatibility fix ("HAL TSC frequency divider")
 

@Mov AX, 0xDEADIs there a safe space to add assembly code in existing dll file?  I tried patching two new subroutines to an empty 0000000 block at the end of the file, but it does not like it.  Windows restarts a few seconds after loading with this patch.

x86rtc-HAL-TSC-frequency-divider.png

 

Link to comment
Share on other sites

10 hours ago, pappyN4 said:

@Mov AX, 0xDEADIs there a safe space to add assembly code in existing dll file?  I tried patching two new subroutines to an empty 0000000 block at the end of the file, but it does not like it.  Windows restarts a few seconds after loading with this patch.

@pappyN4

You cannot reference to "end of file", dll is PE format. PE format is collection of segments mapped to near regions of memory

hal.dll has many segment, you can use only segment marked as .TEXT or one of .PAGE*, don't use .INIT

look at end of each segment to see how much bytes are free before address of next segment

1) for example halmaci.dll sp3 v5512 has free ~120 bytes in .text from .text:8001900D to .data:80019080

2) in any PE Editor increase .text segment virtual(mapped to memory) size from 0x8C0D to raw(size in file) size  0x8C80

  • Upvote 1
Link to comment
Share on other sites

  • 1 month later...
On 4/6/2022 at 1:22 PM, Mov AX, 0xDEAD said:

Modded AVX/AVX2 kernel
Currently Proof-Of-Concept, only one kernel version supported LINK

Link not working. Also did it work now with XP-64 recently? I remember you, for some reason, didn't want to do version for XP64. But can you, please, do it?

On 4/6/2022 at 1:22 PM, Mov AX, 0xDEAD said:

3) WinXPPAE(v2+) by Daniel_k, contains proper HAL_DMA patch, kernel patch is OK

And where is link on this? I couldn't find it in google.

Link to comment
Share on other sites

On 6/21/2022 at 3:06 AM, Rod Steel said:

Link not working. Also did it work now with XP-64 recently? I remember you, for some reason, didn't want to do version for XP64

There is no free space in thread context to store all x64 AVX registers, no easy way to make it same as x32 version.

Link to comment
Share on other sites

8 hours ago, Mov AX, 0xDEAD said:

There is no free space in thread context to store all x64 AVX registers, no easy way to make it same as x32 version.

Perhaps i am not educated about this topic at all. I just ask about first AVX, not AVX2, not AVX512

You early write on win-raid:

Quote

P.S. WinXP x64 kernel has different FPU context format, but i think it is possible to do same trick, but i'm not interested

P.S.S Don't ask for AVX512, there is no free space in FPU context to store additional 16*AVX512_H(256bit) regs.

SO i ask does it possible to do AVX1 for XP64, or you are steel "not interested".:unsure:

Link to comment
Share on other sites

On 6/22/2022 at 11:36 PM, Rod Steel said:

Perhaps i am not educated about this topic at all. I just ask about first AVX, not AVX2, not AVX512

You early write on win-raid:

SO i ask does it possible to do AVX1 for XP64, or you are steel "not interested".:unsure:

avx1/2 on x32 are 8 256-bit registers YMM0-YMM7

avx1/2 on x64 are 16 256-bit registers YMM0-YMM15

x64 user applications can use all 16 registers, this is problem, 16*256/8= 512 bytes to store all x64 avx1/2 registers

Link to comment
Share on other sites

2 hours ago, Mov AX, 0xDEAD said:

avx1/2 on x32 are 8 256-bit registers YMM0-YMM7

avx1/2 on x64 are 16 256-bit registers YMM0-YMM15

x64 user applications can use all 16 registers, this is problem, 16*256/8= 512 bytes to store all x64 avx1/2 registers

Anyway to add FPU space?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.


×
×
  • Create New...