Eve

Eve is an event oriented language, which uses a stack for its computations. The only method of control flow is starting events. Events are kept in a queue, and events are run in the order in which they are popped out. Note that any new events will have to wait for all previous events to be run. Execution stops when the event queue is empty. All instructions in Eve are one character long, and any arguments to an instruction must follow it directly.

Cat
Or, printed nicely :L I $ 01- = ?EL O ; :E ; @L

Explanation
Define an event named 'L' (it stands for Loop). I Get a char of input. Stack: $ Duplicate it; One copy to maybe be printed, one copy to compare with EOF. Stack: 01- Stack: -1 Push EOF (-1). There are no negative numbers in Eve, so we have to subtract from zero. = Compare the char with EOF. Stack:  ?EL Queue up the event E (for End) if the char equals EOF, requeue L otherwise. Note that this is not a branch! Flow continues to the end of the event. Stack: O Print the character. Stack: (empty) ; End the definition of 'L'. :E ; Define an event named 'E' that does nothing. This will be queued up as an exit to the program. @L To start, queue up 'L'.