PCE for the RetroWeb Vintage Computer Museum
- Apple Macintosh Plus
- IBM PC Model 5150 and 5160
- Atari 1040ST
- Regnecentralen RC759 Piccoline
How does this code differ from Hampa Hug's PCE distribution?
- The main loop is modified so that it can be run by Emscripten.
*_set_msgto allow for on-the-fly disk insertion.
- Modified src/chipset/e8530.c to support LocalTalk emulation (based on Mike Forte's SDLC implementation)
How does this code differ from James Friend's PCE.js?
- James' build scripts and UI have been removed and replaced with the code at retroweb-vintage-computer-museum.
- Build instructions have been revised for the Emscripten available as of August 7, 2016 (emcc version 1.36.0)
- Upstream changes from Hampa's repository have been pulled as of August 7, 2016
Make sure you have a working version of Emscripten. Do this by following the Emscripten tutorial.
Make sure your Emscripten toolchain is up to date by executing the following commands:
./emsdk update ./emsdk install latest ./emsdk activate latest source ./emsdk_env.sh
Use the following commands to clone the emulator code and build the emulators:
git clone https://github.com/marciot/retroweb-pcejs-jsdf.git cd retroweb-pcejs-jsdf emconfigure ./configure \ --disable-cpm80 \ --disable-sims32 \ --disable-simarm \ --disable-sim405 \ --disable-sim6502 \ --disable-tun \ --disable-char-ppp \ --disable-char-pty \ --disable-char-slip \ --disable-char-tcp \ --disable-char-termios \ --disable-sound-oss \ --disable-readline \ --enable-char-posix OPTIMIZATION_FLAGS="-O3" export CFLAGS="$OPTIMIZATION_FLAGS" emmake make clean emmake make mv src/arch/macplus/pce-macplus src/arch/pce-macplus.bc mv src/arch/rc759/pce-rc759 src/arch/pce-rc759.bc mv src/arch/ibmpc/pce-ibmpc src/arch/pce-ibmpc.bc mv src/arch/atarist/pce-atarist src/arch/pce-atarist.bc EMCC_OPTS="$OPTIMIZATION_FLAGS" emcc src/arch/pce-macplus.bc $EMCC_OPTS -o pce-macplus.js -s EXPORTED_FUNCTIONS='["_main","_mac_get_sim","_mac_set_msg","_e8530_sdlc_frame_available"]' emcc src/arch/pce-rc759.bc $EMCC_OPTS -o pce-rc759.js -s EXPORTED_FUNCTIONS='["_main","_rc_get_sim","_rc759_set_msg"]' emcc src/arch/pce-ibmpc.bc $EMCC_OPTS -o pce-ibmpc.js -s EXPORTED_FUNCTIONS='["_main","_pc_get_sim","_pc_set_msg"]' emcc src/arch/pce-atarist.bc $EMCC_OPTS -o pce-atarist.js -s EXPORTED_FUNCTIONS='["_main","_st_get_sim","_st_set_msg"]' sed pce-macplus.js -i -e 's/function _SDL_CreateRGBSurfaceFrom/function _SDL_CreateRGBSurfaceFrom_disabled/' sed pce-rc759.js -i -e 's/function _SDL_CreateRGBSurfaceFrom/function _SDL_CreateRGBSurfaceFrom_disabled/' sed pce-ibmpc.js -i -e 's/function _SDL_CreateRGBSurfaceFrom/function _SDL_CreateRGBSurfaceFrom_disabled/' sed pce-atarist.js -i -e 's/function _SDL_CreateRGBSurfaceFrom/function _SDL_CreateRGBSurfaceFrom_disabled/'
The "pce-xxx.js" files can be used as drop in replacements for those in the "emulators/pce-xxx" directories of the retroweb-vintage-computer-museum distribution.
How do I pull changes from the upstream repository?
Although James Friend no longer updates his PCE.js port, Hampa Hug continues to do work on the emulator code. I have only tested the code included in this GitHub repository, but if you would like to merge upstream changes yourself, you may do so by issuing the following commands:
~/retroweb-pcejs-jsdf$ git remote add upstream git://git.hampa.ch/pce.git ~/retroweb-pcejs-jsdf$ git remote -v ~/retroweb-pcejs-jsdf$ git fetch upstream ~/retroweb-pcejs-jsdf$ git merge upstream/master
Why is SDL_CreateRGBSurfaceFrom being disabled?
SDL_CreateRGBSurfaceFrom that ships with Emscripten only supports a depth of 32. James Friend patched this routine to support a
depth of 8 bits, required by PCE, but his repository did so through a modified version of the Emscripten toolchain which wasn't
kept up to date.