blob: 65eae088c578345d88439c0ffb69060ac4e00839 [file] [log] [blame] [raw]
SCELBI Simulator with Intel 8008 CPU
====================================
1. Background.
The SCELBI (SCientic-ELectronics-BIology) computer was probably
the first commercially available micro-computer marketed toward hobbyist.
The first market announce for SCELBI-8H was a tiny advertisement in the
back of the March 1974 issue of QST, an amateur radio magazine.
The computer was built around the Intel 8008 architecture. There were two
versions of the SCELBI. The first version was called the 8H. The H standing
for hobbyist. The second version was called the 8B, the B standing for
business. It had all the features of the 8H, but added support for up
to 16K of memory. As the default memory configuration for the SCELBI simulator
is 16K, it is really a SCELBI-8B that is simulated. More information about the
SCELBI computer can be found at: http://www.willegal.net/scelbi/scelbi.html
and http://history-computer.com/ModernComputer/Personal/Scelbi.html.
2. Hardware
We are simulating a SCELBI-8B from about 1975, with the following
configuration:
device simulates
name(s)
I8008 SCELBI-8B with Intel 8008 CPU, 16KB of RAM.
TTY Serial "bit banger" interface (commonly to an
ASR-33), is assumed to be connected to a serial
"glass TTY" that is your terminal running the Simulator.
PTR Paper Tape Reader, not implemented yet.
2.1 CPU
You may select different memory sizes, the default size is 16K.
SET I8008 4K
SET I8008 8K
SET I8008 12K
SET I8008 16K
CPU Registers include the following:
name size comments
PC 14 The Program Counter
A 8 The accumulator
B 8 The B register.
C 8 The C register.
D 8 The E register.
E 8 The E register.
HL 16 The HL register pair. H is the top 8 bits, L is
the bottom 8 bits.
SP 3 Stack Pointer to return address in stack.
CF 1 Carry Flag.
ZF 1 Zero Flag.
PF 1 Parity Flag.
SF 1 Sign Flag.
WRU 8 The interrupt character. This starts as 005
(Ctrl-E)
2.2 The TTY Serial Interface
This interface simulates a "bitbanger" TTY interface as
implemented on the SCELBI computer in the SCELBAL source code.
Inport 2 bit 7 is used as input from the TTY and Outport 2 bit 0
is used as output to the TTY. In other SCELBI documentation Inport 5
is used for input from the TTY and Outport 6 is used for output to the TTY.
The I/O simulation routines are mapped in the i/o configuration table
to both port variants.
There are also functions that support simulated I/O for
an Intel 8008 computer built for a master thesis in 1975.
These functions are however not mapped in the i/o configuration
table as they conflict with the SCELBI TTY interface.
3. Sample Software
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. 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.
SCELBAL can be downloaded from http://www.willegal.net/scelbi/scelbal.html
there are assembler source, hex and binary images available for three
variants of SCELBAL. The web page also includes information about SCELBAL
and a link to a scan of the SCELBI's SCELBAL book:
http://www.scelbi.com/files/docs/scelbal/SCELBAL.pdf
In chapter 14 of the SCELBAL book there is a language reference.
To run SCELBAL on the SCELBI simulator, download the binary code from:
http://www.willegal.net/scelbi/software/sc1.bin
Then start the simulator, load the code and run:
SCELBI simulator V4.0-0 Beta git commit id: ba447399
sim> d pc 100
sim> load sc1.bin
11942 Bytes loaded.
sim> g
READY
SCR
READY
10 A=1
20 B=7
30 PRINT "A + B =";
40 PRINT A+B
50 END
LIST
10 A=1
20 B=7
30 PRINT "A + B =";
40 PRINT A+B
50 END
READY
RUN
A + B = 8.0
READY
<exit simulation by pressing Ctrl-E>
Simulation stopped, PC: 000103 (INP 5)
sim> exit
Some notes on SCELBAL:
Only upper case is recognized.
Always do SCR before entering a program, otherwise strange
things will happen.
The binary code at the web page above shall be loaded starting
at address 0100. The program shall also start to run from
address 0100.