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.
Example of a @program
&PROG_YOUTYPED MUSH_OBJECT = @pemit %# = You typed %0 ; @program/quit %#
How Registers are Handled
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.