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 */