Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.os.msdos.programmer > #379
| From | "Rod Pemberton" <do_not_have@noavailemail.cmm> |
|---|---|
| Newsgroups | alt.os.development, comp.os.msdos.programmer |
| Subject | Re: How to call Int 15h, ax=e881h? |
| Date | 2011-11-01 05:10 -0400 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <j8od18$827$1@speranza.aioe.org> (permalink) |
| References | <j8n1ll$t95$1@speranza.aioe.org> <7ccefade-7031-45e3-bc69-d6bc587b2a61@l12g2000vby.googlegroups.com> <317a44af-3264-4d1b-8d3d-d152edcb7b7f@hj4g2000vbb.googlegroups.com> |
Cross-posted to 2 groups.
"Rugxulo" <rugxulo@gmail.com> wrote in message news:317a44af-3264-4d1b-8d3d-d152edcb7b7f@hj4g2000vbb.googlegroups.com... > On Oct 31, 5:32 pm, Jim Leonard <mobyga...@gmail.com> wrote: > > On Oct 31, 3:50 pm, "Rod Pemberton" <do_not_h...@noavailemail.cmm> > > > > Also, I can't find any use of e881h in > > > code that is publicly available. > > > It appears limited to Phoenix BIOSes so that's probably why. I would > > instead search for some way to query the total amount of memory > > available via some other means, and/or ask the fine people at > > comp.lang.asm.x86 for a more universal way to determine total memory > > size. > > I have no idea if it uses that call specifically, but CWSDPMI r7 is > probably a good place to see how it's done: > Oh, I thought you were referring to "how 'e881' is done", but you must've meant "how 'a more universal way to determine total memory size' is done" ... I searched the code of CWSDPMI for r5, r6, and r7. I did a text search for 'e881' and '81' but didn't find any matches. I did find e820 code in r7. CWSDPMI's valloc_init() in valloc.c appears to use: -VCPI -XMS via VCPI (?) -XMS -PC98 using BDA or other low memory addresses -Int 15h, AH=88h -Int 15h, AX=E801h -VDISK -Int 15h, AX=E820h The E820h call is in r7, but only used for memory over 4GB. I'm surprised it wasn't in earlier versions, but the reason it wasn't needed is revealed below ... If most users are like me, they won't have VCPI or VDISK loaded. That means the memory allocation for CWSDPMI is reduced to: 1) XMS 2) Int 15h, AX=E801h, or falls back to Int 15h, AH=88h for E801h failure XMS is used if installed. The Int15h calls are used if XMS is not installed. Most people aren't going to boot DOS without XMS, so XMS is usually installed for DOS. It's automaticly loaded for MS-DOS with Win98/SE/ME, unless safe mode is selected. So, the 'more universal way to determine total memory size' is to use XMS via HIMEM.SYS ... ;-) It's likely no one noticed the E820h call was missing in CWSDPMI because it would only be called when XMS and VCPI are not loaded. For memory detection, Int 15h, with 88h, e801h, and e820h are the most common methods. Some of the others are: BDA 0413h, CMOS 15-16, INT 12h, CMOS 17-18, CMOS 30-31 INT 15h,AH=88h, or 8Ah, or C0h and C7h, or AX=DA88h, or E801h, or E820h Of course, eventually, VCPI, VDISK, XMS etc must use the BIOS calls or CMOS or BDA values ... That reminds me. I didn't check EBDA for memory info ... Rod Pemberton
Back to comp.os.msdos.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
How to call Int 15h, ax=e881h? "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-10-31 16:50 -0400
Re: How to call Int 15h, ax=e881h? Jim Leonard <mobygamer@gmail.com> - 2011-10-31 15:32 -0700
Re: How to call Int 15h, ax=e881h? Rugxulo <rugxulo@gmail.com> - 2011-10-31 16:37 -0700
Re: How to call Int 15h, ax=e881h? "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-11-01 05:10 -0400
Re: How to call Int 15h, ax=e881h? Ross Ridge <rridge@csclub.uwaterloo.ca> - 2011-10-31 20:18 -0400
Re: How to call Int 15h, ax=e881h? "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-11-01 05:09 -0400
Re: How to call Int 15h, ax=e881h? Ross Ridge <rridge@csclub.uwaterloo.ca> - 2011-11-01 12:23 -0400
Re: How to call Int 15h, ax=e881h? James Harris <james.harris.1@googlemail.com> - 2011-11-01 12:57 -0700
Re: How to call Int 15h, ax=e881h? "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-11-02 02:49 -0400
Re: How to call Int 15h, ax=e881h? Ross Ridge <rridge@csclub.uwaterloo.ca> - 2011-11-02 10:33 -0400
Re: How to call Int 15h, ax=e881h? James Harris <james.harris.1@googlemail.com> - 2011-11-04 14:47 -0700
Re: How to call Int 15h, ax=e881h? Ross Ridge <rridge@csclub.uwaterloo.ca> - 2011-11-04 17:59 -0400
Re: How to call Int 15h, ax=e881h? James Harris <james.harris.1@googlemail.com> - 2011-11-04 15:09 -0700
Re: How to call Int 15h, ax=e881h? "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-11-04 20:12 -0400
Re: How to call Int 15h, ax=e881h? Ross Ridge <rridge@csclub.uwaterloo.ca> - 2011-11-04 23:27 -0400
Re: How to call Int 15h, ax=e881h? "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-11-06 02:46 -0500
Re: How to call Int 15h, ax=e881h? "Rod Pemberton" <do_not_have@noavailemail.cmm> - 2011-11-04 21:04 -0400
Re: How to call Int 15h, ax=e881h? "Marven Lee" <marven10@gmail.com> - 2011-11-05 01:12 +0000
Re: How to call Int 15h, ax=e881h? Nomen Nescio <nobody@dizum.com> - 2011-11-05 19:04 +0100
Re: How to call Int 15h, ax=e881h? James Harris <james.harris.1@googlemail.com> - 2011-11-04 14:58 -0700
csiph-web