SCELBAL (SCELBI Basic)

Ad introducing SCELBAL in BYTE
            Magazine, June, 1976
The Ad introducing SCELBAL in BYTE Magazine, June, 1976 - There also is an article about SCELBAL in that issue by Nat Wadsworth and Mark Arnold.

SCELBAL was called the SCientific ELementary BAsic for the 8008 and 8080 by SCELBI Computer Consulting.  SCELBAL could be run on a SCELBI or other 8008 based machine that had 8K of memory.  The second generation SCELBI 8B supported up to 16K of memory.    I know of at least one  of the earlier  SCELBI 8H systems, which normally only supported 4K of memory,  that was upgraded to 16K of memory in order to run this interpreter.  Upgrading an 8H to 16K required some serious hacking.   There also was a variation of SCELBAL developed for the 8080 micro-processor.

SCELBAL completely supported floating point math with 6 digits of precision.  As time went on, additional packages including matrix arithmetic and math functions were added.  This interpreter was also ported to the  8008 based, Mark-8.  For many purposes, especially for engineering and scientific applications, this Basic interpreter was far and away superior to Apple’s integer basic, which lacked floating point math capability. 

There is scan of SCELBI's SCELBAL book on the documentation page of Cameron's Cooper's scelbi.com site.

Mark Arnold who wrote SCELBAL approached Nat Wadsworth, one of the founders of SCELBI Computer Consulting, about publishing a BASIC language for the 8008.  Here is the story of SCELBAL from Mark Arnold, himself.

"The published 8008/8080 version of SCELBAL was an extracurricular activity. My first contact with SCELBI was when I was a senior in high school. I was a 'nerd' and already knew several professors at the University of Wyoming (including the dean of the graduate school, who was a computer hobbyist), and had access to its Sigma-7 mainframe (an IBM-360 clone with very nice timeshare operating system).  I had written a BASIC interpreter on that mainframe--it became the outline of SCELBAL later.  I also developed an 8008 cross assembler and emulator on the university mainframe in 1974.  In 1975, when I was a UW freshman, I originally pitched a compiled version of SCELBAL to Nat (using multiple cassette-tape passes) that would have made the full features available on a 4K (8H) system but would be tedious to use. Because one of the references I gave Nat was the dean of the graduate school, Nat assumed I was a graduate student.  Nat preferred an interpreter (as we know needing 8K) to be competitive with Altair BASIC, so I dropped the compiler project and developed published SCELBAL on my 8B, using the Sigma-7 BASIC version that I had done the previous year as an outline. It took months (I think in part due to Nat's health problems) to get the contract with Scelbi and for me to get my 8B.  If I had used my cross-assembler/emulator, and not ventured down the compiler avenue, and/or if Nat could have responded quicker, SCELBAL could have come to market perhaps a year earlier--at about the same time MITS BASIC appeared. "

VERSIONS of SCELBAL for the 8008

Below you will find different versions of SCELBAL in source, binary, and Intel Hex formats.   The source will assemble with a version AS8 8008 assembler that I modified to support a few missing instructions and to suite my tastes in I/O port numbering.

Original SCELBAL (1976)

SCELBAL was released in two forms, paper tape and in book form.   In a way, the book form was one of the first versions of open source software distribution.  My understanding is that most people purchased the book and then entered the program using whatever input system that their particular computer had.    They would also have to write or adapt I/O routines for their particular system.

This version has a built in 110 baud input and output drivers using input port 5 and output port 016.  You will have to modify the I/O drivers to use other ports or bit rates.  Load starting at 0 and run at 000-100.

  1. source
  2. intel hex (use to load into my SCELBI OS/X emulator or POSIX 8008 debugger)
  3. binary (use to load into a real SCELBI) with a bootstrap program 

Faster SCELBAL (2012)

By modern standards, original SCELBAL's performance is pretty poor.   A significant part of the performance comes from a design decision to completely reparse each line after each keyword.  Mark Arnold has changed this behavior in this version which results in much faster performance.  The downside is that correct formatting of the program is more important, with spaces between keywords required in this version.  Mark says this change could have been done back in the day.

This version has a built in 110 baud input and output drivers using input port 5 and output port 016.  You will have to modify the I/O drivers to use other ports or bit rates.  Load starting at 0 and run at 000-100.
  1. source
  2. intel hex (use to load into my SCELBI OS/X emulator or POSIX 8008 debugger)
  3. binary (use to load into a real SCELBI) with a bootstrap program 

Tiny SCELBAL (2013)

I was looking for some interesting applications to run on my SCELBI 8H and Mark Arnold suggested that he might be able to make a version that would run in the 4K of memory in a SCELBI 8H.    This was something that was considered back in the day, but not pursued.  This version only supports about 360 bytes of program data, so programs need to be kept small.

This version has a built in 2400 baud input and output drivers using input port 5 and output port 016.  You will have to modify the I/O drivers to use other ports or bit rates.  Load starting at 0 and run at 000-100.

  1. source
  2. intel hex (use to load into my SCELBI OS/X emulator or POSIX 8008 debugger)
  3. binary (use to load into a real SCELBI) with a bootstrap program

Here is an simple guessing game that Mark helped me port from David Ahl's "BASIC COMPUTER GAMES" book.  It easily fits with tiny SCELBAL into a SCELBI 8H's 4k of memory.  Note that Tiny SCELBAL doesn't have a built in RND function.  The first three lines generate a random number from value 0 to 99, using a seed S.  You can change the starting number of the pseudo random sequence by assigning S, a value of your choice, before running the program.  Note that spaces are omitted where possible and lines numbers use as few digits as possible to save memory.

1 S=1829*S+3565
2 S=((S>0)-(S<0))*S
3 Y=S/128*100/256
4 B=0
5 PRINT"YR GUESS";
6 INPUTA
7 B=B+1
8 IFA=YTHEN 16
9 IFA>YTHEN 12
10 PRINT"LOW"
11 GOTO13
12 PRINT"HIGH"
13 IFB<6THEN 5
14 PRINT"U LOSE"
15 GOTO1
16 PRINT"U WIN"
20 GOTO1



Back to Mike's Hobby Home Page