( table verbs ) <STKH                                           ( PATTERN MEMORY GOODIES )                                      { : <ANIMATION } HERE AT-HERE ! PT-HERE @ DP ! { ; }            { : ANIMATION> } HERE PT-HERE ! AT-HERE @ DP ! { ; }            { : AT! } 2* ATBL + U! { ; }                                    { : NC= } 1+ DUP C= { ; } { : SC= } DUP C= { ; }                { : UB@ } ( ADDR ... DATA )                                     DP { @ SWAP } DP { ! }                                          diskhere { save } SET-OBJ-FILE { BLOCK + B@ SWAP ;S }           DP { ! } { ; }                                                  0 C= NORMAL                                                     040 C= FLOP                                                     080 C= FLIP                                                     0C0 C= FLIP-FLOP                                                STK> -->                                                                                                                        ( table verbs ) <STKH                                           { V= SPMARK } {  BV= ETYPE }  { BV= ESIZE } ( 2, or 3 bytes )   { V= IDX } { V= CNT } {  BV= TTYPE } {   V= #APATS }            { : <TBL }  ( esize etype tbltype [name] --- ) <ANIMATION        DATA { 0 } , { DUP } B, TTYPE { B! } ETYPE { B! }                ESIZE { B! } SP@ SPMARK { ! } {  -1 } #APATS { ! } { ; }      ( type bottom 3 bits match vlogicstat2 bits )                   { : <ANIM-TBL }         ( [name] --- )  3  00 81 <TBL { ; }     { : <ANIM-MAG-TBL }     ( [name] --- )  4  00 89 <TBL { ; }     { : <ROT-TBL }          ( [name] --- )  3  00 82 <TBL { ; }     { : <ROT-ANIM-TBL }     ( [name] --- )  3  81 83 <TBL { ; }     { : <PER-TBL }          ( [name] --- )  2  00 84 <TBL { ; }     { : <PER-ANIM-TBL }     ( [name] --- )  2  81 85 <TBL { ; }     { : <PER-ROT-TBL }      ( [name] --- )  2  82 86 <TBL { ; }     { : <PER-ROT-ANIM-TBL } ( [name] --- )  2  83 87 <TBL { ; }     STK> -->                                                        ( table verbs cont )                                            <STKH                                                           { : TBL> }  ( entries --- )                                      SP@ SPMARK { @ SWAP - 2/ } ( #words stacked )                   ESIZE { B@ 1- / }                                              ( #entries ) { DUP } CNT { ! DUP } ESIZE { B@ * } DP { +! }      HERE IDX { ! }                                                 {  0 DO } ( next entry ) ESIZE { B@ 1- PICK }                      ETYPE { B@ 80 AND IF ( not pattern ) 3 + THEN }              -->                                                                                                                                                                                                                                                                                                                                                                                                                                                             ( table verbs cont )                                               IDX { @ 2- } U! ESIZE { B@ MINUS } IDX { +! }                   ESIZE { B@ 2 <> IF } IDX { @ } UB!  { THEN }                    ESIZE { B@ 4 = IF } IDX { @ 1+ } UB!  { THEN DROP LOOP }      TTYPE { B@ DUP DUP 81 = SWAP 89 = OR IF ( anim ) 0 }           { SWAP 81 = IF } B, { ELSE } , { THEN } IDX { @ } ,             ( close loop) { ELSE DROP }     { THEN }                         TTYPE { B@ DUP DUP 81 = SWAP 89 = OR SWAP 84 = OR IF }         ( anim, anim-mag or per )                                          CNT { @ } IDX { @ 3 - } U! { ( #entries ) THEN }              TTYPE { B@ DUP 82 = SWAP 83 = OR IF ( rot ) }                  { 0 } CNT { @ BEGIN 2/ SWAP 1+ SWAP DUP NOT END DROP              9 SWAP - ( shift amount ) }                                     IDX { @ 3 - } U! { THEN } ANIMATION> { ; }                    STK> ;S                                                                                                                         