::  Would love to see a proper stateful terminal handler.  Ideally,
::  you'd be able to ^X into the virtual ship, like the old ^W.
::
::  However, that's probably not the primary way of interacting with
::  it.  In practice, most of the time you'll be running from a file
::  (eg for automated testing) or fanning the same command to multiple
::  ships or otherwise making use of the fact that we can
::  programmatically send events.
::
/-  aquarium, spider
/+  aqua-vane-thread
|%
++  handle-blit
  |=  [who=@p way=wire %blit blits=(list blit:dill)]
  ^-  (list card:agent:gall)
  =/  last-line
    %+  roll  blits
    |=  [b=blit:dill line=tape]
    ?-    -.b
        %lin  (tape p.b)
        %klr  (tape (zing (turn p.b tail)))
        %mor  ~&  "{<who>}: {line}"  ""
        %hop  line
        %bel  line
        %clr  ""
        %sag  ~&  [%save-jamfile-to p.b]  line
        %sav  ~&  [%save-file-to p.b]  line
        %url  ~&  [%activate-url p.b]  line
    ==
  ~?  !=(~ last-line)  last-line
  ~
--
::
%+  aqua-vane-thread  ~[%blit]
|_  =bowl:spider
+*  this  .
++  handle-unix-effect
  |=  [who=@p ue=unix-effect:aquarium]
  ^-  (quip card:agent:gall _this)
  =/  cards
    ?+  -.q.ue  ~
      %blit  (handle-blit who ue)
    ==
  [cards this]
::
++  handle-arvo-response  _!!
--