Class new title: Turtle subclassof: BitBlt fields: 'frame location direction pen pendown inking' declare: '' color: t1 [color _ t1] drawfrom: t1 to: t2 | t3 t4 t5 t6 t7 t8 t9 t10 [[pen is: Integer  [function _ 12 + (function land: 3). height _ pen. width _ height. t3 _ pen / 2  (pen / 2)] pen is: Form  [function _ function land: 3. super sourceForm_ pen. width _ pen width. height _ pen height. t3 _ pen offset] user notify: 'pen must be a Form or Integer']. destx _ (t1 x - t3 x) asInteger. desty _ (t1 y - t3 y) asInteger. t4 _ (t2 x - t1 x) asInteger  (t2 y - t1 y) asInteger. t5 _ t4 x sign. t6 _ t4 y sign. t7 _ t4 y abs. t8 _ t4 x abs. super callBLT. [t8 > t7  [t9 _ t8 / 2. for t10 to: t8 do [destx _ destx + t5. t9 _ t9 - t7. [t9 < 0  [desty _ desty + t6. t9 _ t9 + t8]]. super callBLT]] t9 _ t7 / 2. for t10 to: t7 do [desty _ desty + t6. t9 _ t9 - t8. [t9 < 0  [destx _ destx + t5. t9 _ t9 + t7]]. super callBLT]]. pen is: Form  [super release: pen]] erase [super window clear: white] go: t1 [self goto: direction asRadians asDirection * t1 + location] goto: t1 | t2 [t2 _ location. location _ t1. pendown  [self drawfrom: t2 to: location]] home [location _ frame center] init [sourceraster _ 0. sourcebase _ sourceraster. super init. super toDisplay. frame _ user screenrect. self pendn. self color: black. self width: 1. self inking: storing. self home. self up] inking: t1 [function _ t1] pen: t1 [pen _ t1] pendn [pendown _ true] penup [pendown _ false] turn: t1 [direction _ direction + t1] up [direction _ 270.0] width: t1 [self pen: t1]