Don't create channel screen until we receive a message from the channel. /join ##foo won't create the screen... and if there are no screens available, we don't have to check for it. Don't create query windows unless user explicitly does so. Config file. At minimum, these: Server Port SSL? Nick Channel/query list Extras: AltNick Colors (BG/FG/BAK) (per-channel? or just one set?) Screen layout (pre-create channel and query windows) Macros (with Select key, 1-9, 0 for #10) CTCP VERSION response (config utility can auto-detect OS type?) The config will be created by a separate tool, FNCHATCF. This should have a built-in list of known IRC servers to choose from, plus the ability to add more. Maybe store them in a file called FNCHATCF.SRV. Distribution disk: MyDOS, with a menu as .AR0 where you can select whether or not to run the config tool. If there's no config file, just run the tool. Maybe another menu option to read the README? Use MyDOS because cc65's exec() works with it (no writing my own exec() function this time around). Menu might just be: FujiNetChat v0.0-YYYYMMDD-githash config file loaded . [Option] Read the manual. [Select] Connection setup. [Start] or [Return] Connect to IRC server. [Escape] Exit to DOS. ...and if there's no config file on D: or in memory, the Start option is greyed out. Reserve a memory area for the config, so after FNCHATCF runs FNCHAT, there's no need to reload the config. There won't be a /server command in the client, so connecting to a different server means re-running the config tool. On disconnect: [R]econnect, [C]onfig, [Q]uit, [B]oot: [R] Quit will exit to DOS. If that can be made to work, anyway.