Class new title: Dispframe subclassof: Stream fields: 'text' declare: 'prompt doit ' classInit [prompt _ ''  1. doit _ ' '  1] clear [self reset. self show] eachtime | t1 [text window has: user mp  [user kbck  [t1 _ self kbd. t1  [[t1  nil  [] self space. self print: nil  t1]. self prompt]] user bluebug  [false]] user anybug  [false]] ev | t1 [while [self cr. t1 _ self request: ''. t1] do [self space. self print: nil  t1]. false] firsttime [text window has: user mp  [self outline. self prompt] false] frame [text frame] frame_ t1 [text para: nil frame: t1] init [text _ Textframe new. self of: (String new: 16)] kbd | t1 t2 [while user kbck do [t2 _ user kbd. t2 = 132  [self append: 'done.'. self show. nil] t2 = 8  [self last = prompt  [] self skip: 1] t2 = 30  [t1 _ array  (position to: 1 by: 1) find: prompt. t1 = 0  [self append: 'lost beginning'. self prompt] t2 _ self last: t1 - 1. self next_ doit. self show. t2] t2 = 145  [self last = prompt  [] self skip: 1. while (position > 0 and: self last tokenish) do [self skip: 1]] t2 = 151  [self reset. self prompt] self next_ t2]. self show. false] lasttime [[self last = prompt  [self skip: 2. self show]]. user bluebug  false] leave moveto: t1 [(text window inset: 2  2) dragto: t1 - (2  2)] outline [text window outline: 2] prompt [self cr. self next_ prompt. self show] read | t1 [self next_ prompt. self show. until (user kbck and [t1 _ self kbd. t1]) do []. t1  nil  [false] t1] rect: t1 [self init. self frame_ t1. self clear] request: t1 [self append: t1. self read] show | t1 [text show: self contents asParagraph. until text lastshown  position do [t1 _ text scrolln: 1. position < t1  [] t1 _ array copy: t1 + 1 to: position. text show: t1 asParagraph. position _ 0. self append: t1]] text [text]