A simple Tetris-like game for the QL

This is an UNFINISHED game. It is playable - ie it WORKS! However, there be
BUGS, and messes, illogicalities, and various evolutionary dead ends. Still,
it is NOT a work in progress, as I have NO intention of developing it
further. Feel free to do so. Or just throw it away and build your own!

It was started a long way back, on a real QL, but I could never get it
fast enough. As recently as this month, December 2021, I tried exchanging
BLOCK with characters in the hope that it would speed things up. But no joy
there. This kind of thing has to be done in assembler, and possibly
working on the bare metal, ie disabling most of Qdos.

It will RUN in SuperBASIC on a QL with at least a GoldCard or better. On
QPC2, SMSQmulator, and Q-emulator at full speed, on a reasonably modern PC,
it works pretty well, and is fun to play (despite the odd bug).

The game

    QLTet is a kind of dynamic puzzle - much like Life itself! Random
    shapes fall from on high, and you have to maneuver them into place in
    your messy little world down below, so that they fit in neatly without
    any gaps. For each gap-free (horizontal) row you manage to weave and
    wheedle, you get a brownie point, and the pile of debris decreases
    accordingly, giving you a tiny respite until the next trick or treat
    comes along. Eventually - inevitably - the shit piles up so high that
    you succumb - just like in real life. At that point, its Game Over!
    (Unlike in real life, however, in QLTet you always get to have another

    Good night, and Good Luck!

Getting started

If youre using a QL, make sure you have TK2 locked and loaded before you

To play in its current form from BASIC you first need to

        LRESPR <home>SCRXYI_bin

(<home> being the directory wherein SCRXYI_bin resides) OR load the program
and change line 112 scrxy scx%, scy% to something else: The simplest is if
you know your resolution, eg 512x256, then change the line to

112 scx% = 512: scy% = 256

or use some other known command, like SCR_XLIM/SCR_YLIM to do the business.
(But that will require some other changes to the program, as these
commands require an open console channel. Look at the Init and SetScene

Save the program if you have made any changes. Then, on

Qdos: QL, etc

        LRUN <home>QLTet_bas

        EXEC_W <home>QLTet_obj

(The compiled version has the SCRXY command built in, so no need to LRESPR
it.) If you dont see the program, press CTRL + c a couple of times.

SMSQ/E: (QPC2, SMSQmulator. Qx0, Q68, ..?)

In a daughter SBASIC (so it doesnt mess up your windows)

        LRUN <home>QLTet_bas

OR load it into QD with the SBAS/QD Thing active and press F10,

OR just

        EX <home>QLTet_bas


        EX <home>QLTet_obj


You configure this program by changing certain variables in the source code.

Line 112 has already been explained above.

Line 116: You can also change the block size. This makes the whole display
          bigger. Try sqz% = 12

Line 118: Make it go faster by changing speed%. Less => faster!

Line 120 & 122: World size. This is the size of the Tetris "world". Make
          the world taller and/or wider. Just try it out and see what
          rocks your boat.

Line 124: paper colour. Not followed through. While shapes will never be
          the same as the paper colour, this hasnt been applied to the
          score window. So best left alone. Else 0..7

Line 126: bdcol = border colour. 0..255

Line 128: Sound on or off (BEEP only). 0/1

Line 130: Name of scores memory file. Current default is
          "ram1_score_txt". Clearly, this should be changed to where and
          what you want.


On startup you are asked whether you wish to play. Answer Y or N.

While the shape drops the following keystrokes are possible:

Cursor Left:    Moves shape left

Cursor up:      Rotates shape counter clockwise

Cursor Right:   Moves shape right

Cursor down:    Rotates shape clockwise

ESC:            Pressed once pauses. Pressed while paused, exits the
                current session and returns you to the starting

Space:          (Any other key, really), speeds up the drop while the
                key is depressed.

Program status

V0.01, pjw, 2021 Dec 06

                       DISCLAIMER as per Knoware.no