Authors
Publication
Pub Details
Date
Pages
Last month we had a look at a few programs from Novelsoft of Toronto, Canada. As promised, this month we examine their remaining offerings for the T/S 2068 (and Spectrum) computer.
One program which I have heard quite a bit about from many of you readers is Timachine, a BASIC compiler for the T/S 2068 and Spectrum computers. (As we discussed last month, all of Novelsoft’s software comes with a T/S 2068 program on one side of the cassette and the Spectrum version on the other.) Timachine handles not only the integer operations that many earlier Sinclair compilers could, but also can handle floating point arithmetic. This compiler can handle programs that are up to 27K (30K for the Spectrum) without the use of tape/microdrive swapping procedures.
Using Timachine can be broken down into just seven steps which start with
- LOAD Timemachine;
- LOADing (or typing) the program to be compiled;
- Check to see that your program does not contain any of the commands and/or functions which are not supported by the compiler;
- Insert a special REMark line at the beginning of your program;
- RUN your program and check for possible errors;
- Compile the program; and
- SAVE your compiled program.
(As with the programs which we discussed last month, there is a sample program supplied which you can compile, giving you the opportunity to work with a program which you know to be bug free.)
Before you compile your BASIC program, there are a number of compiler directives which you may place in your program. These are a means of giving instructions to the compiler and is in the form REM ! followed by a Sinclair keyword.
The only compiler directive which is not optional is REM ! OPEN #, which turns the compilation on. This enables an entry from BASIC at the point of this directive. To return to BASIC from a compiled program you would use the REM ! CLOSE # directive.
Other compiler directives include:
- REM ! LEN — tells the compiler how much memory to reserve for non-dimensioned string variables. For example, REM ! LEN D$< = 5 would allow the string defined as D$ to be up to 5 characters long. This is a memory saving device, for without this directive, non-dimensioned variables would be assigned a length of up to 255 characters. Adding a REM ! LEN $<= 32 will limit all variables to 32 characters.
- REM ! USR — allows you to specify where you want your compiled code to start. The default location is the top of memory as specified by the system variable RAMTOP. If you use this directive, you can then SAVE your compiled code, LOAD it back into the proper memory location, and then execute it from that address.
- REM ! INT — designates the named variables which would follow the directive as being the INTEGER type. These variables may consist of single character variables, named variables and/or arrays.
- REM ! INT + — is the same as above, but identifies the named variables as being of the POSINT type.
- REM ! INT FN — tells Timachine that certain named functions will return a value in the restricted range of – 32768 thru 32767.
- REM ! INT + FN — serves the same purpose as the last directive, however the restricted range is positive (0 – 65535).
- REM ! FN (INT) & REM 1 FN (INT +) – define certain variables as being INTEGER or POSINT when used as dummy variables in DEF FN statements.
- REM ! LIST — causes the program to produce a listing of the runtime routines used and the machine code variables. Addresses are shown in both decimal and hexadecimal.
- REM ! LINE — will print the address of the code which represents a given line in the uncompiled BASIC program.
- REM I PRINT – switches the output for both the LINE & LIST directives from the screen to the printer.
When you are writing your BASIC program you will have to be aware of the fact that certain commands take on a slightly different way of operating, while some will not exist at all. An example of this would be the automatic error trapping when using the INPUT keyword. Asking for input requires that the proper type of data is entered or else the program will simply repeat the input request. The use of a STOP command will cause the compiled code to stop executing and control to return to the BASIC operating system. The DIM statement requires a little thought since Timachine handles it slightly different than in Sinclair BASIC. Only 2 dimensions are allowed as opposed to the virtually unlimited number allowed in BASIC (you are only limited by the amount of memory you have available.) The dimension you declare are permanent, however, and you cannot reDIMension later in the program. Timachine does support both numeric and string variables.
Timachine does not support the following Sinclair BASIC keywords; CLEAR, CONTINUE, ERASE, FORMAT, LIST, LLIST, LOAD, MERGE, MOVE, NEW, RESET, SAVE, VERIFY or VAL$. You can employ these commands in your programs by returning to BASIC, issue the command and then return to your compiled code if necessary.
You may also use other machine code routines along with your Timachine compiled code as long as the two (or more) routines do not overlap in their location in memory. Long programs may be compiled in sections if necessary, but with some losses in efficiency. There is a section in the manual which deals with this.
During the actual compilation process, there will be a number of things for you to look for on-screen. If something occurs during the compilation of your program which does not fit the rules set forth by the compiler, you will receive one (or more) error messages indicating what the error is. Appendix A of the user manual describes each of these errors, possible causes and where to look for more information concerning the problem.
Once all of the preliminary preparation of your BASIC program is complete you will now attempt actual compilation of the program. Typing *C will start the compilation process which is a three pass procedure. The first pass, which is indicated by a magenta border, checks for unsupported commands and recognizes all of the compiler directives you have included as well as DIM statements. The second pass, identified by a cyan border, is a chance for the compiler to determine how long the final compiled code will be, and determine the destination addresses of the GO TO and GO SUB statements. The final pass, recognized by the white border, generates the actual machine code. Because the compiler uses the video display to store information (as most compilers do), you will see this information in the form of screen garbage which is no cause to be alarmed.
Those of you who have read this column for any length of time know that I have always warned you to approach any compiler with extreme caution as they did not handle enough to make them useful. This was my standard warning until I encountered Timachine. Earlier compilers did not handle such important factors as floating point arithmetic or string variable arrays. Without these (and other non-supported functions) no truly useful program could be written and compiled. Cameron Hayne, the author of Timachine, has answered these problems and as a result I can recommend this program for not only its ease of use, but its usefulness. Both Mr. Hayne and Novelsoft are to be commended for bringing Timachine to the market.
The final offering from Novelsoft is modestly called The Worx!. Written by partners Ariel Frailich and David Ridge, it is the most comprehensive organizer program available for the T/S 2068 (and of course, Spectrum) computer. Like all organizer software for the other computers, The Worx! contains a number of functions to make life easier, or at least more organized! They include a planner to track day to day appointments, a notepad to file reminders, messages lists etc., a telephone listing for up to 50 entries, a calculator, a clock/ timer/time zone feature, a biorythm chart producer, a decision maker which will help you weigh up to 20 factors against each other, and a system I/O routine.
The Worx! comes set up for use by either cassette or microdrive operation, but can be customized for any other configuration you might have. When you load the program you are asked for the current date. After the date is checked and confirmed, you are asked for the number of days in the current month, and if the year is a leap year or not. (This could be improved by including a routine which would automatically know the number of days in a given month, or if the year entered is a leap year. The formulas for this exist and would speed up the initialization procedure.)
The Planner section of the program starts off by displaying the calendar of the current month along with the menu of options. Choosing Activitities loads all of the entries with today’s date into the work file and then sorts them by time. You are allowed a maximum of 20 entries for any given date. When you choose the Add sub-function you will first be prompted for a time using a 24 hour clock. Once the time has been designated you will have an opportunity to enter a memo of up to 17 characters long. The Delete sub-function will allow you to remove a memo, provided you supply the correct time/id identifier.
The Filer sub-function (here and in other places in the program) serves a purpose which is central to the design of The Worx!. This program will set up a virtual storage area, similar to a RAMdisk, in which records created in any section of The Worx! can be stored for use in other areas of the program. These files can be moved between sections as well as stored permanently for future use.
The Find option of the main menu allows you to search for a string which you indicate. Again, this is limited to 17 characters as are the file entries. This search is not case dependent and capitals will work as well as lower case. You have three sub-functions to choose from here; Next- which continues the scan for the indicated string; Lock- which substitutes the current date with the entry displayed on-screen; and Stop-which will return you to the calendar/planner menu display.
The final option in this section is Change Date/Return to Today. This entry simply allows you to change the work date and will remain in effect until something is done to change that.
We move now to the Notepad section of The Worx! which is a mini text editor which will allow you to create notes, list, reminders or any other text file. There are only a few sub-functions in this section; Edit-which allows you to enter the mini editor to create your file; Sort-sorts all lines in ASCIl order; and Filer- which invokes the filer menu as we discussed in the previous section.
The Telephone section of this software allows up to 50 entries of 2 lines each to be entered and maintained. Under the Find choice, you will find the three sub-functions which will enable you to use this utility-Next, Delete and Edit. Add allows you to make a new entry-up to 2 lines. List is broken into Next and Filer.
The Calculator segment of The Worx! turns your computer into a powerful programmable calculator. You are able to work with all the digits from O thru 9-both positive and negative, as well as floating point arithmetic. You also have access to the following functions; LN, SGN, ABS, SQR & EXP. You are given menu options in this area which allow you to Program the calculator, Execute the program in your file and invoke the-now familiar-Filer.
One of the most interesting features of The Worx! is the Decision making section. Here you are allowed to list up to 20 different considerations which go into the process of making your decision. Two at a time you will be asked to choose which consideration is the more important of the two. After each factor is thus weighed against every other factor, each entry will be shown according to the number of preferences over each other entry, helping you to come to your final decision.
For those of you who have an interest in biorhythms, choosing that option will chart your personal performance on a day to day basis. After being requested to enter your date of birth and the time period you wish to have charted, The Worx! will then plot the cycles for your intellectual, physical and emotional highs and lows. Quoting from the users manual; “Do biorhythms work? We’re not sure…but consider that Japanese pilots have – for several years – accepted or refused to take on a flight, based on their biorhythms, and claim an increase in safety due to a decrease in human error.” You decide for yourself!
Three features are available from the Time menu selection. Choosing Clock initiates the printing of the current time on every screen of The Worx! This option may be used to start timing from 00:00:00 by entering “O” when prompted for the time. If you wish a countdown timer, you will choose the Stopwatch sub-function. Choosing the Time Zones feature, you will find a map of the world showing the different world time zones based on Greenwich Standard Time (GST).
Once all work is completed, you will want to SAVE it, either to cassette or other mass storage device. (The Spectrum version asks if you want the output to go to cassette or microdrive. Both versions may be fully modified to support alternate devices as well as various printer options.) The System Input/Output menu will Save those portions of data you desire.
After examining all four of Novelsoft’s products (Artworx, ZXpert, Timachine, and The Worx!) one comes to the conclusion that these guys have put a lot of work into making their software into the most professional packages on the market (here or in England) for these Sinclair computers. The comprehensive users guide which comes with each of the programs is a pleasure to read and follow. In each case examples are given and fully annotated explanations offered. Should you still come across a question, both Ariel and David are fully committed to personal support via mail, telephone or on-line (CompuServe ID 70416,1435). If any of these programs serve your purpose I wholeheartedly recommend that you contact Novelsoft.