Toolkit II – The sequel

By | 2017-03-19

How it began

As any QL owner will know, the Toolkit 2 from QJUMP/Tony Tebby was THE toolkit without which a QL was almost unusable, arguably its contents should have been in the ROM from the start. And I always thought it was quite a shame that such an important toolkit hasn’t been updated in two decades. This got me thinking that most TK2 source files at one time were incorporated into SMSQ/E and that with a little bit of work it should be possible to re-create something resembling TK2 from them again. Turns out I was right, but also completely wrong in how “little” that work is. But still, too many hours later, I presented a brand new Toolkit II release I arbitrarily labeled version 2.30.

This is now based on the latest SMSQ/E source code, with new SMSQ/E features left intact if it was feasible (e.g. the “LOAD” command now automatically tries to append a “_bas” extension to the filename) plus many commands that have been added in the last 20 years (EXF, EX_M, FET, FEW, FEX, FEX_M, HGET, HPUT, JOBID, LGET, LPUT, UPUT, WGET and WPUT).

Unfortunately there are also parts of the source code that were completely missing, like the extended MDV driver. In this case I completely reverse engineered it from an existing ROM binary in a way that you can’t tell anymore that this isn’t the original source code.

The old network server code is actually still supplied with the SMSQ/E source code even though it’s not actually used there. The problem with that is that it’s just too big to fit into the ROM anymore and it probably doesn’t make much sense to run it from RAM because of the different timing. Therefore I didn’t include it for the initial release. The ALARM and CLOCK commands had a similar fate.

The ALTKEY code, too, is included in SMSQ/E without seeing any usage. I didn’t want to include it at first, because with the Hotkey System II it’s very much obsolete. But when tinkering with my QL system the HK2 is often not loaded yet and it drives me crazy when ALT+ENTER doesn’t work to recall the last line. So it went back in. Problem then was that the result was about 200 or 300 bytes too big, so I removed the ALTKEY code but left the ALT+ENTER code in.

Let there be networks

The basic problem is that TK2 already didn’t quite fit into 16KB during its last official versions and it became a lot worse once I packed in all the new features available in SMSQ/E. To make it fit again I had to remove something and I chose the network driver code, last having used it myself 20 years ago to prank my dad. Some people weren’t happy with that, which was to be expected, but there is one point which did stick: the network code cannot even be loaded afterwards as the timing needs to be precise and this is (almost) only possible when the code runs from ROM.

So when I found a way to free a few more bytes in the ROM and I thought about what I could do with them and eventually came up with the idea of splitting the network code: I re-added just the timing critical hardware access routines to the ROM so that the network driver can be loaded later and still work. I think this is a fairly good compromise that would make most people happy.

Martyn Hill kindly beta tested the version for me and later inquired if one could have a full network stack in the ROM and remove some other stuff instead. I was hesitant because for me TK2 is foremost a SuperBasic toolkit and most of the remaining stuff is the basic commands. There is only one part that is even a bit bigger than the network code: the “ED” SuperBasic editor. It includes many improvement over the original TK2 code and thus grew considerably in size. Removing it also has the advantage that you wouldn’t put it into actual SuperBasic code, so the toolkit stays 100% compatible. For me personally “ED” is about a million times more useful than the network code but if you absolutely have to bootstrap a QL without any file systems over the network this is the way to go. Also I do provide a standalone binary for loading later.

Choose your poison (downloads)

So here are all the different flavours:

TK2 v2.36 ROM version (with separate NET_bin file for full network support)
TK2 v2.36 network ROM version (with separate ED_bin file for the SuperBasic editor)
TK2 v2.36 RESPR version (this version includes everything though the network code will not work unless burned into a ROM or executed from zero waitstate RAM)
TK2 v2.36 QL-SD version (RESPR version that works together with the low level QLNET routines included in the QL-SD ROMs >=1.09)

Version history

- Fixed ED #0 editing (don't write errors then). Also fixes an address error

- Don't add default directory to names starting with a drive

