$ od -c -N 50000 [Indigo]<Spruce>13>mevents.bcpl!1
0000000    /   /       m   e   v   e   n   t   s   .   B   c   p   l    
0000020    -   -       R   e   p   o   r   t       e   v   e   n   t   s
0000040        f   o   r       l   a   t   e   r       p   e   r   u   s
0000060    a   l  \r  \r   g   e   t       "   s   p   r   u   c   e   F
0000100    i   l   e   s   .   d   "  \r   g   e   t       "   s   p   r
0000120    u   c   e   .   d   "  \r  \r   /   /       S   p   r   u   c
0000140    e       S   t   r   e   a   m   s  \r  \r   /   /       i   n
0000160    c   o   m   i   n   g       s   t   a   t   i   c   s  \r   e
0000200    x   t   e   r   n   a   l       [  \r  \t   S   p   r   u   c
0000220    e   Z   o   n   e   ;       F   o   n   t   W   i   n   d   o
0000240    w   ;       B   a   n   d   W   i   n   d   o   w   ;       p
0000260    r   i   n   t   D   o   c   ;       F   S   G   e   t   X   ;
0000300        a   h   e   a   d  \r  \t   I   n   i   t   S   p   r   u
0000320    c   e   F   i   l   e   ;       R   e   s   e   t   S   p   r
0000340    u   c   e   F   i   l   e   ;       S   p   o   o   l   F   i
0000360    l   e   ;       w   i   n   V   e   c   ;       S   y   s   E
0000400    r   r   ;       D   P   z   e   r   o  \r  \t   P   u   t   T
0000420    e   m   p   l   a   t   e   ;       W   i   n   d   o   w   C
0000440    r   e   a   t   e   S   t   r   e   a   m   ;       C   l   o
0000460    s   e   s   ;       M   u   l   F   u   l   l   ;       E   n
0000500    d   o   f   s   ;       P   u   t   s   ;       N   o   o   p
0000520   \r  \t   ]  \r  \r   /   /       d   e   f   i   n   e   d    
0000540    h   e   r   e  \r   e   x   t   e   r   n   a   l       [  \r
0000560   \t   E   v   e   n   t   s   I   n   i   t   ;       P   a   g
0000600    e   E   v   e   n   t   ;       R   e   c   o   r   d   E   v
0000620    e   n   t   s   ;       R   e   p   o   r   t   E   v   e   n
0000640    t       /   /       l   a   s   t       r   e   a   l   l   y
0000660        i   n       m   l  \r  \t   e   v   e   n   t   s   ;    
0000700    e   v   e   n   t   I   n   d   e   x   ;       m   a   x   E
0000720    v   e   n   t   s  \r  \t   ]  \r  \r   s   t   a   t  \0 006
0000740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0000760   \0  \0 001 336  \0  \0  \0  \0  \n 370  \0 370 366 357 370 366
0001000    i   c  \r  \t   [  \r  \t   e   v   e   n   t   s       =    
0001020    0   ;       e   v   e   n   t   I   n   d   e   x   ;       m
0001040    a   x   E   v   e   n   t   s   ;       e   S   i   z   e    
0001060    =       6   0   0   0  \r  \t   ]  \r  \t  \r  \r   l   e   t
0001100        E   v   e   n   t   s   I   n   i   t   (   )       b   e
0001120        /   /       !   !   !   !   !   !  \r  \t   [  \r  \t   e
0001140    v   e   n   t   s       =       F   S   G   e   t   X   (   e
0001160    S   i   z   e   )  \r  \t   m   a   x   E   v   e   n   t   s
0001200        =       e   S   i   z   e   -   5  \r  \t   e   v   e   n
0001220    t   I   n   d   e   x       =       0  \r  \t   ]  \r  \r   /
0001240    /       a   n   d       R   e   p   o   r   t   E   v   e   n
0001260    t   (   c   o   d   e   ,       v   a   l   u   e   )       b
0001300    e       /   /       i   m   p   l   e   m   e   n   t   e   d
0001320        i   n       M   l  \r   /   /  \t   [  \r   /   /  \t   i
0001340    f       e   v   e   n   t   s       e   q       0       %    
0001360    e   v   e   n   t   I   n   d   e   x   >   m   a   x   E   v
0001400    e   n   t   s       r   e   t   u   r   n  \r   /   /  \t   e
0001420    v   e   n   t   s   !   e   v   e   n   t   I   n   d   e   x
0001440        =       c   o   d   e       l   s   h   i   f   t       8
0001460        +       R   c   l   k   (   )   !   0  \r   /   /  \t   e
0001500    v   e   n   t   s   !   e   v   e   n   t   I   n   d   e   x
0001520    +   1       =       R   c   l   k   (   )   !   1  \r   /   /
0001540   \t   e   v   e   n   t   s   !   e   v   e   n   t   I   n   d
0001560    e   x   +   2       =       v   a   l   u   e  \r   /   /  \t
0001600    e   v   e   n   t   I   n   d   e   x       =       e   v   e
0001620    n   t   I   n   d   e   x   +   3  \r   /   /  \t   ]  \r  \r
0001640    a   n   d       P   a   g   e   E   v   e   n   t   (   s   t
0001660    r   e   a   m   ,       p   a   g   e   ,       w   r   i   t
0001700    e   )       b   e       /   /       !   !   !   !   !   !    
0001720   \r  \t   [  \r  \t   u   n   l   e   s   s       e   v  \0 006
0001740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0001760   \0  \0 001 336 376  \0  \0  \0  \b 370  \0 370 366 357 370 366
0002000    e   n   t   s       r   e   t   u   r   n  \r  \t   l   e   t
0002020        w   h   i   c   h       =       -   1  \r  \t   i   f    
0002040    s   t   r   e   a   m       e   q       F   o   n   t   W   i
0002060    n   d   o   w       t   h   e   n       w   h   i   c   h    
0002100    =       1   0  \r  \t   i   f       s   t   r   e   a   m    
0002120    e   q       B   a   n   d   W   i   n   d   o   w       t   h
0002140    e   n       w   h   i   c   h       =       1   1  \r  \t   i
0002160    f       s   t   r   e   a   m       e   q       p   r   i   n
0002200    t   D   o   c   >   >   D   o   c   G   .   D   L       t   h
0002220    e   n       w   h   i   c   h       =       1   2  \r  \t   i
0002240    f       s   t   r   e   a   m       e   q       p   r   i   n
0002260    t   D   o   c   >   >   D   o   c   G   .   E   L       t   h
0002300    e   n       w   h   i   c   h       =       1   3  \r  \t   f
0002320    o   r       i       =       0       t   o       n   M   a   x
0002340    M   e   r   g   e   I   n   p   u   t   s   -   1       d   o
0002360        i   f       s   t   r   e   a   m       e   q       w   i
0002400    n   V   e   c   !   i       t   h   e   n       w   h   i   c
0002420    h       =       i  \r  \t   R   e   p   o   r   t   E   v   e
0002440    n   t   (   (   w   r   i   t   e   ?       $   >   ,       $
0002460    <   )   ,       (   w   h   i   c   h       l   s   h   i   f
0002500    t       1   2   )   +   (   p   a   g   e   &   #   1   7   7
0002520    7   )   )  \r  \t   ]  \r  \r   a   n   d       R   e   c   o
0002540    r   d   E   v   e   n   t   s   (   f   )       b   e  \r  \t
0002560    [  \r  \t   u   n   l   e   s   s       e   v   e   n   t   s
0002600        r   e   t   u   r   n  \r  \t   l   e   t       e       =
0002620        e   v   e   n   t   s   ;       e   v   e   n   t   s    
0002640    =       0  \r  \t   I   n   i   t   S   p   r   u   c   e   F
0002660    i   l   e   (   f   ,       3   ,       3   )  \r  \t   l   e
0002700    t       s       =       W   i   n   d   o   w   C   r   e   a
0002720    t   e   S   t   r   e   a   m   (   f   ,       k   s  \0 006
0002740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0002760   \0  \0 001 336 374  \0  \0 300 006 370  \0 370 366 357 370 366
0003000    T   y   p   e   W   r   i   t   e   B   e   f   o   r   e   R
0003020    e   a   d   ,       c   h   a   r   I   t   e   m   ,       2
0003040    )  \r  \t   P   u   t   T   e   m   p   l   a   t   e   (   s
0003060    ,       "   T   o   t   a   l       E   v   e   n   t   s    
0003100    =       $   D   *   N   "   ,       e   v   e   n   t   I   n
0003120    d   e   x   /   3   )  \r  \t   l   e   t       o   l   d   T
0003140    i   m   e       =       -   1  \r  \t   f   o   r       i    
0003160    =       0       b   y       3       t   o       e   v   e   n
0003200    t   I   n   d   e   x   -   1       d   o  \r  \t  \t   [  \r
0003220   \t  \t   l   e   t       e   v       =       l   v       e   !
0003240    i  \r  \t  \t   l   e   t       t   i   m   e       =       (
0003260    (   (   e   v   !   0   )   &   #   7   7   )       l   s   h
0003300    i   f   t       1   0   )       +       (   (   (   e   v   !
0003320    1   )       r   s   h   i   f   t       2   )   &   #   1   7
0003340    7   7   )  \r  \t  \t   l   e   t       d   i   f       =    
0003360    i       e   q       0   ?       0   ,       (   t   i   m   e
0003400    -   o   l   d   T   i   m   e   )   *   3   8  \r  \t  \t   o
0003420    l   d   T   i   m   e       =       t   i   m   e  \r  \t  \t
0003440    l   e   t       l   e   a   d   S   t   r   ,       e   n   d
0003460    C   h   r   ,       p   r   o   c       =       "   "   ,    
0003500    $   *   S   ,       N   o   o   p  \r  \t  \t   l   e   t    
0003520    c   h   a   r   ,       v   a   l   ,       p   V   a   l    
0003540    =       e   v   !   0       r   s   h   i   f   t       8   ,
0003560        e   v   !   2   ,       n   i   l  \r  \t  \t   s   w   i
0003600    t   c   h   o   n       c   h   a   r       i   n   t   o  \r
0003620   \t  \t   [       c   a   s   e       $   G   :       c   a   s
0003640    e       $   W   :       l   e   a   d   S   t   r       =    
0003660    "                       "   ;       e   n   d   c   a   s   e
0003700   \r  \t  \t           c   a   s   e       $   <   :       c   a
0003720    s   e       $   >   :  \r  \t  \t  \t   p   r   o   c  \0 006
0003740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0003760   \0  \0 001 336 372  \0  \0  \0 004 370  \0 370 366 357 370 366
0004000        =       F   i   l   e   D   e   s   c  \r  \t  \t  \t   p
0004020    V   a   l       =       v   a   l       r   s   h   i   f   t
0004040        1   2   ;       v   a   l       =       v   a   l   &   #
0004060    1   7   7   7  \r  \t  \t           c   a   s   e       $   g
0004100    :       c   a   s   e       $   w   :  \r  \t  \t          \t
0004120    e   n   d   C   h   r       =       $   *   N   ;       e   n
0004140    d   c   a   s   e  \r  \t  \t   ]  \r  \t  \t   P   u   t   T
0004160    e   m   p   l   a   t   e   (   s   ,       "   $   S   $   C
0004200        $   P   (   $   U   O   )       $   U   D           $   C
0004220    "   ,       l   e   a   d   S   t   r   ,       c   h   a   r
0004240    ,       p   r   o   c   ,       p   V   a   l   ,       v   a
0004260    l   ,       d   i   f   ,       e   n   d   C   h   r   )  \r
0004300   \t  \t   ]  \r  \t   P   u   t   T   e   m   p   l   a   t   e
0004320    (   s   ,       "   *   *   *   *   *   *   *   *   *   *   *
0004340    *   *   *   *   *       T   h   e       E   n   d       *   *
0004360    *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   N
0004400    "   )  \r  \t   u   n   t   i   l       E   n   d   o   f   s
0004420    (   s   )       d   o       P   u   t   s   (   s   ,       0
0004440    )  \r  \t   C   l   o   s   e   s   (   s   )  \r  \t   R   e
0004460    s   e   t   S   p   r   u   c   e   F   i   l   e   (   f   )
0004500   \r  \t   ]  \r  \r   a   n   d       F   i   l   e   D   e   s
0004520    c   (   s   ,       s   t   r   e   a   m   )       b   e  \r
0004540   \t   [  \r  \t   P   u   t   T   e   m   p   l   a   t   e   (
0004560    s   ,       "   $   S   "   ,       s   e   l   e   c   t   o
0004600    n       s   t   r   e   a   m       i   n   t   o  \r  \t  \t
0004620    [       c   a   s   e       0       t   o       9   :       "
0004640    W   i   n   v   e   c   -   "   ;       c   a   s   e       1
0004660    0   :       "   F   o   n   t   "   ;       c   a   s   e    
0004700    1   1   :       "   B   a   n   d   "   ;       c   a   s   e
0004720        1   2   :       "   D   L   "  \r  \t  \t          \0 006
0004740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0004760   \0  \0 001 336 370  \0  \0  \0 002 370  \0 370 366 357 370 366
0005000    c   a   s   e       1   3   :       "   E   L   "   ;       d
0005020    e   f   a   u   l   t   :       "   o   t   h   e   r   "    
0005040    ]   )  \r  \t   i   f       0       l   e       s   t   r   e
0005060    a   m       &       s   t   r   e   a   m       l   e       9
0005100        t   h   e   n       P   u   t   T   e   m   p   l   a   t
0005120    e   (   s   ,       "   $   D   "   ,       s   t   r   e   a
0005140    m   )  \r  \t   ]  \r  \t  \r  \r   /   /       O   c   t   o
0005160    b   e   r       9   ,       1   9   7   8           1   0   :
0005200    1   5       P   M   ,       c   r   e   a   t   e   d  \r   /
0005220    /       O   c   t   o   b   e   r       1   0   ,       1   9
0005240    7   8           9   :   5   8       A   M   ,       m   a   d
0005260    e       t   o       w   o   r   k  \r   /   /       O   c   t
0005300    o   b   e   r       1   6   ,       1   9   7   8           2
0005320    :   3   1       P   M   ,       i   m   p   r   o   v   e    
0005340    P   a   g   e   E   v   e   n   t   ,       R   e   c   o   r
0005360    d   E   v   e   n   t   s  \r  \0 004 006 263  \0  \a  \0  \0
0005400  016 315  \f 323  \f 221  \f 351  \f 234 016   _  \r   W  \r    
0005420  017   F  \0  \0  \0   c  \0   e  \0   f  \0   h  \0 024      \0
0005440   \0 021  \0 003 006 264  \0  \a  \0  \0 016 315  \f 323  \f 221
0005460   \f 351  \f 234 016   _  \r   W  \r     017   F  \0  \0  \0   d
0005500   \0   e  \0   f  \0  \r   &   @  \0  \v  \0 002 006 265  \0  \a
0005520   \0  \t 016 213  \0  \0 016 213  \0  \0  \0 036  \0 037  \0  \b
0005540       \0  \0  \a  \0 001 006 266  \0  \0  \0  \0  \0   z  \0  \f
0005560       \0  \0  \v  \0 001 006 267  \0  \a  \0  \t 016   T  \0  \0
0005600  016   T  \0  \0  \0      \0  \f      \0  \0  \v  \0 001 006 270
0005620   \0  \a  \0  \t 016  \a  \0  \0 016  \a  \0  \0  \0   !  \0 023
0005640       \0  \0 022  \0 001 006   %  \0  \a  \0  \0  \r 025  \r 257
0005660   \f 323  \f 221  \f 351  \f 234 016   _  \r   W  \r     017   F
0005700   \0  \0  \0 025  \0 024      \0  \0 023  \0 001 006 005  \0  \a
0005720   \0  \0  \f 377  \r 257  \f 377  \f 323  \f 221  \f 351  \0 006
0005740  020   @ 377   v 037  \0  \a  \0 035  \0  \0   (      \0  \0   @
0005760   \0  \0  \0 370 366  \0  \0  \0  \0 370  \0 370 366 357 370 366
0006000