◄Summary► ◄Example► ◄Up► ◄Contents► ◄Index► ◄Back► ─────Run-Time Library─────────────────────────────────────────────────────── The _dos_keep routine installs terminate-and-stay-resident programs (TSRs) in memory, using system call 0x31. The routine first exits the calling process, leaving it in memory, and then returns the low-order byte of <retcode> to the parent of the calling process. Before returning execution to the parent process, _dos_keep sets the allocated memory for the now-resident process to <memsize> paragraphs. (A paragraph is 16 bytes.) Any excess memory is returned to the system. The _dos_keep function calls the same internal routines called by the exit functions. It therefore takes the following actions: 1. Calls any functions that have been registered by atexit or _onexit calls. 2. Flushes all file buffers. 3. Restores interrupt vectors replaced by the startup code, primarily interrupt 0 (divide by zero). If the emulator math library is used and there is no coprocessor, interrupts 0x34 through 0x3d are restored. If there is a coprocessor, interrupt 2 is restored. Do not use the emulator math library in TSRs unless you are familiar with the startup code and the coprocessor. Use the alternate math package if the TSR must do floating-point math. Do not run programs that use _dos_keep from inside the Microsoft Programmer's WorkBench environment, since doing so causes subsequent memory problems. The _dos_keep function terminates a program executed in the Programmer's WorkBench environment. Return Value None. -♦-