CURSOR POSITIONING CAN BE FUN IF YOU KNOW THE RIGHT PROCEDURES
by Editor, KUGOR BYTES, July 1987

(Using functions and procedures in BASIC to position the cursor)

Is there any way to position the cursor on the screen with single
command in MBasic or SBasic?  Both of these languages, which came
bundled with the Kaypro, are very useful, but can become awful
tiring having to issue dozens of PRINT commands -- unless you
don't mind everything printing at the upper left corner...

There certainly is a time saving method to get that cursor (or
output) smack dab where you want it.  MBasic employs what are
known as user defined functions.  Early on the program, define
the function.  The command is DEF (for define, followed by a
space and FN (for function), then (no space) an arbitrary
variable to identify the particular function, and a $ if you are
defining a string.  This is followed by the variables, in
parentheses, which will change throughout the program, an equals
sign, and the calculations for the function itself.

DEF FNfunction
name(variables)=function

To position the cursor in MBasic, use this simple formula:
CHR$(27)+"="+CHR$(Y+32)+CHR$(X+32) exactly as shown.  The Y
stands for line number and X for row number.  Thus, the user
defined function will be initialized as:

DEF FNC$(Y,X)=CHR$(27)+"="+CHR$(Y+32)+CHR$(X+32)

Now anytime you want to position the cursor or output at a
specific point on the screen, let's say 10 lines down and 5
columns in, use FNC$(10,5).

Try this example --
PRINT FNC$(11,31);"This is the middle"

That will place the string in quotation marks right in the center
of the screen.  Once defined at the beginning of a program, user
defined functions can be called again and again.

In S-Basic, it is even easier.  S-Basic employs procedures, which
operate much the same way as MBasic user defined functions,
except they allow you to call with mnemonics.  I like to use the
following:

PROCEDURE AT (Y,X=INTEGER)
PRINT CHR(27)+"="+CHR(Y+32)+CHR(X+32)END

In this simple statement, the keyword PROCEDURE tells S-Basic
that you are defining a procedure.  What follows is your name for
the procedure; I've used AT, as you'll soon understand.  Then the
variables Y,X are established.  After that we enter the formula
-- same as in MBasic.  S-Basic doesn't need the $ string
appendage.

Now, to position something within a program, I can write:

AT 11,31
PRINT "This is the middle"

Get the mnemonic subtleties?  It's really quite easy and once you
get the hang of it, you'll be designing your programs as well as
writing them!
