Browse Source

amunits, morphunits: adjusted ASL library unit to latest SDK

git-svn-id: trunk@37020 -
marcus 8 years ago
parent
commit
a57a6d09f3
2 changed files with 854 additions and 862 deletions
  1. 428 423
      packages/amunits/src/coreunits/asl.pas
  2. 426 439
      packages/morphunits/src/asl.pas

+ 428 - 423
packages/amunits/src/coreunits/asl.pas

@@ -49,26 +49,25 @@
     [email protected]
 }
 {$PACKRECORDS 2}
+unit asl;
 
-UNIT asl;
-
-INTERFACE
-uses exec, utility, workbench, agraphics;
+interface
+uses
+  exec, utility, workbench, agraphics;
 
 {************************************************************************}
 
-CONST
-  ASLNAME : PChar = 'asl.library';
-  ASL_TB          =     TAG_USER+$80000;
+const
+  ASLNAME: PChar = 'asl.library';
+  ASL_TB = TAG_USER + $80000;
 
 {************************************************************************}
 
-{ Types of requesters known to ASL, used as arguments to AllocAslRequest() }
+// Types of requesters known to ASL, used as arguments to AllocAslRequest()
   ASL_FileRequest       = 0;
   ASL_FontRequest       = 1;
   ASL_ScreenModeRequest = 2;
 
-
 {****************************************************************************
  *
  * ASL File Requester data structures and constants
@@ -79,119 +78,139 @@ CONST
  * AslRequest()
  }
 
-Type
-       pFileRequester = ^tFileRequester;
-       tFileRequester = record
-           rf_Reserved0   : Array[0..3] Of Byte;
-           rf_File        : STRPTR;        { Filename pointer             }
-           rf_Dir         : STRPTR;        { Directory name pointer       }
-           rf_Reserved1   : Array[0..9] Of Byte;
-           rf_LeftEdge    : smallint;
-           rf_TopEdge     : smallint;          { Preferred window pos }
-           rf_Width       : smallint;
-           rf_Height      : smallint;          { Preferred window size  }
-           rf_Reserved2   : Array[0..1] Of Byte;
-           rf_NumArgs     : LongInt;       { A-la WB Args, FOR multiselects }
-           rf_ArgList     : pWBArgList;
-           rf_UserData    : Pointer;       { Applihandle (you may write!!) }
-           rf_Reserved3   : Array[0..7] Of Byte;
-           rf_Pat         : STRPTR;        { Pattern match pointer }
-       END;                                { note - more reserved fields follow }
+type
+  PFileRequester = ^TFileRequester;
+  TFileRequester = record
+    case SmallInt of
+      0: (
+        rf_Reserved0: array[0..3] of Byte;
+        rf_File: STRPTR;         // Filename pointer
+        rf_Dir: STRPTR;          // Directory name pointer
+        rf_Reserved1: array[0..9] of Byte;
+        rf_LeftEdge: SmallInt;
+        rf_TopEdge: SmallInt;    // Preferred window pos
+        rf_Width: SmallInt;
+        rf_Height: SmallInt;     // Preferred window size
+        rf_Reserved2: array[0..1] of Byte;
+        rf_NumArgs: LongInt;     // A-la WB Args, FOR multiselects
+        rf_ArgList: PWBArgList;
+        rf_UserData: APTR;       // Applihandle (you may write!!)
+        rf_Reserved3: array[0..7] of Byte;
+        rf_Pat: STRPTR;          // Pattern match pointer
+      );
+      1: (
+        fr_Reserved0: array[0..3] of Byte;
+        fr_File: STRPTR;         // Filename pointer
+        fr_Drawer: STRPTR;          // Directory name pointer
+        fr_Reserved1: array[0..9] of Byte;
+        fr_LeftEdge: SmallInt;
+        fr_TopEdge: SmallInt;    // Preferred window pos
+        fr_Width: SmallInt;
+        fr_Height: SmallInt;     // Preferred window size
+        fr_Reserved2: array[0..1] of Byte;
+        fr_NumArgs: LongInt;     // A-la WB Args, FOR multiselects
+        fr_ArgList: PWBArgList;
+        fr_UserData: APTR;       // Applihandle (you may write!!)
+        fr_Reserved3: array[0..7] of Byte;
+        fr_Pattern: STRPTR;      // Pattern match pointer
+      );
+  end;                       // note - more reserved fields follow
 
 
 { File requester tag values, used by AllocAslRequest() and AslRequest() }
-
 const
