05/03/2006
ESX-28 Frequently Asked Questions for ESX28V3
1.
Why was this SX-28 emulator written?
This emulator was started as a proof-of-concept emulator for proving out a
code-generation tool for use on another, larger emulator project. When it became clear that this SX-28
emulator was useful, the author decided to release it as open source.
2.
How does this emulator compare with SXSim by Guenther Daubach?
Guenther's tool has a great GUI, runs on Windows only and the source code is
not generally available. ESX-28 is open
source (expandable); it runs under Windows, Linux and some embedded platforms;
it really does not have a GUI; and it is C-based.
3.
What was the emulator built with?
The basic emulator was written on Windows with Microsoft VC 6.0. The base emulator code was also ported to
Linux GCC ("gcc version 3.3 20030226 (prerelease) (SuSE Linux)") and
the NetBurner MOD5213 (Dev-C++ 1.14).
4.
Are all the SX-28 instructions supported?
All of the Ubicom-public instructions are supported -- with some limitations. The main limitations are: (1) the RB
interrupts are not supported, and (2) the special I/O register options for
voltage settings, etc. are not supported.
Support is provided for two-instruction skip behavior in SB, SNB and
other skip instructions when the first skipped-instruction is a PAGE
instruction.
5.
Are all the assembler DEVICE OTPIONS supported?
No. The output from assembler is
processed and the non-comment DEVICE lines are parsed. The "CARRYX" and device-type
setting are processed. This version of
the emulator uses BANK8, SX28, OPTIONX/STACKX and TURBO as fixed settings.
6. See the comments at the start of the pdl_rdr.cpp routine for a list of the limits in this assembler listing reader routine. In general, straightforward assembler programs are correctly processed and read. Programs with macros and/or with conditional assembly constructs may need to be modified. SXB programs are supported.
7.
Has this emulator been seriously tested?
Yes. It runs Sx_arith.src correctly and
the majority of the diagnostic routines used to test it are in the
"diags" directory. It has run
correctly run all the of the SXB programs tried. Having said this, it undoubtedly still has bugs.
8. What features have been purposely omitted from this version of the emulator?
8.1. Watchdog and brownout features.
8.2. Interrupt handling on RB (the RTCC interrupt and RTCC pin are supported).
8.3. The SLEEP instruction functions more like a PAUSE instruction.
9.
How can I see a dump of the SX program loaded by the esx28v3
program?
>esx28v3 -d name_of_program_file.lst
10. Will this emulator be expanded to cover the SX-48? Not at this time.
11. Has the emulator been measured for performance? On a 2.2 GHz PC, it appears to run at a speed near 4 MIPS. The more I/O callback functions that are used, the slower it will run.
12. Has the emulator been optimized for performance? Some optimizations have been added in V3.
13. Will the author accept suggestions for this emulator? Yes, of course.
14. What do I do if I find a bug? Contact the author, especially if you have a fix for the bug.
15. Will "bug fix" releases be produced? The author expects to produce maintenance releases from time to time.
16. How do I contact the author? Send an email to: esx@att.net with ESX-28 in the title line.
17.
What is new in version 3 of the ESX28?
a. Serial I/O support; see
serial_ttt.sxb for sample code..
b. Improved performance.
c. Minor bug fixes.
18.
Does the version 3 of ESX 28 really support serial IO? Yes it does! The SXB SERIN/SEROUT work at 19,200 baud with the SXB program set
to run at "FREQ 4_000_000" using I/O pins 2 and 3. In other words, these SXB commands are used:
"serout ra.3,T19200,variable" and "serin
ra.2,T19200,variable". See the
serial_ttt.sxb sample program. To
execute the program use: "esx28v3 -sx serial_ttt.lst".
19.
So what is this about the NetBurner MOD5213 support? The preview_NB directory contains a
work-in-progress driver program embed.cpp, a project file for Dev-C++ 1.14
called ESX28.dev and a NetBurner executable ESX28_APP.s19 (which is zipped into
esx28_app.zip). This was built with the
source modules in the common source directory and embed.cpp.