@ Variables & Constants... 
:MOS_ASM Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_ASM               
^ͼ

 Const Int05_IsCalled:Boolean=False;            {*Print Screen*}
 
 Type TJump=Record                              {*To store Sp, Bp, Add*}
      SpReg,
      BpReg :Word;
      JmpPt :Pointer;
      End;
 
 Var Old_Int1B   :Pointer;                      {*Save Pointer CTRL-Break*}
     Old_Int08   :Pointer;                      {*Save Pointer Int $08*}
     Old_Int24   :Pointer;                      {*Save Pointer Int $24*}
     Old_Int09   :Pointer;                      {*Save Pointer Keyboard*}
 
     OldExit     :Pointer;                      {*For Errors Intercept*}
     MyAddr      :TJump;                        {*For Errors Intercept*}
 
     Call_PSwap:Pointer;                        {*Call pointer for Swap Unit*}
     Call_PMainTask:Pointer;                    {*Call pointer for TSK  Unit*}
 
     NbJump      :Integer;                      {*Variables Time_TestTimer*}
     CtJump      :Integer;
     CountT      :Longint;                      {*Time counter*}
 
 {|Asm bits procedures|}
:MOS_OCG Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_OCG               
^ͼ

 Type TOnglet=Record                      {*Onglet structure*}
      X1,Y1,X2,Y2 :Integer;               {*Box coordinates*}
      STxt        :Integer;               {*Labels Size Y*}
      QttO        :Byte;                  {*Quantity of Onglets*}
      No          :Shortint;              {*Current Onglet Number*}
      COa,COi     :Integer;               {*Onglet colors (Activated or no)*}
      TCT         :String;                {*Onglet titles*}
      Id          :Word;                  {*Id Onglets*}
      {*Bit 0  $0001 = Freezed            Freezed Onglet*}
      {*Bit 1  $0002 = Invisible Onglet   Invisible Onglet*}
      {*Bit 2  $0004 = Hand Pointer       Hand Mouse Pointer on title*}
      End;
 
 TCombo=Record                            {*Combo Box definition*}
      X1,Y1       :Integer;               {*Gadget position*}
      Sx          :Integer;               {*Gadget width*}
      Col1,Col2   :Longint;               {*Gadget colors*}
      Col3        :Longint;               {*List color*}
      Selected    :Integer;               {*Item selected*}
      But         :TButton;               {*Pointer to the Button Structure*}
      Inp         :TInputText;            {*Pointer to the Command Structure*}
      List        :TList;                 {*Pointer to the List Structure*}
      ListName    :String[12];            {*Filename for the List file*}
      QttMaxItems :Integer;               {*Maximum numbers of Items in List*}
      Win         :TWindow;               {*Pointer to the Window Structure*}
      Id          :Word;                  {*Id Combo Box*}
      {*Bit 0  $0001 : 1 = No InputText. Select only in List*}
      {*Bit 1  $0002 : 1 = Freezed Gadget*}
      {*Bit 2  $0004 : 1 = Invisible Gadget*}
      {*Bit 3  $0008 : 1 = Combo list movable*}
      {*Bit 4  $0010 : 1 = Hand Pointer on button*}
      {*Bit 5  $0020 : 1 = Adjust List-box to horizontal optimal size*}
      {*Bit 6  $0040 : 1 = Adjust List-box to vertical optimal size*}
      {*Bit 7  $0080 : 1 = Enable preselection item*}
      {*Bit 8  $0100 : 1 = Sort list items*}
      {*Bit 9  $0200 : 1 = Enable rotation in list selection*}
      End;
 
 {****************************************************************************}
 
:MOS_BLK Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_BLK               
^ͼ

:MOS_BMP Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_BMP               
^ͼ

 Type TBMPHeader=Record   { Header of a BMP file}
        ID    : Array[1..2] of char; { 'BM' for a Windows BitMaP }
        FSize : LongInt;  { Size of file }
        Ver   : LongInt;  { BMP version (?), currently 0 }
        Image : LongInt;  { Offset of image into file }
        Misc  : LongInt;  { Unknown, appears to be 40 for all files }
        Width : LongInt;  { Width of image }
        Height: LongInt;  { Height of image }
        Num   : Word;     { Not sure,possibly number of images or planes (1) }
        Bits  : Word;     { Number of bits per pixel }
        Comp  : LongInt;  { Type of compression, 0 = uncompressed, 1,2 = RLE }
        ISize : LongInt;  { Size of image in bytes }
        XRes  : LongInt;  { X dots per metre }
        YRes  : LongInt;  { Y dots per metre }
        PSize : LongInt;  { Palette size (number of colours) If not zero }
        Res   : LongInt;  { Probably reserved, currently 0 }
      End;                { 54 bytes }
 
      TBMPPalette256 = Record { BMP uses a 4 bytes for the palette }
        b,g,r,x : Byte;       { Last byte is not used }
      End;
 
 
:MOS_CRT Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_CRT               
^ͼ

 Const BW40          = 0;            { 40x25 B/W on Color Adapter }
       CO40          = 1;            { 40x25 Color on Color Adapter }
       BW80          = 2;            { 80x25 B/W on Color Adapter }
       CO80          = 3;            { 80x25 Color on Color Adapter }
       Mono          = 7;            { 80x25 on Monochrome Adapter }
       Font8x8       = 256;          { Add-in for ROM font }
       { Foreground and background color constants }
       Black         = 0;
       Blue          = 1;
       Green         = 2;
       Cyan          = 3;
       Red           = 4;
       Magenta       = 5;
       Brown         = 6;
       LightGray     = 7;
       { Foreground color constants }
       DarkGray      = 8;
       LightBlue     = 9;
       LightGreen    = 10;
       LightCyan     = 11;
       LightRed      = 12;
       LightMagenta  = 13;
       Yellow        = 14;
       White         = 15;
       { Add-in for blinking }
       Blink         = 128;
 
 Var CheckBreak            : Boolean;      { Enable Ctrl-Break }
     CheckEOF              : Boolean;      { Enable Ctrl-Z }
     DirectVideo           : Boolean;      { Enable direct video addressing }
     CheckSnow             : Boolean;      { Enable snow filtering }
     LastMode              : Word;         { Current text mode }
     TextAttr              : Byte;         { Current text attribute }
     WindMin               : Word;         { Window upper left coordinates }
     WindMax               : Word;         { Window lower right coordinates }
 
 {|KeyBoard|}
:MOS_DEB Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_DEB               
^ͼ

:MOS_DIR Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_DIR               
^ͼ

