[comp.lang.fortran] DOS 640K barrier?

louk@tslwat.UUCP (Lou Kates) (04/07/90)

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.

2.   It can cost a lot less than indicated above since (a) you do
     not necessarily  need  a special  compiler and (b) you don't
     even need a 386 -- some DOS extenders can use a 286.

In particular if you already have 

1.   Microsoft C  or FORTRAN compiler  (we're talking about their
     regular old compiler,  not a  special extender compiler)  or
     any of a few other popular compilers

2.   a 286 (or 386) machine with MS-DOS

all you need to get into  extender technology (that will give you
a flat 16  MB  address space) is  to get the Eclipse DOS extender
for $495.  If you need more info see  February Computer  Language
Magazine  for  an  ad  and   the  address or look at the relevant
article in this month's Byte at the end of which is the  address.
I have no connection with Eclipse.

Lou Kates, Teleride Sage Limited, 519-725-0277, ...!watmath!looking!tslwat!louk

mcdonald@aries.scs.uiuc.edu (Doug McDonald) (04/07/90)

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