a "virtual" terminal for js