These are not really TODOs, they're "might do" or "hope to do". Features that should be implemented: - /r to reply to the last person/channel who msg'd you, /a to msg the last person/channel you msg'ed (server and private screens). Idea comes from phigan (thanks!) - Support for (some of) the extra RAM in 64K machines. Can get an extra 4K (97 lines) because we don't need the regular or international font or the floating point routines. This can be done in the standard executable: most of the work happens in the config segment. It has to be possible to disable, in case the user's using e.g. Sparta 3.x (uses the under-OS RAM already) or the HSIO patch that uses the intl font area for code... though, we don't *do* disk I/O once the client starts, so maybe we can ignore the HSIO patch issue. - *Maybe* look into using the 800 OS, which would give another 3K (the rest of the $C000 area besides the intl font). The issue here is "live-booting" the OS (switching from XL to OSB on a running system without a reboot or even a warmstart). The_Doctor__ says this is possible. I'm not sure I want to bother with this... - Use any extra RAM in the code area, between the end of the code segment and the start of the stack, as extra screen memory. Currently that's 1.7K, or 42 extra lines. - Use any extra RAM in the data area, between the end of the BSS and the start of the display list/etc (at $3360), as extra screen memory. Currently that's 1.4K, or 34 extra lines. - Support for 130XE, 256K XL, etc extended RAM. Apparently a lot of people have 1MB these days. *Lots* of screens, each with lots of scrollback, will be the only use for the extra RAM. Most of the work is done in the config segment (detecting banks and letting the user choose which ones to use) so it won't bloat the executable much. Already have the dynamic screen stuff, with support for multiple pools, so the groundwork is done at least. - URL handling. Extract URLs from message text, send them to a UDP port on a local machine that knows how to deal with them. Or, show them as a QR code (FujiNet supports that). - Some method of copy/paste, using the keyboard or maybe a joystick. - Cut buffer for ^U ^K ^W, like bash/emacs. Limited size (like, 240 bytes, same as the input box). - Support for the XEP80 (and its modern clones). This really should be done as dual-head: Keep the regular Atari display for the edit box, the status bar, and maybe some other info. The actual screens can display on the XEP80. Unfortunately to do this right, I'll have to use the XEP80's E: handler (so it'll work with modern XEP80 replacements like the 1090XL 80-column board), and that means giving up 1.5KB of memory (the driver is bloated). reifsnyderb has some code that deals with the XEP, written for use with CP/M, that may be useful here. - R: support. Compile-time switch, separate executable. Use with FujiNet, Lantronix, or anything else where we can go like ATDThostname:port. These last two, xep80 and R:, will be compile-time options. I can't afford the RAM it would take to keep all that code resident at once and choose at runtime. So, 4 executables: - fnchat.xex, 40 columns, FujiNet networking. - fnchatx.xex, 80 columns, FujiNet networking. - fnchatr.xex, 40 columns, R: networking. - fnchatrx.xex, 80 columns, R: networking.