Skip to content

No drives showing up in Windows 3.1Program Manager #149

@Baron-von-Riedesel

Description

@Baron-von-Riedesel

This issue occurs when running SvarDos and Win3.1 (in standard mode), using either HDPMI16 or the Win31-supplied DOSX.EXE as DPMI host. It may actually also occur in Enhanced-Mode, but I haven't setup such a test machine. The problem is that ProgMan.exe may show no drives ("Laufwerke") at all in its "common dialog", which is used when a new program item is to be added and then the "Browse" button is pressed.

The problem occurs on a real system that has NO fdisk controller and hence no floppies. It does NOT occur when there exist "floppy" disks (tested on a Qemu VM)

Running a Win3.1 monitor program that logs the DOS calls one can see the difference. Here's how the system checks if a drive is valid (note that newer entries are ABOVE the older ones):

Nr	Funktion	AX	BX	CX	DX	C	AX	BX	CX	DX	DS	CS:IP	        Task	
61	SelectDisk  	0E05	1902	0006	0B06	C	0E0B	1902	0006	0B06	0D9F	010F:1CF5	PROGMAN	
60	CurrentDisk 	190B	1902	0005	0B05	C	1905	1902	0005	0B05	0D9F	010F:1D48	PROGMAN	
59	SelectDisk  	0E04	1902	0005	0B05	C	0E0B	1902	0005	0B05	0D9F	010F:1CF5	PROGMAN	
58	CurrentDisk 	190B	1902	0004	0B04	C	1904	1902	0004	0B04	0D9F	010F:1D48	PROGMAN	
57	SelectDisk  	0E03	1902	0004	0B04	C	0E0B	1902	0004	0B04	0D9F	010F:1CF5	PROGMAN	
56	CurrentDisk 	190B	1902	0003	0B03	C	1903	1902	0003	0B03	0D9F	010F:1D48	PROGMAN	
55	SelectDisk  	0E02	1902	0003	0B03	C	0E0B	1902	0003	0B03	0D9F	010F:1CF5	PROGMAN	
54	CurrentDisk 	190B	1902	0002	0B02	C	1902	1902	0002	0B02	0D9F	010F:1D48	PROGMAN	
53	SelectDisk  	0E01	1902	0002	0B02	C	0E0B	1902	0002	0B02	0D9F	010F:1CF5	PROGMAN	
52	CurrentDisk 	190B	1902	0001	0B01	C	1901	1902	0001	0B01	0D9F	010F:1D48	PROGMAN	
51	SelectDisk  	0E00	1902	0001	0B01	C	0E0B	1902	0001	0B01	0D9F	010F:1CF5	PROGMAN	
50	CurrentDisk 	190B	1902	0000	0B00	C	1900	1902	0000	0B00	0D9F	010F:1D48	PROGMAN	
49	SelectDisk  	0E02	1902	0000	0000	C	0E0B	1902	0000	0000	0D9F	010F:1CF5	PROGMAN	

It runs int 21h, ah=0Eh (drive no in DL) and then calls int 21h, ah=19h to see if the current disk has changed.
It's strange that for SvarDOS, drive A: and B: are valid ( with MS-DOS, they are NOT valid on that machine )

Then it checks if any of the drives is remote or removeable:

Nr	Funktion	AX	BX	CX	DX	C	AX	BX	CX	DX	DS	CS:IP	Task	
88	IoCtl       	4408	0002	0000	2842	 	0000	0002	0000	2842	014F	010F:1CF5	PROGMAN	
87	IoCtl       	4409	0002	0000	1902	 	0300	0002	0000	2842	014F	010F:1CF5	PROGMAN	
86	SelectDisk  	0E01	0101	0000	1902	C	0E0B	0101	0000	1902	014F	010F:1CF5	PROGMAN	
85	CurrentDisk 	190B	0001	0000	0001	C	1901	0001	0000	0001	014F	010F:1D48	PROGMAN	
84	SelectDisk  	0E02	0001	0000	0001	C	0E0B	0001	0000	0001	014F	010F:1CF5	PROGMAN	
83	CurrentDisk 	1900	0001	0000	0A27	C	1902	0001	0000	0A27	014F	010F:1D48	PROGMAN	
82	Set PSP (U) 	5000	09D7	0000	0A27	 	5000	09D7	0000	0A27	0127	010F:1CE3	PROGMAN	
81	5D SubSys(U)	5D0A	0003	002B	0626	 	5D00	0003	002B	0626	0127	010F:1D1C	PROGMAN	
80	WriteFile   	40D7	0003	002B	167A	C	0053	0003	002B	167A	0A27	010F:1CF5	PROGMAN	
79	GetExtErrorC	5943	0000	0000	03A2	 	0015	0507	0400	03A2	0127	010F:0AAF	87	
78	Set PSP (U) 	50D7	00A7	002B	167A	 	50D7	00A7	002B	167A	0127	010F:1CE3	PROGMAN	
77	IoCtl       	4408	0001	0007	2842	 	0000	0001	0007	2842	014F	010F:1CF5	PROGMAN	
76	IoCtl       	4409	0001	0007	1902	 	0300	0001	0007	2842	014F	010F:1CF5	PROGMAN	
75	SelectDisk  	0E00	0000	0007	1902	C	0E0B	0000	0007	1902	014F	010F:1CF5	PROGMAN	

The interesting part is that apparently int 21h, ax=4408h causes an INT 24h "callback" with AX=15h as error code (that's line 78-82) for drive A: (and also for B:). This won't show up in Windows (after all, the system just wants to display the available drives). But this Int 24h confuses either Windows or SvarDOS (haven't analyzed it too deeply yet).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions