Page 1 of 1

QLirc v2

Posted: Sat Jun 27, 2020 12:13 pm
by dilwyn
I've attached an early preview of version 2 of QLirc. This is very much a work in progress and should be regarded as an early alpha test version.

Tim Swenson's original QLirc demo originally released here was taken and developed with his blessing, thanks Tim. I've enhanced the program now to the point where it has been regularly used to fairly reliably used to join in on QL Forum online chat and has had a little bit of use on other IRC channels as well, although you need to read the doc file to see how to make the changes needed to use with other IRC channels.

I'm grateful to people like Ralf Rekoendt, Rob Heaton and Tim Swenson who've done some testing for me and found a whole load of bugs. I'm also grateful to Daniele Terdina (QemuLator) and Graeme Gregory (sQLux emulator) who've made changes in the TCP/IP system on those emulators to enable me to enhance QLirc.

There will be further development of QLirc, as it only handles a subset of all the IRC commands at the moment, I haven't yet added UTF8 character set support (thanks Norman for the code), nor text scrollback, nor support for links, for example.

The attachment contains three files:
1.QLirc_bas - lrun (or EX if on SBASIC) this. It asks for your nickname and connects to QL Forum online chat as it stands. You'll need to refer to the manual to see how to adapt the server name, IRC channel name, password (no password needed for QL forum online chat) via the configuration variables at the start of the program.
2.QLirc_ssb - the source code for the program - view this using a text editor or viewer, although you'll need a copy of Tim's SSB utility to turn it into a BASIC program if you make your own changes.
3.QLirc2_doc - the manual for it. Tim is kindly working on a more professional PDF of the manual for the full release.

The previous version could be compiled with QLiberator, but doesn't really gain much from it apart from being a stand-alone job.

Programming QLirc has been quite a learning experience for me. The TCP/IP side of it is easy enough, but handling the asynchronous nature of IRC communication is something new for me - a message can come in, including system commands, while you are typing a message for example and must not be missed. You issue a command, but have to wait for the result from the server while at the same time taking in messages from other people before you get the results of the command you issued. Amazingly, the clever code Tim used in his early demo has stood up well to the enhancements and a lot of the original code and principles remain. Thank you Tim.

It's taken far longer than I'd have wished but at last we have a fully functioning IRC client for QL-type systems which let you access TCP/IP (QPC2, QemuLator 3.3.1+, SMSQmulator, uQLx, sQLux). There are some issues on some emulators which I'm trying to work with the emulator authors to address (e.g. an issue with the Toolkit 2 FOP_IN function when used from SuperBASIC on QemuLator, and Tim has reported some minor issues on SMSQmulator). I wrote this on a QPC2 system and haven't personally tested it on other emulators, I'm relying on others to do that.

Any feedback would be greatly appreciated.