Un editor interactivo de documentos se ha diseñado de manera que el texto en edición se mantiene en memoria. El usuario suministra repetidamente órdenes elementales de edición, mediante el teclado. Cada tecla pulsada se considera que es una orden elemental. Por ejemplo, la tecla de flecha hacia abajo es la orden de avanzar el cursor a la línea siguiente, la tecla de la letra "A" es la orden de insertar una "A" en la posición del cursor, etc. Estas órdenes provocan modificaciones en el texto almacenado en memoria, y posteriormente se actualiza su presentación en pantalla.
Tanto la actualización del texto como la escritura en la pantalla duran un cierto tiempo. Para permitir en lo posible que un usuario experto teclee a la máxima velocidad de que sea capaz, se decide establecer prioridades entre las diferentes actividades que ha de realizar el editor, en la forma siguiente:
La actualización no se hará, por tanto, tras cada orden de edición. Esto permite reducir la carga de trabajo de actualización, de manera que si hay una serie de órdenes pendientes, esas órdenes se ejecutan seguidas, y la actualización presenta de una vez el resultado final de la serie de órdenes. Incluso puede ocurrir que la actualización de la pantalla se haga sólo en parte, si antes de actualizar todas las líneas se reciben nuevas órdenes de edición. Además, para ahorrar tiempo, al actualizar la pantalla sólo se mandarán reescribir aquellas líneas que hayan cambiado.
Se trata de realizar un programa basado en paso de mensajes que realice la edición de un texto en la forma indicada, hasta que se pulse la orden de fin (escape). El programa utilizará los módulos "Texto", "Teclado" y "Pantalla" que se suministran, y que son abstracciones no reentrantes, es decir, que sus operaciones sólo pueden invocarse desde una tarea en cada momento, y no desde varias tareas a la vez. El programa de ejemplo "Editor", no concurrente, sirve sólo para ilustrar la manera de usar los módulos suministrados.