ULTRAKIT is not the name of a new pop group, but a new utility for the Spectrum. Coming from the very much famed company HISOFT (producers of DEVPAC and PASCAL), ULTRAKIT is a boost for the Sinclair Basic and provides the user with a more sophisticated and comprehensive Basic. It provides User Defined Keys, error trapping, an alarm clock, program trace and many other extra features.
ULTRAKIT is less than 7K and sits just under the User Defined Graphics area. It can be loaded at any time before or after program development as a machine code block (a Basic loader program is provided if required) and can initially be activated with a Randomise User command. ULTRAKIT uses two types of command. One type is the Pre Defined Command (PDC). These commands are obtained by holding ENTER and pressing one of the digit keys, releasing ENTER (the message will appear) and only then releasing the digit key. This may sound difficult, but it soon becomes second nature. The other type is termed a Kit command. These are accessed using REM in immediate mode. This produces the HISOFT copyright message and the command can be typed in letter by letter. The command may be abbreviated to one letter — U for Update etc. The execution follows after pressing ENTER.
There are 11 Pre Defined commands and 23 Kit commands.
The clock is interrupt driven and will therefore work whenever the interrupt is not disabled (Microdrive, cassette handling and Lprint disable interrupts and therefore stop the clock operation momentarily). The clock time display can be turned on and off by ENTER8 and can be updated or set by use of the Kit command UPDATE.
The alarm time can also be turned on and off by ENTER9 and can be set by the Kit command WARNTIME. The alarm will run for one minute and the alarm can be switched off by ENTER0. AL in the display indicates that the alarm is set.
Obviously the clock will run even if the display is switched off.
The ten digit keys may be defined by the user to produce any string required (up to a maximum of 256 characters per key) when accessed. A vertical line at the end of the string is an implied ENTER command and will lead to the immediate execution of the string on call up of that digit number (SPACEdigit). Strings without implied ENTER will appear in the edit line on call up and can thus be used for calling up often used Kit commands with SPACEdigit. Pressing ENTER will execute these. This means that multi-statement commands may be immediately executed via the User Defined Keys. Kit commands can only be called up on the edit line, but cannot be executed directly (ENTER required). Setting up and editing the User Defined Keys is accomplished with a Kit command KEY followed by the string. The multi-statement strings allow the user to save with ULTRAKIT information either as DATA statements or as user defined functions and quickly retrieve and use after ULTRAKIT is activated again. User Defined Graphics may be saved this way and can be redefined with the press of a (user defined) key.
TRACE is activated by the Kit command TRACE and requires 3 parameters, the trace-on line, the trace-off line and the initial speed of tracing (0 to 6 and > 127 for single stepping). This enables only certain program sections of interest to run under trace. On a GOTO or RUN in the edit line followed by ENTER the program will be executed one statement at a time at a reduced speed and the current line and statement will be printed inverse in the top right screen. The execution speed may be changed by pressing one of the digit keys 1 to 6 and 0 (1 full speed, 0 1.5 second delay) or by pressing Symbol Shift to enter the single step mode. In single step mode the current variables may be monitored (V), the current line (L) or next line (N) may be listed, or the screen cleared (C). Pressing SYMBOL SHIFT executes the next statement, pressing one of the digit keys returns to normal trace. Trace mode inactivates the toolkit and on completion toolkit has to be reactivated with SYMBOL SHIFT and SPACE. Microdrive commands inactivate TRACE.
These two Kit commands can be used to search for and replace occurrences of strings.
The FIND string and the SUBSTITUTE string can be put into the respective buffers by the use of the PUT Kit command.
The search can be started at a specified line number N. It will displace the line in which it occurs and pinpoint with a flashing cursor the exact position of the string.
A minus sign in front of the start search line number will cause a search through the whole program starting with the start line and will list all occurrences in the form line:statement. SUBSTITUTE operates in a similar fashion, but will either substitute and display the line in which it occurs or with a minus sign replace all occurrences automatically.
SUBSTITUTE may be used to substitute a variable for an explicit number which appears frequently in the program. With inclusion of a statement Let val=n at the beginning of a program.
Among the Pre Defined commands there are 4 program compaction routines, which will reduce the amount of programming space required at the cost of making the program totally unintelligible. CRUNCH1 will convert all numbers to a dummy 0 (ASCII representation of the number set to 0). The real value is unrecoverable.
CRUNCH2 converts 0 to NOT PI, 1 to SGN PI, 3 to INT PI, and all other numbers to their VAL equivalent. The program will however run slower.
REMKILL deletes all REM statements, control codes and unnecessary spaces. Machine code routines within REM statements may be protected by placing an asterisk as the first REM character.
PACKER will compress the program into as few statements as possible (127 statements per line as a maximum), avoiding however tagging lines onto a preceding line including REM, STOP, IF, GOTO, RUN or RETURN. To compress your program into a minimum possible space, REMKILL followed by a RENUMBER, then PACKER and finally one of the CRUNCHes will do the trick. This should only be done after the program has been fully debugged and saved in its normal expansive form.
Other interesting Pre Defined commands are MAP which displays a memory map of the Spectrum and L-CASE and U-CASE which convert all variables to lower or upper case.
The following Kit commands are also available: BREAK can be set to break program execution and resume at a given line number.
COPY copies a block of lines indicated by start and end of block line number to a destination line number. These lines will be renumbered in 1’s starting from destination1. Only the line numbers will be renumbered and not GOTO’s etc. These must be changed by hand.
DELETE deletes a block of lines.
EDIT will bring down a specific line for editing.
GRAB deletes part of the toolkit to gain programming space. There are three levels.
HIDE inactivates temporarily the toolkit and increases the execution speed.
INFORM displays the current default values for the command parameters.
JOIN joins two program lines if the number of statements does not exceed 127.
LOSE-KIT inactivates the toolkit permanently.
MOVE copies similar to COPY but then deletes the original block.
NUMBER renumbers the program from a start line to the end with a chosen start line and increment. All GOTO, GOSUB, LIST, LLIST, RESTORE, RUN and LINE statements are adjusted accordingly and a report is given on all lines containing these expressions.
ON-ERROR equivalent to BREAK, except that all errors are trapped with the exception of 0:OK, 9:STOP STATEMENT, 14:BREAK CONT repeats, and 21:BREAK INTO PROGRAM.
QSEPARATOR specifies the character used to separate the two parameter strings.
RAMREL will change RAMTOP without CLEARing variables. The parameter is a relative move from existing RAMTOP.
HISOFT are providing with ULTRAKIT a professional tool without any unnecessary frills. The most powerful facilities are the TRACE, ON-ERROR, MAP, USER DEFINED KEYS, FIND/SUBSTITUTE and the compaction routines.
All the other Basic extensions such as RENUMBER, JOIN, MOVE, COPY and DELETE complement this package.
The two command modes Kit and Pre Defined are easy to get used to and provide a very fast and efficient way of accessing all the available facilities.
Some trouble was experienced with the single step TRACE mode, as it appeared to skip several statements at a time when SYMBOL SHIFT was pressed.
The manual provided with the cassette explains in detail the use of the keyboard, the accessing of the Kit and Pre Defined commands, the alarm clock, find and substitute program tracing and the user defined keys. There is a complete index of the Kit and of the Pre Defined commands. A chapter is dedicated to the customising of the toolkit. Microdrive owners may save the ULTRAKIT on microdrive with the instructions supplied. Several poke addresses are provided to facilitate customisation of the various displays and printouts.
ULTRAKIT is a must for any serious Basic programmer, as it improves and compliments the Sinclair Basic in the editing and debugging area, which makes life a lot easier when creating extensive Basic programs.