SCELBAL, short for SCientific ELementary BAsic Language, is a version of the
BASIC programming language
BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College i ...
released in 1976 for the
SCELBI and other early
Intel 8008
The Intel 8008 ("''eight-thousand-eight''" or "''eighty-oh-eight''") is an early byte-oriented microprocessor designed by Computer Terminal Corporation (CTC), implemented and manufactured by Intel, and introduced in April 1972. It is an 8-bit CP ...
and
8080-based
microcomputer
A microcomputer is a small, relatively inexpensive computer having a central processing unit (CPU) made out of a microprocessor. The computer also includes memory and input/output (I/O) circuitry together mounted on a printed circuit board (P ...
s like the
Mark-8. Later add-ons to the language included an extended math package and
string handling
In computer programming, a string is traditionally a sequence of characters, either as a literal constant or as some kind of variable. The latter may allow its elements to be mutated and the length changed, or it may be fixed (after creation). ...
. The original version required 8 kB of
RAM, while the additions demanded at least 12 kB.
The language was published in book form, with introductory sections followed by
flowchart
A flowchart is a type of diagram that represents a workflow or process. A flowchart can also be defined as a diagrammatic representation of an algorithm, a step-by-step approach to solving a task.
The flowchart shows the steps as boxes of va ...
s and then the 8008
assembler code
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence be ...
. The book described ways to save more memory, turning off arrays for instance, and how the user could add their own new features to the language.
History
The primary author of SCELBAL is Mark Arnold, who was a high-school student in 1974 when the SCELBI was announced. Arnold was friends with professors at the
University of Wyoming
The University of Wyoming (UW) is a public land-grant research university in Laramie, Wyoming. It was founded in March 1886, four years before the territory was admitted as the 44th state, and opened in September 1887. The University of Wyomin ...
(UW), and through them had arranged to have an account on their
Sigma 7 mainframe computer
A mainframe computer, informally called a mainframe or big iron, is a computer used primarily by large organizations for critical applications like bulk data processing for tasks such as censuses, industry and consumer statistics, enterpris ...
. The first version of what became SCELBAL was written for this machine. Later that year, he wrote an 8008
cross compiler
A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is running. For example, a compiler that runs on a PC but generates code that runs on an Android smartphone is a cross co ...
on that platform.
Arnold entered UW in 1975 and contacted Nat Wadsworth, one of the founders of SCELBI, pitching the idea of a
compiled version of BASIC for their new platform. This would be a multi-pass system that would save the intermediate versions on
cassette tape. This would be very tedious to use but would produce programs that would run on the 4 kB 8H models of the system. Wadsworth favored an
interpreter, which would require 8 kB, which would be available on the new 8B models of the system. The language used
floating point
In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be r ...
routines published by Wadsworth in 1975 in
Machine Language Programming for the 8008'.
It took Wadsworth several months to finally arrange a contract, which included sending Arnold an 8B development system. This significantly delayed the release of the language into 1976. Arnold speculated that, lacking these delays, SCELBAL could have been released at about the same time as
Altair BASIC
Altair BASIC is a discontinued interpreter for the BASIC programming language that ran on the MITS Altair 8800 and subsequent S-100 bus computers. It was Microsoft's first product (as Micro-Soft), distributed by MITS under a contract. Altair BAS ...
in late 1975. It was first presented in a lengthy article in the second issue of
Dr. Dobb's Journal in February 1976.
The release of SCLEBAL was announced in an advertisement in
''Byte'''s June 1976 issue. The ad did not specifically link the language to the SCELBI platform, instead, it simply offered itself in book form as a complete source listing to create a version of BASIC on any 8008 or 8080 system with the requisite 8 kB of RAM. The book's price was $49, about $ in .
Description
SCELBAL used a 32-bit (four byte)
floating point
In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be r ...
format for numeric calculations, with a 23-bit
mantissa, 1-bit sign for the mantissa, a 7-bit exponent, and 1-bit sign for the exponent. These were organized in reverse order, with the least significant byte of the mantissa in the first byte, followed by the middle and then most significant byte with the sign in the high bit. The exponent came last, again with the sign in the high bit. The manual provides well-documented
assembly code for the entire math package, including entry points and usage notes. 32-bit formats were common in this era, while later versions of BASIC, starting with
Microsoft BASIC
Microsoft BASIC is the foundation software product of the Microsoft company and evolved into a line of BASIC interpreters and compiler(s) adapted for many different microcomputers. It first appeared in 1975 as Altair BASIC, which was the first ...
for the
MOS 6502, generally adopted a 40-bit (five byte) format for added precision.
SCELBAL was otherwise similar to other BASIC dialects, including early MS versions like
Altair BASIC
Altair BASIC is a discontinued interpreter for the BASIC programming language that ran on the MITS Altair 8800 and subsequent S-100 bus computers. It was Microsoft's first product (as Micro-Soft), distributed by MITS under a contract. Altair BAS ...
, lacking string variables and operators and a number of mathematic functions. Other differences were less pronounced. The statement had an optional form that removed the need for , It also retained the MS-style short form for the same concept, It also allowed conditional execution of other statements, such as .
The base language did not support string handling, although literal (constant) strings could be used in , and had the supporting functions of to print non-printable characters, and to provide layout. Oddly, the system required
ASCII
ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because ...
codes to have the high-bit set, so to convert from normal ASCII to SCELBI character codes, one had to add or subtract 128. For instance, to produce the string "HELLO, WORLD" in the output.
would normally read the user-entered text as a number, but allowed the dollar sign to indicate the value should be read as the SCELBI code instead. For instance, would read the user input "1" into A as the floating-point value 1, while would result in A being set to 177, 49 (ASCII for "1") + 128. Additionally, when the dollar sign is used, the traditional "?" prompt is not printed, and command returned to the language as soon as a single character is entered, instead of waiting for the carriage return as in the normal case.
Among the few other differences was that the command found in MS, which clears out existing program code and data, is called for "scratch", and the function, which called a
machine language
In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a ver ...
routine, was for "user defined function". allowed a single floating-point parameter to be passed to the user-defined function, whose machine-language code must have been loaded into memory at a fixed location ahead of runtime.
Error codes were reduced to two letters, and code for and were provided in boilerplate form and expected to be implemented when ported to different platforms. Line numbers could be between 1 and 999999, whereas most BASICs used a 16-bit integer and thus supported lines from 1 to 32767 or 1 to 65535.
Language features
:''Taken from the 1976 manual unless otherwise noted.''
Commands
Immediate-mode only
Referred to as "executive" mode in the documentation.
; : scratch, equivalent to MS
; :
; :
; :
; :
Immediate or program mode
; :
; : Like MS, could accept multiple variables, . Did not include a prompt string.
; : Like MS, the was optional, so and are equivalent.
; :
; : Alternate form of .
; : It appears the "spaced version", , was not supported.
; :
; : As in MS, is optional and assumed to be 1. required a variable, unlike later MS versions.
; :
; :
; : Arrays worked as in MS, but were optional and could be turned off to save memory. Only single-dimension arrays were supported, and the total number of elements for all arrays combined was 64 numbers.
Functions
; :
; :
; :
; :
; : As in MS, takes a dummy variable and returns a value between 0 and 1.
; : Note the lack of the $ found in MS, which uses .
; :
; :
Extensions
SCELBI published two extensions to the system, the Mathematical Functions Supplement, and the Strings Supplement.
Math Functions Supplement
The Mathematical Functions Supplement added five new
transcendental function
In mathematics, a transcendental function is an analytic function that does not satisfy a polynomial equation, in contrast to an algebraic function.
In other words, a transcendental function "transcends" algebra in that it cannot be expressed alg ...
s, , , , , and .
String Supplement
The String Supplement was somewhat larger than the Math Functions, including a number of new features.
Strings could be up to 80 characters long, and the system could hold a total of 64 string variables. Any one of those 64, or all of them, could be one-dimensional arrays, but the total number still had to be 64 strings in total. Oddly, string arrays did not require a statement.
In contrast to MS BASIC, and the
Dartmouth BASIC
Dartmouth BASIC is the original version of the BASIC programming language. It was designed by two professors at Dartmouth College, John G. Kemeny and Thomas E. Kurtz. With the underlying Dartmouth Time Sharing System (DTSS), it offered an inte ...
string handling that inspired it, SCELBI used the "slicing" style of string manipulation found in contemporary BASICs like
SDS BASIC,
HP Time-Shared BASIC and
Northstar BASIC, or the later
Atari BASIC
Atari BASIC is an interpreter for the BASIC programming language that shipped with the Atari 8-bit family of 6502-based home computers. Unlike most American BASICs of the home computer era, Atari BASIC is not a derivative of Microsoft BASIC a ...
. Instead of using functions like , , to access substrings, the array-access syntax was used with a colon preceding the starting point and optionally a semicolon preceding the length. As SCELBAL also supported string arrays, the first number in the array accessors was the array index, and was optional if the variable was not an array. So, for instance, the code:
would result in "ELL" being printed to the output. If an array was used the syntax required the array index in the first parameter:
would result in "ORL" being printed to the output. SCELBAL also allowed omitting the semicolon, which specifies the characters from the starting point to the end of the string. So, for instance, the code:
would result in "ORLD" being printed to the output.
Although similar to SDS BASIC, there is a major difference in the way this works in comparison to the other BASICs that used slicing syntax, in that the last parameter is the length, not a position. For instance, in Atari BASIC the similar-looking code:
would instead output "EL", as the instruction translates to "print all characters between positions 2 and 3". In this fashion, SCELBAL works in a fashion more similar to MS BASIC, where the equivalents would be:
and
To add full support for strings, the Supplement replaced the original with , which matched the syntax of its MS counterpart. Likewise, was modified so string variables worked like numeric ones, waiting for the carriage return and then assigning the entire user input to the associated string variable. It also added the support functions and , and to convert a string containing a numeric value to a string representation of that number. As in MS,
concatenation
In formal language theory and computer programming, string concatenation is the operation of joining character strings end-to-end. For example, the concatenation of "snow" and "ball" is "snowball". In certain formalisations of concatenat ...
used the operator.
References
Citations
Bibliography
*
*
*
External links
A javascript simulator of 8008 preloaded with SCELBAL*
ttp://www.scelbi.com/files/software/scelbal.hex Object code for Published SCELBAL in Intel Hex format *
ttp://www.willegal.net/scelbi/scelbal.html Mike Willegal's SCELBAL pageMike Willegal's SCELBI OS/X Emulator which can run SCELBAL
{{BASIC
BASIC interpreters
BASIC programming language family