x86Novice
17.03.2013, 01:14 |
File Reading AH=3Fh, int 21h under DPMI not working (Developers) |
Hello Everyone,
Sorry if this is an old age problem, searched many threads but unable to find anything related. My work environment is running MS-DOS 7, NASM (Ver 2.10.07) & HDPMI32 (ver 3.17) , having problem with loading a file's content to a buffer above 1MB, i.e
.
.
.
mov AH, 3Fh ;Read from file
mov BX, word [DS:FileHandle] ;File successfully Opened prior to this
mov ECX, 1000h ;Read 4096 Bytes from File
mov EDX, 300000h ;Buffer to store 1000h bytes to.
int 21h
.
.
Compiled Ok but hangs when executed with HDPMI32 loaded or otherwise.
I thought HDPMI32 would somehow intercept int 21h/AH=3F in protected mode and accept 32bit addressing unlike its 16bit counterpart ?
Would appreciate any suggestions, thanks for reading.
NOTE: Also tried other DPMIs to no avail. |
Japheth

Germany (South), 17.03.2013, 02:45
@ x86Novice
|
File Reading AH=3Fh, int 21h under DPMI not working |
> Hello Everyone,
> mov AH, 3Fh ;Read from file
> mov BX, word [DS:FileHandle] ;File successfully Opened prior to this
> mov ECX, 1000h ;Read 4096 Bytes from File
> mov EDX, 300000h ;Buffer to store 1000h bytes to.
> int 21h
>
> I thought HDPMI32 would somehow intercept int 21h/AH=3F in protected mode
Yes, it does. But the address in DS:EDX must point to a valid buffer. "Valid" in this context means: either an address in the first MB ( conventional memory ) or the address of a - committed - memory block allocated with one of the DPMI memory functions. Address 300000h does not actually look like belonging to this set. --- MS-DOS forever! |
DOS386
27.03.2013, 09:01
@ x86Novice
|
File Reading AH=$3F, INT $21 under DPMI | True DPMI |
> Sorry if this is an old age problem
it is
> I thought HDPMI32 would somehow intercept int 21h/AH=3F in protected mode
Every DPMI host does "intercept".
> and accept 32bit addressing unlike its 16bit counterpart ?
You can have ECX >= 64 KiB and EDX > 1 MiB but only with True DPMI (HDPMI: YES | WATCOM extenders: YES | CWSDPMI : NO), but the buffer must be valid ( see above and http://board.flatassembler.net/topic.php?t=6384 ). --- This is a LOGITECH mouse driver, but some software expect here
the following string:*** This is Copyright 1983 Microsoft *** |