[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]

    {
    PROGRAM NAME: SHAKEIT.PAS

    AUTHOR      : SCOTT TUNSTALL B.Sc

    CREATION    : 12TH AUGUST 1997
    DATE

    NOTES:
    I guess you could call this a kind of "water ripple" demo.

    It needs VGA, TP7 and my KOJAKVGA unit V3.3 to run (get it from
    June 97 SWAG, GRAPHICS section) and in case you're wondering why
    I wrote this, I was inspired by a demo that came with a file my
    mate Geoff gave me ages ago. Which was much better than this <g> !

    Hope you like it. The "shake" proc is quite interesting,
    if I say so myself !!! ;)

    Have fun!
         Scott.

    DISCLAIMER:
    Use this program at your OWN RISK. CGA/EGA card owners, do NOT complain
    if this kills your PC! :>

    If you use this routine at all, please credit KojakVGA. Thank you.
    }

    Program ShakeIt_Baby;

    Uses KOJAKVGA,crt;       { My baby! ;) }

    { If you wanna see 1 kind of shake, use the $DEFINE below }

    {$DEFINE USE_SHAKE}

    type shaketype=(ShakeLeft,ShakeRight);

    Const StartY=1;     { Pixel row where dat shakin' starts ! }
          EndY=199;       { And where it ends }

    Var HiddenBMap : pointer;
        MyPalette  : PaletteType;
        ShakeDir   : ShakeType;
        XDistLatch,
        XDist      : byte;
        YCount     : byte;

    Begin
         { Load PCX to "shake" into a hidden bitmap }

         HiddenBMap:=New64KBitmap;
         UseBitmap(HiddenBMap);
         Cls;

         { You can use any 256 colour PCX file you like (up to 320x200 in size,
           any bigger and the image is clipped) }

         LoadPCX(ParamStr(1),MyPalette);

         InitVGAMode;
         UsePalette(Mypalette);

         { Initial X distance }

         XDistLatch:=1;

         { And we're shaking to the left initially.. }

         ShakeDir:=ShakeLeft;

         Repeat
               { Draw "non-shaking" parts of screen.. If you're doing
                 any scrolly messages etc., draw to bitmap <HiddenBmap>
               }

               If StartY >0 Then
                  CopyAreaToBitmap(0,0,319,StartY-1,Ptr($a000,0),0,0);

               If EndY < 199 Then
                  CopyAreaToBitmap(0,EndY+1,319,199,Ptr($a000,0),0,EndY+1);

               { Now do the "difficult" stuff. }

               XDist:=XDistLatch;
               For YCount:=StartY To EndY Do
               Begin

    {$IFDEF USE_SHAKE}
                   Case ShakeDir Of

                   ShakeLeft: Begin
                              CopyAreaToBitmap(4,YCount,315,YCount,
                              Ptr($a000,0),3-XDist,YCount);
                              Inc(XDist);
                              End;

                   ShakeRight: Begin
                               CopyAreaToBitmap(4,YCount,315,YCount,
                               Ptr($a000,0),XDist,YCount);
                               Inc(XDist);
                               End;
                   End;

                   If XDist=4 Then
                   Begin
                      XDist:=1;
                      If ShakeDir = ShakeRight Then
                         ShakeDir:=ShakeLeft
                      Else
                          ShakeDir:=ShakeRight;
                   End;

    {$ELSE}

                    CopyAreaToBitmap(4,YCount,315,YCount,
                    Ptr($a000,0),3-XDist,YCount);
                    Inc(XDist);
                    If XDist=3 Then
                       XDist:=1;
    {$ENDIF}

               End;

               { Make the Latch (XDist reload value) different for
                 each time the for loop executes }

               Inc(XDistLatch);
               If XDistLatch = 3 Then
                  Begin
                  XDistLatch:=1;
                  If ShakeDir = ShakeLeft Then
                     ShakeDir:= ShakeRight
                  Else
                      ShakeDir:= ShakeLeft;
                  End;

         { Wait 5 video retraces }

         Vwait(8);
         Until Keypressed;

         { Release hidden bitmap from memory }

         FreeBitmap(HiddenBMap);

    End.

    { Here's the PCX file I used to test SHAKEIT.PAS; not very interesting,
      admittedly but hey...

      Needs XX3402 to decode. Put the PCX file in the same directory
      as the EXE file before you run.
    }

    {-------------------8< START CUT HERE----------------------------------}

    *XX3402-006285-120897--72--85-64865-----SHAKEIT.PCX--1-OF--2
    0UI-0++++++z+QQ+9+2g+E++++U60-+E2-UM40Yd8GYt+0Z0+12lAHYtCHZG+1ZO+270EY7O
    +27X+2d8GYdX+++-E+2-++++++++++++++++++++++++++++++++++++++++++++++++++++
    ++++++++++++++++++++++++++1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1o+AICzk1z+Dw+zk19+D++lkv32gU+2gIKsk125A6Puk144wY+5Aw+lVTX+AMCt+13-yg+
    vk151gQGlk143iA+kVn24yg+lVj5+AAPnk143yA+2gICt+13-yg+vU141gcGlU143iA+lVjf
    +AMPlE134ww+lVTX+AAGkkvY+AI5uk1i+AICn-93+AMKsk144yg+lVj2+AMPnk143yA+l-90
    1iE+lETf+Co+l+v22g6+ll6KlE143iA+lVjf+AMPl+144ww+lVTX+AMGt+13-yg+vE111gAG
    lU112gEKl+143iA+lVjp+AMPnk+PlFTX+AMGt++6l+Tf+Co+1gIGlk+GlFP2+AMKkU141Ag+
    m-j6+AMPoU145Ro+lVjD+AAPklT0+AMLmk163gU+lV90+-931hk+kUX1-yg+vE142gQ+lVP2
    +AIK3k171AQ+4AgPlU144wE+llr3+AgRo+142A6+mljA+AMPmVT5+AkKlU182gMCl+141gQ+
    1gI6kk110A65uk1h+AUGnk113gALmkn3+-XB4wI+lFgRkk155QI+nFrD+AMEkU135QMPn+16
    4wYLlE113wgKlE192gMCkk141gM+kkv10AE+l+U5uk1h+AYGkVPA+-P23wcAkUr3+AwPl++P
    lFr1+AQRl+1D5Qs+lV10+AYRkVjA+AgPlVT3+AILmVP2+-PA2gECkk141gM+l+v00AE+lEXf
    +Cs+ll953gU+lFT61AEBl+1E4wE+lVr0+AQRlE1D5Qs+lV10+AgRn+1B4wILkk153wYKl+10
    3gkGl+v1+AMClE131UX2+AI6uk1i+AIGmlP4+AELkkn2+AQBkk144wE+l-j05QE+lVo+llr3
    +AMRlE145Qo+lV12+AMRnk164wE+klj13wA+lVT2+AMKl+123gEGl+112gACkk141gE+lUv3
    +AI6uk1j+AAGnFP3+AALl+n3+AMBl+124wM+lFr2+AoRlU135QM+lVrB+AMEl+145Qw+llj4
    +AEPkVT1+AELlU133gE+lFP02gM+l-901g6+lUv2+AMClE120Ck+wE1C3Un2+A6Ll+n4+AMB
    n+155QE+n-r5+AITlk135wo+lV12+AMRnk144wQ+lVj9+AALl-P2+AMKlk132Uv1+AMCkk13
    1gM+l+Xg+DE+mFP11AE+kVT11+r4+AMBlk+Pmlr2+AgR5wM+oVzB+AMFl+102AERnk105QEP
    lk144wM+mVT03gE+lVP5+AMGkk141g6+lUv4+AE6v+1s+AEKlEn1+-T01AABlU141QI+4woR
    l+145QIT2QM+oVzB+AMFl+102QEEnk125Q6Plk144wE+nFQKl+143gQ+lV92+AICkU141gM+
    l+Xg+Cw+kV17+AQAkk+LlEr4+AEBkUz2+AwRl+105QETlF502wI+oVzB+AMHl+142Qw+lVr5
    +AMPkk114wkLl+143gQ+lV92+AMC+AIClk+CkkXg+Ck+1wIEmE141AA+lUr4+A6BkUz02AA+
    mVo+l-oEl+105wEFm-D2+B6TnE142wE+kVD22Qw+lVr5+AMPkU+Bl-j33k133wE+lVP5+AMG
    l+1A1gU+1g66v+1g+AMEmE141AA+lUr4+A6Dl-11+AMRlE+Rkl+Fl+102QIH+AMHl+145xY+
    lVD2+AMHnk+NlFr5+AMPkU111QAPlE133wE+lVP5+AMGlE191gU+kUs6v+1g+AQElk141+r1
    +AMBlU142A6+lVr3+A6El-52+AMHkU152wE+lFz4+AIHnU142wE+lVDD+-f14QARlU144k14
    1QI+lVT2+-L43gM+3gIGlE+GmEvs+Co+lV+AlE141A6Bkk141QM+lV10+AMRlE132FD2+AMH
    kk142wE+lVD3+AMHnE142wE+lVDD+-104gAN5QI+klr14w6+lUr3+AMLl++A3QIKlE113gAG
    lU102gUCm+13-ig+vE132AgAkkr2+AMBlU142A6+lFr02-2+l-522wE+lVD2+AMHkk163+16
    3Ao+lVD2+AMH+A6Hn++FkV114gAN+AQR4w6+1wQB+AEPl-T2+A6AkVL33U143g6Glk102gQC
    m+13-ig+vU122AcAl+r2+AIB1wM+lV11+-r12AIFllD2+AMHl+102wEIl+1D3As+lVH2+AYH
    n+112QAEkVf04QQRl+101wUBklj13wE+kkn03QkKm+112gICmE13-ig+vU122AYAl+r3+AAB
    kUwElU142AA+kV132QcHkk142wI+klH16AE+nFHD+AMIl++Im-DA+-v22QAEkVf04QIRl+10
    2A6Dlkr24w6Lkk131-L93gY+kl921gY+lEPf+D++2AUAlEr4+A6BkUz02AM+lV12+AAFllA+
    lFD1+AAHklH3+-H46AE+mlHE+AMIlE123AEHn++SkVD12E+FkV104g6NkVr4+A6EkUz41E+B
    klgLkk141++Jm-P8+AEGkUv8+AI4uk1m+AMAl+r6+A6Dl-14+AMElE152wA+lFD1+AMIlU14
    6AM+m-HF+A6Ul-H4+AQIn+105gAH2Q6+kV502A6OmE112A6DkUr1+A6Bklj1+AMAkU+JlFPA
    +AIG1gc+lEPf+Dw+zk1z+Dw+l+142jc+zk1z+Dw+zk11++b32jg+zk1z+Dw+zU+7kU110QEG
    yk1z+Dw+zk1y+AQ7kl9v+Dw+zk1z+Ds+m+YGz+1z+Dw+zk1y+AU7zE1z+Dw+zk1y+AQ7zU1z
    +Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z
    +Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z
    +Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z
    +Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+C6++w66+wE++wA6+wE++lP05lM1mU+1
    kUU1lU110+D3++D00+D2++D10+D10AM++w66-AE++kv15kX7++D00+HC+A66+wk++w66zk1P
    +Dw+sU+TkWk6kk+28g6g7AA++m9490Q1m++6kWkTlE+1kmkKlE+6kWkTkk+18A6g8+AZkWk1
    lE+KkWkRkk+T8gIg8Uv5+0D090bA+-gekmkTmE+16gAg8Uvz+BY+zk1W+-z09+X0++AdkWkY
    l++ckmn07Wf090c1lk+6kWkTlE+VkmkclE+6kWkTkk+ZkWkc+k+KkWkRlE+bkWk1kU+Ykmkc
    7Wf19+v3++D29+v8++v49-j6+0949+Hz+BU+zk1W+-z09+U++mX090X2+-z090U1kk+TkWkb
    lk+6kWkTlE+dl0k1l++6kWkTkU+YkWke+w6++w6g8QE++w6g8A6+4w6g8+D1+-j090f3+-P2
    90D8+0X09+E18Wkdlk+1kWkd+kX090Dz+BU+zk1W+-z09+U18A6g8+D1++Ae90Y1lE+ZkWk2
    lU+6kWkTl++CkWkXkWkVl++6kWkT+0H090c2l++ZkWk2kk+RkWkKkU+e90Y1lE+b80A1l++c
    90cZkWk1mE+R5m90+0P09AQ++lwV3g6+kWkazk1M+Dw+sU+TkWkG8A6g8+D2++X09054++X0
    9-z4++X09-z2+0D09+Ad90b2++X09-wYkWke-AI+3g6g6QA+8A6g+k+6kWkVnE+1kWkX3g6g
    3go++mcg7wk+-w6g5zw+q+1z+C6+5w6g8wAg5wI+5w6g0AQ+kWkalU+6kWkTkk+1kWkb+-r0
    9+v1++X090j190T4++D090b0++D090L0+-z09+XB+0509+Q+8Wkcn++K8Wkc+wg+6g6g7Tw+
    qE1z+C6+5wQg-AE+5w6g0AQ+kWkalU+6kWkTkk+KkWkK++D090D1++X59-j4+0L09+E+5Q6g
    3g6+5w6g0AA+7gIg0AA+8GkdkU+XkWk1mk+ZkWkZ+wg+8g6g5zw+qE1z+C6+5wAg8W5090X2
    +-z09+X5+A6g7gM+0A6g5wA+8A6g+w6+80ke+w6+0AEg5Q6g8UD3+-P0902+80kekk+TkWk6
    kk+alGk6kU+CkWkVkU+CkWkTmk+61WYg8+D8++sKkWkYzk1M+Dw+sU+TkWke-++bkWkPkk+C
    kWkTlU+6kWkVlU+6kWkTkU+1mGkKkU+6kmkG+-z090L3++D090Y1kWkXkk+6kWkTkk+2kUUX
    kWk6kU+Xm0kdnE+KkWkKn++XkWk1zk1L+Dw+sU+TkWkCkU+1kWke+w6++w6g8QM+6w6g3UEa
    9-z0++X09-z0+-z790T0++X09051+0b09+v3+0L090D09+v1++Ae90b4+-z09+U++mf79+T4
    ++A63UX0++X09-z4++A65ED0+-z09+Xz+BQ+zk1W+-z09+X1+-z090T1+0D090H2+-9090Y+
    +w6g7w6+5Q6g1g6+8GkelEUbkWk1++X09-z1++T090c1l++Kl0kdlE+WkWkYl++18A6g0++K
    kWkWl+UGkWkXlU+1kWkbkU+TkWkK++D00+A+3g6g5w6+7w6g+zw+pk1z+C6+5w6g0AE+8A6g
    1g6++mf090YV5mT19+T0+0b090IV8Wke+k+5kWkXlE+KkWkT++X09-z2+0909092++D29053
    ++AckWkd6FwZl0k2+0T09+D3+0Yg8UD4+0T090IVkWke+k+6kWkT++AekWkV7Q6g7zw+q+1z
    +C6+5w6g0AE+-w6g8UD0++EclWke1gA+-mf39-90+0D09+v3++D090Y+0A6g5wE++mf09+T2
    +0L19+H4++Ablmkd1U+1kWkclU+VkWkKlU+18gEg8UH0++X09-z0++v390U1zk1M+Dw+sU+6
    kVw1lE+KkVw6l++C6Q6a6lM1lE+16Q6a6ED1+-j05wQ+3g6T+ED05kX3++X05lP2++X15wY+
    --z17Vw2kk+5kVw6lU+1kVwGlk+15Q6a6ED1++D05kX1++AVkWMR+zw+qE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    ***** END OF BLOCK 1 *****

    *XX3402-006285-120897--72--85-56142-----SHAKEIT.PCX--2-OF--2
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+
    lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+zk1z+Dw+lE1z+Dw+
    zk1z+Dw+lE+A++++0+U62-+E4-UM8GYd8HY+8I6+AH2lCHYtCJ6+CJc+EY70EZc+EaA+GYd8
    GaA+Gag+GbA+IZ7GIbA+Ibg+KZ6+KZdOMqBXMtE+OqA+Oqg+OqhfOtk+QrBnQuI+SrhvV9o+
    X6mAZ7GIb7mQfOqhhPKpjPqxngvCphPKrhvSvyzjxzTrzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    zzzzzzzzzzzzzzzzzzzzzzzzzzzz
    ***** END OF BLOCK 2 *****

    {-------------------8< END CUT ----------------------------------------}

[Back to GRAPHICS SWAG index] [Back to Main SWAG index] [Original]