$ od -c -N 50000 [_CD6_]<sil>GobSources.dm!1>gobe.bcpl
0000000   \r   /   /   g   o   b   e   .   b   c   p   l  \r  \r   g   e
0000020    t       "   s   y   s   d   e   f   s   .   d   "  \r   g   e
0000040    t       "   g   o   b   .   d   e   f   s   "  \r  \r   /   /
0000060        S       Y       M       B       O       L               T
0000100        A       B       L       E           S       T       U    
0000120    F       F      \r  \r   l   e   t       D   e   f   i   n   e
0000140    S   y   m   b   o   l   (   s   t   r   )       =       v   a
0000160    l   o   f       /   /   r   e   t   u   r   n   s       p   o
0000200    i   n   t   e   r       t   o       s   t   r   e   c  \r   [
0000220  032   (   6   3   5   )   \   f   1  \r   l   e   t       s   t
0000240    p       =       L   o   o   k   u   p   (   s   t   r   )  \r
0000260    i   f       s   t   p       n   e       0       t   h   e   n
0000300        r   e   s   u   l   t   i   s       s   t   p  \r  \r   l
0000320    e   t       h       =       H   a   s   h   (   s   t   r   )
0000340        /   /   p   l   a   c   e       i   n       s   y   m   b
0000360    o   l       t   a   b   l   e       f   o   r       t   h   i
0000400    s       s   t   r   i   n   g  \r  \r   l   e   t       l    
0000420    =       s   t   r   >   >   s   t   r   .   l   e   n   g   t
0000440    h  \r   l   e   t       s   z       =       (   o   f   f   s
0000460    e   t       s   t   r   e   c   .   s   t   )   /   1   6    
0000500    +       l   /   2       +   1  \r   C   h   e   c   k   F   i
0000520    t   (   s   z   )       /   /   s   e   e       i   f       t
0000540    h   e   r   e       i   s       e   n   o   u   g   h       r
0000560    o   o   m  \r  \r   N   e   w   I   t   e   m   >   >   s   t
0000600    r   e   c   .   l   i   n   k       =       @   h  \r   @   h
0000620        =       N   e   w   I   t   e   m  \r  \r   N   e   w   I
0000640    t   e   m   >   >   s   t   r   e   c   .   o   r   d   e   r
0000660    e   d       =       0  \r   N   e   w   I   t   e   m   >   >
0000700    s   t   r   e   c   .   n   e   t   l   e   n   g   t   h    
0000720    =       0  \r   N   e   w   I   t   e   m   >   >   s   t   r
0000740    e   c   .   n   e   t   n   u   m       =       0  \r   N   e
0000760    w   I   t   e   m   >   >   s   t   r   e   c   .   l   i   s
0001000    t       =       N   e   w   I   t   e   m   +       (   o   f
0001020    f   s   e   t       s   t   r   e   c   .   m   a   r   k   )
0001040    /   1   6  \r   N   e   w   I   t   e   m   >   >   s   t   r
0001060    e   c   .   m   a   r   k       =       -   1  \r  \r   N   e
0001100    w   I   t   e   m   >   >   s   t   r   e   c   .   s   t   .
0001120    l   e   n   g   t   h       =       l  \r   f   o   r       i
0001140        =       1       t   o       l       d   o       N   e   w
0001160    I   t   e   m   >   >   s   t   r   e   c   .   s   t   .   c
0001200    h   a   r   ^   i       =       s   t   r   >   >   s   t   r
0001220    .   c   h   a   r   ^   i  \r   N   e   w   I   t   e   m   =
0001240        N   e   w   I   t   e   m   +   s   z  \r   r   e   s   u
0001260    l   t   i   s       @   h 032   l   4   2   6   8   \   f   1
0001300   \r   ]  \r  \r   a   n   d       L   o   o   k   u   p   (   s
0001320    t   r   )       =       v   a   l   o   f       /   /   r   e
0001340    t   u   r   n   s       s   t   p       i   f       d   e   f
0001360    i   n   e   d   ,       e   l   s   e       0  \r   [ 032   \
0001400    f   1  \r   l   e   t       l   i   n   k       =       H   a
0001420    s   h   (   s   t   r   )  \r   u   n   t   i   l       l   i
0001440    n   k       e   q       0       d   o  \r   [ 032   l   4   2
0001460    6   8   \   f   1  \r   i   f       S   t   E   q   (   s   t
0001500    r   ,   l   v   (   l   i   n   k   >   >   s   t   r   e   c
0001520    .   s   t   )   )       t   h   e   n       r   e   s   u   l
0001540    t   i   s       l   i   n   k  \r   l   i   n   k       =    
0001560    l   i   n   k   >   >   s   t   r   e   c   .   l   i   n   k
0001600  032   l   5   5   3   8   \   f   1  \r   ]  \r   r   e   s   u
0001620    l   t   i   s       0 032   l   4   2   6   8   \   f   1  \r
0001640    ]  \r  \r   a   n   d       H   a   s   h   (   s   t   r   )
0001660        =       v   a   l   o   f  \r   [ 032   \   f   1  \r   l
0001700    e   t       r       =       0  \r   f   o   r       i       =
0001720        1       t   o       s   t   r   >   >   s   t   r   .   l
0001740    e   n   g   t   h       d   o       r       =       r   +   (
0001760    s   t   r   >   >   s   t   r   .   c   h   a   r   ^   i   )
0002000   \r   r   e   s   u   l   t   i   s       h   a   s   h   t   a
0002020    b       +       (   r       r   e   m       h   t   s   i   z
0002040    e   )  \r 032   l   4   2   6   8   \   f   1  \r   ]  \r  \r
0002060    a   n   d       C   h   e   c   k   F   i   t   (   w   r   d
0002100    s   )       b   e  \r   [ 032   \   f   1  \r   l   e   t    
0002120    l       =       N   e   w   I   t   e   m   +   w   r   d   s
0002140   \r   i   f       U   s   c   (   l   ,   S   p   a   c   e   T
0002160    o   p   )       g   r       0       t   h   e   n  \r   [ 032
0002200    l   4   2   6   8   \   f   1  \r   C   a   l   l   S   w   a
0002220    t   (   "   S   p   a   c   e       E   x   h   a   u   s   t
0002240    e   d   "   )  \r   f   i   n   i   s   h 032   l   5   5   3
0002260    8   \   f   1  \r   ] 032   l   4   2   6   8   \   f   1  \r
0002300    ]  \r   /   /   S       T       R       I       N       G    
0002320            R       O       U       T       I       N       E    
0002340    S      \r   a   n   d       W   S   S   (   s   t   r   e   a
0002360    m   ,   s   t   r   i   n   g   )       b   e  \r   [ 032   \
0002400    f   1  \r   f   o   r       i       =       1       t   o    
0002420    s   t   r   i   n   g   >   >   s   t   r   .   l   e   n   g
0002440    t   h       d   o       P   u   t   s   (   s   t   r   e   a
0002460    m   ,   s   t   r   i   n   g   >   >   s   t   r   .   c   h
0002500    a   r   ^   i   ) 032   l   4   2   6   8   \   f   1  \r   ]
0002520   \r  \r   a   n   d       A   p   p   e   n   d   C   (   c   h
0002540    a   r   ,   s   t   r   i   n   g   )       b   e  \r   [ 032
0002560    \   f   1  \r   l   e   t       s   t       =       s   t   r
0002600    i   n   g   >   >   s   t   r   .   l   e   n   g   t   h    
0002620    +   1  \r   s   t   r   i   n   g   >   >   s   t   r   .   c
0002640    h   a   r   ^   s   t       =       c   h   a   r  \r   s   t
0002660    r   i   n   g   >   >   s   t   r   .   l   e   n   g   t   h
0002700        =       s   t  \r 032   l   4   2   6   8   \   f   1  \r
0002720    ]  \r  \r   a   n   d       A   p   p   e   n   d   S   (   s
0002740    t   s   ,   s   t   d   )       b   e       /   /   c   o   p
0002760    y       f   r   o   m       s   o   u   r   c   e       t   o
0003000        d   e   s   t   i   n   a   t   i   o   n  \r   [ 032   \
0003020    f   1  \r   l   e   t       d   l       =       s   t   d   >
0003040    >   s   t   r   .   l   e   n   g   t   h  \r   f   o   r    
0003060    i       =       1       t   o       s   t   s   >   >   s   t
0003100    r   .   l   e   n   g   t   h       d   o  \r   [ 032   l   4
0003120    2   6   8   \   f   1  \r   d   l       =       d   l   +   1
0003140   \r   s   t   d   >   >   s   t   r   .   c   h   a   r   ^   d
0003160    l       =       s   t   s   >   >   s   t   r   .   c   h   a
0003200    r   ^   i 032   l   5   5   3   8   \   f   1  \r   ]  \r   s
0003220    t   d   >   >   s   t   r   .   l   e   n   g   t   h       =
0003240        d   l 032   l   4   2   6   8   \   f   1  \r   ]  \r  \r
0003260    a   n   d       A   p   p   e   n   d   N   (   n   u   m   ,
0003300    s   t   r   ,   f   l       ;       n   u   m   a   r   g   s
0003320        n   a   )       b   e       /   /   d   e   c   i   m   a
0003340    l       n   u   m   b   e   r  \r   [ 032   \   f   1  \r   i
0003360    f       n   a       l   s       3       t   h   e   n       f
0003400    l       =       0  \r   l   e   t       c   h   o   u   t    
0003420    =       f   a   l   s   e  \r   l   e   t       r   t   a   b
0003440        =       t   a   b   l   e       [       1   0   0   0   0
0003460    ;       1   0   0   0   ;       1   0   0   ;   1   0   ;    
0003500    1   ;       ]      \r   f   o   r       i       =       0    
0003520    t   o       4       d   o  \r   [ 032   l   4   2   6   8   \
0003540    f   1  \r   l   e   t       r   a   d   p       =       r   t
0003560    a   b   !   i  \r   i   f       r   a   d   p       g   r    
0003600    n   u   m       t   h   e   n  \r   [ 032   l   5   5   3   8
0003620    \   f   1  \r   i   f       i       g   r       (   4   -   f
0003640    l   )       t   h   e   n       c   h   o   u   t       =    
0003660    t   r   u   e  \r   i   f       c   h   o   u   t       t   h
0003700    e   n       A   p   p   e   n   d   C   (   $   0   ,   s   t
0003720    r   )  \r   l   o   o   p 032   l   6   8   0   8   \   f   1
0003740   \r   ]  \r  \r   /   /   n   u   m   b   e   r       g   e    
0003760    r   a   d   p  \r   l   e   t       c   h       =       $   0
0004000   \r  \r   u   n   t   i   l       n   u   m       l   s       r
0004020    a   d   p       d   o  \r   [ 032   l   5   5   3   8   \   f
0004040    1  \r   c   h       =       c   h   +   1  \r   n   u   m    
0004060    =       n   u   m   -   r   a   d   p 032   l   6   8   0   8
0004100    \   f   1  \r   ]  \r  \r   c   h   o   u   t       =       t
0004120    r   u   e  \r   A   p   p   e   n   d   C   (   c   h   ,   s
0004140    t   r   ) 032   l   5   5   3   8   \   f   1  \r   ]  \r   i
0004160    f       n   o   t       c   h   o   u   t       t   h   e   n
0004200        A   p   p   e   n   d   C   (   $   0   ,   s   t   r   )
0004220        /   /   n   o   t   h   i   n   g       o   u   t   p   u
0004240    t       y   e   t 032   l   4   2   6   8   \   f   1  \r   ]
0004260   \r  \r   a   n   d       A   p   p   e   n   d   B   (   n   u
0004300    m   ,   s   t   r   )       b   e       /   /   o   c   t   a
0004320    l       n   u   m   b   e   r   ,       n   o       z   e   r
0004340    o       s   u   p   p   r   e   s   s   i   o   n  \r   [ 032
0004360    \   f   1  \r   f   o   r       i       =       1   5       t
0004400    o       0       b   y       -   3           d   o  \r   A   p
0004420    p   e   n   d   C   (   (   (   n   u   m       r   s   h   i
0004440    f   t       i   )   &   7   )   +   $   0   ,   s   t   r   )
0004460  032   l   4   2   6   8   \   f   1  \r   ]  \r 032   \   f   1
0004500   \r  \0                                                        
0004502