IRCjr DOS IRC Client 2009-04-26 Version Michael Brutman (mbbrutman@yahoo.com) Hardware requirements: 8088 processor or better 130KB available RAM (with no backscroll buffer), 160KB (200 line buffer) CGA, Monochrome (MDA), EGA or VGA display Supported Ethernet card Software requirements: DOS 2.0 or newer (DOS 3.3 or newer recommended) Packet driver for your Ethernet card Introduction: This is a fairly simple IRC client. It does not have a lot of features but there are more than enough to make it useful. A working knowledge of IRC is helpful. This IRC client includes its own TCP/IP stack, so all that is required to run is a packet driver. (i.e.: There is no DOS TSR for TCP/IP support to load.) Quick setup instructions: IRCjr is built using the mTCP library. The setup instructions for mTCP can be found in SETUP.TXT. Older versions of IRCjr used environment variables for setting the nickname, username, and real name. This version of IRCjr has changed to use parameters that are specified in the mTCP configuration file. The parameters that you need to set are: IRCJR_NICK Your nickname for IRC (max 9 characters) IRCJR_USER Your username on this machine (can be made up) IRCJR_NAME Your name in real life There are three optional parameters you can set: IRCJR_BACKSCROLL Set the number of backscroll lines IRCJR_CONNECT_TIMEOUT Set the timeout period for the socket connect IRCJR_REGISTER_TIMEOUT Set the timeout for the registration process IRCJR_BACKSCROLL can be used to increase or decrease the number of lines available in the backscroll buffer, or eliminate it entirely. The default is 200 lines. Shrinking it can help you if you are tight on memory. You may need to set these values to relatively large numbers if you are trying to connect to a busy or slow server. Settings of 30 seconds for the IRCJR_CONNECT_TIMEOUT and 90 seconds for the IRCJR_REGISTER_TIMEOUT should work on almost any server. Here is an example of a mTCP configuration file with these parameters set: DHCPVER DHCP Client version Apr 26 2009 TIMESTAMP Sun Apr 26 17:59:54 2009 # Parms for my machine # packetint 0x60 mtu 1500 hostname DOSBox # IRCjr parms # ircjr_nick Brut_DOSBox ircjr_user Brutman ircjr_name Brutman on IRCjr for DOS ircjr_connect_timeout 15 ircjr_register_timeout 60 # DHCP generated settings will appear here # Obviously, substitute in values that make sense for your machine. Running Now you are ready to run. The command line arguments are: ircjr [-port ] [] The server name is always required. The channel is optional - you can use a join command to join a channel once you are connected to the IRC server. Here is a sample: ircjr irc.us.gimp.net #vc Be sure that the packet driver is loaded first. When the program first starts it is going to initialize the TCP/IP stack and try to find the IP address of your IRC server. It is going to use the DNS system to do this. If you have not setup your TCP/IP environment variables correctly you will not be able to connect to your IRC server. (If you know the numerical IP address of your server you can use it directly to avoid the DNS lookup.) If all goes well you will get a connection to the IRC server. If you specified a channel on the command line you will be signed onto that channel automatically by the program. At any time during the connection process you can hit the [ESC] key to quit. The optional -port can be used to connect to IRC servers running on non-standard ports. Using the IRCjr client - Text that you type in is assumed to be a message for the channel that you joined. - Commands start with a / character. Some commands are interpreted locally: /join Join an IRC channel (eg: /join #vc) /msg Send a private msg to another user (eg: /msg user text) If a command is not interpreted locally it will be passed directly to the IRC server. IRC commands that might be useful: /part /names /info /whois /quit /away - Special keys: ALT-H Help ALT-B Toggle beeper ALT-L Toggle Logging to file (irclog.txt) ALT-S Show statistics ALT-T Toggle timestamps on incoming messages ALT-X Exit PgUp Go back in time through the backscroll buffer PgDn Go forward in time through the backscroll buffer - Messages that you type are in bright high intensity characters. Other types of messages may be highlighted depending on the capabilities of your video card. CGA Users (Except PCjr) In an attempt to make this program usable I did my own screen manipulation without using the BIOS of the machine. This can lead to 'snow' on the screen, which drives some people nuts. You can get rid of the snow by using an environment variable: set IRC_SNOW=2 Values from 0 to 40 are supported. Lower values will result in less snow, but will slow down the screen scrolling performance. If you can tolerate a little snow use a value of 3 or 4. PCjr users, EGA and VGA users don't have to worry about this - don't set the environment variable unless you need to. Dual Display users: If you have a monochrome display and a color display on the same machine choose the display you want to use using the DOS MODE command first. The IRC client will detect the current active display and use it. Tested Hardware: Machines: IBM PCjr with PCjr CGA IBM PC XT with CGA IBM PC XT with MDA (Monochrome) Generic 386-40 clone with VGA DOSBox 0.72 with NE2000 emulation Ethernet Cards: Generic NE2000 3Com 3C503 Xircom PE3-10BT parallel-port to Ethernet adapter Pretty much any machine that you can get your hands on will work. Just make sure you have a good Ethernet card and a packet driver for it. Known problems: - I didn't do a good job of filtering out extraneous messages and text from the IRC server. This will come in newer versions. - Nothing will stop you from joining multiple channels. If you do, everything will come in on the same screen and any text you send will go to the last channel that you joined by default. (You can override this by using the /privmsg command.) Other Stuff: I have been working on the mTCP TCP/IP stack for three years now. IRCjr was my first real user application for mTCP. I am hoping that it will help me exercise the TCP/IP code and flush out bugs. Please drop me an email to tell me about your experience with this program. If it worked great, I want to know about it. If you found a bug or a strange behavior I want to know about that too. And if it is really bad, you might be able to help be debug the problem and make things better. I can be reached at mbbrutman@yahoo.com. Another good way to get a hold of me is on IRC! My channel of choice is #vc on irc.us.gimp.net . And lastly, web forum based support can be found at http://www.brutman.com/forums in the 'Programming' area. Recent changes: 2009-04-26: Change configuration to use mTCP configuration file instead of environment variables. 2009-01-18: Added support for 43 and 50 line displays. Improved DNS resolution Added -port option for connecting to non-standard IRC server ports 2008-12-30: Added toggle for putting timestamps on incoming messages. Added toggle for logging session to a file (irclog.txt). 2008-12-17: The underlying TCP/IP code has had some major performance improvements. I don't know if it will make much of a difference for IRC because most of the time is spent waiting, but it certainly could not have hurt. Ctrl-Break is now honored and causes a clean shutdown of the program. 2008-09-06: Check that the packet driver is loaded before trying to use it. TCP/IP stack improvements (Zero window support) 2008-08-22: Increase length of nickname to 20 (from 9). Note that the current RFC still says 9 chars. Recognize nickname changes. End program automatically if you fail to connect to the server due to nickname collisions. 2008-07-30: Rewrite the backscroll buffer handling to reduce code size and allow background processing of new incoming messages. Fix CGA snow when backscrolling. Change mTCP configuration to use a file. Prior versions of IRCjr were configured using environment variables for everything. This was starting to chew up a lot of environment space. Created June 2008, Last updated April 26th, 2009 (C)opyright Michael B. Brutman, mbbrutman@yahoo.com