SuperBASIC. SuperBASIC is an advanced variant of the BASIC programming language with many structured programming additions. It was developed at Sinclair Research by Jan Jones during the early 1980s. 

Originally SuperBASIC was intended as the BASIC interpreter for a home computer code-named SuperSpectrum, then under development. This project was later cancelled; however, SuperBASIC was subsequently included in the ROM firmware of the Sinclair QL microcomputer (announced in January 1984), also serving as the command line interpreter for the QL's QDOS operating system.

It was one of the first second-generation BASICs to be integrated into a microcomputer's operating system (unlike BBC BASIC which preceded it in 1981), making the OS user-extendable—as done by Linus Torvalds in his formative years.

Advanced features 

 RESPR for resident procedures, e.g. to extend QDOS
 choice of parameters passed to procedures
 procedures return parameters as chosen
 IF - THEN - ELSE - END IF
 FOR - NEXT - EXIT - END FOR
 REPeat - NEXT - EXIT - END REPeat
 SELect ON - ON - REMAINDER - END SELect
 arbitrarily RETurn from within procedures & functions
 data type coercion between numeric and string variables
 actual parameters passing data type to formal parameters
 array operations: slicing, joining etc.
 LOCal arrays & (string) variables
 AUTOmatic line numbering
 relative RESTORE & DATA

The function below illustrates the last eight of these features. After having RUN it, entering

       PRINT weekdays$(Iso("19631122",1))

will print FRI to the screen. Until cleared (e.g. by entering NEW), the function  will act like an extension to the operating system. Similarly, according to the QL User Guide, "many of the operating system commands are themselves defined as procedures."

Example 

 AUTO 11,2
 
   DEFine FN Iso(S,O)
   LOCal y%,m%,d%,i$,n%,w%
 
   REM Step 0 - to isolate components of date-stamp S="YEARMoDa"
   LET y%=S(1TO 4) : m%=S(5TO 6) : d%=S(7TO 8)
 
   REM Step 1 - to initiate Lachman's Congruence
   LET i$=m%*2.56+ 193 : S=S(1TO 6)- 3
 
   REM Step 2 - to compute the day-number within the week
   LET w%=(S(1TO 2)&"32"DIV 16+ S(1TO 4)DIV 4+ y%+ i$(2TO 3)+ d%)MOD 7
  
   REM Step 3 - to return result
          SELect ON O
                 ON O= 5 : n%=i$(2TO 3)
                 ON O= 4 : n%=y%
                 ON O= 3 : n%=m%
                 ON O= 2 : n%=d%
                 ON O= 1 : n%=w%
                 ON O= REMAINDER : n%=-1
          END SELect
   RETurn n%
 
   REM data statements
   DIM weekdays$(6,3)
   RESTORE 190
   FOR count=0 TO 6 : READ weekdays$(count)

 100 DIM month$(12,9)
 110 RESTORE 
 120 REM QL User Guide's "Data Read Restore" example ii
 130 REM appropriately amended relative to example i
 140 FOR count=1 TO 12 : READ month$(count) 
 150 DATA "January","February","March"
 160 DATA "April","May","June"
 170 DATA "July","August","September"
 180 DATA "October","November","December"
 190 DATA "SUN","MON","TUE","WED","THU","FRI","SAT"
 199 END DEFine Iso

Bibliography 

 Donald Alcock: Illustrating Superbasic on the Sinclair QL. Cambridge University Press, 1985. 
 Roy Atherton: Good Programming with QL Superbasic. Longman Software, 1984. 
 A. A. Berk: QL SuperBasic. Granada Publishing, 1984. 
 
 Jan Jones: QL SuperBasic: The Definitive Handbook. McGraw-Hill, 1984  (e-book reissue 2014)
 Dick Meadows, Robin Bradbeer, Nigel Searle: Introduction to Superbasic on the Sinclair QL. Hutchinson Computer Publishing, 1984. 
 Dick Meadows, Robin Bradbeer, Nigel Searle: Making the Most of the Sinclair QL: QL Superbasic and Its Applications. Hutchinson Computer Publishing, 1985. 
 Andrew Nelson: Exploring the Sinclair QL: An Introduction to SuperBasic. Interface Publications, 1984. 
 John K. Wilson: QL Superbasic: A Programmer's Guide. Micro Press, 1984.

References

External links 

 The Quantum Leap - to where?: a chapter from Sinclair and the 'Sunrise' Technology

BASIC interpreters
Discontinued BASICs
Sinclair Research
Programming languages created by women
BASIC programming language family