Figure 1

Startup:

;       Save general information, such as
;               DGROUP segment address
;               DOS version number
;               Program Segment Prefix address
;               Environment address
;               Top of far heap
;
;       Save several vectors and install default
;       divide by zero handler.
;       Determine the amount of memory that we need
;       to keep
;       Make sure that the requested stack size is at
;       least MINSTACK words.
;       Return to DOS the amount of memory in excess
;       Set far heap base and pointer
;       Reset uninitialized data area
;       Prepare main arguments

Exit:
;       Flush and close streams and files
;       Restore interrupt vectors taken during
;       startup. signal() functions could have
;       grabbed vectors 0, 4, 5 or 6.
;       Check for NULL pointer errors.
;       Exit to DOS.
;