:MOS_MEN Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_MEN               
^ͼ

 Const Max_Length_Points=33;              {*String maximum length*}
       Max_Menu_Points=17;                {*Menu points maximum-2*}
       Max_Menu=10;                       {*Maximum menus quantity*}
 
 Type TMenu = Record                      {*Menus structure*}
      TbMen :Array[1..Max_Menu,1..Max_Menu_Points] of String[Max_Length_Points];
      TbLen :Array[1..Max_Menu] of Word;  {*Menus length array*}
      TbSiz :Array[1..Max_Menu] of Word;  {*Menus width array*}
      TbId  :Array[1..Max_Menu,1..Max_Menu_Points] of Byte;{*Definition bits*}
      TbKey :Array[1..Max_Menu,1..Max_Menu_Points] of Byte;{*Hotkey for each menu point*}
      End;
 
      {*Structure for the array "Men_Id" =  Initialisation bits*}
      {* Bit 0       * $0001 = Disabled       Menu disabled*}
      {* Bit 1 Point * $0002 = Separator      Separation bar*}
      {*       Menu  * $0002 = Check Exclusif Exclusif check points in menu*}
      {* Bit 2       * $0004 = Check Point    Check point*}
      {* Bit 3       * $0008 = Status CP      Check point status. Tagged=1*}
      {* Bit 4       * $0010 = Last Point     Last menu point*}
      {* Bit 5       * $0020 = Check Border   Check point in a box*}
 
 
:MOS_EZR Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_EZR               
^ͼ

:MOS_FLI Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_FLI               
^ͼ

:MOS_GFX Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_GFX               
^ͼ

 Type TSaveScreen = Record            {*Type for Save/Restore_Screen*}
        What_save     : Word;         {*Bits of what you want to save*}
        ModeG         : Word;         {*GFX Mode*}
        Palette256    : Tpalette256;  {*256 colors palette*}
        ImageSwap     : Tswap;        {*Picture displayed on screen*}
        MouseX,MouseY : Word;         {*Mouse coordinates*}
        ViewPort      : TViewPortType;{*VESA_SetViewPort parameters*}
      End;
 
 {|Save/Restore Screen|}
:MOS_GPH Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_GPH               
^ͼ

 Const ClipOn   = True;          {*Clipping Constants*}
       ClipOff  = False;
       NormalPut= 0;             {*PutImage Constants*}
       CopyPut  = 0;
       XorPut   = 1;
       AndPut   = 3;
       NotPut   = 4;
       SolidLn  = 0;             {*Line Styles*}
       DottedLn = 1;
       CenterLn = 2;
       DashedLn = 3;
       UserBitLn= 4;             {*User-defined line style*}
       NormWidth = 1;            {*Line Widths*}
       ThickWidth= 3;
 
 Type TCHRHeader = Record        {* Header of a CHR file*}
        Prefix      :Array[1..$80] of Char; {*Header*}
        Sig         :char;	{* SIGNATURE byte                        *}
        Nchrs       :Integer;	{* number of characters in file          *}
        Mystery     :char;       {* Currently Undefined                   *}
        First	   :byte;    	{* first character in file               *}
        Cdefs	   :Integer;    {* offset to char definitions            *}
        Scan_Flag   :char;	{* True if set is scanable               *}
        Org_To_Cap  :Shortint;	{* Height from origin to top of capitol  *}
        Org_To_Base :Shortint;	{* Height from origin to baseline        *}
        Org_To_Dec  :Shortint;	{* Height from origin to bot of decender *}
        FntName     :Array[1..4] of char;{* Four character name of font   *}
        Unused      :char;       {* Currently undefined                   *}
      End;
 
      TCHRFont = Record        {*CHR font informations*}
        Font_Name    :String[80]; {* Name and path of the font              *}
        Org_to_cap   :Integer; {* Height from origin to top of capitol      *}
        Org_to_base  :Integer; {* Height from origin to baseline            *}
        Org_to_dec   :Integer; {* Height from origin to bot of decender     *}
        Num_chrs     :Integer; {* Four character name of font               *}
        First        :Byte;    {* First character in file                   *}
        Direction    :Byte;    {* Direction : horizontal (0) or vertical (1)*}
        Char_Width   :Array[0..255] of Byte;  {* Character Width Table	   *}
        Offset       :Array[0..255] of Integer;
        RFontSize     :Real;   {*1..9 : Font Size on Screen                 *}
        P_Font       :Pointer;
        Size_P_Font  :Word;
      End;
 
      TPalette256 = Array[0..255,1..3] of Byte;  {*256 Red/Green/Blue (RGB)*}
 
      TLineSettingsType = Record  {*Type for definition of Lines*}
        LineStyle : Word;
        Pattern   : Word;
        Thickness : Word;
      End;
 
      TPatternSettingsType = Record {*Type pour definition of Pattern*}
        Pattern:Word;
        Color:Word;
      End;
 
      TViewPortType = Record   {*Set View Port parameters*}
        x1, y1, x2, y2 : integer;
        Clip           : Boolean;
      End;
 
      TPointType = Record    {*Coordinates*}
          X, Y : integer;
      End;
 
      TFillPatternType = array[1..8] of byte;
 
 
 
 {|Pixels|}
:MOS_INI Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_INI               
^ͼ

:MOS_KBD Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_KBD               
^ͼ

 Type
 
 TLocate=Record                                       {*Position structure*}
     X,Y                 :Integer;                 {*2D Position*}
     Style               :Integer;                 {*Cursor style*}
     Blink               :Integer;                 {*Speed blink*}
     T1,T2,T3,T4         :Word;                    {*Time variables*}
     N1,N2,N3,N4         :Word;
     End;
 
