Date: Wed, 17 Mar 93 08:30:49 EST From: DJ Delorie To: djgpp AT sun DOT soe DOT clarkson DOT edu Subject: DPMI & Windows I have a new DPMI information program! This one is written in assembler and actually goes into protected mode, so it's a good example of how to *use* DPMI. Also, some information about the DPMI host is only available from protected mode. Source and binary included, as well as info from Borland and Windows. After re-reading my DPMI spec, I've decided that it's possible to use djgpp to develop programs that will run under Windows (or any 32-bit DPMI 0.9 host), with the following caveats: * Stack size will have to be FIXED. Probably an extra go32 variable will be needed, or maybe use the Borland method of having a "__stklen" variable that crt0.o uses to set up the stack. Heap will follow the stack so sbrk can resize the segment we're in. * graphics, 0-1M map, and emu387 are OUT. Emu387 could be made into a regular .o and linked in, though. Basically, anything that requires a linear 4G address space and paging will NOT work with DPMI 0.9. * A special link flag will be required. * Changes to go32 are too much for 1.10 - it will have to wait for 2.0. * Other stuff I don't know about. DJ ---- Microsoft Windows 3.1: DPMI Information Program, written by DJ Delorie DPMI v0.90, 32 bit apps, 80386 CPU virtual memory supported Largest available = 18,317,312 bytes Max unlocked = 18,317,312 bytes Max locked = 4,423,680 bytes Linear space size = 20,168,704 bytes Total unlocked = 4,452,352 bytes Total free = 3,559,424 bytes Total physical = 5,894,144 bytes Free linear = 18,325,504 bytes Paging file = 10,055,680 bytes Borland DPMIRES: DPMI Information Program, written by DJ Delorie DPMI v0.90, 16 bit apps, 80386 CPU no virtual memory supported Largest available = 5,126,576 bytes Max unlocked = N/A bytes Max locked = N/A bytes Linear space size = N/A bytes Total unlocked = N/A bytes Total free = N/A bytes Total physical = N/A bytes Free linear = N/A bytes Paging file = N/A bytes begin 777 dpmii.zip M4$L#! H !@ & (RYS- MKSM<;X?KZG!#_7VKQIWDYE:*BM?EV99H<4.H7(I;?JY#^PU&:6D"1Q% W^9S M'/<6-VZ]&3?V,"EY\ =';=_*SW+MQT_:]NKVE/-__'8MRWW\9K AT _#+$_O,]] MN^[8^7^2;?!S\W]N4?&Q1[3I2MZ]_6,^E7U=?OU>[L9RU[V.N.]Z1,3>ZTG/ ME?C_6O]VAVR^MKO^E_TW]F.YCMGYB @1RVO5:R1",*[G!>-Z_ AT _&]=^\EO^4 M2FO^3\\-QG70/TI*Q#NBK'<:X=J6^3E_^2[O6[B_SJ72OC$->H^(=C5[C_VS M'8 AT Z7_JT_VS5&Z)_(CS7^33/^Z?]8#S\6-F5[2Q?8SW)3_ AT _'^?>2%#HO\"+ M]9.P#HKJ.-9![%_'_6Q_+3V-^Z]72&^L AT VSM"_*&&(YU8&O;?3,,:*R[5 FW M7 AT V(CW404DS?$VZ6/;!)3_4ZJK]VG0X3K(-V^$KEYEP#^?6XDYQ?GTN%N04P M[Q:QL:K\>*97-39BZ=F>QCX3^Z,"<6V&S]]KM?5>_OFL2T3P->Q))LY?*QO.FT7Q+[N=,ZD GM?+ M[$+@F>5SU&?YQN];_9>6[2L4R:_K'&38.=#.ILMS MU.,VZ+;C4IK7BL:G'DYT1>LG1&M(%>9)C/TXPSF=9N>036'N:):7Q_)\YM=/ ME4.XGU7.]2M_+:DUS-F-6<,>['PMY3.MI;UD-VM427>VU_K<<:^5U:ES08D[ M E$@ZMW16*\$A0"OA#0N:&WRXB=E.E(HDG2W9/ELW!!J.#\1]?_>8+K>:[Y$ MU_1J7Z*;ZK0X%C$\ ;FXA_]4X *'?'<+'8C8$LV58#0L)@I:99):/#-Y8C* 3HW$_\6206\"KF*,APX0&-;BG=0[(="+URP 8!JT8AE"COO MMNW;%WDHM5'LN0PC&4BU4W*?[<:BQ\$BB!A)[(^M\=?2J- _#O+^-I4_1;OI M#T[T8G]@Q2+):O AT EI7;4Q$(?$$LBKG$IM>^3VPW+4[\DS,2-&XR^A5.1OXJ< MVCG!N#1+&"=7]: Y'A[CI(YQO(%QW,Z-A%&,MW8^U17\N5>4\RURUT5.ZZO9 M<8SC>M>K)/(BE&)%CEC9]P2?IV%YVN [CN<$X[PJ-5[3*2)HE,B"FRWY$C:[ M'*^['%S#Y18[Y(5 AT 0C%4\OF[U#[)SIW0Z5R!=D/Q-L)3G#$B]2YJX&';O3@/ M4^H >Q0K"M.O,40T(A AT 1?']O7F4KOO^ZB/^JREM7>;W%9P]N5ZJGJ!AILN"+ M=8N86S5V,,;Q)[J4[JWAJ%GF;944Y84X;)U8_\R.M5ZA.E49<\1!#(Z>;X>..BW?- 2SQN' ; M?.9C]*J*;:[9F@;-L3207M^YQ.HB,5!,$A*D,+2+1(S,-8MD ADY4C-\J.*R M^":C+>'S;5ZU89E4JOH8PO1A+\3GS&A(ISE(5\@;+*E&JNN(3UND AT 24\;>)= MF'^D.DH'_14.YW %H3J?B@?#9+'B(3SE-+4\:9[YS8KM(;6ZL)W!7ZQOQCULII]$QR_*YV;[[(IST]18<,.R=4R*$$2(T$/1K@ MW DOT J8 AT M309TA!.4SF4[AFL()E&;8T#1MT/0>QI8G82AB)SF-]4K<^"'('#7>, MWA;@A"0[L?*8;]# 'HU89_,0>$%ZL<4")G2HF$('=BQTI$F!KUNXK%14E!ON M1=I6_@"E>N!Y#@:C MB'>*V -V"-D"K[$@1,$MA& @3$]$93.("9F/F!C:8=&(50INL( -$NF<0V#@ M*J8)C#:=F(*A$[)+-O40+F<[B:$M2/%3I.&7__FND_I4PNXM*_0%WF'WR5UG MH/.9_YRN#8[6)U:I04,W3FL:@"S YIZEC M.1MYJ-I$Y22:'%-. XH*:/&8N*X8;W0$)4W:4;F?@W6:07K,O' "D]$*!CD% M(G(T/ 3?!PTO##^N.#)%Q5!+ P0* !@".N7 :XY7BY[P# !"!0 "0 M $1034E)+D-/30\ $@,D%38G.#EJ>TR=;A\)!@$3-.7VEO?31Q1(%&K3I""3 MNC7[5F[;L'33OG4+$JK#S(L7+ASF,O/.7T?"K6*N=O1GV[=L&Q!MBW; M!N[T?FX=\8X+FW;S=-V R32LW+-EI/*P=L.F91M6+-NR('N8/1&_S/LYWC<- MBQ=D73=#?NP:K!Q$L'0[E&Z8;9AN2"9!O AT S7L3WV###7L&>W/:'U:-EICW3"3 M!P#+V"'#@;25[HYJ,/AZ AT LU#^AX8$'W9@+@/6VS^LL?V=!="ANR[1O13 Z9_ M#C"Q38<#$_N$.)"Q08D#!X=_&!4W1("#QP>D6T!\W" !0E4L3'CC4!?S]]W& M?9(!!Q,WF'5P_H%S_K4)]!/^?\2^C_^B'D+TBST AT 3QO)VLN5LKQCX+C,_K^' MJI=KYF@'$-0Q?;_J?SP!J]4WI?SLH[[@;^X"KKUY@&-'[Q?@^J*0B\JAG<04 M$!."$;91R3R/*I+_1CX0?2GQ18B3<^_0[F/1A/.W9,S$?Z\#GQ#X =AV)D)E M)@"U+(%C.E2;'CV3X.@:PO!IAK^U_.G?5P]"4!+A-> M.$&Q )43O N0.D&V .\3A NP/$&R &L6) J094&H "\6G NP>T'%%(T"U@^P M[@ T/^SXDG01'$_+S(=I'L ^\'#":Z'1[S _R=E MER#GPQ=W''R,24<-N#Y7,I^J^#MZH@&WH@<"/6JSBPN:'8S_/]T$]YL-#IZA MV<0%%W<>0!XC^B]4M M'[Y^@3 AT 8\H M8XJ^#K(#%?H N2B-/LBR AT S8< 'DPR [QQ->COX+LZ <@NQ/A M1RP[&;H=O1!DTVQ%GQ. U]+L 9IU12(/W#]@'V^;G6C9+()*2K3BBT.H*+WG MZ3W[4Q-O;U;77^+DAYN]'Z]X[8JAX?.Z#L1+=SK&EC4'+!R&NPZ?"LRP1D?V M6P&/?PAX.$S ^W/:6=J2/ZAXFC<'4$L#! H & ,BY"IP$ ((# M ) 1%!-24DN1$%4#0(!$B,4%38W:(F:VSP%!A(31,7VEO>;IATK]^W< MMV;I AT KR:UBW9MW?G AT ISI,J;.A AT J"-U&H39."3.K6[%NY;9=F([[1EX$N[,%WFA"&^9\KH7N0;9%BX M<.IWS/*=]-P^(%6=<-O!Z[9GZ# M!!$\RH,Q'E,^:;*D*7,F2QM+%WG.Y*TN,Z^$;KAAQZSKN6GUP$L9>G<,\$>1UV;EEBWSCEC7-6OFF+=D\'#1YEG78Y"/ MO-=DB3-'LXY)@SQM9%BRR5I]A961OFM034(->T9\GX'7:=G 8^6G=\.(5V!A M AT K>0+962J AT H-(HLIM>@4*Z !N%Q6 -?M6Q!9 2TJXUM0ZJ^:0,+(';Z,D AT 4 M0.0=MP0(WG%$@. =FA\1O$/#(X)WG!PA>,>M$8)W7&HV4$L! @L "@ & 8 MC+EP&K5%#R,>!P [!< D 0 @ $1034E)+D%335!+ M 0(+ H & (ZY+GO , $(% ) ( $4' !$ M4$U)22Y#3TU02P$""P * !@#(N7 :^1C'@J