Updates and corrections are gratefully accepted. Last modify 20 January 2003.
Tomy BASIC, as shown in Tutti.
GBASIC is so different from BASIC that it has its own section.
Tomy Tutor BASIC is very similar to TI BASIC, and inherits similar quirks. Multistatement lines are separated by the double colon (::), for example, in both; and the : in a PRINT inserts a line feed. Mercifully, the TI CALL series of commands have been turned back into their more standard equivalents.
GBASIC is totally dissimilar and supports only a subset of features. Its syntax is also considerably more constrained, and its keyword set is definitely unusual.
Here's a comparison of BASICs between a Commodore 64 (call it our "vanilla" Microsoft BASIC machine, as its BASIC 2.0 is unadorned but supports the lowest common denominator of Microsoft BASIC keywords and syntax), a TI, and both Tomy dialects:
|Function||C64||TI 99/4A||Tomy BASIC||Tomy GBASIC|
|clear the screen||(1)||CALL CLEAR||CLS||(5)|
|take a substring||MID$(a$,b,c) or MID$(a$,b)||SEG$(a$,b,c)||SEG$(a$,b,c) (not MID$, as the manual alleges)||not available|
|sound a tone||(2)||CALL SOUND(a,b,c,d,e,f)||SOUND(a,b,c,d,e,f)||TONE NOa limited to predefined sounds only|
|get a keypress||GET a$||CALL KEY(a,b,c)||KEY(a,b)||(6)|
|get joystick data||(2)||CALL JOYST(a,b,c)||KEY(a,b)||KEY a b,c|
|load a shape into a character cell||(2)||CALL CHAR(a,b$)||MCELL(a,b$)||(5)|
|put a character at a specific screen position||TAB(a), SPC(a) (3)||CALL HCHAR(a,b,c), CALL VCHAR(a,b,c)||SCELL(a,b,c,d)||(5)|
|get a character at a specific screen position||(2)||CALL GCHAR(a,b,c)||GCELL(a,b,c)||(7)|
|changing the screen colour||(2)||CALL SCREEN(a)||SCREEN(a)||(5)|
|changing the colour of an onscreen character||(2)||CALL COLOR(a,b,c)||COLOR(a,b,c)||(5)|
|opening a device or file||OPEN a,b,c,d$||OPEN #a:b$||not available (but see the # operator)||not available|
|writing to a device or file||PRINT #a,b$||PRINT #a b$||undocumented, only works for device 0, i.e., the screen (see the # operator)||not available|
|closing a device or file||CLOSE a||CLOSE #a||not available (again, see above)||not available|
|randomize RNG||RND(-seed)||RANDOMIZE||RANDOMIZE||not needed?|
|OS and direct memory access||POKE a,b, q=PEEK(a), SYS a||(4)||not available (but see the SCELL and MCELL commands)||not available (but see the CELL keyword)|
|Question||C64||TI 99/4A||Tomy BASIC||Tomy GBASIC|
|can you put statements after THEN? (e.g. IF Q=1 THEN PRINT"HELLO")||yes||no||no||no|
|can you put ELSE with THEN? (e.g. IF Q=1 THEN 400 ELSE 300)||no||yes||yes||no|
|automatic line numbering?||no||yes (NUM a,b)||yes (AUTO a,b)||no|
|automatic line renumbering?||no||yes||yes (RENUM a,b)||no|
|can you do I/O or tape and device access in a program?||yes, no restrictions||yes, no restrictions||printer only (LPRINT), tape from direct mode only (but again, see above)||no|
|can you put multiple statements on a line? (e.g. PRINT A:PRINT B)||yes||yes (using double colon)||yes (using double colon)||no|
|number of letters significant/allowed in variable names||2/15||15/15||15/15||4/4|
|do you need LET for variable assignment?||no||no||no||no|