Path: utzoo!attcan!uunet!samsung!brutus.cs.uiuc.edu!ux1.cso.uiuc.edu!aries!mcdonald From: mcdonald@aries.scs.uiuc.edu (Doug McDonald) Newsgroups: comp.lang.fortran Subject: Re: DOS 640K barrier? Message-ID: <1990Apr7.161228.14105@ux1.cso.uiuc.edu> Date: 7 Apr 90 16:12:28 GMT References: <78829@tut.cis.ohio-state.edu> <16870001@hpfinote.HP.COM> <158@tslwat.UUCP> Sender: usenet@ux1.cso.uiuc.edu (News) Reply-To: mcdonald@aries.scs.uiuc.edu (Doug McDonald) Organization: School of Chemical Sciences, Univ. of Illinois at Urbana-Champaign Lines: 50 In article <158@tslwat.UUCP> louk@tslwat.UUCP (Lou Kates) writes: >In article <16870001@hpfinote.HP.COM> pnl@hpfinote.HP.COM (Peter Lim) writes: >> >> >>>We also have OS/2 1.1 on the machine and it has 16 Megs of RAM. Do I have >>>to switch to OS/2 to utilize the extra memory for an application. >>>I have a program that is written in FORTRAN and it exceeds the 640 K limit. I >>>am currently using MS FORTRAN 5.0. >>> >>>I have heard of DOS extenders, but aren't they supposed to be quite >>>expensive? Would C be better for using the extra memory? >> >>Only expensive in the fact that they run better on 386(SX) machines because of >>the edge the 386 architecture has over the 286 architecture. The basic DOS >>extenders just put LIM EMS 4.0 memory to full use. If you have some EMS >>memory already, then all you have to do is buy the program. >> >>^^^^^^^^^^^^^^^^^^^^^^^^^^ >>I won't believe that totally. The DOS extender itself will easily cost >> $400-$500 + debugger $100 + extender compiler $700-$1000 = $1500 >>... > >There are a couple misconceptions in the above statements: > >1. DOS extenders do NOT put EMS memory to use. DOS extenders > use ordinary extended memory, not EMS (also known as > expanded) memory. EMS is a paged memory scheme whereas DOS > extenders give you a flat address space (not a paged address > space) using extended, NOT EMS, memory. They do this by > switching the processor into its native "protected" mode and > switching back to the "real" mode that DOS runs in whenever > you make a DOS call. You are confusing DOS extenders with > memory managers like QEMM and 386-to-the-Max which are used > to emulate EMS memory on an extended memory 386. > DOS extenders for use on **386's** do indeed do that. But for use under **286s** you most emphatically do NOT get a **flat** address space. It is still segmented. It still has all the problems that the 8086 dies - plus a new, added one: you have to jump through hoops to access data as code or code as data. The brain-dead protected mode of the '86s (any of them) makes it impossible to mark the same segment as both data and code. This is not a problem with the 386 because one normally simply uses the "Tiny" model where the code and data segments start at the same place in physical memory, so a code address and the data address of the same memory location are the same - and you have up to a gigabyte of code and data. But is IS a problem on the 286, eith its teensy segments. Doug McDonald