Programs in a MUSH are a way to redirect complete MUSH output to a particular attribute on an object for handling.
The input from the player to the MUSH attribute is fed in as variable '0' or %0. The player's input is recursively evaluated into that attribute until they are quitted from the program using @program/quit.
&PROG_YOUTYPED MUSH_OBJECT = @pemit %# = You typed %0 ; @program/quit %#
The normal 'Q-Registers' within a program are carried over endlessly until a players particular queue cycle is exited. So whatever a particular 'Q-register' is set to immediately before the player is inputted into the program, and all the way until the player is eventually quitted from the program all remain statically in memory for the coders program to use.