Pointer Environment & Toolkit 2

Toolkit 2 EPROM Cartridge    

Updated: 27/03/2021

Pointer Environment | Download PE | Toolkit 2 | Download TK2| QPAC1 and QPAC2

Pointer Environment

The original QL and compatibles (machines using QDOS) as well as some emulators are command-line driven only. In other words, you have to type in commands to run programs etc. It gives absolute control over the machine, but 2 decades later more and more people are using pointer environment in some shape or form. Pointer environment gives an on-screen pointer which is controlled by a mouse or by cursor arrow keys to point to certain items on the screen (hence the name Pointer Environment) to select items from lists or menus. It also saves and restores the contents of screen windows as you switch between programs. The SMSQ/E version of the operating system includes the equivalent of pointer environment.

Pointer environment consists of three basic items:

  1. PTR_GEN. This is the pointer interface. It provides the extended console driver and the on-screen pointer, saving and restoring of window contents and so on.
  2. WMAN. This is the Window Manager, which provides the colour schemes and standardised appearance of windows and menus.
  3. HOT_REXT. The Hotkey System 2. This provides hotkeys, which are keypress combinations (keys pressed with the ALT key) which generate an action such as loading a program independent of whichever program is running at the time.

Pointer Environment files PTR_GEN, WMAN and HOT_REXT can now be made available free of charge. These are the latest versions I have to hand, along with a few older versions which may prove useful for software authors to test programs against, for example. You should try to use combinations of ptr_gen and wman from the same row across and a close version of hot_rext, although hot_rext is not tied as closely to particular versions of ptr_gen and wman. If anyone has versions to fill the gaps I would happily add them to this list. Hot_Rext comes in English and German language versions. For normal use, you should choose the highest version number of PTR_GEN which works on your system, the matching WMAN version from the same row in the table below, and the closest version of HOT_REXT available.

In order to install these on a QL system, you need to add the following lines to your boot program to reserve resident procedure space with the RESPR function, then load them into memory with LBYTES and finally a CALL statement to install them. xxxxx is the file size of PTR_GEN given below for each version, yyyyy is the file size in bytes of the WMAN version used, and zzzzz is the file size in bytes of the HOT_REXT version used.

100 base1=RESPR(xxxxx) : LBYTES FLP1_PTR_GEN,base1 : CALL base1
110 base2=RESPR(yyyyy) : LBYTES FLP1_WMAN,base2 : CALL base2
120 base3=RESPR(zzzzz) : LBYTES FLP1_HOT_REXT,base3 : CALL base3