:MOS_LIS Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_LIS               
^ͼ

 Const List_MinItem=1;                   {*Lower indice in the list array*}
       Max_Col=20;                       {*Maximum Quantity Columns*}
 
       Insert_First=0;                   {*Insert Items type*}
       Insert_Append=1;
       Insert_SortAZ=2;
       Insert_SortZA=3;
 
       Text_OnLeft=0;                    {*Text Justify*}
       Text_Center=1;
       Text_OnRight=2;
 
       Sort_AZ=0;                        {*Sort Direction*}
       Sort_ZA=1;
 
 Type                                    {*Type declarations*}
 
 TListItem=Record                        {*Item Structure*}
    Item                 :String;        {*Item string*}
    Tag                  :Shortint;      {*Tag value*}
    User                 :Byte;          {*Free variable for user*}
    Color                :Byte;          {*Pen color line*}
    BkColor              :Shortint;      {*Background color line*}
    Id                   :Word;          {*Bits configuration*}
        {  0  0001 :  1 = Item Freezed / 0 = Enabled}
        {  1  0002 :  1 = Draw separator line (Used by Menus)}
    End;
 
 TListColumn=Record                      {*Column Structure*}
    Number               :Byte;          {*Column number*}
    Size                 :Integer;       {*Column width (Pixels)*}
    OldSize              :Integer;       {*Column width for Hidden column*}
    Justif               :Byte;          {*Text position Id*}
    User                 :Byte;          {*Free variable for user*}
    Id                   :Word;          {*Bits configuration*}
        {  0  0001 :  1 = Enable column modifications}
        {  1  0002 :  1 = Display Associated icons for files items}
        {  2  0004 :  1 = Use special column color}
        {  3  0008 :  1 = Column not displayed}
    End;
 
 TList=Record                            {*List Structure*}
    Title                :String;        {*List title (define columns)*}
    Path                 :String;        {*File path for "File column"*}
    X1,Y1,X2,Y2          :Integer;       {*List box coordinates*}
    Color                :Integer;       {*Background color for list*}
    Color_Line           :Integer;       {*Alternate color for lines*}
    Sort_Sens            :Byte;          {*Sort direction for the list*}
    Sort_Column          :Byte;          {*Column number to sort the list*}
    Qtt_Items            :Longint;       {*Number of items in list*}
    Qtt_Max_Items        :Longint;       {*Maximum number of items in list*}
    Qtt_Tagged_Items     :Longint;       {*Number of tagged items*}
    Qtt_Show_Items       :Integer;       {*Number of displayable items*}
    Qtt_Columns          :Byte;          {*Number of columns*}
    Pos_Item             :Longint;       {*Last clicked item indice*}
    Pos_Column           :Byte;          {*Number of the selected column*}
    Pos_Show             :Longint;       {*First displayable item indice*}
    Pos_Taquet           :Byte;          {*Number of the selected taquet*}
    Item_SizeY           :Byte;          {*Height of an item (Pixels)*}
    FontType             :String[12];    {*Defined Font for the List*}
    FontSize             :Byte;
    Mouse_InList         :Boolean;       {*Mouse is clicked over the box list*}
    Mouse_OverList       :Boolean;       {*Mouse is over the box list*}
    MOx,MOy              :Integer;       {*Old Mouse coordinates*}
    OldI,OldC            :Longint;       {*Old Indice,Column for the Cell on Mouse*}
    Sh,Sv                :TSlider;       {*Sliders pointers*}
    IB                   :TInfoBox;      {*Infobox pointers*}
    ASC                  :Array[1..Max_Col] of TListColumn;{*Columns array*}
 
    List                 :TXMSTab;       {*Pointer to XMS array*}
 
    Id                   :Word;          {*Bits configuration*}
        {  0  0001 :  1 = Display List title}
        {  1  0002 :  1 = Sensitive items selection. No Multiselection!}
        {  2  0004 :  1 = Columns are movable}
        {  3  0008 :  1 = Columns size modifiable}
        {  4  0010 :  1 = List Freezed / 0 = Activated}
        {  5  0020 :  1 = Multiselection Items Enable / Monoselection}
        {  6  0040 :  1 = Select item when mouse is unclicked}
        {  7  0080 :  1 = Rename Items Enable}
        {  8  0100 :  1 = Move The Whole List When Horizontal Slider is Moved}
        {  9  0200 :  1 = Select Items Enable}
        { 10  0400 :  1 = Show columns separator}
        { 11  0800 :  1 = Alternates colors for lines}
        { 12  1000 :  1 = Enable Items sorting by user}
        { 13  2000 :  1 = Show grid (Using Lightgray Color)}
        { 14  4000 :  1 = Help with an Info-Box}
        { 15  8000 :  1 = Rotation in list when select item}
    IdMore               :Word;          {*Bits configuration 2nd*}
        {  0  0001 :  1 = Don't draw list border}
        {  1  0002 :  1 = Disable F5 key}
        {  2  0004 :  1 = Display Hand pointer on selectable items}
        {  3  0008 :  1 = Disable ENTER Key}
    End;
 
 {*------------------------ Fonctions et Procdures -------------------------*}
 
 {|List management procedures|}
:MOS_MAT Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_MAT               
^ͼ

 Var
    Mat_Coefangle:extended;                      {*Coef to apply to a number to get it in Radian*}
    Mat_Base:integer;                            {*Current numeric base*}
    Mat_Ans:extended;                            {*Result of the previous calcul*}
 
:MOS_MSE Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_MSE               
^ͼ

 Type TPosMse=Record                      {*Mouse position Multiple uses *}
      X,Y          :Integer;
      End;
 
      TAction=Record
      X,Y          :Word;                 {*New mouse coordinantes*}
      XOld,YOld    :Word;                 {*Old mouse coordinantes*}
      Ga,Mi,Dr     :Boolean;              {*Mouse Buttons Actions*}
      End;
 
 Var PosMouse      :TPosMse;              {*Mouse position*}
 
 {|Hide/Show mouse|}
:MOS_TOO Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_TOO               
^ͼ

 Type TLightBox=Record                   {*Light-Box type*}
      X1,Y1,X2,Y2:Integer;               {*Light-Box coordinates*}
      Xo,Yo      :Integer;               {*Old mouse coordinates*}
      End;
 
 
    TCoordinates=Record                  {*Coordinates Structure*}
    X1,Y1,X2,Y2    :Integer;
    End;
 
    TClock=Record                        {*TClock type*}
    Cx,Cy          :Integer;             {*Center of the clock*}
    Sx,Sy          :Integer;             {*Radius X,Y of the clock*}
    Fs             :Integer;             {*Size factor...*}
    Show           :Boolean;             {*DIGITAL : Display or not*}
    OldS           :Word;                {*DIGITAL : Old Seconds*}
    Inter          :String[1];           {*DIGITAL : Between 2 numbers*}
    Cur            :Array[1..4] of Word;
    Old            :Array[1..3] of String[2];
    Oh,Om,Os,Od    :Word;                {*Latest hour*}
    Px,Py          :Integer;
    Aiguille       :Array[1..5] of TPointType;
    IT,CT          :Longint;             {*Time_TestTimer : Initial and current time*}
    End;
 
 
 
 {|Time|}
:MOS_HAR Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_HAR               
^ͼ

 Const
      Port_COM1     = $0400;             {*Ports values*}
      Port_COM2     = $0402;
      Port_COM3     = $0404;
      Port_COM4     = $0406;
      Port_LPT1     = $0408;
      Port_LPT2     = $040A;
      Port_LPT3     = $040C;
      Port_LPT4     = $040E;
      Port_VideoCard= $0463;
 
 {|Temp Zuul Made|}
 
 {Function  Hard_TestColorMonitor:Boolean;            {*Test if it's a color monitor*}
:MOS_PRO Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_PRO               
^ͼ

:MOS_MED Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_MED               
^ͼ

 CONST
         cdPlaying = 1;     { drive is playing audio }
         cdDisc = 2;        { disc is in drive }
         cdDoor = 4;        { drive door is closed }
 TYPE
         TRedBook = RECORD
                 Frame, Second, Minute, Unused: Byte;
         END;
         TTrack = RECORD
                 Start, Finish: TRedBook;
         END;
         TDeviceHeader = RECORD
                 NextDriver: Pointer;
                 Attribute, StratEntry, IntEntry: Word;
                 Name: array[0..7] of Char;
                 Res: Word;
                 Letter, Units: Byte;
         END;
         TDevice = RECORD
                 Subunit: Byte;
                 Header: Pointer;
         END;
         TRequestHeader = RECORD
                 Length,        Subunit, Command: Byte;
                 Status: Word;
                 Res: array[0..7] of Byte;
         END;
         TPlayRequest = RECORD
                 Header: TRequestHeader;
                 Addressing: Byte;
                 Start, Length: LongInt;
         END;
         TIOCTLRequest = RECORD
                 Header: TRequestHeader;
                 Media: Byte;
                 Address: Pointer;
                 Length,        Start: Word;
                 Res: Pointer;
         END;
         TQChannel = RECORD
                 Command, CTRL_ADR, Track,        Point: Byte;
                 Min, Sec, Frame, Zero, AMin, ASec, AFrame: Byte;
         END;
         TDeviceStatus = RECORD
                 Command: Byte;
                 Status: LongInt;
         END;
         TCommand = RECORD
                 Command: Byte;
         END;
         TDiskInfo = RECORD
                 Command: Byte;
                 LowTrack, HighTrack: Byte;
                 LeadOut: TRedBook;
         END;
         TTrackInfo = RECORD
                 Command, Track: Byte;
                 Start: TRedBook;
                 Control: Byte;
         END;
 TYPE
         TCD = OBJECT
             private
                 Drive,                 { CD-ROM drive }
                 Letter: Byte;          { drive letter }
                 Header: ^TDeviceHeader;
                 Subunit: Byte;
                 Name: String[8]; { name of driver }
                 Handle: Word;
                 Tracks: array[1..64] of TTrack;        { track info }
                 Status: Word;        { drive status }
 
                 FUNCTION RedToHSG(Redbook: TRedbook): LongInt;
                 PROCEDURE HSGToRed(HSG: Longint; VAR Redbook: TRedbook);
                 FUNCTION Drives: Byte;     { # of CD-ROM drives }
                 FUNCTION Version: Word;    { MSCDEX version }
                 PROCEDURE GetHandle;
                 PROCEDURE GetSubUnit;
                 PROCEDURE GetDriveLetter;
                 PROCEDURE GetDriverName;
                 FUNCTION MediaChanged: Byte;{ disc ready/different/etc }
             public
                   LowTrack, HighTrack, CurTrack: Byte;
                   cMin, cSec, cFrame,      { track time }
                   tMin, tSec, tFrame,      { track length }
                   dMin, dSec, dFrame: Byte;{ disc time }
 
                   PROCEDURE Open;     {Eject le CD}
                   PROCEDURE Close;   {Ferme le tiroir}
                   PROCEDURE Done;
                   PROCEDURE PlayTrack(Track: Byte);
                   PROCEDURE Stop;            {stope le cd}
                   PROCEDURE Pause ;
                   PROCEDURE Resume ;
                   PROCEDURE GetTracks;  { get track info }
                   PROCEDURE GetPosition;{ get play position }
                   PROCEDURE GetStatus;     { set Status field}
 
                   FUNCTION Time(M, S, F: Byte): String; { Redbook > 'mm:ss:ff' }
                   FUNCTION State(AState: Word): Boolean; { test Status field }
                   FUNCTION Init: Boolean; {Initialise le Cd}
 
         END;
 
:MOS_COL Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_COL               
^ͼ

:MOS_STR Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_STR               
^ͼ

 Type TDate=Record                          {*MOS date type*}
        Day,Month:Byte;
        Year:Word;
      End;
 
      TTime=Record                          {*MOS time type*}
        Hour,Minute,Second,Hund:Byte;
      End;
 
      TPointer = Record                     {*Redefinition of a Pointer*}
                   Case Boolean of
                     TRUE:(Offset,Segment:Word);
                     FALSE:(P:Pointer);
                  End;
 
 
 {|Capital/Small letters|}
:MOS_SWAP Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_SWAP              
^ͼ

:MOS_SYS Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_SYS               
^ͼ

:MOS_VAR Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_VAR               
^ͼ

 Const
       On         = TRUE;                 {*TRUE / FALSE redefinitions*}
       Off        = FALSE;
       Yes        = TRUE;
       No         = FALSE;
 
       Win_Max    =25;                    {*Maximum stack of 25 windows*}
       Max_AS     =10;                    {*Maximum numbers of action sounds*}
       Max_Pointer=9;                     {*Mouse pointers quantity*}
 
       Speed_Zoom =60;                    {*Speed for zoom window*}
 
       P_Arrow    =1;                     {*Id for Arrow pointer*}
       P_Busy     =2;                     {*Id for Busy pointer*}
       P_Hand     =3;                     {*Id for Hand pointer*}
       P_Text     =4;                     {*Id for Text pointer*}
       P_Target   =5;                     {*Id for Target pointer*}
       P_Move     =6;                     {*Id for Move pointer*}
       P_Head     =7;                     {*Id for Dead Head pointer*}
       P_MoveX    =8;                     {*Id for Horizontal move pointer*}
       P_MoveY    =9;                     {*Id for Vertical move pointer*}
 
       P_AutoMode =1;                     {*MOS management mouse pointer*}
       P_UserMode =2;                     {*User management mouse pointer*}
 
       G_Button   =1;                     {*Id Gadget Button*}
       G_InputText=2;                     {*Id Gadget InputText*}
       G_Onglet   =3;                     {*Id Gadget Onglet*}
       G_Taquet   =4;                     {*Id Gadget Taquet*}
 
       M_Extention=1;                     {*File detection method*}
       M_Header   =2;
 
       SP_MAIN     =1;                    {*Define System paths*}
       SP_FONTS    =2;
       SP_ICONS    =3;
       SP_IMAGES   =4;
       SP_SOUNDS   =5;
       SP_SWAPS    =6;
       SP_TOOLS    =7;
       SP_BOOT     =8;
       SP_TEMP     =9;
       SP_DATAS    =10;
       SP_BLANKERS =11;
       SP_SNAPSHOTS=12;
       SP_PALETTES =13;
       SP_PATTERNS =14;
       SP_TEXTURES =15;
       SP_BUTTONS  =16;
       SP_MEDIAS   =17;
       SP_CARDS    =18;
 
       SP_LASTDIR  =18;                   {*Be equal to the last directory*}
 
       FR_MultiSelection =0;              {*File Requester Modes (Bits)*}
       FR_Directory      =1;
       FR_DeleteFiles    =2;
       FR_RenameFiles    =3;
       FR_Attributes     =4;
       FR_Applications   =5;
       FR_User           =6;
 
       C_Init     =1;                     {*Various utilisations*}
       C_Execute  =2;
 
       L_English  =1;                     {*Language definition*}
       L_Francais =2;
       L_Espanol  =3;
 
       BLK_Execute  =1;                   {*Screen Blankers module*}
       BLK_Parameter=2;
 
       LED_Scroll =16;                    {*Bit Scroll-Lock*}
       LED_Num    =32;                    {*Bit Num-Lock*}
       LED_Caps   =64;                    {*Bit Caps-Lock*}
       KEY_Ins    =128;                   {*Bit Insert*}
 
       B_AND      =0;                     {*Boolean OR or AND*}
       B_OR       =1;
 
 
       MOS_Name        = 'MOS';                  {*Define the MOS name*}
       MOS_Version     = 'v3.1 Professional';    {*Define the MOS version*}
 
 
       TSep      :Array[1..3] of String[1]=(':','/','');{*Time Separator (":" "/" " ")*}
 
 {****************************************************************************}
 
 Type TString1=String[1];                 {*String 1*}
 
 Type TClip=Record                        {*Coordinates Clip Window*}
     X1,Y1,X2,Y2:Integer;
     End;
 
     TColor=Record                        {*Color Record*}
     R,G,B          :Byte;                {*RGB Values of a color*}
     End;
 
 Var Col:Array[0..15] of Word;            {*16 colors mode redefinition*}
 
     Win_OpenCount:Integer;               {*Numbers of oppened windows*}
     Win_Mved     :Boolean;               {*A window is moved somewhere*}
     Win_Size     :Boolean;               {*A window is sized somewhere*}
     Com_Count    :Byte;                  {*Gadgets "InputText" created*}
     WPMx,WPMy    :Word;                  {*Window mouse position (X,Y)*}
     WPx1,WPy1,WPx2,WPy2:Integer;         {*Current window coordinates*}
 
     T_Clip       :TClip;                 {*Window clipping*}
     But_Pressed  :Boolean;               {*A Button is pressed somewhere*}
     LBAMin       :Integer;               {*Minimum size for the Light Box*}
     Grid         :Boolean;               {*Set Grid On/Off*}
     Grid_X,Grid_Y:ShortInt;              {*Grid offsets*}
 
     TabC:Array[0..15,1..3] of Byte;      {*16 colors mode array*}
     LaF,HaF      :Byte;                  {*Width and Height for current font*}
     LaF1,HaF1    :Byte;                  {*Width and Height for window title font*}
 
     Font_Main    :String[12];            {*Font 1 filename*}
     Font_MainSize:Byte;                  {*Font 1 size*}
     Font_Menu    :String[12];            {*Font 2 filename*}
     Font_MenuSize:Byte;                  {*Font 2 size*}
     Font_Title   :String[12];            {*Font 3 filename*}
     Font_TitleSize:Byte;                 {*Font 3 size*}
     Font_Type    :String[12];            {*Current Font filename*}
     Font_TypeSize:Byte;                  {*Current Font size*}
     Font_Prev    :String[12];            {*Previous Font filename*}
     Font_PrevSize:Byte;                  {*Previous Font size*}
 
     Syb          :Integer;               {*Standard Y Size for buttons*}
 
     Info_Color   :Byte;                  {*Color for info box*}
     Fill_Back    :Byte;                  {*Color for screen background*}
     Fill_Icon    :Byte;                  {*Color for icons background*}
     Fade_Col     :Byte;                  {*Color for window fade title*}
     Fade_QttCol  :Byte;                  {*Qtt colors for Win title fade*}
     Fade_ColIni  :TColor;                {*RGB initial color*}
     Fade_ColEnd  :TColor;                {*RGB final color*}
     Fade_WTitle  :Boolean;               {*Window title 1=Fade*}
     Scr_Back     :Byte;                  {*Background screen style: 1=Pattern, 2=Gfx*}
     Scr_Pattern  :Byte;                  {*Pattern number for screen*}
     Win_Back     :Byte;                  {*Background windows style: 0=Nothing, 1=Pattern*}
     Win_Pattern  :Byte;                  {*Pattern number for window background*}
 
     Dbl_Click_Val:Integer;               {*Double Click value*}
     Delay_Mse_Val:Integer;               {*Mouse Delay value*}
     Mouse_Speed  :Byte;                  {*Mouse speed*}
     Mouse_PosX   :Word;                  {*Mouse position X*}
     Mouse_PosY   :Word;                  {*Mouse position Y*}
     CBlink       :Word;                  {*Speed for cursor blink*}
     CType        :Byte;                  {*Cursor shape*}
     SPKey_Rate   :Byte;                  {*Speed Key Rate*}
     SPKey_Delay  :Byte;                  {*Speed Key Delay*}
     MBlanker     :Boolean;               {*Mouse Blanker activation*}
     SBlanker     :String[12];            {*Screen Blanker activation*}
     Tim_Sep      :Byte;                  {*Time Separator definition*}
     P_Current    :Byte;                  {*Current mouse pointer*}
     User_Def     :Word;                  {*Reserved bits for users*}
     SB_Vol       :Byte;                  {*Sound Blaster Volume*}
     CD_Vol       :Byte;                  {*Audio CD Volume*}
 
     Fus_Hor      :Shortint;              {*Time belt number*}
     Net_Name     :String[30];            {*Name for Network Login*}
     Net_Dnm      :Boolean;               {*Display Network Messages*}
     Net_Dum      :Boolean;               {*Display User Messages*}
     Net_Log      :Boolean;               {*Login at Boot*}
     Net_QMR      :Word;                  {*Number of received messages*}
     Net_QMS      :Word;                  {*Number of sent messages*}
     Net_SMsg     :Boolean;               {*Sign messages or no*}
     Net_Beep     :Boolean;               {*Beep when a message arrive*}
 
     Locale_Lan   :Byte;                  {*Actual language*}
     NError       :Integer;               {*Cause an error*}
     QttErrors    :Integer;               {*Quantity of errors during session*}
     File_Detect  :Byte;                  {*File detection method*}
                                             { 0 = No detection }
                                             { 1 = Suffix detection}
                                             { 2 = Header detection}
     Gfx_Boot     :String[100];           {*Gfx to display at boot*}
     Gfx_Screen   :String[100];           {*Gfx to display as background screen*}
     MOS_TempDir  :String[12];            {*Rpertoire Temporaire "C:\TEMP"*}
 
 
 
 
 
 
 {*----------------------------- Debut Library ------------------------------*}
 
:MOS_TSK Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_TSK               
^ͼ

:MOS_GAD Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_GAD               
^ͼ

 Const
      MaxTaquets = 8;                     {*Maximum numbers of Taquets for Canvas*}
 
 Type                                     {*Gadgets types definition*}
 
 TCanvas=Record                           {*Canvas Box definition*}
      X:Array[1..MaxTaquets] of Integer;
      Y:Array[1..MaxTaquets] of Integer;  {*Points coordinates*}
      SizeTaq     :Integer;               {*Half size of a Taquet*}
      Status_Size :Boolean;               {*Canvas currently resized*}
      Status_Move :Boolean;               {*Canvas currently moved*}
      MouseBut    :Byte;                  {*Mouse Button to Activate*}
      OnTaquet    :Byte;                  {*Mouse on Taquet number*}
      Color       :Word;                  {*Pen color for the Canvas*}
      Mx,My       :Integer;               {*Mouse Position when click a Taquet*}
      OldX,OldY   :Integer;               {*Previous Mouse Position*}
      Id          :Word;                  {*Bits selection for Canvas*}
      {*Bit 0  $0001 : 1 = Enable Move Canvas*}
      {*Bit 1  $0002 : 1 = Canvas Freezed*}
      {*Bit 2  $0004 : 1 = Unvisible Canvas*}
      {*Bit 3  $0008 : 1 = Draw Canvas box*}
      {*Bit 4  $0010 : 1 = Hand Pointer on Taquets*}
      {*Bit 5  $0020 : 1 = Enable Resize Canvas*}
      {*Bit 6  $0040 : 1 = Inverse Canvas Allowed*}
      {*Bit 7  $0080 : * 1 = Fix black line color*}
      {*Bit 8  $0100 : * 1 = Polygon Mode*}
      {*Bit 8  $0100 : * 1 = Proportional canvas size*}
      IdTaq       :Word;                  {*Bits to Set Taquets (0..8)*}
      End;
 
 TColorPalette=Record                     {*Color Palette definition*}
      X1,Y1,X2,Y2 :Integer;               {*Points coordinates*}
      MinC,MaxC   :Longint;               {*Minimum and Maximum Colors Indices*}
      Qtt         :Longint;               {*Quantity of Colors*}
      ColX,LigY   :Integer;               {*Number of Lines and Columns*}
      SizeX,SizeY :Integer;               {*Size of a Cell*}
      MouseBut    :Byte;                  {*Mouse Button to Activate*}
      Mea         :Integer;               {*Half Size between two cells in pixels*}
      Border      :Integer;               {*Border Type*}
      Selected    :Longint;               {*Initial selected color*}
      OcX,OcY     :Integer;               {*Old Cell sensitively activated*}
      Id          :Word;                  {*Bits selection for Gadget*}
      {*Bit 0  $0001 : 1 = Sensitive mouse selection*}
      {*Bit 1  $0002 : 1 = Gadget Freezed*}
      {*Bit 2  $0004 : 1 = Unvisible Gadget*}
      {*Bit 3  $0008 : 1 = Force linear palette*}
      {*Bit 4  $0010 : 1 = Hand Pointer over the Gadget*}
      {*Bit 5  $0020 : 1 = Force square cells*}
      {*Bit 6  $0040 : 1 = Toggle border*}
      {*Bit 7  $0080 : * 1 = Drag and drop to copy color*}
      End;
 
 TInfoBox=Record                          {*Info Zone Gadget*}
      X1,Y1,X2,Y2 :Integer;               {*Test mouse coordinates*}
      Xd,Yd,Xf,Yf :Integer;               {*Info box coordinates*}
      Status      :Boolean;               {*Display gadget or no*}
      TempsOk     :Boolean;               {*Elapsed time is 0*}
      Time        :TClock;                {*Pointer to TClock structure*}
      Info        :String;                {*String to display*}
      Swap        :TSwap;                 {*Structure for Refresh Screen*}
      Qtt         :Byte;                  {*Number of info lines*}
      MOx,MOy     :Integer;               {*Old mouse coordinates*}
      Id          :Byte;                  {*Id Pref gadget*}
      End;
 
 TButton=Record                           {*Button Gadget*}
      X1,Y1,X2,Y2 :Integer;               {*Button coordinates*}
      TCT         :String;                {*String to display*}
      CoP,CoB     :Byte;                  {*Button color*}
      VanillaKey  :Byte;                  {*Activation key position in string*}
      VaniA       :Byte;                  {*ASCII and Scan code for the Vanillakey*}
      VaniS       :Byte;
      FontType    :String[12];            {*Used font for the Button*}
      FontSize    :Byte;
      ButSp       :Integer;               {*Special button or no*}
      Id          :Word;                  {*Id Pref button*}
      {*Bit 0  $0001 : 1 = Use image palette to display image}
      {*Bit 1  $0002 : 1 = Freezed button*}
      {*Bit 2  $0004 : 1 = Unvisible button*}
      {*Bit 3  $0008 : 1 = Set image in button (ICO, BMP, MGF)*}
      {*Bit 4  $0010 : 1 = Pointer to be Hand over Button*}
      {*Bit 5  $0020 : 1 = Constant Color display*}
      {*Bit 6  $0040 : 1 = Text Shift when selected*}
      {*Bit 7  $0080 : 1 = Repeat Activation (Send TRUE after delay on button)*}
      {*Bit 8  $0100 : 1 = Select button by ENTER key*}
      {*Bit 9  $0200 : 1 = Do not display the box button*}
      {*Bit 10 $0400 : 1 = Text underlined*}
 {- Ne pas utiliser la touche CTRL}
      End;
 
 TCycler=Record                           {*Cycler Gadget*}
      X1,Y1,X2,Y2 :Integer;               {*Cycler coordinates*}
      TCT         :String;                {*Strings to display*}
      CoP,CoB     :Byte;                  {*Cycler colors*}
      CyclVal     :Integer;               {*Label number currently displayed*}
      FontType    :String[12];            {*Used font for the Cycler*}
      FontSize    :Byte;
      Id          :Word;                  {*Id Prefs cycler*}
      End;
 
 TSlider=Record                           {*Slider Gadget*}
      X1,Y1,X2,Y2 :Integer;               {*Slider coordinates*}
      Xa,Ya,Xb,Yb :Integer;               {*Slider cursor coordinates*}
      Ox,Oy       :Integer;               {*Old position X & Y cursor*}
      Qtt,Aff     :Longint;               {*Maximum and quantity of items*}
      Typ         :Byte;                  {*Slider type - Right, left, both*}
 {D}     Gdep        :Boolean;               {*Display move buttons*}
      Flg_But     :Boolean;               {*Slider selected*}
      B0,B1       :TButton;               {*Pointer to buttons structures*}
      Psl         :Longint;               {*Actual position of the cursor slider*}
      Id          :Word;                  {*Bits selection for Gadget*}
      {*Bit 0  $0001 : *  1 = Toggle Slider track look*}
      {*Bit 1  $0002 : *  1 = Freezed gadget*}
      {*Bit 2  $0004 : *  1 = Unvisible gadget*}
      {*Bit 3  $0008 : *  1 = Enable full move on one click*}
      {*Bit 4  $0010 : *  1 = Hand pointer over the cursor track*}
      {*Bit 5  $0020 : *  1 = Mode "Full List"*}
      {*Bit 6  $0040 : *  1 = Display Slider track*}
      {*Bit 7  $0080 : *  1 = Display graduations if exists*}
      {*Bit 8  $0100 : *  1 = Display move buttons*}
      {*Bit 9  $0200 : *  1 = Move buttons are on the same side of the track*}
      End;
 
 TRadioBox=Record                         {*Radio Box Gadget*}
      X,Y          :Integer;              {*Radio Box coordinates*}
      Style        :Word;                 {*Radio Box style*}
      Color        :Integer;              {*Background color*}
      Status       :Boolean;              {*Status. TRUE=Selected*}
      IDCMP        :Word;                 {*Id Prefs Radio Box*}
      Group        :Byte;                 {*Group number (only for Radio Box)*}
      Cin          :String[50];           {*Attached text to display*}
      PLab         :Byte;                 {*Text position*}
      End;
 
 TInputText=Record                        {*InputText Gadget*}
      X,Y         :Word;                  {*InputText coordinates*}
      Siz         :Word;                  {*InputText width*}
      Len         :Byte;                  {*Maximum caracters lenght *}
      CoB,Co2     :Byte;                  {*Background colors*}
      Sty         :Byte;                  {*Design styles*}
      Cin         :String;                {*String to display*}
      PM          :TPosMse;               {*Mouse coordinates*}
      Freeze      :Boolean;               {*Freezed gadget or no*}
      FontType    :String[12];            {*Used font for the Button*}
      FontSize    :Byte;
      Id          :Word;                  {*Id Prefs InputText*}
      End;
 
 TInputSlider=Record                      {*Input Slider definition*}
      X1,Y1,Sx    :Integer;               {*Gadget position and size*}
      Com         :TInputText;            {*Pointer to an InputText gadget*}
      But1,But2   :TButton;               {*Pointer to 2 Buttons*}
      Min,Max,Step:Longint;               {*Available array and Step*}
      Col1,Col2   :Integer;               {*Colors for Gadget InputText*}
      Style       :Integer;               {*Style for Gadget InputText*}
      Id          :Word;                  {*Bits selection for Canvas*}
      {*Bit 0  $0001 : 1 = Gadget Activated*}
      {*Bit 1  $0002 : 1 = Gadget Freezed*}
      {*Bit 2  $0004 : 1 = Unvisible Gadget*}
      End;
 
 {****************************************************************************}
 
 {|Buttons management|}
:MOS_VESA Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_VESA              
^ͼ

 Type TVesaMode=Record
        Attr     : Word;         { Mode Attributes                   }
        WinA     : Byte;         { Window A attributes               }
        WinB     : Byte;         { Window B attributes               }
        Gran     : Word;         { Window granularity in K bytes     }
        WinSiz   : Word;         { Size of window in K bytes         }
        SegA     : Word;         { Segment address of window A       }
        SegB     : Word;         { Segment address of window B       }
        WinFunc  : Procedure;    { Windows positioning function      }
        Bytes    : Word;         { Number of bytes per line          }
        Width    : Word;         { Number of horizontal pixels       }
        Height   : Word;         { Number of vertical pixels         }
        CharW    : Byte;         { Width of character cell           }
        CharH    : Byte;         { Height of character cell          }
        Planes   : Byte;         { Number of memory planes           }
        Bits     : Byte;         { Number of bits per pixel          }
        nBanks   : Byte;         { Number of banks        (not used) }
        Model    : Byte;         { Memory model type                 }
        Banks    : Byte;         { Size of bank           (not used) }
        Pages    : Byte;         { Number of image pages             }
        Reserved : Byte; { The following are for 15,16,24,32 bit color modes }
        RedMaskSize   : Byte;    { Size of Red mask in bits          }
        RedFieldPos   : Byte;    { Bit position of LSB of Red mask   }
        GreenMaskSize : Byte;    { Size of Green mask in bits        }
        GreenFieldPos : Byte;    { Bit position of LSB of Green mask }
        BlueMaskSize  : Byte;    { Size of Blue mask in bits         }
        BlueFieldPos  : Byte;    { Bit position of LSB of Blue mask  }
        RsvdMaskSize  : Byte;    { Size of Reserved mask in bits     }
        RsvdFieldPos  : Byte;    { Bit pos. of LSB of Reserved mask  }
        DirColModeInf : Byte;    { Direct Colour mode attributes     }
        Filler   : Array[0..215] Of Byte; { Not used - filler        }
      End;
 
      TModeList=Array[1..32] Of Word;  { List of VESA mode numbers }
 
      TVesaInfo=Record            { Contains info on the VESA BIOS Extensions }
        Signature    : Array[1..4] of char;{ Signature - Must be "VESA" }
        Version      : Word;      { VESA Version number              }
        OEMName      : Pchar;     { Pointer to manufacturer name     }
        Capabilities : Longint;   { Capabilities       (Not used)    }
        List         : ^TModeList;{ Pointer to list of VESA modes    }
        TotalMemory  : Word;      { Number of 64k memory blocks on card }
        Filler       : Array[1..238] of Byte;
      End;
 
 
 Var VesaMode:TVesaMode;{ Contains all info needed for drawing on the screen }
     Vesaon  :Byte;     { Specifies whether a VESA mode is on or not         }
 
 {|VESA checks/informations|}
:MOS_WAV Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_WAV               
^ͼ

:MOS_BAS Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_BAS               
^ͼ

 Var BCmd:Boolean;       {False = Parameter, True = Str_Parameter  }
     SCmd:String;        {If BCmd then contain coand line parameter}
 
 {|Colors|}
:MOS_XMS Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_XMS               
^ͼ

 Type    TXMSMovStruct=Record
         Amount       : Longint;  { 32 bit number of bytes to move}
         SourceHandle : Word;     { Handle of Source Block.       }
         SourceOffset : Longint;  { 32 bit offset to source.      }
         DestHandle   : Word;     { Handle of destination.        }
         DestOffset   : Longint;  { 32 bit offset to destination  }
                                  { If SourceHandle is 0 then SourceOffset}
                                  { Is Interpereted as a SEGMENT:OFFSET   }
                                  { into conventional memory.             }
                                  { The Same applies to DestHandle.       }
         End;
 
         TXMSTab=Record
         handle_xms                   : Word;
         taille,indice_Min,indice_Max : longint;
         End;
 
         TXMSHandle=Word;        { Type XMS Handle }
 
         TXMSBitmap = Record
             xi,yi : Word;
             Qtts  : Byte; {  If Qtts=0,the XMS_GetImage don't succeed  }
             h     : TXMSHandle;
         End;
 
         TXMSStack=Record             {*XMS Stack record*}
           P_Stack      : TXMSTab;    {*Pointer on an XMS array*}
           Qtt_Items    : Longint;    {*Number of items*}
           Qtt_MaxItems : Longint;    {*Max number of items*}
         End;
 
 
 Var    XMS_Control :POINTER;    { Holds the address of the XMS API.     }
        XMS_Error   :BYTE;       { Holds any XMS error codes.            }
        Test_XMS_Available:boolean;
 
 {|Low level XMS procedures|}
:MOS_DSK Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_DSK               
^ͼ

:MOS_WIN Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_WIN               
^ͼ

 Type TWinStack=Record                    {*Stack and windows layers*}
      X1,Y1,X2,Y2:Integer;                {*Coordinates*}
      End;
 
     TWindow=Record                       {*Window structure*}
     X1,Y1,X2,Y2  :Integer;               {*Main coordinates*}
     Xa,Ya,Xb,Yb  :Integer;               {*Previous coordinates before move*}
     Xu,Yu,Xv,Yv  :Integer;               {*Second coordinates for extend*}
     XMin,YMin    :Integer;               {*Minimum size of window*}
     XMax,YMax    :Integer;               {*Maximum size of window*}
     Name         :String[60];            {*Window title*}
     Close        :TButton;                  {*Structure Gadget Close Window*}
     Swap         :TButton;                  {*Structure Gadget Swap Window*}
     Extend       :TButton;                  {*Structure Gadget Extend Window*}
     Size         :TButton;                  {*Structure Gadget Size Window*}
 
     IDCMP        :Word;                  {*Flags Id Window*}
            {*Bit 0  $0001 = Activated      1 = Window Activated*}
            {*Bit 1  $0002 = Extended       1 = Enable Extend*}
            {*Bit 2  $0004 = Size           1 = Enable Resize*}
            {*Bit 3  $0008 = Swap           1 = Enable window Swapping*}
            {*Bit 4  $0010 = Close          1 = Enable Close window*}
            {*Bit 5  $0020 = Backdrop       1 = Window always on back*}
            {*Bit 6  $0040 = Block          1 = Window limited on screen*}
            {*Bit 7  $0080 = Title          1 = Display window title*}
            {*Bit 8  $0100 = Border         1 = Display window borders*}
            {*Bit 9  $0200 = Cursor         1 = Mannage window cursor*}
            {*Bit 10 $0400 = Loked          1 = Window status locked*}
            {*Bit 11 $0800 = Sensitive      1 = Active window is mouse over*}
            {*Bit 12 $1000 = Multi-Windows  1 = Modale window*}
            {*Bit 13 $2000 = Transparent    1 = Transparent background*}
            {*Bit 14 $4000 = Move           1 = Enable window deplacement*}
            {*Bit 15 $8000 = Relief         1 = Reliefs borders*}
 
     IDRES        :Word;                  {*Id Flags*}
            {*Bit 0  $0001 = Zoom Window     1 = Zoom window when Open and Close*}
            {*Bit 1  $0002 = Whole Move      1 = Move window cliking on all his surface*}
            {*Bit 2  $0004 = Window Centered 1 = Center window on screen*}
            {*Bit 4  $0010 = Close ESC       1 = Enable ESC key to close window*}
            {*Bit 5  $0020 = Move with RMB   1 = Move window with RMB*}
            {*Bit 6  $0040 = No Pro-Look     1 = Do not display internal box*}
            {*Bit 7  $0080 = Save Palette    1 = Save and restore 256 Color Palette*}
 
 
            {*Bit 12 $1000 = No fade in title*}
            {*Bit 13 $2000 = Wait when window is killed*}
 
     Destroyed    :Boolean;               {*1 =  Window has been destroyed*}
     BarSld       :Integer;               {*Number of sliders*}
     Num          :Byte;                  {*Window number*}
     Coul         :Integer;               {*Window background color*}
     Curs         :TLocate;               {*Structure for cursor*}
     Sw           :TSwap;                 {*Structure for deplacement*}
     Palette      :TPalette256;           {*Save / Restore Palette*}
     MsePointerMode :Byte;
     End;
 
:MOS_REQ Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_REQ               
^ͼ

 Type TProgress=Record                   {*Structure Progression Bar*}
      W    :TWindow;                     {*Pointer to Window structure*}
      B    :TButton;                     {*Pointer to Button "Abort" structure*}
      Abort:Boolean;                     {*Abort Operation*}
      Init :Byte;                        {*Initialise le Requester*}
      End;
 
 {|Miscellaneous requesters|}
:MOS_FIL Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_FIL               
^ͼ

 Type  TRecurseProc = Procedure (x:PathStr); {*Type for File_Find*}
 
       TRSearchRec=Record
        FileName : String[128];   {*Name of the file Found*}
        Dirinfo  : SearchRec;     {*SearchRec of the file *}
       End;
 
 {|FindFirst/FindNext|}
:MOS_CAR Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_CAR               
^ͼ

 Const
     P_Recto='RECTO\';                   {*Cards paths in Cards directory*}
     P_Verso='VERSO\';
 
 
 Type TCard=Record                       {*Card record*}
     Num                :Byte;           {*Card number (1 to 52)*}
     Value              :Byte;           {*1 to 13 : 1=As, 13=King*}
     Color              :Byte;           {*1=Carreau, 2=Pique, 3=Coeur, 4=Trfle*}
     Ident              :String[10];     {*Identificator (Variable)*}
     Px,Py              :Integer;        {*X,Y Position*}
     FName              :String[12];     {*Attached Filename for BMP*}
     Visible            :Boolean;        {*Card is visible ?*}
     Movable            :Boolean;        {*Card is movable*}
     Recto              :Boolean;        {*Side of card to display*}
     End;
 
     TCards=Record                       {*Game cards record*}
     Max_Cards          :Integer;        {*52 Cards Max*}
     Verso              :String[12];     {*Verso File to use*}
     Cards              :Array[1..52] of TCard;{*Array of cards*}
     End;
 
 {*------------------------ Fonctions et Procdures -------------------------*}
 
 {|Cards parameters functions|}
:MOS_HPT Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_HPT               
^ͼ

:MOS_MEM Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_MEM               
^ͼ

 Type TStack=Record                {*Stack record*}
        P_Stack      : Pointer;    {*@ of the current item in stack*}
        ItemSize     : Word;       {*Size of 1 item*}
        Qtt_Items    : Word;       {*Number of items*}
        Qtt_MaxItems : Word;       {*Max number of items*}
        Size         : Word;       {*Size in byte of the stack*}
      End;
 
 {|Pointers management|}
:MOS_GAT Definitions
^ͻ
^              Constants, Types and Variables of unit MOS_GAT               
^ͼ

