26/04/2001 - mIRC v5.9

Fixes/Additions:
1.Fixed wheel mouse bug when meeces were set to scroll by page
  instead of by line.
2.Fixed line marker not being reset in some situations when mIRC
  isn't the active window.
3.Fixed line marker text indent bug in following line.
4.Log view dialog can now display large numbers of log files far
  more quickly.
5.The mIRC tray icon now displays the letter A for Active to
  indicate the active mIRC window, if you are running more than
  one mIRC at a time.
6.Fixed DCC Send/Get cps calculation display.
7.Fixed function key focus bug while in channel windows.
8.Added /echo -m switch, indicates that the line should be
  processed as a user message instead of an event.
9.Fixed line marker being lost if lines in a window exceeded max
  line buffer size.
10.Agent support no longer strips out high-ascii characters used
   in non-english languages.
11.Fixed tray icon refresh bug.
12.Fixed custom dialog display bug, controls weren't being re-
   displayed properly in some situations.
13.Added Hide channel key option to IRC dialog.
14.Fixed /play -e not working with custom windows.
15.$duration(seconds,N) now accepts its own output and changes
   it back into seconds, and if N == 2 returns format without
   seconds.
16.Fixed line marker bug, was being set inbetween lines in some
   situations.
17.Log view dialog now maintains cursor position in listbox after
   you delete or merge files.
18.Added on 1:APPACTIVE:echo $appactive event, triggers when the
   mIRC active application state changes. $appactive is $true if
   any mIRC window is active.

   Also added on 1:ACTIVE:@#?=!*:echo $active $lactive event,
   triggers when a window in mIRC is activated. $lactive returns
   the previously active window. If the previous window is no
   longer open, $lactive returns $null.

19.Added on 1:AGENT:echo $agentname finished speaking! event.
20.Added new DDE Topic, EVALUATE, makes mIRC evaluate identifiers
   or variables in a line of text.
21.Added 'auto-minimize on join' option to channels folder edit
   dialog.
22.Control section in Options dialog has been moved to the Address
   Book dialog, and has been improved.
23.Added /ignore -d switch, ignores DCCs such as Sends/Chat/etc.,
   /ignore -t ctcp no longer ignores DCCs.
24.Added auto-voice list to Control dialog.

   Changed /auto command to /aop, isauto to isaop, $auto to $aop,
   the old formats are still supported for now.

   Added /avoice command, isavoice if comparison, and $avoice.

   Added identifiers $aop(address/N), $avoice(address/N), and
   $protect(address/N), all with .type property.

25.Channels which are auto-joined on an invite are now minimized
   on join.
26.Added Options section to IRC dialog with default flash settings
   for channel/query windows, and mIRC exit confirmation options.
27.Extended /flash to /flash [-wbrN] [window] <text> which allows
   you to flash the desktop icon of any open mIRC window including
   custom windows.
28.Can now specify a titlebar icon for a custom dialog using
   icon filename, index
29.Scrollbars can now handle up to 64000 lines in a window.
30.Fixed $timer().secs bug.
31.Changed max cps method in fileserver, now represents total max
   cps for all dcc sends combined. This also limits dcc sends
   initiated with /dcc send -l. If you use /dcc send -l0 this
   prevents a script-initiated dcc send from being limited.
32./ignore /aop /avoice /protect now allow you to properly remove
   #channels one by one with -r.
33.Added agent dialog speech option to avoid repeating channel
   name in channel messages/actions.
34.Can now use SendMessage() to communicate with 32bit mIRC:

   SendMessage(mHwnd, WM_MCOMMAND, cMethod, 0L)

   mHwnd         mIRC window, or Channel/Query/etc. window
   WM_MCOMMAND   WM_USER + 200
   cMethod       1 - As if typed in editbox
                 2 - As if typed in editbox, send as plain text
                 4 - Use flood protection if turned on
                     Can be or'd with 1 or 2
   Returns       0 if fails, 1 if successful

   SendMessage(mHwnd, WM_MEVALUATE, 0, 0L)

   mHwnd         mIRC window, or Channel/Query/etc. window
   WM_MEVALUATE  WM_USER + 201
   Returns       0 if fails, 1 if successful

   The application that sends these messages should create a
   mapped file named "mIRC" with CreateFileMapping(). When mIRC
   receives the above messages, it will open this file and use
   the data it contains to perform the command or evaluation.

   In the case of an evaluation, mIRC will output the results
   to the mapped file.

   The mapped file must be at least 1024 bytes in length.

35.Added Position Default Save/Forget menu items to system menu
   for Channel and Query/Chat windows.
36.Auto-tile/cascade no longer trigger if a window is opened in
   a minimized state.
37.mIRC now supports the numeric 005 tokens: CHANTYPES=# and
   PREFIX=(ohv)@%+ and can handle a dynamic set of channel and
   nick prefixes.

   mIRC assumes that @ is supported on all networks, any mode
   left of @ is assumed to have at least equal power to @, and
   any mode right of @ has less power.

   mIRC has internal support for @%+ modes.

   $nick() can now handle all mode letters listed in PREFIX.

   Also added support for CHANMODES=A,B,C,D token (not currently
   supported by any servers), which lists all modes supported
   by a channel, where:

     A = modes that take a parameter, and add or remove nicks
         or addresses to a list, such as +bIe for the ban,
         invite, and exception lists.

     B = modes that change channel settings, but which take
         a parameter when they are set and unset, such as
         +k key, and -k key.

     C = modes that change channel settings, but which take
         a parameter only when they are set, such as +l N,
         and -l.

     D = modes that change channel settings, such as +imnpst
         and take no parameters.

   All unknown/unlisted modes are treated as type D.

   When not connected to a server, mIRC uses default values
   of CHANTYPES=#& PREFIX=(ohv)@%+ CHANMODES=bIe,k,l

   Also added identifiers $chantypes $prefix $chanmodes.

   Notes:

   1. mIRC doesn't support @ or $ as a channel prefix, or $ as
      a nickname prefix, these are used internally by mIRC.

   2. Ircd coders should be aware that prefixes can change
      the way an IRC client behaves.

      eg. If a server uses the same prefixes for channels and
      nicknames, this could cause certain features in mIRC
      to behave oddly, eg. scripts, hotlinks, tab completion,
      etc. which, depending on the prefix, provide a different
      behaviour or interface in non-context situations.

38.Added support for the numeric 005 token: MODES=N where N is
   the number of items allowed per /mode change. Added $modespl
   identifier.
39.Fixed server port not being randomly selected on each new
   connection.
40.Fixed treelist in options dialog not scrolling to selected
   item in some situations when options dialog is opened.
41.Fixed local info server lookup bug, was failing if the irc
   server returned an ip address in a /userhost reply.
42.Added $var(%var,N) returns Nth matching variable name. You can
   use a wildcard for the variable name. If N is zero, returns
   total number of matching variable names. This searches both
   local and global variables. $var().value returns the value of
   the variable, $var().local returns $true/$false.
43.Added $rgb() 3dlight value.
44.Added support for numeric 005 WALLCHOPS token, mIRC will use
   /NOTICE @<channel> :<text> if this token is set, instead of
   using multiple targets.
45.DCC Get no longer offers resume option if incoming filesize
   is smaller than existing file.
46.$window().state and .icon return values for -2 now.
47.Fixed handling of /msg +#channel messages.
48.Changed behaviour of Notify dialog, no longer changes Add
   button to Update. When you edit an item it is automatically
   updated.
49.Fixed bug in DNS routine, might have caused a gpf in some
   cases where the address didn't resolve.
50.Added 'Show All' menu item to notify window popup menu.
51.Added 'Grayed text' item to Colours dialog, used to gray nicks
   in notify list.
52.The protect list in control dialog can now protect a full
   nick!user@host address by using the IAL. The address can use
   wildcards.
53.Added 'Position' menu to System menu of all windows.
54.Can now set a @window icon with /window @ iconfile [N].
55.Script editor editbox can now handle 64k of text in 32bit mIRC.
56.Added $uptime(mirc | server | system, N) returns uptime in
   milli-seconds for specified item. N is optional, if N = 1 it
   returns the same format as $duration(), if N = 2 returns same
   format but without seconds, and N = 3 returns seconds instead
   of milli-seconds.
57.Added $regex([name], text, re) to parse regular expressions.
   Returns N number of strings matched.

   The list of strings for a match are referenced through
   $regbr([name], N), N = 0 returns total number of strings.

   $regbr([name], N).pos returns a strings position in text.

   $regbr() remembers the results for up to 10 names. Each time
   you do a match with $regex(), and you specify a name, that
   name's previous results are overwritten with the new results.

   $regsub([name], text, re, subtext, %var) same as $regex() but
   performs a substitution, returns N number of substitutions
   performed, and assigns result to variable %var.

   If you don't specify a name, all identifiers use a default
   name which is overwritten with each call.

   Note: mIRC uses the PCRE library (www.pcre.org)

58.Fixed bug in $ctime() wasn't handling certain date formats.
59.Added support for ! not prefix in if statements for use with
   $identifiers and %variables, eg. if (!%moo) echo no cows
60.Added nick colors section to address book, allows you to assign
   colors to a nick/address which is used to color the nick in
   messages and in the channel nick list.

   The /cnick command allows you to add or remove items from
   the colour list:

     /cnick -raniovp [nick[!user@host]] [color] [modes] [levels]

   You can use /cnick -r nick/N to remove first item that matches
   nick in the nick color list or the Nth item in the nick color
   list.

   To add or refer to an item as Any nick you can use the * char
   as the nick, * char as the mode for any mode.

   Also added $cnick(N/nick, [M]), if N returns Nth item in list,
   with properties: color, modes, levels, anymode, nomode

   If you specify a nick, returns Nth position of item in list that
   matches nick. If nick doesn't match any items, returns zero.

   To get a nick's color, you can use $cnick(nick/N).color. If nick
   doesn't match any items in the list, returns 'Normal Text' color,
   or if M = 1, returns 'Listbox text" colour.

   You can specify %vars or $identifiers as the nick.

   Note: /cline over-rides color settings in the nick color list.
   You can use /cline -r to reset a nick to default color to make
   the nick color list apply to a nick.

61.Fixed bug in Tray popup menu handling.
62.Fixed DCC Send cps limit not working in DCC Server Fileserver.
63.Added /window -C switch, centers @window on creation.
64.Replaced old $dde $read and $readini identifiers with:

   $dde(topic, name, item, [N])
   $read(filename, [ntsw], [matchtext], [N])
   $readini(filename, [n], section, item)

   The old identifiers are still supported for now but no longer
   documented.

65.Added built-in ctcp flood protection for ctcp version, ping,
   finger, and time:

     5 second ignore all users for that type of ctcp
     10 second ignore that user for that type of ctcp

66.Added transparency support for desktop windows under win2k,
   options/display dialog.
67.Can now use $line() $fline() (with T = 1) and $sline() to read
   the channel nicklist.
68.Added /run -p switch, sets working path to path of the application
   being run.
69.Added support for http proxy 'basic' authorization which uses
   base64 userid/password encoding.
70.$os should now recognize XP.
71.Popup menus should now set $1 to nick for query/chat windows.
72.Fixed !nick sound requests getting through /ignore -p.
73.Fixed text wrapping bug in highlight feature when using custom
   identifiers as highlight items.
74.Tab key completion now works on items separated by commas.
75./hadd -s and /hdel -s now show item name. Also added /hadd -m
   switch, which creates the hash table if it doesn't exist.
76.IAL is now permanently switched on.
77.Moved "Highlight nicks in messages" option to new nick color
   list dialog.
78.Added "Keep channels open" option to IRC/Options dialog, keeps
   channel windows open after you're kicked. $chan().status now
   returns "kicked" in this situation.
79.Added $hregex(name/N, retext, N), searches table for the Nth
   item which matches regular expression. Returns item name. You
   can use .data property if you want to match on the data of an
   item.
80.Can now /halt numeric 433 on connect to prevent mIRC entering
   /nick in editbox if nick and altnick are in use.
81.Redesigned dcc send/get windows interface, added 'open' and
   'open folder' buttons to dcc get dialog, and 'resend' button
   to dcc send dialog.

   Added $send() and $get .done property, returns $true if the
   transfer was succesful, $false otherwise.

82.Added scrollbar control support to custom dialogs:

   scroll "text", id, x y w h, style (top left bottom right
   horizontal range N)

   on 1:dialog:name:scroll:id:etc.

   The /did -c switch can be used to set the scroll position,
   you can use $did().sel to find current position.

83.Added /ialmark <nick> [text] command, marks IAL entry for nick
   with the specified text. You can use $ial().mark to retrieve
   the mark.

   Changed /clearial to /ialclear, the old command is still
   supported but no longer documented.

   Can now use /ialclear [nick] to clear the entry for a specific
   nickname. /ialclear without a nickname clears the whole IAL.

84.Fixed $iif() gpf bug.
85.Added /savebuf -o [dialog id] which saves text in a custom
   dialog control to a file.
86.Fixed /hload -b bug when loading items with empty data.
87.Added switchbar multi-line and width option to display dialog.
88.Fixed right-click popup menu bug during mark/copy text.
89.Fixed dialog -s dbu resizing bug.
90.Fixed /window -b not working corrctly with tabstops in custom
   window listboxes.
91.Fixed hotlink right-click popup menu not working on nicknames
   in some situations.
92.Can now check/gray menu items in popup menus by using $style(N)
   as the first word in the menu definition, where N can be 1 for
   checked, 2 for grayed, or 3 for both.

   $iif($server == $null,$style(3)) Server:
   .Motd:/motd
   .Time:/time

93.Added $input(prompt,N,title,text) identifier, prompts the user
   for input.

   prompt is the prompt text message.

   N can be a combination of values added together:

     1  - show input editbox
     2  - show input password editbox
     4  - ok button
     8  - yesno buttons
     16 - yesnocancel buttons
     32 - return $ok, $yes, $no, $cancel for buttons.

     By default, buttons return $true or $null, same as $?,
     If there is an input editbox, the ok/yes buttons always
     return the contents of the editbox.

     64, 128, 256, and 512 show the info, question, warning,
     and hand icons respectively.

   title is the titlebar text.

   text is the default text placed in the input editbox.

   N and text are optional parameters.

   Note: $input() replaces $?. $? is still supported but no
   longer documented.

94.Fixed fileserver file-sorting bug.
95.Added $eval(text,N) identifier, repeatedly evaluates text N
   times. If N isn't specified, the default is N = 1. If N is zero,
   text is not evaluated.
96.Added /drawreplace -nr @ <color1> <color2> [x y w h], replaces
   color1 with color2 in the specified picture window.
97.Added /splay -cwmp switch, clears splay queue without stopping
   currently playing sound.
98.Can now use /channel [#channel] to open channel central for a
   specific channel, if the channel window is currently open.
99.mIRC now allows you to call COM objects via scripts. You must
   have experience with COM objects in order to use this feature.

   /comopen name progid

   This opens a COM connection to object progid eg. Excel.Application,
   and assigns the connection a name.

   /comclose name

   This closes the specified COM connection.

   /comreg -u filename

   This registers/unregisters a COM DLL with windows.

   $comerr

   This should be checked after a call to any COM command or
   identifier. Returns 1 if there was an error, 0 otherwise.

   $com(name,member,method,type1,value1,...,typeN,valueN)

   This calls a member of an open COM connection with the specified
   method and parameters.

     name   - connection name.

     member - member name.

     method - Combination of the following values added together:
              1 = DISPATCH_METHOD
              2 = DISPATCH_PROPERTYGET
              4 = DISPATCH_PROPERTYPUT
              8 = DISPATCH_PROPERTYPUTREF

     type   - the variable type, can be: i1, i2, i4, ui1, ui2, ui4,
              int, uint, r4, r8, cy, date, decimal, bool, bstr,
              variant, error.

              VB equivalents are: boolean, byte, currency, date,
              double, integer, long, single, string, variant.

              To make a variable by reference, use * in the type
              name, eg. i1*

              To assign a name to a variable for later reference
              after a call, append it to the type, eg. i1* varname

              When using a variant you must also specify the variable
              type after it, eg. variant bool.

     value  - the value assigned to the variable type.

     Returns: 1 = ok, 0 = fail.

   After you've opened a COM conection or made a call to $com() you
   can use the following forms of $com():

   $com(name/N)

     Returns: name if connection is open, or name of Nth connection.
              N = 0 returns number of open connections.

     Properties: progid, result, error, errortext, argerr

       progid - object name.

       result - the value returned by the COM object member after
                the call.

       error  - error value, if there was an error.

       errortext - error description associated with error.

       argerr - Nth argument that caused the error, if the error
                was due to an invalid variable type.

   $com(name/N,varname)

     Returns: value of the specified variable name

100.The on EXIT event now triggers after the on DISCONNECT event
    if you exit mIRC while connected.
101.Fixed windows not being positioned correctly when mIRC starts
    up minimized.
102.Fixed /did -i bug.
103.Fixed $$ prefix not working for custom identifiers.
104.Identifiers now evaluate their contents without needing []
    brackets around each item in a parameter.
105.Can now detect mouse events in a custom dialog using on
    dialog event with an id of zero, and events mouse, sclick,
    uclick, dclick, drop, eg.

    on 1:dialog:*:mouse:0: echo 5 $dname $devent $did $mouse.x
    $mouse.y $mouse.win

106.Added $fullname and $emailaddr identifiers, to go with the
    /fullname and /emailaddr commands. The previous identifiers
    and commands for these are still supported.
107.Changed the way /run works, should now work the same way as
    the Run dialog via the windows Start menu.
108./window now handles quotes around the font name, and accepts
    @ or "" as an empty popup name.
109.Fixed link control in custom dialogs not being sized properly
    when using DBUs.
110.Tab nick completion now accepts *? wildcards.
111.The 'Beep on:' sounds in the Sounds dialog are now disabled
    if the "Enable Sounds" switch is unchecked.
112.Changed ishelp to ishop, and helper to halfop in help file.
113.Can now use /window -ngN switch when a @window is created
    in a minimized state.
114.Right-click popup menu in Message Window will now work even
    if no nick is active.

14/12/2000 - mIRC v5.82

Fixes/Additions:
1.Fixed dcc folder ignore bug.
2.Fixed bug in /mode reply display for channel creation time.
3.Fixed tab completion not working with channel names in channels
  folder dialog.
4.Added /dcc ignore [on|off|only|except] command.
5.Fixed channel nicklist being affected by line-spacing settings.
6.Fixed dcc chat/fserve desktop/mdi setting not being saved.
7.When using function keys in a channel, the $1- identifier now
  always contains any nicks selected in the listbox.
8.Improved handling of irc: URI and .chat files.
9.Fixed flood protection bug.
10.The 32bit mIRC will no longer work under win3.11/32s.
11.Fixed Sjis/Jis conversion not working in dcc chats.
12.Fixed invalid cps display in dcc send/get when resuming a file.
13.Fixed custom dialog bug when using a background bmp, checkboxes
   weren't being displayed properly.
14.Change limit cps method in fserve dialog, should now be more
   precise, and should send packets more smoothly.
15.Added Control+L key combination, scrolls to the last line you
   read when the status/channel/chat window was last open/active.

   Added Line Marker dialog to Display/Options dialog.

   You can also use a picture for the line, rgb 255,0,255 is the
   transparency colour, same as for switchbar/toolbar pictures.

   Custom windows can use line marker feature if they are created
   with /window -m switch.

16.Fixed channel central bug, was trying to set topic even if you
   didn't have ops.
17.Fixed gpf bug in $mode() when used outside of a remote event.
18.Added $ctimer identifier, returns name of timer that triggered
   the current script.
19.Fixed bug which was prevented opening more than one $dialog()
   at a time.
20.$lf and $cr chars are now stripped from lines written to ini
   files.
21.Changed $bvar(&binvar,N-N2) to $bvar(&binvar,N,M), where M is
   number of bytes, simplifies use. Old format still supported.
22.Fixed $iif() bug.
23.Channel windows can now be closed during a disconnect even if
   rejoin on connect is turned on.
24.Added $play(N)/$play(Nick,N) identifer, with properties: type,
   fname, topic, pos, lines, delay, status. Returns info on /play
   queue.
25.Added "Event" colour to Options/Display dialog. This colour is
   now used for all non-message events. The "Message" colour is
   used for actual messages, and the "Highlight" colour is used for
   highlighted messages.
26.Added Names button to Channels Folder.
27.Fixed bug with empty text "" in menu items in custom dialog.
28.Added $disk(drive).unc returns UNC path for network drive.
29.$mp3() now caches the info for the last referenced mp3 file.
30.Can now use styles (top left right bottom) with custom dialog
   icon definitions to align picture. Default is center.
31.Added built-in mousewheel support for microsoft meeces.
32.Fixed topic setting in events display dialog not being used.
33.Fixed $round() bug, was rounding negative numbers incorrectly.
34./ban now expands ban address if you didn't specify a full
   nick!user@host address format.
35.Fixed channel folder group entries not auto-joining.
36.Can now /join group to join a group defined in the channels
   folder.
37.Fixed bug in $ulevel.
38.When using mode prefixes with tab key nick completion on a
   channel, only users with the specified mode are shown.
39.Added $findfile().shortfn property.
40.Fixed bug in $inrect().
41.Fixed /set bug when first character of variable is a wildcard.
42.Custom dialog icon definitions now default to the path of the
   script if icon isn't found in mIRC root folder.
43.Fixed $dialog().hwnd bug.
44.Fixed $readini bug.

09/11/2000 - mIRC v5.81

Fixes/Additions:
1.Fixed $did().seltext not working in some cases.
2.Can now enter control chars in channel central topic editbox.
3./splay will now accept LFNs even if they're not enclosed in quotes,
  error messages are now also wrapped.
4.Moved "internal sound" to sounds dialog, the internal sound is now
  only played for event beeps. mIRC uses the default windows sound
  for errors etc.
5.Fixed custom dialog icons not being displayed inside box controls.
6.Fixed bug in highlight feature when using identifiers as highlight
  items.
7.$inmp3.fname now returns case of original filename.
8.Fixed $send()/get() .cps if transfer took < 1 second.
9.Fixed Alt+S not working in DCC Send dialog.
10.Added /play -fN switch, plays file from line N onwards.
11./run will now keep the quotes in any parameters that you specify.
12.Added $sdir(dir,title) and $sfile(dir,title,oktext), title and
   oktext are optional.

   The $sdir, $file, $hfile, and $dir identifiers are still supported
   but are no longer documented in the help file.

13.If you select a topic from the topic history in channel central,
   it will now be set as the new topic when you press OK.
14.Fixed url double-click bug under WinME (?)
15.Fixed hour-glass bug in Editor dialog when using Ctrl+S.
16.When using a popup menu in a channel, the $1- identifier will now
   always be set to the selected nicks in the nicklist.
17.Fixed "!nick sound" sound request not working for mp3s.
18.Fixed agent bug, wasn't allowing you to turn agent on/off on a per
   channel/query window basis.
19.Fixed custom dialog tab control display bug.
20.Fixed bug in on WAVEEND/MIDIEND/MP3END if /splay was used within
   the event to restart playing.
21./splay can now handle longer filenames.
22.Fixed /splay seek not triggering on MP3END.
23./did -eb now works on icons in custom dialogs.
24.$window().state now returns "hidden" if a window is minimized and
   its icon is not visible.
25.$mp3().length now works with VBR mp3s, $mp3().variable and
   $mp3().crc also fixed.
27.Channel central no longer stores duplicate topics.
28.Fixed ctrl+copy not working in @windows.
29.Fixed internal ban list not seeing bans set by servers.
30.Fixed $ibl().by for undernet which doesn't provide an address for
   the user setting the ban.
31.Added built-in uninstaller to 32bit mIRC under 95/98/etc., adds
   item to Add/Remove in control panel, uninstalls the last mIRC that
   was run, will tell you which mIRC is being removed. Also removes
   all registry changes.
32.Fixed bugs in multimonitor support.
33.You can press the ! button in the sounds dialog a second time to
   stop a sound playing.
34.Added "pc speaker" option to sounds dialog.
35.Editbox in channel/query windows no longer limits the amount of
   text you can paste into it. It will still beep if you enter lines
   longer than 450 characters though.
36.Fixed bug in /colour not updating background picture colours.
37.Fixed $mid() bug when handling a negative index.
38./colour -r <N> now resets colour box N to default rgb value, and
   $colour(N) now returns rgb value for the Nth box.
39.Fixed flood protection feature in options/irc dialog.
40./splay seek no longer resumes an mp3 if it has been paused.
41.Added $hget().data property, works same as .item.
42.Added $hfind(name/N, text, N), searches table for the Nth item
   which matches text. Returns item name.

   $hmatch(name/N, wildtext, N) allows you to match wildcard text,
   also works if the item or data itself is wildcard text.

   Specify .data property if you want to match on the data of an
   item. Also returns item name.

43.Editor dialog now displays size of text in k's instead of bytes.
44./play now buffers a text file before playing it. /play messages
   are now also subject to flood protection (if enabled in options
   dialog).
45.Changed $round() rounding method.
46.Added /dcc ignore on/off command.
47.The . command prefix now overrides -s for hash commands.
48.Improved tab key nick completion method. Also can now complete
   nicks beginning with a prefix, eg. +nick
49./queryrn now allows _ in the new nickname.
50.Fixed $file() bug.
51.Fixed nicklist being double-spaced when you changing the line-
   spacing for a channel.
52./echo -d now opens the message window if it's not already open.
53./background now works even if window isn't currently open, also
   allows you to set defaults.
54.Fixed Control+F find bug.
55.Fixed /vol command not working in 16bit.
56.Added "All" menu items to Position menu item in system menu.
57.Fixed Control+Shift+Insert not working when pasting /commands as
   plain text into a single-line editbox.
58.Fixed channels list window popup menu gpf bug.
59./ignore /auto /protect now display info in active window.
60.Can now call file dialog identifiers from a custom dialog event.
61./titlebar no longer changes case of @window name.
62.Editor dialog now indents lines following a $&.
63.Fixed /renwin allowing @window names > 90 characters.
64.Fixed auto-tile/cascade not working when selecting a window from
   the window menu.
65.Added /drawrot -hnbfc @ [colour] <angle> [x y w h], rotates area
   of bitmap by specified angle.

   -b indicates you've specified a background colour value.
   -f fits the newly rotated bitmap into the original width/height.
   -c centers the rotated image if -f isn't specified.

66.Removed support for "Start in" folder in shortcut icons, was
   causing too many problems.
67./firewall -c now clears userid/password.
68.Top level submenus in popup menus are now merged if they have
   the same name.
69.You no longer need to use [ ] inside $iif() to evaluate items.

   $iif() now only evaluates the 2nd and 3rd parameters after the
   if comparison itself has been evaluated.

70.mIRC now recognizes "IRCX" token in numeric 005 for ircds that
   support IRCX extensions.
71.Fixed $hotline not returning proper results with indented lines.
72.Improved log view dialog.
73.Fixed editor dialog tabs display bug when on desktop.
74.Added /play and /playctrl dialogs to control the /play queue.
75./window can now resize a minimized @window.
76.Changes to /hop, now clears the topic before a rejoin, also no
   longer parts a channel if you /hop to it while it's already open.
   Added /hop -c #channel switch, cycles any open channel, you can
   use -n to minimize the channel.
77.Fixed $readn bug.
78.$ini() no longer halts a script with an error if the ini file
   doesn't exist.
79./sockwrite and /sockudp no longer halt a script if they fail, they
   now set $sock().wserr to the error value, and also trigger the
   on sockwrite event with an error.
80.Fixed $sock().wsmg bug.
81.Fixed custom dialog "icon" property not accepting quoted LFNs.
82.The /draw -p and -r switches will now work together properly.
83.$readn is now set to zero if a $read -w search fails.
84./anick no longer changes your nick, unless altnick is the active
   nick. /nick will try to prevent nick and altnick from becoming
   identical nicks.
85.Integrated .chat file support into the exe.
86.The script parser no longer replaces ]] with ] if ]] has other text
   appended to it, eg. ]]sometext
87.Added SJIS/JIS option to IRC/Messages dialog for 32bit mIRC. When
   this option is turned on, the display and mark/copy of multi-byte
   characters should also work better.
88.Changed cps calculation method for dcc sends/gets.
89.Added /dcc get <dir> to redirect an incoming dcc send to dir (must
   be subdir of the main mIRC dir), and /dcc reject to reject the dcc
   send. These must be called from within the CTCP dcc send event or
   the on DCCSERVER send event. $filename returns name of file.
90.Added on EXIT event, ie. on 1:EXIT:/echo exiting mIRC
91.Extended ignore method in dcc options/folders dialog.
92.A notice will now add a user to your IAL if the user is on the same
   channel as you.
93.Fixed $nick().colour, was returning incorrect values.
94./hadd now allows you to add items without a data value.
95.Fixed on dialog event being triggered incorrectly for some controls
   when dialog is first created.
96.Fixed /unset bug when first character of variable is a wildcard,
   eg. /unset %*
97.Fixed while loop bug.
98.Added "match on" option to Highlight section edit dialog.
99.Added support for URL links in web pages, using the format
   <a href="irc://address:port/channel?key"></a> for example,
   <a href="irc://irc.undernet.org:6667/mIRC">#mIRC</a>

   Note: currently this format only seems to work with IE.

100.Can now set localinfo manually with /localinfo <host> <ip>.
101.Fixed $portfree() bug.
102.Improved channels folder dialog. Can now specify password,
    network and auto-join for each channel.

    If you try to join a channel, either via the toolbar channels
    folder popup menu, or in the channels folder, and you're not
    connected, mIRC will auto-connect to the server.

    You can now enter more than one channel per entry, where the
    first word is the group title, in the form:

      grouptitle #chan1 #chan2 etc.

103.Added "show topic" item to popup menu when right-clicking on
    a #channel name.
104.Added support for http proxy connections in firewall dialog.

05/09/2000 - mIRC v5.8

Fixes/Additions:
1.Fixed agent bug, was speaking channel actions even if only private
  actions were enabled.
2.Fixed bug in /filter, /loadbuf for handling custom dialog controls.
3.Fixed $nick().colour not working if a nickname is specified instead
  of the Nth item.
4.mIRC now uses it's own internal beep.wav sound for event beeps, added
  as option to general dialog.
5.Fixed bug in dual monitor display support.
6.Fixed /did bug when changing text in the Tabs of a tabs dialog.
7.Can now use negative numbers in $mid, eg.$mid(text,-N,-N).
8.Fixed /firewall -mN bug.
9.Fixed /font not working with dcc chat =nicknames.
10.Fixed bug in $bytes().
11.Fixed /play -b switch only sending at 1000ms.
12.Can now use a part message with the /hop command.
13.Can now preview wav/mid files in file dialogs by holding the ALT
   key and double-clicking a filename.
14.Fixed bug in the 8.3 format of log filenames.
15.Fixed bug with $disk() and ntfs drives.
16.Changed "!nick sound" feature to ignore any text specified after
   the sound filename.
17.The local port used by the server connection is now limited to
   the range specified in the DCC Options dialog.
18.Custom dialogs now display any size .ico files properly.
19.Fixed $did().state and .enabled not working with menu items.
20.Added /dcc send -c switch, closes send window on completion.
21.Fixed DCC Options Max Gets bug in DCC Server.
22.Added "show on desktop" item to Editor "options" menu.
23.The old default /hop alias is now ignored.
24.The channel nick list now retains nick colours across /names
   listings.
25.Only ban types 3 4 8 and 9 now have the encrypted = part of an
   address replaced with a wildcard.
26.Can now use /cline -r to reset nickname in channel listbox to
   default colour.
27.Fixed Control+F not scrolling to correct line in a window in
   some cases where lines are wrapped.
28.$binvar(&var,0) now returns 0 if &var doesn't exist.
29.Notify list now shows users address.
30.Added /btrunc <filename> <bytes> command, truncates/extends a
   file to specified length.
31.Changing the contents of a link item in a custom dialog now
   works if the link isn't currently displayed.
32.$banlist().by now returns the full address of the person setting
   the ban.
33.Fixed bug with icons in custom dialogs, they were clickable even
   if they were not visible.
34.Fixed ESCape key not working with "hide when minimized" option.
35.$pic() now also supports JPG and PNG.
36.Extended /colour <name> <index>, can now also use /colour <index>
   <rgb> to change the rgb value of a colour.
37.Can now specify "noborder" in an "icon" definition in custom
   dialogs to prevent a border from being drawn around a picture.
38.BURK codes are now stripped out of logfile names.
39.Fixed bug in highlight feature, was matching against nicknames
   incorrectly in some cases.
40.Fixed bug in /filter -n switch.
41.Can now use /font -d switch to set font as default for window.
42.The flash message in the highlight feature can now contain
   %vars and $ids which will be evaluated.
43.Fixed highlight bug in "link" custom dialog control.
44.Colours in the channel nicklist are now reset to default if
   you rejoin the channel after a kick/disconnect.
45.Added $banlist().ctime, returns $ctime time format for ban date.
46.Added isban comparison, uses $banlist() to check if an address
   is banned, eg. if (*!*@*.net isban #channel) ...
47./window -h can now hide non-custom windows again.
48.Fixed while loops bug, weren't working properly in custom menus.
49.Added $scriptline, returns current script line number.
50.Fixed bug with Order dialog in Editor when ordering scripts.
51.Improved support for DLLs via /dll and $dll().

   You can now keep a DLL loaded by including a LoadDll() routine
   in your DLL, which mIRC calls the first time you load the DLL:

     void __declspec(dllexport) __stdcall (*LoadDll)(LOADINFO*);

     typedef struct {
       DWORD  mVersion;
       HWND   mHwnd;
       BOOL   mKeep;
     } LOADINFO;

     mVersion contains the mIRC version number in the low and high
     words.

     mHwnd contains the window handle to the main mIRC window.

     mKeep is set to TRUE by default, indicating that mIRC will keep
     the DLL loaded after the call. You can set mKeep to FALSE to
     make mIRC unload the DLL after the call (which is how previous
     mIRCs worked).

   You can unload a loaded DLL by using:

     /dll -u <filename>

     $dll(N/filename) returns the list of loaded DLLs.

   You can also define an UnloadDll() routine in your DLL which
   mIRC will call when unloading the DLL to allow it to clean up.

   mIRC will automatically unload a DLL if it is not used for ten
   minutes, or when mIRC exits, UnloadDll() will also be called
   in these situations:

     int __declspec(dllexport) __stdcall (*UnloadDll)(int mTimeout);

     The mTimeout value can be:

     0   UnloadDll() is being called due to a DLL being unloaded
         when mIRC exits, or unloaded with /dll -u.

     1   UnloadDll() is being called due to a DLL not being used for
         ten minutes. The UnloadDll() routine can return 0 to keep
         the DLL loaded, or 1 to allow it to be unloaded.

52.mIRC will now properly parse server messages that aren't prefixed
   with a server address, and will use the server address prefix in
   numeric 001 for such non-prefixed messages.
53.Fixed bug in flood protection feature.
54.Nick changes now update nick in query window titlebars.
55.Added $server().pass property for server password.
56.Added /echo -n switch, prevents /echo from hiliting switchbar
   icon.
57.Fixed handling of throttle error message on undernet servers.
58.Added Advanced dialog to connect/options dialog, allows turning
   on/off of random local ports, and specifying bind address.
59.Find dialog now allows you to search for BURK codes.
60.On keydown/keyup now capture all key events in custom windows.
61.Cancel away on keypress option now works for /me messages.
62.Fixed bug in $did().seltext, it now also returns $crlf between
   each line.
63.Added /filter -b key, strips BURK codes when matching text.
64.Added $onpoly(n1,n2,x,y,x,y,...), checks if two polygons are
   overlapped, returns $true/$false. n1 is the number of points for
   the first polygon, n2 is for the second polygon.
65.Added $bvar(&var,N).word,nword,long,nlong, returns values in host
   and network byte order.
66.Fixed bug in $isalias() not recognizing local -l aliases when
   called from the local script.
67./splay now supports .mp3 files, also added on MP3END event,
   $inmp3, and $mp3dir (folder can be specified in Sound requests
   dialog).

   Added $mp3(filename) identifier, with properties: album, title,
   artist, year, comment, genre, track, length, version, bitrate,
   variable, sample, mode, copyright, private, crc.

   The /splay command has also been extended to:

   /splay -wmpq [filename | stop | pause | resume | seek | skip] [pos]

   Where w = wave, m = midi, p = mp3, and q = queue for playing.

   If you specify [pos] value when playing an mp3, mIRC will play
   from that position, eg. /splay ipanema.mp3 1000

   You can seek to a position in an mp3 while it's being played with
   eg. /splay seek 1000

   You can skip the currently playing sound with /splay [-wmp] skip

   Extended $inwave, $inmidi, and $inmp3, with properties .fname,
   .pos, .length, eg. $inmp3.pos

   You can use the /vol -wmpvuN [volume] command to set the volume on
   your system for waves, midis, mp3s (same as waves), or -v which
   sets the master volume, range 0 to 65000. The -uN switch sets the
   mute, where N = 1 is on, N = 2 is off.

   You can use $vol(wave|midi|mp3|master) to get the current volume,
   and $vol().mute returns the mute setting.

68.Changed behaviour of on HOTLINK event, /halt in one script will
   no longer affect the event in a following script.
69.$os should now recognize ME.
70.Added test button to agent lexicon dialog.
71.Can now use N = 0 in $did(name,id,N) to access the edit control
   in a combobox, and N = 0 in /did to modify it.
72.Fixed /did -g not handling quote-enclosed filenames.
73.Fixed /play -b requiring delay value, now uses default if none
   specified.
74.The B and C parameters in $width(text,font,size,B,C) are now
   optional.
75.Added $wrap(text, font, size, width, [word,] N), returns Nth line
   wrapped to width. If optional word parameter is 1, text is wrapped
   at whole words (default).
76.Improved handling of \\network paths. mIRC can now also be run
   from a network path and will correctly use that path as root for
   ini files, folders, etc.
77.Channel central now enables Op settings for IRCops.
78.Identifiers called in popup menu titles can now use $1- to refer
   to the selected listbox item.
79.Added /play -n switch, sends a notice instead of a message.
80.Fixed /close bug, wasn't closing multiple sends/etc. properly.
81.Added /drawpic -l switch, tiles picture in specified area.
82.Added $keychar to on keyup/keydown events, returns the actual
   character being pressed as opposed to the key code.
83.Editor now defaults to last used folder when displaying the load
   file dialog.
84.The D parameter in $round(N,D) is now optional.
85.Added identifiers to encode/decode %vars or &binvars:

     $encode(%var | &binvar, mubt, N)
     $decode(%var | &binvar, mubt, N)

   The last two parameters are optional.

   The second parameter consists of switches, where m = mime,
   u = uucode (default), b = &binvar, and t = text (default).

   The final encoded line is made up of 60-character chunks.
   You can specify N if you want mIRC to return the Nth chunk.
   N = 0 returns the total number of chunks in the line.

   If encoding/decoding a &binvar, the identifiers return the
   actual number of characters written to the &binvar.

   Encoding uses 33% more storage space.

86./query now displays address in titlebar if user is in IAL. The
   Message window now also displays the address in the titlebar for
   the last received message.
87.Selecting a server in the connect dialog now makes it the default
   server even if you press the OK button in another section of the
   options dialog.
88.Fixed $mouse.x/y/dx/dy returning invalid values in some cases.
89.Can now close Editor dialog while script initialization warning
   dialog is displayed.
90.The $banlist() identifier has been changed to $ibl(). Also the
   $chan().banlist property is now $chan().ibl. The old formats are
   still supported.

   The IBL (internal banlist) is now updated every time it sees a
   ban. You can fill it completely with /mode #channel +b.

91.mIRC no longer sends a default quit message if you haven't
   specified one.
92./dcc send and /fserve now handle LFNs better.
93.Added /queryrn <nick> <newnick> changes nick of an open query.
94.Added /var -s switch to show local variable being set.
95.Added /anick command, allows you to change your alternate nick,
   even while connected. Also added $mnick and $anick, return your
   main and alternate nicknames.
96.Added right-click popup menu for url hotlinks.
97.Added $window().hwnd and $dialog().hwnd property.
98.Added $window().icon, returns "on" or "off" depending on whether
   a window icon is visible. Note that $window().state no longer
   replies with "hidden".
99.Custom windows can now be logged, "logging" item in system menu.
100.$ulist(*,N) now returns all matches in user list including just
    nickname entries.
101.$fline() now allows you to search for BURK codes.
102.Fixed resizing channel nicklist bug when channel is placed on
    the desktop.
103.Added "include network" switch in logging dialog, includes name
    of network in log filename.
104.The popup menu in the Channels List window now allows you to
    join channels/etc. while retrieving the channels list.
105./log now allows you to log a file to any directory.
106.Fixed auto-tile causing a maximized window to de-maximize when
    resizing the main mIRC window. Auto-tile should also work better
    now when a minimized window is restored.
107.Fixed lexicon not being applied to all agent messages.
108."No such nick/channel" message is now shown in query windows.
109.Background pictures in custom dialogs now behave better when
    mixed with other controls.
110.Fixed bug with $ctrlenter when text was pasted into editbox,
    also added $inpaste.
111.Fixed infinite while loop bug.
112.Fixed click events on icons in custom dialog events, is now
    more precise.
113.Development notes: mIRC 32bit in future may not work under win32s
    win3.1. This will allow me to support new technologies in the
    32bit. mIRC 16bit may continue to be developed, with bugfixes,
    where possible.
114.Fixed $findfile() bug, if full path wasn't being specified may
    not have worked.
115.Added /set -n switch, treats following values as plain text
    instead of a calculation.
116.Added $nick().pnick property, returns .@%+nick format.
117.Added $remote, returns ctcp/event/raw on/off status or'd together,
    ie. 1 | 2 | 4, eg. if ($remote & 1) ctcp is on.
118.Fixed resource leak in DCC Send/Get windows display.
119.New channel central dialog, made display of banlist info  clearer,
    and now shows related auto-unban info. Also added Edit button,
    allows editing of an address.
120.Added /timer -h switch, creates a multimedia timer. Only works in
    32bit mIRC. Also added $timer().mmt property.

    Since multimedia timers are a scarce resource, and cpu intensive,
    mIRC allocates one multimedia timer and uses it for all of your
    -h timers. In order to keep cpu usage down to a minimum, the
    delay of this timer is dynamically changed as /timers are created
    or destroyed so as to use the lowest common denominator delay.

    The moment you don't have any -h timers running, mIRC frees the
    multimedia timer. If mIRC is unable to allocate a multimedia
    timer, it uses the normal /timer -m millisecond timer.

121.Made changes to mouse leave event, should work better when used
    for drag events.
122.Channel nicklist and IAL routines now use hashtable lookups to
    speed processing.
123.mIRC now displays the "files changed" dialog if you try to exit
    mIRC while the editor dialog is open.
124.Fixed /window command not handling floating point values for
    x y w h paramters.
125.mIRC can now be run as a service under 95/98 by specifying
    -service on the shortcut command line.
126.Custom window menu/mouse events now process the script which
    created the /window before looking through other scripts.
127.Fixed bug in $dbuw and $dbuh not returning the correct values.
128.Added hash table support for scripting. A hash table can be
    created/destroyed/modified using:

      /hmake <name> <N>           -  create a new hash table size N
      /hfree <name>               -  destroy an existing hash table

      /hadd <name> <item> <data>  -  add an item
      /hdel <name> <item>         -  delete an item

    You can use -s with all commands to show output, and -w with
    /hfree and /hdel to make them treat the name or item as a wildcard
    to free all matching items.

    A hash table can store an unlimited number of items regardless
    of the N size you choose, however the bigger N is the faster it
    will work, depending on the number of items stored.

      /hload <name> <filename>    -  load table from a file
      /hsave <name> <filename>    -  save table to a file

    By default, these load/save plain text to a text file, with item
    and data on separate lines ($cr and $lf characters are stripped
    from text before saving). You can use -b to load/save binary files.
    You can also use -n to make them load/saves files as data only,
    with no items.

    /hsave also supports -o to overwite an existing file, and -a to
    append to an existing file.

    To reference the contents of a hash table, you can use:    

      $hget(name/N)        -  returns name of a hash table if it exists,
                              or returns the name of the Nth hash table.
                             .size property returns the size of table

      $hget(name/N,item)   -  returns the data associated with an item

    You can also reference the table as an index from 0 to N using
    $hget(name/N,N).item which returns the Nth item name in the table.
    If N is zero, returns the total number of items in the table. This
    method is provided as a convenience, it is not an efficient way to
    use the hash table.

    Note: the hash table is case-insensitive.

129.Changed $ial(mask,N) to make N optional (defaults to 1), and mask
    can now be just a nickname.
130.Can now use $did().seltext on a listbox/combobox to return the text
    of the first selected item.
131.Fixed $isdir() bug.
132.Added "Save and Log As" item to system menu, allows saving buffer
    and starting a log in one selection.
133.Fixed hotlink bug on ircx servers with .nick owner prefix.
134.mIRC no longer splits logs at midnight for chats, it only does this
    for channel logs now.
135.All matching mouse events in custom window menus are triggered now,
    previously mIRC was only triggering the first matching event and
    ignoring all remaining scripts.
136.Fixed dcc chat bug, initiating a dcc chat from behind a firewall
    wasn't working properly.
137.Fixed notify list focus bug.
138.mIRC now uses the "start in" folder in a shortcut icon as the
    root folder. Can override with -r command line switch.
139.Added $notify().addr property, works on watch-enabled ircds.
140.Fixed dcc send/get/chat time-out gpf bug.

07/05/2000 - mIRC v5.71

Fixes/Additions:
1. Fixed text wrapping bug in /gtalk.
2. Fixed scrollbar not being displayed in address book nick listbox.
3. Fixed switchbar display bug.
4. The toolbar/switchbar now use colour 255,0,255 as the background
   transparent colour.
5. Changed the way $null is processed when used in identifiers.
6. Fixed bug with mark/copy routine display not working properly
   when an Agent is over a window.
7. Voice commands may or may not work in desktop windows, this seems
   to be a limitation of the SR software you are using.
8. Fixed icon display bug in custom dialogs.
9. Can now have unlimited controls per tab section in a custom dialog,
   also fixed bug with visible/hidden state not being preserved for
   controls.
10.Fixed Editor dialog display bug when "minimizing all" via task
   bar menu.
11.Fixed bug in handling of port ranges for IRC servers list.
12.When clicking the "Connect" button to connect to a server, you
   can now hold down the Control key to force mIRC to use the next
   server in the list.
13.Fixed /close bug.
14.Fixed quit message in channel window not showing user's address.
15.$dbuw and $dbuh now return a decimal value.
16.Fixed small offset bug in $window().dx/dy.
17.Now checks for /window "@Invalid Format".
18.Changed behaviour in editbox which was making it incompatible with
   applications which paste text into mIRC, eg. NJStar.
19.Changed default editbox in Editor dialog back to standard non-rtf
   editbox, the rtf editbox was behaving oddly.
20.Clicking right-button in a non-active window editbox now makes
   the window active.
21.Added option in lock dialog to hide the list of channels/queries
   in tray menu when mIRC is locked.
22.Added "mIRC window always on top" switch to Windows dialog.
23.Fixed bug in handling of {} brackets in some situations.
24.Added /username and /emailaddr command, allow you to set the
   corresponding values in the connect dialog.
25.Should handle UNC paths/filenames properly now.
26.If you do $dir sounds\*.*, the full path defaults to the mIRC dir.
27.Can now send "!nick file" to channel by pressing Control+Enter.
28.DCC Send "filetype ignored" message now shows filename.
29.Added support for JPG and PNG files in 32bit mIRC.
30.Fixed background picture bug, if the bmp was very small the "fill"
   mode would fail to display it properly.
31.Number of users in channel now shown in channel titlebar.
32.Added $poscs() case sensitive version of $pos().
33.You can now use <nosize nopace nohide> to turn these options off
   in the /gopts -b command.
34.Fixed display bug if you had paragraph-spacing turned on in a
   window with a background picture.
35.Can now use $ids and &vars in custom dialog tables.
36.Fixed bug in $base(), can handle larger values. It now also
   strips out 0x number prefix, eg. from 0x0809.
37.Agent now tries to set the language id for speaking based on the
   language id of the TTS module on your system. If it can't, it
   defaults to a US language ID. Can now also be set manually with
   /gopts -n <name> <langid> where langid is the hex id value.
38.DCC chat send/recv errors now trigger the on close event.
39.Fixed +e handling on Conference Room servers which use +e as a
   channel mode, not as the exception list mode as on IRCnet.
40.$mask() now replaces part of an address containings an equal
   '=' sign with a '*' wild card, for ircds, eg. conference room,
   that encrypt part of the address and use '=' to mark it.
41.Fixed "paragraph" spacing not working in listbox windows, eg.
   notify list, etc.
42.Fixed gpf bug in the view menu in the Popups editor dialog.
43.Fixed bug with spacebar not displaying popup menu in a listbox.
44.$window() now lists dcc chat windows as =chatname to be compatible
   with $active.
45.Added /clearial command to clear the internal address list.
46.Added /socklist command, lists open custom sockets.
47.Fixed bug with /remini, mIRC now replaces all [] characters in
   ini section names and headers with ~ when using ini commands and
   identifiers.
48.Changed Highlight method, when using wildcards the wildcard text
   is matched against individual words separated by spaces, instead
   of against the whole line, eg. "test*" will match "Now testing".
49.Added /play -b switch, plays text in the clipboard to a window. The
   text is temporarily saved to a file playqN.txt, which is deleted
   once playing is completed.
50.Fixed page up/down scrolling too far when using paragraph line
   spacing.
51.Fixed switchbar display for time-out dcc sends/gets.
52.mIRC now maintains an internal banlist for each channel. Added
   $chan().banlist, returns $true if mode +b has been seen already,
   or $false if not, or $inmode if currently in a mode +b listing.

   Added $banlist(#channel,N) identifier, returns Nth item, or if N
   is 0 returns total number of items in list. $banlist().by returns
   the address of the user who set the ban, and $banlist().date
   returns the date.

   Note: this feature does not work on ircx servers.

53.The isop comparison now evalutes to true if a nick is an owner on
   ircx servers.
54.Added support for menus in custom dialogs:

   dialog name {
     menu "text", <menuid> [, menuid]
     item "text", <id> [, menuid]
     item break, <id> [, menuid]
   }

   If you don't specify a [menuid] for an item, it will use the last
   menuid that was created/used in a previous menu/item.

   on 1:dialog:name:menu:*:{
     echo 5 $dname $devent $did
   }

   You can use /did -ebcuadio to enable/disable, check/uncheck, append,
   delete, insert, and overwrite a menu item.

   To add an item to a menu you can use: /did -a name <menuid> <newid>
   <text>.

   To insert an item you must use: /did -i name <id> <newid> <text>
   where <id> is the item before which you want to insert an item.

   Note: You can use the text "break" to refer to a break item in the
   /did command.

55.Fixed while loop bug in custom window popup menus.
56.Ctcp version requests are now queued, and the replies are sent once
   every few seconds.
57.DCC Get now locks the file being downloaded to prevent it being
   modified/over-written by a second download or other applications.
58.Can now resize nicknames listbox in channel windows.
59.Added "DCC Fail" event sound to Sounds section.
60.Changed /url [on|off|show|hide|-ran] [[N|mark]|address] -r removes
   either the Nth item, or all items that match the mark. You can also
   do /url -an address to visit a new URL, where -a = activate browser,
   -n = use new browser window.
61.Added $bytes(N,bkmgt3).suf identifier, returns comma formatted filesize.
62.Improved /var, now handles identifiers containing commas better
   though note that you should use the equal sign in the definition,
   eg. /var %x = etc.
63.Added $sock().wserr,wsmsg returns winsock error number and message
   for a socket in the event of a socket error.
64.Custom dialog Tab control now automatically adds a scrollbar if the
   tabs don't fit the width of the tab control.
65.Fixed $prop and $isid not working in $iif() identifier.
66.Added "Show mode prefix" to IRC dialog, prefixes nicks in messages
   with their .@%+ mode on a channel.
67.Fixed memory bug in dcc window popup menus.
68.Server socket now binds to a random local port.
69.File type selection in file dialogs is now set more intelligently.
70.Added Agents section to Options dialog. You can also turn agent
   on or off for a window via the channel or query window system menu.

   Added new switches:

   /gtalk -lu <text> switch, where -l applies lexicon settings to
   text, and -u uses the speech settings, ie. pitch, volume, the
   increase speed setting, etc.

   /gload -h and /gopts -h <on | off> switch, makes mIRC hide the
   agent when mIRC is minimized. Also added $agent().hide property.
   You can also use the -h switch with the other agent commands
   to prevent them from popping the agent when mIRC is minimized
   and has the -h setting.

71.Added /loadbuf -r switch, resets contents of window.
72.Fixed bug in /ignore /auto /protect, if you used -r to remove an
   address, and the entry contained a #channel, the address wasn't
   being removed.
73.Fixed bug with control+copy when copying text and control codes.
74.Fixed bug when using /filter -io where dialog name contained a
   '.' character.
75.$mklogfn() now appends date to filename if you have the dated
   logfiles option turned on in the logging dialog.
76.Fixed max dcc gets bug in fileserver.
77.Added custom dialog editbox item "limit N" which limits text in
   an editbox to N characters.
78.Can now rename tabs in a tab control using /did.
79.Added /hop [#channel [key]] command, parts the current channel
   and joins a new one. If no channel is specified, it parts and
   rejoins the current channel without closing the window.
80.Can now use /url to open email addresses as well.
81.Added hyperlinks to custom dialogs:

   link "test", id, x y w h

82.Added $disk().size property.
83.Added $file().atime, .mtime, .ctime, return last access and
   modify time, and creation time.
84.Fixed bug with $findfile() and $finddir() not being able to see
   local variables in a command.
85.For ircx compatible servers which mIRC doesn't recognize, you can
   send /ircx to the server on connect, and if mIRC receives the 800
   numeric reply, it will treat the server as ircx internally.
86.Fixed switchbar display bug when windows are maximized in some
   situations.
87.Added /showmirc -op switches, -o sets mIRC on top, -p removes
   the on top setting.
88.Changed the "ignore types" feature in dcc options, now works as
   "ignore all except". Also added ignore timer, allows you to turn
   off the ignore temporarily.
89.Fixed positions of windows not being saved correctly if windows
   taskbar was positioned to top or left of desktop.
90.Fixe $sdir changing folder name to lowercase.
91.The notice sent before initiating a DCC chat for a fileserver now
   says "DCC Fserve" instead of "DCC Chat".
92.Added Kick event to Options/IRC/Show dialog and Channel central.
93.Added "Highlight nicknames" option to Display/options dialog, it
   colours nickname prefixes in messages with the "highlight text"
   colour.

   Note: if you use the /cline command to colour a nickname in a
   channel nicklist, the nicks colour in the listbox is used as the
   highlight colour.

94.Fixed bug in mark/copy routine, in some cases may not have been
   copying text to clipboard properly.
95.Fixed bug with ! command prefix, was affecting subsequent commands
   when used in a script.
96.Fixed /drawcopy bug.
97.Added menu { rclick:/command } event, only triggers in a custom
   @window if no menu items are defined.

   Also added $mouse.lb property, returns $true if a mouse event
   occurred in a listbox.

98.Improved support for dual monitor displays in 32bit mIRC, added
   switch to Display/options dialog.
99.Added $nick().colour property, returns nickname colour, if it's
   not coloured, returns highlight colour.

02/02/2000 - mIRC v5.7

Fixes/Additions:
1.Fixed $ord() bug.
2.Corrected parts of help file.
3.Changed identd server behaviour.
4.Fixed custom dialog icons bug in tab control.
5.Fixed Control-Q/N minimizing windows.
6./raw quit now won't trigger the "reconnect on disconnect" switch
  in the IRC options dialog.
7.Fixed bug in custom identifiers where the 255 character was being
  interpreted as a separator.
8.Fixed custom dialogs Tab control display bug.
9.Added network listbox to connect dialog.
10.Fixed "max remotely initiated dcc sends" allowing one more dcc
   than specified.
11.Fixed bug in !nick filename, when filename is an LFN containing
   spaces.
12.Fixed mIRC not remembering minimized state if closed while it
   was minimized to tray.
13.Fixed custom dialog tab control button sizes in "pixels" mode.
14.Added $didwm(name,id,wildtext,N) which returns the number of the
   line that matches wildtext, with the search starting at line N,
   N is optional.
15./identd now saves the settings to mirc.ini.
16.The % helper mode on channels is now recognized on all servers,
   not just on IRCnet servers. Note: this will inevitably cause
   problems with scripts, since % is the %variable prefix.
17.Editor dialog now warns you if files haven't changed when you
   exit the dialog without saving. Also added option to turn this
   behaviour on or off.
18.Can now /clipboard -a to append text to existing text in the
   clipboard.
19.The custom timestamp set in options dialog, messages section, is
   now used for time-stamping all messages/logs/etc.
20.Fixed cursor not being set properly when using Tab key to evaluate
   an item in an editbox.
21.Channels in channels folder are now stored in chanfldr.ini file.
22.The ircx prop MEMBERKEY event is now interpreted as mode +k and an
   on MODE event, and the prop TOPIC event is interpreted as on TOPIC.
23.The "not connected" message displayed for commands that need a
   connection to a server now contains script/line number info.
24.If connected to a server, you can now hold down shift-key when
   pressing OK in Options dialog to set selected server.
25.Added "sort files by nickname into own folders" feature in DCC
   Folders dialog.
26.The "date logfiles" logging option now closes all logfiles with
   dated filenames at 12am and re-opens them with the new date.
27.Invalid table error for custom dialogs now provides more info.
28.Fixed bug in /background command updating mirc.ini incorrectly.
29.Can now specify negative index in $gettok(), eg.
   $gettok(a.b.c.d.e.f,-3,46) returns d
   $gettok(a.b.c.d.e.f,-3-,46) returns d.e.f
30.Fixed bug in $did() not being able to read the "text" control in
   custom dialogs if it had the "center" style set.
31.Extended editbox handling in custom dialogs:

   $did().seltext    returns selected text in an editbox
   $did().selstart   returns select start character in editbox line
   $did().selend     returns select end character in editbox line

   /did -c name id [n] [start [end]]

   This selects line N in editbox, and sets selection to specified
   range of characters.

32.Added option to Messages dialog to strip codes section only if
   there are more than N codes in a messages.
33.Extended $strip(text,burcmo), where m = strip codes according to
   settings in Messages dialog, and o = strip codes using the "only"
   setting in the messages dialog if it is turned on.
34.Can now hold down Control key while copying text in a window with
   the mouse if you want control codes included.
35.Fixed finger server bug, was leaving CR appended to nickname.
36.Added "on top" setting to editor dialog.
37.Fixed bug in DCC Send dialog not displaying file size info properly
   if "hide file extensions for known file types" was turned on in
   windows.
38.Added $sorttok(text,C,ncr) identifier, default is alphabetic sort,
   optional parameters n = numeric sort, c = channel nick prefix sort,
   r = reverse sort.
39.The "search all files" option in the find dialog in editor now
   works when you are replacing text.
40.Added $ini(file,topic/N,item/N), where item/N is optional, and can
   specify N = 0 for total, or item name to see if it exists, etc.
   It replaces $initopic() which is still supported but removed from
   documentation.
41.Added $ctrlenter identifier, returns $true if Control-Enter was
   pressed when entering a message/command.
42.Date/time format spec. now allows TT for uppercase AM/PM, and ZZZ
   for a timezone with GMT appended.
43.Fixed $hotline, now returns the full line where a link occurs, even
   if the line wraps.
44.Fixed $isdir() not working on NT network drives.
45.Fixed /did -f not working in custom dialog init event.
46.Added $didtok(name,id,C), creates tokenized list from list/combo/edit
   box, and /didtok name id C text, adds tokenized list to list/combo/
   edit box. 
47.If "tooltips" are turned off, tooltips won't appear over switchbar
   buttons any longer.
48.Quotes around filenames are now removed before the filename is used
   in $isfile/isdir/file/ini/findfile/finddir/getdir/lines/nofile/nopath
   shortfn/dccignore/dll.
49.Fixed bug in /sockwrite -n only appended an LF instead of CRLF.
50.Fixed /close -cgsf only closing the first window.
51.Fixed nickname highlight bug in dcc chat windows.
52.Right-click on alias/popup/remote/send toolbar buttons now pops up
   quick access menus.
53.Control+L in Editor now opens the Load file dialog, Control+S now
   saves the current file, and Control+H now checks the brackets.
54.Added support for while loops. Repeats a loop while the expression
   in brackets is true. Multiple while loops can be embedded. You can
   use /break to break out of the current loop. You can also use the
   /continue command to jump to the beginning of the loop.

   var %i = 1
   while (%i <= 10) {
     echo 2 %i
     inc %i
     if (%i > 5) break
   }

55.Fixed bug with /filter, was displaying a hidden control in a
   custom dialog when outputting to it.
56.$numtok(text,C) now returns zero if text is empty.
57./if comparions now handle $null values properly. In the case of
   a string comparison $null is treated as an empty string. In the
   case of a number comparison, if either of the values is $null
   the comparison fails.
58.Added $send().secs and $get().secs, returns number of seconds
   that the connection has been open.
59.Added "max cps per user" option to Options/fserve dialog. Allows
   you to limit max cps used by a dcc send to a user in a Fileserver.
   This is also applied to /dcc sends initiated in a remote script.

   You can override this by using /dcc send -lN switch, limits
   transfer speed for a dcc send to N cps. If you specify zero, no
   limit is applied.

   The /dcc maxcps <N> command can be used to changed the Max Cps
   value on the fly.
60.Custom /dialogs created on the desktop can now be minimized. Can
   use /dialog -ie <name> to minimize or restore the dialog.
61.Added /localinfo -uh command, looks up and sets your local info
   settings. The -u switch performs a /userhost lookup, the -h switch
   does a normal lookup.
62.Fixed channel /mode +k bug.
63.Fixed bug with "show whois in active window" feature.
64.Added $did().edited returns $true/$false depending on whether text
   in an editbox was modified. Can reset the modify flag using the
   /did -j switch.
65.Added two colour listboxes to Options/display dialog, the message
   listbox for normal messages, the highlight listbox for messages
   that match your highlight settings.
66.Added $prop property identifier for custom identifiers which use
   properties, eg. $test(value).help, in this case, $prop will return
   the value "help".
67.Can now specify a range in the Ports section of an IRC server
   entry, eg. 6665-7000
68.Added titlebar right-click option in General dialog.
69.Added /if isalpha comparison, evaluates true if the specified
   parameter is all text.
70.Fixed drive a:\ access bug.
71.Installer now sets up support for .chat files in registry.
72.Custom dialogs now allow Id numbers from 1 to 3000.
73.Fixed on NOSOUND event bug.
74.Control+V/Shift+Insert now allow you to hold down the keys to
   paste repeatedly.
75.mIRC now allows you to select the script for a font in the font
   dialog, to support arabic, cyrillic, etc. characters. The script
   selection is stored along with the normal font info in mirc.ini.
76.Added support for Microsoft Agent in mIRC 32bit under win95 or
   greater. I downloaded all of the files on:

     http://msdn.microsoft.com/workshop/imedia/agent/agentdl.asp

   /gload <name> <filename | N | default>
   /gunload <name>

   /gshow <name> [x y]
   /ghide <name>

   /gmove <name> <x> <y> [speed]
   /gsize <name> <w> <h>

   /gtalk -kw <name> <text | <wavefile | text>>
          -k   - think text
          -w   - play wave file

   /gplay <name> <animname | N> [timeout]
   /gpoint <name> <x y>

   /gstop -c <name> [talk play]
          -c   - stops only the current anim/talk instead of all

   /gopts -bieq <name> <on off size pace hide>
          -b   - balloons: <on size pace hide | off>
          -i   - idle effects: <on off>
          -e   - sound effects: <on off>

   /gqreq <on off>
          - turns queuing of messages on or off, default on.

   $agentver   - returns Agent version, 0 if not installed
   $agentstat  - returns 1 if Agent ready, or 0 if busy/speaking

   $agent(name).name, fname, visible, x, y, w, h, ow, oh,
                speed, pitch, idle, effects, active, langid,
                balloon

   name    - the name you gave to this agent
   fname   - the filename of the agent, ie. merlin.acs, or "default"
             if you didn't specify a filename
   visible - returns $true or $false
   x,y,w,h - left/top position, width/height.
   ow, oh  - original width/height
   speed   - speaking speed
   pitch   - speaking pitch
   idle    - if idle behaviour is on or off
   effects - if sound effects are on or off
   active  - if this agent is active/topmost
   langid  - language id of system
   balloon - current setting: on off size pace hide

   $agent(N).char

   char    - returns filename of Nth available agent, if you specify 0
             returns total number of installed agents.

   $agent(name,N).anim, line

   anim    - returns the names of the animations available for playing
             for this agent. If you specify 0, returns the total number
             of animations. If you specify N, returns the name of the
             Nth animation.

   line    - returns the list of lines currently queued to be spoken
             for this character. If you specify 0, returns total number
             of queued lines. If you specify N, returns the Nth line.

   You can also use tags in /gtalk in <text> which may be recognized by
   the text-to-speech engine, these are a few:

   \spd=nnn\      - set speed of spoken text
   \pit=nnn\      - set pitch of spoken text
   \vol=nnn\      - set volume of spoken text
   \chr="string"\ - where string is normal, monotone, or whisper
   \ctx="string"\ - address, email, unknown
   \emp\          - emphasize next word
   \pau=nnn\      - pause speech nnn milliseconds
   \rst\          - reset settings to default

   $notags(text)  - removes the above tags from text, but only if the
                    tags are correctly written as above.

   Notes:
   1. mIRC queues all requests and plays them one after the other
      to ensure that even if you use multiple agents at the same
      time, all messages will be heard, and all agents will act in
      the order that you requested.

      You can turn queuing on/off using /gqreq <on | off> on the
      fly.

   2. You can't load more than one of the same agent, ie. if you
      load Genie, you can't load a second Genie. You can however
      load Genie, Merlin, Peedy, and any other custom characters
      all at the same time.

   3. Looping animations prevent an agent from doing anything else
      until you /gstop the agent. The [timeout] value in /gplay
      allows you to specify a maximum time-limit for an animation
      after which it is automatically stopped, and the agent will
      then perform the remaining queued requests. If you don't
      specify a timeout value, the default is 5 seconds. If no
      play or talk requests are pending, the looping animation
      continues beyond the timeout until there are.

77.The $filename identifier can now be used in the on PLAYEND event
   to refer to the filename that was just played.
78.Added .logfile property to $chan(), $chat(), $query(), and
   $window(), returns logfile name if a log is open for the window,
   otherwise returns $null.
79.Changed channel central dialog, uses a tabbed dialog, and adds
   support for the +e and +I IRCnet channel modes. Also added a
   display section for redirecting channels events.
80.If you have Speech Recognition (SR) software installed, mIRC can
   be made to listen to voice commands by using:

     /vcmd -lc <on | off | sleep>
           -c      - clears the command list
           -l      - lists current commands
           sleep   - ignores commands temporarily

     /vcadd <command1,command2,...>
     /vcrem <command1,command2,...>

   If the SR software matches a word you've spoken to a word in your
   commands list, mIRC triggers the VCMD event:

     on 1:VCMD:<matchtext>:<*/#/?/@>:/echo 3 Recognized: $1-

   The $vcmd(N) identifier returns the Nth item in the voice commands
   list.

   $vcmdver  - returns version of SR software, $null if not installed

   $vcmdstat - returns 0 not available
                       1 currently off
                       2 ignoring commands
                       3 listening

   Notes:
   1. Your SR software may have very large speech files/dictionaries,
      it could take 10 or more seconds for your SR software to load
      or unload, and may be slow while processing your speech, causing
      short pauses in mIRC.
   2. Adding or removing commands can be done on the fly, however if
      your SR software is slow at updating the commands list, mIRC
      has to wait until it finishes.

81.Fixed custom dialogs DBU bug in dialog "size" item, was creating
   dialogs that were 10 or so pixels taller than they should be.
82.If a new window opens while you are in a dialog, eg. script editor,
   the new window no longer takes away the focus from the dialog.

   If you want to force a custom window to take focus, you can use the
   /window -a switch when creating the window.

83.The message highlight section in the Options/IRC dialog now matches
   against whole words, or words enclosed in non-alphabetic characters.
   You can use wildcards *? to make a word match non-whole words.
84./unset now evaluates variables inside [] brackets, this allows you to
   unset variables with dynamically created names:

   test  {
     set %a [ $+ b ] 1
     set %a [ $+ c ] 2
     set %a [ $+ d ] 3
     unset %a [ $+ b ] %a [ $+ c ] %a [ $+ d ]
   }

85./part can now close an open channel window while not connected.
87.Changed behaviour of /disconnect and /quit, can now cancel a connect
   in progress.
88.You can now remove a nick from your Tab Key list with Control-D.
89.Added $mklogfn(filename) identifier, returns the filename format that
   the logging feature uses, $mknickfn(nickname) fixes a nickname for use
   as a filename, and $mkfn(filename), removes invalid characters.
90.You can now prevent a command from being processed as an alias by
   prefixing it with a ! character, eg. /!command etc.
91.Added event: on 1:PONG:echo pong reply: $1-, note: you can't use this
   to intercept /pings to your own nickname, this is used internally by
   mIRC.
92.Can now use $editbox(=name) for dcc chat editboxes.
93.Fixed a bug in sclick event for comboboxes in custom dialogs.
94.Made a change to the way sockets are closed throught-out mIRC.
95.Fixed bug in /did command causing hidden controls to become visible.
96.The "photo" display method of background pictures can now display
   pictures properly regardless of their height/width ratio.
97.The problem with the + character being changed to & in custom dialogs
   is now fixed.
98.Added .stamp property to $chan(), $chat(), $query(), and $window(),
   returns timestamp setting.
99.Added $dbuw and $dbuh, return dbu per pixel width and height.
100.Changed parsing method for most identifiers so that your custom
    identifiers will now work even if they begin with the same letters
    as internal identifiers.

    Directory related identifiers have not been updated, eg. $mircdir,
    $getdir, $cd, etc. since many widely used scripts append text
    directly to them, ie.:

      //splay $file="Select wave:" $mircdirsounds\

    Instead of using the (better) format:

      //splay $file="Select wave:" $mircdir $+ sounds\

101.Removed support for the very old $parm and *N identifiers.
102.Fixed bug in /drawrect, sizing was slightly off. You can now
    also specify negative values for the width/height.
103.Extended "Date filenames" feature to allow you to date filenames
    by day, week, or month. If dated by week, log files begin on days
    1, 7, 14, and 21, and if dated by month, they begin on day 1.
104.Added support for single/double/paragraph line spacing in windows,
    can set default in Options/Display section, and for each window
    via the system menu.
105.Fixed bug in socket-related routines which may have affected IRC
    server connection, DCC Send/Get, and Custom sockets.
106.Changing the desktop/mdi setting of a window no longer makes mIRC
    forget the previously saved window position.
107.Fixed bug where mIRC was leaving tmpN.$$$ files in mIRC directory
    in certain situations.
108.Can now stop a /list on Undernet servers by selecting the "stop
    listing" item in the Channels List window menu.
109.Hotlink feature should be a bit smarter when matching nicknames
    to a link now.
110.$os now recognizes 2000.
111.mIRC now re-adds its icon to the tray if the tray is reset/crashes.
112.Added "copy messages to query" option in IRC dialog; if you're
    talking to a user in the dedicated message window and then decide
    to open a query to them, this copies the conversation you've had
    so far from the dedicated message window to the query window.
113.Can now specify a negative index in token identifiers, eg.

    //echo $puttok(a b c d, e, -2, 32)  =  a b e d
    //echo $instok(a b c d, e, -2, 32)  =  a b c e d
    //echo $deltok(a b c d, -2, 32)     =  a b d

114.$len() now returns 0 if passed an empty value.
115.Added $base(N,inbase,outbase,zeropad,precision) to convert number
    N from inbase to outbase. The last two parameters are optional.
116.Added $bfind(&binvar, N, M), searches a &binvar for a matching
    value, starting from position N. M can be a character value, ie.
    0 to 255, or text. The search is case-insensitive.

    $bfind(&test, 1, mirc)     finds "mirc" starting from pos 1
    $bfind(&test, 5, 32)       finds char 32 (a space) from pos 5
    $bfind(&test, 1, 87 65 86) finds WAV from pos 1

    You can use $bfind().text to force a text search if the search
    text is a number.
117.Sockets now have the "keep alive" setting turned on which should
    help keep a connection alive over extended periods.
118.Ctcp messages are now time-stamped.
119.$date now returns the full four-digit year. $ctime now also assumes
    the year 2000 if you specify a year <= 38.
120.$menu now works in mouse events in menu {} definitions.
121.Added "hide ping? pong!" option to IRC dialog.
122.Windows can now have their own timestamp setting independent of the
    global timestamp setting in the IRC/Messages dialog.

    You can now use /timestamp on|off|default, where default uses the
    global setting.

    You can also set the timestamp format using /timestamp -f [format].

123.Hotlinks now work on Tab-key nicknames that have messaged you in
    the message window.
124.Fixed bug in Display/Windows dialog when changing the MDI/Desktop
    setting for windows.
125.Added $dialog().active property, returns $true if dialog is the
    active window, $false otherwise.
126.Added $longfn(), returns LFN version of a short filename, works
    only in 32bit mIRC.
127.Added /bcopy [-zc] <&binvar> <N> <&binvar> <S> <M>

    This copies M bytes from position S in the second &binvar to
    the first &binvar at position N. This can also be used to copy
    overlapping parts of a &binvar to itself. If M = -1, all of
    the bytes from position S onwards are copied.

    If you specify the -z switch, the bytes in the source &binvar
    that were copied are zero-filled after the copy.

    If you specify the -c switch, the first &binvar is chopped to
    length N + M.

    Also added /bunset <&binvar> ... <&binvar> command to unset the
    specified list of &binvars.

128.Fixed bug with /did -i adding CRLF when inserting into a single
    line editbox.
129.Fixed bug in /dccserver command.
130.Can now use $mid() without specifying the third parameter.
131.Added $appstate, returns minimized, maximized, normal, hidden,
    or tray, to indicate state of mIRC window.
132.Function keys in the message window work all the time now.
133.Made a change to the way $portfree() works.
134.If you try to use DCC Send/Chat/Fserve while they are locked
    in the lock dialog, you now see a lock message.

23/09/99 - mIRC v5.61

Fixes/Additions:
1.Fixed lock dialog password bug.
2.Improved support for IRCX servers:

  Added property $nick().owner, isowner if comparison, and "q"
  property to $nick(#,N,aohvrq,aohvrq) where "q" is for owners.

  Added on OWNER/DEOWNER events, work the same as on OP/DEOP,
  and $mode().owner/deowner properties.

  mIRC also now automatically sends /ircx to the IRCX server the
  moment it connects.

  If you have a large notify list, the notify list will now work
  on IRCX servers, a maximum of 30 nicknames at a time are sent
  in the ISON request.

  The "raw" event can now trap all events that mIRC doesn't
  internally recognize, so IRCX events can be processed, eg.:

  raw prop:*:echo 4 PROP: $nick $address $event $1-

  The DATA event from microsoft chat clients is now hidden, and
  any privmsgs of the format :(#G2<:E:10M1) or :(#G810E21:RM1)
  are trimmed to the text after this token. This is only done
  on IRCX servers.

  mIRC now sees the CREATE event, interprets it as a JOIN, and
  also displays the KNOCK, EVENT, and WHISPER events.

  The PROP TOPIC event now updates the topic in a channel window
  titlebar.

  The +dhuwx channel modes are now displayed in the titlebar.

3.The text entered for the highlight words list no longer strips
  out extra spaces.
4.The RAW event can now handle unknown NAMED events, eg.:

  raw eventname:*:echo 4 $nick $address $event $1-

5.Limit channels section in Lock dialog now allows any length
  channel name to be entered.
6.Added "play flash sound N times" option in Highlight dialog.
7.Fixed /tokenize bug with non-space delimited tokens.
8.Rolling/unrolling windows now only works if you hold down the
  shift key when right-clicking on the window titlebar.
9.Added $lock(item/#chan/N) identifier, returns $true or $false if
  item is locked, where item can be: send, get, chat, fserve, run,
  dll, channels. You can also use $lock(N) where N returns the Nth
  channel in the limit channels list, or you can specify a channel
  name instead of N.
10.Added "show in channel: ctcps" switch to IRC dialog, to display
   ctcps sent to a channel in the channel window.
11.Extended $duration() to handle larger numbers.
12.mIRC intercepts Control-F4 to close desktop windows now.
13.Support for $parmN and *N will be removed next version.
14.Fixed invalid cps value at start of dcc get resume.
15.Fixed on PLAYEND bug.
16.Made change in /goto behaviour and how it finds :goto points.
17.Sound messages are now time-stamped.
18.Fixed bug in $crc(), it's returning the correct standard 32bit
   CRC value now.
19.Added $dccignore, returns $true if ignore types in dcc folder
   dialog is on, otherwise $false.

   Also added $dccignore(N/filename), if N = 0, returns number of
   items in ignore types list, otherwise returns Nth item in list.
   If filename is specified, returns $true if it matches item in
   list, otherwise $false.

20.Fixed BURC codes being stripped from channel topic.
21./font, $width(), $height(), /drawtext, now allow you to specify
   a negative number for the font size, this matches the font size
   you'd see in the font dialog.
22.Fixed on INPUT not working with dcc chat/fserves.
23.Fixed memory bug in /drawsave.
24.Fixed bug in $read when using both -w and -l switches.
25.The Help menu in the menubar now lists .chm and .html files.
26.Can now specify "hsbar" horizontal scrollbar property for listbox
   and combobox in custom dialogs. To reset the width of the hsbar
   you can use /did -z after adding/deleting lines.
27.Extended $chat/$fserv/$send/$get, to $chat(nick,N), $fserv(nick,N),
   $send(nick,N) and $get(nick,N) for nicks with mutliple dcc sessions
   open. The old format of $xxx(nick/N) is still supported.

   Also extended /close -cfsg to allow you to specify Nth chat/fserv/
   send/get, eg. /close -s5 nick, would close the 5th send to nick.

28.$highlight now returns $true if highlighting is enabled, otherwise
   $false.

   Added $highlight(N/text) identifier, with properties .text, .colour,
   .sound, .flash, .message, .nicks. Returns Nth highlight line in
   highlight listbox, or if text is specified, returns the properties
   for the highlight line that matches text.

29.Fixed + prefix bug in $target identifier for /msg +#channel.
30.Added if (v1 isalnum) comparison to test if v1 is alphanumeric
   text.
31.Online timer and Idle time now remain valid even if you change
   your computer time.
32.Tooltips now pop up over incomplete switchbar button names.
33.Fixed gpf bug in colours dialog when pressing Ok button, and
   in /colour command.
34.Can now Control+Q to cycle through query windows. Cycled windows
   are minimized when you cycle out of them.
35.Ctcp sound now handles quoted LFNs, and you can specify a quoted
   LFN with the /sound command.
36.Made a change in the way mIRC submits /list *wildcard* on the new
   DALnet servers, the method mIRC was using before wasn't being
   recognized, so the entire channels list was being sent.
37.The Find dialog in the Editor now remembers past searches.
38.Fixed bug in /writeini and $readini relating to items prefixed
   with [, windows writes multiple items of the same name in this
   situation, mIRC changes the [ to ~ to prevent this.
39.Fixed local variables memory allocation bug.
40.Fixed bug with Control-K inserting text in a read-only editbox.
41.Added $dialog() .cw and .ch properties, return width and height of
   client area of dialog, ie. not including titlebar, borders, etc.
42.Added custom dialog {} item "option" with properties "dbu" and
   "pixels", allows you to specify whether the dialog uses dialog base
   units for measuring control sizes and dialog width/height.

   Using dialog base units ensures that your dialog will appear the
   same size for all users on any size display etc.

   Also added /dialog -bp switch, indicates that the width/height is
   in dialog based units or pixel units.

43.$fline() now strips BURC codes from the text before tying to
   find a match.
44./did -g no longer makes an icon visible if it was hidden before.
45.$did().visible now works properly for icons.
46.$did() on an icon now returns the index and filename of the icon.
47.Fixed bug in drag-drop onto channel nick listbox.
48.Fixed bug with "always get..." switches being turned off in
   some situations.
49.Improved hotlinks to recognize %#channels only on ircx servers,
   and !#channels only on ircnet servers.
50.Added event on 1:HOTLINK:wildtext:*/#/?/@/=:/commands, works
   slightly differently from normal events, eg.

   on ^1:HOTLINK:*help*:#:{
     if ($1 == helpme) return
     halt
   }

   on 1:HOTLINK:*:*:echo clicked word $1 in line $hotline

   The first hotlink event is triggered when you move your mouse
   over a word that matches *help*. You can then check $1 to see if
   you want the hotlink hand to appear over the word. If you halt
   the event, no hand will appear. This allows you to filter a word
   based on context.

   The $hotline identifier returns the line which contained the
   hotlink trigger.

   Note: the script for this event should be as small and as fast
   as possible since it triggers each time the mouse is moved over
   a word matching *help*

   The second hotlink event is triggered when you double-click on
   a word which has been filtered through the first hotlink event.

51.mIRC now expands tab characters in text in custom @windows.
52./window -c now works with the Link list window.
53.Fixed tab key nickname bug in query windows.
54.The procedure in the DLL being called by /dll and $dll() must now
   be of the form:

   int __declspec(dllexport) __stdcall proc(HWND, HWND, char *,
   char *, BOOL, BOOL);

55.You can set the tabstops for tab-delimited text in a custom
   @window using /window -t <name> T1 T2 ... Tn
56.Fixed bug in Urls list "Send To" option.
57.Fixed DCC Send dialog gpf bug.
58.The 32bit mIRC under win95/98/NT/etc. now uses the new win95 file
   dialogs.
59.Fixed gpf bug relating to placing more than one closing brace } on
   one line in a menu definition.
60.Fixed shift+right-click rollup/down not working with tool @windows.
61.Fixed gpf bug in custom dialogs when holding down spacebar over a
   button and pressing a cursor key.
62.Added "search all" switch to find text dialog in editor.
63.Can now /clear =nick for dcc chats.
64.Using a new random number generator which returns unsigned long
   values, previous generator was returning int values.
65.Added ability to customize time-stamp in options/messages dialog.
66.Lock messages for items locked in the lock dialog are now more
   informative, eg. when trying to join a locked out channel, etc.
67.Fixed /var bug which may have caused a gpf if /var was used
   incorrectly.
68.Fixed $initopic() to handle section names containing [] chars
   which mIRC replaced with ~ chars to prevent ini problems.
69.Added binary operators, $and(a,b), $or(a,b), $xor(a,b), $not(a),
   $biton(a,n), $bitoff(a,n), $isbit(a,n).
70.$window(name) can now reference all windows.
71.Added support for tab control in custom dialogs, example:

   dialog test {
     title "mIRC"
     size -1 -1 110 100
     option dbu

     tab "m", 1, 5 5 100 90
     tab "I", 2
     tab "R", 3
     tab "C", 4

     button  "m is for ... ;)", 11, 30 50 50 24, ok tab 1
     button  "I is for Internet", 12, 30 50 50 24, tab 2
     button  "R is for Relay", 13, 30 50 50 24, tab 3
     button  "C is for Chat", 14, 30 50 50 24, tab 4
   }

   In the above example, I assigned button controls to specific
   tabs, so mIRC handles the showing/hiding of them.

   Can use /did -fu to set the focus on a specific tab, and /did -vh
   to show/hide the control.

   Added $dialog(name) .focus, returns the id of the control (not
   specifically for tabs, general use) that currently has focus,
   and .tab, returns the id of the tab that is currently selected.

   Only one tab control can be defined in a dialog.

72.Fixed $disk().free value for 32bit mIRC.
73.mIRC now also displays vLMN channel modes in channel titlebar.
74.Added $timer().secs property, returns number of seconds left till
   timer is triggered.
75.Added $isupper(text) $islower(text) identifiers, return $true or
   $false depending on whether text is all upper/lower case.
76.Improved Tab key nick completion in dedicated Message Window.
77.Fixed custom dialog position being reset when minimizing and
   restoring the main mIRC window to/from an icon.
78.Added /echo -bf switches, apply the beep/flash settings in the
   window that you're /echoing to.
79.Fixed bug in mIRC tray icon under NT/2000.
80.Fixed gpf bug in on SENDFAIL/GETFAIL if you /closed the send/get
   window in the event itself.
81.$0 now returns the number of space-delimited tokens in $1-.
82.Added $ord(N) identifier, appends st, nd, th as appropriate to
   the number N.
83.Added right-click popup menus to DCC Send/Get windows for extra
   functions.
84.Fixed /loadbuf not closing file in some situations.
85.Changed parsing method for $cr, $lf, and $cb so that you can
   create your own identifiers beginning with these letters. Also
   changed for: $false $inmidi $inwave $null $online $ticks
                $titlebar $true $version 
86.The ignore list can now be cleared with /ignore -r.
87.Can now /drawrect -e for an empty circle, and /drawrect -ef to
   draw a filled circle.
88.The routine that displays the modes in the channel titlebar now
   displays any channel mode that the server sends, sorts the modes
   alphabetically, except for modes +lk which it adds at the end.
89.Added "check if Service name in use at startup" in Options dialog
   DDE section, prevents mIRC from using a DDE name if another mIRC
   is using it.
90.Added $sock().to returns number of seconds socket has been open.
91.Halting on NOTICE event now prevents the default sounds for that
   event from playing.
92./onotice and /omsg will now use @#channel format, and /amsg and
   /ame will send one privmsg per channel instead of using privmsg
   #chan1,#chan2,etc., on efnet hybrid-6.
93.Added /dialog -r switch, to center a custom dialog.

03/06/99 - mIRC v5.6

Fixes/Additions:
1.Fixed on midiend being triggered when you try to play a midi while
  one is already playing.
2.Fixed /window -g not working on hidden windows.
3.Fixed popup menu - separator bug.
4.Fixed on servermode/usermode events.
5.Fixed bug with Ctrl-Shift-Home shifting display text when trying to
  highlight text in editbox.
6.CTCPs sent to a channel are now displayed in the status window, not
  in the channel window.
7.Fixed wave sounds not playing properly if a wave sound was currently
  being played.
8.Fixed not being able to Control-K in a combo editbox.
9.Fixed $mask() bug.
10.Long lines in the /stats reply are now wrapped.
11.Fixed /flash not resetting tray icon.
12.$isfile/isdir/exists now return $false if provided with a
   $null value.
13.$chr(26) EOF is now stripped from lines written to log files.
14.Removed backward-compatible support for the old format of $left,
   $mid, $nick, $right, $snick, $str, where N was specified first.
15.Extended $nick() identifier to $nick(#,N,aohvr,aohvr), to replace
   all of the other $opnick/$nopnick/etc. identifiers.

   Both aohvr parameters are optional. The first specifies which
   nicks you'd like included, and the second specifies the nicks
   you'd like excluded.

   a = all, o = ops, h = helper, v = voiced, r = regular

   Note: the old identifiers are still supported for now.

16.Your away status is now shown in the Status window titlebar.
17.Fixed Channel topic "set by" message being displayed in channel
   when "show topic in channel" was turned off.
18.Fixed URL hotlink bug when over nicknames beginning with non-
   alphabetic characters which matched another nickname on the
   channel.
19.Fixed bug in /background command, wasn't freeing resources
   properly.
20.Added $dccport identifier for DCC Server port.
21.Added /echo -q switch which makes /echo not display any text if
   it is in an alias that was called with the . prefix.
22.Fixed bug when two simultaneous dcc chats by two users resulted in
   an extra dcc chat window that connected to a non-existent socket.
23.Extended switches for /load and /reload to allow -rsN where N is
   the script position of the script being loaded. This allows you
   to order/re-order a script.
24.$event now returns "ctcp" for a ctcp event.
25.on input now requires the <*#?=!@> field, and any window name can
   be specified now.
26.Extended on open event when it is triggered by a new query window
   opening:

   on 1:open:?:<wildcard text>:commands

   Where the wildcard text will match the message that the user
   is sending to you, causing a new query window to open. This allows
   you to halt the window opening based on the message.

27.On startup, mIRC no longer checks to see if another application is
   using its DDE Service name, this seems to cause problems. This
   means that if another app is using the mIRC DDE Service name when
   you run mIRC, the new mIRC will take over the DDE service name.
28.The date logfile names option now uses the full 4-digit year.
29.Fixed /iline bug.
30.When using /window ... /command, the contents of the @window
   editbox are not reset unless the /command is different from the
   previous /command.
31.Added on PING event, allows you to hide the ping server message.
32.The line "Session Time:" is now output to log files at midnight as
   marker for log files that are open for a long time.
33.Fixed /window -w switchbar buttons display bug.
34.Extended /window -kN switch, where 0 = hide prefix, and 1 = show
   prefix.
35.Fixed bug in /dde CONNECT topic processing.
36.Fixed bug in $did() which sometimes didn't return the text in
   an editbox.
37.Fixed on close event, ^ was triggering in the wrong order.
38.Desktop windows with the "flash" option turned on now have their
   own window icons flashed.
39.Added $crc(filename) identifier, returns 32bit CRC.
40.Added "Track Urls" switch to System menu in Channel/Query windows,
   auto-opens websites as they are mentioned in a window.
41.Added /loadbuf -ttopic switch, loads text in the [topic] section
   in a text file.
42.Added /findtext [-n] <text> command, searches active window for
   the specified text (same as Control-F).
43.For $readini /writeini /remini, can now specify multi-word topics
   in "quotes".
44.Added $initopic(filename,N/topic) identifier, returns [topic]
   name/Nth position in an ini/text file.
45.Can now specify multiple id numbers with one /did command, separated
   by commas, eg. /did -b test 2,12,14,16
46.Added Popup menu to DCC Options toolbar button.
47.Fixed /dde and $dde not freeing memory bug.
48.Added $dde -dN switch, where N is the number of seconds that $dde
   will wait for a reply.
49.Extended $strip(text,burc) where burc specifies the codes you want
   stripped from text.
50.Added $isid identifier, returns $true if an alias was called as an
   identifier, otherwise $false.
51.Added "ignore file types" option in DCC Options dialog which ignores
   any DCC Sends which match the specified filenames/types.
52.Right-clicking on a window titlebar now rolls-it-up, and unrolls it
   alternately.
53.Extended /loadbuf and /filter to work with custom dialog controls.

   /loadbuf -o [dialog id] <filename>
   /filter -io [dialog id] [dialog id] <matchtext>

   Where -i indicates that the input is a dialog and -o indicates
   the ouput is a dialog.
54.Fixed $ignore(address) bug.
55.Added $replacecs() and $removecs() for case-sensitive versions
   of these identifiers.
56.Added on PLAYEND event, triggers when a /play has finished playing
   all queued files.
57.Now allows you to specify up to 9999 for the max number of users
   in the list channels dialog.
58.Can now use $snick(#channel) without the N parameter to return the
   list of all selected nicks on #channel.
59.The channels list window popup menu now allows you to stop listing
   channels in mid-list when on DALnet servers.
60./unset <wildcard> now displays only the number of vars unset.
61./auser and /guser now allow you to specify information which is
   stored after the users level:address in the user list.

   /auser [-a] <levels> <nick|address> [info]
   /guser [-a] <levels> <nick> [type] [info]

   You can also use the /iuser command to set/remove info:

   /iuser <nick|address> [info]

   Also added new .info property to $ulist() to access this line.

62.Can now use /dialog command from inside a remote script event.
63.If you run mIRC while not connected, and the connect dialog pops
   up, if the local ip resolves to 127.0.0.1 mIRC will re-lookup the
   address once connected to the server.
64.Can now specify -1 for the [numbytes] parameter in /bwrite to
   write the whole of &binvar to the file.
65.Added new "Lock" section in Options dialog, allows you to lock
   mIRC, disable various features, etc.

   If you hold down the Control key when you minimize mIRC, it will
   ask you for the password when you try to restore the window.

   If you try to Control-minimize with no password set, it asks for
   a temporary password.

66.Added DLL support, allows you to send and receive info from a DLL
   designed to work with mIRC.

     /dll <name.dll> <procname> [data]
     $dll(name.dll, procname, data)

   These open the named DLL, call the procedure in the DLL, and send it
   the specified data.

   The procedure in the DLL being called must be of the form:

     int FAR PASCAL *procname(HWND mWnd, HWND aWnd, char far *data,
     char far *parms, BOOL show, BOOL nopause)

   mWnd is the handle to the main mIRC window.

   aWnd is the handle of the window in which the command is being
   issued, this might not be the currently active window if the
   command is being called by a remote script.

   data is the information that you wish to send to the DLL. On
   return, the DLL can fill this variable with the command it
   wants mIRC to perform if any.

   parms is filled by the DLL on return with parameters that it
   wants mIRC to use when performing the command that it returns
   in the data variable.

   The data and parms variables can each hold 900 chars maximum.

   show is FALSE if the . prefix was specified to make the command
   quiet, or TRUE otherwise.

   nopause is TRUE if mIRC is in a critical routine and the DLL must
   not do anything that pauses processing in mIRC, eg. the DLL should
   not pop up a dialog. Otherwise nopause is FALSE.

   The DLL can return an integer to indicate what it wants mIRC to do:

     0 means that mIRC should /halt processing

     1 means that mIRC should continue processing

     2 means that it has filled the data variable with a command which
       it wants mIRC to perform, and has filled parms with the parameters
       to use, if any, when performing the command.

     3 means that the DLL has filled the data variable with the result
       that $dll() as an identifier should return.

   The 32bit mIRC can only call 32bit DLLs, and the 16bit mIRC can only
   call 16bit DLLs.

67.Added event on RAWMODE, triggers when mode change is made on one or
   more users on a channel, you can use $1- to parse the raw mode change
   yourself.

   on 1:RAWMODE:#mirc:/echo $nick set $chan mode to $1-

   Also added $mode(N).op/deop/ban/unban/voice/devoice/help/dehelp
   which can be used in mode change events to list the nicks affected
   by the mode change.

   eg. $mode(0).op returns the number of opped nicks
       $mode(1).op lists first opped nick

   Added $modefirst and $modelast identifiers, return $true or $false
   depending on whether the event is the first or last to trigger.

68.Custom identifiers now pass parameters separated by commas correctly,
   ie. $test(a, b c, d) will result in $1 = a, $2 = b c, $3 = d

   Also added /tokenize <C> <text> command, this fills $1 $2... $N
   identifiers with tokens separated by character C in text, eg. if
   you used /tokenize 32 $1- in the above $test(a, b c, d) example,
   this would make $1 = a, $2 = b, $3 = c, $4 = d.
69.Fixed bug in $read returning $null for lines containing only one
   character.
70.Fixed /sockread -f bug when used with %vars.
71.Trailing menu separators are now removed from menus.
72.Changed /flash method, displays flash message longer, also added
   /flash -rN switch, repeats flash only N times.
73.Fixed bug relating to query windows desktop/mdi mode.
74.Fixed popup menu separator bug.
75.Extended $right()/$left(), you can now specify a negative value to
   return all but N characters.
76.Added /echo -l switch, applies the "highlight" settings in the
   options dialog to the line that's displayed.
77.Improved message highlight feature in options dialog, now allows
   individual highlight matches each with its own settings.

   For match words you can now specify a word, an identifier or
   variable, or wildcard text.

78.Fixed $snick() returning $null when N = 0 in some cases.
79.Increased custom dialog controls maximum from 250 to 500.
80.Added $did() .visible and .enabled properties, return $true or
   $false.
81.Added /dialog -v switch, makes dialog the active window.
82.Fixed error reporting bug for invalid dialog tables.
83.Added $menu identifier, returns menu name, eg.

   menu nicklist,channel {
     $iif($menu == nicklist,...):{}
     $iif($menu == channel,...):{}
   }

84.Extended $deltok(text,N,C), can now specify N1-N2 a range of
   tokens to delete.
85.Added /query -n switch to open query window minimized.
86.Word completion with Tab Key now works for:

   1) nickname in a query window, 2) nicknames in notify list
   when in status window, and 3) #channel names in your channels
   folder when in any window.

87.Hotlink now won't display hand over an address that contains !
   character.
88.Added $auto $ignore $protect identifiers, return $true or $false
   if /auto /ignore /protect is on or off.
89.Added $abook(nick,N) identifier, with properties, .nick .info
   .email .website .picture .noteN to return address book info.

   Allowed formats $abook(nick) $abook(N) $abook(nick,N) where
   nick can also be a wildcard.

90.Extended /filter command, format is now:

   /filter [-sgdfwxnprcteu] [n-n2] [C S] <infile> <outfile> <matchtext>

   -c = clear output window/file before writing results to it

   -t = sort output based on column C using character S as the
        columns separator, -e = descending, -u = numeric sort.

   Also, if the input and output are the same window/file, mIRC
   will process the request correctly.

91.Toggling desktop/mdi window now keeps editbox contents.
92.Added $disk(C) .type .free .label, you can test if a hard-disk
   exists or is accessible with $disk(C), returns $true/$false.
93.Fixed DCC Send freezing bug.
94.If the switchbar "sort tabs" switch is on, dcc sends/gets are
   sorted in the order in which they were started.
95.Added support for !channels for IRCnet. mIRC only enables this
   on IRC servers with >= 2.10 in server numeric 004.

   Note, important consequence: when mIRC is on IRCnet >= 2.10,
   it internally recognizes ! as a channel prefix. This may
   results in script/etc. problems where ! is used to identify
   a fileserver session.

96.Added support for IRCX %#channels, and for owner .nicks in
   channel nick listbox, as well as /mode +q. mIRC also does
   /listx on IRCX servers by default now and reads numerics
   811, 812, 816, and 817 for the channels list. mIRC recognizes
   IRCX servers by seeing a >= 5.5 in the server numeric 004.

   Note, important consequence: when mIRC is on IRCX >= 5.5,
   it internally recognizes % as a channel prefix.  Since % is
   used as a variable prefix in scripts/aliases/etc. in mIRC,
   this may result in script/etc. problems.

97.Now shows "you're not channel operator" server message in
   channel window.
98.Can now use $(vars/identifiers) in remote event match sections
   to evaluate any combination of vars/identifiers/text, eg.

   on 1:TEXT:$(*hello $me $+ *):?:echo hello back!

99.Added support for local variables by using the /var command:

   var %x = 1, %y, %z = $me

   Local variables can only be used in the alias in which they
   were created and are destroyed when the alias terminates.

100.You can no longer unset a variable by using /set with no
    value, you must use /unset.
101.Fixed /nick gpf bug when specifying very long nicknames.
102.Extended /bset command:

    /bset -t <&binvar> <bytepos> <asciivalue> [<asciivalue> ...]

    The -t switch indicates that it should treat the values as
    plain text and copy them directly into the &binvar.

    Also added N2 range parameter to $bvar(&binvar,N[-N2]), and
    a .text property which returns plain text up to the first
    zero character.

    Also added /breplace command:

    /breplace <&binvar> <oldvalue> <newvalue> [<oldvalue> ...]

103.Fixed $mask() ip address related bug.
104.Added option in General dialog, right-clicking mouse button on
    a line in a listbox can now auto-select it.
105.Added Merge button in logging dialog, merges log files based on
    the file date.
106.$notify(nick) now returns Nth position in the notify list.
107.Can now force a permanent scrollbar in a custom dialog listbox
    by using "vsbar" property.
108.Fixed /sound not being time-stamped, as well as a few other
    commands.
109.Fixed /write -d bug, was deleting empty lines.
110.When specifying the -swl switches in /write and $read, the text
    or number can be specified in the next parameter, doesn't need to
    be appended to the switch. eg. $read -l 5 filename, or
    /write -w *wildcard* filename text

19/02/99 - mIRC v5.51

Fixes/Additions:
1.Fixed /dcc send not centering dcc send dialog over active window.
2.Fixed /help bug.
3.Corrected on dialog description in help file, should have been
  on 1:dialog:etc.
4.Improved handling of channels/nicknames in hotlinks.
5.Fixed Menubar gpf bug. Now also handles the first menu item in the
  menubar definition more intelligently, ie. if it's meant to be a
  submenu, or the title of menubar.
6./titlebar now also updates tray icon tooltip.
7.Fixed icon highlight bug when switchbar is turned off and a window
  is iconified.
8.Fixed query window position/size saving bug.
9.Fixed /ison resource string bug.
10.Fixed .ignore menu item in query popup menu definition.
11.Fixed notify icon highliting too often.
12.Fixed fileserver string resources bug.
13.Fixed date log files bug in 32bit being turned on under win32s.
14.Fixed $isdir() and $isfile() bugs.
15.Fixed List channels dialog not centering over channels list window.
16.Fixed /amsg and /ame not being timestamped.
17.Watch support is now triggered by the WATCH= token in numeric 5,
   not specifically associated with DALnet servers. Also, mIRC will only
   request N WATCH nicks as indicated by WATCH=N, plus one extra nick to
   trigger the "Maximum size for WATCH-list is N entries" message from
   the server.
18.Fixed mIRC reseting the IRC server name after exiting the options
   dialog.
19.Fixed $? and other dialog identifiers not being performed when
   called from a /timer started in a remote event.
20.Pressing OK or ESCape in custom dialogs now clicks the Ok or Cancel
   buttons respectively if there are any.
21.Fixed mouse related bug that was eating up resources.
22.Added Hotlinks on/off option in Options dialog General section.
23.Fixed /did -b bug moving focus to next control.
24.Fixed $calc() bug.
25.Fixed Editor not remembering last popup that was being edited after
   quitting and then running mIRC.
26.Extended Trim log files feature to allow greater log file sizes.
27.Corrected description of $pos() in help file.
28.Fixed a bug in the flood control method, was sometimes ordering
   lines sent to a user in the wrong order.
29.DCC Chat window now allows you to perform commands after the dcc
   session ends.
30.Corrected on open event description in help file.
31.Sorting the servers list now places non-group servers at end of list.
32.Added $dialog() properties x,y,w,h,title,modal,table,ok,cancel,result.
33.Added /dialog -ax switches; -ma creates a dialog and uses the currently
   active window as the parent, and -x closes a dialog without triggering
   any events.
34.Fixed bug with Beeping/Flashing settings not being remember for dcc
   chat windows.
35.Fixed checkboxes with "push" style only triggering sclick event when
   they were checked. Now also trigger when unchecked.
36.Fixed bug related to not ignoring a user if you have a query window
   open with them and their address matches an ignore address.
37.Fixed /map not being displayed on non-DALnet servers, the numerics
   conflict with the new support of the DALnet WATCH list.
38.Fixed bug in /dialog tables, if the x y w h were separated by extra
   spaces they were being misread.
39.mIRC now shows the server text for numeric 375 (Start of MOTD) instead
   of using it's own internal text.
40.Fixed drag-drop filenames being made lower-case.
41.Fixed shift-key behaviour when minimizing mIRC to tray.
42.Added -3 and -4 values to $dialog(), -3 opens the dialog using the 
   current active mIRC window as the parent, and -4 opens the dialog using
   the current active mIRC dialog as the parent, if no dialog is open, it
   defaults to -3.
43.Fixed bug in $gmt, added $gmt(format) same as in $asctime().
44.Added /write -w<wildtext> switch which finds a line that contains the
   matching wildcard text. Also extended -sw switches so you can now specify
   multiple words enclosed in "" quotes.
45.Fixed bug in /write and $read -switch processing.
46.Fixed bug with Address Book not starting certain emailers properly.
47.Fixed mIRC creating a second query window if your script opened one
   itself during the on ^open event.
48.Fixed editbox buffer bug.
49.Fixed tree display bug in options dialog when using a large systen
   font.
50.Fixed /copy using mIRC as root dir when filename is prefixed with the
   \ root dir prefix.
51.Fixed "hide" style not applying to icons in a /dialog on creation.
52.Added /play -e switch, /echos out the text as it would be sent to the
   server.
53.DCC Chat editbox is no longer cleared when the connection is made.
54.Fixed not being able to enter Control-K etc. codes in Find dialog.
55.Fixed bug in /rmdir.
56.[removed]
57.Fixed bug in DCC Server.
58.Fixed loading popup changing the popup view.
59./did no longer triggers dialog events when a control is modified.
60.Can now use /did -co switches together for a checkbox.
61.$calc() now treats $null values as zero.
62.$?, $dialog(), and /dialog now warn you if you try to use them from
   inside an event. You should use /timer to initiate them, and they
   will appear after the event ends.

   Note: /dialog was causing problems when called from an event, there
   was no way to get around this unfortunately due to the current script
   parser design.

63.Added /did -nm, -n to enable and -m to disable an editbox.
64.$replace() and $remove() now accept $null values.
65.Fixed /dialog -n not removing topmost setting.
66.Fixed /window -ou not updating system menu.
67.Fixed /timer -e bug.
68.Updating an existing users info from the Whois tab in the Address
   Book dialog no longer clears the notes for that user.
69.If your notify list is turned off, mIRC no longer interferes with
   the display of /watch.
70./run now accepts quoted filenames to handle LFNs.
71./splay no longer displays error messages if the . prefix is used.
72.Added custom dialog style 'size' for listboxes, forces the listbox
   to be sized to the vertical size you specify instead of being rounded
   to the nearest whole size for a listbox item.
73.Fixed /dialog -s sizing bug when used in dialog init event.
74.Can now use %variables in dialog table definitions for certain items:
   title, size, "text", id, and icon name and n index.
75.Fixed bug in processing of /whowas numeric reply resetting a users
   notify list status.
76.Fixed extraneous line highlight bug after a /sound in a dcc chat
   which is halted by an on chat event.
77.Fixed bug in "View Website" menu item in Channels list window popup
   menu turning URL to lowercase.
78.Fixed bug with Notify list sounds not being played if "only show
   notifies in notify window" switch was turned on.
79.If /whois is turned on for a user in the notify list, and show
   notifies in active window is on, the /whois will now also appear
   in the active window.
80.Fixed bug in timing of /timer hh:mm timer request.
81.Improved IP address checking routine to prevent it from matching
   a wildcard IP address with a named address.
82.Fixed /msg -s =nick bug.
83.Fixed bug in $ulist(*) wasn't returning all addresses.
84.Can now specify an "icon" in a dialog table without a filename, to
   allow you to set it later.
85.Added Timestamp Logs switch to logging options dialog, allows you to
   turn on time-stamping just for log files.
86.Fixed bug with . prefix in a menu definition, was confusing the
   popup menu parser in some situations.
87.Fixed /whois not being issued for users in notify list after the
   first notification.
88.Fixed email catcher bug.
89.Numeric 404 "can't send to channel" is now displayed in the channel
   window if it is open.
90.Can now use /window on =chat windows, and other windows by enclosing
   the window name in "quotes".
91.Added /window -gN switch to set/remove hilight for a window icon,
   where 0 = none, 1 = red, 2 = green.

08/01/99 - mIRC v5.5

Fixes/Additions:
1.Fixed /drawtext clipping bug.
2.Fixed Socks firewall support of DCC Sends/Chats.
3.Fixed $pos() bug.
4.Fixed /savebuf with no parameters gpf bug.
5.Fixed bug in $findfile(), $finddir(), /copy command, and the files list
  in the Logging tab of the Options dialog, for 32bit under win32s.
6.Added -t switch to $read, prevents mIRC from checking if the first line
  is a number, it treats it as plain text.
7.Fixed $mask() types 11 to 19 not removing ~ prefix from userid.
8.Revamped Options dialog, now uses treelist, provides more space to add
  new features clearly and cleanly.
9.Fixed on OPEN/CLOSE event processing bug.
10.Fixed on ACTION not triggering if query window wasn't already open.
11.Fixed font display bug which seemed to affect some systems.
12.Fixed /dcc fserve with no parameters gpfing.
13.Changed Nth returned value in $nvnick()/$nhnick()/$nopnick() when you
   specify a nickname.
14.$nopnick() now returns all nicks that aren't ops, $nhnick() returns all
   nicks that aren't helpers/voiced (excluding nicks that are ops), and
   $nvnick() returns all nicks that aren't voiced (excluding nicks that are
   ops or helpers).
15.Added $& identifier, allows you to break up a single line into multiple
   lines which are combined when the script is performed, so you can edit
   long commands more easily.:

   test {
     echo You can now split up long commands $&
     into several lines to make them easier to $&
     edit
   }

16.Your own messages and notices are now time-stamped if you have time-
   stamping turned on in a window.
17.Fix bug in $findfile()/$finddir() identifiers, file handles weren't
   being freed in some situations in the 32bit mIRC.
18.Added Nick List menu item to Channel Window System menu, allows you to
   position nick list to the right or left, or to turn it off.
19.The file dialog used for selecting pictures now displays a preview of
   the selected picture.
20.URL catcher now also catches https:// addresses.
21.Added extra memory checks in $+ and other areas of script processing to
   warn when concatenated strings are too long.
22.You can now double-click directly on URLs in windows to open a web browser.

   You can also hold down the shift-key and double-click on email addresses
   to open your email program. The shift-key is required because of the
   huge number of addresses on IRC which look like emails but aren't.

   If you're in a channel window and you move the mouse over text that is a
   nickname on that channel, you can double-click on it for the usual double-
   click behaviour, or right-click on it to open the nickname list popup menu.
   If you single-click on the nickname, the cursor in the listbox is scrolled
   to that nickname.

   You can also double-click on a channel name to join it.

   If you move the mouse over text that is a nickname in your Notify list,
   right-clicking will pop up the notify popup menu.

23./ddeserver and /sound are now quiet when . prefixed.
24.Added "Sort" item to Channels List window popup menu, allows you to sort
   by channel name, number of users, or channel topics.
25.Using a faster sort routine for sorting the IRC servers list.
26.Made small changes to appearance/processing of Chat/Fserve windows.
27.DDE can now be turned off, and will also remember to turn on again if it
   failed to initiate previously.
28.Fixed /writeini bug locking file after showing "file too large" warning.
29.Implemented new indexing method for scripts.
30.Added $mircexe identifier, returns full path/name of mIRC exe file.
31.Fixed /window -c closing gpf bug, related to mouse events processing.
32.mIRC now recreates the download/logs/sounds directories if your ini file
   contains invalid directory names for them.
33.Changed the file/dir existence checking method, it was previously treating
   non-accessible files ie. no read/write/etc. allowed, as non-existent.
34.Control-F dialog in status/channel/etc. windows now allows you to enter
   up to 90 characters as search text.
35.Fixed script.ini renaming bug.
36.Added $network identifier, mIRC gets the name of the IRC network you are
   on from numeric 001, ie. "Welcome to the N Internet Relay Network", where
   N is the name of the network. If it can't find a network name (some IRC
   networks don't have this info), it uses the Group name of the server if
   it's in your IRC Servers list.

   The network name is used to select the correct filename in the List
   Channels dialog, eg. if you connect to a DALnet server, mIRC will now
   auto-select the channels list file called dalnet.txt.
37.Fixed /*line related gpf bug with invalid colour value.
38.Fixed .ial flag, is now reset when you turn IAL on/off.
39.Single/multi-line editbox now beeps if you enter a line that may be too
   long to be processed by the server.
40.Optimized switchbar dragging routine.
41.Fixed bug in /log command.
42.If you have a /query window open with someone, private messages from them
   won't be ignored even if their address matches an ignore address.
43.Now processes numeric 437 which is sent on some IRC networks when you try
   to rejoin a channel after a split and it doesn't allow you.
44.Removed Topic in channel option, now default.
45.Main window background picture is no longer resized when the MDI window
   scrollbars appear/disappear.
46.Added "Save as..." menu item to Custom Picture windows System menu, and
   the /drawsave <@window> <filename> command, which allow you to save the
   picture in a @window to a BMP file.
47.Fixed horizontal scrollbar width in custom windows which use a tabbed
   listbox.
48.Added /window -E switch, creates a custom window with a multi-line editbox.
49.Added Show Ctcps in active window switch.
50.Fixed bug relating to file dialogs, may have been causing mIRC to freeze
   in some situations.
51.Numeric 477 is now handled differently based on the IRC network you are
   connected to since it's used for conflicting purposes on different IRC
   networks.
52.Fixed custom window bug where it would trigger menu {} and mouse events
   even if the popup menu name wasn't specified.
53.Fixed bug in handling of :goto jump points in some situations.
54.When the switchbar is turned on, the Alt-N key combination now refers to
   the Nth window in the switchbar, any windows not shown in the switchbar
   are placed at the end of the Alt-N list.
55.Improved /timers to more precisely measure elapsed time. Also added
   /timer -c switch, makes mIRC "catch up" a timer by executing it more than
   once during one interval if the real-time interval isn't matching your
   requested interval. This happens often because timer messages can be
   delayed by a few milli-seconds each time they are triggered due to the
   OS being busy, and the number of milliseconds lost accumulates over time.
56.Added preview button in file dialogs for playing .wav files.
57.Fixed bug in $ulist().
58.Changed behaviour of event "on chat/serve" with and without the ^ prefix
   to allow you to /halt the default behaviours of an fserve.
59.Fixed /log command not working with DCC Chat/Serv windows.
60.Added "lbclick" menu {} listbox event, triggers when a user clicks on an
   item, or selects an item using the cursor keys, in a @window listbox.

   menu {
     lbclick: echo 4 selection: $active $1
   }

61.Added -b switch to /sockwrite, allows you to specify the number of
   bytes to send.

   /sockwrite [-tnb] <name> [numbytes] <text|%var|&binvar>

   Added -n switch to /sockread, allows you to read a CRLF terminated
   line into a &binvar. If the incoming line does not contain a CRLF,
   no bytes will be read into &binvar, unless you specify the -f switch,
   which forces the read (same as when reading into %vars).

   /sockread [-fn] [numbytes] <%var|&binvar>

62.Added on notify/unotify to the haltable ^ events list.
63./write now doesn't append an LF character to the end of your line if
   it already ends in an LF character.
64.Fixed filename checking routine, was treating too many characters as
   invalid and replacing them with an underscore character.
65.Fixed freeze bug in bracketed identifiers containing certain $+
   combinations.
66.Added support for DALnet WATCH list. mIRC now uses this for its notify
   feature when on DALnet servers >= 4.6.3 since it's far more efficient.
   All mIRC does is submit a list of nicknames to the server, and the server
   then notifies mIRC whenever a user comes on or off the network.

   If you specify a full address (or wildcard address) eg. nick!id@host as
   a notify nickname, mIRC will match the address against the reply from
   the WATCH notifications. You can also specify a wildcard address.

   Also added Dalnet specific options in Notify dialog, only appear when
   connected to a DALnet server.

   On non-DALnet servers, mIRC still uses the old notify method which sends
   an ISON with your entire notify list every 40 seconds or so to get an
   update. This method ignores the address portion of your notify nickname
   if you specified one.

67.mIRC now converts ANSI colour codes in private and channel messages to
   mIRC color codes. Also added $ansi2mirc(text).
68.Fixed bug in $read -w switch, wasn't stripping off ending CRLF at end of
   line before doing match.

   Extended $read -w and -s switches so you can now specify multiple words
   enclosed in quotes.
   
   //echo $read -nw"*t public &" versions.txt

69.Added on ACTION and on OPEN to ^ events. on ACTION now behaves exactly
   the same way as on TEXT, including the way it triggers the on OPEN event
   if a Query window isn't already open.

   on ^OPEN is now triggered before a new Query window is created, allowing
   you to /halt it, and on OPEN (as a non ^ event) is triggered right after
   the window is opened. If you /halt on ^OPEN no on ACTION/TEXT events are
   triggered.
70.Fixed bug with switchbar dragging.
71.Extended $findfile() and $finddir() to accept a @window/command. The
   command is performed on every item that matches your request.

   You can also specify a search depth which limits the search to N
   directories deep.

   $findfile(dir, wildcard, N [, depth, @window | command])
   $finddir(dir, wildcard, N [, depth, @window | command])

   Both are optional. The old format is still handled.

72.IRC Server popup menu via the right-click on setup toolbar button now
   lists the top 12 IRC servers, and the top 4 IRC networks.
73.Fixed $nopath()/$nofile() changing filename to lower case.
74.Fixed bug with help file not found dialog popping up at odd times.
75.Currently selected Address Book tab is now remember across sessions,
   when opening and the Notify tab is selected, the Notify listbox gets
   the focus.
76.Moved MDI Options Dialog into New options dialog.
77.Added /writeini -n switch, makes mIRC write to the ini file even if
   it's greater than 64k since some users seem able to create ini files
   of several megabytes.
78.If several users in your notify list have the same associated sound file,
   and the notify list sees them at the same time, mIRC only plays the sound
   once instead of repeating it for each user.
79.If mIRC sees the word "throttled" in the Closing Link disconnect message,
   it waits 10 seconds before trying to connect to the same server again.
80.Added /window +elL switches, +e gives the window a 3D edge under win95,
   and +l makes the window a tool window which has a thin titlebar, +L
   does the same except the window doesn't appear in the taskbar and it
   can't be accessed via the Alt-Tab keys.
81.Added $rnick(#,N) identifier, returns regular (non-op/help/voice) nicks
   on a channel, and isreg if comparison.
82.Long Ctcp messages now wrap correctly in status window.
83.Added /tray -iN <filename> command, changes the mIRC Tray icon to the
   Nth icon in the specified file (which might be an .exe, .dll, or .ico).
84.Disconnect messages are now time-stamped.
85.Can now set/unset the default picture for channel/query/chat/fserve
   windows via the background popup menu. Also added /background -e switch
   to set a picture as the default.
86.Fixed notify sounds not being played in some situations.
87.If you double-click on the mIRC tray Icon and mIRC is the active window,
   it is now minimized.
88.The perform section is now performed before channels are auto-rejoined
   after a disconnect.
89.Added "leave" menu {} listbox event, triggers when the mouse is moved
   outside a picture @window.

   menu {
     leave: echo 4 mouse left $leftwin
   }

90.Added /dns -h switch, makes it treat parameter as a hostname.
91.Fixed timers not seeing local alias -l aliases if a script is /reloaded.
92.Actions now also show if the action was directed at @+% users.
93.Can now specify -1 for /window x,y,w,h parameters to make mIRC use
   default or existing values.
94.Fixed bug in /whois colour not being set properly.
95.Fixed bug with +modeless channel handling, mIRC was assuming that you
   could /msg @+%#channel to send a message to Op/Voice/Help users, but
   only /msg @#channel to send a message to Ops is supported (which is a
   good thing since the /msg +#channel would look the same as a normal
   message on a +modeless channel)
96.Positions of individual query/chat windows can now be saved.
97.Can now use wildcards in /timer -e switch to execute all timers which
   match the wildcard timer name.
98.Can now Control-F in URL dialog.
99.Added /window +d switch, creates a custom window with no border.
100.Can now save the main window position and make the main mIRC window
    stay on top of other windows via the main mIRC system menu.
101.Added $matchkey identifier, returns wildcard matchtext that was
    used in the matching remote event.
102.Fixed bug in display of Editor dialog on being opened.
103.Added /firewall command to allow changing of firewall settings.

    /firewall [-mN[+|-]d] [on|off] <server> <port> <userid> <password>

    -mN where N is 4 or 5 for Socks4 or Socks5 firewall
    +|-d where +d turns on dccs through firewall, -d turns it off

104.Extended $window() to allow wildcard match, $window(@wildcard,N)
105.Address book now deletes picture associated with a nickname when
    you delete the nickname.
106.Added Date filenames option to Log files dialog, only appears in
    32bit under win95.
107.Added switches to /server to allow modification of servers.ini:

    /server -sar [server] [-p port] [-g group] [-w password] [-d description]

    -s sorts the servers list
    -a adds a server. If it exists, it is udpdated
    -r removes a server

    mIRC tries to find a match for either the server address or the
    description in the existing servers list. You can also specify "none"
    for -g -w and -d to clear the current setting.
108.Fixed /join -n switch not working if you specified several channels
    separated by commas.
109.Fixed $matchtok() making all text lower case.
110.Fixed bug in Find Text dialog in Editor dialog.
111.Added /window -k switch which removes the @ at sign from the name in
    the titlebar.
112.Fixed a gpf buf in /sockwrite relating to queuing of data.
113.Added UDP datagram support to sockets scripting. UDP is a connection-
    less protocol, ie. you can send information via UDP to other UDP
    addresses without needing to be connected to them first.

    UDP does NOT guarantee that any information you send will actually
    reach its destination. This is the way UDP works, it is not a
    reliable protocol. Also, UDP packets may not arrive in the same order
    as that in which they were sent.

    /sockudp [-bntk] <name> [port] [<ipaddress> <port> [numbytes] [data]]

    -bnt are the same as in /sockwrite.

    -k forces the socket to stay open, this allows it to listen for data
    that is sent to its port via UDP. If -k is not specified, the socket
    is opened, the information is sent to the specified ipaddress and
    port, and the socket is then closed.

    If you specify a socket <name> that doesn't exist, it is created. If
    it does exist, the existing socket is used to send the info.

    You can also specify the local port number that you wish to use, if
    it isn't specified, mIRC chooses one randomly.

     Note: If you specify a socket name and a port, and the socket name
     exists but is using a different port, mIRC will report an error since
     it assumes you want a socket with that specific port.

    <ipaddress> and <port> specify the destination address to which you
    want to send information. You can only use an IP address here.

    <data> is the information you want to send.

    The on UDPREAD event and the /sockread command can be used to read
    incoming info on a UDP socket.

    Also added $sock() .type property, returns UDP or TCP, and .saddr and
    .sport properties, return source address and port of last received UDP
    packet.

114.Added $isfile(filename) and $isdir(dirname) identifiers, return $true
    or $false.
115.Added /ajinvite [on | off] to turn auto-join on invite on or off.
116.Added $istok(text,token,C) returns $true or $false if token exists
    in text, and $numtok(text,C) returns number of tokens in text.
117.Added /colour <name> <index> which allows you to change the colour
    settings for items in the Colours dialog.
118.Added /mdi -act to arrange icons, and cascade/tile windows.
119.Added on KEYDOWN/KEYUP events, and $keyval and $keyrpt identifers.

    on 1:KEYDOWN:@window:key,...:echo pressed key $keyval $keyrpt
    on 1:KEYUP:@window:key,...:echo released key $keyval

    Where @window is the custom window name, and key is a numeric key
    value, eg. spacebar = 32. You can specify a list of key values
    separated by commas, eg. for the cursor keys:

    on 1:KEYDOWN:@:37,48,39,40:echo pressed cursor key $keyval

    Note: these events will only work in custom @windows without an
    editbox and a listbox.

120.Can now load /background pictures for custom @windows.
121.Can now manipulate position/size of channel, private, etc. windows
    using the /window command.
122.Added /window -w switch which turns a @windows switchbar button on
    if it was previously turned off.
123.Added format specification to $asctime() $time() and $date().

    Year       yy      98
               yyyy    1998
    Month      m       1
               mm      01
               mmm     Jan
               mmmm    January
    Day        d       1
               dd      01
               ddd     Mon
               dddd    Monday
    Hours      h       5
               hh      05
               H       13
               HH      13
    Minutes    n       1
               nn      01
    Seconds    s       1
               ss      01
    AM/PM      t       a/p
               tt      am/pm
    Ordinal    oo      Add ordinal 1st,2nd,3rd,Nth if
                       appended to a number
    Timezone   z       +0
               zz      +0000

    $asctime(ctime,format)
    $time(ctime,format)
    $date(ctime,format)

    If only the format is specified, the current time is used.

124.Fixed freeze bug in $rand().
125.Added popup menus for channels folder, finger, chat, and notify
    toolbar buttons.
126.Fixed bug in * userlevel prefix in script events for matching any
    level user, was matching even if a user level matched another event.
127.mIRC will now only ask you once if you want to create a new sounds
    or logs folder.
128.Added $window().fontbold property, returns $true or $false.
129.Added Hide minimized desktop windows option to Windows dialog,
    removes a window's button from the taskbar when you minimize it,
    unless you're holding down the shift key at the time.
130.Added $gmt and $asctime without brackets.
131.Added -r"root directory" command line switch when running EXE,
    allows you to set the root mIRC directory.
132.Increased time-out for firewall connections from 60 seconds to
    180 seconds.
133.Moved all text to resources area.
134.Added $file(filename).size,.mtime identifier, .mtime returns a
    $ctime value indicating when the file was last modified.

    Note: $lof() is supported for now but will be removed in future.

135./timer command now knows when it is initated from inside a remote
    script event.
136.Fixed bug in tabbed dialogs, some controls weren't appearing in
    some situations.
137./filter no longer allows you to specify the same window for in & out.
138.Added Trim log files option which keeps log files below the max Kbytes
    limit that you specify. The log file is only trimmed when a window is
    opened. If it's greater than the max size allowed, it is  trimmed to
    60% of the max size allowed.
139.Fixed gpf/freeze bugs relating to [] brackets.
140./set -u0 now unsets a variable at the end of a script.
141.Added /copy -a switch to append to a file.
142./sockmark now allows storage up to the max. length of chars that mIRC
    usually handles for other lines.
143.Added -r switch to /filter, specifies the range of lines which you want
    to filter, /filter [-sgdfwxnpr] [n-n2] <infile> <outfile> <matchtext>

    Also add -lL switches, -l filters from the side-listbox in the first
    window, -L filters to the side-listbox in the second window.

144.Added custom dialog creation commands and identifiers.

    The /dialog command allows you to create a modeless dialog:

    /dialog -mdtsonkc name [table] [x y w h] [text]

    -m   = create a modeless dialog using 'table'
    -d   = open dialog on desktop
    -t   = set dialog title
    -s   = set dialog size/pos
    -o   = set dialog ontop of all windows
    -n   = unset ontop setting
    -k   = click ok button
    -c   = click cancel button

    You can create a dialog with the /dialog command by using:

      /dialog -m name table

    Where name is the name by which you will refer to the dialog,
    and table is the dialog table name. Dialogs created with the
    /dialog command are modeless, ie. they do not return a value
    and do not halt a script, and allow access to other mIRC
    windows at the same time. They can be kept open indefinitely.

    The $dialog() identifer allows you to create a modal dialog:

    %result = $dialog(name,table[,parent])

    name    = dialog name
    table   = name of the dialog table
    parent  = window name, or
              -1 Desktop window
              -2 Main mIRC window

    Dialogs created with $dialog() are modal, ie. they return a
    value, and halt the script and don't allow access to the parent
    window until the dialog is closed. These types of dialogs
    should only be displayed for immediate user input.

    You can also use the $dialog(name/N) identifier to list any
    open dialogs, where N returns the Nth open dialog. If N is zero,
    the total number of open dialogs is returned.

    You can use the dialog prefix to create a dialog table in
    a script using this format:

    dialog name {
      title   "text"
      size    x y w h

      text    "text", id, x y w h, style  (right, center)
      edit    "text", id, x y w h, style  (right, center, multi, pass, read, 
						return, hsbar, vsbar, autohs, autovs)
      button  "text", id, x y w h, style  (default, ok, cancel)
      check   "text", id, x y w h, style  (left, push, 3state)
      radio   "text", id, x y w h, style  (left, push)
      box     "text", id, x y w h, style

      list    id, x y w h, style          (sort, extsel)
      combo   id, x y w h, style          (sort, edit, drop)

      icon    id, x y w h, filename, index
    }

    In addition to the styles shown in brackets for each type of
    control, you can also specify styles:

    disable  - to disable the control
    hide     - to hide the control
    group    - to identify the start of a group
    result   - to identify the control whose value will be used as
               the return value to the calling script when the dialog
               is closed by pressing the ok button.

    If you specify -1 for any of the x y w h values in the size
    setting for the dialog, a default setting is used. To make
    mIRC center the dialog in a window, specify x y as -1 -1. The
    size setting can be over-ridden in the "init" event by using
    /dialog name x y w h.

    Note: You must specify an ok and/or cancel button. When a user
          clicks the ok or cancel buttons, the dialog is closed. You
          can prevent the dialog from closing if a user clicks the
          ok button by using /halt.

    Clicking certain controls in the dialog triggers the on dialog
    script event:

    on dialog:name:event:id: {
      echo $dname $devent $did
    }

    Where name is the dialog name, id is the number of the control
    triggering the event, and event can be:

    init    = when dialog is about to be displayed, controls can be
              initialized in this event. id is zero.
    edit    = text in editbox changed
              text in editbox of combobox changed
    sclick  = single click in list/combo box
              check/uncheck of radio/check buttons
              click of a button
    dclick  = double click in list/combo box

    The /did command allows you to modify dialog controls by id
    number:

    /did -ftebvhcukradiog name id [n] [text | filename]

    -f   = set focus on id
    -t   = set id as default button

    -e   = enable id
    -b   = disable id
    -v   = make id visible
    -h   = hide id
    -c   = check checkbox/radiobutton list/combo line
    -u   = uncheck checkbox/radiobutton list/combo line
    -k   = works with -c and -u, keeps other listbox selections

    -r   = clear all text in id
    -a   = add line of text to end
    -d   = delete Nth line
    -i   = insert text at Nth line
    -o   = overwrite Nth line with text

    -g   = set a new icon/bmp to an icon control
           /dialog -g name id [n] filename

    Note: you can mark a 3state checkbox as indeterminate by using
          both -cu switches.

    You can refer to controls using the $did() dialog id identifier
    with the following formats and properties as appropriate to the
    control to which you are referring:

    $did(name,id)
    $did(name,id,N)

    Note: if used in a triggered event, "name" is optional.

    .text    = returns line or Nth line
               $did(id) is same as $did(id).text
    .len     = returns length of line or Nth line
    .lines   = returns number of lines
    .sel     = returns Line Number of Nth selected line
               if N is 0, returns number of selected lines
    .state   = returns 0 = off, 1 = on, and 2 = indeterminate
    .next    = returns id of next control in tab order
    .prev    = returns id of previous control in tab order

145.Added option in the Windows dialog to make the Editor dialog
    modeless ie. opens it as a Desktop window, allowing editing of
    scripts while chatting etc.
146.$cb() should now process LF and/or CR delimited lines properly.
147.Made change to /unload command so that it will match the filename
    you specify with a loaded filename even if you don't provide a full
    path specification.
148.Fixed $*nick(#,nick/N) returning N = 0 for non-existent nicknames,
    now returns $null.
149.If you load/unload alias/popup/script files while the Editor dialog
    is open, the Editor now updates its current view accordingly.

24/07/98 - mIRC v5.41

Fixes/Additions:
1.Fixed win32s under win3.x display bug in 32bit mIRC.
2.Fixed bug with private messages text-wrap when using ^ events.
3.Can now use %variables or $identifiers in the Perform Highlight words.
4.Can now do /dcc send nickname <wildcardfilename>.
5.Fixed $sdir bug.
6.Fixed bug in auto-arrange/cascade/tile options.
7.Fixed SOCKS firewall support bugs.
8.Channel Central dialog now allows mode +h users on TS4 efnet to change
  the channel settings.
9./remove now tells you if you specified a non-existent file but doesn't
  halt processing.
10.Changed Channel central dialog behaviour, no longer resets channel modes
   unless they've been changed.
11.Fixed bug in $calc() with very long strings.
12.Fixed bug in inactive DCC Chat windows, editbox allows you to copy text
   from it but entered text is not processed in any way.
13.$chan().ial now returns $true if the IAL is full, $false if it isn't, or
   $inwho if you sent a /who #channel to the server to fill the IAL and the
   IAL isn't full yet.
14.Improved winsock error checking.
15.Fixed bug in /goto command where it was incorrectly reporting a "not
   found" error instead of a "duplicate name" error in some situations where
   you had duplicate goto names in a script.
16.Fixed bug in the remote events in %variables in remote event definition
   not being processed correctly if it evaluated to just #.
17.Fixed /renwin bug allowing you to rename a @window to any name without
   the @ prefix.
18.Fixed $read bug when reading a line with only a space in it.
19.Fixed disappearing DCC windows bug.
20.Fixed bug with URL/Email catcher being turned off when using the Send
   To menu in the URL window popup menu.
21.Fixed bug with Status window not remembering Desktop/MDI position.
22.Fixed editbox/listbox focusing bug.
23.Fixed BURC code stripping in IRC Switches not applying to channel topics.
24.Using the . prefix to hide /play command information now also hides the
   /msg command information when sending to a user/channel.
25.Fixed @window listbox background colour bug not being reset when using
   colour control codes in text.
26.Fixed editbox processing bug in custom @windows.
27.Fixed /ignore -x exclusion bug.
28.Fixed bug in on OPEN event, was preventing on TEXT/ACTION events from
   triggering if on OPEN was /halted.
29.Can now specify whether you want DCCs to go through the Socks Firewall
   or not.
30.Fixed /renwin bug, was halting scripts.
31.Fixed bug when processing $? in combination with $+ in some situations.
32.$findfile() and $finddir() in 32bit mIRC now maintain case of filenames.
33.Fixed bug with wave playing not working with certain sound drivers. Note
   that simple sound drivers eg. speaker driver, are very limited and don't
   support mIRC's queuing of sounds feature, etc.
34.Fixed /cline when colour not specified, sets to default colour.
35.Fixed ctcp event not processing wildcard ctcps, eg.

   ctcp 1:*ping*:echo $1-

36.Fixed DCC Send CTCP request not working with IRC clients that add an extra
   ID number to the CTCP message, mIRC v5.4 also uses this extra ID to identify
   DCC Send requests through a SOCKS firewall. If mIRC sees an ID but can't
   match it internally, it assumes it's not valid and processes the CTCP as a
   normal DCC Send request.
37.Improved handling of long filenames in commands: /dcc send, /unload, /mkdir,
   /loadbuf, /savebuf, /filter, and /window.
38.Fixed bug in /font command.
39.Extended various commands/identifiers/etc. that reference listboxes so that
   they can now process any number of selected lines.
40.Can now /clear -n with a picture window, where -n delays update of the display
   until you force an update (same as with other picture window commands).
41.Fixed bug in $iif(), remote identifiers in it where not being evaluated.
42.Added $inpoly(x,y,x1,y1,...,xN,yN) identifier which returns $true if x,y is
   inside the polygon made up of the specified points, otherwise $false.
43.Changed DCC Server 150 and 151 replies, they now return "unavailable" and
   "rejected" instead of a nickname.
44.Added .dx and .dy properties to $window(), return the x and y position of
   a window relative to the desktop.
45.Changed $notify() so that it works with your whole notify list. Added
   .ison property, returns $true if user is on IRC, otherwise $false.
46.Fixed bug with status window receiving focus in certain situations.
47.Fixed bug in /write command when /writing to files that aren't on the same
   hard-disk as the mIRC exe file.
48.Fixed freezing bug in $dde, $read, and $readini when used within other
   identifiers in some situations.
49.The on DNS event is now triggered if you try to /dns a nickname that's not
   on IRC and the server replies with the "no such nickname" numeric.
50.Fixed bug in listbox windows eg. url/notify/channelslist/etc. when first
   opening, the background was first set to the main window background colour
   not the listbox colour, making the window flash.
51.Fixed bug in ip address having a space appended to it when looking up via
   the server method. Shouldn't have affected processing though.
52.Extended $mask() and all other mask-related commands/identifiers, so that
   you can now specify a type of 10 to 19 which correspond to masks 0 to 9,
   but instead of using a * wildcard to replace portions of an address, it
   uses ? wildcards to replace the numbers in the address.
53.Fixed bug in /window -h switch not setting window focus correctly.
54.Fixed /list command so that it works correctly with older DALnet ircds
   that don't support serverside filtering.
55.The value of $halted can now be checked in any event to see if a previous
   event /halted the default text. You can also prefix events with the new
   & prefix to prevent the event from triggering if $halted is true, eg.

   on &1:text:*:?:/echo this won't trigger if $halted is true

56.When mIRC joins a channel and issues a /mode to look up the channel modes,
   the channel creation time numeric is hidden if sent by the server.
57."Unable to connect to IRC server" message now also shows the actual winsock
   error message.
58./enable and /disable now accept wildcards.
59./loadbuf and /savebuf can now work with dcc =chat windows. Also added
   switches to /loadbuf:

   -cN specifies default text colour
   -e  evaluates lines
   -h  hides a line if -e is specified and it doesn't evaluate

60.Fixed /window -c closing gpf bug when using multiple /window opening
   and closing commands in the same script.
61.Added $isdde(name) identifier, returns $true if ddename is in use.
62./background can now change background in dcc =chat windows.
63.Fixed bug in remote * event prefix.
64.Timestamp now shows double digits for the hour.
65.Time related identifiers/routines now return $null if a time value is
   specified that lies outside the values mIRC can handle.
66.Fixed /.copy showing a line separator incorrectly.
67.Fixed bug in Editor dialog, if you loaded a new script and then closed
   the dialog, the on load event in the script would only trigger if you
   were in the Remote tab of the dialog.
68.Added -l switch to /ignore [-lpcnitkx] command, specifying the -l switch
   now displays a list of the ignores which match the specified switches.
69.Fixed bug in Socks firewall handling of a DCC Send to an IP address ie.
   to a users DCC Server.
70.Fixed /echo -a =chat bug.
71.Fixed switchbar display bug.
72.Fixed /drawtext -p switch background filling bug.
73.If the Channels folder dialog is open while connecting to a server,
   the Join/Names buttons are enabled on connection.
74.Fixed gpf bug in /cline when trying to use it on an empty window.
75.Extended $os identifier in the 32bit mIRC, it now replies differently
   depending on whether you're on 3.1, 3.1 win32s, 95, 98, and NT. The
   16bit is still limited to replying 3.1 or 95.
76.Added $ulist(address,level,N) identifier for referencing the Users list,
   (replaces $maddress() which is still supported for now).

   You can specify an address of * to match any address in the user list,
   or a wildcard address. If you don't specify a full address, it completes
   the address with wildcards.

   If you specify L, $ulist() will return matching addresses that contain
   the specified level.

   Note: L and N are optional, but if you specify only one number, mIRC
   assumes it is N, to maintain backward compatibility.
77.Changed $calc() evaluation method slightly, this may break existing
   scripts.
78.Fixed a few /finger and fingerserver related bugs.
79.Fixed /auto -r bug.

23/06/98 - mIRC v5.4

Fixes/Additions:
1.Fixed identd/finger/dcc server bug.
2.Fixed connect retry bug when server name can't be resolved.
3.Fixed bug with windows being displayed/hidden when switchbar
  is turned on/off.
4.Fixed /join -n bug when specifying a password.
5./load now only asks you once if you want to run the on start
  and on load sections when your script loads multiple files.
6.Added identd switch to turn identd on/off before/after connection.
7.Added identifier $isalias(name) returns $true/$false.
8./dns now returns a reply for each /dns that is issued even if you
  specified multiple identical addresses.
9.In addition to specifying -1 in $window() to refer to the desktop
  screen size, you can now also specify -2 for the main mIRC window,
  and -3 for internal MDI window where other windows are displayed.
10.Fixed focusing bug when clicking in a window.
11.Added /reload command, reloads the specified script without
   triggering the on start/load events.
12.Added $finddir(root,wildcard,N) works the same as $findfile()
   except it returns directory names.
13.Added Options section to Address Book.
14.Fixed Help menu bug when more than 30 items where listed in
   the menu.
15.Added support for numeric 477, tells you if you can't join
   a channel if channel only allows registered nicks.
16.Added /renwin <@old> <@new> [topic] command, changes the name
   of a custom window.
17./sockopen now triggers "on sockopen" if a connection fails
   immediately, instead of just halting the script with a connection
   error message.
18.Fixed /editbox command when using lines with CR/LF characters.
19.Can now handle DALnet @+target notices.
20.Small change in DCC Send routine which may have been causing a
   freeze in certain situations.
21.Fixed bug in action messages, may have been preventing action
   messages from being displayed sometimes.
22.Can now open the Channels Folder and Channels List dialogs when
   not connected to a server to edit/view them offline.
23.$chan now works in the on input event.
24.Fixed bug in Alt-1,2,3,etc. that was causing a GPF in certain
   situations.
25.Fixed display gpf bug which occurred when a window was resized
   to a width smaller than an indented line.
26.Made a small change to the way DDE messages are sent, should
   now work with more applications.
27.Fixed bug in Filserver, wasn't displaying the list of dirs or
   files correctly in certain cases.
28.Added switch -S to /window command. The small -s now sorts the
   main window (whether text or listbox), the large -S now sorts
   a listbox on the side.
29.Fixed gpf bug when the custom menubar popup menu is empty and
   a new item is added to it.
30.The TAB nick completion now works in custom windows.
31.Fixed /join -i bug.
32.Your nicknames, local info, and current irc server are now all
   updated in mirc.ini whenever they change.
33./filter no longer creates a file if there were no matching
   items to output to the file. It also fills the $filtered identifier
   with the number of matches found, if any.
34.A users nick and address are now stored in the log file at the
   start of the logging session for a query window.
35.Now supports serverside filtering of channels list on DALnet
   servers. This is done automatically whenever you retrieve a
   channels list, same as with Undernet servers. DALnet servers
   also supports server-side wildcard filtering.
36.Fixed /editbox -n switch.
37.If you try to connect to a server which resolves to multiple
   IP addresses eg. a round robin server, mIRC will now try each IP
   address until it gets a connection.
38.Colour 99 is now treated as a transparent colour, ie. it will match
   a users current background colour. The main purpose of this is to
   allow you to use numbers after a ctrl-k without a problem, eg.
   /echo ctrl+k5,9954  This would display the number 54.
39.Added $readn identifier to return the line number that matched a
   search for $read -s<text>.

   Also added $read -w<wildtext> switch which finds a line that
   contains the matching text.

   If you specify the -s or -w switches, you can also specify the
   -lN switch to specify which line to start searching from in the
   file, eg.:

   //echo $read -l100 -w*mirc* versions.txt

   Note: this will start the search *after* line 100. This allows
   you to use it with $readn easily.

40.Added -e switch to /dde command, makes /dde send the request as
   an XTYP_EXECUTE dde message. This type of message does not require
   an item, so the format is:

   /dde -e service topic command

41.Fixed /rline bug.
42.Fixed bug relating to use of [ ] to evaluate items inside
   a bracketed identifier eg.

  //echo 1 $gettok( [ $readini -n mirc.ini mirc host ] ,1,58)

43.Fixed gpf bug when trying to resize a window that contains
   lines of text of which some are empty ie. contain no characters
   at all, was happening mainly when filling a custom window with
   lines from a text file eg. using /filter.

44.Added * as a new remote event prefix, matches the level of any
   user. This allows you to create events that will trigger for
   all users regardless of their access levels.

   on *:event:etc.
   ctcp *:event:etc.

45.Using new method to display icons in toolbar and switchbar, this
   should fix the disappearing toolbar problem some people have been
   experiencing.
46.Added .fname property to $group() identifier, to return filename,
   and the .name property to return the name of the group if you're
   looking up the Nth group.
47.Added /ban -r switch, this removes a ban of the specified type for
   nickname, eg. /ban -r nick 2
48.Url catcher now treats more characters as valid parts of a URL.
49.Fixed bug in $pos() identifier.
50.Added $ctime() identifier to compliment $ctime. You can specify
   the date and time in various formats in $ctime() to return the
   number of seconds elapsed since 00:00:00 GMT, January 1, 1970.

   //echo 1 $ctime(January 1 1970 00:00:00)
   //echo 1 $ctime(3rd August 1987 3:46pm)
   //echo 1 $ctime(21/4/72 1:30:37)
   //echo 1 $ctime(Wed 1998-3-27 21:16)

51.Modifed the way the inc/dec -uN switch works, added two new
   switches, -c and -z.

   -uN now only incs/decs the %var once and unsets it N seconds
   later.

   -c incs/decs %var once per second.

   -z decreases %var until it reaches zero and then unsets it.

   The -z switch also works with /set.

52.Fixed bug in /describe appearance in query windows.
53.Can now use $mouse outside of picture window events. Also added
   the following properties:

   .win     returns the windows name
   .mx/my   returns x,y position relative to mIRC main window
   .dx/dy   returns x,y position relative to desktop
54.Added .fname property to $isalias() identifier, which returns the
   filename inwhich the alias exists, and .alias property which returns
   the alias definition itself.
55.Added $ifmatch identifier, returns the first parameter of a matching if
   statement. eg. if (text isin some text) etc. then $ifmatch will return
   "text".
56.Added /showmirc -nrstx command, where:
     -n = minimize
     -r = restore
     -s = show
     -t = tray
     -x = maximize
57.Added -u switch to /window which removes the -ontop setting
   for a desktop window. Can also reset it again with -o.
58.If you specify a delay of 0 seconds in /timer, the command is now
   executed immediately after a script finishes.
59.Added $cb(N) identifier to return CRLF delimited lines from the
   clipboard. The property .len returns the length of the line, or
   if N is zero, it returns the total length of text in the clipboard.
60.Extended $timer() to handle both N and a Timer name as a parameter.
   Also now returns $null correctly if it can't find a match.
61.Extended $nick/opnick/nopnick/vnick/nvnick() to handle both N and
   a nickname. If a nickname is specified it returns the nicknames Nth
   position in the nicklist.
62.Fixed Window/Icon Flashing bug, wasn't triggering in certain situations.
63.Fixed gpf bug in fileserver time-out event.
64.Fixed /window sizing bug when first opening a very small window.
65.Added .ial property to $chan(), returns $true if the IAL contains the
   addresses of all users on the specified channel, otherwise $false.
66.The TAB key nick completion now works as an identifier/variable evaluator
   when placed over items that begin with $ or % or # (evaluates to current
   channel name).
67.Notify now displays on/off messages in more situations.
68.Can now specify N = 0 in $findtok() to return number of matching tokens.
69.Added $matchtok(Tokens,String,N,C) identifier, checks if any of the Tokens
   contain the text String. eg.

   $matchtok(one two three, e, 0, 32) returns 2
   $matchtok(one two three, e, 2, 32) returns three

   And $wildtok(Tokens,WildString,N,C) which does the same thing using
   wildcards:

   $wildtok(one two three, t*e, 0, 32) returns 1
   $wildtok(one two three, t*e, 1, 32) returns three

70.Added Remove menu item to notify list popup menu.
71.Made a change to /log command to make it handle the file .ext extension
   better with LFNs.
72.Moved notify section from Options dialog to Address Book. Also added
   Notify? and Address? buttons to connect Address and Notify sections.
73.You can now retrieve your basic System colours with $rgb() by specifying:
   face, shadow, hilight, frame, and text, which return the RGB value.
74.Pressing TAB key in an editbox no longer clears the editbox if it
   contains text. The editbox needs to be empty in order for TAB to fill
   in the "/msg nickname" text.
75.DCC Chat window editbox is no longer disabled on a disconnection.
76.Can now click on a number in the Colour index dialog to insert the number
   into the editbox.
77.Fixed $dde gpf if data being received is too long, now returns $error in
   this case.
78.Extended $replace() to handle multiple replace parameters, eg.

   $replace(String,n1,n2,m1,m2,...,t1,t2)

   And $remove() to handle multiple remove parameters, eg.

   $remove(String,n1,n2,n3,...)

79.Replaced channel window switching keyboard command from Control-Space
   to Control-N due to conflict with other applications.
80.Fixed minimized icons appearing in certain sitautions when switching
   windows via switchbar.
81.Speeded up text display slightly.
82.Added $hash(S,B) where S is a string, and B is the number of bits to
   use when calculating the hash number.
83.Can now specify a non-existent file in $file/dir/hfile/sdir dialogs.
84.Added /whois in active window switch. Displays whois results in the
   channel, query/chat, and custom windows if it is turned on and a /whois
   is issued inside one of these windows.

   Also added Whois text colour selection to Colours dialog.

85.Added -g switch to /clear and /filter to refer to finger window.
86.Added Background Picture option to System menu for Status, Channel, and
   Query/Chat windows. Allows you to select a background picture for the
   window, note that this significantly decreases the display speed of
   text in a window.

   Also added picture option to the mIRC background window, right-click
   on it to pop up a menu with options.

   Can also select a background picture for the toolbar, toolbar buttons,
   and switchbar, right-click to pop up a menu.

   You can use the following command to change the background picture
   settings and display method for windows:

   /background [-amsgdluhcfnrtpx] [window] [filename]

   -a = active window (window name not required)
   -m = main mIRC window
   -s = status window
   -g = finger window
   -d = dedicated query window

   -cfnrtp = center, fill, normal, stretch, tile, photo

   -l = toolbar
   -u = toolbar buttons
   -h = switchbar

   Toolbar buttons can use RGB Colour 192,192,192 for transparency, the
   BMP must be of the same form as that in mIRC resources.

   -x = no background picture

   Window name should only be specified if none of the window switches
   are specified. The filename does not need to be specified if you are
   only changing the display method.

87.Added $iif(C,T,F) where C is a conditional clause, and T is the result
   if the conditional is True, and F is the result if it's false, eg:

   echo $iif(1 == 2, yes, no)  returns "no"

   $iif returns F if the conditional returns zero, $false, or $null, for
   any other value $iif returns T.

   If you don't specify the F parameter, $iif returns a T value if the
   condition is true, and returns nothing if it's false.

   echo $iif(1 == 2, yes)  returns nothing

88.mIRC can now display longer channel topics in channels.
89.Added -p switch to /editbox, appends a space to the end of the text.
90.Added -t switch to /echo, prefixes line with a timestamp if a user has
   global time stamping on or timestamping is on for that window.
91.Integrated the notify settings into the Address book dialog.
92.You can now open a query window with the /query command while offline.
93.Fixed $duration() to handle floating point numbers.
94.Titlebars in windows now aren't updated if the new text is identical.
95.Made line sorting in text @windows case-insensitive.
96.Added -o switch to /copy command, overwrites file if it exists.
97.Can now use ! (not prefix) with & bitwise operator.
98.Added uclick event to mouse detection events.

   menu @test {
     uclick:echo Released mouse button
   }

99.The switchbar button for a query window is now updated when there is
   a nick change.
100.Added -h switch to /clear command, clears the command history for
    a window.
101.Switchbar can now also be displayed on the left and right sides of the
    mIRC window, you can drag it with the mouse to reposition it.
102.Fixed $server().port including password at end of ports.
103.Fixed problems with sounds not being heard when your system is set up
    to use the internal speaker driver for sound playback, note however
    that this means that events such as on waveend/midiend do not work
    now since the speaker driver doesn't support them.
104.Added /saveini command, updates all mIRC related ini files with the
    current info.
105.Added /ignore -x (exclude) switch. Basically this allows you to ignore
    messages from all people except your friends. For example:

    a!b@c.org,exclude   this excludes this address from being ignored
    *!*@*               this ignores all other addresses

106.Fixed bug in on chat/fserve events not filling $1 correctly.
107.Fixed bug with certain /if operators treating a $null value as plain
    text eg. if (n isin $null) would evaluate to true.
108.Fixed bug with $calc() not processing identifiers with properties.
109.Fixed on close event not triggering for fileservers.
110.Added Command option to DCC Get Directories dialog, allows a command
    to be performed when a file is received. The command will be performed
    if no application has been selected and the filename can be referred
    to in the command as identifier $1-.
111.Fixed /write not adding an extra LF to the last line in a file if it
    needs one before appending a new line to the end of the file.
112.Added Rejoin channels on connect switch to Options dialog, if turned on
    channel windows which are open are auto-rejoined when you reconnect to an
    IRC server.
113.Fixed custom sockets bug where last packet of a file being received was
    not received fully in some cases.
114.Added .font and .fontsize properties to $window().
115.Variables set to the value $null now evaluate to an empty string.
116.Control codes are now stripped from URLs/Emails caught by URL catcher.
117.Fixed bug in DNS resolving routine which may have caused certain
    problems in the situation where a DNS request failed immediately.
    Also fixed a bug where an invalid DNS reply may have caused a gpf.
118./dns -c now clears all queued DNS requests except the one currently
    in progress.
119.Added isincs for a case-sensitive version of isin comparison.
120.Added $fline(@,wildtext,N,T) searches a window for a line matching
    the wildcard text and returns the matching line number. If T is not
    zero, it acts on the side-listbox.
121.The on MODE event now triggers when you make a mode change. You can
    prevent it from triggering on your own mode change using the ! event
    prefix as usual.
122.Fixed /echo bug, can now specify switches with a dcc chat =nickname.
123.You can now prevent the default text for an event from being shown
    by using the ^ prefix in an event definition. This allows you to
    show your own custom event messages, eg.

    on ^1:JOIN:#:echo $chan Joins: $nick | halt

    This line is triggered by a JOIN event and shows your own custom join
    event message, /halt prevents the normal message from being shown.

    The ^ events don't replace your existing events, your normal events
    are independent and are still processed whether there is a ^ event in
    a script or not.

    Events that currently support ^ prefix: BAN, CHAT, DEHELP, DEOP, DEVOICE,
    HELP, INVITE, JOIN, KICK, MODE, NICK, NOTICE, OP, PART, TEXT, UNBAN,
    USERMODE, VOICE, QUIT, SERV, SERVERMODE, SNOTICE, TOPIC, WALLOPS.

    You can also halt the default text without halting a script by using
    the /haltdef command.

    The $halted identifier returns $true if /halt or /haltdef was used in
    a ^ prefixed event, and $false if it wasn't.

124.Added $shortfn(filename), returns short version of a long filename,
    only works in 32bit mIRC. In 16bit, returns same filename.
125.Can now /resetidle <seconds>.
126.Fixed bug in display of DCC transfer window.
127.Fixed bug in timezone calculation routine.
128.Fixed bug in /ignore.
129.Fixed gpf bug in on load/start events.
130.The /ignore and /auto commands now reformat the given nickname/address
    to a full address spec. if it isn't one already.
131.Fixed bug when switching dedicated query window to/from desktop/mdi mode.
132.Removed minimum window size restrictions.
133.Local info is now looked up using the Server method by default.
134.Fixed bug where first item in a listbox was selected when the listbox
    window was first opened.
135.Fixed $target for DCC chat/fserve windows.
136.Added Socks5 firewall support for connecting to an IRC server. mIRC
    passes the domain name to the Socks5 firewall instead of trying to 
    resolve it to an IP itself. mIRC still supports Socks4 however this
    doesn't support authentication or domain name resolution or listening
    for a connection.

    mIRC also supports an EXPERIMENTAL method for DCC Send/Chat through a
    SOCKS5 firewall. This will NOT work with older versions of mIRC or
    other IRC clients.

    mIRC uses a PASSIVE protocol to establish DCC connections when a client
    is behind a SOCKS5 firewall. The method will work with SOCKS5 firewalls
    that both:

      a) Support listening/binding to a port of Zero for an incoming
         connection.
      b) Assign outgoing connections an IP address that's the same as
         the SOCKS firewall IP address.


    The DCC Send/Chat CTCP messages are extended by adding an extra number
    to the end of the message which uniquely identifies the negotiation,
    and a port of Zero is specified to indicate that this is a passive
    connection request. All other fields are identical to a standard DCC
    Send/Chat message.


    DCC Chat Passive Protocol:

    Client A, initiating the DCC Chat, sends the passive connection request
    below to Client B. The port is set to zero, and the id number is a unique
    integer identifying the connection:

    DCC CHAT nickname address port id

    If Client A is behind a firewall, the address is the ip address of its
    SOCKS firewall.

    Client B receives the message and sets up a listening socket, and sends
    the IP address and port back to Client A, specifying the id number that
    identifies Client A's request:

    DCC CHAT nickname address port id

    If Client B is behind a SOCKS5 firewall, it requests a listening socket
    from the SOCKS5 firewall and specifies Client A's IP address as the
    binding address.

    Client A then proceeds to connect to this address to chat. If Client A
    is behind a SOCKS firewall, it sends a connection request to it.


    DCC Send Passive Protocol:

    Client A, initiating the DCC Send, sends the passive connection request
    below to Client B. The port is set to zero, and the id number is a unique
    integer identifying the connection:

    DCC SEND filename address port filesize id

    If Client A is behind a firewall, the address is the ip address of its
    SOCKS firewall.

    Client B receives the message and sets up a listening socket, and sends
    the IP address and port back to Client A, specifying the id number that
    identifies Client A's request:

    DCC SEND filename address port filesize id

    If Client B is behind a SOCKS5 firewall, it requests a listening socket
    from the SOCKS5 firewall and specifies Client A's IP address as the
    binding address.

    Client A then proceeds to connect to this address to begin the transfer.
    If Client A is behind a SOCKS firewall, it sends a connection request
    to it.

    Nb. The DCC Resume and Accept protocols in mIRC are also extended by
    adding the id number to the end of the CTCP message, but otherwise work
    in exactly the same way.

137.Fixed on input bug with chat/fserve windows. Can specify = for matching
    chat events and ! prefix for fserve events, same as on open/close.
138.Fixed bugs in $calc() identifier.
139.Changed the way tooltips are displayed, there is now a small delay
    before a tooltip appears.
140.Fixed bug in /if handling of multiple parameters, eg.:

    if (a b c == a b c) echo yes | else echo no

    This will only work if your /if is specified using () brackets around
    parameters, or {} around the commands following the /if, so that the
    conditional clause is fully specified.

141.Added support for certain Efnet TS4 features.

    mIRC will now process TS4s new mode +h for helper users on a channel,
    for nicknames prefixed with a %.

    Also added new script events and identifiers:

    on 1:HELP/DEHELP:#:echo I just helped/dehelped $hnick

    $hnick() and $nhnick(), same as $opnick()/etc.

    Also added a new /if comparison "ishelp".

    Extended $comchan() properties to: .op, .voice, .help

142.Can now select the background more easily in the Colours dialog.
143.Can now specify a named address when initiating a DCC Send/Chat/Fserve
    in the /dcc command or in the DCC Send/Chat dialogs.
144.Changed kick/part events routines so that the nickname that is parting
    or being kicked is only removed from the channels nickname list and the
    IAL *after* scripts are processed, allowing you to access these users
    settings.

    You can use the /updatenl command to force the nicknames list and IAL
    to update immediately during an on kick/part/quit script event.
145.Can now force a /sockread to read incoming characters into a %variable
    even if the incoming line does not contain a CRLF.

    /sockread -f %var

146.Extended $? input identifier, the dialog will expand vertically to
    accomodate longer questions, and if you use $?* then text will appear
    as ***** to prevent anyone seeing what you're typing.

    If you use $?! then a Yes/No dialog will appear without an editbox,
    it will return $true or $false depending on whether the user clicks on
    Yes or No respectively.

    You can make text appear on different lines by using $crlf identifier
    to separate lines, eg.

    //echo $?="For example: $crlf $+ This is on the 2nd line."

147.I changed the version checking method slightly to recognize NT 5.0.
148.Fixed bug with $().property processing getting confused by %variables
    with . in their name.
149.Added $crlf identifer, returns CRLF characters.
150.Added $sreq and $creq identifiers, return current /sreq and /creq settings
    for DCC Get/Chat respectively (return ask, auto, or ignore).
151.Fixed /drawtext command and $width() identifier so they now work with the
    same measurements correctly.

    If no clipping area is specified in /drawtext, the command should only
    affect the area around the text, whereas before it was affecting most
    of the window.

152.Added $height(text,font,size) returns height of text in pixels for the
    specified font and fontsize.
153.Aded /timer -e switch which executes the specified timer name immediately
    if it exists.
154.Fixed /copy changing filenames to lower case. This only works in the
    32bit mIRC, the 16bit is still limited. The original case of the filenames
    is now retained.
155.When saving the buffer of a query window, the users nickname and address
    are placed at the top of the buffer, if they are available.
156.Fixed bug in Editor dialog where aliases were getting overwritten by the
    variables section in certain situations.
157.You can now save a channel window position as maximized/minimized.
158.Added $os identifier, returns operating system version 95 or 3.x.
159.Fixed /sline bug changing the colour of a listbox item when all you wanted
    to do was select/deselect the line without changing it's colour.
160./splay no longer halts a script if the sound can't be found or played.
161.Fixed =$nick evaluating to just $nick when used outside of a remote
    event. It worked correctly in remote events though.
162.Fixed -sg switches in loadbuf/savebuf commands.
163.Fixed bug where server password was not being set correctly when retrying
    a connection if it failed/you were disconnected before.
164.Fixed bug with $script/$scriptdir not evaluating properly in some cases.
165.Fixed Channel central channel key handling, correctly unsets/sets a channel
    key now if you are changing an existing channel key.
166.Added a fix for undernet ircd behaviour regarding channel keys. Here is how
    the new undernet ircd works now:

    If you join a channel with a key, the server will NOT send you the channel
    key to display in the channel window titlebar.

    If an Op changes the channel key while you are on the channel, the server
    will send you the channel key and mIRC will display it in the titlebar
    even if you *aren't* an Op.

    You can only retrieve the channel key after you have become an Op on the
    channel.

    If someone Ops you on a keyed channel and you don't have the channel key
    yet, mIRC sends a /mode #channel to retrieve it so it can display it in
    the channel window titlebar automatically.

    The undernet ircd now sends a +k without specifing the key in the above
    situation, so be aware that you can now have +k but no key. You should no
    longer assume that doing a /mode #channel will get you the full info on
    undernet servers. mIRC will show a +k without a key in the titlebar. 

    mIRC can no longer rejoin a keyed channel automatically in the above
    situation if a) you have "rejoin on kick" turned on, or b) you have
    "rejoin on disconnect" turned on.

167.Fixed bug in Installation program which was causing it to fail in
    certain situations.
168.Fixed bug in INI file saving routine which was preventing INI files from
    being updated properly in certain situations ie. in a network environment,
    where the mIRC EXE is not in the same HD/Directory as the INI files.
169.Fixed line hilighting bug, lines were sometimes being hilighted in the
    wrong situation.
170.Fixed bug in on OPEN/CLOSE events.

04/01/98 - mIRC v5.31

Fixes/Additions:
1.Fixed Alt-Gr keyboard bug.
2.Fixed toolbar button display bug.
3.Fixed min/max/close buttons in maximized windows (?)
4.Fixed bug in random port selection routine which was resulting
  in DCCs freezing if your IP address was incorrect.
5.Fixed certain keys not working if all windows in mIRC are
  minimized.
6.Fixed sorting bug in sorted text @windows.
7.Fixed bug in remote identifier processing.
8.Fixed /aline/iline/etc. commands scrolling text when adding a
  line when at the bottom of the text buffer.
9.Fixed wave sounds not playing for people whose computers don't
  have full wave/midi support, but $inwave and the on waveend
  event won't work in this case.
10.Fixed $show not being set correctly if . is used in a command
   that's part of an if statement.
11.Fixed isletter.
12.Fixed $dir/$file/etc. identifiers bug when using a description
   enclosed in quotes, wasn't evaluating following identifier.
13.Fixed dcc get extensions application bug under win3.x.
14.Fixed channel not being parted bug when a channel window is closed
   while mIRC is iconified in the taskbar.
15.Changed Help menu display of .txt and .hlp files, they're now
   separated into their own popup menus for more room, and mIRC won't
   limit the number of items that are displayed.
16.Added $width(text,font,size,B,C) identifier, returns width of text
   in pixels for the specified font and fontsize. If B is not zero then
   text is in bold, if C is not zero then it interprets colour codes.
17.Fixed /sound display bug, was showing channel info when a channel
   name wasn't specified.
18.Fixed /filter bug.
19.The Alt+1...9 key combination now minimizes a window if it is
   currently the active window.
20./sockwrite now won't let you queue > 8192 bytes per socket.
21.Fixed a $+ bug when used inside [ ] brackets.
22.Added "Include nicks" option in Options/Perform dialog makes
   highlight option search nicknames in a message.
23.Fixed bug in $?="...", the "..." wasn't being parsed correctly.
24.Fixed $readini bug when reading commands separated by |.
25.Can now create smaller windows eg. for picture windows.
26.Fixed buffer bug in socket handling.
27.If a user doesn't have a .wav or .mid dcc get directory association,
   mIRC now sets one up so downloaded .wav and .mid files go straight
   into the sounds directory so they can be used immediately with
   /sound and /splay.
28.Fixed on close event bug, closing a @window was triggering an on
   close:?: query event.
29.$count() now returns 0 if the second string is longer.
30.Added $bits identifier, returns 16 or 32 indicating the 16bit or
   32bit version of mIRC.
31./window -a now shows a window that was hidden with /window -h.
32.Fixed $address identifier for a dcc chat in on DCC SERVER event.

13/12/97 - mIRC v5.3

Fixes/Additions:
1.Fixed DDE bug, can now use DDE intensively in remote scripts
  without problems.
2.Fixed /font bug.
3.Fixed finger tooltip.
4.Fixed multiple-line pasting and handling by a script.
5.Fixed Fserve max. downloads per user bug.
6.Fixed DCC Get directory listbox not having a scroll bar.
7.Default drag-drop settings changed from using $2 to $2- to
  handle long file names.
8.URL catcher now catches @ characters in URLs as well.
9.Fixed @windows not defaulting to status window font.
10.The . prefix now makes /play quiet.
11.Fixed DCC Send dialog bug which was causing mIRC to exit for
   some people (?)
12.Fixed problem with mIRC not running under non-English versions
   of windows (was still having problems with certain languages).
13.Fixed tabbed dialogs display bug with large system font.
14.Can now echo to dedicated query window with /echo -d switch.
15.Fixed channel/private message text-wrapping bug.
16.Fixed /stats wrapping bug.
17.on NOSOUND is no longer tied to the "Warn if sound doesnt exist"
   switch in options dialog, it triggers anyway.
18.Fixed /dline gpf bug when specifying a range of lines.
19.Added -a switch to /savebuf, appends text to end of file.
20./loadbuf now loads text faster into normal (not custom) windows.
21.Can now specify the filename for the channels list file in the
   list channels dialog.
22.Fixed editbox focusing problem with when switching to/from
   desktop windows.
23.[removed]
24.Highlight in Options/perform dialog now checks only the text
   portion of a message and ignores the nickname.
25.Added auto-tile option.
26.Changed auto-tile/cascade/arrange method... these are now only
   applied when a window is first opened, when it's closed, or when
   the main mIRC window is resized.
27.Fixed notify popup menu problem when notify window first pops
   up on connect.
28.Added /filter command, allows filtering of information.

   /filter [-sdfwxnp] <infile> <outfile> <matchtext>

   The infile can be a filename or a window name (custom or normal).
   The outfile can be a filename or a custom window name. You should
   specify the -fw switches if the names are ambiguous eg.

   /filter -ff in.txt out.txt *mirc*

   This indicates that both are filenames, and:

   /filter -wf #in.txt #out.txt *help*

   indicates that the first is actually a window name, and the
   second is a filename.

   The -x switch excludes matching lines.
   The -n switch prefixes lines with a line number.
   The -s switch makes the status window the infile.
   The -d switch makes the dedicated message window the infile.
   The -p switch wraps the text output in a custom window

29.Added on WAVEEND event, works the same as on MIDIEND. Also added
   $inwave which returns $true/$false if currently playing a wave.
30.Added -qwm switches to /splay command. The -q switch allows you
   to queue wav and mid sounds for playing. The -wm switches are
   used in conjunction with /splay -wm stop, and allow you to specify
   whether you want to stop waves, mids, or both playing.
31.The Notify list now queues sounds if several notify users have
   an associated sound.
32.Fixed scrollbars bug in channel windows.
33.Fixed scrollbar display bug when changing fonts.
34.Added filename editbox to dcc send dialog.
35.Fixed /pdcc range.
36.Can now use $server(address) to look up server info, also speeded
   up $server() identifier.
37.Now only uses one toolbar button for connect/disconnect.
38.If you right-click on the Setup dialog toolbar button, a popup
   menu of your top 15 irc servers is displayed.
39.Fixed notify bug.
40.Added $appactive, returns $true if mIRC is the active application,
   $false if it isn't.
41.$script() no longer includes variables and users.
42.Implemented new indexing method for aliases/scripts, processing
   should be much faster, especially when many files are loaded.
43./remove can now handle LFNs.
44.Added "show topics in channel" switch to options dialog.
45.Added -uN switch to /set command, where N is the number of seconds
   delay before the specified variable is /unset.
46./.ignore -u is now completely quiet.
47.Changed behaviour of /notify.
48.Added internal ctcp version flood protection.
49./timers can now be given names as well as numbers.
50.Actions now trigger the on QUERYOPEN event if a window isn't open,
   and fixed bug relating to remote handling of invalid actions.
51.Fixed lines sometimes being highlighted incorrectly.
52.Added nick completion with TAB key in a channel window editbox.
   If the editbox is empty and the TAB key is pressed it works as
   before (places /msg nickname in editbox).
53.[removed]
54.Fixed font dialog bug.
55.Fixed channel nickname selection bug with popups.
56.Fixed /sline bug not working with &+ channels.
57.Added -@ switch to /close command for closing custom windows.
58.Fixed /savebuf bug when used with an empty text window.
59.Added /flash [-wb] <text> command, which flashes the mIRC icon/window
   with the specific text in the titlebar, but only if mIRC is not the
   active window. The -b switch makes mIRC beep every second, the -w
   switch makes mIRC play the Flash sound specified in the Event Beeps
   dialog.

   Also added Flash option in windows system menu for channel and
   private windows.
60.The mIRC icon/window is now flashed if mIRC is not the active
   window and it receives a private or channel message that triggers
   the highlight option in the perform section.
61.If text specified with the /editbox command contains a linefeed
   character, it is entered into the editbox and immediately processed
   as if you had entered it and pressed the enter key.
62.Changed ctcp event format to:

   ctcp level:matchtext:*|#|?:commands

   This allows you to differentiate more easily between channel and
   private ctcps. The old format is still handled.
63.Fixed /server remembering previous server connection info.
64.While connecting or retrying a connection, the connect/disconnect
   toolbar button remains in the disconnect state.
65.Added "Highlight" and "Flash" sound settings in the Event Beeps
   dialog. These allow you to specify the sounds that will be played
   for the highlight/flash options in the Perform dialog.
66.Added .path property to $send() and $get() for a file's directory
   path.
67.Implemented new indexing method for variables.
68.Added quick colour index dialog that pops up when Control-K is
   pressed, can be turned on/off in Options/Extras dialog.
69.Changed $pos() to include start search from Nth character. The
   old format is still handled.

   $pos(string, substring, N)

   If N is zero $pos() will return the number of times substring
   appears in string.

70.Now using one routine for reporting the most common errors, and
   the majority of commands now report a filename and line number
   for an error.
71.Added properties to $notify() .note, .sound, .whois, and can now
   specify either a number or a nickname parameter.
72.Added /rename <filename> <newfilename> command. Can also be used
   to move files from one directory to another.
73.Added -b switch to /font command to specify a bold font.
74.Added -p switch to /aline, /iline, and /loadbuf, forces lines of
   text to wrap when added to a custom window.
75.Added /linesep [-s|window] command to print line separator.
76.Added /copy <filename> <filename> command. You can use wildcards
   for the source, and a directory name for the destination.
77.Added $show identifier, returns $false if a command/alias is
   prefixed with a . to make it quiet, otherwise returns $true.
78.Added "try next server in group" switch in Setup/options dialog,
   works in conjunction with the retry option.
79.Added on DCCSERVER event, triggers on a DCC Server connection,
   and allows you to /halt the connection.

   on 1:DCCSERVER:Chat|Send|Fserve:echo $nick $address $filename

80.Removed support for /msg #@channel for Undernet servers.
81.Can now use === comparison in if statement for case sensitive
   comparisons.
82.Added -f switch to /log command, allows you to specify a filename.

   /log <on|off> <window> [-f filename]

83.Added -l switch to alias prefix in scripts, makes an alias in a
   remote script local to the script, so it can only be called by
   events from within that script. It is invisible to all other
   aliases, scripts, and the command line.

   alias [-l] aliasname { commands }

84.Fixed dclick bug with text/listbox windows.
85.Fixed bug with menubar definitions in scripts not appearing in
   menubar if there isn't a Popup for the menubar defined in the
   Popups dialog.
86.Fixed bug in url/email catcher, url catcher now also ignores
   addresses that are too short.
87.Added "copy all" button to /uwho dialog.
88.Added $sdir identifier, pops up a directory selection dialog.
89.Can now specify the range of port numbers used by DCC in the
   DCC Options dialog.
90.Extended "!nick filename" feature so that it supports .mp3 files.
   (note: mIRC can't play .mp3 files itself).
91.Added $colour(name) identifier, returns colour index N of the
   specified custom colour. You can use the name of the custom colour
   eg. $colour(action text). If you don't specify the full name the
   first partial match is returned eg. $colour(action)
92.Modified line-handling commands/identifiers to treat wrapped lines
   as a single line.
93.Changed /dns queuing method so that it only attempts to resolve
   an address once a previous one has finished resolving, and fixed
   a bug when trying to use /dns from within an on dns event.
94.Added -inx switches to /join, -i joins the last channel to which
   you were invited. The -n switch minimizes, and -x maximizes, the
   channel window when you join it.
95.[removed]
96.Fixed popups display bug when using certain combinations of
   submenu definitions.
97.Extended dclick prefix in script menus so that it can handle
   multiple lines etc.
98.Added -uN switch to /inc and /dec, this increases/decreases the
   specified variable by 1 (and only one) every second, for N seconds,
   and then unsets the variable.
100./write, /writeini, /remini, $read, and $readini now handle long
    filenames enclosed in quotes.
101.Added binary variable/file commands.

    /bread <filename> <bytepos> <numbytes> <&binvar>
    /bwrite <filename> <bytepos> [numbytes] <text|%var|&binvar>

    $bvar(&binvar,N)

    If N is 0, returns the length of the binary variable, otherwise
    returns the ascii number of the Nth character.

    /bset <&binvar> <bytepos> <asciivalue>

    If you try to /bset a variable that doesnt exist, it is created
    and zero filled up to <bytepos>. If &binvar exists and you specify
    <bytepos> beyond it's current size, it is extended to <bytepos>
    bytes.

    Note:
    1.If a bytepos of -1 is used with /bwrite, the info is appended
      to the end of the file.
    2.&binary variables can ONLY be accessed by certain commands
      (only bread and bwrite for now) so they can't be printed or
      assigned or edited.
    3.&binary variables are temporary - they are destroyed when a
      script finishes processing.
    4.Max numbytes is 4096.

102.Added -eiN switches to /echo command. The e switch encloses the
    printed text in line separators. The -iN switch indents the
    wrapped line by N characters.
104.$strip() now also removes leading spaces.
105.Fixed /if bug.
106.Added -m switch to /timer command, uses a millisecond timer.
    Note: millisecond timers can slow mIRC down significantly because
    each timer can trigger many times per second and is processed
    individually, whereas non-millisecond timers are only processed
    once per second in one batch.
107.Added support for raw socket connections.

    $sock(name,N).name,.port,.ip,.status,.sent,.rcvd,.sq,.rq,.ls,.lr,.mark

      .name is the name you give to a connection to identify it.
      .sent and .rcvd return the number of bytes sent and rcvd
       over that connection so far.
      .sq and .rq return the number of bytes queued in the send
       and receive buffers respectively (see below for more info).
      .ls and .lr return the number of seconds since the connection
       last sent and last received info.
      .mark is a user storage area max. 512 bytes (see /sockmark)

       Note: you can use a wildcard name to quickly reference only
       matching entries. The N parameter is optional, if it isn't
       specified it is assumed to be 1.

    $sockname

      $sockname is the name given to a connection to identify
      it. This identifier can be used in events to know which
      connection an event is related to.

    $sockerr

      $sockerr is set to a value after each socket command/event
      and *must* be checked after each socket command and before
      processing an event to see if an error occurred.

    $sockbr

      $sockbr is set to the number of bytes read by a /sockread
      command. It is used to test whether any information was
      in fact read from the buffer (see below for more info).

    $portfree(N)

      returns $true if the specified port number is not in use,
      otherwise returns $false.

    /socklisten <name> [port]

      The /socklisten command listens on the specified port for
      connections to that port. If a port isn't specified, the
      port is selected randomly from the range specified in the
      DCC Options dcc ports section.

    on 1:socklisten:name:commands

      The socklisten event is triggered when someone tries to
      connect to a port that you are listening on. If you want to
      accept the connection you *must* do it in this event using
      the /sockaccept command, otherwise the connection is closed.

    /sockaccept <name>

      The /sockaccept command accepts the current connection to your
      listening port and assigns it a name to identify it.

    /sockrename <name> <newname>

      The /sockrename command assigns a new name to an existing
      connection.

    /sockopen   <name> <address> <port>

      The /sockopen commands initiates a connection to the specified
      address and port. You can specify either an ip address or a 
      named address (which will be resolved to an ip address).

    on 1:sockopen:name:commands

      The sockopen event is triggered when a /sockopen command is
      successful and a connection has been made.

    /sockclose  <name>

      The /sockclose command closes the connection with the specified
      name. If you specify a wildcard name, all connections that match
      the wildcard are closed.

    on 1:sockclose:name:commands

      The sockclose event is triggered when a connection is closed
      by the remote connection (not you).

    /sockwrite [-tn] <name> <text|%var|&binvar>

      The /sockwrite command queues info to be sent on the specified
      connection. mIRC will then try to send that info as quickly as
      it can. Once it has finished sending the info, it triggers the
      on sockwrite event so you can send more info if you need to.

      If you specify the -t switch, it forces mIRC to send anything
      beginning with a & as normal text instead of interpreting it
      as a binary variable. The -n switch appends a CRLF to the line
      being sent if it's not a &binvar and if it doesn't already have
      a CRLF.

      Note: you can use a wildcard name to send the same information
      at once to all connections that match the wildcard.

    on 1:sockwrite:name:commands

      The sockwrite event is triggered when mIRC has finished sending
      all of the info which you previously queued for sending.

      Note: if you try to /sockwrite while there is still info
      queued in the send buffer, your new info will just be added
      to the end of the queue. You can find out how much info is
      currently queued by using $sock().sq (send queue).

    on 1:sockread:name:commands

      The sockread event is triggered when there is info waiting to
      be read on the specified connection. You can read this info
      using the /sockread command.

      Note: If this event triggers but no /sockread is performed
      to attempt to read the buffer, it is assumed that no script
      exists that is handling this buffer, so it is cleared and the
      info it contained is lost.

    /sockread [numbytes] <%var|&binvar>

      The /sockread command reads bytes from the receive buffer into
      the specified variable.

      If you specify a %var variable, a line of text ending with a
      Carriage Return/LineFeed is read into %var. The CRLF are
      stripped off (this may result in %var being $null if the line
      only consisted of CRLF).

      If you specify a &binvar then [numbytes] of info is read into
      the binary variable. If no [numbytes] is specified it defaults
      to 4096 bytes.

      Note: a single /sockread may not be enough to read the entire
      buffer. You should keep reading until $sockbr (bytes read) is
      set to zero. This is far faster than letting mIRC re-trigger
      the event. If your script doesn't read the whole buffer, the
      on sockread event is re-triggered if:
        a) you were reading into a &binvar.
        b) you were reading into a %var and there is still a CRLF
           terminated line in the buffer waiting to be read.

    /sockmark <name> [text]

      The /sockmark command fills the .mark attribute of a socket with
      the specified info for later reference via the $sock().mark
      property. If you do not specify any text, the mark is cleared.

      Note: you can use a wildcard name to set the same information
      at once for all connections that match the wildcard.

108.Changed handling of filenames that don't have a fully specified
    path. If a filename has a directory specified with no drive, it is
    assumed to be in a subdir of the mIRC directory. If it has no drive
    or directory, it is assumed to be in the mIRC directory.
109.Fixed /cd into a filename in fileserver.
110.Implemented new indexing method for IAL.
111.Added $ial identifier, returns $true/$false if ial is on/off.
112.Added two new tokens:

      $deltok(text,N,C)        deletes Nth token
      $puttok(text,token,N,C)  overwrites Nth token

    Extended $find/rem/reptok() so you can specify the Nth matching
    token. The old formats are still handled.

      $findtok(text,token,N,C)     finds Nth matching token
      $remtok(text,token,N,C)      deletes Nth matching token
      $reptok(text,token,new,N,C)  overwrites Nth matching token

113.Fixed Mdi/Desktop options bug.
114.The # character is now equivalent to $chan in remote events.
115./ulist now displays results in current window.
116.Specifying zero for the N parameter in $mid(text,S,N) now returns
    the number of characters from S to the end of the line.
117.Extended the /window command with the following switches:

    /window [-abcdefhl[N]norsx] [-tN,..,N] [+bfmnstx] etc...

    -f   indicates that [w h] width and height is the required size
         of the text/graphic display area instead of the window size.

    -h   hides the custom window (only appears in Windows list).

    -lN  specifying a number after the l listbox switch now creates
         a custom window with a listbox N characters wide on the
         side (like a channel window).

         Note: The -l switch can be used in custom window related
         commands eg. aline, to reference this listbox.

         You can use $line(@name,N,T) where T is 0 if you are referring
         to the text display or 1 if you are referring to the listbox.
         The old format $line(@name,N) is still supported.

    [-tN,..,N] specify tabstops (in characters) for a listbox window. If
    you add text which contains tabs to the listbox, the text is aligned
    according to these tabstops.

    [+bfnstx] modifify the window appearance.

         b = border
         f = dialog frame
         n = minimize box
         s = sizable
         t = titlebar
         x = maximize box

118.Added /resetidle command to reset $idle timer to 0.
119.on INPUT event can now use wildcard text for window name.
120.Added Close Window Alt+Z menu item to Window menu.
121.Added new on OPEN/CLOSE event which triggers when a window is opened
    or closed. The behaviour of this event is slightly different depending
    on the type of window.

    on 1:OPEN:?|@|=|!|*:echo opened $target
    on 1:CLOSE:?|@|=|!|*:echo closed $target

    Channels:    are not handled by these events, they are handled by
                 the on JOIN/PART events.

    Queries:     on OPEN triggers if an incoming message is about to
                 open a new query window.
                 on CLOSE triggers if you close a query window.

    Chat/Fserve: on OPEN triggers when a connection is made.
                 on CLOSE triggers when a connection is closed.

    Custom:      on OPEN never triggers since you manually open a
                 /window anyway.
                 on CLOSE triggers if you close a custom window.

    Note: on CHATOPEN/CHATCLOSE/QUERYOPEN/QUERYCLOSE/SERVOPEN/SERVCLOSE
          events are now obsolete, if you load a script that uses them
          mIRC will (try to) translate them into the new format.
122.Added -h switch to /echo command which forces text to hard wrap.
123.Specifying line 0 with $read eg. $read -l0, now returns the value of
    the first line if it is a number.
124.Fixed remote identifiers not evaluating inside custom identifiers.
125.Added faster indexing for menu {} definitions in scripts.
126.The Text editor now warns you if it was unable to display the
    whole of a file in the editbox.
127.Added -p switch to the /window command, opens a new type of custom
    window for displaying pictures/graphics/text/etc. See below for the
    commands/identifiers available for use with this window.

    /drawdot -ihnr @ <colour> <size> <x y> [<x y>...]

      Draws a dot in the specified colour and size at the specified
      x,y co-ordinates (multiple co-ordinates can be provided).

      The -i switch draws in inverse mode.

      The -h switch highlights the windows icon if it's minimized.

      The -n switch prevents the display from being updated immediately.
      You can specify any of the /draw commands with only a window name
      to update the display (allows you to make changes in the background
      and then display the result when you're finished).

      The -r switch indicates that the colour is in RGB format. You can
      use $rgb(N,N,N) to create an RGB value.

      You can clear the whole window with /clear @windowname.

    /drawline -inr @ <colour> <size> <x y> <x y> [<x y>...]

      This draws a line from the first <x y> co-ordinate to the second,
      if more co-ordinates are specified, the line is continued.

    /drawrect -ihnrfec @ <colour> <size> <x y w h> [<x y w h>...]

      This draws a rectangle of at the specified co-ordinates of the
      specified width and height. If more co-ordinates are specified
      these are also drawn as separate rectangles.

      The -f switch fills the rectangle with the current colour.

      The -e switch draws an Ellipse instead of a rectangle.

      The -c switch draws a focus rectangle.

    /drawfill -ihnrs @ <colour> <colour> <x y> [filename] [<x y>...]

      This fills an area with the specified colour starting at the
      specified co-ordinates.

      If the -s switch is specified, this means that the second colour
      parameter is the colour that should be filled. If no -s is
      specified, the second colour is the border colour at which filling
      should stop.

      The optional [filename] specifies a bitmap .BMP file that is
      8 by 8 pixels in size and is used as a fill pattern.

    /drawtext -hnrpboc @ <colour> [colour] [fontname fontsize] <x y [w h]> <text>

      This draws text at the specified co-ordinates.

      The -p switch processes and interprets colour/bold/etc. codes in
      the text.

      The -b switch indicates that you have specified a second colour
      as the background colour for the text.

      The -o switch means the specified font should be in bold.

      The -c switch means that you have specified the [w h] values as
      the rectangle in which text should be printed. Text will be
      clipped if it extends beyond this rectangle.

    /drawscroll -hn @ <x> <y> <x y w h> [<x> <y> <x y w h>...]

      This scrolls the region inside the specified rectangle. The first
      <x> and <y> parameters represent the distance to scroll and can
      be positive or negative.

    /drawcopy -ihnt @ [colour] <x y w h> @ <x y [w h]>

      This copies part of a picture to a different position in the
      same window or to another window. If the second [w h] parameters
      are specified, the picture is stretched/squeezed to fit.

      The -t switch indicates that you have specified a [colour] RGB
      value as a transparent colour in the source bitmap.

    /drawpic -ihntsc @ [colour] <x y [w h]> [x y w h] <filename>

      This loads and draws a Bitmap .BMP picture at the specified
      co-ordinates. If the first [w h] are specified, it is stretched
      or squeezed to fit. The second [x y w h] rectangle specifies
      which portion of the loaded bitmap should be displayed ie. a
      bitmap could contain multiple pictures.

      The -t switch indicates that you have specified a [colour] RGB
      value as a transparent colour in the specified bitmap.

      The -s switch indicates that you have specified the first [w h]
      parameters (as explained above) to squeeze/stretch the bitmap.

      The -c switch indicates that the bitmap should be CACHED. This
      greatly speeds up subsequent references to this bitmap. If you
      specify -c and the bitmap is already in the cache, it is loaded
      and used from the cache, otherwise it is reloaded from the file.
      You can clear the entire cache with /drawpic -c.

      If you try to load and cache a bitmap and there are already 30
      bitmaps in the cache, the bitmap with the lowest reference count
      is freed and replaced by the new bitmap.

      If you try to load a bitmap and there isn't enough memory, mIRC
      repeatedly frees the least referenced bitmap and tries to load
      again.

    $pic(filename).size,width,height

      This returns the size, width, and height of a bitmap file.

    menu @ {
      mouse:/echo mouse moved at $mouse.x $mouse.y
      sclick:/echo single click at $mouse.x $mouse.y
      dclick:/echo double click at $mouse.x $mouse.y
      drop:/echo drag and drop at $mouse.x $mouse.y
    }

      The mouse event is triggered when you move a mouse inside a
      picture window. You can use the $mouse identifier (below) for
      the x and y position of the mouse.

      The sclick event is triggered when you click inside a picture
      window. It will trigger even if you double-click. The dclick
      event is triggered when you double-click inside a picture window.

    $mouse.x,.y,.key

      The $mouse identifier can be used in the mouse/click events.
      For $mouse.key you can use the & bitwise operator to check if
      the left button, shift key, and/or control key are pressed.

      eg. if ($mouse.key & 1) echo left button is pressed 

    $click(@,N).x,.y

      This stores a history of x,y clicks for a window. You can use
      /clear -c @ to clear the history of clicks for a window. If you
      use $click() with no properties it returns x y.

    $inrect(x,y,x,y,w,h)

      This returns $true if the point x y is in the specified rectangle,
      and $false if it isn't.

    $rgb(N,N,N)

      This returns an RGB value for use in the above commands. If you
      use only ONE parameter, it assumes it is an actual RGB value and
      returns N,N,N.

    $getdot(@,x,y)

      This returns the RGB value of the pixel at the specified position.

128.Added Control-F Find text search dialog for use in text windows.
129.Fixed /ignore -p ignoring a users actions to a channel instead of
    only in private messages.
130.Fixed channel listbox selection bug, was leading to items in listbox
    being selected spuriously in certain situations.
131.Added identifiers $sin(N), $asin(N), $cos(N), $acos(N), $tan(N),
    $atan(N), where N is in radians, $log(N), $sqrt(N).
132.The channel name is now displayed in a CTCP if you received it via
    a channel message.
133.Fixed Bold/underline/etc. bug in text display.
134.Keyboard messages are now processed correctly for desktop windows.
135.Fixed bug relating to messages being incorrectly highlighted.
136.Added properties to $window(N/@) identifier, now includes:

    $window().x,y,w,h,dw,dh,bw,bh,mdi,title,state

    x,y    the left and top corner position
    w,h    the width and height of the window
    dw,dh  the width and height of the text/graphic display area.
    bw,bh  the width and height of the bitmap for a bitmap window
           this may not be the same size as the display area.
    mdi    $true if window is mdi, otherwise $false
    title  the text in the titlebar
    state  minimized/maximized/normal/hidden

    If you specify -1 as the window name, w and h will return
    the width and height of the screen.
137.Fixed floating point number checking routine, was treating a
    single . as the value zero.
138.Fixed conflicting shortcut keys in several dialogs.
139.Added Minimize to Tray option in Extras dialog. This option is
    only available under win95 with the 32bit mIRC.

    If the option is unchecked, you can force mIRC to minimize to
    the tray by holding down the SHIFT key when you minimize mIRC.

    If the flash option is triggered, the icon flashes.

    If you right-click on the icon a popup menu with your current
    queries/channels appears, those that have a checkmark next to
    them have had their icons highlighted due to incoming messages.
    You can click a menu item to open the window.

    If you hold down the SHIFT key when you quit mIRC, the next time
    you run it, it will be minimized.

140.Added $portfree(N) identifier, returns $true if the specified
    port number is not in use, otherwise returns $false.
141./splay and notify can now handle LFN sounds.
142.If you hold down the Control key when clicking on a windows tab
    in the switchbar, the window is minimized.
143.Extended $maddress() so you can specify the Nth matching address,
    eg. $maddress(address,N). The old format is still handled.
144.Fixed identd bug which was disabling identd in certain situations.
145.If your directories for DCC Get, Logs or Sounds are the main mIRC
    directory, mIRC creates a download directory for dcc gets, and asks
    if you want a Logs/Sounds directory created for you. Existing .log
    or .wav and .mid files are moved from the main directory into their
    respective directories.
146.Leading spaces are now stripped from a $read line.
147.Added support for DALnets /nick <nickname> [password] command.
148.Can now hold down Alt-Key while pressing enter in a multi-line
    editbox to enter separate lines.
149.If you use /load to load a file that is already loaded, its
    contents are updated and its position in the processing order
    is maintained.
150.Added /mkdir <dirname> and /rmdir <dirname> commands.
151.Fixed bug in Identd, Finger, and DCC Servers which was causing
    them to miss incoming connections if many came in quickly at
    the same time.
152.Lines in the channels list are now stripped of control codes
    before being scanned for the match text.
153.Fixed file creation routines not setting the correct read/write
    file attributes in certain cases.
154.If you /server <group> and the group doesn't exist, mIRC assumes
    it's an address without a domain and tries to connect to it.
155.Fixed out of bounds number processing gpf bug, out of bounds
    error calculations now return $null.
156.Fixed drag-drop bug.
157.It is no longer possible to alias the /unload command.
158.Can now press Alt+1...9 key combination to switch to the Nth
    window in the Window list. eg. Alt+1 is the status window. You
    can also use Alt+0 to switch to the main mIRC window from an
    mIRC desktop window.
159.Fixed toolbar bug which was preventing keypresses from being
    processed when the tooltip was displayed.

11/09/97 - mIRC v5.11

Fixes/Additions:
1.Fixed problem with mIRC not running under non-English versions
  of windows (main reason for this bugfix release).
2.Fixed version info in version tab in explorer.
3.Removed support for IRCNets numeric 005 B:lines for this version.
4.Now handles /privmsg with : prefixing the message.
5.Fixed mIRC not evaluating certain identifiers if they were
  capitalized.
6.Fixed $file/$hfile/etc. not using the specified directory.
7.Fixed DCC Server socket not being closed properly on exit.
8.Added $highlight identifier returns text in highlight editbox
  in options dialog.
9.Fixed -h icon hilight bug for /aline etc. commands.
10.Fixed /cline bug (?)
11.Fixed default listbox text colour not being updated after
   changing it in colour dialog.
12.When copying a URL to the clipboard from the URL popup menu,
   the cr/lf characters is not added if you're only copying a
   single URL.
13.Fixed Alt+F4 appearing in minimized windows instead of Ctrl+F4.
14.Fixed /describe =nick bug.
15.Fixed $round().
16.Fixed server connection retry when a connection fails.
17.Fixed /remove bug.
18.Fixed small finger server $ bug.
19.Fixed toggling mdi/desktop status of window when it is minimized.
20.Fixed $server in on disconnect event.
21.Fixed Identd UserId being used instead of Email UserId when
   registering with IRC server.
22.Fixed /unloading alias/script files bug, files are now saved if
   they have been changed before unloading.
23.Changed server lookup method in local info dialog back to old
   method, the named address is resolved using /dns to look up the
   ip address.
24.Fixed font bug in text display routines for windows/listboxes.
25.Fixed bug when switching between multi/single-line editbox.
26.Fixed shift-Dragdrop settings not being saved.
27.Fixed offline dcc chat window closing even if "close window on
   dcc completion" option is not turned on.
28.Fixed text-wrapping when displaying certain numeric events.

28/08/97 - mIRC v5.1

Fixes/Additions:
1.Fixed actions display bug.
2.Fixed empty first line in alias halting script.
3.Fixed small bug in !nick file.
4.Fixed on DNS being triggered when events are turned off.
5.Fixed remembering window position/size bug.
6.Can now use {} in single-line definitions in popups, they are
  ignored by the {} parser.
7.Fixed !nick file not working in dcc chats.
8.Fixed sound requests bug, sound request filenames which contain
  a drive or directory specifier caused problems.
9.Fixed line-wrap bug in minimized @custom window.
10.The /part command sends a /part to the server as usual but now it
   also closes the specified channel window immediately.
11.Fixed $inmidi returning true/false instead of $true/$false.
12.Fixed Help menu bug, wasn't acknowledging selection sometimes.
13.Fixed small bug in on NOSOUND event.
14.Fixed /whois on a notify nick with an address specified.
15.Fixed editbox losing focus when dragdropping a file on a window.
16.Now allows you to clear a users notify sound setting and the
   dcc get directory application setting by clicking it's button.
17.Now allows you to use /ban with an address, if you specify a wild
   card address, it is used as is. If you specify a full address, the
   address mask is applied to it.
18.on SERVCLOSE now also triggers on a fileserver time-out, and both
   on SERVCLOSE and on CHATCLOSE trigger when you close a window
   manually.
19.Fileserver allows cd into an LFN directory.
20.Added $getdir(*.ext) returns download directory for filetype.
21.Can now use /titlebar @window to change topic of custom window.
22./run command no longer changes specified line to lower case.
23.You can now specify a window name for the on INPUT event by
   using the format on 1:input:*/#/?/@:/commands.
24.Added $alias(N/filename) and $script(N/filename) identifiers.
25.On connecting, if mIRC doesn't receive a 375 (RPL_MOTDSTART)
   before recieving 372's (RPL_MOTD), it shows the 372's.
26.Server IP Address lookup method is now different, it gets the IP
   address from the actual connection so it doesnt have to look it
   up, and after connecting it looks up the named address with a
   /userhost. For new IRCnet servers, mIRC uses the address in the
   numeric 001 when first connecting instead of /userhost.
27.Fixed notify bug (?) previous method was causing problems, so have
   reverted to sending all notify lines immediately.
28.Improved tabbed dialogs display, there should no longer be any
   flickering in the display.
29.Modified some icons, also added an mIRC scripts icon.
30.Fixed !nick filename bug which wouldn't work if a user specified a
   message after the filename.
31.Added internal version info to exe.
32.Changed display method of icons in switchbar buttons.
33.Fixed com1, com2, etc. device bug (?)
34.Added copy option to URL list popup menu.
35.Send To option in URL list popup menu now doesn't send description
   of address if it's the same as the address.
36.Added support for /locops.
37.Fixed old parsing bug relating to positioning of : character, affects
   general server commands such as /wallops, /globops, /away, /stats,
   /who, /userhost, etc.
38.Can now specify -n with /run to minimize a window.
39.Added "All" button in replace text dialog.
40.Can now specify a @window name in $findfile() as the Nth parameter
   and it will output list of matching files to @window if it exists.
41.Fixed /fingering an IP address.
42./.dns now hides output of dns results.
43.Fixed bug in switchbar display when showing/minimizing windows.
44.When the switchbar is turned on, minimizing URL and Notify windows
   is now the same as closing them.
45.URL Catcher now catches email addresses.
46.Improved method for closing down a connection, should prevent the
   problems with the computer hanging when disconnecting from a server.
47.Added $window().titlebar property identifier.
48.Improved memory usage of /dns, socks host, and finger routines.
49.$address identifier can now be used to refer to the address in the
   titlebar of a query window.
50.Added -a switch to /write command which appends the text to the
   specified line.
51.Added /clipboard <text> command, copies text to the clipboard.
52.Major decrease in DCC Send/Get memory usage. Also the /pdcc method
   has changed, should be faster now.
53.Fixed logging switch in window system menu when changing to/from
   desktop/mdi window mode.
54.Text @windows no longer wrap text.
55.Can now /loadbuf a window's log file into its window.
56.Added $query(nick).address which refers to the address in the query
   window titlebar. Note: this address could be incorrect and is not
   available until after you receive a message from the user.
57.Fixed popup menu bug which was resulting in processing of lines
   following the end of a definition.
58.If no dclick item is specified in a menu script, mIRC uses the
   /command definition of a @window for the double-click.
59.Fixed /help passing parameters.
60.Fixed on dns ip address bug.
61.Added $ltimer identifier, returns number of last started timer.
62.Added $email identifier, returns email address in setup dialog.
63.Fixed any ctcpreply beginning with "PING" being interpreted as
   a ping reply.
64.Added (v1 isletter v2) comparison, where v1 is a letter in the
   list of letters in v2 (v2 optional).
65.Added $ignore(N/address) identifier, with .type property.
66.Added /sline [-a|r] #channel N/nick command.
67.Changed identifier parsing routine so that it is now independent
   of the command parsing routine, which allows...
68.Identifers and variables in Menu definitions, Full Name, and Quit
   message are now evaluated.
69.Lines in finger server file are now evaluated if they are prefixed
   with a $ character.
70.Fixed dclick in menu script definition being triggered for a window
   even if the popup name in /window wasn't specified.
71.Added $ialchan(address,#channel,N).
72.Now handles floating point numbers (precision to 5 digits only).
73.Fixed recursive gpf with multiple script on start/load calls.
74.Fixed toolbar buttons display bug (?) buttons appeared incorrectly
   under some graphics drivers.
75.Added $round(N,D) rounds to closest integer and $int(N) chops off
   decimal point.
76.Can now use Shift-F1 in dialogs.
77.Added $calc(N) identifier, allows you to perform mathematical
   calculations, combining brackets, terms, variables, identifiers,
   handles operator precedence, etc. eg.:

   //echo 1 $calc(3.14159 * (2 ^ %x % 3) - ($ticks / (10000 + 1)))

78.Added Address Book which replaces the Uwho dialog. You can use the
   command /uwho <nick> as usual to /whois a user, or you can use the
   command /abook <nick> to display the currently stored info on a user.
   Can display pictures only in BMP format. You can pop up the Address
   book with Alt-B.
79.Can now /list <#channel[,#channel,...]> to list just the specified
   channels.
80.When you manually turn on logging for a window you can now specify
   a log filename which will be remembered across sessions until you
   turn logging off. Turning off logging for a window is now also stored
   across sessions, so once you turn it off it needs to be manually
   turned on again later (the auto-log option won't override it).
81.Script errors such as invalid if statements, identifiers, non-existent
   gotos, etc. now report line number/filename.
82.Fixed toolbar tracking mouse when mIRC isn't the active application.
83.Fixed bugs relating to If statements and [ ] brackets.
84.Fixed custom identifers returning garbage if no /return is used.
85.Added $link(N) identifer for Links window, with properties .addr,
   .ip, .level, and .info.
86.Added /editbox [-s|-a|[=]window] [text] command which fills the editbox
   of the specified window with text. If no text is specified, the editbox
   is cleared.
87.If you press the Up/Down key to view the previous/next line in an
   editbox, and you are at the bottom of the editbox, the current line
   is first saved. If you're at the bottom of the buffer and you press
   down, the editbox is cleared.
88.Can now specify a range of lines with /dline, eg:
   /dline @name N[-N2]   delete lines N to N2
89.Can now customize colurs in Colour dialog by right-clicking on a
   colour box. Note: only SOLID colours can be used.
90.Added Script ordering dialog for aliases and remote scripts.
91.Tweaked text display routine.
92.Fixed appearance of mode change when using /channel dialog.
93.Added Lock files option to logging dialog. If turned on, log files
   are opened, written to, and only closed when logging is turned off
   or window is closed. If turned off, log files are opened, written to,
   and closed each time a new line is written to the log.
94.Listboxes can now display coloured lines, eg. custom windows, the
   links list window, etc.
95.Now displays a square around selected colour box in colour dialog.
96.Control codes are now interpreted in Channels list, Links list,
   URL list, and custom window listboxes.
97.The channel nicknames list no longer jumps around when nicks are
   added/removed/modified to/from/in it, and selections and nick colours
   remain constant across nick/mode changes.
98.Added command /cline [colour] @name N, allows you to set the colour
   of the specified line.
99.Fixed /squit.
100.Fixed handling PONG server reply that isn't fully specified. This
    was causing the flood protect mechanism to stall and not send any
    buffered text.
101.Control codes in /titlebar text are now stripped out.
102.The Check Brackets button in the Editor dialog now turns into a sort
    variables button when viewing the variables section.
103.Fixed Control-Shift-Tab bug, was stopping at channel windows.
104.Decreased the number of memory allocations in the command parsing
    routine by over 50%, in some cases it may be close to 100% decrease.
    There is a slight increase in script processing speed, but this
    change should mainly affect mIRC running under NT.
105.Fixed $asc() bug.
106.Added -s switch to /play command, allows you to play commands to
    status window, and can now also /play while not connected to server.
107.Fixed /remove command.
108.[removed]
109.Added [+m|-m] switch to /creq and /sreq to turn minimize on/off.
110.Fixed $replace() gpfing with long lines.
111.Now displays numeric 329 with channel creation time.
112.Added auto-arrange icons and auto-cascade options to Window menu.
113.Line separator is now not printed again if the previous line was
    a line separator.
114./wallchops command is now translated into the /onotice command.
115.Can now queue multiple /dns requests. If an address is already in
    the DNS queue, it is not added again.

    Note: because of the way the DNS lookup works, any DNS related
    functions currently in progress eg. connecting to a server, must
    be resolved before subsequent requests. This means that if a prior
    DNS is having problems resolving, subsequent DNSs have to wait
    until it times out before they can be resolved.

116.Added auto-overwrite option for DCC Gets.
117.Changed DCC Options dialog into a tabbed dialog for more space.
118.Added events on 1:QUERYOPEN/QUERYCLOSE:/echo $nick $address. Note
    that $address may not always be available.
119.Now displays messages sent to @#channel properly, and $target is
    also set correctly with the @ prefix.
120.For DALnet 4.4.11 & Undernet 2.10 or higher /onotice now sends
    message in the format: /notice|/msg @#Channel.
121.Custom Menubar on|off is no longer an option. If there is popup
    text in the Menubar section of the Editor, the menubar will be
    displayed automatically.
122.Fixed rubbish text appearing in Editor dialog when switching from
    Users/Variables to a script section via the View menu.
123.When selecting File/New in Editor dialog, any changes in the current
    editbox are now remembered.
124.Can now use /savebuf [-s|-f] etc. to save status/finger buffer,
    a window name should not be specified.
125.When a channel is first joined, mIRC now saves to the channels
    logfile: channel topic, topic set by, channel URL, and channel
    creation time.
126.URL catcher now doesn't chop off addresses with ? and = in them.
127./partall now works offline.
128.Added /dqwindow [on|off|show|hide|min] which allows you to change
    the dedicated query window setting, and to manipulate the window.
129.When listing info on a specific channel eg. /list #mIRC, your
    channels.txt file is not over-written.
130.Fixed handling multiple lines pasted into editbox and parsing
    by on INPUT event.
131.Added /winhelp <filename> <key> command for opening help files.
132.Added -h switch to /aline/dline/etc. line commands which highlights
    the icon of the window in which the change is being made.
133.Added $timezone identifier, for the 32bit version the return value
    depends on timezone setting in Windows, for the 16bit the return
    value depends on the TZ environment variable in your autoexec.bat.
134.Fixed /timer -o switch bug.
135.Added mIRC DCC Server, listens by default on port 59 for special
    mIRC DCC connections. To turn the dcc server on/off you can use
    the command:

    /dccserver [+|-scf] [on|off] [port]

    You can send/chat/fserve the dcc server using the DCC Send/Chat
    dialogs and specifying an IP address instead of a nickname (you
    can also specify both a nickname and IP address, mIRC will use
    the ip address to connect).

    From the command line, you can use /dcc [send|chat|fserve] with an
    IP Address instead of a nickname to initiate a connection to the
    DCC Server. Note: /dcc fserve only works for IP connections and
    does not work via IRC.

    Chat Protocol
      Client connects to Server and sends:
      100 clientnickname
      When Server receives this, it sends:
      101 servernickname
      Connection is established, users can now chat.

    Fserve Protocol
      Client connects to Server and sends:
      110 clientnickname
      When Server receives this, it sends:
      111 servernickname
      Connection is established, user can now access fserve.

    Send Protocol
      Client connects to Server and sends:
      120 clientnickname filesize filename
      When Server receives this, it sends:
      121 servernickname resumeposition
      Where resumeposition is between 0 and filesize, and is required.
      Connection is established, and Server dcc gets the file.

    Get Protocol
      Client connects to Server and sends:
      130 clientnickname filename
      When Server receives this, it sends:
      131 servernickname filesize
      When Client receives this, it sends:
      132 clientnickname resumeposition
      Where resumeposition is between 0 and filesize, and is required.
      Connection is established, and Server dcc sends the file.

      Notes:
      a) The Get protocol has been implemented in this way mainly
         because I'm assuming:
         1) The client may not be able to open a socket to listen
            for and accept a connection (firewall etc.)
         2) The DCC Server may only be able to listen for connections
            on port 59 (firewall etc.)
         3) Since the client was able to connect to the DCC Server the
            first time, it should have no problem connecting to the
            same port again.

      b) Currently the Get Protocol is ONLY used by the Fileserver when
         a user (who has connected to a Fileserver via the DCC Server)
         requests a "get filename". All other attempts to Get a file via
         the DCC Server are ignored.

    If server receives unexpected information, or doesn't recieve info
    15 seconds after initial connection, it closes the connection.

    If service is unavailable, server sends:
    150 servernickname

    If server rejects connection, it sends:
    151 servernickname

136.Fixed timer().time bug.
137.Fixed $duration() bug.
138.Can now specify multiple @window names with the "menu" prefix in
    remote scripts, eg.:

    menu @info,@test,@blah {
      squawk:/echo squawk!
    }

139.Fixed gpf when using /close for certain types of windows in
    remote events.
140.Fixed /links not displaying info correctly when only retrieving
    partial info.
141.Fixed text wrap bug when a window is minimized.
142.To force /uwho to lookup a users idletime/awayinfo/etc. you can
    now use /uwho nick nick (just like /whois).
143.Added $editbox(window) identifier which returns contents of editbox
    for the specified window.
144./splay can now play LFN filenames.
145.Fixed appending _ to a filename when a dir of the same name
    exists (excluding .extension)
146.Enhanced /font command, can now change font by specifying
    parameters, eg. /font 712 ms sans serif

    /font [-a|-s|window] <fontsize> <fontname>

147.Added support for IRCnet's 005 numeric.

21/04/97 - mIRC v5.02

Fixes/Additions:
1.Fixed Alt-Gr key for non-UK/US keyboards.
2.Fixed joining a channel in channel folder.
3.Perform section now performs after MOTD is completely processed,
  and the Channels Folder now pops up after the perform section is
  completed.
4.Now handles numeric 437 Nick/channel is temporarily unavailable.
5.Fixed long server version bug (yeesh).
6.Added .ln property to $sline() to return line number of selected
  item.
7.Fixed /aline/rline bug when a colour is specified.
8.Can now specify colour number without the "-c" prefix for /aline,
  /iline, and /rline.
9.Fixed bugs in !nick filename.
10.Fixed $scriptdir in on LOAD/START events.
11.Fixed loadbuf/savebuf gpf with invalid parameters.
12.Now uses a tabbed dialog for aliases/popups/remote so you can
   switch between them easily.
13.Now adds lines to custom windows using "normal" text colour.
14.Can now use nickname in $query(), returns $null if not in query
   with nickname.
15.Improved Control-Tab routine for tabbed dialogs.
16.Fixed ! remote halt suffix bug.
17.Improved Find Text routine in APR dialog.
18.Fixed an old bug in the {} bracket counting routine.
19.Added a "{}" button to APR dialog to check if the {} count in
   the current script is correct.
20.Fixed mIRCLink INI file bug.
21.Changed toolbar appearance, also toolbar button colours now
   appear correctly under different colour setups.
22.Changed switchbar appearance, also added mini-icons to buttons.
23.Fixed /sline command.
24.Fixed /play not allowing following commands to be processed.
25.Fixed up/down keys in custom window editbox.
26.Improved /loadbuf and /savebuf, can now specify a range of lines.
   eg. /loadbuf 5-25 @moo moo.txt
       /savebuf 1-50 @moo moo.txt
27.Fixed Next/Timestamp conflict in system menu.
28.Fixed finger server problem with unix fingers (?)
29.Can now use %variable for menuITEM or menuTITLE, if the variable
   is not defined, the menu item or entire submenu is not displayed.
30.Changed popup menu routines in various places to accomodate 31.
31.Added "menu" prefix for use in scripts. Allows you to add sub-
   menus to the standard menus:

   menu status {
     <menuitems>
   }

   You can also add sub-menus to the channel, query, nicklist, and
   menubar popups. All loaded scripts are scanned for menus to add.
   For custom windows you can use:

   menu @window {
     [dclick /command]
     <menuitems>
   }

   You can specify @window as the popup filename when creating the
   window with the /window command. The dclick specifies the command
   that should be performed when a user double-clicks in a @window.
   The line-number of the line that was clicked is in $1 for listboxes.

32.Directory displayed to a user in a fileserver now appears as
   a root directory instead of the full directory path on the HD.
33.Added $version identifier which returns the mIRC version number
34.Added /ctcpreply <nick> <ctcp> [message] command.
35.Fixed /unload -rs switch.
36.Added "fixed width buttons" switchbar option.
37.Fixed bug in Installation Program which was resulting in mIRC
   reporting an install error for some people.
38.Added -s switch to /aline, /iline, and /rline, to select the
   line that was just added, or if you want currently selected lines
   to remain selected you can specify the -a switch instead.
39.Fixed memory bug when processing lines in listboxes.
40.Can now also use Alt+APR to switch quickly between tabs in the
   editor dialog.
41.Added $mircini and $ddename identifiers.
42.Now checks for and prevents double-separators in popup menus.
43.DCC Send/Get switchbar buttons now turn light grey when the
   transfer has finished.
44.Optimized DCC Send/Get switchbar buttons progress display routine.
45.Fixed /window [x y [w h]] bug.
46.Fixed text bolding in mark/copy.
47.mIRC now converts old remote .ini files when they are loaded, each
   section is loaded and automatically converted. Removed "convert"
   menu option. Same for /load command.
48.Added on DISCONNECT event, eg.: on 1:DISCONNECT:/echo *gack!*
49.Tooltips should now display correctly under different setups.
50.Fixed small connect retry bug.
51.Fixed window sizing problems when main mirc window is minimized.
52.If "show queries in active window" is checked, private actions
   now appear correctly in a channel window.
53.Added .mrc script file extension to the file dialogs extensions
   list.
54.Added colours toolbar button.
55.Can now get and read long filenames in fileserver.
56.When you press a function key and all windows are minimized, mIRC
   defaults to using the status window.
57.Fixed gpf bug with on start/load/connect combo and /loading files.
   The on connect event now triggers *after* normal processing of the
   End of MOTD raw event.
58.Fixed $readini -n switch.

02/04/97 - mIRC v5.0

Fixes/Additions:
1.Fixed /sound command when used with channels which have
  a . in their name.
2.Title of custom menubar now updates when /loading popup.
3.There's no longer a limit on the number of items in a
  popup menu (apart from the editbox limitation).
4.Fixed /finger bug.
5.Fixed /ignore bug.
6.Fixed $ial() bug.
7.If "show query in active window" is checked actions should
  now appear in the active window.
8.Fixed $online identifier.
9.Fixed problem with /sound when the sounds directory contains
  a space in its name.
10.Fixed notify not being timestamped in certain situations.
11.Added option to strip control codes from log files.
12.Fixed /echo -a gpfing when there's no active window.
13.Added $target identifier.
14.The active item for popups has been removed, only exists
   for the menu bar popup now.
15.Highlighted nickname in channel nick listbox remains highlighted
   after a nick change.
16.Fixed insert/delete keys in URL list window.
17.Fixed $lines() and $read line counting.
18.Added ignore button to DCC Chat/Get dialogs which allows you to
   discard and ignore all incoming Chats/Gets from a user for 30
   seconds.
19.Changed IRC Servers interface in setup dialog.
20.Added invisible mode option to setup dialog.
21.Changed dialogs to use standard dialog font.
22.Added Midi directory setting in sounds dialog.
23.Added $group(number/name) identifier.
   $group(N)          group name
   $group(N).status   on/off
   $group(name)       same as .status
24.Added ON UNOTIFY event, works the same as ON NOTIFY
   except triggers when a user leaves IRC.
25.Can now specify the -n switch with $readini to prevent a line
   from being evaluated.
26.[removed]
27.Delayed Op and Unban now check to see if 1) you're on the channel,
   2) you're an Op, 3) the user exists, before acting.
28.You can now specify different files for each popup menu.
29.Can now save alias/popup/remote files as plain text (non-INI
   format) by not specifying an .ini file extension.

   NOTE: You can't save multiple sections to a plain text file!
   So if you have all remote sections in remote.ini and want to
   save them as plain text, you'll need to save each section to
   a separate file. Same goes for aliases/popups.

30.Fixed channel folder join/names bug.
31.Fixed email address stripping of control chars.
32.The delayed unban now prevents duplicate addresses being
   added to the unban list.
33.Fixed gpf bug when popup item starts with {.
34.[removed]
35.Notify/Unotify now trigger correctly.
36.Query window now displays address of user in titlebar.
37.Added $mididir identifier.
38.Fixed gpf bug when extraneous $+ are used in combination
   with bracketed identifiers.
39.Added custom window creation/manipulation tools.

   /window [-abcdelnorsx] @name [x y [w h]] [/command] [popup.txt] [font [size]]

   Switches:
     a = activate window
     b = update horizontal scrollbar width for listbox
     c = close window
     d = open as desktop window
     e = editbox
     l = listbox
     n = minimize window
     o = if opened on desktop, place ontop
     r = restore window
     s = use a sorted list
     x = maximize window

   @name     = window name (must prefix with a @)
   x,y,w,h   = left top width height
   popup.txt = popup filename, loaded when needed
               (must be a plain non-ini text file)
   /command  = default command
   font/size = font name and size (defaults to status window font)

   You can also use /window to manipulate some of the above
   settings for an existing custom window.

   You can use the following commands to manipulate lines:

   /aline [-cN] @name text     add line to list
   /dline       @name N        delete Nth line
   /iline [-cN] @name N text   insert line at Nth line
   /rline [-cN] @name N text   replace Nth line
   /sline       @name N        selects Nth line

   Where -cN allows you to specify the line colour.

   You can use the $window(N/@name) identifer to access the
   following custom window information:

   $window(N).x      left
   $window(N).y      top
   $window(N).w      width
   $window(N).h      height
   $window(N).state  minimized/maximized/normal

   To access the lines in a custom window you can use:

   $line(@name,N)    returns Nth line
   $sline(@name,N)   returns Nth selected line (listbox only)

40.Can now /load popups with these switches:
   -ps status popup
   -pc channel popup
   -pq query/chat popup
   -pn nicklist popup
   -pm menubar popup
41.Fixed indexing bug with alias/popup/remote processing.
42.[removed]
43.mIRC now stores relative (instead of full) file/directory
   paths, if a path lies inside the mIRC directory.
44.Made (most) buttons the same size.
45.Parameter identifiers changed to:

   $n     for parameter n
   $n-n2  for parameters n to n2
   $n-    for parameters n onwards

   $parm has also been discontinued, you can use the above
   to refer to remote parameters from now on.

   Note: This version of mIRC still supports the old $1 and
   $parm for now but only the above is documented.

46.Added (v1 isvo v2) comparison to check if user v1 has a
   voice on channel v2.
47.Fixed $numeric not being set when matching any raw event.
48.Added /loadbuf and /savebuf commands.

    /loadbuf [lines] <window> <filename>
    /savebuf [lines] <window> <filename>

   Where [lines] indicates the number of lines you want to
   load/save from the end of the file.
49.Can now prevent message display for /ignore, /auto, and
   /protect with the . prefix.
50.Alias/popup/remote dialogs can now be resized and will
   remember their size/position.
51.The alias, popup, and remote dialogs have been redesigned
   to cope with various improvements (see below).
52.You can now load multiple alias files.
53.To /load, /unload, /save files you can use:
     /load <-a|-pscqnm|-ruvs> filename
     /unload <-a|-rs> filename
     /save <-pscqnm|-ruv> filename
54.The remote dialog and script routines have been improved.
   The format of definitions has changed to:

   ctcp 1:PING:/echo etc.
   on   1:JOIN:#:/echo etc.
   raw  1:*:/echo etc.

   This allows all of these to be intermixed in a single
   script file. The remote dialog has been altered to cater
   for only 3 types of files: Users, Variables, and Scripts.

   You can load as many script files as you require. Events
   will trigger all script files as independent scripts.

   You can also define aliases in a script by using the
   "alias" prefix:

     alias test /echo this is a test alias!

   You can also enter initialization commands which are run
   when a script is *first* loaded by using:

   on 1:LOAD:{ etc. }

   And initialization commands which are run whenever mIRC
   is first run (and loads scripts automatically) by using:

   on 1:START:{ etc. }

   The START section also runs after the LOAD section when
   a script is first loaded.

   If a script is loaded from within the remote dialog, auto-
   run commands are not executed until the dialog is closed.

   The above allows a whole script of ctcps, events, and raw
   and it's related aliases and initializations to be edited
   and distributed in one file.

   Note: mIRC automatically splits your current remote.ini
   into separate files and translates the ctcp, event, and raw
   entries into the new format. To convert old files into the
   new format use the Convert option in the Remote dialog and
   load them in as an .ini file because mIRC will need the
   header info eg. [commands] [events] [raw] to know how to
   translate them.

55.Added on INPUT event which is triggered when a user enters
   text into an editbox and presses enter:

   on 1:INPUT:/echo you entered $1-

   You can use /halt to prevent mIRC from processing the text.

56.$chan is now $null if an event is not a channel event.
57.Can now add/change/remove aliases from a specific alias
   file (not script files) with:

     /alias [filename] <aliasname> [commands]

   When adding/replacing/removing an alias, all alias files
   are purged of the specified alias.

58.If a file doesn't exist mIRC doesn't create it if there's
   no information to save to it.
59.Now allows empty lines in aliases and scripts.
60.#group names in scripts now use "on" and "off" instead of
   "start" and "disabled" (conversion program will translate
   these automatically).
61.Added script #group indexing to speed up group processing.
62.Added on USERMODE event.

   on 1:USERMODE:/echo Set usermode to $1-

63.Can now /echo =nick etc.
64.Added on CONNECT event which triggers when the end of an
   MOTD is reached after connecting to a server (same as the
   perform section).

   on 1:CONNECT:/echo connected!

65.[removed]
66.Fixed "maximum sends" check not working in fileserver.
67.Added $inmidi returns true if midi is playing, false if not.
68.Added on MIDIEND event which triggers when a midi finishes
   playing (but not if you stop it by playing another midi or
   using /splay stop).

   on 1:MIDIEND:/echo finished playing midi file!

69.Fixed /halt not returning $null.
70.Fixed odd popup menus gpf bug.
71.Added Find option to URL menu in URL list window.
72.Fixed processing of incoming server NOTICES which don't
   have the source and target specified.
73.Can now use & character as a wildcard one word match, eg.

     &     lines would &
     These lines would match

74.Now displays notices and messages to @#channel correctly (?)
75.Fixed window focus bug bringing main mIRC window to front when
   selecting a window.
76.Server pong echos should display correctly.
77.Speeded up URL-from-text extracting routine.
78.Can now use a nickname as well a number in $send() $get()
   $chat() and $fserv() eg. $send(madgoat).file
79.Fixed offline timers bug.
80.If a remote event calls an alias, that remote events script file
   is searched first for a matching alias and if no match is found,
   all other alias and script files are searched.
81.on DNS $nick is set to $null if no nick is specified.
82.Fixed midi playing bug where mIRC thought that a midi file was
   still playing when it had actually finished.
83.Fixed /play stop bug (?)
84.[removed]
85.Removed switches: own messages are higlighted, actions are purple,
   and windows colours.
86.Added colour configuration dialog. You will notice that colours
   for certain types of information have changed slightly, mainly
   because standardization was required in various places. You can't
   create a custom colour yet, might be added to a future version.
87.Added send/get fail remote events:

   on 1:SENDFAIL:*.txt:/echo failed to send $filename to $nick
   on 1:GETFAIL:*.txt:/echo failed to get $filename from $nick

88.Added $script and $scriptdir which return the file and dir name
   of the currently executing remote script file.
89.Improved $gettok(), can now specify n1-n2 for the number of
   tokens you want returned, eg:

   //echo $gettok(a.b.c.d.e,2,46)     returns 2nd token
   //echo $gettok(a.b.c.d.e,2-,46)    returns tokens 2 onwards
   //echo $gettok(a.b.c.d.e,2-4,46)   returns tokens 2 to 4

90.Added $comchan(Nick,N) identifier, returns channels which both
   you and Nick are on. $comchan(Nick,N).op returns $true if you're
   an Op on that channel.
91.In alias, popup, and remote dialogs can now use Alt+1,2,3,4 etc.
   to switch to a script.
92.Added support for "!nick filename" wave/midi get requests. If
   mIRC receives a request as a private message and you don't have
   a private window open with that person, a new window is not
   opened, but instead the request is displayed in the status window.

   Also has an option to send your own "!nick filename" requests
   as private messages (on by default). This is only done when you
   are on a channel and you specify a "nick" that is on that channel,
   and a .wav or .mid filename.

93.Notifies are now queued and only one line of 500 chars is sent
   at a time. When a reply for that line is received, the next line
   is sent. Once replies for all queued lines have been received,
   the notify results are displayed.
94.The parameter positions of the following identifiers have been
   standardized to fall in line with other identifiers:

   $left(text,N)
   $mid(text,S,N)
   $right(text,N)
   $str(text,N)
   $nick(#,N)
   $nopnick(#,N)
   $nvnick(#,N)
   $opnick(#,N)
   $snick(#,N)
   $vnick(#,N)

   The old formats are still handled but only the new formats will
   be documented.
95.Fixed small /list command bug.
96.mIRC help file now remembers it's last position/size.
97.Can now use the @ must be op prefix with CTCP remote events that
   occurr on channels.
98.Notify list now allows you to use an address as well as a nickname,
   this will only work on IRC servers that allow this.
99.Removed the /commands command, replaced with /ctcps command.
100.Fixed switchbar DCC Button Progress indicator being updated too
    often which might have slowed mIRC down with multiple dccs.
101.Added Wizard which now pops up when a user has problems connecting,
    eg. unable to get/resolve local host, unable to resolve/connect to
    irc server, or being disconnected from a server before the MOTD is
    displayed.
102.Fixed small /play bug, was evaluating identifiers in lines when
    it shouldn't have been.
103.Fixed /titlebar memory bug.

09/01/97 - mIRC v4.72

Fixes/Additions:
1.Fixed Windows Colours option.
2.Fixed gpf on joining channel with control codes in topic (?)
3.Fixed/improved channel mode handling.
4.Can specify a channel key in default channel listbox
  as first word of a topic for a channel.
5.Fixed $+ at end of a line gpfing.
6.Fixed /run and long filenames with spaces.
7.Highlighting text in editbox and then Control-K now places
  cursor right after first control character.
8.Fixed gpf in Channel dialog when listing invalid ban info.
9.Fixed display of fonts for certain character sets.
10.URL catcher now doesn't copy any BURC control characters
   attached to a URL.
11.Fixed checking for recursive custom identifier calls.
   (lack of check was leading to gpfs)
12.$null is now handled better when used with $+.
13.Install program now warns if you are about to install to
   a directory path with spaces in its name and recommends
   installing to a path without spaces.
14.Fixed /server N command.
15.Added $online identifier which returns number of seconds
   elapsed on your online timer (ie. the one in the timer
   dialog).
16.Now allows you to call custom identifers with parameters
   that have a $null value.
17.Added -k switch to /ignore command, allows you to ignore
   BURC codes from someone's text. This works for private,
   notice, kick, part, etc. messages.
18.Fixed marking text that is bold/underlined.
19.Fixed bug with a script not halting properly and continuing
   to process script following it (?)
20.The command parser wasn't stripping out leading and following
   spaces for tokens in a command which may have resulted in
   odd behaviour when processing scripts.
21.Control-Shift-Tab for switching between channel windows
   has been removed since it was conflicting with the normal
   windows default for tabbing backwards through windows.
22.Fixed /ruser nick! command, was removing all entries that
   being with "nick" as opposed to "nick!".
23.Added "Edit" button to channels folder dialog.
24.Fixed $maddress being chopped in ON BAN event.
25.Fixed pressing enter in DCC Send dialog to change directories.
26.Fixed finger command (wasn't sending @ prefix when fingering
   an address without a userid).
27.Added $vnick() identifier to list voiced nicks, and $nvnick()
   identifier to list non-op/non-voice nicks.
28.Added ON UNBAN, works the same as ON BAN.
29.Added ON VOICE/DEVOICE, and $vnick refers to nickname.
30.Fixed bug in installer.
31.Invites to non-channels are now ignored.
32.Fixed text being indented in User and Variable remote sections.
33.Fileserver now let's you cd into a directory with an extension.
34.Changed $findfile() identifier, now allows you to specify
   Nth file eg. $findfile(dir,filespec,N).
35.Fixed DCC percent progress wrapping to zero when sending
   large files (?)
36.If a DCC Get directory doesn't exist, the default get directory
   is used instead, if that doesn't exist, the mIRC directory is
   used.
37.Fixed /ignore for actions.
38.A query window no longer opens for a sound request, the sound
   message is displayed in the status window instead.
39.Added skip MOTD warning.
40.Fixed Menu Bar popup menu not working when all windows
   are closed.
41.Improved Tabs in tabbed dialogs to look more 95ish.
42.Standardized Alias, Popup, and Remote dialogs.
43.Resources for popup menus are now allocated just before a
   popup menu is displayed and are freed immediately after it
   is closed thus conserving resources.
44.Added $dlevel identifier for remote default user level.
45.Added $timer(N) identifier.
   $timer(N)       timer id
   $timer(N).com   command
   $timer(N).time  time
   $timer(N).reps  repetitions
   $timer(N).delay delay interval
   $timer(N).type  online/offline
46.Added option to show DCCs in Switchbar.
47.Now allows - character in Identd UserID.
48.Fixed invalid RAW definition format gpfing.
49.Fixed Beeping when right-clicking in a listbox.
50.Windows minimized to the switchbar don't appear as icons
   first anymore.
51.Wrote my own window list handler, so the Windows list
   now displays desktop windows as well. Also only the first
   50 characters of a windows title are displayed.
52.ON BAN/UNBAN now don't allow wildcard matches of ip/non-ip
   addresses, as well as addresses ending in @*.
53.Setting focus on windows has been improved.
54.Can now use Control-Space to cycle through channel windows.
55.Fixed $mask() when an address with wildcards is specified.

09/12/96 - mIRC v4.7

Fixes/Additions:
1.Fixed time bug (?)
2.ISON now displays a message if user doesn't exist.
3.Fixed small DDE problem.
4.Fixed mIRC defaulting to port 6667 when reconnecting
  to a server.
5.DCC Send/Get window titlebar now immediately displays 0% at
  start of transfer, and only displays 100% when transfer is
  completely finished (was rounding up to 100% before).
6.Fixed small bug in fserve dcc send.
7.Fixed /beep command.
8.Bytes/Size display in alias/popup/remote windows are now
  updated only a few times a second to decrease flicker.
9.Finished reorganizing identifiers-related code.
10.Fixed $away updating after you disconnect and reconnect.
11.Fixed Text Assist bug (?)
12.Can now do /sound [on|off] to enable/disable sound requests.
13.Added $server(N).property identifier to access servers list.
   $server(N)        address.
   $server(N).desc   description
   $server(N).port   port
   $server(N).group  group
14.Added $ial(mask,N) identifier to acces IAL.
   $ial(mask,N)      full address.
   $ial(mask,N).nick nickname
   $ial(mask,N).user user id
   $ial(mask,N).host host
   $ial(mask,N).addr user@host
   This returns the Nth address matching "mask" in the IAL.
   Specify zero for total number of matching addresses. To
   scan the whole of the IAL you can use $ial(*,N). If N is
   zero, the total number of matching entries is returned.
15.[removed]
16.Added /identd [on|off] [userid] command.
17.Fixed bug in /ignore address matching.
18.Can now use [type] parameter with /auto to look up
   users address (like ignore).
19.Channels, Notify, and Url list listboxes now have a horizontal
   scroll bar added to them.
20.Added $url(N).property identifier to access urls list.
   $url(N)        address
   $url(N).desc   description
   $url(N).group  group
21.When using /sound and /wavplay, the Waves directory and ALL of
   its subdirectories are searched for the specifed wave filename.
   This allows users to organize their sounds into subdirectories
   without having to worry about directory paths.
22.Added 1:ON DNS:/echo $nick $iaddress $naddress $raddress event.
   If /dns <nick> was used then $nick refers to <nick> otherwise
   it refers to your own nickname. $iaddress refers to the ip
   address, and $naddress refers to the named address. $raddress
   is the resolved address. If $raddress is $null then that means
   that the address could not be resolved.
23.Fixed @ (must be channel Op) prefix for remote definitions
   preventing a definition from being performed if the event is
   not a channel event. eg. @1:ON TEXT:*:*:/etc. which reacts
   to private messages as well as channel messages.
24.Added $idle identifier which returns same idle time as that
   returned by ctcp USERINFO or FINGER.
25.Added $numeric identifier which refers to the number of the
   raw event that matched a remote definition.
26.[removed]
27.Ctcp ping reply now displays ping time in hr/min/sec format.
28.Fixed memory bug in Tab display routine, also improved display
   of tabs slightly.
29.Added 1:ON ERROR:*text*:/echo $parms event.
30.Added Extension<->directory association in DCC Options dialog.
31.Fixed empty line in editboxes in options dialog causing
   following lines to be lost.
32.DCC Get dialog now displays listbox of directories from the
   extension associations for quick directory selection for
   miscellaneous file types.
33.Servers.ini file is reloaded each time the Setup window is
   opened to make sure that any changes made to it externally
   are available. eg. if someone downloads a servers.ini file.
34.Now allows you to configure a separate Popup menu for use
   in a channel window. If no channel popup menu is defined it
   defaults to using the status window popup menu in a channel.
35.When marking text for copying, the marked block is not cleared
   if new text is printed in the window, instead the scrollbar
   is updated to indicate there is new text below. If you were
   at the bottom of the buffer when you started copying, mIRC
   will automatically scroll down to the bottom of the buffer
   after you finish copying.
36.I added an /echo -a switch which echos to the active window.
   If the active window is not a status, channel, or query/chat
   window, it defaults to the status window.
37.For remote events that have no associated $chan value, $chan
   refers to a channel that both you and the user that triggered
   the event are on, on which you are an Op.
38.Fixed small bug with /set.
39.Can now do /log [on|off] [windowname].
40.If a user hasn't entered a UserID for the Identd server or if
   their current userid contains invalid characters, mIRC asks
   them for a new userid. Permitted characters:

      .    (0x2E)
      0-9  (0x30-0x39)
      A-Z  (0x41-0x5A)
      _    (0x5F)
      a-z  (0x61-0x7A)

41.Added $wildsite remote identifier which returns the address of
   the user who triggered the event in the form *!*@host.domain,
   added mainly to speed things up since *!* $+ $site is used a lot.
42.Added /perform [on|off] command to turn on/off perform section.
43.Speeded up text display routine slightly.
44.Added $ticks identifier which returns the number of ticks
   since your O/S was first started.
45.Ignoring CTCPs doesn't ignore actions anymore.
46.Added double-click alias option for Notify window.
47.Now using a new indexing method to speed up alias, popup, and
   remote script processing.
48.Using an /if as the first command in a $read line now works.
49.In channel windows, Shift-TAB now switches the focus between
   the editbox and the nicknames listbox.
50.Control-Shift-Tab now cycles through channel windows.
51.Server notices are now displayed in purple.
52.Added "Timestamp" switch to window system menus.
53.mIRC now ignores dcc sends/chats to port 19.
54.Fixed window focus problem when mdi/non-mdi windows open (?)
55.Can raise a number to the power of another using ^ operator.
   eg. set %x 2 ^ 8
56."End of /who list" now displays who you were doing a /who on.
57.Now handles DALnets 310 numeric.
58.Added skip MOTD on connect switch.
59.Modified Event Beeps interface a bit.
60.Speeded up variable lookup routine and [] processing.
61.Rewrote text mark/copy routine.
62./timestamp [-a|e|s] [on|off] [window] is now used for turning
   on/off timestamping in windows. If only on/off is specified
   with no window, the global timestamp switched is turned on/off.
   -s = for status window
   -a = for active window
   -e = for every window
63.For ctcp commands, $chan is now filled with a channel name if
   you received the ctcp via a channel.
64./flood now ignores *!*@site.
65.$active identifier now returns window names more intelligently.
66./return can now return both numbers and text.
67.For servers that specify who placed a ban in the ban list, mIRC
   now displays this info in the /channel dialog ban list.
68.$server now returns $null if you are not currently connected
   to a server.
69.Added $fserv(N), improved $chat(N), $get(N), $send(N).

    $chat(N)           nickname
    $chat(N).ip        ip address
    $chat(N).status    active, waiting, inactive

    $fserv(N)          nickname
    $fserv(N).ip       ip address
    $fserv(N).status   active, waiting, inactive
    $fserv(N).cd       current directory

    $get(N)            nickname
    $get(N).ip         ip address
    $get(N).status     active, waiting, inactive
    $get(N).file       filename
    $get(N).size       filesize
    $get(N).rcvd       bytes rcvd
    $get(N).cps        chars per second
    $get(N).pc         percent complete

    $send(N)           nickname
    $send(N).ip        ip address
    $send(N).status    active, waiting, inactive
    $send(N).file      filename
    $send(N).size      filesize
    $send(N).sent      bytes sent
    $send(N).lra       last rcvd ack
    $send(N).cps       chars per second
    $send(N).pc        percent complete

70.Can now create your own identifiers, eg. in the aliases section
   create an alias:

     add { %x = $1 + $2 | return %x }

   And then use it in a command //echo Total is: $add(4,21)
   Can define as many parameters as you want: $add(1,2,...,N).
   Built-in identifiers of the same name have priority.
71.Added "default port" setting to setup/options dialog.
72.Can now use /timer [-o] etc. to start an offline timer. Offline
   timers are not stopped if you are disconnected from the server,
   however all other timers are. If you are not connected to a server
   and you try to start a timer, it defaults to being an offline timer.
73.Chat and Query MDI switches are now separate.
74.Alias, Popup, and Remote editboxes now remember their cursor
   line positions and jump to them automatically for each window.
75.Added "Desktop" switch to a window's system menu to toggle mdi/
   desktop display of the window.
76.Can now specify a window name with /clear [window].
77.If an address that is in the auto-unban list of the /ban command
   is unbanned manually, it is removed from the unban list.
78.PONGs from users are now ignored.
79.Using new method to lookup Local Host and IP Address. mIRC now
   connects directly to server and issues a /userhost nickname to
   lookup users address and then does a /dns to resolve the IP
   address. This means that a user isn't prevented from connecting
   to a server if there are any local host lookup problems and it
   also means mIRC will be using a named address that has been
   verified by the IRC server so there should be no problem looking
   up the IP address. The DCC Send/Chat toolbar buttons are enabled
   the moment the lookup is completed successfully.
80.Now uses /userhost instead of /whois to look up addresses from
   the server.
81.The /run command now uses a different method to run files, it
   allows you to run files based on association as well.
     eg: /run notepad.exe readme.txt   or   /run readme.txt
   It also uses this new method to view .txt files in the help
   menu as well as in other parts of mIRC.
82.Can now do /who <channel> <address> and only users on the
   specified channel are displayed.
83.Fixed bug with variable not being evaluated if preceeded by
   the text "set" in a line.
84.Now also using new faster indexing method for IAL.
85.Fixed empty [ ] brackets gpfing.
86.Servers are no longer stored in memory but are looked up
   when needed from the servers.ini file.
87.DCC Send/Get completion info printed in status window now
   also includes time taken and cps.
88.Fixed "error sending data" message at end of dcc send.
89.Variables can handle spaces a bit better now eg. single
   spaces, preceeding spaces, etc.
90.Fixed "fake" PONG messages being displayed.
91.Added support for bold/underline/reverse characters. Can
   use Ctrl-B,U,R to insert these characters into an editbox.
   If you first mark text in the editbox, it will be enclosed
   in starting and ending control characters, otherwise one code
   will be inserted. If you hold down the shift-key, two codes
   are inserted and the cursor positioned between them. You can
   also use Control-O to insert a reset character which turns off
   all the above settings.
92.Added support for colour characters, use Control-K to insert
   a colour control char (0x03) into text in an editbox.

   eg. if * is the control char then:

    *     Selects Default Text and Background
    *1    Selects Colour 1 for Text, Default Background
    *1,5  Selects Colour 1 for Text, Colour 5 for Background

   Colours currently range from 0 to 15.
93.Added flood protect options tab to options dialog.
94.For an ON QUIT event, a users name is now removed from
   all channel listboxes *after* this remote event has been
   processed, not before it.
95.Added $strip(text) identifier which strips out all bold,
   underline, reverse, and colour control codes from text.
96.File dialog defaults to showing ini, txt, or wav files
   depending on file being selected.
97.Fixed multiple IRCop-greeting bug thingy.
98.Fixed notify update bug.
99.Fixed ON TEXT $chan being filled with users nickname when
   trigger is a private message.
100.Added a switchbar to allow easy switching between windows.
    If you click on a button with the left mouse button and
    the window is minimized, it is restored, if it is already
    restored, it is minimized. If you click with the right mouse
    button, the windows system menu pops up. You can turn the
    switchbar on/off in Options/Extras dialog.
101./ban won't allow you to initiate a ban if you don't have Ops.
102./amsg and /ame now don't send an individual message for each
    channel etc.
103.Page up/down now works in channel listbox.
104.Channels dialog, "Limited to" option allows more digits.
105.ctcp ECHO is no longer replied to.
106.ctcp PING no longer replies to non-numeric values and numeric
    values longer than 25 characters.
107.Added $usermode identifier.
108.Channel topics are now stripped of control characters.
109.ON MODE event has changed format to:

    1:ON MODE:#channel:/commands...

    And it no longer enforces modes. $parms is now filled with
    the mode change that was made.
110.Under a 256 colour display the orange colour appears light brown
    instead of orange, all other colours should look exactly the
    same under different colour displays.
111.Fixed ON BAN double-wildcard-string-matching. Was giving false
    matches in certain situations eg. * at end of a string.
112.Changed ordering of masks to:

    Type 0: *!user@host.domain
    Type 1: *!*user@host.domain
    Type 2: *!*@host.domain
    Type 3: *!*user@*.domain
    Type 4: *!*@*.domain
    Type 5: Nick!user@host.domain
    Type 6: Nick!*user@host.domain
    Type 7: Nick!*@host.domain
    Type 8: Nick!*user@*.domain
    Type 9: Nick!*@*.domain

    The mask types for all routines and identifiers are now identical.
    /guser /dns etc. commands all default to type 6 which is the same
    mask as before.
113.When mIRC is in the process of doing a channel listing and it
    receives a "server load to high" numeric 263, it now resets the
    channels list button and other related parameters.
114.Ignores DCCs to a channel.
115./userhost with no reply is now displayed.
116.Added "on top" option for switchbar.
117.Added $duration(seconds) identifier.
118.Added $nofile(filename) which removes the filename and
    only returns any remaining path.
119.Added $findfile(dir,filename) which searches the specified
    directory and its subdirectories for the specified file and
    returns the full path and filename if it is found.
120.Added /ial [on|off] command.
121.Added token handling identifiers:

    $addtok(text,token,C)     - adds a token to the end of text but
                                only if it's not already in text.
    $findtok(text,token,C)    - returns Nth position of token in text
    $gettok(text,N,C)         - returns Nth token in text
    $instok(text,token,N,C)   - inserts token into Nth position in text
                                even if it already exists in text.
    $remtok(text,token,C)     - removes 1 matching token from text
    $reptok(text,token,new,C) - replaces 1 matching token with new
                                token in text

    $gettok() replaces $token(), however $token() is still
    supported for this version.

122./ulist now searches the whole of the users level list for
    a matching level.
123.A user level can now be a word, for example:

    2,5,op,9,prot:*!*@mardam.demon.co.uk

    op:ON JOIN:#:/mode $chan +o $nick

    Named levels are = levels ie. they work exactly the same
    way that = levels work.
124.Added strip options to options dialog. These strip out
    control characters from incoming notices and messages.
125.Fixed memory/socket reading bug.
126.Pressing Enter in the parameters dialog without entering
    any text now returns $null.
127.Kick, Part, Quit messages have Control-O appended to them.
128.Improved channel MODE change handling, mIRC updates the
    mode settings itself so there's no longer a delay.
129.ON MODE reacts to initial mode lookup when mIRC first
    joins a channel.
130.Rewrote /auser & /guser routine. Code is cleaner, same
    speed, works better eg. doesnt allow redundant levels,
    and fixes bugs in the old routines.
131.Added wildcard halting of timers. eg. /timer?* off
132.Fixed messages to #host.mask.
133.Install program now only creates one backup directory and
    overwrites any files in it if they already exist.
134.Channels folder now also allows you to enter descriptions
    for channels.
135.Added $chan(N/#).property identifer:

    $chan(N/#)         channel name
    $chan(N/#).topic   topic
    $chan(N/#).mode    mode
    $chan(N/#).key     +k key
    $chan(N/#).limit   +l limit

    $mode() and $topic() are no longer supported. However
    $channel() is still supported for this version.
136.Support for the :> redirection in remote definitions has
    been removed.
137.Added /strip [+-burc] command.
138./wavplay command has been replaced with /splay command,
    which can play both .wav and .mid sound files. Can also
    use "/splay stop" to stop a .mid file playing. /wavplay
    is still supported for now. 
139.The /sound command and related options (ON NOSOUND, etc.)
    can now work with .mid files as well as .wav files.
140.Improved/simplified code in the install program.

07/09/96 - mIRC v4.6

Fixes/Additions:
1.Now handles various combinations of : and { at the
  beginning of a remote definition.
2.Fixed :> redirection.
3.Fixed separator handling in popup menus.
4.ON SNOTICE can now be prevented from displaying info.
5.Now does NOT evaluate identifiers in a command issued
  from the command line. If you want to force identifers
  to be evaluated, you can prefix the command with two
  // instead of just one /.
6.Fixed $1 $2 etc. not working with Function keys.
7.Fixed $dir and $hfile identifiers.
8.Fixed ON KICK missing $parms.
9.Fixed variables section not being saved if commands
  section is empty.
10.Fixed DCC Windows not being minimized properly.
11.Explicit support for the DO ctcp command has been
   removed. If a user wants to use a DO in their ctcp
   definitions, they would have to specifically make
   mIRC perform any parameters that another user sends
   as commands, eg.:

   1:DO:$parm2*

12.Fixed the -s switch in /echo.
13.Fixed $readini with missing parameters gpfing.
14.$read and $readini now return $null if a line isn't found.
15.Extended the functionality of [ ] so that if they enclose
   only a single parameter they will evaluate it even if it
   has already been evaluated. eg.:

   set %x %y
   set %y Hiya!
   /echo [ [ %x ] ]

16.DCC Send, Get, Chat, and Fserv now use different Icons.
17.The = switch in remote definitions 1:COMMAND:= wasn't
   working properly.
18.Fixed =$nick for on serv/chat.
19.Now handles site bans or masks for addresses that only
   have an x.x format instead of the usual x.x.x format.
20.Fixed Aliases "Save To" only saving to mIRC directory.
21.Fixed $asctime() gpf bug.
22.DDE USERS now prefixes nicknames with @ or + if necessary.
23.Now cannot use /writeini to remove items or sections, must
   use the /remini command which takes the same parameters.
24.Added $exists(filename) to check if a file exists,
   returns $true or $false.
25.Added -n switch to $read which prevents the line read in
   from being evaluated or parsed ie. it's treated as text.
26.Added /wallops <message> command.
27.Now supports DALnet /part #channel [message]. The message
   is limited to around 60 characters.
28.Fixed extra separator lines being added to certain popup
   menus occasionally.
29.Now allows you to dcc chat yourself.
30.Now saves URLs to the urls.ini file.
31.Added $maddress which specifies the currently matched
   user address for an event in the remote:

   1:TEST:/echo $fulladdress matched $maddress

   And added $maddress(address) which returns a matching
   address from the remote user list:
32.If the filename specified in $read has no path, it defaults
   to the mirc.exe directory (like all other commands).
33.Can now /load -r and /save -r (raw definitions).
34.Added Load/Save items to URLs pop menu which let you
   load/save any URL file.
35.Join/part/other text messages are now wrapped.
36.Can now press return in a multi-line editbox in the
   middle of a line without sending the text.
37.Added "Play wave" option to notify list which lets you
   choose a wave to play when a specific user joins IRC.
38.Added "show notices in active window" option in IRC
   switches, and also improved the way notices are
   displayed.
39.Fixed memory bug in fileserver.
40.Improved memory allocation in copy/paste routine.
41.Displays /whowas reply with @ in address.
42.The aliases for .hlp files added to the Help menu now have
   the lowest command precedence ie. if an existing alias or
   command of the same name exists, the .hlp alias is never run.
43.Now also adds .txt files to the dynamic help menu.
44.The IAL is updated a bit more intelligently to allow
   remote definitions to access nicknames that have just
   joined/left a channel.
45.Fixed time-out gpf bug which affected Send/Get/FServ.
46.Now triggers ON PART when *you* part a channel.
47.Added $longip(IP address/long IP) which converts a dotted
   IP Address to a long IP, and vice-versa.
48.Fixed message not being wrapped when a query window
   first opens.
49.Fixed GPFs occurring when viewing URLs.
50.Fixed "me:" prefix for remote definitions.
51.Now supports a /list result with or without RPL_LISTSTART,
   to accomodate ircd 2.9.x.
52.Can now specify a filename when saving a window buffer.
53.Added option "Only show notifies in notify window".
54.Fixed "Bad Username" server reply if new user entered an
   invalid email address (the userid part was being used
   in the ident server).
55./echo 1 $asc($mid(3,1,hi there)) was returning 0 for a space,
   now returns 32.
56.Added "fast screen update" option to Extras dialog. This
   speeds up text printing by updating the screen after each
   "batch" of text instead of each line.
57.Moved "Ignore" to first position in Control dialog.
58.Added a new flood protection method. Just use
   /flood [on|off] to turn it on and off.
59.ISON notify lines are broken into less than 500 character
   lines now.
60.Added option "Show finger requests" to Options dialog
   in Servers section.
61.Fixed /oper with wrong password GPFing (?)
62.Prefixing a command with . prevents it from displaying
   its usual message (apart from error messages).
63.Fixed #$$?#="Enter a channel name:" type identifier.
64.Added ON WALLOPS event.

   1:ON WALLOPS:*text*:/command...

65.Fixed $true/$false/$null not working in certain
   comparisons.
66.Fixed info lines sometimes not being displayed in
   DCC Send/Get windows.
67./halt can now prevent the usual text output of raw
   numeric events (for most events).
68.Added $bnick identifier which refers to the nickname
   of the user being banned. This is not always filled
   since sometimes a nickname isn't specified with a
   banmask.
69.Now displays all user modes in status window titlebar.
70.Improved display of info for unknown numerics.
71.Fixed status window not closing when it's opened as
   Desktop window and mIRC is exited.
72.Added $ulevel and $clevel which store the remote user
   and command levels that matched for an event.
73.The channels list is no longer stored internally but
   completely stored in and accessed from the channels.txt
   file.
74./remote [on|off] now affects the raw section as well.
75.Can now do /raw [on|off] to turn the raw section on
   and off.
76.Fixed mode event -l or -k skipping parameters in a
   mode change.
77.Notify window now displays note next to each nickname.
78.Tweaked INI routines.
79.When an error occurs in a DCC Send/Get/Chat, the dcc
   window is now closed if "auto-close" is selected in
   dcc options.
80.Added ON NOSOUND event triggered when someone sends you
   a SOUND request and the sound doesn't exist.

   1:ON NOSOUND:/msg $nick I don't have $filename

81.Changed toolbar buttons appearance.
82.Can now do /partall <message>
83.In ON NICK event when you change your nick, the $me
   identifier is only updated after remote definitions have
   been processed.
84.Now handles #,&,+ channels in aliases, popups, remote,
   dialogs, etc. This might affect a few things since &
   and + are now special prefix characters.
85.Now saves Servers in servers.ini file.
86.Tweaked DCC Send/Get routines and fixed problem with
   DCC windows not displaying the correct information in
   certain situations.
87.Standardized INI prefix to "n" for all saved information.
88.Results from a /who and /whois are now used to update
   the Internal Address List if the user is on a channel
   which you are on. eg. /who #channel.
89./speak now supports both Text Assist and Monologue.
90.Now displays #*.server.co.uk type messages properly.
91.Dropped files with spaces in the filename are now enclosed
   in "" quotes.
92.Fixed $parmN1-N2 bug.
93.Added "Font" item to Tools menu.
94.Clicking on "Unban" to unban addresses while in the
   Channels dialog now also sets the topic and modes if
   you've changed them.
95.Fixed bug with command prefix infront of if/else/elseif
   not working properly after { brackets.
96.Fixed RAW definitions being processed from the bottom
   of list upwards.
97.Supports /globops command for DALnet.
98.Can now prevent Quit messages from printing in status
    window with /halt.
99./userhost results now update IAL.
100.Improved /whois lookup code for /guser,/ruser,/finger,
    /dns, etc. commands that look up a users address.
101.Fixed sending multiple files with /dcc send command.
102.Added identifiers $mode(#) and $topic(#) which return
    the mode/topic of channels which you're currently on.
103.Added identifier $count(string1,string2) which returns
    the number of times string2 occurs in string1.
104.Speeded up remote processing a bit.
105.DCC Get problem for netcom users fixed.
106./links now displays links list properly on ircd 2.9.1 which
    sends the list in reverse order (are we surprised? ;)
107.Notify pause time between checks is now based on the total
    number of nicks in your notify list. The minimum pause time
    is 20 seconds, the maximum pause time is 50 seconds.
108.An alias cannot call *itself* anymore (except indirectly by
    calling another alias which calls it).
109.Improved editbox processing routine slightly: now processes
    text entered into it even if another window is active or
    on top of it.
110.Added /close -icfgms [nick1] [nickN] which closes windows of
    the specified type and nicknames. If no nicknames are given,
    all windows of the specified type are closed.
    i = only close inactive windows (doesnt apply to message windows)
    c = chat
    f = fserve
    g = gets
    m = message windows
    s = sends
111.Removed /closechats, /closefserves, /closedccs commands. These
    are replaced by the /close command.
112.Removed /maxdepth command.
113.Added $timestamp identifier returns time in [xx:xx] format.
114.Now allows you to enter multiple Ports (separated by commas) for
    each server. A random port will be picked at each connect.
115.Fixed dcc get time-out bug.
116.Removed "Show transfer progress as percent" switch, now only
    displays progress as a percentage.
117.Added "Display fileserver warning" switch to dcc options dialog.
118.Can now hold down the Shift key when tiling to tile vertically.
119.Fixed channel nickname list updating incorrectly with certain
    combinations of /mode results.
120.Now supports the ircd 2.9.1 ^G in a JOIN.
121.Now triggers the part event if you close a channel window
    manually by clicking on the close button.
122.The TAB key nickname list now only stores the nicknames of people
    who sent you normal query/channel messages, not ctcps.
123.Fixed /timer bug.
124./unset can now use wildcards, so /unset %test* will unset all
    variables beginning with %test.
125./alias now tells you which alias it's adding/removing.
126.Fixed gpf bug when low number values are used with time
    related functions/identifiers.
127.Calling an alias from another alias only passes the required
    parameters and not all parameters.
128.Now also handles .chat files which contain tab characters.
129.Negative value variables are now handled properly.
130.Reorganized identifiers-related code a bit (still in progress).
131.Fixed small bug in installation program.
132.Added Event beeps on/off switch in event beeps dialog, also
    added an /ebeeps [on|off] command.
133.Fixed MDI channel window listbox/scrollbar display bug.
134.Fixed /unset %var1 ... %varN.
135.Can now hold down Shift key when clicking "connect" toolbar
    button to force mIRC to connect to last server and port
    again, instead of picking a new server or port.
136.Fixed /return bug.

06/07/96 - mIRC v4.52

Fixes/Additions:
1.Fixed UTC permanently.
2.Fixed invalid ctcp replies causing a gpf.
3.Fixed /play bug.
4.Fixed scrollbars not being set properly in some windows
  when they first open.
5.Changed method of adding Icons to program manager
  in Installation program.
6.Fixed bug in Installation program when installing into
  directory names with spaces in them.
7.Fixed the COMMAND DDE topic to work better with certain
  types of poked commands.
8.Fixed bug with Popup menus when using { } brackets to
  enclose commands in different level menu items.
9.Fixed channels folder bug not allowing you to join a
  channel unless it was first added to the list.
10.In COMMANDS, $parm1 now refers to the actual COMMAND.
11.Server notices are now only displayed in status window.
12.Added $address(nickname,type) which scans the internal
   address list and returns a users address if it's found.
13.Added $logdir, $getdir, $wavedir, $mircdir which return
   current directory paths for each location.
14.Identifiers in remote/popup commands which call aliases
   are now evaluated before the alias is called.
15.Fixed ON NOTIFY not being triggered by notify event.
16.mIRC will no longer allow the DO ctcp command to execute
   at or below the default user level.
17.Now allows /group, /enable, and /disable commands to be
   used with the RAW section.
18.Changed description of Protect option which said it worked
   with addresses.. it can only work with nicknames.
19.Added $lf = chr(10) linefeed and $cr = chr(13) return.
20.Added $lof(filename) which returns the size in bytes of
   the specified file.
21.Added $pos(string,substring) which returns the position
   of substring in string.
22.Fixed bug in remote when parsing { } brackets, was miscounting
   and skipping definitions.
23.Made remote routines less strict in the type of format
   they expect in definitions. eg. the :> redirection.
24.The channels.txt file now does not store channels that
   were excluded in the "Hide" parameters section.
25.Added $send(N) and $get(N) which return currently open
   send/get windows.
26.Fixed $chat(N) so it only returns the nickname of the user.
27.Now allows multiple channel names as variables, eg:

   1:ON JOIN:%chan1,#mIRC,%chan2:etc...

   Or you can do:

   1:ON JOIN:%channels:etc...

   Where %channels is a list of channels separated by commas.
   You can't *combine* these though.
28.Added $mask(address,type) which returns the address
   with the specified mask.
29.Identifiers are now passed correctly when calling an alias
   from another alias.
30.Added command line parameter -ppassword for use with the
   -jchannel parameter. Specifies password to join channel.
31.Now supports the PASSWORD parameter in .chat files for
   joining a channel with a password.
32.Added ON CHATOPEN, CHATCLOSE, SERVOPEN, SERVCLOSE events.

   1:ON CHATOPEN:/commands...

33.Added /flushini <filename> which flushes the ini file to
   disk if it is currently being cached.
34.Added /closedccs, /closechats, and /closefserves, which
   close all inactive send/get, chat, and fserve windows.
35.Added $nopath(filename) identifier which returns only
   the filename with no path.
36.Fixed $$ not working when used in $$1 $$2 .. $$N.
37.Added $replace(string,substring,replacement)
   and $remove(string,substring).
38.Speeded up processing of identifiers and commands.
39.Speeded up display of info in /links window.
40.Fixed NT bug... it didn't like low-level assembly routines.
41.Fixed +v/-v mode display in channel nicknames listbox.
42.The default /list setting for minimum number of people
   on a channel has changed from zero to four.
43.Using /halt to prevent certain EVENTs from being displayed
   has been removed. It worked, but the order of display of
   information became non-intuitive and confusing. Will find
   a better way to do this for the next version.
44.Added $result identifier which stores the result of
   a /return <result>. The result can be a number between
   0 and 30,000.

30/06/96 - mIRC v4.5

Fixes/Additions:
1.Major improvement of code in many places. mIRC
  now processes many things faster.
2.Fixed possible bug with invalid nicknames being
  added to nick list on a channel.
3.Fixed a bug in DDE routines which caused a GPF if
  external applications were too slow at processing
  DDE messages.
4.Rewrote remote routines, they now look much less
  like spaghetti and work better.
5.Can now use [ and ] evaluation brackets to control
  the order of evaluation of identifiers. Identifiers
  within brackets will be evaluated first, from left
  to right. You can nest brackets. This allows you to
  evaluate things any way you like...

  /notice $nick " $+ [ $read [ -s + [ $parm1 ] ] c:\text\note.txt ] $+ "
  /say % [ $+ [ $1 ] ]

  Definitions without evaluation brackets are evaluated
  the same way as before, though I've also improved the
  normal evaluation method slightly.
6.Fixed small $read bug.
7.Can now use server addresses in User list in remote.
8.Added MDI options dialog to the Window menu which
  allows you to specify for each individual window if
  you want it opened as an MDI or as an independent
  desktop window.
9.Standardised command error reply to: * /command: <message>
10.Can now use delete key to delete URLs in URL window
   and Insert key to add a new url.
11.Can now use Control-Tab to step through the different
   tabs in the setup and options dialogs.
12.Wrote a setup program which allows you to install mIRC
   in a directory of your choice, creates backups of your
   current files, validates the zipped files to make sure
   they're not corrupted, and adds icons to the program
   manager for you.
13.Improved DCC Send file dialog, can now select more than
   nine files at a time to dcc send.
14.Fixed scrollbar sometimes not being positioned properly
   in certain windows.
15.Added /titlebar command which allows you to change the text
   in the titlebar on the fly.
16.Added protect list to options dialog, now works
   exactly like auto-op command, can specify channels
   for each nick.
17.DCC Send/Get/Chat are now fully dynamically allocated
   structures ie. there is no limit on the number of DCCs.
   This speeds up dcc send/get processing a lot. This also
   fixes a few small bugs related to the way the older
   structures were being used.
18.Improved the DCC Send/Get transfer windows, they now
   give information such as time taken, estimated time
   for transfer, characters per second, etc., and a
   progress bar.
19.Window sizes for Chat/Server/Send/Get windows are now
   saved seperately for each type of window.
20.Added ON BAN remote event, works like ON OP.

   5:ON BAN:#tree:/mode $chan -b $banmask

21.Added option to Links window popup menu which lets you
   switch between displaying links as plain text or
   in a listbox.
22.Wildcard routine now allows ? character to match any
   single character, the * is used as normal to match
   multiple characters. This affects matching text in
   ON TEXT, etc. as well as user addresses. Also fixed a
   small bug that was causing mismatches in certain cases.
23.Now allows multiple channels in a remote event
   definition:

   1:ON OP:#moo,#help,#test:/notice ...

24.Now allows %variables to be used in the text and
   channel positions of an event definition:

   1:ON TEXT:%text:%channel:/notice etc ...

   You can also use %variables for ctcp command names:

   1:%variable:/notice etc...

25.Added a RAW section to the remote which catches NUMERIC
   events. This has it's own separate editbox because if
   mIRC had to scan your whole remote events definitions
   for each numeric event, things would slow down to a
   crawl.

   322:*mirc*:/echo 2 $parms

   This would print all lines which have the word "mirc"
   in them when you do a channels /list (this is a pretty
   intensive test).

26.Fixed bug with notify list not being updated correctly
   when a user changed nicknames.
27.For remote events and ctcp commands you can now prevent
   the normal text associated with that command from being
   displayed by using the /halt command.

   1:ON JOIN:#mIRC:/echo 3 #mirc [Joins $nick] | /halt

   So from now on when anyone joins channel #mIRC, only
   that text is displayed in the channel.

   Be warned: you can use this to prevent query windows
   from opening, plus other things which mIRC usually
   does for an event (though nothing critical).
28.Window structures are now fully dynamically allocated
   so there is no limit on the number of windows which can
   be opened. This also speeds up processing quite a bit.
29.Now allows alias, popup, and remote definitions like:
   <prefix definition> {
     /command1 ...
     /command2 ...
     /command3 ...
   }
   One line definitions are handled the same as before.
   The characters { } now have special meaning so you
   can't use them as normal text anymore.
30.Major improvement of memory usage in command parser.
31.Added "View" URL option in channels list popup menu
   which extracts and views a URL immediately.
32.Added a /goto command which can be used in { } definitions.

   /greet {
     /set %x 0
     :retry
     /inc %x
     /goto %x
     :2
     /echo bye!
     /halt
     :1
     /echo hi!
     /goto retry
   }

   You can also use a variable as a goto name, eg.

   :%jumppoint

   if you "/set %jumpoint 5" then you can do "/goto 5"
   and mIRC will evaluate %jumpoint to 5 and jump to it.

33.You can now use the /return command to finish processing
   an alias command and to allow any default processing to
   continue. eg.

   1:ON JOIN:#mIRC {
     /echo 3 #mirc [Joins $nick]
     /return
     /echo 3 #mirc I'm not printed!
   }

34.Added "Always On Top" setting to system menu of windows
   when they are opened as desktop windows.
35.Text in status, queries, and channels windows is now
   rewrapped to fit the window whenever a window is resized
   or a font is changed.
36.Added two new events:

   1:ON FILESENT:*.txt,*.ini:/echo Sent $filename to $nick ( $+ $address $+ )
   1:ON FILERCVD:*.txt,*.ini:/echo Received $filename from $nick | /run notepad.exe $filename

   These only react to successful DCC transers.
37.Added /writeini command and $readini identifier which use
   the built-in ini routines to write/read standard ini files.

   /writeini <inifile> <section> <item> <value>
   $readini <inifile> <section> <item>

   These will allow better control of storage of different
   types of information into different sections in a file.
38.Now allows aliases to call other aliases, or even to call
   themselves recursively. As a safeguard against infinite
   loops, the default maximum recurse depth is set at 10. This
   can be changed with the /maxdepth command. The minimum
   depth allowed is 1 (aliases can't call other aliases) and
   the maximum is 100. Calling aliases from within aliases
   uses quite a bit of memory, so this might cause problems
   in certain situations where memory is low etc.
39.The /links window now has the save buffer option in the
   system menu.
40.Now supports Drag-and-drop files onto channel, channel nick
   listbox, query/chat, and notify windows. Can define aliases
   for each type of dropped file, as well as different aliases
   if the Shift key is pressed when the file is dropped. See
   Drag-drop tab in options dialog.
41.The /set /unset /inc /dec commands now default to not
   displaying information unless called directly from the
   command line. To force them to display info, you can use
   the [-s] switch eg. /set -s %x 1
42.Improved the copy routine slightly... if lines being copied
   originally belonged to the same line, then they are combined
   instead of separated. If you want to force mIRC to copy text
   exactly as it appears in the window then hold down the SHIFT
   key when you do the mark/copy.
43.In remote, instead of using the * prefix for commands to
   be performed only when you're an Op, you can now use the @
   sign. Both are handled, but I will only specify the @ in
   the documentation since it makes more sense.
44.Increased maximum items for popup menus from 300 to 600.
45.Now ignores any mirc.ini in the windows directory and uses
   the mirc.ini in the current mirc.exe path.
46.Invalid CTCP messages are not replied to anymore.
47.Fixed a small time-out bug related to dcc send/get/chat.
48.New Identifiers:

   $abs(N) returns the absolute value of number N.
   $chr(N) returns the character with ascii number N.
   $asc(C) returns the ascii number of the character C.

   $len(text) returns the length of "text".

   $upper(text) returns "text" in uppercase.
   $lower(text) returns "text" in lowercase.

   $left(N,text) returns N left characters.
   $right(N,text) returns N right characters.
   $mid(S,N,text) returns N characters starting at S.
   $str(N,text) returns "text" repeated N times.

   $token(N,C,text) return Nth token separated by character C
                    (C is the ascii number of a character)

   $lines(file) return number of lines in specified file.

   $nick(N,#) returns Nth nickname on channel #.
   $snick(N,#) returns Nth selected nickname on channel #.
   $opnick(N,#) returns Nth Op nickname on channel #.
   $nopnick(N,#) returns Nth non-Op nickname on channel #.

   $channel(N) returns the Nth channel that you are on.
   $query(N) returns the Nth query window you have open.
   $chat(N) returns the Nth dcc chat window you have open.

   $notify(N) returns the Nth notify nick currently on IRC.

   For the above identifiers you can specify N as 0 (zero)
   to get the total number of nicks/channels/etc. for that
   identifier.

   $snotify   returns notify nick currently selected in
              notify list box.

   $level(address) finds a matching address in the remote
                   users list and returns its levels.

   $away returns the value $true or $false.

   Identifiers/variables can be placed inside the brackets.

   Example: /echo $right(3,$left($len(goats),ToMooOrNotToMoo))

49.Added a simple /if statement...

   /if v1 operator v2 { ... }
   /elseif v1 operator v2 { ... }
   /else { ... }

   Example:

   if (((%x == 2) || (%y >= 3)) && ($1 == $parm1)) { echo match1! }
   else if ($len(%input) == 5) { echo match2! }
   else echo no match!

   If/elseif/else can all be nested inside each other. You
   should use () and {} brackets to make sure that you're
   terms are evaluated correctly though you don't *have* to
   use them.

   Using brackets also speeds up processing quite a bit since
   mIRC then knows exactly what it has to evaluate.

   Available comparisons:

   ==    equal to
   !=    not equal to
   <     less than
   >     larger than
   >=    larger than or equal to
   <=    smaller than or equal to

   //    is a multiple of
   \\    is not a multiple of

   isin  string v1 is in string v2
   iswm  wildcard string v1 matches string v2

   ison  nickname v1 is on channel v2
   isop  nickname v1 is an op on channel v2

   isnum number v1 is a number in the range v2
         which is in the form n1-n2 (v2 optional)

   ischan if v1 is a channel which you are on.

   isauto  if v1 is a user in your auto-op list for
           channel v2 (v2 optional)

   isignore if v1 is a user in your ignore list with the
            ignore switch v2 (v2 optional)

   isprotect if v1 is a user in your protect list for
             channel v2 (v2 optional)

   isnotify if v1 is a user in your notify list.

   To negate the above you can prefix them with an !
   exclamation mark.
50.In all definitions, you do not need to specify the
   / command character any more for commands since it
   is really only needed when typing commands into the
   editbox. This also means you don't need to specify
   the / when defining aliases, etc. See 51.
51.Variables or identifiers that don't evaluate to a value
   now return the value $null so they can be used in the
   if statement for checking etc. eg.

   listops {
     echo 4 * Listing Ops on #
     set %i 1
     :next
     set %nick $nick(%i,#)
     if %nick == $null goto done
     if %nick isop # echo 3 %nick is an Op!
     inc %i
     goto next
     :done
     echo 4 * End of Ops list
   }

52.When entering text in an editbox you can now hold down
   the CONTROL key when pressing Enter and the text will be
   sent as plain text even if it begins with a command
   character. This will also work when you paste text into
   the editbox.
53.Text in Alias, Popup, and Remote ediboxes is now auto-
   indented when { } brackets are encountered.
54.Enlarged DCC Chat dialog to make it easier to use.
55.You can now use an = (equal sign) to assign values to
   variables.

   %x = 5 + 1
   %x = 5 - %y
   %x = %x * 2
   %x = %z / $2
   %x = %x % 3

   Can only perform a single operation in an assignment
   at this time. You can also still do /set %x 5 + 1.
56.Added $ctime identifier which returns total number of
   seconds elapsed since 00:00:00 GMT, January 1, 1970. This
   can be used with PING to find out how many seconds it took.
57.Added ON CTCPREPLY to listen for replies to ctcps. eg.:

   1:ON CTCPREPLY:PING* {
     if ($parm2 == $null) echo [ $+ $nick PING reply]
     else {
       %pt = $ctime - $parm2
       if (%pt < 0) set %pt 0
       echo [ $+ $nick PING reply] %pt seconds
     }
     halt
   }

58.Identifer $active returns the full name of the currently
   active window.
59.Added Font button to alias, popup, and remote dialogs
60.mIRC now automatically gets your web browsers path and
   name from the registry if it's there.
61.Channels list is now saved to a file "channels.txt" and the
   channels list dialog now has "Apply" and "Get List" buttons.
   If "Get List" is pressed then a list is read from the server,
   if "Apply" is pressed then the latest list is used whether in
   the channels listbox or in the "channels.txt" file. The date
   time and server name are also stored in this file.
62.Added "Save to file" item in channels list popup menu which
   allows you to save the currently displayed list to a file.
63.Added "PORT" item to DDE which returns the current irc
   server port you are using.
64.If userid in ident server is empty then mIRC assumes you're
   a new user and automatically fills in the userid from the
   email address you entered and turns on the ident server.
65.Can now use the /quote command to do the same thing as /raw.
66.Now supports server-side filtering on UNDERNET channels for
   the minimum and maximum number of users on a channel. This
   means that you will only receive a list of channels which
   match your choices for these two criteria.
67.Can now use Alt-J to pop up the channels folder dialog.
68.Speeded up display of Channel nicknames listbox. This actually
   affects quite a few other things in mIRC since the channels
   listbox was being used to store the nicknames for each channel.
   Now the nicknames are stored internally. Any command or
   function that involves checking/using nicknames is now far
   faster than before.
69.Now sounds an event beep when a chat that you initiated
   makes a connection.
70.Can now set a string variable to an empty string with "".
   eg. set %name ""  or  %s = ""
71.Text in the alias/popup/remote dialogs is now displayed
   quickly.
72.The Wait cursor is now used in more places to give a
   better indication of when mIRC is busy doing something.
73.Can now select multiple files in the Log File listbox
   to make deleting files easier.
74.For $read and /play you no longer need to specify the
   number of lines in a file on the first line of the file.
   If you do, mIRC will use the number and will work faster,
   if you don't mIRC will count the lines itself.
75.Can now use Control-Break to break out of a currently
   executing alias in case it's in an infinite loop, etc.
76.mIRC now defaults to using aliases.ini, popups.ini, and
   remote.ini files if these files aren't specified in mirc.ini,
   and if these sections aren't found in mirc.ini. If these
   files don't exist, mIRC will create them.
77.Added /alias command which allows you to add and remove
   aliases from the aliases list. Only works for *single line*
   aliases.
78.Colour now works in DCC Chats.
79.Speeded up Tab display in setup and options dialogs.
80.Fixed Editbox bug when pressing enter and text isn't sent.
81.DDE Server now defaults to ON with service name MIRC.
82.Added "CONNECT" DDE topic, which connects you to a server and
   joins a channel. The data format is: irc.funet.fi,6667,#mIRC,1
   where the last digit is a 1 or 0 indicating whether you want
   mIRC to be activated or not. This is an XTYP_POKE.
83.Converted some routines to assembly to increase speed.
84.Added $asctime() which converts the value returned by $ctime
   or a PING into a full date in text format.
85.Added support for ctcp UTC.
86.Now ignores DCC-related ctcps sent to a channel.
87.Shift-F1 now pops up the keyword search dialog for the help file.

27/04/96 - mIRC v4.1 (final bugfix release)

Fixes/Additions:
1.Fixed /sound being limited to eight character
  channel/nick names.
2.Fixed mirc.ini file being corrupted in
  certain situation.
3.Fixed servers sorting bug in setup dialog.
4.Added /links window which displays a list
  of all servers in the network and allows
  easy connecting, etc.
5.Fixed character | bug in nicknames/userids.
6.Fixed small ON CHAT bug.
7.Fixed DCC Get minimize button not remembering
  setting.
8.Fixed $ bug.
9.Fixed icon highlighting bug.
10.Fixed bug that was intermittently affecting
   various commands.
11.Fixed /ctcp with "dcc" in nickname bug.
12.reFixed Beep.
13.Fixed not replying to server PING bug.
14.Fixed /unset command not working in an alias.
15.Now saves window buffer to ".log" instead
   of a ".txt" file.
16.Added Log file listbox and View/Delete log
   to Logging options dialog.
17.Now displays in the status bar the *actual*
   address of the server you connect to.
18.Improved context sensitive F1 help key to
   work with more dialogs.
19.Fixed small identd and finger bug.
20.Added Fileserver warning dialog to warn
   new users.
21.Added $hfile identifier which is like the $file
   dialog except it lists files horizontally.
22.Fixed fileserver "read" command bug.
23.Added option to display identd requests.
24.Improved mark/copy text routine a bit.
25.Remodelled about dialog.
26.Fixed socks firewall access.
27.Added $++ identifier which works the same as
   the $+ identifier but does the concatenation
   after the previous item has been evaluated, so
   something like this works now:
     /say " $+ $read c:\test.txt $++ "
28.Auto-join on invite now ignores invites to
   channel 0. (/join 0 makes you part all channels,
   seems to be an irc server feature).
29.Finger window is restored if it is minimized
   when you try to do a finger.
30.Changed /list command so you don't have to prefix
   the wildcard text with a #. eg. /list help
   and /list *help* is turned into /list help
31.Now displays /whois Idle time in hours/minutes/
   seconds format instead of just seconds.
32.Clicking on "Arrange Icons" now places icons
   behind open windows when arranging them.
33.Now shows both server name and Port number
   when connecting.
34.Status window default height is now larger.
35.Now handles "erroneous nickname" better.
36.If no directory is specified in the wave filename
   for the /wavplay command, it now defaults to the
   wave directory specified in the Sound Requests
   options dialog.
37.Other things.

20/03/96 - mIRC v4.0 (final version)

Fixes/Additions:
1.Fixed standard editbox popup menu under 95 not
  being displayed on a right mouse-click.
2.Fixed problem with /ctcp to a user with "dcc"
  in nickname.
3./query command pops an existing window to the
  front if it's hidden.
4.Fixed "parameter dialog" popping up bug.
5.Fixed Channel Dialog gpf bug if kicked while
  dialog still open.
6.Dynamic help menu now displays a list of .hlp files
  in mIRC's directory, as well as the readme.txt,
  versions.txt, and update.txt files, for quick
  access. Also adds internal aliases that match
  these filenames, so if you have "winsock.hlp" in
  the help menu you can type /winsock <topic>. The
  menu is always updated before it is displayed.
7.[removed]
8.Added "play wave" options to event beeps section.
9.Now remembers DDE settings across sessions,
  added to "Servers" section in options dialog.
10.Added "Popup notify window on connect" option.
11.Added new configurable menu which allows you to
   add a menu to the main menu bar. This menu has
   the functionality of both the main, query,
   and nickname popup menus, and allows you to
   define commands that work in different types
   of windows.
12.Can now test for and prevent SOUND ctcp's
   in the remote.
13.Fixed channel list "Hide" parameters being
   erased in certain situations.
14.Modularized Tab dialog routines so now they're
   "completely" independent of the rest of the code.
15.Improved setup dialog/server selection:
   a) Added "group" definition to servers. When sorting
      the servers list this groups servers with the
      same group name together.
   b) Added "connection retry" options. One second
      delay inbetween connect retries.
   c) Can select multiple servers to connect to.
   d) Can do "/server groupname" which will cycle through
      all servers of group "groupname" when trying to connect.

   NOTE:
   When using the 16bit mIRC, winsock will "freeze" sometimes
   when cancelling a connection. This is because winsock has
   to timeout... as far as I know, mIRC can do nothing about
   this since it is built-in to winsock, so even if mIRC
   cancels a connection, winsock still waits for 10 seconds
   *anyway* before completing the cancellation. This might
   result in other problems.

16.Added "Popup channel folder on connect" option.
17.Now capitalizes the first word in a ctcp message.
18.Notify:
   a) Now has it's own window in options dialog.
   b) Number of nicks is unlimited.
   c) Allows little notes for each nickname.
19.Added /commands [on|off], turns remote commands on/off.
   /events [on|off] turns only events on/off, and
   /remote [on|off] now turns both commands and events on/off.
20.Added other beep/close options to dcc options dialog.
21.Fixed $parms bug, was only storing first 256 chars.
22.Added "Place ? marked urls at top of list" option in url options.
23.Can now do "/ignore -auN", which unignores the
   specified address after N seconds. Can now also do,
   /ignore -apcnti, where p=private,c=channel,n=notice,
   t=ctcp,i=invite.
24.Can now enter auto-op addresses with channels,
   eg. nick!user@address,#mirc,#mircplus
25.All /dde commands are now buffered and sent at intervals
   specified by the DDE delay option.
26.Added /clearall command which clears buffers of all
   status, channel, and private windows.
27.Now warns you if you try to quit mIRC when there are
   DCC Transfers in progress.
28.[removed]
29./links command results are now displayed in a coloured
   tree fashion to make it more readable (?)
30.Added "pop up setup dialog on startup" option.
31.Improved speed of text display slightly.
32.Fixed /rlevel not removing levels in certain situations.
33.Added -s<text> option to /write command, scans file for a
   line beginning with <text> and writes to it.
34.[removed]
35.Added /groups [-e|d] command which lists all, enabled,
   and disabled groups in remote definitions.
36.Can now use #$?#="etc." which will ask for a channel
   name if you try to use the command in a non-channel
   window, otherwise it uses the channel name of the
   currently active channel window.
37.Command parsing routine completely rewritten, much
   more robust and evaluates identifiers etc. more
   intelligently now. However, because of increased
   processing/checking etc. this routine is now slower
   than the older routine.
38.Moved Ident server options to setup dialog.
39./speak command requests are now also placed
   in delayed DDE queue.
40.Added variable support:
   /set [-q] <%var) [value]
   /unset [-q] <%var> [%var2] ... [%varN]
   /unsetall
   /inc [-q] <%var> [value]
   /dec [-q] <%var> [value]
   Can be edited in Variables section in remote dialog.
41.Iconized Notify and Url windows are now highlighted
   whenever their contents change.
42.Notify and URL toolbar buttons are now also highlighted
   if either the window isn't open or isn't active.
43.Fixed /ctcp nick VER bug.
44.Fixed beeping bug where mIRC wasn't beeping properly
   for some users.
45./sound now doesn't require you to specify a message.
46.Added $level which represents users level in remote.
47.Added /remove <filename> which deletes the specified file.
48.Added $cd which represents users current directory
   in a fileserver session (Used in ON SERV event).
49.Specifying a nickname in the finger dialog now works
   the same way as /finger <nickname>.
50.Can now use /nick while not connected to server:
   /nick <nickname> [alternate]
51.Fixed bug in resolving dns addresses.
52.Fixed /finger not resolving for some users.
53./auto and /ignore now *add* an address by default,
   to remove an address you can use the -r switch.
   ie. they do not toggle anymore.
54.Added Firewall option, doesn't allow DCC's through
   a firewall yet though.
55.Added "IP method" option for users with different
   winsock setups.
56.Fixed DCC Sending a file with the same name as users
   nickname (would result in an error message).
57.Fixed URL sorting in url window.
58.Now tests to see if dcc send filename is a system device,
   if so dcc send is ignored.
59.Fixed & characters in editboxes in options dialog
   being messed up.
60.Fixed disappearing ini and temp files not being removed (?)
61.Fixed "read" in fileserver allowing read access to files
   outside home directory.
62.Fixed occasional "notice" gpf.
63.Fixed ctcp TIME missing trailing ^A.
64.Fixed Status window saving/reset not working.
65 Can now specify -sgroupname on the command line.
66.Other bits and pieces.

06/01/96 - mIRC v3.92

Fixes/Additions:
1.Fixed /sound gpf bug.
2.Fixed security bug in remote.
3.Fixed gpf bug on windows opening due to old
  window pos/size format in mirc.ini.
4.Changed fingers storage method in mirc.ini.
5.Improved Channels List dialog.
6.Popups are now fully allocated dynamically.
7.Changed $file identifier to display only files,
  can now use $dir to display both directories
  and files.
8.Added /font command which pops up the font
  dialog.
9.Added "Extract URL" menu item to channels list
  popup menu, which extracts a URL from a channels
  topic and puts it in the URL list.
10.DCC Send "percent" info is now updated when
   an Ack is received, not when a packet is sent.
11.Fixed $parms not working with $read.
12.Speeded up tabs display in options dialog slightly.
13.Small improvements in DDE response speed.
14.Function key aliases can now execute several
   commands by using the | command seperator.
15.Fixed DCC gpf problem (?)
16.Fixed $read not closing files in certain situations.
17.When entering text in an editbox mIRC now beeps
   when you are within 30 characters of the maximum
   allowed line length.
18.mIRC now works with the three major WWW Browsers.
19.Fixed '=' prefix processing bug in remote.

28/12/95 - mIRC v3.9

Fixes/Additions:
1.Fixed the /join KEY bug.
2.Add -q switch to /raw which makes the /raw command
  work "quietly", not printing out what it's sending.
3.Fixed channel folder dialog not remembering
  added/deleted channels when pressing OK.
4.Now /ignores invites as well.
5.Fixed the remote DO command.
6.Can now handle &channels, fully supported in aliases,
  popups, and remote definitions.
7.Redecorated. Tending towards simple and uncluttered
  menus and interface.
8.Removed font dialog, can now change a font only from
  a windows system menu.
9.Can now do /me or /action in dcc chat windows.
10.The 32bit under 95 now saves logs and buffers using
   the full length filename.
11.ON TEXT etc. now allow wild card matches using
   multiple * in the match text.

   NOTE: the text matching routine in ON TEXT etc.
   doesn't use the = sign anymore, as it's now redundant.

12.Found bugs in the wildcard matching routine while
   making ON TEXT work with it. Fixed.
13.Made Tabs in options dialog more 95-ish. The bold
   font is still there though, sorry, I like it!
14.mIRC now does NOT reply to unknown ctcp messages,
   it just prints them in your window as usual and
   then ignores them (as per the RFC).
15.Aliases now work better when called from remote
   definitions.
16.Fixed -l# switch in play command.
17.Improved positioning of various dialogs.
18.DALnet URL catching on joining a channel now works.
19.Nicks in notify list are no longer forced to lowercase.
20./save can now be used in an alias with | separators.
21.Added -stext option to $read, which scans the specified
   file for a line beginning with the specified text.
22./pop delay is now randomly *close* to the number you
   specify as a delay.
23.Fixed /server N (specifying server number).
24.Fixed window bug possibly related to dcc gpfs.
25.Added -u# switch to /ban command which specifies delay
   time before unbanning the specified ban. Minimum delay
   time is 10 seconds. If no number is specified, it defaults
   to 30 seconds. eg. /ban -u15 nick
26./fingering a nick now only adds the nick's address to the
   fingered addresses list, not the users whole irc address.
27.Now allows an unlimited number of /timers.
28.Fixed ini specification on command line.
29.Improved dynamic memory allocation in various places.
30.Added notify list window. Can use the toolbar notify button
   or /notify [-sh] to show/hide the window. Please note that
   there is a minimum window width under 95 that I haven't
   been able to override.
31.Address returned by IAL was sometimes invalid. Fixed.
32.Added [-ar] switches to /notify, /protect, /ignore,
   which forces the command to -add or -remove a nick
   instead of toggling it.
33.Added $site identifier for remote addresses.
   eg. for khaled@mardam.demon.co.uk
   $site = mardam.demon.co.uk
34.Now allows /sound in dcc chats.
35.Added minimal DDE support, as well /dde command and
   a $dde identifier, to be expanded. See DDE section in
   help file for description
36.Added "Edit" button for editing finger file in options
   dialog.
37.Can now access popup menus in the notify, URL, and channels
   list window through the keyboard. Pressing RETURN performs
   a "double-click", pressing SPACE pops up the popup menu.
38.Added Alt-N for notify and Alt-U for URL windows.
39./msg command now by default doesn't switch to the
   window you're sending a message to unless you specify
   the [-s] switch. eg. /msg -s hiya!
40.Added /timestamp [on|off] command.
41.Added /partall command which parts all the channels
   you're currently on.
42.Added "Minimize DCC get window" option.
43.Added $adate (for US style month/day/year),
   and $fulldate which spells it all out.
44.Added a "time to activate" option to the /timer
   command, eg. /timer1 11:30 1 1 /say It's now 11:30am
45.Fixed "filename" in quotes with no spaces bug.
46.Fixed using $?="text" identifier.
47.Added $file identifier, eg. in a popup menu item:
   Play Wave:/wavplay $file="Select a Wave!" c:\waves\*.wav
48.Fixed disappearing aliases/popups/remote bug, where
   filenames for each of these were being reset to the
   mirc.ini file.
49.Added a "/timers off" switch which allows you to turn
   off all active timers.
50.Alt-L now pops up the Channels List dialog.
51.Added /disconnect command, hard disconnect from server
   without a /quit.
52.Fixed ON SNOTICE reacting twice to server notices.
53.Fixed/Improved other bits and pieces.

25/11/95 - mIRC v3.8

Fixes/Additions:
1.Added option to show invites in active window.
2.Fixed $! bug.
3.Added option to auto-resume existing files.
4.Fixed /echo with invalid parameters gpfing.
5.Option dialog now remembers it's "view" across
  sessions.
6.Paused op wasn't clearing a nick from it's list
  immediately if a nick parted or quit, but had to
  timeout first.
7.Added /speak <text> command which uses monolog
  to speak the specified text.
8.Added /dns <nick/address> which resolves addresses.
  If mIRC sees a "." in the name you specify it assumes
  it's an address and tries to resolve it. Otherwise
  it assumes it's a nickname and does a /whois to
  find the users address and then looks it up. If you
  give it an IP address, it looks up the host name.
9.Removed small users window in remote dialog, now
  using one big window for users, commands, and events.
10.The Add Dialog has been discontinued. Check out the
   alias, popup, and remote dialogs for the improvement.

   IT IS *HIGHLY* RECOMMENDED THAT THE ALIAS, POPUP,
   AND REMOTE SECTIONS BE SAVED SEPERATE FROM THE
   MAIN MIRC.INI FILE FROM NOW ON. THE MIRC.INI
   CAN'T HANDLE THE STORAGE OF LARGE AMOUNTS OF
   INFORMATION AS REQUIRED BY THE ALIAS, POPUP,
   AND REMOTE SECTIONS.

11.Finally fixed DCC Send/Get windows sometimes
   not auto-closing at end of transfer (?)
12.Right-clicking in a non-active window will now
   bring it to the top and make it active.
13.Fixed socket error message when running second
   copy of mIRC (didn't actually affect anything).
14.For new users, mIRC no longer copies the mirc.ini
   to the windows directory but leaves it and uses it
   in the same directory as the EXE. However, if it
   finds an mirc.ini in the windows directory it will
   use it (to remain compatible with older users).
15.Small fixes relating to Function keys.
16.Can now use /load -apuce <file.ini> or
   /save -apuce <file.ini> to load and save aliases,
   popups, and remote sections from the command line.
   NOTE: You can only refer to one section at a time,
   so you can't do /load -ap some.ini.
17.All memory in the parsing and remote routines is
   now allocated dynamically.
18.Added ignore options to dcc send/chat in the dcc
   options dialog. Can also use /sreq and /creq
   (send request and chat request) with the parameters
   [ ask | auto | ignore] from the command line.
19.Added "ON CHAT:text:/msg ..." and ON SERV events to
   scan text in dcc chat windows and fileserver windows.
20.Added command line option to connect to a server and
   join channels which is more of a standard WWW link
   definition: //server:port/#channel,#channel
21.Fixed GPF problem for some users when quitting mIRC (?)
22.Added /flush [levels] command. This clears the remote user
   list of nicknames that are no longer valid. For each nick
   in the user list that matches the specified levels mIRC
   checks to see if that nick is on any of the channels that
   you are currently on. If not, the nick definition is removed
   from the user list. If you do not specify [levels] then
   mIRC clears all nicks from the user list that don't exist
   on channels you are on.
23.Added "me" prefix to remote definitions, eg.:
   me:1:ON JOIN:/msg etc...
   This limits a command definition to reacting only to
   events caused by your client. This is useful in case you
   use Bots which have the same address as you.
24.The address in the Finger dialog now defaults to
   the last address which was fingered.
25.The /play command has been improved in a major way, 
   it can now queue requests (see the help file!)
26.Fixed bug with highlighting in query windows.
27.Added Finger server (must be set up in a certain
   way, see the help file on how to do this).
28.Added ON SNOTICE event, which listens for server
   notices and can filter them ie. prevent them from
   being displayed.
29.Remodelled the setup dialog. Can now also store
   an unlimited number of servers.
30.If /finger sees a "." in the parameter you give it, it
   will assume it's an address and will finger it, otherwise
   it will assume it's a nickname and will do a /whois on the
   nick to find their address and use that for the finger.
31.Added option to change tooltip delay.
32.Split the "Beep on window message" option into two...
   "Beep on channel message" and "Beep on query message".
33.Fixed the notify bug which would result in mIRC telling
   you all the people on your notify list are on... then
   off... then on... then off...
34.Simplified /timer code and fixed a small bug in it.
35.Command line window buffer has increased to 30 lines.
36.Now catches server numeric 328 for URL description
   when joining a channel on DALnet (they might not have
   implemented this yet).
37.Fixed toolbar buttons colours when the default system
   colours are changed.
38.The 32bit mIRC can now dcc send/get LFN's with spaces
   in them. Unfortunately, other clients won't be able to
   receive these properly! See the "DCC Send" section in
   the help file which explains the problem.
   You can also do: /dcc send nickname "this is a.text file"
39.Added -nnick1,nick2 command line option which sets
   your nicks to these values.
40.Overhaul of irc and parsing routines, simplified and
   speeded up.
41.Added [on | off | close] to /url command to turn on/off
   catching urls and to close the URL window.
42.Added option "Show modes in channel".
43.Now gives the reason why you can't join a channel.
44.If you have "rejoin channel when kicked" turned on
   and you are kicked, mIRC will keep the channel
   window open while it tries to rejoin and will only
   close it if it can't.
45.If a /play filename doesn't have a directory spec. it
   defaults to the mirc.exe directory.
46.Added a flexibile /write command which writes lines
   to a file.
47.Added "Show queries in active channel window" which
   shows private messages from other users in a channel
   window without opening a query window.
48.Added "TAB" key putting "/msg nickname" into the editbox
   where "nickname" is the nick of the last person who
   messaged you. If you press TAB repeatedly it cycles
   through the nicks of the last five people who messaged
   you.
49.Now shows who set the topic and at what time when you
   join a channel on Undernet and DALnet.
50.Fixed small bug with the /sound command not checking
   properly if a sound file exists.
51.The Options dialog now uses Tabs. I had trouble using
   existing TabDialog DLL's, so I coded my own Tab
   display routines.
52.Fixed /channel dialog bug which would occur if you
   typed /channel repeatedly while it was in the middle
   of retrieving the channel info.
53.Fixed a problem with /whois replies, the format of
   the reply has changed and is hopefully clearer now.
54.Can now also define Shift and Control Function key
   definitions.

24/10/95 - mIRC v3.72

Fixes/Additions:
1.Fixed $parms not being passed in a redirection.
2.Can now /play to any channel/nick without needing
  to have that window already open.
3.Added -ttopic option to /play which looks for the
  specified [topic] in a text file and plays it to
  the specified nick/channel.
4.Added $pnick identifier which refers to the nick/channel
  which is currently being played to, so you can use it
  in /played commands.
5.Allows #$parmN to force a parameter to be a channel.
6.Fixed DCC Resume filesize bug.
7.Added option to show notifies in active window.
8.Completely reorganized the Options dialog as it was
  too crowded and it was getting harder to add new options.
  Now divided into sections, and also incorporates the
  options in the extras, url, sounds, and ident dialogs.
  The menus and toolbar buttons have been re-organized
  accordingly.
9.Fixed QUIT bug when exiting mIRC while still connected.
  It was sending a part instead of a quit to the server.
10.Fixed /timer not releasing it's memory in certain
   situations.
11.Fixed positioning of : in some raw commands.
12.Fixed setting of focus to windows.
13.Added option to dump joins/parts to status window.
14.Now shows DCC transfers percentage/size at head
   of window title for win95 users.
15.Messages from irc ops of the form $address or
   #address are now displayed in the server window
   in pretty purple as opposed to opening up a query
   window.
16.Added "clear list" button to dcc chat dialog (the
   DCC Send dialog uses the same list).
17.The /pop delay value can be up to 15 seconds now.
18.The weird DCC Send dialog bug was fixed (?)
19.Improved copy/paste routine memory allocation.
20.Fixed /sound with invalid parameters gpfing.
21.Fixed some toolbar colours not being displayed
   correctly for some buttons.
22.Number of channels in channel list window is now
   shown at beginning of title.
23.Text printed with the /echo command is now wrapped.
24.Added $r(v1,v2) identifier, returns random number
   or letter between v1 and v2.
25.Fixed Ident server time-out bug.

12/10/95 - mIRC v3.7

Fixes/Additions:
1.An *iconified* channel list window is not restored
  if a /list is done, instead it's icon is placed above
  current windows (without focus) for easy access.
2.The Join Channel dialog can now handle multiple
  selections.
3.The /timer can now work with aliases again.
4.Can now prevent an identifier from being evaluated
  the first time through the alias routine by prefixing
  it with a ! for example: $!read, $!url, $!me, etc.
  This allows you to use it in a /timer command if you
  want the identifier to be re-evaluated every time.
5.Fixed /channel dialog bug and improved memory
  allocation for the ban list.
6.Fixed bug in status window sizing.
7.Fixed Timer dialog bug, when selecting cancel
  timer wasn't being reset correctly.
8.Improved grouping of switches in options dialog.
9.Fixed "disconnected" bug while trying to connect
  to another server if already connected to one.
10.Cleaned up popup menu routines.
11.Major improvement in robustness of input,
   general irc, and remote routines.

            BACKUP YOUR MIRC.INI FILE(S)

12.Wrote my own read and write INI routines for parts of
   the mirc.ini file since the standard INI routines
   were too slow. Loading and saving is almost instant now.

13.Fixed windows not being saved/closed properly on exit.
14./play now works when used in remote commands.
15.Added /echo command which prints text in the specified
   window (for debugging purposes).
16.Now using 0x04L in dialog definitions so that
   3D dialogs under win95 are automatic.
17.Can now do "/server N" where N is the Nth server
   in the server list.
18.Fixed font selections not being saved correctly.
19.Added URL catcher window which automatically catches
   URLs from text in channels etc. and stores them in
   a listbox. You can then send a URL to your WWW browser
   directly through mIRC. Type /url [-d] to open the window.
   Use -d to clear all ? marked items before showing the list.
20.If a nick in the notify list is prefixed with a + sign
   a /whois is done on it on a notify.
21.Added sounds dialog and a new /sound command which
   allows multiple users on a channel to hear sounds at
   the same time (assuming they have the same wave files).
   format: /sound [nick/channel] <file.wav> <message>
22.Fixed problem with % in channel names (and other things).
23.Fixed channel dialog "Key already set" bug.
24.Added $url identifier which references the currently
   active URL in your WWW browser.
25.Added option in extras dialog to redefine command char.
26.Now automatically sets cursor to last edited window in
   remote and popup dialogs.

         *** NOTE NOTE NOTE IMPORTANT CHANGE ***

27.Now uses a different format for commands/events:
   Old format: 1:PING:/notice *1:$nick hi there
   New format: 1:PING:/notice $nick hi there
   This greatly simplifies processing, the routines
   are now probably more than twice as fast as before.
   mIRC will automatically detect and convert old format
   definitions on startup (and when /add is used).

28.mIRC now maintains an internal list of nick!user@address
   for all users that are on the same *channels* as you. Whenever
   a /guser, /ruser, or /ban is issued, the internal list is
   searched first to find the nick's address. If no match is
   found, the normal /whois stuff is done.
29.Now opens log files in shared mode.
30.The nickname in the DCC Send dialog now defaults to
   the last nick to which a file was sent.
31.Added $snicks which returns a list of the selected
   nicks in the current channel listbox. The list is
   in the form: nick1,...,nickN, so you can only use it
   in commands which take multiple nicks.
32.Greatly improved/simplified address matching routine.
33.Can now do /ignore <nick> [type] which looks
   up the specified nick's address by doing a /whois,
   same as the /auser, /ban, etc. commands.
34.DCC Get dialog now allows you to specify a different
   directory for the incoming file.
35.In the setup dialog, a server is highlighted after
   it is added to the server list.
36.The nickname in the DCC Chat dialog now defaults to
   the last nick that was chatted to.
37.Aliases can now be called from popup, remote, timer,
   play, and any other definitions. You can now also call
   several aliases on one line seperated by a | like normal
   commands. eg. 1:HELP:/help1 $nick | /help2 $nick
   (Aliases still can't call other aliases).
38.Can now have up to 30 timers, also improved memory
   allocation for timers.
39.Fixed bugs with the /add function.
40.Fixed Clipboard missing last character bug (?)
41.Default directories for the file/dir dialogs
   weren't being set correctly.
42.The /notify command was checking twice instead
   of only once for nicks.
43.The /timer command now also remembers the parameter
   line that was around when the /timer was issued.
44.The 32bit mIRC should now handle LFNs okay.
45.Can now do level comparison for ON KICK, ON OP,
   and ON DEOP, prefix a line with <,>,<=,>=,<>,=
   compares levels of eg. kicker and kicked and only
   executes definition if true.
46.Attempted improvement and cleaning up of server
   oriented commands and their replies.
47."signon time" in a /whois on the undernet and dalnet
   is now shown correctly.
48.Can now specify a server on the command line
   eg. -sirc.server.addr:6667
   and mirc will connect to that server on startup.
   (You can combine this with the -j parameter to
   force it to join specific channels too).

13/09/95 - released mIRC v3.64 patch

1.Fixes the *1-3 type bug.

11/09/95 - mIRC v3.64

Fixes/Additions:
1.Fixed Local Host and IP address bug, added options
  in the setup dialog. Now works for any combination
  of requirements for people with different types of
  internet connections (see Setup in mirc.hlp!)
2.$read command improved so you can specify
  a line number with [-l#]. For example:
  /silly /say $read -l5 silly.txt
  This will read line 5 of silly.txt.
3.Now using "Common Dialogs" for file/directory selection,
  as well as for the DCC Send dialog (Long filenames
  are NOT yet supported).
4.Optimized Remote routines - should be faster now.
5.Can now use $read in remote definitions. For example:
  1:TEST:/notice *1:$nick I said " $+ $read c:\langs\mirc\test.txt $+ "
6.Can now store up to 50 IRC server addresses in Setup dialog.
  Storage format in mirc.ini has changed, but will still read
  the old format.
7.Finger button now pops up a red flag while finger is busy.
  The flag disappears when finger has been completed.
8.Bug with Maximized mIRC window fixed.
9.Finger and Timer dialogs now popup under their
  respective buttons.
10.Added "Channels Folder" button which allows you to join
   a channel as well as maintain a list of your favourite channels.
11.Added "List Channels" button which pops up the List
   parameters dialog, allowing you to quickly list channels.
12.Fixed NT GPF bug when using toolbar.
13.Added -j<#channel> command line option. For example:
   mirc.exe -j#mirc,#friendly,#etc
   The specified channels will be joined on connect. You
   MUST have an mirc.ini with the "Connect on startup" option
   selected.
14.Fixed another bug with using * to begin a non-parameter
   identifier. eg. *mardam.demon* in aliases/etc.

15.The /auser /guser and /ruser commands can now handle multiple
   levels. They have only been extended, so they are still
   compatible with your previous formats.

   /auser [-a] <level(s)> <nick | address>
   /guser [-a] <level(s)> <nick> [type]
   /ruser [level(s)] <nick> [type]

   For /auser /guser, the default is to replace any existing
   user with the specified levels (as usual). The [-a] option
   means add the specified level(s) to an existing users levels.

   The /ruser command removes the specified levels from an
   existing user. If all levels are removed for a user, the
   user is removed.

   See the Remote section in the Help file!

16.Can now do /mode # +oooo nick1 nick2 nick3 nick4
17./play can now be used in a remote/event definition.

18.Extended the /rlevel command to also work with multiple
   levels.

   /rlevel [-r] <level(s)>

   If the [-r] is NOT specified, it works as usual. If
   the [-r] IS specified, the specified level(s) are removed
   from users that have them. If a user's levels are ALL
   removed, the user is removed.

19.Fixed bug with Green box being drawn around iconized
   window in response to wrong messages.
20.Fixed several bugs in /play with using -r and -l.
   The format has changed slightly to:

   /play [-crl#] <filename> [delay]

   This now allows you to specify a delay for -r and -l,
   You must now specify the line number like this:

   /play -l24 file.txt 1000

21.Text colours are now ok when using > 256 colour setup.

31/08/95 - mIRC v3.6

Fixes/Additions:
1.Highlight Box around an Icon now turns green if a highlighted
  word is spoken in a window.
2.Fixed Ping Pong bug which was preventing lines from being
  sent properly to the server.
3.Fixed Editbox/Colours bug in Extras dialog.
4.Inserting blank lines in Remote/events/aliases between
  commands would lead to loss of following definitions.
5.Channel list window would clear if you disconnected and then
  connected again.
6.Aliases, Remote Users, Commands, and Events definitions are now unlimited.
  ie. you can have as many as you want, however the limitation is the
  size of the editbox (around 30k?).
7.Fixed font dialog bug when tabbing with cursor keys.
8.Popups are still limited to 300 menuitems for each popup menu.
9.Max. length of a line in aliases, remote, and popups is approx. 600 chars.
  Same applies to lines in the Options dialog.
10.Now allows a non-op to change topic in channel dialog.
11.Fixed :) bug.
12.Fixed /auser /guser bug.
13.Fixed /channel dialog title bug.
14.Added a simple NON-configurable toolbar with tooltips.
   A Configurable toolbar would take a lot of work, so I probably
   won't get around to adding it (so don't ask! :)
15.Fixed ctcp PING reply missing a Ctrl-A at the end (?)
16.Specifying a /who *146.219* numerical address would mess up because
   the *1 is a parameter specifier. mIRC now checks to see if there is
   a . in the number, and if so it doesnt try to expand it.
17./play command can now play single lines randomly picked from
   a file (a specific line can also be specified). The format is:
   /play [-crl] [channel/nick] <filename> [delay/linenumber]
   Using -r means pick a line randomly, using -l means pick
   a specific line specified by linenumber. The first line in the
   file MUST specify the number of lines in the file. Any *1 $1 etc.
   identifiers CANNOT be used in the played line.
18.Added $read identifier which picks a line randomly from a file.
   eg. /say $read c:\funny.txt
       /kick # $1 $read c:\kicks.txt
   The first line in the file MUST specify the number of lines
   in the file. $read will insert ANY text, even commands with
   identifiers, and these will work like normal commands.
19.Added Fast Send checkbox to DCC Send dialog.
20.Fixed scrolling keys in Channel list and finger windows.
21.Made Font list longer in font dialog.
22.Added "auto-join on invite" option to options dialog. An
   auto-joined channel is initially minimized (this might not
   always work for various reasons...)
23.Added Function key support F1 to F12. Define in the alias
   window like a normal alias for example:
   /F1 /say Hello!
   /F5 /query $1   (for use on nick listbox in channel window)
24.Font width measurement for copy/paste wasn't correct for
   certain types of fonts.
25.Fixed problem with minimized windows being sized wrongly.
26.Fixed /channel bug. Now times out after 30 seconds, at
   which point another /channel can be issued. BUT if the old
   /channel command is replied to, your status window will fill
   up with ban list information for that channel. No way around
   this I'm afraid!

13/08/95 - mIRC v3.51 (minor update)

Fixes/Additions:
1.Fixed garbage character output bug.
2.mIRC16 wasn't recognizing version reply from Win95.
3.Making mIRC active with a click wasn't setting the focus
  to the active window correctly.
4.Fixed security bug in the fileserver.
7.Fixed $day bug.
8.Removes unused bold/italic/etc. characters from lines.
9.Fixed ON MODE bug with +/-k.
10.Fixed GPF bug in on mode/servermode.
11.Fixed Reset bug, wasn't resizing small windows properly.
12.mIRC wasn't outputting to the status window if it was
   starting out maximized.
13.The /auser, /guser, /ruser, /enable, and /disable commands
   now do NOT save changes immediately to the INI file when
   they are used. Remote information is now saved either on
   exiting mIRC, or if the remote dialog is opened/closed.
14.Now uses the ctl3d dialogs as default. The -d is ignored,
   but you can now use -n to disable the 3d dialogs.
15.Complete dialog interface improvements (for mook ;)
16.Commands using $* were not processing commands following them.
17.Fixed socket() initialization bug in various routines.
18.Improved how mIRC uses/gets your local hostname and ip address.
19.Fixed fileserver dirinfo.srv bug.

07/08/95 - mIRC v3.5

Fixes/Additions:
1.Using IP address of a server now works...!
2.A ctcp ACCEPT/RESUME now doesn't look at the filename
  to make a match but only at the port number.
3.Fixed perform option being executed after every MOTD.
4.Notify on initial connect is now done just before Perform option.
5.Fixed bug in displaying wrong Server Name in titlebar after
  changing server name in setup.
6.Scrollback buffer wasn't freeing lines properly.
7.Added $time, $day, and $date as parameter types.
8.Prefixing a remote event with '*' means it should only
  be performed if you have Ops on the event channel.
9.Optimized Text Copy routine - now faster/smoother.
10.Fixed divide by zero GPF in /pop routine.
11.Modified Op status checking routine.
12.Added a font dialog.
13.Width of user listbox in channel is now measured properly to
   take account of fixed/variable width fonts.
14.Improved mode-change handling routine.
15.ON ACTION now works for actions (same structure as ON TEXT).
16.Using $* improperly would result in a GPF.
17.The "Always get IP address on connect" wasn't working.
18.A /me now cannot be sent without a message.
19.Cleaned up several routines, removed potential GPFs & other problems.
   (most of which were detected while compiling the 32-bit version)
20.Double-clicking on a servername in Setup dialog is same as
   selecting Connect.
21.Now available in a 32-bit version (with optional air-conditioning).
22.Added /wavplay <sound.wav> command.
23.Two bugs in Getting IP address routines were fixed.
24.Fixed unknown mode oo bug.
25.The ON OP/SERVEROP/DEOP were noticing only the first opped nick.
26.Address as returned by a /whois now has an @ sign.
27.Added $cb parameter, which refers to the first 256 characters
   of current clipboard contents.
28.The /flood command now inhibits only specific types of replies to
   the server eg. replies to Remote/events/ctcp (basically, replies
   triggered by other users).
29.Made random delay auto-op an option in the options dialog.
30.A user in the remote user list can now have multiple access levels:
   5,=10,=15,=17:*!*@mardam.demon.co.uk
   1) The first level in the list is treated normally and can be anything.
   2) The remaining levels are treated as = levels (even if you dont put the
      = infront of them).
31.Finger window popup menu now shows the last 5 fingered addresses
   for quick selection.
32.Now prevents Channel list window being closed while a listing is being made.
33.The mode change checking routines have been improved.
34.Cleaned up/Improved popup menu positioning routine.
35.Added /rlevel <level> command which removes all users with the specified
   access level from the remote user list.
36.Fixed problem with extra spaces being appended to sent lines.
37./omsg and /onotice can now take an optional channel argument.
   eg. /omsg [#channel] <message>
38.Windows opening in mIRC are now not given focus if mIRC is not the
   active application.
39.Text in remote dialog is displayed more quickly now.
40./ignore now also ignores all notices. This means you can't do ctcp on
   any person you ignore since a reply to a ctcp is a notice.
41.Added $server, $ip, and $host as identifiers.
42.Can now define groups of commands/events in the remote:
   #2 start
   1:ON JOIN:...
   1:ON TEXT:...
   #2 end
   You can use /enable #2 or /disable #2 to enable/disable group #2.
   A disabled group is ignored by the remote.
   You cannot have groups within groups.
43.Now shows User mode in status window title.
44.The READ command in the fileserver now does paging (default of 20 lines)
   and prompts user whether to continue listing or to stop. User can specify
   optional paging size with: read [-numberoflines] <file.txt>
45.The READ fileserver command now also allows reading of any file.
46.Control-Home/End now moves to top/bottom of window text buffer.
   Control-Page Up/Down moves up/down line-by-line.
47.Can now do /help <commandname> for most commands mirc knows.
48.Each window now has a 20 line command history buffer, use Cursor Up/Down
   in single-line editbox, or Control-Up/Down in multi-line editbox.
49.Protect-list bug fixed.
50./ruser nick! now removes any address beginning with nick! in the
   user list.
51.Can now handle multiple /ban and /guser commands one after the other.
52.Can now also specify *N1-N2 or $parmN1-N2. For a horrible example, see:
   1:TEST:/notice $1 *1 *2-6 *9:$nick $parms $parm1 $parm1* $parm3-5 $parm4-9
53:Optimized text display routines.
54.Fixed the undernet /uwho X GPF.
55.Fixed % problem with actions.
56.Improved output of /finger <address> routine, now expands tabs and
   inserts empty lines in the correct places.
57.Fixed GPF bug in handling of KILLs.
58.Added a crude ON MODE/SERVERMODE to react to a *channel* mode change.
   1!:ON MODE:#mirc:-spmi+lktn 20 mykey:/notice *1:$nick Illegal mode change!
   When someone changes the channel mode, mIRC enforces the above
   channel mode instead, and sends the user a notice.
59.Now removes redundant spaces from lines in the Options dialog.
60.Fixed disappearing popups/commands/events problem.
61.Improved /ruser command so that it can work like /ban and /guser.
   /ruser <nick> [type]   if you do NOT specify a type, then it works
   as usual and removes the specified nick from the user list. If you
   DO specify a type, it looks up the users address and removes that
   address from the user list.
62.Now correctly initiates a DCC CHAT using 'chat' as opposed to
   the originators name.
63.Improved Channel List Window Popup menu. Added a dialog which
   allows you to respecify the list parameters to relist the window
   without having to do a relist from the server.
64.Fixed "Error sending data" at end of transfer with fast send turned on.

29/06/95 - mIRC v3.42 (minor update)

Fixes/Additions:
1.Fixed Beeping saving/loading beep settings using only nickname
  and not the whole line in 'DCC Chat with krejt'.
2.The Local Host name can now be changed while online.
3.The /ban command did not allow processing of following commands.
4.Fixed 'Enter' bug in single-line editbox (?).
5.If "Show quits in channel" wasn't checked, user would not be
  removed from channel namelist when user quits.
6.Unbanning in the /channel dialog now unbans 3 users at a time
  in one mode command instead of one user at a time.
7.Added Options->Auto-Op random pausing (up to 7 seconds).
8.Minimized get icon now shows nickname.
9.Fixed server ports being reset to 6667.
10.Fixed the /msg =nickname GPF bug.
11.Added * to beginning of username in /ban addresses.
12.Changed /finger method slightly.
13.Added /pop <delay> [#channel] <nickname> command which performs
   a paused op on the specified user within a random number of seconds.
14.A DCC Chat window is only given focus on connection if it is
   the active window, otherwise it just beeps once.
15.Can now do /help <topic>.
16.Fileserver was ignoring <max gets> parameter and limited users to
   get only one file at a time.
17.Optimized routine for handling mode changes.
18.Fixed ON NOTICE bug.
19.Fixed /uwho (is operator) bug and /uwho ctcp bug.
20.Fileserver: if file has no extension then '.' is automatically
   added to user get request filename.
21.Improved voiced/opped display of nicks but still when a user is
   deopped and has a voice, things mess up.
22.Now automatically shortens your nicknames to the maximum length
   allowed by the server you connect to.
23.Fixed bug with /ban after using the /auser command.
24.Rewrite of INI reading routines in the hope of fixing GPF's
   and other weird problems that are being caused by this.
25.Changed timing of Misc->Options->perform commands, now sends
   commands right after end of MOTD.

21/06/95 - mIRC v3.3, v3.4

Fixes/Additions:
1.Fixed line splitting in single line editbox.
2./describe now displays as a normal action if you are on
  the channel that you are sending to.
3.Can now do 1!:ON TEXT:etc... which means this command should not
  react to any events caused by me.
4.Added alternative join/part/quit format option.
5.Fixed :! GPF.
6.Fixed $opnick problem.
7.Directories are now sorted in DCC Send dialog.
8.Can now specify directory for mirc.ini file on command line.
9.Notify routine now checks for a blank line!
10.Server name is now shown in status window title bar.
11.Fixed $parms not being passed on with a :> directive.
12.Added /add [-apuce] filename.ini and /save filename.ini
   which load in alias, popups, and remote user, command, and event sections from
   the specified ini file. The /save saves all of these five sections to the
   specified ini file.
13.Added $me as an alias parameter which refers to your nickname.
14.Added option to append text to application title bar.
15.Can use ; or REM to comment out lines in the remote/event sections.
16.Now connects even if unable to get your local host name but was still able to
   get your ip address (should have done this a long time ago!).
17.Added a /raw command which sends any parameters you supply directly to the server.
   You MUST know the correct RAW format to use this command.
18.Added /omsg and /onotice commands which send a message to all channel operators
   on the current channel. eg. /omsg Hello there!  These are limited to users with Op status.
19.Can now specify max. number of lines in scrollback buffer.
20.Fixed bug in the /auto, /notify, /ignore, and /protect storage routines.
21.Can now minimize a window quickly by pressing the ESCape key (option).
22.Added /timer1 to /timer9 commands in the format:
   /timerN <repetitions> <delay in seconds> <commands to be performed>
   eg. /timer1 30 /ame is AWAY!
23.Status window can now remember minimized/maximized position.
24.DCC Chat window is now not minimized if it is initiated by you.
25.Added crude /flood control, format: /flood <numberoflines> <seconds> <pausetime>.
   Prevents mIRC from sending any lines to the server if it has sent too
   many lines in a specified number of seconds. These lines are NOT stored,
   they are lost.
26.Fixed problem with $ followed by letters not being displayed. eg. $SHELL
   ($ followed by a number is always assumed to be a parameter).
27.Added: +2:ON JOIN:etc... the + limits this command to only level 2 users.
28.Added Select File/Directory dialog to Add, Extras, and DCC Options dialogs.
29.Fixed weird DCC-related bug in input routine...?
30.Added ON SERVEROP event eg. 1:ON SERVEROP:#:/msg *1:$me $opnick was opped by $nick
   where $nick refers to the server that did the opping.
31.Added /closemsg <nickname> command to close message windows with a certain nickname.
32.Fixed USER not enough parameters problems.
33.Each window now stores it's own previous line (using /).
   Using / brings back last line typed in current window.
   and /! brings back last line typed in any window.
34.Finger server now uses different method to do a finger which might solve
   problems some people were having.
35.Can now use either the IP address or the Hostname of an IRC server.
36.DCC Send icon now shows nickname.
37.Added option "Reconnect on disconnection".
38./help now brings up mirc.hlp file irc commands section.
39.Now removes strange characters from users name when logging.
40.Can now use $parm1* just like the $1* parameter.
41.Fixed /uwho "is operator" bug.
42.Windows can be resized to a smaller size.
43.Fixed DO problem.
44.Quit in a channel now just shows nickname and quit message.
45./join #this_is_a_test_of_brigs_bug has been fixed.
   But there's still a limit of how long a channel name can be!
46.Fixed buildup of %'s when recalling previous line.
47.Added -c switch to /play command to allow playing of commands.
48.If resizing window and you're at the bottom of the buffer
   it stays at the bottom after the resizing.
49.Fixed problem with silent disconnections (i think).
50.Quit now uses a default message of (Leaving).
51.Fixed occasional window text not being updated?
52.Added Beeping option to Chat/Channel/Query window system menus which
   overrides Options "Beep on Message" setting. Each window remembers
   it's beeping setting.
53.Added ON NOTIFY event. eg. 1:ON NOTIFY:/msg *1:$me $nick is on IRC!
54.Added /log on/off command for logging windows to file.
55.Added $+ parameter which means append the next parameter without
   inserting a space before it.
57.Fixed /stats problem.
58.Fixed 1:*:! problem.
59.Added /fserve <nickname> <maxgets> <homedirectory> <welcome.txt> for fileserver.
60.Fileserver improvements:
   1) now sends 30 second timeout warning to idle user.
   2) Directories are now listed horizontally in wide listing.
   3) If user does ls -4 and then does ls the -4 is remembered.
   4) Can do ls -[k|b] for listing in K's or bytes.
   5) Greatly improved fserve routines.
   6) Prevents a user having more than one fileserver session open.
   7) Directories/files are now sorted.
61.Greatly improved dynamic memory allocation.
62.Made change to the ON TEXT event. The search text should now be
   specified in the following manner: eg. 1:ON TEXT:text:#mirc:/msg *1:etc...
   where text is:
   =text   - if user said only this word
   text*   - if user started line with this word
   *text   - if user ended line with this word
   *text* or text  - if user said this word anywhere
63.Added 5:ON OP:= which means that any level 5 or higher users will not get a
   reaction from a lower level ON OP when they are opped. Works with other
   events and remote definitions as well.
64.Cleaned up/optimized/rewrote many many routines.
65.Fixed GPF when window is closed while popupmenu is up.
66.Fixed "Unable to send query to server" problem(?)
67.Fixed /auser /ruser being lost if Cancel pressed in remote dialog.
68.Can now select a maximum of 9 files to send in dcc send dialog.
   Also added a minimize option to minimize all dcc send windows.
69.Fixed bugs in INI reading routines.
70.Added /guser <level> <nick> [type] command which does the same thing
   as /auser but does a /whois on the specified nickname first and then
   adds their address to the remote user list.
71.Remote DCC Send window closes if other user closes connection.
72.If a DCC Get window is waiting for a resume acknowledgement and
   times out then the window is closed.
73.Speeded up text update in windows significantly.
74.Added /exit command which forces mIRC to closedown.
75.Now removes directory prefix from a DCC Get file.
76.Major DCC Send improvements.
77.Added /fsend [on|off] an experimental fast dcc send option.
78.Added /ulist which lists users in the remote list with specific access levels.
79.Fixed /oper command.
80.Changed /ban types (1 to 4). Also /ban with no type bans the
   whole address with no wildcards. Banning an IP address now adds
   a wildcard to the last ip number.
81.Added/Fixed other things I forgot to write down...

2/05/95 - mIRC v3.2

Fixes/Additions:
1. GPF on join to undernet fixed.
2. GPF on joining channel with too long a topic fixed.
3. Added title specification to parameter box, eg.: /j /join $?="Enter channel name:"
4. Can now use Page Up/Down keys to scroll through buffer.
5. Fixed spaced out /who result.
6. Now cannot prevent the standard ctcp version reply being given.
7. Can now build as many levels of popup menus as required.
8. Added Query/Chat popup menu.
9. Added extra double-click options.
10.Added auto-close send window option.
11.A remote send window now closes if other party crashes/cancels get.
12.Idle time wasnt working in single-line edit box.
13.Sockets weren't being closed properly.
14.Fixed problem with directory and slash.
15.added /channel command for channel central (only works in a channel).
16.Added ability to view/change topic in Channel Central.
17.Editboxes thinned down for Win95.
18.Changed dialog borders to reflect standard practise.
19.Added ... to menu items to reflect standard practise.
20.GPF on nick collision fixed??
21.Timer now updates in the timer window when online.
22.Can now do both  /ban nickname  or   /ban #channel nickname
23.Complete rewrite of editbox routine. Can now paste properly.
24.Added "You are Op/Not Op" to channel central window.
25.Fixed problem in win95 with title disappearing when window is minimized.
26.Fixed remote :*: responding to an action command. (oops :)
27./server with no parameters connects to the last specified server.
28.Fixed problem with | alias seperator placed after a *1 *2 etc.
29.Fixed problem with DO remote command.
30.Remote can now handle commas etc. stuck to identifiers eg.
   1:WHOAMI:/notice *1:$nick You are $nick, your address is $address.
31.Added #$ parameter type. Prefixes the parameter with a #.
   cannot be used in a multi-command. eg #$* but can do #?1="Say what?"
32.Added $! parameter type. Refers to the last line you entered in
   the entry parameter window.
33.Added /amsg and /ame which do an All channel message and All channel action.
34.Last used server in the Setup window is moved to top of list.
35.If mirc.ini is not found in windows dir but found in current dir then it is
   automatically copied to windows dir without asking user.
36.Added "Fast Ack" in DCC Opts window for non-compliant winsocks.
37.Dialogs are now positioned a little higher in Win95 above menu bar at bottom of screen.
38.Now allows leading spaces in text to channel/query/chat windows.
39.Fixed problem with cursor not showing in editbox??
40.Iconized Win95 windows do not flash anymore but are drawn highlighted with
   a red rectangle.
41.Addresses must now be standard form eg. *!*khaled@mardam.demon.co.uk
42.Can now do /dcc send <nickname> <file1> <file2> <file3> ... <fileN>
43.Added /beep <number> <delay> command.
44.Fixed GPF bug with malformed DCC Send requests.
45.Added simple Event handler to remote section.
46.Other bits I can't remember...

23/04/95 - mIRC v3.1

Fixes/Additions:
1. Added /ctcp $* performs command on all parameters.
2. Remembers if main window was iconized.
3. Added "finger" popup for finger window.
4. Fixed mistake in graphics routine. Update is now faster.
5. Windows open up in a more "windows" like fashion now.
6. User listbox now lists all people on large channels.
7. Using main menus under certain setups wasn't working properly.
8. Cancel away on keypress now ONLY cancels if you say
   something in a channel or a query.
9. Fixed finger client so can finger VMS hosts etc.
10.Added new user warning about mirc.ini file.
11.Can now do aliases such as: /laugh /me laughs at $1's joke
12.Added timeout to chat/get confirm dialog.
13.DCC sessions now show only a nickname.
14.USER login to IRC was working but not correct.
16.Improved Editbox: Can now enter multiple lines with a paste
   and they will be sent correctly.
17.Fixed Auto-Op wild-card routine.
18.Fixed beeping when windows are maximized & windows don't scroll.
19.Fixed small bug in /join command, now allows key.
20.Notify now tells you if no one in your list is on IRC.
21.Added User info window as the command /uwho <nickname>.
22.Internal reorganization and cleaning up.
23.PASS password to server was incorrect.
24.Added /msg =nickname for dcc chat.
25.Added /play command.
26.Added /describe command.
27.Major improvement of screen update, speed has more than doubled.
28.Added option to use windows colours.
29.DCC Send by remote is automatically minimized.
30.Now tries three different ways to get local host and ip address.
31.Red rectangle is drawn around icons of windows with pending messages.
   For Windows 95 the iconized window flashes instead.
32.Now changed so that can have only ONE chat session with the same user.
33.If user replies to a /dcc chat request by initiating another dcc
   chat then mIRC treats this as an acceptance of it's own request.
34.You can now ignore addresses as well as nicks.
35.Remote DCC's close windows automatically on finish.
36.Added DCC timeout options.
37.Added #string parameter to /list command.
38.Fixed problem with moderated channels and +nicknames.

26/03/95 - mIRC v2.8c etc...

Fixes/Additions:
1. Added wild cards for auto-op.
2. If a user changes nicks while in a query to you and they are on
   the same channel as you, mIRC uses the nickname change notification
   to update the query window name so you can keep talking to the person.
3. When a query is received and it is iconized, the icon is placed
   above all other windows so you can see it.
4. Scroll bars have been made a standard size and moved a little bit to
   make them look neater.
5. ban command now has 4 levels of ban. eg. /ban <nickname> <number>
   where <number> is a value 0 to 3.
6. The /server command can now take Port and Password parameters.
   for example, /server irc.server.co.uk 6667 password
7. Added "Use Dedicated Message Window" option. private messages go
   only to this window.
8. "Notices" work more intelligently now and will appear in a channel
   window if sent by someone on that channel. Otherwise they are sent
   to the status window as usual.
9. mIRC now listens for identd requests and replies using the
   userid part of your email address as a UNIX system.
10.Font and Window position can now be saved for the Message Window
   and logging/saving to proper filename now.
11.Was GPFing on a nick collision. Oops :)
12.Added channel modes to ban list routine. Much more useful now!
13.Added context-sensitive F1 help key.
14.Added new alias parameter type.
   $$ = parameter MUST be filled. If it is not filled, command is not executed.
   Before, /whois $1 was executed even if no parameter was given.
   Now, /whois $$1 will only be executed if you supply a parameter.
15.Can now also do  $$?1  or $?1  which means, try to fill this
   value with parameter one if it exists. If parameter one doesnt exist,
   ask for it.
16.Fixed problem with copy/paste routine. MUCH faster now.
17.Fixed font problem with text not showing in Editbox when in windows
   screen with large font setting.
18.Added DCC Resume capability. non-standard.
19.Allows multiple select in ban list.
20.Fixed dialog positioning when in different screen modes.
21.Added option to prefix own messages with own nick.
22.Would crash if popup menu definition was incomplete. fixed.
23.Double-click in a query window does a /whois.
24.Added small popup menu to channel list window.

21/03/95 - mIRC v2.8b (not released)

Fixes/Additions:
1. the % character can now be used.
2. help file had a few mistakes in it.
3. a /msg results in outgoing message being shown
   in the correct window.
4. added option "Beep on message while in buffer".
5. /hug /me *hugs* $1 now works.
6. allow /query etc commands in dcc chat window.
7. problems handling /msg and other commands.
8. dissallow changing nickname and alternate in setup when online.
9. log files werent being closed properly.
11.enlarged Popup menus window.
12.refined appearance of /msg /notice/ etc. commands.
13.aliases had a bug or three.
14.added [x] minimize to auto-accept chat request.
15.ctcp ping seconds working properly now.
16.query window sometimes opened up VERY small due to saving
   window size while it was iconized.
17.Changed query/chat windows so that only one default font
   is saved.
18.Changed "beeping" method to minimize number of beeps.
19.File logging was messed up.
20.Speeded up display of popupmenu definitions in popup dialog.
21.text wrapping wasn't taking notice of mid variable.
22.changed minimum window size depending on whether it
   is a channel or not.
23.now remembers default size for channel windows.
24.fixed problem with previous-line routine.
25.added /dcc packetsize command. All memory for DCC Send/Get
   sessions now allocated dynamically.
26.when a window is maximized, widths weren't set properly for
   any other windows beneath it.

18/03/95 - mIRC v2.7a

Fixes/Additions:
1. Changed dblclk ban list routine again.
2. Variable assignment was wrong in open window routine.
   Caused windows to behave strangely and crash.
3. Changed query & msg commands. /msg does not open a
   window, /query does.
4. Added beeping on query & notice options.
5. The INI filename specified on the command line was not
   working for some mIRC functions.
6. DCC sessions were not being closed properly, ie. files
   in some cases would be left open.
7. Cosmetic changes - moved some options to extras dialog
   and other stuff.
8. Invite command wasn't working properly.
9. Corrected mistakes in the mirc.ini file.
10.Query window size wasn't being saved.
11.mIRC wasn't closing all DCC connections on quit.
12.Now prevents duplicate server entries in setup dialog.
13.Some windows are now more intuitively centered on opening.
14.Now shows number of channels as they are being listed.
15.Some windows were opening only in the top left corner.
   Window positioning is hopefully better now.
16.QUIT and AWAY commands weren't setting message properly.
17.Added /LEAVE (like /PART. command for compatibility.
18.Again changed optimization switches in compiler. Previous
   settings caused more problems than I thought...
19.Can now open mutiple DCC Chat sessions with the same person.
20.Option to show Quits in channel window.
21.now shows /msgs that you send.
22.when doing a "reset position" window is placed neatly inside
   main window even if saved position was outside it.
23.Changed /protect etc. to work using on and off.
34.Added option to highlight own messages.
25.Aliases with a * in them weren't working properly.
26.About dialog now disappears on keypress.
27.Can now continue DCC chats if disconnected from IRC.
28.After disconnection, on reconnect to IRC, only channel windows
   are closed. All other windows remain open.
29./SERVER command now works. (can use in popup menus!)
30.Bugs in file handling routines.
31.Bug in Channels list routine.
32.Iconify query window option.
33.beeps if message in channel and you are not at bottom of buffer.
34.Added whois option on a query.
35.If talking in query window and person logs off IRC,
   informs you nick is invalid *in* query window.
36.when not at bottom of buffer and a channel message
   is printed, highlighting for copy/paste now stays on.
37.Enlarged alias window.
38.Alias window now shows number of aliases entered.

Possible Bugs/Annoyances:
1. Text in window sometimes goes blank or isn't updated properly.
2. Text sometimes prints over the scrollbar slightly.
3. Multiple DCC sends/gets might not work properly.

13/03/95 - mIRC v2.6b (a dud version - was unstable)

Fixes/Additions:
1. Finger routine wasn't being cancelled properly.
2. Now allows user to enter their own IP address.
3. Certain windows would beep on closing (definitely fixed now!)
4. Routine for printing text in window majorly optimized and cleaned up.
5. Listbox popup menu would popup even if a user wasn't selected.
6. Cleaned up the retrieve ban list routine.
7. Winsock startup routine wasn't being initialized properly.
8. Copy/Paste routine has changed. No longer need to press the shift key.
9. QUIT wasn't appending quit message.
10.Child windows were being positioned outside main window.
11.Spotted and fixed oh so sneaky bug in word wrap routine.
12.DCC Send/Get Directories default to same directory as mirc.exe.
13.Can now specify directory for logs and buffer saves.
14.Mode change with multiple settings wasn't working.
15.Can now specify on the command line the name of the .ini file to
   use. Default name is "mirc.ini". This means you can have different
   .ini files for different nets.
16.Added /! command, recalls previous command.
17.Cleaned up the help file, made IRC commands section readable.
18.Now compiling with different optimization switches. This
   automatically fixed around 5 "bugs" !!!

08/03/95 - mIRC v2.5a

Fixes/Additions:
1. added "always retrieve local host" option for people who have
   dynamic IP addresses!
2. channel mode in title is permanently on. not an option anymore.
3. Added ctcp USERINFO command for compatibility. However, it returns
   the same information as a ctcp finger command.
4. moved some options to different windows were they made more sense.
5. added /finger and /auto commands.
6. fixed problem with releasing memory... popup menus weren't
   being freed properly so mIRC would lose as much memory as
   the size of the popup menus defined by the user. With the
   mirc.ini that comes with the program, this turned out to be
   3k+ of system resources everytime the program is run.
7. the MODE for channel mode changes gets messy when lots of
   mode changes occur. cleaned it up.
8. Window names in Window menu would not switch to the correct
   window when selected.
9. Text buffers for windows were not being freed properly.
10.Can now set the default font for the status/finger/list windows
   from their system menu. Only the DCC Send/Get windows have to
   be set from the font dialog window.
11.added auto-log option for channels and query/dcc chat.
12.Commands such as /finger and /run can now be used off-line.
13.Corrected some mistakes in the mirc.ini file.

05/03/95 - mIRC v2.4a

Fixes/Additions:
1. major update of window handling - made more robust.
2. notify would keep notifying even if it was still waiting
   for previous notify to be returned by server.
3. popup menu positioning was incorrect in some situations.

02/03/95 - mIRC v2.3a

Fixes/Additions:
1. dcc get received file okay but closed connection too early.
2. dcc send/get/chat were re-initiating arrays too early,
   didn't cause problems but made the program beep everytime you
   closed a window because the array was empty.
3. some debug information was being printed! Arrrrgh! forgot to
   turn off the debug switch in the first release.
4. updated help file with description of previously coded but
   forgotten items.
5. In dcc get, if sender client did not specify size of file
   (which it should!. then mIRC said the size was zero bytes.
   Now it just says [unknown].
6. highlighting now works properly.
7. ".." previous directory wasnt showing up in dcc send dialog.
8. the channel listbox wasnt adding/removing nicks properly.
9. double-click for ban list. clicking twice only in the SAME
   place now brings ban list up.
10.added option to display file size instead of percent complete
   in DCC send/get transfers.
11.fixed timer display: wasnt displaying timer after nick change.
12.adds "/nick " to editbox if both nicks collide on login.
13.dcc send/get had problems with packet size. fixed.
14.other cosmetic changes.

28/02/95 - mIRC v2.1a

First public release.

