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

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

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.