I would like this too. I learned C with gcc on Linux, and would love to pick up DOS and early Windows as well. There are a lot of problems that could be solved by some fairly simple development projects I think, and Google is such a millennial when it comes to looking up DOS programming info. "What? 16-bit DOS? Why would you want to use that? Why not check out python instead? It's super cool!"
This sounds interesting, is there a download link somewhere where I can try it out?
I am not ready to make "release version" (full version with sources, because I want implement many things - so, by my opinion, its unfinished), now. It is more near to "proof of concept".
Few words, about what is this.
This is Tiny Basic-style compiler for 16-bit real mode (this is not port - my own implementation). So, this is Basic language from 197x - without string variables, required lines number, just 26 integer variables 16-bit (variable has names A .. Z). Successfull ported very old game "THE KINGDOM OF EUPHORIA". 😊
Also, available multi-threading, thread-local memory (like 4kb per thread) and global memory (visible for all threads) and XMS memory (avaible thru 4kb window). You can use memory via PEEK/POKE (see DOC folder), Basic-byte code work into Virtual Machine (like java) but have fast native-libraries (I call it "dll") which I wrote into C-- (language between C and ASM). To got more speed - I am prepare "dll" for each type of processor and put it into .LIB.
What "target group" 😊 for this compiler? I had hope, its not bad for small game development.
SoundFX - supported for Sound Blaster Pro / 16 into U8, VDM mono formats. See DOC folder - available few words in documentation how to convert WAV to U8/VDM with FFMPEG.
SoundFM - not supported, now. (TDB!)
Mouse - supported.
Most advanced example - check ARKAN game into archive. This game works for all type supported video-cards (use multithreading for video effects!) and play sounds.
All compiled .EXE support "setup mode" - try command line switch /S. It will be usefull for graphics games (also "setup mode" will be executed if remove CONFIG.INI file).
Whats about speed? I am check ARKAN-game. In default DOSBOX speed it is slow. I think, this is 386 cpu speed level. I try play on my real hardware - Pentium 100 and game works enought fast.
PS: big .EXE - because it contains lot of drivers compiled for different cpu (8086, 80286, 80386, Pentium). You can check it, type in command line something like "AR L GRAPH.LIB" (or choose other library), Also, my idea - include everything into one .EXE (drivers, graphics, sprites, sounds), so to distribute game will be enought only .EXE. In future, I'll add LZW-compression for compiled EXE (I am already had my own implementation of LZW, and want add GIF support also).
PPS: Archive contains: compiler, linker, lib-tool (AR.EXE), sprite editor and palette editor. Main graphics format for images - PGM (one of "netpbm" format group). You can edit this type of images with GIMP (not included). Also, PGM is pretty simple format - You can "draw" picture in any text editor (and convert to binary-PGM to reduce size or continue use plaintext-PGM). Also, I am include converter PCX -> PGM.
PPPS: Known bug - Sound Blaster support (PRO and 16) - does not came IRQ into DOSBOX (on hardware - works). So, on big files, play music stops, when make step over 64K memory page (I try to fix it, now).
PPPPS: Some language exceptions: changed syntax for INPUT: LET A=INPUT(), also have no special syntax for "PRINT;" (PRINT is avalilable, but have no ;).
Typical program looks like:
110 LET I=0:REM Initaialzation 220 GOSUB 500:REM Main cycle 330 LET I=I+1 440 IF I<10 THEN goto 20 550 END:rem end of programm 6 7500 PRINTLN "SIN(",I,") = ", SIN(I) 8510 RETURN
I'd like to second the request for a purely software-development oriented [sub-]forum.
The number of posts will be far smaller than in the hardware-oriented sections, and as others already stated, this would make any attempt to discuss software development things futile because those threads will land relatively quickly on some page much behind, factually getting lost.