DGroup, Stack - How RDP programs allocate conventional memory
Article ID#: K000059
RDP-DOS requires 530 Kb of the total 640 Kb of conventional memory on a
workstation to run. Various RDP programs require different amounts of
memory. From almost any prompt within RDP-DOS, Alt + F9 will display the
current state of memory. This display will change from program to program
and even from prompt to prompt within a program depending on the data being
stored at that point in time. There are four memory categories displayed
with Alt + F9. These numbers are all reset once a new EXE is started.
The example below is taken from RDPMenu. The categories are:
Mem = 360816. This is
the number of bytes of conventional memory still available. The consumed
memory contains the program and all associated data.
DGroup = 36144. DGroup holds the data in a program. For example,
in the code of RDPMenu there might be 4 lines
These data for these variables would reduce DGroup by a certain number of bytes
depending on the data. There is a finite amount of space for data after
which an "Internal Error" can occur or the program may hang.
Low Stack = 4226. Low stack is a "low water mark" for Stack.
As a user progresses through a program, Stack space is used and released.
This number represents the lowest amount of stack that was hit someplace in the
program. For example, F5-Look is a subroutine that uses a lot of stack.
If you go into F5 and list various things out, stack will decrease. When
you exit out of F5, the stack space used by F5 is released, however this number
will show you how low stack went during that process. Low Stack = Current
Stack - DGroup.
Current Stack = 40370. Stack space is temporary data storage that is
used when a subroutine is called and generates local data. So stack space
decreases as the subroutine increases it's data requirements. When the
program exits from the subroutine, all data local to that subroutine is
released, so stack will once again increase. This is always the current
amount of available Stack space.
Prior to Rev. 220, the look routine was using stack space for every level of
Look and never releasing it when it was done. As a result, there were
parts of the system that wouldn't work after F5 or F3 were used. The
current release now allows this Stack memory to be released and reused for other
purposes within the program.
Notice that the Memory available in
RDP100Y is significantly less than in RDPMenu. RDP100Y has a lot more code and
stores more data such as rates and reservation information. RDPMenu is a
simple display program only holding 1 menu record in memory at a time to