I've been scowering the internet (in some rather 'shady' place I might add) looking for some true, logical, and what's more, -readable- examples of how to enter and use 32 bit DPMI. I got some very vague responses, and the ever classic "Just use a DOS extender". Actually, I would use a DOS extender...if anyone could tell me exactly -HOW- to use them!! :) (It's very difficult to use an extender in Assembly when all the documentation is for Watcom C/C++ 10.x! :)) Anyway, I know this is a Windows forum, and I'm sorry for the non-Windows post, but I'm still at a total loss. Thanks! (By the way, if anyone would be so gracious as to send me source code for an entry point into 32 bit protected mode, I'd like very much for you to make sure it assembles under TASM 5.0. A rather mute point because this posting is under TASM, but I've seen too much code online that TASM just chokes on.)
hi i dont know much about DPMI ... but i can send u may OS code that gets the processor into 32bit protected mode from there you are on your own...i dont think it works under windows as win is allready in protected mode and will not let u switch on your own about DPMI...i think VLA has some basic tutorials in PC-GPE and i think that in a win dos box you allready have DPMI services installed... but why do you need such a complicated mode of working like DPMI when nowdays you can easy make a "console mode" win app (or a full win app) that is easy to setup san uses simple flat memory model? Bogdan
Two reasons: #1: mov ax,13h int 10h has a tendancy to fail miserably under Windows. :) #2: I don't want to use Windows code for everything I do. I'd prefer to use pure DPMI to anything designed by Microsoft for games and heavy graphical stuff. For applications, I'll use Windows because making a GUI takes too much time anyway. :) Anyway, as for using the 32 bit OS programming techniques (ie: mov eax,cr0 or eax,1 mov cr0,eax) doesn't work under Windows, or even under DOS (with DPMI, XMM, or EMM installed). Believe me, I've tried. :)
Hi, A few weeks ago I also search the web for examples. If you are interested you can download what I found at my website http://surf.to/TestD Go to the x86 assembly area and get protmode.zip. This are the best examples I found. Also an old LINUX Kernel source is a help. Note: examples are pure 32bit mode, no DPMI. so long Test
I found that the dos32 extender by Adam Seychell is by far the best for asm users - unfortunately i dont know a url for it - try google... it seems to be 100% compatable with win9x as well, unlike some other extenders, the unregistered version only allows access to 2gb of memory (this can be cracked however) and handles all interrupts etc.. be thunking automatically.. quite a neat extender....
Search a file called PMODEW.DOC for the functions while in protected mode. And for DPMI call : AX = 1687 INT 2F Returns : ES : DI address for entering pmode DX number of para to allocate bit 0 BX host 16 or 32 bits ? So you allocate a segment of DX paras you put in ES. Then you call the adress pointed by ES : DI And after the call you should be in protected mode with valid selectors in segments registers. There is also a function to test if DPMI is installed but i can't remember the number. This message was edited by BJZ, on 2/19/2001 4:38:47 AM