-{ Window control }
-  ASLFR_Window         = ASL_TB+2 ;  { Parent window                    }
-  ASLFR_Screen         = ASL_TB+40;  { Screen to open on if no window   }
-  ASLFR_PubScreenName  = ASL_TB+41;  { Name of public screen            }
-  ASLFR_PrivateIDCMP   = ASL_TB+42;  { Allocate private IDCMP?          }
-  ASLFR_IntuiMsgFunc   = ASL_TB+70;  { Function to handle IntuiMessages }
-  ASLFR_SleepWindow    = ASL_TB+43;  { Block input in ASLFR_Window?     }
-  ASLFR_UserData       = ASL_TB+52;  { What to put in fr_UserData       }
-  ASLFR_PopToFront     = ASL_TB+131; { Make the requester window visible }
-  ASLFR_Activate       = ASL_TB+132; { Activate the requester window when }
-
-{ Text display }
-  ASLFR_TextAttr       = ASL_TB+51;  { Text font to use for gadget text }
-  ASLFR_Locale         = ASL_TB+50;  { Locale ASL should use for text   }
-  ASLFR_TitleText      = ASL_TB+1 ;  { Title of requester               }
-  ASLFR_PositiveText   = ASL_TB+18;  { Positive gadget text             }
-  ASLFR_NegativeText   = ASL_TB+19;  { Negative gadget text             }
-
-{ Initial settings }
-  ASLFR_InitialLeftEdge= ASL_TB+3 ;  { Initial requester coordinates    }
-  ASLFR_InitialTopEdge = ASL_TB+4 ;
-  ASLFR_InitialWidth   = ASL_TB+5 ;  { Initial requester dimensions     }
-  ASLFR_InitialHeight  = ASL_TB+6 ;
-  ASLFR_InitialFile    = ASL_TB+8 ;  { Initial contents of File gadget  }
-  ASLFR_InitialDrawer  = ASL_TB+9 ;  { Initial contents of Drawer gadg. }
-  ASLFR_InitialPattern = ASL_TB+10;  { Initial contents of Pattern gadg.}
-  ASLFR_InitialShowVolumes = ASL_TB+130; { Initially, show the volume list (V44) }
-
-{ Options }
-  ASLFR_Flags1         = ASL_TB+20;  { Option flags                     }
-  ASLFR_Flags2         = ASL_TB+22;  { Additional option flags          }
-  ASLFR_DoSaveMode     = ASL_TB+44;  { Being used for saving?           }
-  ASLFR_DoMultiSelect  = ASL_TB+45;  { Do multi-select?                 }
-  ASLFR_DoPatterns     = ASL_TB+46;  { Display a Pattern gadget?        }
-
-{ Filtering }
-  ASLFR_DrawersOnly    = ASL_TB+47;  { Don't display files?             }
-  ASLFR_FilterFunc     = ASL_TB+49;  { Function to filter files         }
-  ASLFR_RejectIcons    = ASL_TB+60;  { Display .info files?             }
-  ASLFR_RejectPattern  = ASL_TB+61;  { Don't display files matching pat }
-  ASLFR_AcceptPattern  = ASL_TB+62;  { Accept only files matching pat   }
-  ASLFR_FilterDrawers  = ASL_TB+63;  { Also filter drawers with patterns}
-  ASLFR_HookFunc       = ASL_TB+7 ;  { Combined callback function       }
-
-{ Sorting }
-  ASLFR_SetSortBy      = ASL_TB+124; { Sort criteria (name, date, size) }
-  ASLFR_GetSortBy      = ASL_TB+125;
-  ASLFR_SetSortDrawers = ASL_TB+126; { Placement of drawers in the list }
-  ASLFR_GetSortDrawers = ASL_TB+127;
-  ASLFR_SetSortOrder   = ASL_TB+128; { Order (ascending or descending)  }
-  ASLFR_GetSortOrder   = ASL_TB+129;
-
-
-{ Flag bits for the ASLFR_Flags1 tag }
-  FRB_FILTERFUNC     = 7;
-  FRB_INTUIFUNC      = 6;
-  FRB_DOSAVEMODE     = 5;
-  FRB_PRIVATEIDCMP   = 4;
-  FRB_DOMULTISELECT  = 3;
-  FRB_DOPATTERNS     = 0;
-
-  FRF_FILTERFUNC     = 128;
-  FRF_INTUIFUNC      = 64;
-  FRF_DOSAVEMODE     = 32;
-  FRF_PRIVATEIDCMP   = 16;
-  FRF_DOMULTISELECT  = 8;
-  FRF_DOPATTERNS     = 1;
-
-{ Flag bits for the ASLFR_Flags2 tag }
-  FRB_DRAWERSONLY    = 0;
-  FRB_FILTERDRAWERS  = 1;
-  FRB_REJECTICONS    = 2;
-
-  FRF_DRAWERSONLY    = 1;
-  FRF_FILTERDRAWERS  = 2;
-  FRF_REJECTICONS    = 4;
-
-{ Sort criteria for the ASLFR_SetSortBy/ASLFR_GetSortBy tags }
-  ASLFRSORTBY_Name   = 0;
-  ASLFRSORTBY_Date   = 1;
-  ASLFRSORTBY_Size   = 2;
-
-{ Drawer placement for the ASLFR_SetSortDrawers/ASLFR_GetSortDrawers tags }
-  ASLFRSORTDRAWERS_First  = 0;
-  ASLFRSORTDRAWERS_Mix    = 1;
-  ASLFRSORTDRAWERS_Last   = 2;
-
-{ Sort order for the ASLFR_SetSortOrder/ASLFR_GetSortOrder tags }
-  ASLFRSORTORDER_Ascend   = 0;
-  ASLFRSORTORDER_Descend  = 1;
+  ASLFR_TitleText = ASL_TB + 1; // Title of requester
+  ASLFR_Window    = ASL_TB + 2; // Parent window
+
+  ASLFR_InitialLeftEdge = ASL_TB + 3; // Initial requester coordinates
+  ASLFR_InitialTopEdge  = ASL_TB + 4;
+  ASLFR_InitialWidth    = ASL_TB + 5; // Initial requester dimensions
+  ASLFR_InitialHeight   = ASL_TB + 6;
+
+  ASLFR_HookFunc = ASL_TB + 7; // Combined callback function
+
+  ASLFR_InitialFile    = ASL_TB + 8;  // Initial contents of File gadget
+  ASLFR_InitialDrawer  = ASL_TB + 9;  // Initial contents of Drawer gadg.
+  ASLFR_InitialPattern = ASL_TB + 10; // Initial contents of Pattern gadg.
+
+  ASLFR_PositiveText = ASL_TB + 18; // Positive gadget text
+  ASLFR_NegativeText = ASL_TB + 19; // Negative gadget text
+
+  ASLFR_Flags1 = ASL_TB + 20; // Option flags
+  ASLFR_Flags2 = ASL_TB + 22; // Additional option flags
+
+  ASLFR_Screen        = ASL_TB + 40; // Screen to open on if no window
+  ASLFR_PubScreenName = ASL_TB + 41; // Name of public screen
+  ASLFR_PrivateIDCMP  = ASL_TB + 42; // Allocate private IDCMP?
+  ASLFR_SleepWindow   = ASL_TB + 43; // Block input in ASLFR_Window?
+
+  ASLFR_DoSaveMode    = ASL_TB + 44; // Being used for saving?
+  ASLFR_DoMultiSelect = ASL_TB + 45; // Do multi-select?
+  ASLFR_DoPatterns    = ASL_TB + 46; // Display a Pattern gadget?
+
+  ASLFR_DrawersOnly = ASL_TB + 47; // Don't display files?
+  ASLFR_FilterFunc  = ASL_TB + 49; // Function to filter files
+
+  ASLFR_Locale   = ASL_TB + 50; // Locale ASL should use for text
+  ASLFR_TextAttr = ASL_TB + 51; // Text font to use for gadget text
+  ASLFR_UserData = ASL_TB + 52; // What to put in fr_UserData
+
+  ASLFR_RejectIcons   = ASL_TB + 60; // Display .info files?
+  ASLFR_RejectPattern = ASL_TB + 61; // Don't display files matching pat
+  ASLFR_AcceptPattern = ASL_TB + 62; // Accept only files matching pat
+  ASLFR_FilterDrawers = ASL_TB + 63; // Also filter drawers with patterns
+
+  ASLFR_IntuiMsgFunc = ASL_TB + 70; // Function to handle IntuiMessages
+
+  ASLFR_SetSortBy      = ASL_TB + 124; // Sort criteria (name, date, size)
+  ASLFR_GetSortBy      = ASL_TB + 125;
+  ASLFR_SetSortDrawers = ASL_TB + 126; // Placement of drawers in the list
+  ASLFR_GetSortDrawers = ASL_TB + 127;
+  ASLFR_SetSortOrder   = ASL_TB + 128; // Order (ascending or descending)
+  ASLFR_GetSortOrder   = ASL_TB + 129;
+  // V44
+  ASLFR_InitialShowVolumes = ASL_TB + 130; // Initially, show the volume list
+  ASLFR_PopToFront         = ASL_TB + 131; // Make the requester window visible
+  // V45
+  ASLFR_Activate           = ASL_TB + 132; // Activate the requester window when
+
+  // Flag bits for the ASLFR_Flags1 tag
+  FRB_FILTERFUNC    = 7;
+  FRB_INTUIFUNC     = 6;
+  FRB_DOSAVEMODE    = 5;
+  FRB_PRIVATEIDCMP  = 4;
+  FRB_DOMULTISELECT = 3;
+  FRB_DOPATTERNS    = 0;
+
+  FRF_FILTERFUNC    = 1 shl FRB_FILTERFUNC;
+  FRF_INTUIFUNC     = 1 shl FRB_INTUIFUNC;
+  FRF_DOSAVEMODE    = 1 shl FRB_DOSAVEMODE;
+  FRF_PRIVATEIDCMP  = 1 shl FRB_PRIVATEIDCMP;
+  FRF_DOMULTISELECT = 1 shl FRB_DOMULTISELECT;
+  FRF_DOPATTERNS    = 1 shl FRB_DOPATTERNS;
+
+  // Flag bits for the ASLFR_Flags2 tag
+  FRB_DRAWERSONLY   = 0;
+  FRB_FILTERDRAWERS = 1;
+  FRB_REJECTICONS   = 2;
+
+  FRF_DRAWERSONLY   = 1 shl FRB_DRAWERSONLY;
+  FRF_FILTERDRAWERS = 1 shl FRB_FILTERDRAWERS;
+  FRF_REJECTICONS   = 1 shl FRB_REJECTICONS;
+
+  // Sort criteria for the ASLFR_SetSortBy/ASLFR_GetSortBy tags
+  ASLFRSORTBY_Name = 0;
+  ASLFRSORTBY_Date = 1;
+  ASLFRSORTBY_Size = 2;
+
+  // Drawer placement for the ASLFR_SetSortDrawers/ASLFR_GetSortDrawers tags
+  ASLFRSORTDRAWERS_First = 0;
+  ASLFRSORTDRAWERS_Mix   = 1;
+  ASLFRSORTDRAWERS_Last  = 2;
+
+  // Sort order for the ASLFR_SetSortOrder/ASLFR_GetSortOrder tags
+  ASLFRSORTORDER_Ascend  = 0;
+  ASLFRSORTORDER_Descend = 1;
 
 {****************************************************************************
  *
@@ -203,101 +222,104 @@ const
  * AslRequest()
  }
 
-Type
-    pFontRequester = ^tFontRequester;
-    tFontRequester = record
-       fo_Reserved0        : Array[0..7] Of Byte;
-       fo_Attr             : tTextAttr;            { Returned TextAttr                }
-       fo_FrontPen         : Byte;                 { Returned front pen               }
-       fo_BackPen          : Byte;                 { Returned back pen                }
-       fo_DrawMode         : Byte;                 { Returned drawing mode            }
-       fo_Reserved1        : Byte;
-       fo_UserData         : Pointer;              { You can store your own data here }
-       fo_LeftEdge         : smallint;                 { Coordinates Of requester on Exit }
-       fo_TopEdge          : smallint;
-       fo_Width            : smallint;
-       fo_Height           : smallint;
-       fo_TAttr            : tTTextAttr;           { Returned TTextAttr               }
-    end;
-
-
-{ Font requester tag values, used by AllocAslRequest() AND AslRequest() }
-
+type
+  PFontRequester = ^TFontRequester;
+  TFontRequester = record
+    fo_Reserved0: array[0..7] of Byte;
+    fo_Attr: TTextAttr;    // Returned TextAttr
+    fo_FrontPen: Byte;     // Returned front pen
+    fo_BackPen: Byte;      // Returned back pen
+    fo_DrawMode: Byte;     // Returned drawing mode
+    fo_Reserved1: Byte;
+    fo_UserData: APTR;     // You can store your own data here
+    fo_LeftEdge: SmallInt; // Coordinates Of requester on Exit
+    fo_TopEdge: SmallInt;
+    fo_Width: SmallInt;
+    fo_Height: SmallInt;
+    fo_TAttr: TTTextAttr;  // Returned TTextAttr
+  end;
+
+
+// Font requester tag values, used by AllocAslRequest() AND AslRequest()
 const
-{ Window control }
-  ASLFO_Window         = ASL_TB+2 ;  { Parent window                    }
-  ASLFO_Screen         = ASL_TB+40;  { Screen to open on if no window   }
-  ASLFO_PubScreenName  = ASL_TB+41;  { Name of public screen            }
-  ASLFO_PrivateIDCMP   = ASL_TB+42;  { Allocate private IDCMP?          }
-  ASLFO_IntuiMsgFunc   = ASL_TB+70;  { Function to handle IntuiMessages }
-  ASLFO_SleepWindow    = ASL_TB+43;  { Block input in ASLFO_Window?     }
-  ASLFO_UserData       = ASL_TB+52;  { What to put in fo_UserData       }
-  ASLFO_PopToFront     = ASL_TB+131; { Make the requester window visible
-                                          * when it opens (V44)
-                                          }
-  ASLFO_Activate       = ASL_TB+132; { Activate the requester window when
-                                          * it opens (V45).
-                                          }
-{ Text display }
-  ASLFO_TextAttr       = ASL_TB+51;  { Text font to use for gadget text }
-  ASLFO_Locale         = ASL_TB+50;  { Locale ASL should use for text   }
-  ASLFO_TitleText      = ASL_TB+1 ;  { Title of requester               }
-  ASLFO_PositiveText   = ASL_TB+18;  { Positive gadget text             }
-  ASLFO_NegativeText   = ASL_TB+19;  { Negative gadget text             }
-
-{ Initial settings }
-  ASLFO_InitialLeftEdge= ASL_TB+3 ;  { Initial requester coordinates    }
-  ASLFO_InitialTopEdge = ASL_TB+4 ;
-  ASLFO_InitialWidth   = ASL_TB+5 ;  { Initial requester dimensions     }
-  ASLFO_InitialHeight  = ASL_TB+6 ;
-  ASLFO_InitialName    = ASL_TB+10;  { Initial contents of Name gadget  }
-  ASLFO_InitialSize    = ASL_TB+11;  { Initial contents of Size gadget  }
-  ASLFO_InitialStyle   = ASL_TB+12;  { Initial font style               }
-  ASLFO_InitialFlags   = ASL_TB+13;  { Initial font flags for TextAttr  }
-  ASLFO_InitialFrontPen= ASL_TB+14;  { Initial front pen                }
-  ASLFO_InitialBackPen = ASL_TB+15;  { Initial back pen                 }
-  ASLFO_InitialDrawMode= ASL_TB+59;  { Initial draw mode                }
-
-{ Options }
-  ASLFO_Flags          = ASL_TB+20;  { Option flags                     }
-  ASLFO_DoFrontPen     = ASL_TB+44;  { Display Front color selector?    }
-  ASLFO_DoBackPen      = ASL_TB+45;  { Display Back color selector?     }
-  ASLFO_DoStyle        = ASL_TB+46;  { Display Style checkboxes?        }
-  ASLFO_DoDrawMode     = ASL_TB+47;  { Display DrawMode cycle gadget?   }
-  ASLFO_SampleText     = ASL_TB+133; { Text to display in font sample area (V45) }
-
-{ Filtering }
-  ASLFO_FixedWidthOnly = ASL_TB+48;  { Only allow fixed-width fonts?    }
-  ASLFO_MinHeight      = ASL_TB+16;  { Minimum font height to display   }
-  ASLFO_MaxHeight      = ASL_TB+17;  { Maximum font height to display   }
-  ASLFO_FilterFunc     = ASL_TB+49;  { Function to filter fonts         }
-  ASLFO_HookFunc       = ASL_TB+7 ;  { Combined callback function       }
-  ASLFO_MaxFrontPen    = ASL_TB+66;  { Max # of colors in front palette }
-  ASLFO_MaxBackPen     = ASL_TB+67;  { Max # of colors in back palette  }
-
-{ Custom additions }
-  ASLFO_ModeList       = ASL_TB+21;  { Substitute list for drawmodes    }
-  ASLFO_FrontPens      = ASL_TB+64;  { Color table for front pen palette}
-  ASLFO_BackPens       = ASL_TB+65;  { Color table for back pen palette }
-
-{ Flag bits for ASLFO_Flags tag }
-  FOB_DOFRONTPEN    =  0;
-  FOB_DOBACKPEN     =  1;
-  FOB_DOSTYLE       =  2;
-  FOB_DODRAWMODE    =  3;
-  FOB_FIXEDWIDTHONLY=  4;
-  FOB_PRIVATEIDCMP  =  5;
-  FOB_INTUIFUNC     =  6;
-  FOB_FILTERFUNC    =  7;
-
-  FOF_DOFRONTPEN     = 1;
-  FOF_DOBACKPEN      = 2;
-  FOF_DOSTYLE        = 4;
-  FOF_DODRAWMODE     = 8;
-  FOF_FIXEDWIDTHONLY = 16;
-  FOF_PRIVATEIDCMP   = 32;
-  FOF_INTUIFUNC      = 64;
-  FOF_FILTERFUNC     = 128;
+  ASLFO_TitleText = ASL_TB + 1; // Title of requester
+  ASLFO_Window    = ASL_TB + 2; // Parent window
+
+  ASLFO_InitialLeftEdge = ASL_TB + 3; // Initial requester coordinates
+  ASLFO_InitialTopEdge  = ASL_TB + 4;
+  ASLFO_InitialWidth    = ASL_TB + 5; // Initial requester dimensions
+  ASLFO_InitialHeight   = ASL_TB + 6;
+
+  ASLFO_HookFunc = ASL_TB + 7; // Combined callback function
+
+  ASLFO_InitialName     = ASL_TB + 10; // Initial contents of Name gadget
+  ASLFO_InitialSize     = ASL_TB + 11; // Initial contents of Size gadget
+  ASLFO_InitialStyle    = ASL_TB + 12; // Initial font style
+  ASLFO_InitialFlags    = ASL_TB + 13; // Initial font flags for TextAttr
+  ASLFO_InitialFrontPen = ASL_TB + 14; // Initial front pen
+  ASLFO_InitialBackPen  = ASL_TB + 15; // Initial back pen
+
+  ASLFO_MinHeight = ASL_TB + 16; // Minimum font height to display
+  ASLFO_MaxHeight = ASL_TB + 17; // Maximum font height to display
+
+  ASLFO_PositiveText = ASL_TB + 18; // Positive gadget text
+  ASLFO_NegativeText = ASL_TB + 19; // Negative gadget text
+
+  ASLFO_Flags = ASL_TB + 20; // Option flags
+
+  ASLFO_ModeList = ASL_TB + 21; // Substitute list for drawmodes
+
+  ASLFO_Screen        = ASL_TB + 40; // Screen to open on if no window
+  ASLFO_PubScreenName = ASL_TB + 41; // Name of public screen
+  ASLFO_PrivateIDCMP  = ASL_TB + 42; // Allocate private IDCMP?
+  ASLFO_SleepWindow   = ASL_TB + 43; // Block input in ASLFO_Window?
+
+  ASLFO_DoFrontPen = ASL_TB + 44; // Display Front color selector?
+  ASLFO_DoBackPen  = ASL_TB + 45; // Display Back color selector?
+  ASLFO_DoStyle    = ASL_TB + 46; // Display Style checkboxes?
+  ASLFO_DoDrawMode = ASL_TB + 47; // Display DrawMode cycle gadget?
+
+  ASLFO_FixedWidthOnly = ASL_TB + 48; // Only allow fixed-width fonts?
+
+  ASLFO_FilterFunc = ASL_TB + 49; // Function to filter fonts
+
+  ASLFO_Locale   = ASL_TB + 50; // Locale ASL should use for text
+  ASLFO_TextAttr = ASL_TB + 51; // Text font to use for gadget text
+  ASLFO_UserData = ASL_TB + 52; // What to put in fo_UserData
+
+  ASLFO_InitialDrawMode = ASL_TB + 59; // Initial draw mode
+
+  ASLFO_FrontPens = ASL_TB + 64; // Color table for front pen palette
+  ASLFO_BackPens  = ASL_TB + 65; // Color table for back pen palette
+
+  ASLFO_MaxFrontPen = ASL_TB + 66; // Max # of colors in front palette
+  ASLFO_MaxBackPen  = ASL_TB + 67; // Max # of colors in back palette
+
+  ASLFO_IntuiMsgFunc = ASL_TB + 70; // Function to handle IntuiMessages
+  // V44
+  ASLFO_PopToFront = ASL_TB + 131;  // Make the requester window visible  when it opens
+  // V45
+  ASLFO_Activate   = ASL_TB + 132; // Activate the requester window when it opens
+  ASLFO_SampleText = ASL_TB + 133; // Text to display in font sample area
+
+  // Flag bits for ASLFO_Flags tag
+  FOB_DOFRONTPEN     = 0;
+  FOB_DOBACKPEN      = 1;
+  FOB_DOSTYLE        = 2;
+  FOB_DODRAWMODE     = 3;
+  FOB_FIXEDWIDTHONLY = 4;
+  FOB_PRIVATEIDCMP   = 5;
+  FOB_INTUIFUNC      = 6;
+  FOB_FILTERFUNC     = 7;
+
+  FOF_DOFRONTPEN     = 1 shl FOB_DOFRONTPEN;
+  FOF_DOBACKPEN      = 1 shl FOB_DOBACKPEN;
+  FOF_DOSTYLE        = 1 shl FOB_DOSTYLE;
+  FOF_DODRAWMODE     = 1 shl FOB_DODRAWMODE;
+  FOF_FIXEDWIDTHONLY = 1 shl FOB_FIXEDWIDTHONLY;
+  FOF_PRIVATEIDCMP   = 1 shl FOB_PRIVATEIDCMP;
+  FOF_INTUIFUNC      = 1 shl FOB_INTUIFUNC;
+  FOF_FILTERFUNC     = 1 shl FOB_FILTERFUNC;
 
 {****************************************************************************
  *
@@ -309,32 +331,32 @@ const
  * AslRequest()
  }
 
-Type
- pScreenModeRequester = ^tScreenModeRequester;
- tScreenModeRequester = record
-    sm_DisplayID        : ULONG;    { Display mode ID                  }
-    sm_DisplayWidth     : ULONG;    { Width Of display IN pixels       }
-    sm_DisplayHeight    : ULONG;    { Height Of display IN pixels      }
-    sm_DisplayDepth     : word;     { Number OF bit-planes OF display  }
-    sm_OverscanType     : word;     { TYPE OF overscan OF display      }
-    sm_AutoScroll       : Boolean;  { Display should auto-scroll?      }
+type
+  PScreenModeRequester = ^TScreenModeRequester;
+  TScreenModeRequester = record
+    sm_DisplayID: Cardinal;     // Display mode ID
+    sm_DisplayWidth: Cardinal;  // Width of display in pixels
+    sm_DisplayHeight: Cardinal; // Height of display in pixels
+    sm_DisplayDepth: Word;      // Number of bit-planes of display
+    sm_OverscanType: Word;      // type of overscan of display
+    sm_AutoScroll: WordBool;    // Display should auto-scroll?
 
-    sm_BitMapWidth      : ULONG;    { Used TO create your own BitMap   }
-    sm_BitMapHeight     : ULONG;
+    sm_BitMapWidth: Cardinal;   // Used to create your own BitMap
+    sm_BitMapHeight: Cardinal;
 
-    sm_LeftEdge         : smallint;     { Coordinates OF requester on Exit }
-    sm_TopEdge          : smallint;
-    sm_Width            : smallint;
-    sm_Height           : smallint;
+    sm_LeftEdge: SmallInt;      // Coordinates of requester on Exit
+    sm_TopEdge: SmallInt;
+    sm_Width: SmallInt;
+    sm_Height: SmallInt;
 
-    sm_InfoOpened       : Boolean;  { Info window opened on exit?      }
-    sm_InfoLeftEdge     : smallint;     { Last coordinates OF Info window  }
-    sm_InfoTopEdge      : smallint;
-    sm_InfoWidth        : smallint;
-    sm_InfoHeight       : smallint;
+    sm_InfoOpened: WordBool;    // Info window opened on exit?
+    sm_InfoLeftEdge: SmallInt;  // Last coordinates of Info window
+    sm_InfoTopEdge: SmallInt;
+    sm_InfoWidth: SmallInt;
+    sm_InfoHeight: SmallInt;
 
-    sm_UserData         : Pointer;     { You can store your own data here }
- END;
+    sm_UserData: APTR;          // You can store your own data here
+  end;
 
 
 { An Exec list of custom modes can be added to the list of available modes.
@@ -344,77 +366,70 @@ Type
  * can be added in the dn_PropertyFlags field. Custom properties are not
  * allowed.
  }
- pDisplayMode = ^tDisplayMode;
- tDisplayMode = record
-    dm_Node     : tNode;                 { see ln_Name           }
-    dm_DimensionInfo : tDimensionInfo;   { mode description      }
-    dm_PropertyFlags : ULONG;           { applicable properties }
- end;
-
-
-{ ScreenMode requester tag values, used by AllocAslRequest() and AslRequest() }
+  PDisplayMode = ^TDisplayMode;
+  TDisplayMode = record
+    dm_Node: TNode;                   // see ln_Name
+    dm_DimensionInfo: TDimensionInfo; // mode description
+    dm_PropertyFlags: Cardinal;       // applicable properties
+  end;
+
+// ScreenMode requester tag values, used by AllocAslRequest() and AslRequest()
 const
-{ Window control }
-  ASLSM_Window        =  ASL_TB+2 ;  { Parent window                    }
-  ASLSM_Screen        =  ASL_TB+40;  { Screen to open on if no window   }
-  ASLSM_PubScreenName =  ASL_TB+41;  { Name of public screen            }
-  ASLSM_PrivateIDCMP  =  ASL_TB+42;  { Allocate private IDCMP?          }
-  ASLSM_IntuiMsgFunc  =  ASL_TB+70;  { Function to handle IntuiMessages }
-  ASLSM_SleepWindow   =  ASL_TB+43;  { Block input in ASLSM_Window?     }
-  ASLSM_UserData      =  ASL_TB+52;  { What to put in sm_UserData       }
-  ASLSM_PopToFront    =  ASL_TB+131; { Make the requester window visible
-                                          * when it opens (V44)
-                                          }
-  ASLSM_Activate      =  ASL_TB+132; { Activate the requester window when
-                                          * it opens (V45).
-                                          }
-
-{ Text display }
-  ASLSM_TextAttr      =  ASL_TB+51;  { Text font to use for gadget text }
-  ASLSM_Locale        =  ASL_TB+50;  { Locale ASL should use for text   }
-  ASLSM_TitleText     =  ASL_TB+1 ;  { Title of requester               }
-  ASLSM_PositiveText  =  ASL_TB+18;  { Positive gadget text             }
-  ASLSM_NegativeText  =  ASL_TB+19;  { Negative gadget text             }
-
-{ Initial settings }
-  ASLSM_InitialLeftEdge      = ASL_TB+3  ; { Initial requester coordinates    }
-  ASLSM_InitialTopEdge       = ASL_TB+4  ;
-  ASLSM_InitialWidth         = ASL_TB+5  ; { Initial requester dimensions     }
-  ASLSM_InitialHeight        = ASL_TB+6  ;
-  ASLSM_InitialDisplayID     = ASL_TB+100; { Initial display mode id     }
-  ASLSM_InitialDisplayWidth  = ASL_TB+101; { Initial display width       }
-  ASLSM_InitialDisplayHeight = ASL_TB+102; { Initial display height      }
-  ASLSM_InitialDisplayDepth  = ASL_TB+103; { Initial display depth       }
-  ASLSM_InitialOverscanType  = ASL_TB+104; { Initial type of overscan    }
-  ASLSM_InitialAutoScroll    = ASL_TB+105; { Initial autoscroll setting  }
-  ASLSM_InitialInfoOpened    = ASL_TB+106; { Info wndw initially opened? }
-  ASLSM_InitialInfoLeftEdge  = ASL_TB+107; { Initial Info window coords. }
-  ASLSM_InitialInfoTopEdge   = ASL_TB+108;
-
-{ Options }
-  ASLSM_DoWidth         = ASL_TB+109;  { Display Width gadget?           }
-  ASLSM_DoHeight        = ASL_TB+110;  { Display Height gadget?          }
-  ASLSM_DoDepth         = ASL_TB+111;  { Display Depth gadget?           }
-  ASLSM_DoOverscanType  = ASL_TB+112;  { Display Overscan Type gadget?   }
-  ASLSM_DoAutoScroll    = ASL_TB+113;  { Display AutoScroll gadget?      }
-
-{ Filtering }
-  ASLSM_PropertyFlags   = ASL_TB+114;  { Must have these Property flags  }
-  ASLSM_PropertyMask    = ASL_TB+115;  { Only these should be looked at  }
-  ASLSM_MinWidth        = ASL_TB+116;  { Minimum display width to allow  }
-  ASLSM_MaxWidth        = ASL_TB+117;  { Maximum display width to allow  }
-  ASLSM_MinHeight       = ASL_TB+118;  { Minimum display height to allow }
-  ASLSM_MaxHeight       = ASL_TB+119;  { Maximum display height to allow }
-  ASLSM_MinDepth        = ASL_TB+120;  { Minimum display depth           }
-  ASLSM_MaxDepth        = ASL_TB+121;  { Maximum display depth           }
-  ASLSM_FilterFunc      = ASL_TB+122;  { Function to filter mode id's    }
-
-{ Custom additions }
-  ASLSM_CustomSMList    = ASL_TB+123;  { Exec list of struct DisplayMode }
-
-{***************************************************************************}
-
-  ASL_LAST_TAG  = ASL_TB+133;
+  ASLSM_TitleText = ASL_TB + 1; // Title of requester
+  ASLSM_Window    = ASL_TB + 2; // Parent window
+
+  ASLSM_InitialLeftEdge = ASL_TB + 3; // Initial requester coordinates
+  ASLSM_InitialTopEdge  = ASL_TB + 4;
+  ASLSM_InitialWidth    = ASL_TB + 5; // Initial requester dimensions
+  ASLSM_InitialHeight   = ASL_TB + 6;
+
+  ASLSM_PositiveText = ASL_TB + 18; // Positive gadget text
+  ASLSM_NegativeText = ASL_TB + 19; // Negative gadget text
+
+  ASLSM_Screen        = ASL_TB + 40; // Screen to open on if no window
+  ASLSM_PubScreenName = ASL_TB + 41; // Name of public screen
+  ASLSM_PrivateIDCMP  = ASL_TB + 42; // Allocate private IDCMP?
+  ASLSM_SleepWindow   = ASL_TB + 43; // Block input in ASLSM_Window?
+
+  ASLSM_Locale   = ASL_TB + 50; // Locale ASL should use for text
+  ASLSM_TextAttr = ASL_TB + 51; // Text font to use for gadget text
+  ASLSM_UserData = ASL_TB + 52; // What to put in sm_UserData
+
+  ASLSM_IntuiMsgFunc = ASL_TB + 70; // Function to handle IntuiMessages
+
+  ASLSM_InitialDisplayID     = ASL_TB + 100; // Initial display mode id
+  ASLSM_InitialDisplayWidth  = ASL_TB + 101; // Initial display width
+  ASLSM_InitialDisplayHeight = ASL_TB + 102; // Initial display height
+  ASLSM_InitialDisplayDepth  = ASL_TB + 103; // Initial display depth
+  ASLSM_InitialOverscanType  = ASL_TB + 104; // Initial type of overscan
+  ASLSM_InitialAutoScroll    = ASL_TB + 105; // Initial autoscroll setting
+  ASLSM_InitialInfoOpened    = ASL_TB + 106; // Info wndw initially opened?
+  ASLSM_InitialInfoLeftEdge  = ASL_TB + 107; // Initial Info window coords.
+  ASLSM_InitialInfoTopEdge   = ASL_TB + 108;
+
+  ASLSM_DoWidth        = ASL_TB + 109; // Display Width gadget?
+  ASLSM_DoHeight       = ASL_TB + 110; // Display Height gadget?
+  ASLSM_DoDepth        = ASL_TB + 111; // Display Depth gadget?
+  ASLSM_DoOverscanType = ASL_TB + 112; // Display Overscan Type gadget?
+  ASLSM_DoAutoScroll   = ASL_TB + 113; // Display AutoScroll gadget?
+
+  ASLSM_PropertyFlags = ASL_TB + 114; // Must have these Property flags
+  ASLSM_PropertyMask  = ASL_TB + 115; // Only these should be looked at
+  ASLSM_MinWidth      = ASL_TB + 116; // Minimum display width to allow
+  ASLSM_MaxWidth      = ASL_TB + 117; // Maximum display width to allow
+  ASLSM_MinHeight     = ASL_TB + 118; // Minimum display height to allow
+  ASLSM_MaxHeight     = ASL_TB + 119; // Maximum display height to allow
+  ASLSM_MinDepth      = ASL_TB + 120; // Minimum display depth
+  ASLSM_MaxDepth      = ASL_TB + 121; // Maximum display depth
+  ASLSM_FilterFunc    = ASL_TB + 122; // Function to filter mode id's
+
+  ASLSM_CustomSMList = ASL_TB + 123; // Exec list of struct DisplayMode
+  // V44
+  ASLSM_PopToFront = ASL_TB + 131; // Make the requester window visible when it opens
+  // V45
+  ASLSM_Activate = ASL_TB + 132; // Activate the requester window when it opens
+
+  ASL_LAST_TAG = ASL_TB + 133;
 
 {***************************************************************************}
 
@@ -423,58 +438,45 @@ const
  * of the semaphore is given below; it exists only with asl.library V45 and
  * IPrefs V45 and beyond.
  }
-  ASL_SEMAPHORE_NAME  : Pchar = 'asl.library';
-
-   type
-       PAslSemaphore = ^tAslSemaphore;
-       tAslSemaphore = record
-            as_Semaphore : tSignalSemaphore;
-            as_Version : UWORD;         { Must be >= 45 }
-            as_Size : ULONG;            { Size of this data structure. }
-            as_SortBy : UBYTE;          { File requester defaults; name, date or size }
-            as_SortDrawers : UBYTE;     { File requester defaults; first, mix or last }
-            as_SortOrder : UBYTE;       { File requester defaults; ascending or descending }
-            as_SizePosition : UBYTE;    { See below }
-            as_RelativeLeft : WORD;     { Window position offset }
-            as_RelativeTop : WORD;
-            as_RelativeWidth : UBYTE;   { Window size factor; this is
-                                         * a percentage of the parent
-                                         * window/screen width.
-                                         }
-            as_RelativeHeight : UBYTE;
-         end;
+  ASL_SEMAPHORE_NAME: PChar = 'asl.library';
+
+type
+  PAslSemaphore = ^TAslSemaphore;
+  TAslSemaphore = record
+    as_Semaphore: TSignalSemaphore;
+    as_Version: Word;       // Must be >= 45
+    as_Size: Cardinal;      // Size of this data structure.
+
+    as_SortBy: Byte;        // File requester defaults; name, date or size
+    as_SortDrawers: Byte;   // File requester defaults; first, mix or last
+    as_SortOrder: Byte;     // File requester defaults; ascending or descending
+
+    as_SizePosition: Byte;  // See below
+
+    as_RelativeLeft: Word;  // Window position offset
+    as_RelativeTop: Word;
+
+    as_RelativeWidth: Byte; // Window size factor; this is a percentage of the parent window/screen width.
+    as_RelativeHeight : Byte;
+  end;
 
 const
-{ Default position of the ASL window. }
-  ASLPOS_DefaultPosition  = 0;  { Position is calculated according to the builtin rules. }
-  ASLPOS_CenterWindow     = 1;  { Centred within the bounds of the parent window. }
-  ASLPOS_CenterScreen     = 2;  { Centred within the bounds of the parent screen. }
-  ASLPOS_WindowPosition   = 3;  { Relative to the top left corner of the parent window,
-                                         * using the offset values provided in the
-                                         * as_RelativeLeft/as_RelativeTop members.
-                                         }
-  ASLPOS_ScreenPosition   = 4;  { Relative to the top left corner of the parent screen,
-                                         * using the offset values provided in the
-                                         * as_RelativeLeft/as_RelativeTop members.
-                                         }
-  ASLPOS_CenterMouse      = 5;  { Directly below the mouse pointer. }
-  ASLPOS_MASK             = $0F;
-
-{ Default size of the ASL window. }
-  ASLSIZE_DefaultSize   = (0 shl 4);    { Size is calculated according to the builtin rules. }
-  ASLSIZE_RelativeSize  = (1 shl 4);    { Size is relative to the size of the parent
-                                         * window or screen, using the values provided in
-                                         * the as_RelativeWidth/as_RelativeHeight members.
-                                         * The as_RelativeWidth/as_RelativeHeight values are
-                                         * taken as percentage, i.e. a value of "50" stands for
-                                         * 50% of the width/height of the parent window/screen.
-                                         }
-  ASLSIZE_MASK          = $30;
-
-{ Other options. }
-  ASLOPTION_ASLOverrides   = (1 shl 6); { ASL determines placement and size of requester
-                                         * windows; application's choice is ignored.
-                                         }
+  // Default position of the ASL window.
+  ASLPOS_DefaultPosition = 0; // Position is calculated according to the builtin rules.
+  ASLPOS_CenterWindow    = 1; // Centred within the bounds of the parent window.
+  ASLPOS_CenterScreen    = 2; // Centred within the bounds of the parent screen.
+  ASLPOS_WindowPosition  = 3; // Relative to the top left corner of the parent window, using the offset values provided in the as_RelativeLeft/as_RelativeTop members.
+  ASLPOS_ScreenPosition  = 4; // Relative to the top left corner of the parent screen, using the offset values provided in the as_RelativeLeft/as_RelativeTop members.
+  ASLPOS_CenterMouse     = 5; // Directly below the mouse pointer.
+  ASLPOS_MASK            = $0F;
+  // Default size of the ASL window.
+  ASLSIZE_DefaultSize  = 0 shl 4; // Size is calculated according to the builtin rules.
+  ASLSIZE_RelativeSize = 1 shl 4; // Size is relative to the size of the parent window or screen, using the values provided in
+                                  // the as_RelativeWidth/as_RelativeHeight members. The as_RelativeWidth/as_RelativeHeight values are
+                                  // taken as percentage, i.e. a value of "50" stands for 50% of the width/height of the parent window/screen.
+  ASLSIZE_MASK = $30;
+  // Other options.
+  ASLOPTION_ASLOverrides = 1 shl 6; // ASL determines placement and size of requester windows; application's choice is ignored.
 
 
 {****************************************************************************
@@ -486,48 +488,52 @@ const
  }
 {$define ASL_V38_NAMES_ONLY}
 {$ifndef ASL_V38_NAMES_ONLY}
-Const
-  ASL_Dummy       = (TAG_USER + $80000);
-  ASL_Hail        = ASL_Dummy+1 ;
-  ASL_Window      = ASL_Dummy+2 ;
-  ASL_LeftEdge    = ASL_Dummy+3 ;
-  ASL_TopEdge     = ASL_Dummy+4 ;
-  ASL_Width       = ASL_Dummy+5 ;
-  ASL_Height      = ASL_Dummy+6 ;
-  ASL_HookFunc    = ASL_Dummy+7 ;
-  ASL_File        = ASL_Dummy+8 ;
-  ASL_Dir         = ASL_Dummy+9 ;
-  ASL_FontName    = ASL_Dummy+10;
-  ASL_FontHeight  = ASL_Dummy+11;
-  ASL_FontStyles  = ASL_Dummy+12;
-  ASL_FontFlags   = ASL_Dummy+13;
-  ASL_FrontPen    = ASL_Dummy+14;
-  ASL_BackPen     = ASL_Dummy+15;
-  ASL_MinHeight   = ASL_Dummy+16;
-  ASL_MaxHeight   = ASL_Dummy+17;
-  ASL_OKText      = ASL_Dummy+18;
-  ASL_CancelText  = ASL_Dummy+19;
-  ASL_FuncFlags   = ASL_Dummy+20;
-  ASL_ModeList    = ASL_Dummy+21;
-  ASL_ExtFlags1   = ASL_Dummy+22;
-  ASL_Pattern     = ASL_FontName;
-{ remember what I said up there? Do not use these anymore! }
+const
+  ASL_Dummy      = TAG_USER + $80000;
+  ASL_Hail       = ASL_Dummy + 1;
+  ASL_Window     = ASL_Dummy + 2;
+  ASL_LeftEdge   = ASL_Dummy + 3;
+  ASL_TopEdge    = ASL_Dummy + 4;
+  ASL_Width      = ASL_Dummy + 5;
+  ASL_Height     = ASL_Dummy + 6;
+  ASL_HookFunc   = ASL_Dummy + 7;
+  ASL_File       = ASL_Dummy + 8;
+  ASL_Dir        = ASL_Dummy + 9;
+  ASL_FontName   = ASL_Dummy + 10;
+  ASL_FontHeight = ASL_Dummy + 11;
+  ASL_FontStyles = ASL_Dummy + 12;
+  ASL_FontFlags  = ASL_Dummy + 13;
+  ASL_FrontPen   = ASL_Dummy + 14;
+  ASL_BackPen    = ASL_Dummy + 15;
+  ASL_MinHeight  = ASL_Dummy + 16;
+  ASL_MaxHeight  = ASL_Dummy + 17;
+  ASL_OKText     = ASL_Dummy + 18;
+  ASL_CancelText = ASL_Dummy + 19;
+  ASL_FuncFlags  = ASL_Dummy + 20;
+  ASL_ModeList   = ASL_Dummy + 21;
+  ASL_ExtFlags1  = ASL_Dummy + 22;
+  ASL_Pattern    = ASL_FontName;
+
+  // remember what I said up there? Do not use these anymore!
   FILB_DOWILDFUNC  = 7;
   FILB_DOMSGFUNC   = 6;
   FILB_SAVE        = 5;
   FILB_NEWIDCMP    = 4;
   FILB_MULTISELECT = 3;
   FILB_PATGAD      = 0;
-  FILF_DOWILDFUNC  = 128;
-  FILF_DOMSGFUNC   = 64;
-  FILF_SAVE        = 32;
-  FILF_NEWIDCMP    = 16;
-  FILF_MULTISELECT = 8;
-  FILF_PATGAD      = 1;
-  FIL1B_NOFILES    = 0;
-  FIL1B_MATCHDIRS  = 1;
-  FIL1F_NOFILES    = 1;
-  FIL1F_MATCHDIRS  = 2;
+
+  FILF_DOWILDFUNC  = 1 shl FILB_DOWILDFUNC;
+  FILF_DOMSGFUNC   = 1 shl FILB_DOMSGFUNC;
+  FILF_SAVE        = 1 shl FILB_SAVE;
+  FILF_NEWIDCMP    = 1 shl FILB_NEWIDCMP;
+  FILF_MULTISELECT = 1 shl FILB_MULTISELECT;
+  FILF_PATGAD      = 1 shl FILB_PATGAD;
+
+  FIL1B_NOFILES   = 0;
+  FIL1B_MATCHDIRS = 1;
+  FIL1F_NOFILES   = 1 shl FIL1B_NOFILES;
+  FIL1F_MATCHDIRS = 1 shl FIL1B_MATCHDIRS;
+
   FONB_FRONTCOLOR  = 0;
   FONB_BACKCOLOR   = 1;
   FONB_STYLES      = 2;
@@ -536,55 +542,54 @@ Const
   FONB_NEWIDCMP    = 5;
   FONB_DOMSGFUNC   = 6;
   FONB_DOWILDFUNC  = 7;
-  FONF_FRONTCOLOR  = 1;
-  FONF_BACKCOLOR   = 2;
-  FONF_STYLES      = 4;
-  FONF_DRAWMODE    = 8;
-  FONF_FIXEDWIDTH  = 16;
-  FONF_NEWIDCMP    = 32;
-  FONF_DOMSGFUNC   = 64;
-  FONF_DOWILDFUNC  = 128;
-{$endif ASL_V38_NAMES_ONLY}
-
-VAR AslBase : pLibrary = nil;
 
+  FONF_FRONTCOLOR  = 1 shl FONB_FRONTCOLOR;
+  FONF_BACKCOLOR   = 1 shl FONB_BACKCOLOR;
+  FONF_STYLES      = 1 shl FONB_STYLES;
+  FONF_DRAWMODE    = 1 shl FONB_DRAWMODE;
+  FONF_FIXEDWIDTH  = 1 shl FONB_FIXEDWIDTH;
+  FONF_NEWIDCMP    = 1 shl FONB_NEWIDCMP;
+  FONF_DOMSGFUNC   = 1 shl FONB_DOMSGFUNC;
+  FONF_DOWILDFUNC  = 1 shl FONB_DOWILDFUNC;
+{$endif ASL_V38_NAMES_ONLY}
 
-FUNCTION AllocAslRequest(reqType : ULONG location 'd0'; tagList : pTagItem location 'a0') : POINTER; syscall AslBase 048;
-FUNCTION AllocFileRequest : pFileRequester; syscall AslBase 030;
-FUNCTION AslRequest(requester : POINTER location 'a0'; tagList : pTagItem location 'a1') : LongBool; syscall AslBase 060;
-PROCEDURE FreeAslRequest(requester : POINTER location 'a0'); syscall AslBase 054;
-PROCEDURE FreeFileRequest(fileReq : pFileRequester location 'a0'); syscall AslBase 036;
-FUNCTION RequestFile(fileReq : pFileRequester location 'a0') : LongBool; syscall AslBase 042;
+var
+  AslBase: PLibrary = nil;
 
-PROCEDURE AbortAslRequest(requester : POINTER location 'a0'); syscall AslBase 078;
-PROCEDURE ActivateAslRequest(requester : POINTER location 'a0'); syscall AslBase 084;
+function AllocFileRequest: PFileRequester; SysCall AslBase 030;
+procedure FreeFileRequest(FileReq: PFileRequester location 'a0'); SysCall AslBase 036;
+function RequestFile(FileReq: PFileRequester location 'a0'): LongBool; SysCall AslBase 042;
+function AllocAslRequest(ReqType: Cardinal location 'd0'; TagList: PTagItem location 'a0'): APTR; SysCall AslBase 048;
+procedure FreeAslRequest(Requester: APTR location 'a0'); SysCall AslBase 054;
+function AslRequest(Requester: APTR location 'a0'; TagList: PTagItem location 'a1'): LongBool; SysCall AslBase 060;
+procedure AbortAslRequest(Requester: APTR location 'a0'); SysCall AslBase 078;
+procedure ActivateAslRequest(Requester: APTR location 'a0'); SysCall AslBase 084;
 
-function AllocAslRequestTags(reqType : ULONG; Const argv : array of PtrUInt) : POINTER;
-function AslRequestTags(requester : POINTER; Const argv : array of PtrUInt) : BOOLEAN;
+function AllocAslRequestTags(ReqType: Cardinal; const TagList: array of PtrUInt): APTR; Inline;
+function AslRequestTags(Requester: APTR; const TagList: array of PtrUInt): LongBool; Inline;
 
-IMPLEMENTATION
+implementation
 
-function AllocAslRequestTags(reqType : ULONG; Const argv : array of PtrUInt) : POINTER;
+function AllocAslRequestTags(ReqType: Cardinal; const TagList: array of PtrUInt): APTR; Inline;
 begin
-    AllocAslRequestTags := AllocAslRequest(reqType,@argv);
+  AllocAslRequestTags := AllocAslRequest(ReqType, @tagList);
 end;
 
-function AslRequestTags(requester : POINTER; Const argv : array of PtrUInt) : BOOLEAN;
+function AslRequestTags(Requester: APTR; const TagList: array of PtrUInt): LongBool; Inline;
 begin
-    AslRequestTags := AslRequest(requester,@argv);
+  AslRequestTags := AslRequest(Requester, @TagList);
 end;
 
-
 const
-    { Change VERSION and LIBVERSION to proper values }
-    VERSION : string[2] = '0';
-    LIBVERSION : longword = 0;
+  // Change VERSION and LIBVERSION to proper values
+  VERSION : string[2] = '0';
+  LIBVERSION: LongWord = 0;
 
 initialization
-  AslBase := OpenLibrary(ASLNAME,LIBVERSION);
+  AslBase := OpenLibrary(ASLNAME, LIBVERSION);
 finalization
   if Assigned(AslBase) then
-    CloseLibrary(AslBase);
-END. (* UNIT ASL *)
+    CloseLibrary(PLibrary(AslBase));
+end.
 
 

+ 426 - 439
packages/morphunits/src/asl.pas

@@ -24,14 +24,14 @@ unit asl;
 
 interface
 
-uses exec, utility, {workbench,} agraphics;
+uses exec, utility, workbench, agraphics;
 
 
 {************************************************************************}
 
 const
-  ASLNAME : PChar = 'asl.library';
-  ASL_TB          =     TAG_USER+$80000;
+  ASLNAME: PChar = 'asl.library';
+  ASL_TB = TAG_USER + $80000;
 
 {************************************************************************}
 
@@ -52,120 +52,138 @@ const
  }
 
 type
-       pFileRequester = ^tFileRequester;
-       tFileRequester = record
-           rf_Reserved0   : Array[0..3] Of Byte;
-           rf_File        : PChar;        { Filename pointer             }
-           rf_Dir         : PChar;        { Directory name pointer       }
-           rf_Reserved1   : Array[0..9] Of Byte;
-           rf_LeftEdge    : smallint;
-           rf_TopEdge     : smallint;          { Preferred window pos }
-           rf_Width       : smallint;
-           rf_Height      : smallint;          { Preferred window size  }
-           rf_Reserved2   : Array[0..1] Of Byte;
-           rf_NumArgs     : LongInt;       { A-la WB Args, FOR multiselects }
-{$WARNING FIX ME!!! Needs workbench unit}
-{           rf_ArgList     : pWBArgList;}
-           rf_ArgList     : Pointer;
-           rf_UserData    : Pointer;       { Applihandle (you may write!!) }
-           rf_Reserved3   : Array[0..7] Of Byte;
-           rf_Pat         : PChar;         { Pattern match pointer }
-       END;                                { note - more reserved fields follow }
-
-
-{ File requester tag values, used by AllocAslRequest() and AslRequest() }
+  PFileRequester = ^TFileRequester;
+  TFileRequester = record
+    case SmallInt of
+      0: (
+        rf_Reserved0: array[0..3] of Byte;
+        rf_File: STRPTR;         // Filename pointer
+        rf_Dir: STRPTR;          // Directory name pointer
+        rf_Reserved1: array[0..9] of Byte;
+        rf_LeftEdge: SmallInt;
+        rf_TopEdge: SmallInt;    // Preferred window pos
+        rf_Width: SmallInt;
+        rf_Height: SmallInt;     // Preferred window size
+        rf_Reserved2: array[0..1] of Byte;
+        rf_NumArgs: LongInt;     // A-la WB Args, FOR multiselects
+        rf_ArgList: PWBArgList;
+        rf_UserData: APTR;       // Applihandle (you may write!!)
+        rf_Reserved3: array[0..7] of Byte;
+        rf_Pat: STRPTR;          // Pattern match pointer
+      );
+      1: (
+        fr_Reserved0: array[0..3] of Byte;
+        fr_File: STRPTR;         // Filename pointer
+        fr_Drawer: STRPTR;          // Directory name pointer
+        fr_Reserved1: array[0..9] of Byte;
+        fr_LeftEdge: SmallInt;
+        fr_TopEdge: SmallInt;    // Preferred window pos
+        fr_Width: SmallInt;
+        fr_Height: SmallInt;     // Preferred window size
+        fr_Reserved2: array[0..1] of Byte;
+        fr_NumArgs: LongInt;     // A-la WB Args, FOR multiselects
+        fr_ArgList: PWBArgList;
+        fr_UserData: APTR;       // Applihandle (you may write!!)
+        fr_Reserved3: array[0..7] of Byte;
+        fr_Pattern: STRPTR;      // Pattern match pointer
+      );
+  end;                       // note - more reserved fields follow
+
+// File requester tag values, used by AllocAslRequest() and AslRequest()
 
 const
-{ Window control }
-  ASLFR_Window         = ASL_TB+2 ;  { Parent window                    }
-  ASLFR_Screen         = ASL_TB+40;  { Screen to open on if no window   }
-  ASLFR_PubScreenName  = ASL_TB+41;  { Name of public screen            }
-  ASLFR_PrivateIDCMP   = ASL_TB+42;  { Allocate private IDCMP?          }
-  ASLFR_IntuiMsgFunc   = ASL_TB+70;  { Function to handle IntuiMessages }
-  ASLFR_SleepWindow    = ASL_TB+43;  { Block input in ASLFR_Window?     }
-  ASLFR_UserData       = ASL_TB+52;  { What to put in fr_UserData       }
-  ASLFR_PopToFront     = ASL_TB+131; { Make the requester window visible }
-  ASLFR_Activate       = ASL_TB+132; { Activate the requester window when }
-
-{ Text display }
-  ASLFR_TextAttr       = ASL_TB+51;  { Text font to use for gadget text }
-  ASLFR_Locale         = ASL_TB+50;  { Locale ASL should use for text   }
-  ASLFR_TitleText      = ASL_TB+1 ;  { Title of requester               }
-  ASLFR_PositiveText   = ASL_TB+18;  { Positive gadget text             }
-  ASLFR_NegativeText   = ASL_TB+19;  { Negative gadget text             }
-
-{ Initial settings }
-  ASLFR_InitialLeftEdge= ASL_TB+3 ;  { Initial requester coordinates    }
-  ASLFR_InitialTopEdge = ASL_TB+4 ;
-  ASLFR_InitialWidth   = ASL_TB+5 ;  { Initial requester dimensions     }
-  ASLFR_InitialHeight  = ASL_TB+6 ;
-  ASLFR_InitialFile    = ASL_TB+8 ;  { Initial contents of File gadget  }
-  ASLFR_InitialDrawer  = ASL_TB+9 ;  { Initial contents of Drawer gadg. }
-  ASLFR_InitialPattern = ASL_TB+10;  { Initial contents of Pattern gadg.}
-  ASLFR_InitialShowVolumes = ASL_TB+130; { Initially, show the volume list (V44) }
-
-{ Options }
-  ASLFR_Flags1         = ASL_TB+20;  { Option flags                     }
-  ASLFR_Flags2         = ASL_TB+22;  { Additional option flags          }
-  ASLFR_DoSaveMode     = ASL_TB+44;  { Being used for saving?           }
-  ASLFR_DoMultiSelect  = ASL_TB+45;  { Do multi-select?                 }
-  ASLFR_DoPatterns     = ASL_TB+46;  { Display a Pattern gadget?        }
-
-{ Filtering }
-  ASLFR_DrawersOnly    = ASL_TB+47;  { Don't display files?             }
-  ASLFR_FilterFunc     = ASL_TB+49;  { Function to filter files         }
-  ASLFR_RejectIcons    = ASL_TB+60;  { Display .info files?             }
-  ASLFR_RejectPattern  = ASL_TB+61;  { Don't display files matching pat }
-  ASLFR_AcceptPattern  = ASL_TB+62;  { Accept only files matching pat   }
-  ASLFR_FilterDrawers  = ASL_TB+63;  { Also filter drawers with patterns}
-  ASLFR_HookFunc       = ASL_TB+7 ;  { Combined callback function       }
-
-{ Sorting }
-  ASLFR_SetSortBy      = ASL_TB+124; { Sort criteria (name, date, size) }
-  ASLFR_GetSortBy      = ASL_TB+125;
-  ASLFR_SetSortDrawers = ASL_TB+126; { Placement of drawers in the list }
-  ASLFR_GetSortDrawers = ASL_TB+127;
-  ASLFR_SetSortOrder   = ASL_TB+128; { Order (ascending or descending)  }
-  ASLFR_GetSortOrder   = ASL_TB+129;
-
-
-{ Flag bits for the ASLFR_Flags1 tag }
-  FRB_FILTERFUNC     = 7;
-  FRB_INTUIFUNC      = 6;
-  FRB_DOSAVEMODE     = 5;
-  FRB_PRIVATEIDCMP   = 4;
-  FRB_DOMULTISELECT  = 3;
-  FRB_DOPATTERNS     = 0;
-
-  FRF_FILTERFUNC     = 128;
-  FRF_INTUIFUNC      = 64;
-  FRF_DOSAVEMODE     = 32;
-  FRF_PRIVATEIDCMP   = 16;
-  FRF_DOMULTISELECT  = 8;
-  FRF_DOPATTERNS     = 1;
-
-{ Flag bits for the ASLFR_Flags2 tag }
-  FRB_DRAWERSONLY    = 0;
-  FRB_FILTERDRAWERS  = 1;
-  FRB_REJECTICONS    = 2;
-
-  FRF_DRAWERSONLY    = 1;
-  FRF_FILTERDRAWERS  = 2;
-  FRF_REJECTICONS    = 4;
-
-{ Sort criteria for the ASLFR_SetSortBy/ASLFR_GetSortBy tags }
-  ASLFRSORTBY_Name   = 0;
-  ASLFRSORTBY_Date   = 1;
-  ASLFRSORTBY_Size   = 2;
-
-{ Drawer placement for the ASLFR_SetSortDrawers/ASLFR_GetSortDrawers tags }
-  ASLFRSORTDRAWERS_First  = 0;
-  ASLFRSORTDRAWERS_Mix    = 1;
-  ASLFRSORTDRAWERS_Last   = 2;
-
-{ Sort order for the ASLFR_SetSortOrder/ASLFR_GetSortOrder tags }
-  ASLFRSORTORDER_Ascend   = 0;
-  ASLFRSORTORDER_Descend  = 1;
+  ASLFR_TitleText = ASL_TB + 1; // Title of requester
+  ASLFR_Window    = ASL_TB + 2; // Parent window
+
+  ASLFR_InitialLeftEdge = ASL_TB + 3; // Initial requester coordinates
+  ASLFR_InitialTopEdge  = ASL_TB + 4;
+  ASLFR_InitialWidth    = ASL_TB + 5; // Initial requester dimensions
+  ASLFR_InitialHeight   = ASL_TB + 6;
+
+  ASLFR_HookFunc = ASL_TB + 7; // Combined callback function
+
+  ASLFR_InitialFile    = ASL_TB + 8;  // Initial contents of File gadget
+  ASLFR_InitialDrawer  = ASL_TB + 9;  // Initial contents of Drawer gadg.
+  ASLFR_InitialPattern = ASL_TB + 10; // Initial contents of Pattern gadg.
+
+  ASLFR_PositiveText = ASL_TB + 18; // Positive gadget text
+  ASLFR_NegativeText = ASL_TB + 19; // Negative gadget text
+
+  ASLFR_Flags1 = ASL_TB + 20; // Option flags
+  ASLFR_Flags2 = ASL_TB + 22; // Additional option flags
+
+  ASLFR_Screen        = ASL_TB + 40; // Screen to open on if no window
+  ASLFR_PubScreenName = ASL_TB + 41; // Name of public screen
+  ASLFR_PrivateIDCMP  = ASL_TB + 42; // Allocate private IDCMP?
+  ASLFR_SleepWindow   = ASL_TB + 43; // Block input in ASLFR_Window?
+
+  ASLFR_DoSaveMode    = ASL_TB + 44; // Being used for saving?
+  ASLFR_DoMultiSelect = ASL_TB + 45; // Do multi-select?
+  ASLFR_DoPatterns    = ASL_TB + 46; // Display a Pattern gadget?
+
+  ASLFR_DrawersOnly = ASL_TB + 47; // Don't display files?
+  ASLFR_FilterFunc  = ASL_TB + 49; // Function to filter files
+
+  ASLFR_Locale   = ASL_TB + 50; // Locale ASL should use for text
+  ASLFR_TextAttr = ASL_TB + 51; // Text font to use for gadget text
+  ASLFR_UserData = ASL_TB + 52; // What to put in fr_UserData
+
+  ASLFR_RejectIcons   = ASL_TB + 60; // Display .info files?
+  ASLFR_RejectPattern = ASL_TB + 61; // Don't display files matching pat
+  ASLFR_AcceptPattern = ASL_TB + 62; // Accept only files matching pat
+  ASLFR_FilterDrawers = ASL_TB + 63; // Also filter drawers with patterns
+
+  ASLFR_IntuiMsgFunc = ASL_TB + 70; // Function to handle IntuiMessages
+
+  ASLFR_SetSortBy      = ASL_TB + 124; // Sort criteria (name, date, size)
+  ASLFR_GetSortBy      = ASL_TB + 125;
+  ASLFR_SetSortDrawers = ASL_TB + 126; // Placement of drawers in the list
+  ASLFR_GetSortDrawers = ASL_TB + 127;
+  ASLFR_SetSortOrder   = ASL_TB + 128; // Order (ascending or descending)
+  ASLFR_GetSortOrder   = ASL_TB + 129;
+  // V44
+  ASLFR_InitialShowVolumes = ASL_TB + 130; // Initially, show the volume list
+  ASLFR_PopToFront         = ASL_TB + 131; // Make the requester window visible
+  // V45
+  ASLFR_Activate           = ASL_TB + 132; // Activate the requester window when
+
+  // Flag bits for the ASLFR_Flags1 tag
+  FRB_FILTERFUNC    = 7;
+  FRB_INTUIFUNC     = 6;
+  FRB_DOSAVEMODE    = 5;
+  FRB_PRIVATEIDCMP  = 4;
+  FRB_DOMULTISELECT = 3;
+  FRB_DOPATTERNS    = 0;
+
+  FRF_FILTERFUNC    = 1 shl FRB_FILTERFUNC;
+  FRF_INTUIFUNC     = 1 shl FRB_INTUIFUNC;
+  FRF_DOSAVEMODE    = 1 shl FRB_DOSAVEMODE;
+  FRF_PRIVATEIDCMP  = 1 shl FRB_PRIVATEIDCMP;
+  FRF_DOMULTISELECT = 1 shl FRB_DOMULTISELECT;
+  FRF_DOPATTERNS    = 1 shl FRB_DOPATTERNS;
+
+  // Flag bits for the ASLFR_Flags2 tag
+  FRB_DRAWERSONLY   = 0;
+  FRB_FILTERDRAWERS = 1;
+  FRB_REJECTICONS   = 2;
+
+  FRF_DRAWERSONLY   = 1 shl FRB_DRAWERSONLY;
+  FRF_FILTERDRAWERS = 1 shl FRB_FILTERDRAWERS;
+  FRF_REJECTICONS   = 1 shl FRB_REJECTICONS;
+
+  // Sort criteria for the ASLFR_SetSortBy/ASLFR_GetSortBy tags
+  ASLFRSORTBY_Name = 0;
+  ASLFRSORTBY_Date = 1;
+  ASLFRSORTBY_Size = 2;
+
+  // Drawer placement for the ASLFR_SetSortDrawers/ASLFR_GetSortDrawers tags
+  ASLFRSORTDRAWERS_First = 0;
+  ASLFRSORTDRAWERS_Mix   = 1;
+  ASLFRSORTDRAWERS_Last  = 2;
+
+  // Sort order for the ASLFR_SetSortOrder/ASLFR_GetSortOrder tags
+  ASLFRSORTORDER_Ascend  = 0;
+  ASLFRSORTORDER_Descend = 1;
 
 {****************************************************************************
  *
@@ -178,100 +196,102 @@ const
  }
 
 type
-    pFontRequester = ^tFontRequester;
-    tFontRequester = record
-       fo_Reserved0        : Array[0..7] Of Byte;
-       fo_Attr             : tTextAttr;            { Returned TextAttr                }
-       fo_FrontPen         : Byte;                 { Returned front pen               }
-       fo_BackPen          : Byte;                 { Returned back pen                }
-       fo_DrawMode         : Byte;                 { Returned drawing mode            }
-       fo_Reserved1        : Byte;
-       fo_UserData         : Pointer;              { You can store your own data here }
-       fo_LeftEdge         : smallint;                 { Coordinates Of requester on Exit }
-       fo_TopEdge          : smallint;
-       fo_Width            : smallint;
-       fo_Height           : smallint;
-       fo_TAttr            : tTTextAttr;           { Returned TTextAttr               }
-    end;
-
-
-{ Font requester tag values, used by AllocAslRequest() AND AslRequest() }
-
+  PFontRequester = ^TFontRequester;
+  TFontRequester = record
+    fo_Reserved0: array[0..7] of Byte;
+    fo_Attr: TTextAttr;    // Returned TextAttr
+    fo_FrontPen: Byte;     // Returned front pen
+    fo_BackPen: Byte;      // Returned back pen
+    fo_DrawMode: Byte;     // Returned drawing mode
+    fo_Reserved1: Byte;
+    fo_UserData: APTR;     // You can store your own data here
+    fo_LeftEdge: SmallInt; // Coordinates Of requester on Exit
+    fo_TopEdge: SmallInt;
+    fo_Width: SmallInt;
+    fo_Height: SmallInt;
+    fo_TAttr: TTTextAttr;  // Returned TTextAttr
+  end;
+
+// Font requester tag values, used by AllocAslRequest() AND AslRequest()
 const
-{ Window control }
-  ASLFO_Window         = ASL_TB+2 ;  { Parent window                    }
-  ASLFO_Screen         = ASL_TB+40;  { Screen to open on if no window   }
-  ASLFO_PubScreenName  = ASL_TB+41;  { Name of public screen            }
-  ASLFO_PrivateIDCMP   = ASL_TB+42;  { Allocate private IDCMP?          }
-  ASLFO_IntuiMsgFunc   = ASL_TB+70;  { Function to handle IntuiMessages }
-  ASLFO_SleepWindow    = ASL_TB+43;  { Block input in ASLFO_Window?     }
-  ASLFO_UserData       = ASL_TB+52;  { What to put in fo_UserData       }
-  ASLFO_PopToFront     = ASL_TB+131; { Make the requester window visible
-                                          * when it opens (V44)
-                                          }
-  ASLFO_Activate       = ASL_TB+132; { Activate the requester window when
-                                          * it opens (V45).
-                                          }
-{ Text display }
-  ASLFO_TextAttr       = ASL_TB+51;  { Text font to use for gadget text }
-  ASLFO_Locale         = ASL_TB+50;  { Locale ASL should use for text   }
-  ASLFO_TitleText      = ASL_TB+1 ;  { Title of requester               }
-  ASLFO_PositiveText   = ASL_TB+18;  { Positive gadget text             }
-  ASLFO_NegativeText   = ASL_TB+19;  { Negative gadget text             }
-
-{ Initial settings }
-  ASLFO_InitialLeftEdge= ASL_TB+3 ;  { Initial requester coordinates    }
-  ASLFO_InitialTopEdge = ASL_TB+4 ;
-  ASLFO_InitialWidth   = ASL_TB+5 ;  { Initial requester dimensions     }
-  ASLFO_InitialHeight  = ASL_TB+6 ;
-  ASLFO_InitialName    = ASL_TB+10;  { Initial contents of Name gadget  }
-  ASLFO_InitialSize    = ASL_TB+11;  { Initial contents of Size gadget  }
-  ASLFO_InitialStyle   = ASL_TB+12;  { Initial font style               }
-  ASLFO_InitialFlags   = ASL_TB+13;  { Initial font flags for TextAttr  }
-  ASLFO_InitialFrontPen= ASL_TB+14;  { Initial front pen                }
-  ASLFO_InitialBackPen = ASL_TB+15;  { Initial back pen                 }
-  ASLFO_InitialDrawMode= ASL_TB+59;  { Initial draw mode                }
-
-{ Options }
-  ASLFO_Flags          = ASL_TB+20;  { Option flags                     }
-  ASLFO_DoFrontPen     = ASL_TB+44;  { Display Front color selector?    }
-  ASLFO_DoBackPen      = ASL_TB+45;  { Display Back color selector?     }
-  ASLFO_DoStyle        = ASL_TB+46;  { Display Style checkboxes?        }
-  ASLFO_DoDrawMode     = ASL_TB+47;  { Display DrawMode cycle gadget?   }
-  ASLFO_SampleText     = ASL_TB+133; { Text to display in font sample area (V45) }
-
-{ Filtering }
-  ASLFO_FixedWidthOnly = ASL_TB+48;  { Only allow fixed-width fonts?    }
-  ASLFO_MinHeight      = ASL_TB+16;  { Minimum font height to display   }
-  ASLFO_MaxHeight      = ASL_TB+17;  { Maximum font height to display   }
-  ASLFO_FilterFunc     = ASL_TB+49;  { Function to filter fonts         }
-  ASLFO_HookFunc       = ASL_TB+7 ;  { Combined callback function       }
-  ASLFO_MaxFrontPen    = ASL_TB+66;  { Max # of colors in front palette }
-  ASLFO_MaxBackPen     = ASL_TB+67;  { Max # of colors in back palette  }
-
-{ Custom additions }
-  ASLFO_ModeList       = ASL_TB+21;  { Substitute list for drawmodes    }
-  ASLFO_FrontPens      = ASL_TB+64;  { Color table for front pen palette}
-  ASLFO_BackPens       = ASL_TB+65;  { Color table for back pen palette }
-
-{ Flag bits for ASLFO_Flags tag }
-  FOB_DOFRONTPEN    =  0;
-  FOB_DOBACKPEN     =  1;
-  FOB_DOSTYLE       =  2;
-  FOB_DODRAWMODE    =  3;
-  FOB_FIXEDWIDTHONLY=  4;
-  FOB_PRIVATEIDCMP  =  5;
-  FOB_INTUIFUNC     =  6;
-  FOB_FILTERFUNC    =  7;
-
-  FOF_DOFRONTPEN     = 1;
-  FOF_DOBACKPEN      = 2;
-  FOF_DOSTYLE        = 4;
-  FOF_DODRAWMODE     = 8;
-  FOF_FIXEDWIDTHONLY = 16;
-  FOF_PRIVATEIDCMP   = 32;
-  FOF_INTUIFUNC      = 64;
-  FOF_FILTERFUNC     = 128;
+  ASLFO_TitleText = ASL_TB + 1; // Title of requester
+  ASLFO_Window    = ASL_TB + 2; // Parent window
+
+  ASLFO_InitialLeftEdge = ASL_TB + 3; // Initial requester coordinates
+  ASLFO_InitialTopEdge  = ASL_TB + 4;
+  ASLFO_InitialWidth    = ASL_TB + 5; // Initial requester dimensions
+  ASLFO_InitialHeight   = ASL_TB + 6;
+
+  ASLFO_HookFunc = ASL_TB + 7; // Combined callback function
+
+  ASLFO_InitialName     = ASL_TB + 10; // Initial contents of Name gadget
+  ASLFO_InitialSize     = ASL_TB + 11; // Initial contents of Size gadget
+  ASLFO_InitialStyle    = ASL_TB + 12; // Initial font style
+  ASLFO_InitialFlags    = ASL_TB + 13; // Initial font flags for TextAttr
+  ASLFO_InitialFrontPen = ASL_TB + 14; // Initial front pen
+  ASLFO_InitialBackPen  = ASL_TB + 15; // Initial back pen
+
+  ASLFO_MinHeight = ASL_TB + 16; // Minimum font height to display
+  ASLFO_MaxHeight = ASL_TB + 17; // Maximum font height to display
+
+  ASLFO_PositiveText = ASL_TB + 18; // Positive gadget text
+  ASLFO_NegativeText = ASL_TB + 19; // Negative gadget text
+
+  ASLFO_Flags = ASL_TB + 20; // Option flags
+
+  ASLFO_ModeList = ASL_TB + 21; // Substitute list for drawmodes
+
+  ASLFO_Screen        = ASL_TB + 40; // Screen to open on if no window
+  ASLFO_PubScreenName = ASL_TB + 41; // Name of public screen
+  ASLFO_PrivateIDCMP  = ASL_TB + 42; // Allocate private IDCMP?
+  ASLFO_SleepWindow   = ASL_TB + 43; // Block input in ASLFO_Window?
+
+  ASLFO_DoFrontPen = ASL_TB + 44; // Display Front color selector?
+  ASLFO_DoBackPen  = ASL_TB + 45; // Display Back color selector?
+  ASLFO_DoStyle    = ASL_TB + 46; // Display Style checkboxes?
+  ASLFO_DoDrawMode = ASL_TB + 47; // Display DrawMode cycle gadget?
+
+  ASLFO_FixedWidthOnly = ASL_TB + 48; // Only allow fixed-width fonts?
+
+  ASLFO_FilterFunc = ASL_TB + 49; // Function to filter fonts
+
+  ASLFO_Locale   = ASL_TB + 50; // Locale ASL should use for text
+  ASLFO_TextAttr = ASL_TB + 51; // Text font to use for gadget text
+  ASLFO_UserData = ASL_TB + 52; // What to put in fo_UserData
+
+  ASLFO_InitialDrawMode = ASL_TB + 59; // Initial draw mode
+
+  ASLFO_FrontPens = ASL_TB + 64; // Color table for front pen palette
+  ASLFO_BackPens  = ASL_TB + 65; // Color table for back pen palette
+
+  ASLFO_MaxFrontPen = ASL_TB + 66; // Max # of colors in front palette
+  ASLFO_MaxBackPen  = ASL_TB + 67; // Max # of colors in back palette
+
+  ASLFO_IntuiMsgFunc = ASL_TB + 70; // Function to handle IntuiMessages
+  // V44
+  ASLFO_PopToFront = ASL_TB + 131;  // Make the requester window visible  when it opens
+  // V45
+  ASLFO_Activate   = ASL_TB + 132; // Activate the requester window when it opens
+  ASLFO_SampleText = ASL_TB + 133; // Text to display in font sample area
+
+  // Flag bits for ASLFO_Flags tag
+  FOB_DOFRONTPEN     = 0;
+  FOB_DOBACKPEN      = 1;
+  FOB_DOSTYLE        = 2;
+  FOB_DODRAWMODE     = 3;
+  FOB_FIXEDWIDTHONLY = 4;
+  FOB_PRIVATEIDCMP   = 5;
+  FOB_INTUIFUNC      = 6;
+  FOB_FILTERFUNC     = 7;
+
+  FOF_DOFRONTPEN     = 1 shl FOB_DOFRONTPEN;
+  FOF_DOBACKPEN      = 1 shl FOB_DOBACKPEN;
+  FOF_DOSTYLE        = 1 shl FOB_DOSTYLE;
+  FOF_DODRAWMODE     = 1 shl FOB_DODRAWMODE;
+  FOF_FIXEDWIDTHONLY = 1 shl FOB_FIXEDWIDTHONLY;
+  FOF_PRIVATEIDCMP   = 1 shl FOB_PRIVATEIDCMP;
+  FOF_INTUIFUNC      = 1 shl FOB_INTUIFUNC;
+  FOF_FILTERFUNC     = 1 shl FOB_FILTERFUNC;
 
 {****************************************************************************
  *
@@ -283,32 +303,38 @@ const
  * AslRequest()
  }
 
-Type
- pScreenModeRequester = ^tScreenModeRequester;
- tScreenModeRequester = record
-    sm_DisplayID        : Cardinal;    { Display mode ID                  }
-    sm_DisplayWidth     : Cardinal;    { Width Of display IN pixels       }
-    sm_DisplayHeight    : Cardinal;    { Height Of display IN pixels      }
-    sm_DisplayDepth     : word;     { Number OF bit-planes OF display  }
-    sm_OverscanType     : word;     { TYPE OF overscan OF display      }
-    sm_AutoScroll       : Boolean;  { Display should auto-scroll?      }
+type
+  PScreenModeRequester = ^TScreenModeRequester;
+  TScreenModeRequester = record
+    sm_DisplayID: Cardinal;     // Display mode ID
+    sm_DisplayWidth: Cardinal;  // Width of display in pixels
+    sm_DisplayHeight: Cardinal; // Height of display in pixels
+    sm_DisplayDepth: Word;      // Number of bit-planes of display
+    sm_OverscanType: Word;      // type of overscan of display
+    sm_AutoScroll: WordBool;    // Display should auto-scroll?
+
+    sm_BitMapWidth: Cardinal;   // Used to create your own BitMap
+    sm_BitMapHeight: Cardinal;
 
-    sm_BitMapWidth      : Cardinal;    { Used TO create your own BitMap   }
-    sm_BitMapHeight     : Cardinal;
+    sm_LeftEdge: SmallInt;      // Coordinates of requester on Exit
+    sm_TopEdge: SmallInt;
+    sm_Width: SmallInt;
+    sm_Height: SmallInt;
 
-    sm_LeftEdge         : smallint;     { Coordinates OF requester on Exit }
-    sm_TopEdge          : smallint;
-    sm_Width            : smallint;
-    sm_Height           : smallint;
+    sm_InfoOpened: WordBool;    // Info window opened on exit?
+    sm_InfoLeftEdge: SmallInt;  // Last coordinates of Info window
+    sm_InfoTopEdge: SmallInt;
+    sm_InfoWidth: SmallInt;
+    sm_InfoHeight: SmallInt;
 
-    sm_InfoOpened       : Boolean;  { Info window opened on exit?      }
-    sm_InfoLeftEdge     : smallint;     { Last coordinates OF Info window  }
-    sm_InfoTopEdge      : smallint;
-    sm_InfoWidth        : smallint;
-    sm_InfoHeight       : smallint;
+    sm_UserData: APTR;          // You can store your own data here
+    // fields below are available from asl.library V51
 
-    sm_UserData         : Pointer;     { You can store your own data here }
- END;
+    sm_MonitorName: STRPTR; // Name of the monitor this sm_DisplayID is tied to To be passed as SA_MonitorName
+
+    sm_DisplayIDWidth: Cardinal; // sm_DisplayID resolution, to be passed as SA_DisplayWidth/Height in OpenScreen
+    sm_DisplayIDHeight: Cardinal;
+  end;
 
 
 { An Exec list of custom modes can be added to the list of available modes.
@@ -318,77 +344,70 @@ Type
  * can be added in the dn_PropertyFlags field. Custom properties are not
  * allowed.
  }
- pDisplayMode = ^tDisplayMode;
- tDisplayMode = record
-    dm_Node     : tNode;                 { see ln_Name           }
-    dm_DimensionInfo : tDimensionInfo;   { mode description      }
-    dm_PropertyFlags : Cardinal;           { applicable properties }
- end;
-
-
-{ ScreenMode requester tag values, used by AllocAslRequest() and AslRequest() }
+  PDisplayMode = ^TDisplayMode;
+  TDisplayMode = record
+    dm_Node: TNode;                   // see ln_Name
+    dm_DimensionInfo: TDimensionInfo; // mode description
+    dm_PropertyFlags: Cardinal;       // applicable properties
+  end;
+
+  // ScreenMode requester tag values, used by AllocAslRequest() and AslRequest()
 const
-{ Window control }
-  ASLSM_Window        =  ASL_TB+2 ;  { Parent window                    }
-  ASLSM_Screen        =  ASL_TB+40;  { Screen to open on if no window   }
-  ASLSM_PubScreenName =  ASL_TB+41;  { Name of public screen            }
-  ASLSM_PrivateIDCMP  =  ASL_TB+42;  { Allocate private IDCMP?          }
-  ASLSM_IntuiMsgFunc  =  ASL_TB+70;  { Function to handle IntuiMessages }
-  ASLSM_SleepWindow   =  ASL_TB+43;  { Block input in ASLSM_Window?     }
-  ASLSM_UserData      =  ASL_TB+52;  { What to put in sm_UserData       }
-  ASLSM_PopToFront    =  ASL_TB+131; { Make the requester window visible
-                                          * when it opens (V44)
-                                          }
-  ASLSM_Activate      =  ASL_TB+132; { Activate the requester window when
-                                          * it opens (V45).
-                                          }
-
-{ Text display }
-  ASLSM_TextAttr      =  ASL_TB+51;  { Text font to use for gadget text }
-  ASLSM_Locale        =  ASL_TB+50;  { Locale ASL should use for text   }
-  ASLSM_TitleText     =  ASL_TB+1 ;  { Title of requester               }
-  ASLSM_PositiveText  =  ASL_TB+18;  { Positive gadget text             }
-  ASLSM_NegativeText  =  ASL_TB+19;  { Negative gadget text             }
-
-{ Initial settings }
-  ASLSM_InitialLeftEdge      = ASL_TB+3  ; { Initial requester coordinates    }
-  ASLSM_InitialTopEdge       = ASL_TB+4  ;
-  ASLSM_InitialWidth         = ASL_TB+5  ; { Initial requester dimensions     }
-  ASLSM_InitialHeight        = ASL_TB+6  ;
-  ASLSM_InitialDisplayID     = ASL_TB+100; { Initial display mode id     }
-  ASLSM_InitialDisplayWidth  = ASL_TB+101; { Initial display width       }
-  ASLSM_InitialDisplayHeight = ASL_TB+102; { Initial display height      }
-  ASLSM_InitialDisplayDepth  = ASL_TB+103; { Initial display depth       }
-  ASLSM_InitialOverscanType  = ASL_TB+104; { Initial type of overscan    }
-  ASLSM_InitialAutoScroll    = ASL_TB+105; { Initial autoscroll setting  }
-  ASLSM_InitialInfoOpened    = ASL_TB+106; { Info wndw initially opened? }
-  ASLSM_InitialInfoLeftEdge  = ASL_TB+107; { Initial Info window coords. }
-  ASLSM_InitialInfoTopEdge   = ASL_TB+108;
-
-{ Options }
-  ASLSM_DoWidth         = ASL_TB+109;  { Display Width gadget?           }
-  ASLSM_DoHeight        = ASL_TB+110;  { Display Height gadget?          }
-  ASLSM_DoDepth         = ASL_TB+111;  { Display Depth gadget?           }
-  ASLSM_DoOverscanType  = ASL_TB+112;  { Display Overscan Type gadget?   }
-  ASLSM_DoAutoScroll    = ASL_TB+113;  { Display AutoScroll gadget?      }
-
-{ Filtering }
-  ASLSM_PropertyFlags   = ASL_TB+114;  { Must have these Property flags  }
-  ASLSM_PropertyMask    = ASL_TB+115;  { Only these should be looked at  }
-  ASLSM_MinWidth        = ASL_TB+116;  { Minimum display width to allow  }
-  ASLSM_MaxWidth        = ASL_TB+117;  { Maximum display width to allow  }
-  ASLSM_MinHeight       = ASL_TB+118;  { Minimum display height to allow }
-  ASLSM_MaxHeight       = ASL_TB+119;  { Maximum display height to allow }
-  ASLSM_MinDepth        = ASL_TB+120;  { Minimum display depth           }
-  ASLSM_MaxDepth        = ASL_TB+121;  { Maximum display depth           }
-  ASLSM_FilterFunc      = ASL_TB+122;  { Function to filter mode id's    }
-
-{ Custom additions }
-  ASLSM_CustomSMList    = ASL_TB+123;  { Exec list of struct DisplayMode }
-
-{***************************************************************************}
-
-  ASL_LAST_TAG  = ASL_TB+133;
+  ASLSM_TitleText = ASL_TB + 1; // Title of requester
+  ASLSM_Window    = ASL_TB + 2; // Parent window
+
+  ASLSM_InitialLeftEdge = ASL_TB + 3; // Initial requester coordinates
+  ASLSM_InitialTopEdge  = ASL_TB + 4;
+  ASLSM_InitialWidth    = ASL_TB + 5; // Initial requester dimensions
+  ASLSM_InitialHeight   = ASL_TB + 6;
+
+  ASLSM_PositiveText = ASL_TB + 18; // Positive gadget text
+  ASLSM_NegativeText = ASL_TB + 19; // Negative gadget text
+
+  ASLSM_Screen        = ASL_TB + 40; // Screen to open on if no window
+  ASLSM_PubScreenName = ASL_TB + 41; // Name of public screen
+  ASLSM_PrivateIDCMP  = ASL_TB + 42; // Allocate private IDCMP?
+  ASLSM_SleepWindow   = ASL_TB + 43; // Block input in ASLSM_Window?
+
+  ASLSM_Locale   = ASL_TB + 50; // Locale ASL should use for text
+  ASLSM_TextAttr = ASL_TB + 51; // Text font to use for gadget text
+  ASLSM_UserData = ASL_TB + 52; // What to put in sm_UserData
+
+  ASLSM_IntuiMsgFunc = ASL_TB + 70; // Function to handle IntuiMessages
+
+  ASLSM_InitialDisplayID     = ASL_TB + 100; // Initial display mode id
+  ASLSM_InitialDisplayWidth  = ASL_TB + 101; // Initial display width
+  ASLSM_InitialDisplayHeight = ASL_TB + 102; // Initial display height
+  ASLSM_InitialDisplayDepth  = ASL_TB + 103; // Initial display depth
+  ASLSM_InitialOverscanType  = ASL_TB + 104; // Initial type of overscan
+  ASLSM_InitialAutoScroll    = ASL_TB + 105; // Initial autoscroll setting
+  ASLSM_InitialInfoOpened    = ASL_TB + 106; // Info wndw initially opened?
+  ASLSM_InitialInfoLeftEdge  = ASL_TB + 107; // Initial Info window coords.
+  ASLSM_InitialInfoTopEdge   = ASL_TB + 108;
+
+  ASLSM_DoWidth        = ASL_TB + 109; // Display Width gadget?
+  ASLSM_DoHeight       = ASL_TB + 110; // Display Height gadget?
+  ASLSM_DoDepth        = ASL_TB + 111; // Display Depth gadget?
+  ASLSM_DoOverscanType = ASL_TB + 112; // Display Overscan Type gadget?
+  ASLSM_DoAutoScroll   = ASL_TB + 113; // Display AutoScroll gadget?
+
+  ASLSM_PropertyFlags = ASL_TB + 114; // Must have these Property flags
+  ASLSM_PropertyMask  = ASL_TB + 115; // Only these should be looked at
+  ASLSM_MinWidth      = ASL_TB + 116; // Minimum display width to allow
+  ASLSM_MaxWidth      = ASL_TB + 117; // Maximum display width to allow
+  ASLSM_MinHeight     = ASL_TB + 118; // Minimum display height to allow
+  ASLSM_MaxHeight     = ASL_TB + 119; // Maximum display height to allow
+  ASLSM_MinDepth      = ASL_TB + 120; // Minimum display depth
+  ASLSM_MaxDepth      = ASL_TB + 121; // Maximum display depth
+  ASLSM_FilterFunc    = ASL_TB + 122; // Function to filter mode id's
+
+  ASLSM_CustomSMList = ASL_TB + 123; // Exec list of struct DisplayMode
+  // V44
+  ASLSM_PopToFront = ASL_TB + 131; // Make the requester window visible when it opens
+  // V45
+  ASLSM_Activate = ASL_TB + 132; // Activate the requester window when it opens
+
+  ASL_LAST_TAG = ASL_TB + 133;
 
 {***************************************************************************}
 
@@ -397,59 +416,45 @@ const
  * of the semaphore is given below; it exists only with asl.library V45 and
  * IPrefs V45 and beyond.
  }
-  ASL_SEMAPHORE_NAME  : Pchar = 'asl.library';
-
-   type
-       PAslSemaphore = ^tAslSemaphore;
-       tAslSemaphore = record
-            as_Semaphore : tSignalSemaphore;
-            as_Version : Word;         { Must be >= 45 }
-            as_Size : Cardinal;            { Size of this data structure. }
-            as_SortBy : Byte;          { File requester defaults; name, date or size }
-            as_SortDrawers : Byte;     { File requester defaults; first, mix or last }
-            as_SortOrder : Byte;       { File requester defaults; ascending or descending }
-            as_SizePosition : Byte;    { See below }
-            as_RelativeLeft : WORD;     { Window position offset }
-            as_RelativeTop : WORD;
-            as_RelativeWidth : Byte;   { Window size factor; this is
-                                         * a percentage of the parent
-                                         * window/screen width.
-                                        }
-            as_RelativeHeight : Byte;
-         end;
+  ASL_SEMAPHORE_NAME: PChar = 'asl.library';
 
-const
-{ Default position of the ASL window. }
-  ASLPOS_DefaultPosition   = 0;   { Position is calculated according to the builtin rules. }
-  ASLPOS_CenterWindow      = 1;   { Centred within the bounds of the parent window. }
-  ASLPOS_CenterScreen      = 2;   { Centred within the bounds of the parent screen. }
-  ASLPOS_WindowPosition    = 3;   { Relative to the top left corner of the parent window,
-                                    * using the offset values provided in the
-                                    * as_RelativeLeft/as_RelativeTop members.
-                                  }
-  ASLPOS_ScreenPosition    = 4;   { Relative to the top left corner of the parent screen,
-                                    * using the offset values provided in the
-                                    * as_RelativeLeft/as_RelativeTop members.
-                                  }
-  ASLPOS_CenterMouse       = 5;   { Directly below the mouse pointer. }
-  ASLPOS_MASK              = $0F;
-
-{ Default size of the ASL window. }
-  ASLSIZE_DefaultSize   = (0 shl 4);   { Size is calculated according to the builtin rules. }
-  ASLSIZE_RelativeSize  = (1 shl 4);   { Size is relative to the size of the parent
-                                         * window or screen, using the values provided in
-                                         * the as_RelativeWidth/as_RelativeHeight members.
-                                         * The as_RelativeWidth/as_RelativeHeight values are
-                                         * taken as percentage, i.e. a value of "50" stands for
-                                         * 50% of the width/height of the parent window/screen.
-                                       }
-  ASLSIZE_MASK          = $30;
-
-{ Other options. }
-  ASLOPTION_ASLOverrides   = (1 shl 6);   { ASL determines placement and size of requester
-                                            * windows; application's choice is ignored.
-                                          }
+type
+  PAslSemaphore = ^TAslSemaphore;
+  TAslSemaphore = record
+    as_Semaphore: TSignalSemaphore;
+    as_Version: Word;       // Must be >= 45
+    as_Size: Cardinal;      // Size of this data structure.
+
+    as_SortBy: Byte;        // File requester defaults; name, date or size
+    as_SortDrawers: Byte;   // File requester defaults; first, mix or last
+    as_SortOrder: Byte;     // File requester defaults; ascending or descending
 
+    as_SizePosition: Byte;  // See below
+
+    as_RelativeLeft: Word;  // Window position offset
+    as_RelativeTop: Word;
+
+    as_RelativeWidth: Byte; // Window size factor; this is a percentage of the parent window/screen width.
+    as_RelativeHeight : Byte;
+  end;
+
+const
+  // Default position of the ASL window.
+  ASLPOS_DefaultPosition = 0; // Position is calculated according to the builtin rules.
+  ASLPOS_CenterWindow    = 1; // Centred within the bounds of the parent window.
+  ASLPOS_CenterScreen    = 2; // Centred within the bounds of the parent screen.
+  ASLPOS_WindowPosition  = 3; // Relative to the top left corner of the parent window, using the offset values provided in the as_RelativeLeft/as_RelativeTop members.
+  ASLPOS_ScreenPosition  = 4; // Relative to the top left corner of the parent screen, using the offset values provided in the as_RelativeLeft/as_RelativeTop members.
+  ASLPOS_CenterMouse     = 5; // Directly below the mouse pointer.
+  ASLPOS_MASK            = $0F;
+  // Default size of the ASL window.
+  ASLSIZE_DefaultSize  = 0 shl 4; // Size is calculated according to the builtin rules.
+  ASLSIZE_RelativeSize = 1 shl 4; // Size is relative to the size of the parent window or screen, using the values provided in
+                                  // the as_RelativeWidth/as_RelativeHeight members. The as_RelativeWidth/as_RelativeHeight values are
+                                  // taken as percentage, i.e. a value of "50" stands for 50% of the width/height of the parent window/screen.
+  ASLSIZE_MASK = $30;
+  // Other options.
+  ASLOPTION_ASLOverrides = 1 shl 6; // ASL determines placement and size of requester windows; application's choice is ignored.
 
 {****************************************************************************
  *
@@ -461,47 +466,51 @@ const
 {$define ASL_V38_NAMES_ONLY}
 {$ifndef ASL_V38_NAMES_ONLY}
 const
-  ASL_Dummy       = (TAG_USER + $80000);
-  ASL_Hail        = ASL_Dummy+1 ;
-  ASL_Window      = ASL_Dummy+2 ;
-  ASL_LeftEdge    = ASL_Dummy+3 ;
-  ASL_TopEdge     = ASL_Dummy+4 ;
-  ASL_Width       = ASL_Dummy+5 ;
-  ASL_Height      = ASL_Dummy+6 ;
-  ASL_HookFunc    = ASL_Dummy+7 ;
-  ASL_File        = ASL_Dummy+8 ;
-  ASL_Dir         = ASL_Dummy+9 ;
-  ASL_FontName    = ASL_Dummy+10;
-  ASL_FontHeight  = ASL_Dummy+11;
-  ASL_FontStyles  = ASL_Dummy+12;
-  ASL_FontFlags   = ASL_Dummy+13;
-  ASL_FrontPen    = ASL_Dummy+14;
-  ASL_BackPen     = ASL_Dummy+15;
-  ASL_MinHeight   = ASL_Dummy+16;
-  ASL_MaxHeight   = ASL_Dummy+17;
-  ASL_OKText      = ASL_Dummy+18;
-  ASL_CancelText  = ASL_Dummy+19;
-  ASL_FuncFlags   = ASL_Dummy+20;
-  ASL_ModeList    = ASL_Dummy+21;
-  ASL_ExtFlags1   = ASL_Dummy+22;
-  ASL_Pattern     = ASL_FontName;
-{ remember what I said up there? Do not use these anymore! }
+  ASL_Dummy      = TAG_USER + $80000;
+  ASL_Hail       = ASL_Dummy + 1;
+  ASL_Window     = ASL_Dummy + 2;
+  ASL_LeftEdge   = ASL_Dummy + 3;
+  ASL_TopEdge    = ASL_Dummy + 4;
+  ASL_Width      = ASL_Dummy + 5;
+  ASL_Height     = ASL_Dummy + 6;
+  ASL_HookFunc   = ASL_Dummy + 7;
+  ASL_File       = ASL_Dummy + 8;
+  ASL_Dir        = ASL_Dummy + 9;
+  ASL_FontName   = ASL_Dummy + 10;
+  ASL_FontHeight = ASL_Dummy + 11;
+  ASL_FontStyles = ASL_Dummy + 12;
+  ASL_FontFlags  = ASL_Dummy + 13;
+  ASL_FrontPen   = ASL_Dummy + 14;
+  ASL_BackPen    = ASL_Dummy + 15;
+  ASL_MinHeight  = ASL_Dummy + 16;
+  ASL_MaxHeight  = ASL_Dummy + 17;
+  ASL_OKText     = ASL_Dummy + 18;
+  ASL_CancelText = ASL_Dummy + 19;
+  ASL_FuncFlags  = ASL_Dummy + 20;
+  ASL_ModeList   = ASL_Dummy + 21;
+  ASL_ExtFlags1  = ASL_Dummy + 22;
+  ASL_Pattern    = ASL_FontName;
+
+  // remember what I said up there? Do not use these anymore!
   FILB_DOWILDFUNC  = 7;
   FILB_DOMSGFUNC   = 6;
   FILB_SAVE        = 5;
   FILB_NEWIDCMP    = 4;
   FILB_MULTISELECT = 3;
   FILB_PATGAD      = 0;
-  FILF_DOWILDFUNC  = 128;
-  FILF_DOMSGFUNC   = 64;
-  FILF_SAVE        = 32;
-  FILF_NEWIDCMP    = 16;
-  FILF_MULTISELECT = 8;
-  FILF_PATGAD      = 1;
-  FIL1B_NOFILES    = 0;
-  FIL1B_MATCHDIRS  = 1;
-  FIL1F_NOFILES    = 1;
-  FIL1F_MATCHDIRS  = 2;
+
+  FILF_DOWILDFUNC  = 1 shl FILB_DOWILDFUNC;
+  FILF_DOMSGFUNC   = 1 shl FILB_DOMSGFUNC;
+  FILF_SAVE        = 1 shl FILB_SAVE;
+  FILF_NEWIDCMP    = 1 shl FILB_NEWIDCMP;
+  FILF_MULTISELECT = 1 shl FILB_MULTISELECT;
+  FILF_PATGAD      = 1 shl FILB_PATGAD;
+
+  FIL1B_NOFILES   = 0;
+  FIL1B_MATCHDIRS = 1;
+  FIL1F_NOFILES   = 1 shl FIL1B_NOFILES;
+  FIL1F_MATCHDIRS = 1 shl FIL1B_MATCHDIRS;
+
   FONB_FRONTCOLOR  = 0;
   FONB_BACKCOLOR   = 1;
   FONB_STYLES      = 2;
@@ -510,83 +519,61 @@ const
   FONB_NEWIDCMP    = 5;
   FONB_DOMSGFUNC   = 6;
   FONB_DOWILDFUNC  = 7;
-  FONF_FRONTCOLOR  = 1;
-  FONF_BACKCOLOR   = 2;
-  FONF_STYLES      = 4;
-  FONF_DRAWMODE    = 8;
-  FONF_FIXEDWIDTH  = 16;
-  FONF_NEWIDCMP    = 32;
-  FONF_DOMSGFUNC   = 64;
-  FONF_DOWILDFUNC  = 128;
+
+  FONF_FRONTCOLOR  = 1 shl FONB_FRONTCOLOR;
+  FONF_BACKCOLOR   = 1 shl FONB_BACKCOLOR;
+  FONF_STYLES      = 1 shl FONB_STYLES;
+  FONF_DRAWMODE    = 1 shl FONB_DRAWMODE;
+  FONF_FIXEDWIDTH  = 1 shl FONB_FIXEDWIDTH;
+  FONF_NEWIDCMP    = 1 shl FONB_NEWIDCMP;
+  FONF_DOMSGFUNC   = 1 shl FONB_DOMSGFUNC;
+  FONF_DOWILDFUNC  = 1 shl FONB_DOWILDFUNC;
 {$endif ASL_V38_NAMES_ONLY}
 
 
 var
-  AslBase : pLibrary = nil;
-
-function AllocFileRequest : pFileRequester;
-SysCall AslBase 030;
-
-procedure FreeFileRequest(fileReq : pFileRequester location 'a0');
-SysCall AslBase 036;
-
-function RequestFile(fileReq : pFileRequester location 'a0'): LongBool;
-SysCall AslBase 042;
-
-function AllocAslRequest(reqType: Cardinal location 'd0';
-                         tagList: pTagItem location 'a0'): Pointer;
-SysCall AslBase 048;
+  AslBase: PLibrary = nil;
 
-procedure FreeAslRequest(requester: Pointer location 'a0');
-SysCall AslBase 054;
+function AllocFileRequest: PFileRequester; SysCall AslBase 030;
+procedure FreeFileRequest(FileReq: PFileRequester location 'a0'); SysCall AslBase 036;
+function RequestFile(FileReq: PFileRequester location 'a0'): LongBool; SysCall AslBase 042;
+function AllocAslRequest(ReqType: Cardinal location 'd0'; TagList: PTagItem location 'a0'): APTR; SysCall AslBase 048;
+procedure FreeAslRequest(Requester: APTR location 'a0'); SysCall AslBase 054;
+function AslRequest(Requester: APTR location 'a0'; TagList: PTagItem location 'a1'): LongBool; SysCall AslBase 060;
+procedure AbortAslRequest(Requester: APTR location 'a0'); SysCall AslBase 078;
+procedure ActivateAslRequest(Requester: APTR location 'a0'); SysCall AslBase 084;
 
-function AslRequest(requester: Pointer  location 'a0';
-                    tagList  : pTagItem location 'a1'): LongBool;
-SysCall AslBase 060;
-
-procedure AbortAslRequest(requester: Pointer location 'a0');
-SysCall AslBase 078;
-
-procedure ActivateAslRequest(requester : Pointer location 'a0');
-SysCall AslBase 084;
-
-function AllocAslRequestTags(reqType: Cardinal;
-                             tagList: array of DWord): Pointer; Inline;
-function AslRequestTags(requester: Pointer;
-                        tagList  : array of DWord): LongBool; Inline;
+function AllocAslRequestTags(ReqType: Cardinal; const TagList: array of PtrUInt): APTR; Inline;
+function AslRequestTags(Requester: APTR; const TagList: array of PtrUInt): LongBool; Inline;
 
 function InitAslLibrary : boolean;
 
-
 implementation
 
-
-function AllocAslRequestTags(reqType: Cardinal;
-                             tagList: array of DWord): Pointer; Inline;
+function AllocAslRequestTags(ReqType: Cardinal; const TagList: array of PtrUInt): APTR; Inline;
 begin
-  AllocAslRequestTags:=AllocAslRequest(reqType,@tagList);
+  AllocAslRequestTags := AllocAslRequest(ReqType, @tagList);
 end;
 
-function AslRequestTags(requester: Pointer;
-                        tagList  : array of DWord): LongBool; Inline;
+function AslRequestTags(Requester: APTR; const TagList: array of PtrUInt): LongBool; Inline;
 begin
-  AslRequestTags:=AslRequest(requester,@tagList);
+  AslRequestTags := AslRequest(Requester, @TagList);
 end;
 
 const
-    { Change VERSION and LIBVERSION to proper values }
-    VERSION : string[2] = '0';
-    LIBVERSION : longword = 0;
+  // Change VERSION and LIBVERSION to proper values
+  VERSION : string[2] = '0';
+  LIBVERSION: LongWord = 0;
 
-function InitAslLibrary : boolean;
+function InitAslLibrary: Boolean;
 begin
-  InitAslLibrary:=Assigned(AslBase);
+  InitAslLibrary := Assigned(AslBase);
 end;
 
 initialization
-  AslBase := OpenLibrary(ASLNAME,LIBVERSION);
+  AslBase := OpenLibrary(ASLNAME, LIBVERSION);
 finalization
   if Assigned(AslBase) then
     CloseLibrary(PLibrary(AslBase));
-end. (* UNIT ASL *)
+end.