Hope you enjoy my version of the 8bitworkshop IDE!
The main changes I have made are to attempt to add more target platforms, and to add more features. Most notable currently are the addition of the Commodore Vic20, the BBC Micro, and C64 BASIC.
- x86 DOSBox Platform - Full x86 DOS development environment with Turbo C compiler
- Auto-compile toggle - Toggle automatic compilation on/off for smoother editing experience
- Manual build control - Build and run programs on-demand when auto-compile is disabled
- Visual status indicator - Clear "Auto-Compile: ON/OFF" caption with color coding
- Keyboard shortcuts - Quick access via
Ctrl+Alt+C(toggle) andCtrl+Alt+M(manual build)
Some elements are removed such as the Github integration, and the open source C64 ROMs were replaced with the original ones.
The x86 DOSBox platform provides a complete DOS development environment within the 8bitworkshop IDE:
- Turbo C Compiler - Full Turbo C 2.01 development environment
- QBASIC Interpreter - Complete QBASIC development environment with graphics support
- Turbo Pascal Compiler - Full Turbo Pascal development environment with BGI graphics
- NASM Assembler - Netwide Assembler for x86 assembly programming with VGA graphics
- DOSBox Emulation - Complete DOS 6.22 environment with file system
- Graphics Support - BGI (Borland Graphics Interface) for C and Pascal, QBASIC graphics for BASIC, VGA graphics for assembly
- Auto-compilation - Automatic compilation on file changes (toggleable)
- Real-time Execution - Run compiled programs directly in the emulated DOS environment
- Debug Support - Global access to js-dos objects for debugging
- Select "x86 (DOSBox)" platform from the platform dropdown
- Choose your language:
- C: Write C code using standard C libraries and BGI graphics functions
- QBASIC: Write BASIC code with QBASIC syntax and graphics commands
- Pascal: Write Pascal code using Turbo Pascal with BGI graphics support
- Assembly: Write x86 assembly code using NASM with VGA graphics programming
- Use the auto-compile toggle to control compilation behavior
- Run programs directly in the DOSBox environment
- Access debugging objects via browser console:
window.ci,window.dosInstance,window.fs,window.main
- C Programs:
- Hello World (
hellodos.c) - Basic console output - Graphics Demo (
graphics.c) - BGI graphics programming examples
- Hello World (
- QBASIC Programs:
- Hello World (
hello.bas) - Basic console output - Graphics Demo (
graphics.bas) - QBASIC graphics programming examples
- Hello World (
- Pascal Programs:
- Hello World (
hello.pas) - Basic console output - Graphics Demo (
graphics.pas) - BGI graphics programming examples
- Hello World (
- Assembly Programs:
- Hello World (
hello.asm) - Basic DOS console output - Simple Graphics (
simple.asm) - Basic VGA graphics with rectangles - Pattern Demo (
pattern.asm) - Geometric patterns and lines - Advanced Graphics (
graphics.asm) - Color gradients and overlays
- Hello World (
- Uses js-dos for DOSBox emulation in an iframe
- Turbo C: Full standard library support with BGI graphics
- QBASIC: Complete interpreter with graphics and sound support
- Turbo Pascal: Full compiler with BGI graphics library
- NASM: Netwide Assembler with direct COM file generation and VGA graphics
- Cross-iframe communication for compilation and execution
- Reliable stop/reset functionality via iframe reload
- Auto-loading of programs on first load (even with autocompile disabled)
This fork supports loading large BBC BASIC programs via jsbeeb's loadBasic using small PHP helpers.
Workflow:
- IDE posts BASIC text to
savefile.phpwith fields:content,session,file. - IDE then opens
bbc-iframe.html?loadBasic=<URL>&autorun[&model=...]. bbc-iframe.htmlforwardsloadBasicandautorunto the inner jsbeeb iframe.- jsbeeb fetches the BASIC text from
userfile.php?session=...&file=...and auto-runs it.
Operational notes:
- For long listings use
autorun(notautotype). - For manual commands without discs,
autotype=...works; we skip default disc autoboot when onlyautotypeis present. - Deploy script
deploy.shonly rsyncs; permissions are managed once on the server. - Ensure php-fpm can traverse parents of the webroot and write to the configured userfiles directory (e.g.
/tmp/userfiles).
This configuration is confirmed working and should be the reference for future changes.
- The IDE extracts tokenized BASIC directly from the running emulator memory.
- PAGE is read from
&18/&19, page-aligned (addr & 0xFF00). If needed, byte order is swapped; final fallback is0x1900. - VARTOP is read from
&12/&13. - The memory slice
[PAGE..VARTOP)is written asPROGRAMwith load/exec = PAGE using theAcornDFSdiscclass. - A
!BOOTfile is included so the diskCHAIN"PROGRAM"automatically. - If tokenized memory is not available, SSD export is blocked to avoid invalid images.
Retro Game Coders is a community of developers who create games for vintage computers and consoles.
WARNING: This version of the repo contains small amounts of AI SLOP because my coding abilities were not good enough to get Vic 20 working unaided.
Original README follows
- Latest release: https://8bitworkshop.com/
- Latest Github build: https://sehugg.github.io/8bitworkshop/
To clone just the main branch:
git clone -b master --single-branch [email protected]:sehugg/8bitworkshop.gitTo build the 8bitworkshop IDE:
git submodule init
git submodule update
npm i
npm run buildTo use GitHub integration locally, download the Firebase config file, e.g. https://8bitworkshop.com/v[version]/config.js
Start a web server on http://localhost:8000/ while TypeScript compiles in the background:
make tswebnpm testNote: Github tests may fail due to lack of API key.
Copyright © 2016-2024 Steven E. Hugg.
This project, unless specifically noted, is multi-licensed. You may choose to adhere to the terms of either the GPL-3.0 License for the entire project or respect the individual licenses of its dependencies and included code samples, as applicable.
This project includes various dependencies, modules, and components that retain their original licenses. For detailed licensing information for each dependency, please refer to the respective files and documentation.
All included code samples located in the presets/ directory are licensed under CC0 unless a different license is explicitly stated within the specific code sample.
- https://javatari.org/
- https://jsnes.org/
- https://www.mamedev.org/
- https://github.com/floooh/chips
- https://github.com/DrGoldfire/Z80.js
- http://www.twitchasylum.com/jsvecx/
- https://github.com/curiousdannii/ifvms.js/
- https://6502ts.github.io/typedoc/stellerator-embedded/
- https://github.com/yhzmr442/jspce
- https://js-dos.com/ (DOSBox emulation for x86 platform)
- https://cc65.github.io/
- http://sdcc.sourceforge.net/
- http://perso.b2b2c.ca/~sarrazip/dev/cmoc.html
- https://github.com/batari-Basic/batari-Basic
- https://www.veripool.org/wiki/verilator
- http://mcpp.sourceforge.net/
- http://www.ifarchive.org/indexes/if-archiveXinfocomXcompilersXinform6.html
- https://github.com/dmsc/fastbasic
- https://github.com/wiz-lang/wiz
- https://github.com/sylefeb/Silice
- https://github.com/steux/cc7800
- https://bellard.org/tcc/
- Turbo C 2.01 (for x86 DOSBox platform)
- https://dasm-assembler.github.io/
- http://atjs.mbnet.fi/mc6809/Assembler/xasm-990104.tar.gz
- http://48k.ca/zmac.html
- https://github.com/apple2accumulator/merlin32
- https://github.com/camsaul/nesasm
- NASM (Netwide Assembler) - for x86 DOSBox platform
- https://shiru.untergrund.net/code.shtml
- http://www.colecovision.eu/ColecoVision/development/libcv.shtml
- https://github.com/toyoshim/tss
- https://github.com/lronaldo/cpctelera
- http://www.virtualdub.org/altirra.html
- https://github.com/MEGA65/open-roms
- https://sourceforge.net/projects/cbios/
- https://www.pledgebank.com/opense
- https://github.com/sehugg/8bitworkshop-compilers
- https://github.com/sehugg/8bit-tools
- https://github.com/sehugg/awesome-8bitgamedev
- https://github.com/sehugg?tab=repositories
This is an experimental feature that relies on a Docker container to provide compiler tools like llvm-mos. Right now, you have to run locally and build your own docker container.
docker build -t 8bitws-server-debian scripts/docker
docker run -p 3009:3009 8bitws-server-debian
echo '{"REMOTE_URL":"http://localhost:3009/build"}' > remote.jsonThen add "&tool=llvm-mos" to your URL, like this. You can also rename your C files to have the suffix "-llvm.c". Right now only the platforms c64, atari8, nes (NROM), and pce are supported. Not very many of the current examples work with the new toolchain.