They must be loaded early in the boot program (usually before any extensions, but after Toolkit 2 or Lightning installation commands if used. If your system has the LRESPR command available (systems with Toolkit 2 will definitely have this extension, as will most disk interface system, but on a few systems Toolkit 2 may not become active until a TK2_EXT command is issued):

100 TK2_EXT

Please note: I experienced some difficulty with using ptr_gen v2.02 and resorted to v2.01 which seemed to be more reliable on my system at the time. Also, please note: from V2.03 version JS or higher, preferably Minerva, is required to use its full capabilities. It may not work on version AH or JM QL ROMs for example. If, like me, you have a QL system with a JM ROM I recommend using PTR_GEN v2.01, WMAN v2.05 and HOT_REXT v2.29.

PTR_GEN WMAN HOT_REXT (English) HOT_REXT (German/French)
v2.06: 21,538
v2.08: 17,146 bytes
V2.31: 12,802 bytes
German V2.31: 12,856 bytes
French V2.31: 12,908 bytes
V2.05: 21,002 bytes
V2.07: 20,242 bytes
V2.31: 12,802 bytes
German V2.31: 12,856 bytes
French V2.31: 12,908 bytes
V2.03: 20,904 bytes
V2.05b: 19880 bytes
V2.31: 12,768 bytes
V2.02: 18,388 bytes
V2.05: 18,886 bytes
V2.29: 11,792 bytes
V2.01: 18,480 bytes
V2.01: 19,218 bytes
V2.29: 11,792 bytes
v1.72: 15,172 bytes
V1.53: 10,520 bytes
V2.29: 11,792 bytes

V1.71: 15,140 bytes
V1.53: 10,520 bytes
V2.28: 11,830 bytes
V2.28: 11,830 bytes
V1.69: 15,130 bytes
V1.52: 10,516 bytes
- -
V1.68:15,122 bytes
V1.48: 10,392 bytes
- -
V1.65: 14,754 bytes
V1.48: 10,392 bytes
- -
V1.61: 14,672 bytes
V1.47: 10,392 bytes
V2.26: 11,708 bytes
V2.26: 11,762 bytes
V1.59: 14,666 bytes
V1.47: 10,392 bytes
V2.25: 11,684 bytes
V2.25: 11,738 bytes
V1.57: 14,554 bytes
V1.47: 10,392 bytes
- -
V1.55: 14,544 bytes
V1.45: 10,382 bytes
- -
V1.54: 14,534 bytes
V1.43: 10,360 bytes
- -
V1.53: 14,522
V1.40: 10,132 bytes
- -
V1.42: 14,418 bytes
V1.34: 9,994 bytes
- -
V1.39: 14,276 bytes
V1.33: 9,992 bytes
V2.24: 11,566 bytes

List of changes (plain text file, 4K) in various versions of the pointer environment. Information from Marcel Kilgus's website. You can always get the latest versions of the pointer environment files from his website at  https://www.kilgus.net/smsqe/pe/ , along with loads of other QL goodies.

The Pointer Environment is usually bundled with the Hotkeys System, and hotkeys have been a source of difficulty for new users - these articles set out to provide an easy to follow introduction to Hotkeys and a limited introduction to writing Boot programs for use with pointer environment. Apart from the QPAC2 manual, there is very little by way of documentation for users new to the system, so I have added the following files to this page, with grateful thanks to the authors concerned, and to the publisher of QL Today magazine from whence the Hotkeys articles were reproduced.

P.E.Idiot's Guide (86K) - Norman Dunbar's excellent introduction to the Pointer Environment. Alternatively, click here to read it online (thanks to Tim Swenson for the online version).
Hotkeys Part 1 (7KB) - Part 1 of the QL Today series about the Hotkey System
Hotkeys Part 2 (6KB) - Part 2 of the QL Today series about the Hotkey System
Hotkeys Part 3 (6KB) - Part 3 of the QL Today series about the Hotkey System
Hotkeys keywords (15KB) - Keyword guide for the Hotkey system (3KB)


Albin hessler has kindly givenm permission for the Serial Mouse software to be made available as freeware. This allows a 2 or 3 button serial mouse to be used (with an appropriate cabling adaptor as described in the instructions) with a QL. The manual is currently an extract from the SMSQ/E manual in the hope that this will be close enough to the original SerMouse instructions.

SerMouse304.zip - SerMouse software v3.04 (42K)
SERMouse.docx - SerMouse manual as a Word .docx file (23K)
SERMouse.pdf - SerMouse manual as a PDF file (294K)
As some users have had difficulty with SERMouse 3.04 on some systems, here is a copy of version 3.03 which seems to work on some of those systems:
sermouse303.zip - SERMouse v3.03 as a zip file (27KB)
SerMouse3_03.img - SERMouse v3.03 as a 720KB disk image file (720KB)

Toolkit 2

This is the original and best toolkit software for the QL. Just about every QL disk interface released contained some variant of this toolkit, and it was also available as a plug in EPROM for the QL. With the increasing use of emulators, most of which do not include Toolkit 2, free release of the Toolkit 2 has been agreed. Two versions are presented here, a 16K ROM image version and the reconfigurable disk version of Toolkit 2, complete with manuals and a tutorial. I keep some older versions on here for posterity. The Toolkit 2 ROM image may be installed in one of two ways:

100 base=RESPR(16384):LBYTES FLP1_Tk2_Ext,base:CALL base

If that does not work, it is because ROMs have a header which must be skipped. There is a word value at offset 6 bytes from the base which is an offset from the base of the eprom (an image in this case) to the rom initialisation routine - see page 66 of the QL Technical Guide for details. So we can try this alternative version:

100 base=RESPR(16384):LBYTES FLP1_Tk2_Ext,base:CALL base+PEEK_W(base+6)

If using an emulator such as QLay or QemuLator which have the facility to load 16K eprom image, use that facility. Of course, QPC2 and SMSQmulator users need not load either pointer environment or Toolkit 2 since the equivalent of them is built into QPC2! Copies of Toolkit 2, manuals and a tutorial may be downloaded via the links below.

tk2v203.rom - Early version 2.03 of the Toolkit 2 ROM, for use with emulators. Ideal for testing software with older toolkits. (Tony Tebby) (16K) [06/02/14]

tk2v205.zip - Another early version of the Toolkit 2 ROM. (Tony Tebby) (13K) [27/03/21]

tk2ext.zip - This is a Toolkit 2 ROM image v2.12, for use with emulators. (Tony Tebby) (13K) [30/01/05]

tk213_rom.zip - This is a Toolkit 2 ROM image v2.13, for use with emulators (Tony Tebby) (13K) [12/03/09]

tkii220.zip - This is a Toolkit 2 ROM image v2.20, for use with emulators (Tony Tebby) (13K) [22/04/11]

tk223asm.zip - Extracted from a Trump Card v1.31 ROM image, the Toolkit 2 part (16784 bytes, and that is not a typo, it really is a little longer than 16KB) has had a little initialisation code added so that it can be CALLed when loaded into RESPR area. This verson is level-2 aware when used on a system which supports hard directories/level 2 filing system, such as hard disk systems. Includes source assembler and a short text file showing to install the toolkit. (41K) [23/01/16)

tk226.zip - Extracted from a Trump Card v1.36, this is v2.26 of Toolkit 2. (14K) [29/01/16]

tk2_bin (17K) - a version of Toolkit 2 v2.12 patched (using Magnetic Eprom) with an extra header to run from RAM instead of from EPROM. While this may be useful for unexpanded QL users who can transfer it to microdrive from another computer over a serial link, note that timing differences between running it from the EPROM slot and in RAM may mean that some time-critical routines such as the network may be affected. This does not have a QL executable file header so can be transferred without having to use Zip and Unzip which may not work on an unexpanded QL. An article concerning setting up serial links between PC and QL may be found on this site at ../gen/pcqlxfer/index.html

Download and copy the file tk2_bin to a microdrive cartridge on your QL. To install the toolkit file you will need to run a short BASIC program like this on your QL - I suggest you type in and save this program on the same cartridge:
1 LET adr=RESPR(17396)
2 LBYTES "mdv1_tk2_bin",adr
3 CALL adr+1380

JSTK223.zip (48K) - A 64K ROM image containing a JS ROM and a version 2.23 Toolkit 2 which is Level-2 filing system aware. Since the v2.23 is slightly more than 16KB in length, and the JS ROM set has sufficient spare unused space, it was possible to combine them into a single 64K image which could be burned into an EPROM which could be plugged into the correct addressing space in the QL ROM slot. A small BASIC program is supplied to enable this to be used on QemuLator also by splitting the 64K image into 48K system ROM and 16K toolkit. The version updated on 03/03/16 fixes a problem when QL ROM slot at $0C00 also being shadowed/recognised at unused address $CC000 (Like earlier TK2 versions, detects false call and returns). The version updated on 16/03/16 fixes an issue whereby the CHAR_USE command may not work. (David Westbury) [16/03/16]

TK223-16K.zip (14K) - A version of Toolkit 2 v2.23 trimmed (by removing the CLOCK and ALARM procedures, which are supplied as a stand alone binary file in the package) to fit in a 16K EPROM address space. This version updated on 03/03/16 fixes a problem when QL ROM slot at $0C00 also being shadowed/recognised at unused address $CC000 (Like earlier TK2 versions, detects false call and returns). The version updated on 16/03/16 fixes an issue whereby the CHAR_USE command may not work. (David Westbury) [03/03/16]

Toolkit 2 v2.32 - In the first major revision of Toolkit 2 for many years, Marcel Kilgus has issued an update based on the latest SMSQ/E sources, and has added many SBASIC features such as LOAD adds a _bas extension to filenames, plus several SBASIC extensions such as EXF, EX_M, FET, FEW, FEX, FEX_M, HGET, HPUT, JOBID, LGET, LPUT, UPUT, WGET and WPUT. The Altkey commands have been removed to make space for new features, although Alt-Enter for last line recall still works. Network code cannot be run from RAM due to the critical timings involved, so as the total code is larger than the 16K available space, some code has been removed and made into an LRESPR file to allow the critical timing network code to reside in the main ROM. Full details of the changes (and the latest versions, v2.34 at the time of writing) are on Marcel's blog at https://www.kilgus.net/2017/03/19/toolkit-ii-the-sequel/

tk232_rom.zip (16K) - the ROM image, with the speed critical network timing routines in ROM and other parts of the network code as an LRESPR NET_bin file.
tk232_net_rom.zip (15K) - this version has the ED SuperBASIC editor moved into an LRESPR ED_bin file so that the network code can be fully included in the ROM.
tk232_respr.zip (15K) - this version can be LRESPRed into RAM and includes everything, though the network code will not work unless burned into a ROM or executed from zero waitstate RAM.

tk230_src.zip (35K) - the source files

tk2.zip - Plain text manual for Toolkit 2 (40KB) [30/01/05]
TK2.pdf - Toolkit 2 manual, as a PDF file (269K) [24/02/16]

rtk206b.zip - Reconfigurable disk version of Toolkit 2 v2.06b (27K) [30/01/05]

recontk2.zip - manual supplement for Reconfigurable Toolkit 2 (2K) [30/01/05]

tk2tut.zip - Toolkit 2 tutorial article as Quill DOC and plain text files (Stephen Bedford) (33K) [30/01/05]

tk2_and_flp_updates.pdf - list of updates to earlier versions of Toolkit 2 and the FLP drivers (188KB). Also available as a Word .doc file (29K)

Toolkit II Update Record v234.pdf - list of updates to Toolkit 2 up to and including v2.31 (113K). Also available as a Word .docx file (16K)


The term QPAC stands for QL Pointer Accessories and they are both a collection of utilities for the pointer environment. Many people confuse the term 'QPAC' with the Pointer Environment or Extended Environment. Being a little pedantic, all three are different things:

QPAC1 was released first, which sometimes makes people think that QPAC2 is an updated version of QPAC1. It isn't, it's a second and separate package.

Originally developed by QJump, these packages have been maintained for a decade or so by Marcel Kilgus (author of the QPC2 emulator) who decided to make them freely available in 2014.

QPAC1 - consists of desktop utility programs: Clock, Calendar, Calculator, Typewriter, Alarm Clock and Sysmon (System Monitor). Includes English, French and German versions. If to be used with SMSQ/E, you do not need to download the various pointer environment/extended environment files above. If to be used with QDOS or vanilla SMSQ on QXL, you may need to download the pointer environment/extended environment files above if you don't already have them on your system.
Download QPAC1 (zip file) (69K)
Download QPAC1 manual (PDF) (109K)
Download Hotkey System II documentation (PDF) (148K)

QPAC2 - provides menus for job control, file management, channels, Things, button frame and a lot more. Hard to describe briefly, once mastered you'll wonder how your QL ever survived without it. Supplied in English, French and German versions. A supplementary download includes a mini tutorial, sample boot programs and the 'ramprt' system (ramdisk, printer buffer etc).
Download QPAC2 (zip file) (74K)
Download QPAC2 supplementary files (zip file) (41K)
Download QPAC2 manual (PDF file) (139K)
Download QPAC2 manual addendum (PDF file) (28K)
List of changes in various older versions of QPAC2 (text file) (5K)


A collection of Thing system related files, extensions and documents gathered by Per Witte. Please read the NOTE.TXT file included in the zip file to see the list of what's in there.
Things.zip (107K)

A PDF document about the Thing V3 extension, may prove an useful accompaniment to Per's collection above.
Thing Extension V3.pdf (58K)

Return to the home page. | Return to Downloads Index