2 ideas.
1. Use a string control as the input and an indicator as the output, like you said. Color the background of the indicator white and the borders of both transparent. Now use a decoration to put a border around the whole thing so it looks like one box. The drawback here is that you have to type into the control, which is always at the bottom of the box and it might be confusing.
2. Use 1 string control. Put a prompt character such as ">" in the control. When the user enters a command and presses enter read the control after the ">" to get the command. I would use an event structure to filter the Enter key so that the key focus stays on the string control. Remove the command from the string, add whatever output is needed, and put another ">" for a new command to be entered. The drawback of this one is that it's a control and the user will be able to change what's in it. You could filter out any mouse clicks so that if the user clicks the prompt, the cursor always goes to the end, where the new command is entered, but then they won't be able to select text from the output buffer to copy.
I would say the second way would be more natural to a user. I can throw together an example if my description is a little confusing.