{ษอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออป
 บ                              MOS PUBLICITY                                บ
 ฬอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออน
 บ                  To be used with MOS v3.1 Professional GUI                บ
 ฬอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออน
 บ Coded by Zuul as BouFFtou as Cheveau Frdric.                            บ
 บ Source Turbo Pascal v7.00 generated by MRE (MOS Resource Editor) v2.8.    บ
 บ Contact us on MOS Home's Page - http://www.multimania.com/mos             บ
 ศอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออผ}

{$M 65500,0,365520}                     {*Stack And Heap*}

Program PUB;                            {*Program Name*}

Uses Dos,                               {*Unit BP7 DOS*}
     MOS_VESA,MOS_DEB,                  {*Manage VESA and debug*}
     MOS_STR, MOS_BLK,                  {*Manage Strings and blankers*}
     MOS_CRT, MOS_BAS,                  {*Manage Initialisations and CRT*}
     MOS_ASM, MOS_MSE,                  {*Manage Assembler and Mouse*}
     MOS_IPX, MOS_XMS,                  {*Manage Networks and XMS Memory*}
     MOS_TOO, MOS_GAD,                  {*Manage Tools and Gadgets*}
     MOS_GFX, MOS_BMP,                  {*Manage Graphics and BMP*}
     MOS_WIN, MOS_MEN,                  {*Manage Windows and Menus*}
     MOS_WAV, MOS_VAR,                  {*Manage WAV Sounds*}
     MOS_DIR, MOS_SYS,                  {*Manage Disk and System*}
     MOS_TSK, MOS_LIS,                  {*Manage Tasks and Lists*}
     MOS_EZR, MOS_GPH,                  {*Manage Dialogs and Graph*}
     MOS_KBD, MOS_DSK,                  {*Manage Keyboard and Disk*}
     MOS_REQ, MOS_OCG,
     MOS_FIL, MOS_SWAP;                 {*Manage Requesters and Swap Disk*}

Const
    App_Name='MOS Publicity';
    App_Version='v1.0';
    App_Date='14.12.1998';

{ษอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออป
 บ                             PROCEDURE Main                                บ
 ศอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออผ}

Procedure Main;
Var W0            :TWindow;
    PA            :TAction;

{**************************** DISPLAY FIRST ANIM ****************************}

Function DISPLAY_ANIM1:Boolean;
Var A:Integer;
Begin
Win_Clip(On,W0);                        {*Clipping Window*}
Mse_Hide;
A:=211;
   Repeat
   If Kbd_TestKey(27,1) Then            {*ESC Close Window*}
      Begin
      DISPLAY_ANIM1:=FALSE;
      Exit;
      End;
   Show_BMP(0,0,212,281,A,0,'BEFORE.BMP',$00A0);
   Dec(A,3);
   Until A<=0;
Show_BMP(0,0,212,281,0,0,'BEFORE.BMP',$00A0);
Mse_Show;
Win_Clip(Off,W0);                       {*Restore Normal Clipping*}
DISPLAY_ANIM1:=TRUE;
End;

{************************ DISPLAY ANIM DE TRANSITION ************************}

Function DISPLAY_ANIM2:Boolean;
Var A,B:Real;
Begin
Win_Clip(On,W0);                        {*Clipping Window*}
Mse_Hide;
A:=0; B:=0.1;
   Repeat
   If Kbd_TestKey(27,1) Then            {*ESC Close Window*}
      Begin      
      DISPLAY_ANIM2:=FALSE;
      Exit;
      End;
   Show_BMP(0,Round(A),212,281,0,0,'BEFORE.BMP',$00A0);
   VESA_SetColor(7);
   VESA_Bar(0,0,212,Round(A)-1);
   A:=A+B;
   B:=B+0.2;
   Until A>=281;
Mse_Show;
Win_Clip(Off,W0);                       {*Restore Normal Clipping*}
DISPLAY_ANIM2:=TRUE;
End;

{**************************** DISPLAY FIRD ANIM *****************************}

Function DISPLAY_ANIM3:Boolean;
Var A:Integer;
Begin
Win_Clip(On,W0);                        {*Clipping Window*}
Mse_Hide;
A:=211;
   Repeat
   If Kbd_TestKey(27,1) Then            {*ESC Close Window*}
      Begin
      DISPLAY_ANIM3:=FALSE;
      Exit;
      End;
   Show_BMP(0,0,212,281,A,0,'AFTER.BMP',$00A0);
   Dec(A,3);
   Until A<=0;
