Capslock indicator

Needs SMSQ/E (or Qdos + TK2 + PE) and Qpac, Qlib_run, and EasyPtr's

Seems a lot for a tiny program, but most of this would be expected to be
part of any high-end system, so I make no apologies. Whats the point of
all these systems extensions if not exactly for the reason of making large
and small utilies quicker and easier to make? They also then fit into a
more or less sane, organised, framework, rather than being all over the
place in anarchic confusion. Theres plenty of that to spare for punters to
frolick in!

How to

Unzip the archive into a suitable directory <path> then add the following
line, or similar, to your boot file at some point:

        EX '<path>Caps_obj'

Presuming the Button_frame Thing is present, it will slot in between the
last button defined and the next.

Caps doesnt do much interaction: it is not possible to set the capslock by
clicking it. At least on emulators capslock is read-only. However, if you
hover your pointer over the Caps button and press ESC it will terminate
the job.

Caps is supposed to display a round blob in the button frame. When
capslock is engaged, a round red blob appears in the middle. The intention
is that these blobs should be highly visible. Clearly, if you are
red/green colour blind this may not be the case, in which case you should
opt for a different colour scheme - or get a different utility.

The only way to configure Caps is to alter the code and re-compile it. The
Button toolkit required can be found at

If the blobs do not appear round, perhaps you need to correct the display
ratio. On SMSQ/E you could try the following POKE, and if it works, add it
to your boot file:

        POKE_F! $C4! $14A, (scrX / scrY) / (dispX / dispY)

with scrX/scrY being the logical resolution and dispX/dispY being the
physical resolution of your display. Say your "QL" is displaying 1024x512
pixels in full screen on a HD (ie 1920x1080) monitor. Then youd get:

        scrX = SCR_XLIM: scrY = SCR_YLIM
        POKE_F! $C4! $14A, (scrX / scrY) / (1920 / 1080)

Note: POKE_F has to be the SMSQ/E POKE_F, not the one from the Turbo
toolkit, or else this line will fail!

Program status

V0.03, pjw, 2021 Dec 09

              Conditions of use and DISCLAIMER as per