Win3x.Org

Windows & DOS Community

Win386 en mode AHCI – si, c'est possible !

Post Reply   Page 1 of 1  [ 4 posts ]
Author Message
PluMGMK
Post subject: Win386 en mode AHCI – si, c'est possible !
Posted: 13 Mar 2023 20:31
Membre inscrit
User avatar
Offline
 
Posts: 73
Joined: 28 Mar 2022 21:17
 
Je n'ai pas été seul ici à essayer de faire tourner Windows 3.1 sur du matériel moderne, et à constater que ce système d'exploitation, en Mode Étendue 386, n'est pas compatible avec les contrôleurs SATA en mode AHCI. Je présumais que c'était à cause de quelques incompatibilités fondamentales entre la spécification AHCI et les codes de gestion de disques de Win3.1. Mais j'ai fait quelques investigations, et j'ai trouvé qu'en fait (au moins sur mon PC), cette incompatibilité vient d'un simple bug de firmware dans les contrôleurs AHCI d'Intel ! :o

Lors d'un int 13h, si le système tourne sous Windows ou sous EMM386, le firmware du contrôleur AHCI se sert de int 4Bh pour traduire les adresses virtuelles. Mais malheureusement, il fait systématiquement des appels invalides à int 4Bh AX=8104h, où la structure DDS se trouve à DS:DI au lieu de ES:DI. Sous EMM386, ceci ne pose pas de problème, pour n'importe quelle raison, mais sous Windows 3.1 en Mode Étendue 386, ça provoque un crash du système.

Heureusement, je suis en train d'écrire un petit VxD, qui intercepte int 4Bh, et détecte et règle ces appels invalides. En ce moment, ce VxD ne fonctionne qu'avec un DOS démarré avec EMM386, et pour quelque raison la souris ne fonctionne pas avec. :? Mais j'ai l'intention de régler ces problèmes et publier ce VxD sur mon GitHub. :)

Et comment j'ai trouvé tout ça ? J'ai utilisé le débugueur WDEB386, qui vient avec le DDK Win16. Je ne sais pas si c'est déjà connu, mais pour faire fonctionner ce débugueur j'ai dû faire un petit patch :
Comparing files WIN16DDK\386\TOOLS\WDEB386.EXE and C:\WINDOWS\WDEB386.EXE
000063D8: 0F 66
000063D9: 24 33
000063DA: F0 C0
000063DF: 0F 66
000063E0: 24 33
000063E1: F8 C0
Ceci vire les instructions mov eax,tr6 et mov eax,tr7, qui crashent le système parce que les registres TR6 et TR7 n'existent plus depuis le Pentium. :)

Last edited by Big Monstro on 13 Mar 2023 21:04, edited 1 time in total.
Lien externe remplacé. Le DDK Win16 est téléchargeable sur Win3x.Org depuis de nombreuses années ;-)


Top
Profile Quote
PluMGMK
Post subject: Re: Win386 en mode AHCI – si, c'est possible !
Posted: 18 Mar 2023 02:10
Membre inscrit
User avatar
Offline
 
Posts: 73
Joined: 28 Mar 2022 21:17
 
Désolé de double-poster, mais je voudrais annoncer que c'est fait : http://github.com/PluMGMK/ahcifix.386/ :)

On peut télécharger le VxD directement ici : http://github.com/PluMGMK/ahcifix.386/ ... HCIFIX.386


Top
Profile Quote
Capitaine
Post subject: Re: Win386 en mode AHCI – si, c'est possible !
Posted: 31 Mar 2023 16:47
Membre inscrit
Offline
 
Posts: 109
Joined: 06 Jun 2004 10:31
Retro PC: Pentium 3 multiboot Dos-W31-W98-WXP, Pentium 4
 
Merci c'est très intéressant ! Tu utilises quelles docs, celles du DDK ?
J'ai tenté une recherche pour avoir des explications sur l'adresse Duplicate_Device_ID mais ya pas grand chose.
Après un grep sur le DDK ça trouve des "duplicate device ID already"... d'authentiques commentaires de programmeurs :clap:

Sinon, pour l'ID du VxD, j'ai trouvé ça : https://www.delorie.com/djgpp/doc/rbinter/it/42/26.html


Top
Profile Quote
PluMGMK
Post subject: Re: Win386 en mode AHCI – si, c'est possible !
Posted: 31 Mar 2023 21:27
Membre inscrit
User avatar
Offline
 
Posts: 73
Joined: 28 Mar 2022 21:17
 
Merci ! Oui, j'ai utilisé les exemples et les documentations du DDK, et je me suis servi de WDEB386 pour confirmer comment marchent quelques trucs qui n'étaient pas très clairs…

J'ai trouvé la même liste d'IDs ici : https://fd.lod.bz/rbil/interrup/windows ... #sect-4579

D'ailleurs, on pourrait déplacer ce sujet à projets aboutis ? Je crois que c'est complet maintenant…


Top
Profile
Display: Sort by: Direction:
Post Reply   Page 1 of 1  [ 4 posts ]
Return to “Projets aboutis”
Jump to: