Terminate and Stay Resident
システムコール INT 27H は 'Terminate But Stay Resident' と呼ばれるため、それを使うプログラムを 'TSR' と称した。これを使うと、プログラムは最大64KBのメモリだけをそのままの状態で残すことができる。MS-DOS 2.0 ではそれを改良したシステムコール INT 21H/31H ('Keep Process') が追加された。これは残すメモリ量の制限を外し、プロセスの終了コードを指定できるようにしたものである。
終了後にコードを実行させるためのきっかけの一例としては、なんらかの割込みベクタを自分自身が持つ割込みハンドラを指すよう書き換え、再び呼び出されるようにする。たとえば、ハードウェア割込を利用すれば、ハードウェアのイベントにプログラムを反応させることができる。ソフトウェア割込を利用すれば、別のプログラム中からINT命令で簡単に呼出ができる。(ハードウェア割込の一種であるが)タイマー割込やVSYNC割込により、定期的に呼出すこともできる。割込みの利用は一例であって、他の方法もある(MS-DOSにデバイスドライバとして登録する等)。
実行させるコードは持たず、単にデータ領域としてメモリを確保するだけという利用法もある。例えばPC-9801は比較的後期の機種になるまでパレットの読出しができなかったため、ユーザにより考案された「常駐パレット」などはそういった用法である。
割込みベクタは、連鎖させる利用法もある。