ESX-28 Description

Version 3.0

May 1, 2006

 

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 third version of ESX-28 is very 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 esx@att.net.

 

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 programmer's 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; it includes serial support to handle the SXB SERIN/SEROUT.  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, as well with some embedded processors.  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.

 

 

serial_ttt.lst

SX/B sample program, using serial I/O.

 

 

 

Like SxSim, the esx28v3 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 short.

 

/* end of document */