v2.34 - Fixed a crash on LOAD/LRUN/MERGE v2.33 (Per Witte) - Added SUSJB procedure to suspend a job for a time or indefinitely
- Added FDEL as a function version of DELETE v2.32 - Added network hardware access code to ROM so LRESPRed server can work
Also an alternative ROM with full network stack and missing ED command v2.31 - Fixed a bug in CDEC$ v2.30 - First reborn version

15 thoughts on “Toolkit II – The sequel

  1. Martyn Hill

    Hi Marcel

    Another terrific initiative and thank you for it!

    As I myself am playing with the network driver quite a bit in a project I’m working to link a standard QL via a NET to USB adapter for my laptop running QPC, I’d love to reintroduce the network driver in to your updated TK2 v2.30.

    As my QL RAM expansion runs uncontended, I would expect the network to run in (high) RAM precisely as in ROM, so am interested to know of any tips you might have gleaned in your latest efforts so that I could take the TK2 NW code from the SMSQ/E source and add back to a RESPR version of your v2.30.

    I know the code pretty well after several months reviewing the asm, but have been put-off tinkering with it due to the apparent dependencies of the SMSQ/E source-tree.


    1. Marcel Post author

      Hi Martyn,

      it’s fairly easy actually. Uncomment the nd_init stuff in init_asm and recompile/link using tk2_link. You might have to double the dd_qlnd_lib line in the link file for some reason if you get undefined symbols, I’m not sure why.

      Have fun 😉

  2. Martyn Hill

    Thanks Marcel – I’ll have a go and post back here my findings in due course 🙂

  3. David Westbury

    Re ql-users thread: loss of Network in TK2.31 ROM

    Perhaps opportunity to try compressed version. Leave Network code in ROM, rest to be uncompressed into RAM…

    1. Marcel Post author

      Well, that would waste RAM on the original QL, which I don’t want. Also seems a lot of work for something I don’t much care for…

  4. Pingback: New Toolkit 2 | QUANTA

  5. Pingback: Sandy SuperQBoard – now in HD! |

  6. Per

    Although its of no direct use to me, I very much like that compatibility is being actively maintained, or better still: Upgraded. This keeps the target platform as wide as possible – essential when there are so few of us. Great work! and a boon to us all. Thank you, Marcel!

    1. Marcel Post author

      Yes, a few of your new commands are now included, too 🙂 Could help a bit in terms of compatibility, I hope usage numbers take up with the latest versions.

  7. Markus Dettwiler

    Danke Marcel !

    – die Fehlermeldungen mit ED werden nicht angezeigt
    – TK2 23x und history von hpr vertragen sich nicht
    – Minerva 1G98 “Bildschirm”

    Schönen Gruss aus der Schweiz

    1. Marcel Post author

      Punkt 1 hab ich gefixt, bitte nochmal laden.
      Punkt 2 hab die History (die von Boris denke ich?) nicht in Betrieb, wie äußert sich das?
      Punkt 3 versteh ich nicht?

      Gruß Marcel

      1. Markus Dettwiler

        Punkt 1 Super !

        Punkt 2 manchmal hängt siĉh das System beim Laden von History 1.27 auf
        mit tk232 gehts jetzt
        Punkt 3 im Boot Screen steht es F3/F4 2. Bildschiren

        Wolfgangs QL-SD Treiber läuft auch auf dem MIST / Mister
        (Mister aber nur normale CPU Geschwindigkeit)

        Schönen Gruss aus der Schweiz

        1. Marcel Post author

          Minerva: aaah, ok, alles klar. Das war wohl schon seit 30 Jahren falsch im Source-Code, aber da die Language-Packs normalerweise erst immer nach dem booten aktiv werden wohl nie aufgefgallen 😉 Hab’s mal in den Sourcen geändert, falls je mal ne neue Version kommt wird’s dann gefixt.

          Gruß Marcel

  8. Martyn Hill

    Thanks again Marcel for graciously accommodating the desires of us demanding users 🙂


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.