ESX-28 Description

Version 2.0

November 17, 2005

 

ESX-28 is C-based, open source SX 28 emulator written by Bob Senser.  This emulator is a set of C functions that emulate the functionality of a Parallax SX 28.

 

Credit/Acknowledgement: This emulator was inspired by Guether Duabach's SxSim.  In fact, many of the SX 28 diagnostic programs written to test this emulator were written with the SX-Key(c) IDE and then first tested with SxSim.  This emulator differs from Guether's tool in that it is C-based and open source.  Many thanks to Guether for providing his tool!

 

This second version of ESX-28 is close to a complete, virtual SX-28.  It has basic interrupt support and the RTCC timer functionality.  This emulator can run SX/B programs and was tested with a set assembler test programs.  If you find a bug, have suggestions or want to help write some code, please contact Bob Senser at esxemu@aol.com.

 

The high-value items in this emulator are the in sxcore.cpp module.  This module and some associated header files are the basic emulator.  pdl_rdr.cpp parses the SX program from the ".lst" files generated by the assembler.  Note that sxcore.cpp uses call-back routines for I/O access.  See the sxcore.h header file for how to call the emulator functions.

 

There is as yet no programmers guide.  Please look at the main.cpp module for how to call the actual emulator (using the sx_init() and sx_core() functions).  The main.cpp module is a command line monitor/debugger for using the emulator.  The mult8x8.cpp shows another use of this emulator.

 

This emulator is written in C/C++.  Most of the code is written in a C-style manner but compiled as C++.  The C++ compiler finds a few more errors.  The code works under both Windows and Linux.  More details are covered in the FAQ.

 

 

The following SX 28 diagnostic programs are included in the "diags" directory:

 

Program Name

Test Function

diagpre.lst

Preliminary test to be sure the emulator is more-or-less working.

 

 

diagarith.lst

Arithmetic instructions tests.

diagcall.lst

Call and ret instruction tests.

diagcryx.lst

"CARRYX" DEVICE option tests.

diagind.lst

Ind (inderect addressing) instruction tests.

diagint.lst

Interrupt tests.

diagint2.lst

Interrupt tests.

diaglogc.lst

Logic instruction tests.

diagmem.lst

Minimal memory tests.

diagmov.lst

Move instruction tests.

diagpcr.lst

PC (program counter) instruction tests.

diagrtcc.lst

RTCC functionality tests.

diagstck.lst

Stack functionality tests.

diagsysc.lst

System control instruction tests.

 

 

diagfull.lst

Many of the tests above in one program.

 

 

exsxb.lst

SX/B sample program.

 

 

 

Like SxSim, the esx28v2 program uses the SX-Key(c) output listing file as its SX 28 program input; it is also possible to supply the SX 28 program to the emulator via an array of C-style int variable.

 

/* end of document */

1