[Simh] Intel 8008 simulator in SIMH

Hans-Åke Lund hans-ake at trei-lund.st
Wed Sep 6 06:11:09 EDT 2017


Hi,

I have just made a simulator for Intel 8008 in SIMH. This is a "just for
fun" project that started when I found our old master thesis report from
1976 describing how we developed a computer using the Intel 8008 CPU.

I started to develop some code for 8008 based on the ALTAIR code. Later
I found simulator code for 8008 in Intel-Systems/common/i8008.c but that
code would not compile and was also missing i/o simulation so I
continued to develop my own code and eventually got it working.

To test the simulator I used the SCELBAL interpreter written in 8008
assembler (http://www.willegal.net/scelbi/scelbal.html). As the AS8 8008
assembler that was used to assemble this code does not seem to be
available any longer, I modified the SCELBAL assembler source code to be
assembled with the Macro Assembler AS
(http://john.ccac.rwth-aachen.de:8000/as/).

I added some i/o routines to the SCELBAL assembler code that uses the
ports on the hardware for the computer we developed in our master thesis.

My simulator development is done on a Lubuntu 64 bit Linux system so I
have not tested the code on Windows etc.

Do you think it is worth putting this code (i8008_cpu.c, i8008_defs.h,
i8008_io.c,  i8008_sys.c and some lines added to makefile) on the simh
GitHub?

If the answer to the previous question is yes, do you have any ideas
about where the 8008 code should be placed in the simh source tree? (And
what is the best procedure to add a new simulator?)

A small example of running the SCELBAL interpreter (from the SCELBAL
book, chapter 14):

hal at LinuxServer:~/retro/simh/i8008/SCELBAL$ ../../simh-master/BIN/i8008

Intel 8008 simulator V4.0-0 Beta        git commit id: ba447399
sim> load sc-asl.bin
12006 Bytes loaded.
sim> g 0

READY

SCR

READY

10 PRINT 'RADIUS';
15 INPUT R
16 K = 1.6
20 R2 = R^2
21 PRINT 'AREA =';3.14159*R2,'CIRCUM =';3.14159*2*R
22 PRINT
23 PRINT
25 K1 = K*R
30 FOR X = -R TO R + 0.1
40 Y = K*SQR(R2 - X^2)
50  PRINT TAB(2.5 + K1 - Y);'*';TAB(5.5 + K1 + Y);'*'
60 NEXT X
70 END
RUN
RADIUS?6
AREA = 113.0973                CIRCUM = 37.69910


            *  *
      *             *
    *                 *
   *                   *
   *                    *
  *                     *
  *                     *
  *                     *
   *                    *
   *                   *
    *                 *
      *             *
            *  *

READY

Best regards
   Hans-Åke Lund




More information about the Simh mailing list