GithubHelp home page GithubHelp logo

ianopolous / jpc Goto Github PK

View Code? Open in Web Editor NEW
384.0 40.0 67.0 28.3 MB

JPC - The fast x86 PC emulator in 100% pure Java

Home Page: http://jpc.sourceforge.net

License: GNU General Public License v2.0

Shell 0.01% Java 99.96% Makefile 0.03%

jpc's Introduction

JPC

The fast x86 PC emulator in 100% pure Java

JPC is a fast modern x86 PC emulator capable of booting Windows up to Windows 95 (and windows 98 in safe mode) and some graphical linuxes. It has a full featured graphical debugger with time travel mode along with standard features like break and watch points.

Running

To get started with JPC just run it with:
java -jar JPCApplication.jar -boot hda -hda yourdiskimage.img

or get a list of options by running:
java -jar JPCApplication.jar -help

Building

To build JPC run:
make application

To build the debugger run:
make debugger

To run some dos games easily, put them in a directory on your real computer and use JPC's ability to view a directory tree as a virtual FAT32 drive. For example, if some games are in "dosgames" in the directory where you expanded all the JPC files then type:
java -jar JPCApplication.jar -boot fda -fda resources/images/floppy.img -hda dir:dosgames
This won't save any writes you make to the virtual FAT32 drive. If you would like to sync write to the underlying files, run with -hda dir:sync:dosgames

Debugger

The JPC debugger allows you to run x86 code step by step, use breakpoints, memory watchpoints, directly view the memory, cpu state etc in a nice colourful GUI. Once you've set your disks in the debugger (you can pass command line options identical to the Application or just use the menus), click "create new pc" in the File menu. Then to start execution click "start" in the run menu. Debugger

Credits

History

The JPC project was originally started in the Particle Physics department of Oxford university by Dr Rhys Newman and Dr Jeff Tseng. The original team included Chris Dennis, Ian Preston, Mike Moleschi and Guillaume Kirsch. The current team includes Ian Preston and Kevin O'Dwyer.

jpc's People

Contributors

ianopolous avatar kevodwyer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jpc's Issues

Exception in thread main error in Ubuntu 20.04 Focal Fossa.

I'm trying to make a program that uses your emulator to emulate Windows 95.

But on Ubuntu 20.04 Focal Fossa, I get this error message:

Exception in thread "main" java.lang.IllegalStateException at org.jpc.j2se.JPCApplication.getResources(JPCApplication.java:593) at org.jpc.j2se.JPCApplication.<init>(JPCApplication.java:205) at org.jpc.j2se.JPCApplication.main(JPCApplication.java:766)

How do I fix this?

SeaBIOS won't execute (unimplemented opcode that should exist)

The opcodes sgdt and pause are unimplemented, so JPC fails when starting SeaBIOS Git or 1.10.2 with an UnimplementedOpcodeException. However, I do see code for sgdt at least.

I was able to workaround pause by changing it in code to nop, but what is wrong with sgdt?

Large difference with code from http://jpc.sourceforge.net, even though that page links here

The code available for JPC on SourceForge seems more in line with the "Beautiful Architecture" article describing the project. Especially interesting there is the optimising compiler, which does not seem to be implemented in the project on GitHub.

Is there a reason for this huge difference in the two code bases? Does the project here on GitHub perform as well as the SourceForge project even though it only seems to do interpretation?

Sorry for making an issue here, I couldn't find a better place to ask this question. I am interested in emulating a different type of processor, and I'm wondering whether I should base myself on the GitHub or SourceForge source code.

[3.0] Menu issues (problem with changing disks, there's no disk eject)

Steps to reproduce:

  1. Start JPC
  2. Wait for FreeDOS to boot
  3. Change floppy disk to another image
  4. Reset

What should happened:
New image should boot.

What happens:
Menu shows new disk image inserted, but instead FreeDOS is booted again.

Feature request: possibility of ejecting disks (floppy/hd/cdrom) from menu.

Just dies with exception on Win10

G:\games\JPC\JPC-3.0>java -jar JPCApplication.jar -boot fda -fda resources/images/floppy.img
ьрЁ. 05, 2023 3:24:03 PM org.jpc.j2se.JPCApplication main
INFO: Using configuration specified on command line
Exception in thread "main" java.lang.IllegalStateException
at org.jpc.j2se.JPCApplication.getResources(JPCApplication.java:593)
at org.jpc.j2se.JPCApplication.(JPCApplication.java:205)
at org.jpc.j2se.JPCApplication.main(JPCApplication.java:766)

G:\games\JPC\JPC-3.0>java -version
java version "17.0.5" 2022-10-18 LTS
Java(TM) SE Runtime Environment (build 17.0.5+9-LTS-191)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.5+9-LTS-191, mixed mode, sharing)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.