VOGONS


First post, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

Hi,

my pet project DOjS went V1.0 today.
It is a Javascript runtime for MS-DOS with integrated editor, 2D/3D drawing, sound, midi, joystick, etc support.
It supports 3dfx Voodoo cards for 3D rendering.

Please see the project page on GitHub for binaries, source code and more details.
Some features:

  • 8/16/24 and 32 bit 2D graphics. On >=24bit display modes alpha channel transparency is available.
  • Keyboard input
  • Mouse input
  • Joystick/Joyport input
  • File IO
  • MIDI output
  • WAV output
  • Audio input/sampling
  • Allegro 3D rendering (software)
  • 3dfx/Glide3 3D rendering output (hardware)
  • p5js compatibility
  • direct io-port access

Cheers
Ilu

http://twitter.com/dec_hl - Four 8086 have 64bit as well!

Reply 1 of 12, by xjas

User metadata
Rank l33t
Rank
l33t

Woah, that's really cool. I might keep this in mind for my next game jam.
Is it possible to compile standalone binaries from Javascript programs with this? I know that's not really what JS is "for", but it'd be neat to be able to do. 😀

Nice work though!

twitch.tv/oldskooljay - playing the obscure, forgotten & weird - most Tuesdays & Thursdays @ 6:30 PM PDT. Bonus streams elsewhen!

Reply 2 of 12, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

Hi xjas,

no, sorry, the scripts are not compiled but interpreted.
But you can create a BAT file which invokes DOjS with the right parameters to run a given script without showing the editor.

cheers Ilu

http://twitter.com/dec_hl - Four 8086 have 64bit as well!

Reply 3 of 12, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

I release V1.1.0 yesterday.

  • Improved MIDI support
  • Added COM port access
  • Added LPT port access

Grab the binaries while they are still hot...
https://github.com/SuperIlu/DOjS

http://twitter.com/dec_hl - Four 8086 have 64bit as well!

Reply 4 of 12, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Thank you! 🙂👍

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 5 of 12, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

New release of DOjS on https://github.com/SuperIlu/DOjS/releases

Version 1.2.0 (Watt is that?)

  • Added TCP/IP support through WATT32.
  • Fixed bug where text mode was not restored after exiting DOjS
  • Added File.GetSize(), File.WriteBytes() and File.ReadBytes()
  • Added fixnewlines target to Makefile.
  • Updated syntax highlighting file.
  • Switched JSDoc documentation to better-docs
  • Improved editor
    • Quoted strings are now GREEN
    • The cursor positioning at the end of line is more usable.
    • 50-line mode can now be selected on the command line
    • Fixed CTRL-L/Go to line
  • Fixed bugs in p5js compatibility layer
    • endShape() polygon drawing
    • lerpColor()
  • Cleaned up startup messages in logfile.
  • Re-added PNG loading/writing

http://twitter.com/dec_hl - Four 8086 have 64bit as well!

Reply 6 of 12, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

New V1.4.0 release of DOjS

TL;DR

  • ZIP file access
  • Loadable module support
  • Raw read/write of HDD/FDD sectors
  • cURL/TLS support

https://github.com/SuperIlu/DOjS/releases/tag/v1.40

Version 1.4.0 (The curly conglomerate)

  • Replaced loadpng+libpng by alpng to reduce EXE size.
  • Added fast integer array class IntArray
  • Added ReadInts() and WriteInts() to File, Zip and Socket to speed up data IO.
  • Improved type checking for parameters.
  • Added cURL and OpenSSL support.
  • FIXED: memory leak in editor
  • FIXED: editor crashed when deleting selected text
  • Added loadable module support during runtime
  • IPX, PNG, Allegro3D, COMPort and cURL are loadable modules now

Version 1.3.0 (The ZIPpy serving)

  • Added ZIP file access through Zip() class
  • Added StringToBytes() and BytesToString()
  • Added file name to stack trace for files loaded by Include() and Require()
  • Added loading of images, fonts, samples, midi files and scripts from ZIP files
  • JSBOOT/ can now be replaced by JSBOOT.ZIP
  • Added autostart feature for ZIP files
  • Added more fonts from Linux Font Project
  • Fixed crash in context help
  • Added ReadZIP(), Rename(), MakeDir(), RmDir() and RmFile()
  • Internal cleanup and removed some duplicate code
  • Fixed bug in DrawArray() and new Bitmap()
  • Fixed memory allocation bug where CWSDPMI and MuJS started to use virtual memory because of missing GCs.
  • Added raw disk access through RawRead() and RawWrite() (and other functions)
  • Fixed problems with the Makefile and filenames which only happened for fresh checkouts on case sensitive file systems.
  • Updated build instructions
  • Fixed ReadBytes() in socket.c
  • Renamed fxGetMemoryTMU() to fxGetMemoryTmu()

http://twitter.com/dec_hl - Four 8086 have 64bit as well!

Reply 7 of 12, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

New Version 1.5.0 available at https://github.com/SuperIlu/DOjS/releases

