Copyright (c) 2010, Mario Viara
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of Mario Viara shall not be
used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from Mario Viara.
JMCE Version 1.02
JMCE a Java Multiple Computer
Emulator.
JMCE is a simulator
for 8 bit microprocessor (Intel 8080, Zilog Z80, Intel 8051,etc)
and many computer based over them as ZX Spectrum, Altair 8800 ,
Z80Pack, etc. running their original ROM and operating system. All JMCE
computer can be configure programmatically or using xml, for example
it is possible connect the console of IMSAI 8080 to one TCP server or
to one phisical serial interface without writing one line of code or
it is possible change the memory for the Z80Pack computer from plain
to banked memory again only editing a single xml files. A more
complete documentation of parameters is available in the javadocs of
the package.
Main characteristics
- Tested under Windows, Linux and MAC OS X.
- Written in Java run every where !.
- Integrated command line monitor (option -m).
- Integrated GUI debugger (option -d).
- Logging using standard java.util.logging package.
- Many CPU as Intel 8080, Zilog Z80, Intel 8052, Mos 6502
etc.
- Accurate real time emulation. The clock jitter is less than
1%
- Plain and banked memory.
- Many terminal emulation including VT100. Unlike others emulators
the terminal emulation is embedded in the software and do not depend
from the target operating system
- Disk from file image and from native directories (Only CP/M 2.2).
- Console on tty (using native class on Windows and Linux).
- Serial port connected to TCP socket.
- Serial port connected to physical serial line.
- Serial port to file.
- Serial port to terminal.
- Automatic detection of idle time.
- Cassette emulation at host cpu speed.
Index
Overview
A more detailed documentation can be found on the javadoc od the
project available /here>.
where all the computer are described in details.
Supported microprocessor
The microprocessor supported are listed only by family and not in
detail, for example only the Intel 8051 is listed and not the
successor Intel 8052 or the LPC900 family from NXP.
Microprocessor |
Status |
Intel 8080 |
Complete and fully tested. |
Zilog Z80 |
Complete and fully tested. |
Intel 8051 |
Complete and fully tested. |
MOS 6502 |
Completed. |
Intel 8086 |
Not completed. |
Freescale HCS05/08 |
Not completed |
Supported computer
Based on supported microprocessor the following computer and embedded machine
are available :
Name |
Main class |
Notes |
Z80/8080 family |
Z80Pack |
jmce.z80pack.Z80Pack |
Complete and fully tested. |
Altair 8800 |
jmce.altair.Altair |
8080 Version complete and fully tested. Z80 version is not
completed. |
Imsai 8080 |
jmce.imsai.Imsai |
Work but not completed |
Yaze Z80 |
jmce.yaze.Yaze |
Work but require a Z80 bios. |
Spectrum 48K |
jmce.sinclair.spectrum.Spectrum48K |
Complete and fully tested. |
Spectrum 128K |
jmce.sinclair.spectrum.Spectrum128K |
Work but not completed. |
Philips P2000T |
jmce.philips.p2000.P2000T |
The cassette emulation is missing because do to lack of
information. |
Intel 8051 family |
Diseqc positioner
using philips LPC764 |
jmce.viara.diseqc.Diseqc |
Complete and fully tested. |
V8052 Virtual 8052 with default configuration at reset load a
sample Free Real Time OS
apllication. |
jmce.viara.v8052.V8052 |
Complete and fully tested. |
NXP/Philips LPC936 |
jmce.philips.lpc900.LPC936 |
Complete and fully tested. |
8052 Running CMON51 |
jmce.cmon51.CMON51 |
Complete and fully tested. |
MOS 65xx family |
Commodore VIC20 |
jmce.commodore.vic20.VIC20 |
Complete and fully tested. |
For complete description of the features and emulated peripherals
please check the relative Java docs. This is only the base class and
do not include the variant available via xml confguration. For example
every single serial port can be redirect to one TCP connections, to one
physical serial line or to one file.
Goto to the top of the page.
Installation
The current version of JMCE is compiled using java 1.6 so the Java 1.6
JRE must be correctly installed before install the binary
package.
Extract the package named jmce-xxx.tar.gz,where xxx is
the version number in one new directory the
structure of the directory it will look like this :
Name |
Description |
bin/ |
Directory with native shared library. |
jars/ |
Directory jars files. |
xml/ |
Directory with preconfigured JMCE machine. |
/ |
Directory with preconfigured JMCE machine. |
hex/ |
Directory with various Intel hex program for the 8051 processor
family. |
disks |
Varius CP/M application. Work with many emulator. |
yaze/ |
Directiory with disk and loader for Yaze emulator. |
z80pack/ |
Directory with disk and loader for Z80pack. To keep the
distribution little only CP/M 3.0 disk images are included but more
distribution can be downloaded from here. |
altair |
Directory with disk and software for Altair 8080. In the
distribution only the original CP/M 2.2 is available |
imsai |
Directory with program for imsai 8080 |
sinclair |
Directory with rom and software for Sinclair computer. For the
spectrum 48K/128K. |
p2000 |
Directory with ROM for philips P2000. |
jmce |
Linux JMCE startup script. |
jmce.bat |
Windows JMCE startup script. |
readme.txt |
Short text file with instruction. |
readme.html |
Better description and install istruction. |
Try the command : jmce. Of course in Linux where is written
jmce you must write ./jmce.sh
A simple usage screen will be display if JMCE and the JRE are
correctly installed.
JMCE have few options and as argument the name of the class for the
desired computer or the xml files with the configuration.
The argument can be omitted if JMCE is started with the
integrated debugger / monitor (option -m) program.
The option -m Start JMCE with the integrated monitor. As default the
monitor run in one Swing window but can also be started as TCP server
listening for a connection in a specific port (options -p port and -t
1).
The option -d Start JMCE with the integrated GUI debugger.
Samples
- jmce jmce.z80pack.Z80Pack
Start jmce with Z80Pack at default
(Will boot CP/M 2.2)
- jmce -m jmce.z80pack.Z80Pack
Open a monitor window and start
the Z80Pack at default configuration. Require java swing. The
simulator do not start automatically you must type the command
go in the Monitor windows.
< li>jmce jmce.sinclair.spectrum.Spectrum48K Start the emulator for
Sinclair Spectrum 48K. Require usage of java swing.
- jmce -t 1 -p 2023 -m jmce.z80pack.Z80PackOpen the monitor
using a TCP server connection on the port 2023. Open a new session
without closing the current one and using the command telnet
127.0.0.1 2023you can give command and start the simulator.
- jmce -d jmce.commodore.vic20.VIC20
Start the emulator
for the commodore VIC20 with the integrated GUI debugger.
To stop the emulator without monitor (option -m) press
CTRL-^ this key can be changed setting the property
abortKey of the class jmce.sim.terminal.SampleTerminal.
Goto to the top of the page.
Customize JMCE
The xml files used by JMCE are created using the monitor and the
standard Java encode/decoder java.beans.XMLEncoder. All class
defined in the package have public method to set/get the properties
and the properties will be evaluated only during the initialization so
it is possible changed/add properties and reload the class. In the
preconfigured example in the configuration file only the properties
changed from the default value are included to have xml file shorter
and more human readable.
A set of preconfigured xml files are distribuited with the binary
version of JMCE they are in the xml/ directory under the root
of installed JMCE executable.
Preconfigured xml files
File |
Description |
cmon51_swing.xml |
Start the 8052 CMON computer with serial port connected to one
swing terminal. |
cmon51_tcp.xml |
Start the 8052 CMON computer with the serial port connected a
one TCP server port 2023. To see the console it is enough connecting
one terminal as Putty or telnet to this port.
|
cmon51_tty.xml |
Start the 8052 CMO51 computer with the serial port connected to
one terminal in the current console. |
Customizing xml files
It is possible customize one preconfigured files or generate a new one
from predefined class.
Generating new xml files
To generate a new one xml files start the Jmce with the monitor
(options -m) and the name of the main class for example to generate
the xml files relative to the default configuration of z80pack write
the following command : jmce -m jmce.z80pack.Z80Pack when the
console will open write the command : xml save test.xml
this command generate a file called test.xml with the current loaded
configuration . Now write the command quit and the
control will return to the command prompt.
Modify property
To change one property is is necessary edit the xml files for
for example to change the operating system we can search the line like this :
z80pack/disks/library/cpm2-1.dsk
and change the property string from
z80pack/disks/library/cpm2-1.dsk to
z80pack/disks/library/cpm3-1.dsk now if we try to start the
modified xml files with : jmce test.xml the z80pack will
start with the CP/M 3.0.
Compiling JMCE from source
To compile JMCE a JDK 1.6 or better is required. Extract the source package in
one new directory and start ant (require cpptasks.jar and
ant-contrib.jar). The required ant extension are in the directory
contrib of the source package.