Show_BMP(0,0,212,281,0,0,'AFTER.BMP',$00A0);
Mse_Show;
Win_Clip(Off,W0);                       {*Restore Normal Clipping*}
DISPLAY_ANIM3:=TRUE;
End;

{************************** DISPLAY SCROLL TEXT *****************************}

Function DISPLAY_SCROLLTEXT1:Boolean;   {*Display Scrolltext1*}
Var A:Real;
Begin
Win_Clip(On,W0);                        {*Clipping Window*}
Mse_Hide;
A:=0;
   Repeat
   If Kbd_TestKey(27,1) Then            {*ESC Close Window*}
      Begin
      DISPLAY_SCROLLTEXT1:=FALSE;
      Exit;
      End;
   Show_BMP(213,0,213+500,281,0,Round(A),'TEXT1.BMP',$0080);
   A:=A+0.4;
   Until A>556;
Mse_Show;
Win_Clip(Off,W0);                       {*Restore Normal Clipping*}
DISPLAY_SCROLLTEXT1:=TRUE;
End;

{************************** DISPLAY SCROLL TEXT *****************************}

Function DISPLAY_SCROLLTEXT2:Boolean;   {*Display Scrolltext1*}
Var A:Real;
Begin
Win_Clip(On,W0);                        {*Clipping Window*}
Mse_Hide;
A:=40;
   Repeat
   If Kbd_TestKey(27,1) Then            {*ESC Close Window*}
      Begin
      DISPLAY_SCROLLTEXT2:=FALSE;
      Exit;
      End;
   Show_BMP(213,0,213+500,281,0,Round(A),'TEXT2.BMP',$0080);
   A:=A+0.3;
   Until A>656;
Mse_Show;
Win_Clip(Off,W0);                       {*Restore Normal Clipping*}
DISPLAY_SCROLLTEXT2:=TRUE;
End;

{***************************** MAIN PROCEDURE *******************************}

Begin
If Not Test_BMP('BEFORE.BMP') Then Exit;
If Not Test_BMP('AFTER.BMP')  Then Exit;
If Not Test_BMP('TEXT1.BMP')  Then Exit;
If Not Test_BMP('TEXT2.BMP')  Then Exit;

Set_Font('MODN.CHR',4);
Win_Init(0,0,463,279,$5541,'MOS Publicity',W0);
Win_Sup(0,0,0,0,0,0,0,0,0,7,$0057,W0);  {*Supplement*}
If NError<>0 Then Exit;                 {*Initialisations Errors ?*}
Win_Draw(W0);                           {*Display Window*}

If Not DISPLAY_ANIM1 Then               {*Affiche premire animation*}
   Begin
   Win_Kill(W0);                        {*Close Window if Needs*}
   Exit;
   End;
If Not DISPLAY_SCROLLTEXT1 Then         {*Display Scrolltext*}
   Begin
   Win_Kill(W0);                        {*Close Window if Needs*}
   Exit;
   End;
If Not DISPLAY_ANIM2 Then               {*Affiche deuxime animation*}
   Begin
   Win_Kill(W0);                        {*Close Window if Needs*}
   Exit;
   End;
If Not DISPLAY_ANIM3 Then               {*Affiche Troisime animation*}
   Begin
   Win_Kill(W0);                        {*Close Window if Needs*}
   Exit;
   End;
If Not DISPLAY_SCROLLTEXT2 Then         {*Display Scrolltext*}
   Begin
   Win_Kill(W0);                        {*Close Window if Needs*}
   Exit;
   End;

Mse_Hide;
Test_AnythingActioned(PA,C_Init);
Repeat                                  {*On sort...*}
Until Test_AnythingActioned(PA,C_Execute);
Mse_Show;

Win_Kill(W0);                           {*Close Window if Needs*}
End;

{ษอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออป
 บ                        MAIN PROGRAM (INITIALISATIONS)                     บ
 ศอออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออผ}

Begin
INIT_BASE;                              {*Initialise Hardware*}
INIT_SCREEN;                            {*Initialise Screen*}
INIT_MOUSE;                             {*Initialise Mouse*}

Oldexit:=ExitProc;                      {*Intercept Errors*}
SetJump(MyAddr);
ExitProc:=@ENTRY_INT24;

                                        {*Call Program Execution*}
If Gfx_Mode>=10 Then Main;              {*256 Colors Mode Minimum...*}

DONE_MOUSE;                             {*Restore Mouse*}
DONE_SCREEN;                            {*Restore Screen*}
DONE_BASE;                              {*Restore Hardware*}
End.