Version 1.5.0 (The neuronal necessity)

  • Added SQLite module
  • Added module for training/running neuronal networks
  • Added libcpuid module
  • Added NanoSVG module
  • Added global variables Width/Height
  • Added single parameter version of Color()
  • Added Console and EvalChain classes.
  • Added perlin noise module
  • You can now create single color Bitmaps with new Bitmap(width, height, color)
  • FIXED: small fixes for raw disk access.
  • FIXED: p5js arc() function is now somewhat useable (was completely broken before).
  • FIXED: Updated openssl to 1.1.1k

http://twitter.com/dec_hl - Four 8086 have 64bit as well!

Reply 8 of 12, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

New DOjS release V1.6.0 on https://github.com/SuperIlu/DOjS/releases

  • Added JPEG loading through jpeg module
  • Made JSLOG.txt optional and the filename can be changed as well
  • Updated libcpuid to v0.5.1
  • Removed many compiler warnings and streamlined the make output during build
  • Added basic GIF animations loading/rendering through gifanim module
  • Added ReadSoundInputInts() which returns the sampled data as IntArray (ReadSoundInput() uses Javascript arrays which are slower)
  • Improved CTRL-DEL, CTRL-BS handling with whitespaces
  • Added error popup to editor for displaying script errors
  • parallelized the build as far as possible
  • added Makefile target to create a FreeDOS distribution ZIP
  • Added different blend modes which are selected through TransparencyEnabled()
  • Added p5js API mapping from blendMode() to TransparencyEnabled()
  • Added QR-Code generator from https://github.com/kazuhikoarase/qrcode-generator, see examples/qrcode.js
  • Fixed/added some examples
  • Improved error handling for missing GLIDE3 drivers

http://twitter.com/dec_hl - Four 8086 have 64bit as well!

Reply 9 of 12, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

New DOjS release V1.7.0 on https://github.com/SuperIlu/DOjS/releases

  • Added FLIC playback (video)
  • Added MPEG1 playback (audio/video) using plugin `mpeg1`.
  • Added Ogg Vorbis playback plugin `vorbis`.
  • Added `rawplay` plugin for raw 16 bit stereo audio data loaded from file system or ZIP.
  • Added CTRL-F for 'search' (same as F7)
  • Added live coding examples. Install the extension in the `vscode/` directory and run `DOjS -r examples\websvr.js`
  • Fixed missing newline in error message.

http://twitter.com/dec_hl - Four 8086 have 64bit as well!

Reply 10 of 12, by HandOfFate

User metadata
Rank Member
Rank
Member

What an impressive and ambitious project. JavaScript really is everywhere nowadays, huh 😀

Are you running into limitations (for example with garbage collection) because of the lack of threads under DOS?

Am486 DX4 120MHz, no L2, 16MB, Tseng ET4000/W32 1MB VLB, ESS ES1869 /// 5x86 133MHz, 256kb L2, 64MB, S3 Virge/DX 4MB PCI, SB16 + Yucatan FX, PicoGUS /// Pentium III 1GHz, 512MB, Asus V7700 64MB AGP, SB Live!

Reply 11 of 12, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

The running script and the JS-runtime executing it are strictly single threaded. The worst limitation (for me so far) is the limited execution speed because MuJS (the runtime I use) is an interpreter and no JIT...

http://twitter.com/dec_hl - Four 8086 have 64bit as well!

Reply 12 of 12, by SuperIlu

User metadata
Rank Newbie
Rank
Newbie

New DOjS release V1.8.0 on https://github.com/SuperIlu/DOjS/releases

  • Added LFN_SUPPORTED global to indicate if long filenames are supported by the current DOS installation.
  • Fixed some docs
  • Added QOI Image decoder in jsboot/qoi.js. See https://qoiformat.org/
  • Improved error reporting in case Setup(), Loop() or Input() are missing when running a script.
  • Updated openssl to 1.1.1n
  • Updated cURL to 7.80.0
  • Added -t command line option to disable TCP/IP (faster startup with a loaded packet driver).
  • Improved Console class with basic input handling
  • Updated Zip to 0.2.2
  • Added ZIPFILE.DELETE and Zip.DeleteFile()
  • Improved project structure, DOjS main source is now located in src/, all native libraries in plugins/ and all third party code in 3rdparty/.
  • Optimized buildfiles
  • Improved IPX remote logging with REMLOG.BAT and EnableRemoteDebug()
  • implemented DPM package manager
  • A sketch can now query if it is running on DOjS using if (navigator.appName === "DOjS") {

Also: I updated the "little sister" jSH as well. The version is now 0.91: https://github.com/SuperIlu/jSH/releases

  • updated openssl to 1.1.1n
  • added JSBOOT.ZIP to replace JSBOOT/
  • added jpm package manager
  • Added LFN_SUPPORTED global to indicate if long filenames are supported by the current DOS installation.
  • added cURL plugin

http://twitter.com/dec_hl - Four 8086 have 64bit as well!