<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>DOS ain't dead</title>
<link>https://www.bttr-software.de/forum/</link>
<description>DOS ain't dead</description>
<language>en</language>
<item>
<title>SDL 3 officially adds DOS (DJGPP) support</title>
<content:encoded><![CDATA[<i>Reply from Zyzzle, 13.05.2026, 00:30:</i><br /><br /><i>&gt; <b>SDL 3</b> for DOS (<b>DJGPP</b>) is now officially supported.<br /></i><i>&gt; <br /></i><i>&gt; * <a href="https://github.com/libsdl-org/SDL/pull/15377">https://github.com/libsdl-org/SDL/pull/15377</a><br /></i><i>&gt; <br /></i><i>&gt; <b>What&#039;s supported</b><br /></i><i>&gt; <br /></i><i>&gt; * <b>Video</b>: VGA and VESA 1.2+ framebuffer, RGB, and 8-bit indexed color<br /></i><i>&gt; with VGA DAC palette programming, hardware page-flipping with vsync, VBE<br /></i><i>&gt; state save/restore on exit<br /></i><i>&gt; * <b>Audio</b>: Sound Blaster 16 (16-bit stereo, up to 44.1 kHz), Sound<br /></i><i>&gt; Blaster Pro (8-bit stereo, up to <br /></i><i>&gt; 2kHz), Sound Blaster 2.0/1.x (8-bit mono), all via IRQ-driven DMA with<br /></i><i>&gt; double-buffered auto-init<br /></i><i>&gt; * <b>Input</b>: PS/2 keyboard with extended scancodes (0xE0 prefix), INT<br /></i><i>&gt; 33h mouse with queried sensitivity, gameport joystick via BIOS INT 15h with<br /></i><i>&gt; auto-calibration<br /></i><i>&gt; * <b>Threading</b>: Cooperative scheduler using setjmp/longjmp with stack<br /></i><i>&gt; patching. Real mutexes, semaphores, TLS, and condition variables (generic<br /></i><i>&gt; fallback). Yield points in the event pump and delay functions keep audio<br /></i><i>&gt; and other threads responsive.<br /></i><i>&gt; * <b>Timer</b>: Native PIT-based timer using DJGPP&#039;s uclock() at ~1.19 MHz<br /></i><i>&gt; resolution<br /></i><i>&gt; * <b>Filesystem</b>: GetBasePath / GetPrefPath via DJGPP&#039;s searchpath(),<br /></i><i>&gt; POSIX filesystem ops fallback<br /></i><i>&gt; * <b>Build</b>: CMake cross-compilation toolchain file, DJGPP CI job,<br /></i><i>&gt; preseed cache for faster configure<br /></i><i>&gt; <br /></i><i>&gt; <b>What&#039;s NOT included</b><br /></i><i>&gt; <br /></i><i>&gt; * <b>Audio recording</b> playback only<br /></i><i>&gt; * <b>SDL_TIME native implementation</b> reuses Unix gettimeofday via<br /></i><i>&gt; DJGPP&#039;s POSIX layer (works fine)<br /></i><i>&gt; * <b>Shared library</b> loading support (no SDL_LoadObject).<br /></i>
<br />
Great news. Hopefully, this means a lot of DOS ports of old SDL games will be forthcoming. Perhaps even some new SDL games will be coded entirely for DOS.<br />
<br />
This is a way to make great use of those &quot;powerful&quot; modern systems on baremetal. I knew there would come a day when modern DOS systems would be put to their best use...]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23454</link>
<pubDate>Wed, 13 May 2026 00:30:03 +0200</pubDate>
</item>
<item>
<title>SDL 3 officially adds DOS (DJGPP) support</title>
<content:encoded><![CDATA[<i>Reply from RayeR, 12.05.2026, 17:37:</i><br /><br />Interesting. It happens not very often that a DOS target is added as new to a project. Mostly DOS targets are removed as obsolete...<br />
Do they use some better/fixed/usable pthreads or some proprietary code?]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23453</link>
<pubDate>Tue, 12 May 2026 17:37:32 +0200</pubDate>
</item>
<item>
<title>SDL 3 officially adds DOS (DJGPP) support</title>
<content:encoded><![CDATA[<i>Post by Rugxulo, 12.05.2026, 16:05:</i><br /><br /><b>SDL 3</b> for DOS (<b>DJGPP</b>) is now officially supported.<br />
<br />
* <a href="https://github.com/libsdl-org/SDL/pull/15377">https://github.com/libsdl-org/SDL/pull/15377</a><br />
<br />
<b>What&#039;s supported</b><br />
<br />
* <b>Video</b>: VGA and VESA 1.2+ framebuffer, RGB, and 8-bit indexed color with VGA DAC palette programming, hardware page-flipping with vsync, VBE state save/restore on exit<br />
* <b>Audio</b>: Sound Blaster 16 (16-bit stereo, up to 44.1 kHz), Sound Blaster Pro (8-bit stereo, up to <br />
2kHz), Sound Blaster 2.0/1.x (8-bit mono), all via IRQ-driven DMA with double-buffered auto-init<br />
* <b>Input</b>: PS/2 keyboard with extended scancodes (0xE0 prefix), INT 33h mouse with queried sensitivity, gameport joystick via BIOS INT 15h with auto-calibration<br />
* <b>Threading</b>: Cooperative scheduler using setjmp/longjmp with stack patching. Real mutexes, semaphores, TLS, and condition variables (generic fallback). Yield points in the event pump and delay functions keep audio and other threads responsive.<br />
* <b>Timer</b>: Native PIT-based timer using DJGPP&#039;s uclock() at ~1.19 MHz resolution<br />
* <b>Filesystem</b>: GetBasePath / GetPrefPath via DJGPP&#039;s searchpath(), POSIX filesystem ops fallback<br />
* <b>Build</b>: CMake cross-compilation toolchain file, DJGPP CI job, preseed cache for faster configure<br />
<br />
<b>What&#039;s NOT included</b><br />
<br />
* <b>Audio recording</b> playback only<br />
* <b>SDL_TIME native implementation</b> reuses Unix gettimeofday via DJGPP&#039;s POSIX layer (works fine)<br />
* <b>Shared library</b> loading support (no SDL_LoadObject).]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23452</link>
<pubDate>Tue, 12 May 2026 16:05:41 +0200</pubDate>
</item>
<item>
<title>testing speed of DOS assemblers under djl&#039;s 8086 DOS emulator</title>
<content:encoded><![CDATA[<i>Reply from Khusraw, 12.05.2026, 12:29:</i><br /><br /><i>&gt; Okay, I did grab <b>AP.EXE 24.02</b>  the other day and finally tested it<br /></i><i>&gt; more yesterday.<br /></i>
<br />
Thank you very much!<br />
<br /><i>&gt; It does work on native DOS, but ... djl&#039;s NTVDM doesn&#039;t handle it. He<br /></i><i>&gt; admits he has some gaps in emulation and only tested common instructions<br /></i><i>&gt; emitted by compilers. So under the emulator I can&#039;t even get a help screen.<br /></i><i>&gt; (Anything out of the ordinary could be suspect, and writing in pure<br /></i><i>&gt; assembly definitely brings out atypical uses.)<br /></i>
<br />
I found some spare time to build David Lee&#039;s NTVDM and run the test myself. The problem you noted doesn&#039;t lie with the emulator (which, BTW, seems to be a really good piece of software), but with the assembler (which, besides using a PUSH immediate right at the beginning, also uses NEAR conditional jumps, a 386+ instruction, as you know). Anyway, what I was actually interested in was finding a CC0 or equivalent and simple <b>8086</b> DOS emulator, and so far, I&#039;m satisfied with what I&#039;ve seen from this NTVDM.]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23451</link>
<pubDate>Tue, 12 May 2026 12:29:17 +0200</pubDate>
</item>
<item>
<title>NEWAX beta 7 - crippled nV videoBIOS fn 4F07h fix</title>
<content:encoded><![CDATA[<i>Reply from RayeR, 11.05.2026, 14:32:</i><br /><br />Cool, new CRTCs was discovered so it allowed full length of start address - should work in hogher resolutions now:<br />
<a href="https://www.vogons.org/viewtopic.php?p=1421874#p1421874">https://www.vogons.org/viewtopic.php?p=1421874#p1421874</a><br />
edit beta 7 out (he&#039;s spitting sources like a machinegun :)<br />
<a href="https://www.vogons.org/viewtopic.php?p=1422070#p1422070">https://www.vogons.org/viewtopic.php?p=1422070#p1422070</a>]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23450</link>
<pubDate>Mon, 11 May 2026 14:32:05 +0200</pubDate>
</item>
<item>
<title>failed with hybrid MBR under Windows</title>
<content:encoded><![CDATA[<i>Reply from RayeR, 11.05.2026, 07:47:</i><br /><br />Oh sh... even worse with Win7 and hybrid MBR. I found that Windows is actively corrupting the GPT at LBA 2 (offset 400h) whenever I run command &quot;attributes volume clear hidden&quot; in diskpart - this is necessary to unhide my legacy MBR partitions because Windows hides automatically them at boot when detect hybrid MBR with EEh entry. So definitely not possible both legacy and GPT partition together. I hate this windows behavior to silently write something somewhere in a God/good intention. All that crap started by Win95 unexpectedly writting to floppies...<br />
<br />
So I wiped the GPT and roll back to old good MBR. I just defined 4th partion entry to some dummy to prevent fdisk and similar to create new partition on unused space. Legacy OSes just ignore it.<br />
Under Win7x-64 I use IMDISK to mount the hidden (undefined) NTFS partition, a bit rude with hardcoded offset but I don&#039;t expect to change partitions layout further...<br />
imdisk -a -P -f \\.\PhysicalDrive1 -b 2199022206976 -x 63 -y 255 -o hd -m N:<br />
Under WinXP it&#039;s not possible to enter 64b offset (exptected that)...<br />
<br />
Linux is smart it already has offset option so I can just do <br />
mount -o offset=$((512*4294965248)) /dev/sdb /mnt/n<br />
or place in my /etc/fstab<br />
/dev/sdb      /mnt/n      ntfs,iocharset=iso8859-2 loop,offset=2199022206976]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23449</link>
<pubDate>Mon, 11 May 2026 07:47:07 +0200</pubDate>
</item>
<item>
<title>testing speed of DOS assemblers under djl&#039;s 8086 DOS emulator</title>
<content:encoded><![CDATA[<i>Reply from Rugxulo, 10.05.2026, 05:38:</i><br /><br /><i>&gt; &gt; I am also interested in those benchmarks. But don&#039;t really have a<br /></i><i>&gt; machine<br /></i><i>&gt; &gt; to test it. Beside maybe HP 200 LX, but that&#039;s 80186 class machine.<br /></i><i>&gt; <br /></i><i>&gt; I didn&#039;t write the reason. I am considering getting Atari Portfolio. 80c88<br /></i><i>&gt; with 128KB of which ~32kb is by default used as a ram disk so available<br /></i><i>&gt; memory is a bit more than 64kb realistically. <br /></i>
<br />
Under DOSBox-X, by default it only works with &quot;cputype&quot; of 386 or above (e.g. auto). Trying &quot;8086&quot; doesn&#039;t work. I also tested 8086tinyplus (Win32), but it hangs.<br />
<br />
I went back to find a quick fix by hacking the source code, so I made a quick diff. Now AP.EXE runs at least under &quot;80186&quot; cputype (DOSBox-X) or 8086tinyplus (quasi 186). But DOSBox-X &quot;8086&quot; still doesn&#039;t like it, dunno.<br />
<br />
8086tinyplus runs my .BAT (Sed script(s) plus AP.EXE) in 99 secs. For testing the assembler speed itself, it assembles Sed&#039;s modified assembly output of PSR Invaders in <b>12 secs</b> (using default 4.77 Mhz speed, which is probably not 100% accurate).<br />
<br />
Feel free to apply this patch, reassemble (N.B. use &quot;/jo&quot;), and benchmark yourself. EDIT: You&#039;ll probably need &quot;patch -p1 -l -i ap186.dif&quot; (N.B. &quot;-l&quot; to ignore whitespace/tab differences).<br />
<br />
<code><br />
diff -rU1 asmpp.old/ap.asm asmpp/ap.asm<br />
--- asmpp.old/ap.asm&nbsp; &nbsp; 2024-02-07 02:11:12 +0000<br />
+++ asmpp/ap.asm&nbsp; &nbsp; &nbsp; &nbsp; 2026-05-09 21:12:06 +0000<br />
@@ -2,3 +2,3 @@<br />
&nbsp;.RADIX 10<br />
-;.8086<br />
+.8086<br />
&nbsp;<br />
Binary files asmpp.old/ap.exe and asmpp/ap.exe differ<br />
diff -rU1 asmpp.old/asm16.asm asmpp/asm16.asm<br />
--- asmpp.old/asm16.asm 2024-02-07 02:11:12 +0000<br />
+++ asmpp/asm16.asm&nbsp; &nbsp; &nbsp;2026-05-09 21:25:16 +0000<br />
@@ -38,4 +38,6 @@<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMP&nbsp; &nbsp; &nbsp;AL,3<br />
-&nbsp; &nbsp; &nbsp; &nbsp; JZ&nbsp; &nbsp; &nbsp; AssembleDoneIPOK<br />
+&nbsp; &nbsp; &nbsp; &nbsp; JZ&nbsp; &nbsp; &nbsp; AssembleDoneIPOK2<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JMP&nbsp; &nbsp; &nbsp;ProgIPOverflow<br />
+AssembleDoneIPOK2:<br />
+&nbsp; &nbsp; &nbsp; &nbsp; JMP&nbsp; &nbsp; &nbsp;AssembleDoneIPOK<br />
&nbsp;<br />
@@ -112,10 +114,13 @@<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMP&nbsp; &nbsp; &nbsp;BYTE [AddrMode],4<br />
-&nbsp; &nbsp; &nbsp; &nbsp; JB&nbsp; &nbsp; &nbsp; AssembleProgIPOverflow<br />
+&nbsp; &nbsp; &nbsp; &nbsp; JB&nbsp; &nbsp; &nbsp; AssembleProgIPOverflow2<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ADD&nbsp; &nbsp; &nbsp;WORD [ProgIP][4],1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ADC&nbsp; &nbsp; &nbsp;WORD [ProgIP][6],0<br />
-&nbsp; &nbsp; &nbsp; &nbsp; JC&nbsp; &nbsp; &nbsp; AssembleProgIPOverflow<br />
+&nbsp; &nbsp; &nbsp; &nbsp; JC&nbsp; &nbsp; &nbsp; AssembleProgIPOverflow2<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JMP&nbsp; &nbsp; &nbsp;AssembleDoneIPOK<br />
+AssembleProgIPOverflow2:<br />
+&nbsp; &nbsp; &nbsp; &nbsp; JMP&nbsp; &nbsp; &nbsp;AssembleProgIPOverflow<br />
+<br />
&nbsp;AssUpdateEIP:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMP&nbsp; &nbsp; &nbsp;BYTE [AddrMode],1<br />
-&nbsp; &nbsp; &nbsp; &nbsp; JZ&nbsp; &nbsp; &nbsp; AssembleProgIPOverflow<br />
+&nbsp; &nbsp; &nbsp; &nbsp; JZ&nbsp; &nbsp; &nbsp; AssembleProgIPOverflow2<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ADD&nbsp; &nbsp; &nbsp;WORD [ProgIP][2],1<br />
@@ -123,2 +128,4 @@<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JMP&nbsp; &nbsp; &nbsp;AssembleDoneIPOK<br />
+AssembleExtraChars2:<br />
+&nbsp; &nbsp; &nbsp; &nbsp; JMP&nbsp; &nbsp; &nbsp;AssembleExtraChars<br />
&nbsp;<br />
@@ -127,3 +134,3 @@<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMP&nbsp; &nbsp; &nbsp;AL,EndOfLine<br />
-&nbsp; &nbsp; &nbsp; &nbsp; JNZ&nbsp; &nbsp; &nbsp;AssembleExtraChars<br />
+&nbsp; &nbsp; &nbsp; &nbsp; JNZ&nbsp; &nbsp; &nbsp;AssembleExtraChars2<br />
&nbsp;AssembleFile:<br />
diff -rU1 asmpp.old/direcw16.asm asmpp/direcw16.asm<br />
--- asmpp.old/direcw16.asm&nbsp; &nbsp; &nbsp; 2024-02-07 02:11:12 +0000<br />
+++ asmpp/direcw16.asm&nbsp; 2026-05-09 21:26:40 +0000<br />
@@ -749,4 +749,6 @@<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CALL&nbsp; &nbsp; GetStrFile<br />
+&nbsp; &nbsp; &nbsp; &nbsp; .386<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMP&nbsp; &nbsp; &nbsp;DI,OFFSET StrBuffer<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JZ&nbsp; &nbsp; &nbsp; IncludeInvalidFile<br />
+&nbsp; &nbsp; &nbsp; &nbsp; .8086<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;XOR&nbsp; &nbsp; &nbsp;AL,AL<br />
@@ -804,4 +806,6 @@<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CALL&nbsp; &nbsp; GetStrFile<br />
+&nbsp; &nbsp; &nbsp; &nbsp; .386<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CMP&nbsp; &nbsp; &nbsp;DI,OFFSET StrBuffer<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JZ&nbsp; &nbsp; &nbsp; OptionStubInvalidFile<br />
+&nbsp; &nbsp; &nbsp; &nbsp; .8086<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MOV&nbsp; &nbsp; &nbsp;AL,0<br />
@@ -1115,2 +1119,2 @@<br />
&nbsp;<br />
-DirectivesWEnd:<br />
\ No newline at end of file<br />
+DirectivesWEnd:<br />
diff -rU1 asmpp.old/nstrctns/sseavx/avxkrrm.asm asmpp/nstrctns/sseavx/avxkrrm.asm<br />
--- asmpp.old/nstrctns/sseavx/avxkrrm.asm&nbsp; &nbsp; &nbsp; &nbsp;2024-02-07 02:11:12 +0000<br />
+++ asmpp/nstrctns/sseavx/avxkrrm.asm&nbsp; &nbsp;2026-05-09 21:26:14 +0000<br />
@@ -175,4 +175,6 @@<br />
&nbsp;<br />
+.386<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CMP BYTE [NextChar], Comma<br />
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JZ&nbsp; &nbsp; &nbsp; AVX_GetParams_Comma<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JZ AVX_GetParams_Comma<br />
+.8086<br />
&nbsp;<br />
@@ -196,4 +198,6 @@<br />
&nbsp;<br />
+.386<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CMP AL, OpenCBracket<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JZ&nbsp; &nbsp; &nbsp; AVX_GetParams_CurlyBracket<br />
+.8086<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CMP&nbsp; &nbsp; &nbsp;AL, Keyword<br />
@@ -209,4 +213,6 @@<br />
&nbsp;CALL _PrintChar, WORD (&#039;_&#039;)<br />
+.386<br />
&nbsp; &nbsp; &nbsp;CMP AL,EndOfLine<br />
&nbsp; &nbsp; &nbsp;JZ&nbsp; AVX_GetParams_Done_1<br />
+.8086<br />
&nbsp;CALL _PrintChar, WORD (&#039;=&#039;)<br />
@@ -352,4 +358,6 @@<br />
&nbsp;;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JZ AVX_GetParams_Curly_Len4<br />
+.386<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CMP CX, 1<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JZ AVX_GetParams_Curly_Len1<br />
+.8086<br />
&nbsp;<br />
</code>]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23448</link>
<pubDate>Sun, 10 May 2026 05:38:55 +0200</pubDate>
</item>
<item>
<title>podcast downloading tool?</title>
<content:encoded><![CDATA[<i>Post by Karen, 10.05.2026, 04:11:</i><br /><br />Hi  all,<br />
Honestly, I come back here and the creative house is on fire.<br />
Humbled by the innovators for certain.<br />
My first posts of two is about downloading podcasts.<br />
It is not something I need often.  Last time I did, podbean was the <br />
platform used by the artist in question. Using the Links for Dos port <br />
with javascr*** worked just fine.<br />
However, as I require a new item, a specific episode of the Irish <br />
Londoners Podcast,  i am wondering if there is a tool that say lets me <br />
take the rss feed, &lt;I got that as an xml file&gt; and download a file?<br />
I believe? that one of the last editions of mpxplay purely for DOS <br />
allows for streaming of some kind, but I simply want to hear this <br />
specific podcast.<br />
Any ideas?<br />
<br />
Thanks,<br />
<br />
Kare]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23447</link>
<pubDate>Sun, 10 May 2026 04:11:15 +0200</pubDate>
</item>
<item>
<title>failed with hybrid MBR under Windows</title>
<content:encoded><![CDATA[<i>Reply from RayeR, 09.05.2026, 18:16:</i><br /><br />I know that hybrid MBR is some kind of grey zone, just hoped it would work well as under Linux. To precise previous observation about Win7, I found that they probably checks only one Byte of MBR partition entry - the partition type. If I zero this Byte for remaining 3 partition entries (leaving CHS and LBA values in place) then Win7 recognizes valid GPT. So instead of swapping whole MBR it would be enough to just change these 3 Bytes...<br />
<br />
Another possible approach:<br />
do you know about some program like OSFMount or ImDisk but that can mount a part of physical disk instead image file? AI halucinated me that it could be possible selecting physical disk in file open menu and entering specific LBA of start partition and size but I didn&#039;t see such option - only mounting image files. But technically it is be possible...]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23446</link>
<pubDate>Sat, 09 May 2026 18:16:34 +0200</pubDate>
</item>
<item>
<title>testing speed of DOS assemblers under djl&#039;s 8086 DOS emulator</title>
<content:encoded><![CDATA[<i>Reply from Rugxulo, 09.05.2026, 09:58:</i><br /><br /><i>&gt; I am really curious how you convert the source syntax. AFAIK, all the<br /></i><i>&gt; assemblers have their unique quirks and syntax can differ.<br /></i>
<br />
I&#039;m not using a formal grammar parser generator or anything complex like that. Usually it&#039;s just me editing a Sed script.<br />
(I also often went out of my way to avoid any dependency on Sed at all by using normal programming languages like Pascal or REXX.)<br />
<br />
<code><br />
@echo off<br />
REM ASM++ (African Assembler) 24.02<br />
<br />
::#--- fix1.sed begins ---<br />
:: /^$/d<br />
:: /^;/d<br />
:: s/ *;.*//<br />
:: s/^ *//<br />
:: /^A[sS][sS][uU][mM][eE]/d<br />
:: /^D[BW] /b<br />
:: / D[BWD] /{<br />
:: h<br />
:: s/^\([A-Z][^ ]*\)[ ] *DB .*/s, \\[\1\\], byte\&amp;,/w fix2.sed<br />
:: g<br />
:: b<br />
:: }<br />
:: /^[A-Z][^ ]*:/{<br />
:: s//&amp;\n/<br />
:: P<br />
:: D<br />
:: }<br />
:: s/^ *//<br />
:: /^LEA /{<br />
:: s/LEA \(.*\),/MOV \1,OFFSET /<br />
:: b<br />
:: }<br />
:: /^MOV /{<br />
:: /,O[fF]/{<br />
:: s/\[0\]//<br />
:: b<br />
:: }<br />
:: /Word Ptr /s///<br />
:: /40:/s///<br />
:: }<br />
:: /[+]BX/s//][BX/<br />
:: /\[[0-9]\]/s/\([A-Z][a-zA-Z][a-zA-Z][a-zA-Z0-9]*\)\(\[[0-9]\]\)/[\1]\2/<br />
:: s/^\([ID][NE]C\)[ ] *\([A-Z][A-Za-z][A-Za-z][^ ]*\)/\1 [\2]/<br />
:: /,/{<br />
:: s/\([A-Z][a-zA-Z][a-zA-Z][a-zA-Z0-9]*\),/[\1],/<br />
:: s/,\([A-Z][a-zA-Z][a-zA-Z][^ ]*\)/,[\1]/<br />
:: }<br />
:: /^RemoveNewInt9[ ] *PROC/,/^DrawBunkers[ ] *PROC/s/\[\([^0]\)/[cs:\1/<br />
::#--- fix1.sed ends ---<br />
<br />
if not exist invaders.asm goto end<br />
if not exist %0 %0.bat %1<br />
<br />
if &quot;%SED%&quot;==&quot;&quot; set SED=sed<br />
<br />
echo.<br />
echo %%SED%% = &#039;%SED%&#039;<br />
echo.<br />
<br />
%SED% -n -e &quot;/\.sed begins ---/,/ ends ---$/s/^::[ ] *//w fix1.sed&quot; %0<br />
if not exist fix1.sed goto end<br />
%SED% -f fix1.sed invaders.asm | %SED% -e &quot;/\[/!b&quot; -f fix2.sed &gt;invap.app<br />
<br />
ap.exe /jo invap<br />
if not exist invap.com goto end<br />
<br />
echo.<br />
echo invap.com&nbsp; &nbsp; &nbsp; &nbsp;9A476DE7<br />
crc32 invap.com<br />
echo.<br />
<br />
if &quot;%1&quot;==&quot;notclean&quot; goto end<br />
del fix?.sed &gt;NUL<br />
del invap.app &gt;NUL<br />
<br />
:end<br />
if &quot;%SED%&quot;==&quot;sed&quot; set SED=<br />
</code>]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23445</link>
<pubDate>Sat, 09 May 2026 09:58:38 +0200</pubDate>
</item>
<item>
<title>testing speed of DOS assemblers under djl&#039;s 8086 DOS emulator</title>
<content:encoded><![CDATA[<i>Reply from bocke, 08.05.2026, 15:22:</i><br /><br /><i>&gt; &gt; I didn&#039;t write the reason. I am considering getting Atari Portfolio.<br /></i><i>&gt; 80c88<br /></i><i>&gt; &gt; with 128KB of which ~32kb is by default used as a ram disk so available<br /></i><i>&gt; &gt; memory is a bit more than 64kb realistically. <br /></i><i>&gt; <br /></i><i>&gt; Yes I rember that I also used a86 on atari portfolio but as my source file<br /></i><i>&gt; grew to some 10-20kB it became anoyingly slow...<br /></i>
<br />
Oh, thanx for the info. <br />
<br />
I actually found your old PoFo site. Seems to be from around ~2000. Very informative. <br />
<br />
Also, although the directory script doesn&#039;t work anymore, all the files are still there. I used IA web archive to find direct links of the files.]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23444</link>
<pubDate>Fri, 08 May 2026 15:22:45 +0200</pubDate>
</item>
<item>
<title>testing speed of DOS assemblers under djl&#039;s 8086 DOS emulator</title>
<content:encoded><![CDATA[<i>Reply from bocke, 08.05.2026, 14:49:</i><br /><br />I am really curious how you convert the source syntax. AFAIK, all the assemblers have their unique quirks and syntax can differ.]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23443</link>
<pubDate>Fri, 08 May 2026 14:49:03 +0200</pubDate>
</item>
<item>
<title>testing speed of DOS assemblers under djl&#039;s 8086 DOS emulator</title>
<content:encoded><![CDATA[<i>Reply from Rugxulo, 08.05.2026, 04:39:</i><br /><br /><i>&gt; &gt; I tested the emulator under OpenBSD (i386) on a jump drive. Note that<br /></i><i>&gt; I&#039;m more interested in estimated 8086 speed.<br /></i><i>&gt; &gt; <br /></i><i>&gt; &gt; In order of fastest to slowest assemblers I tested:<br /></i><i>&gt; <br /></i><i>&gt; Could you please test the speed of the one at the link below too? I&#039;m<br /></i><i>&gt; asking because, unfortunately, at present I can&#039;t do it myself.<br /></i><i>&gt; <br /></i><i>&gt; <a href="https://github.com/tinashh2000/asmpp">https://github.com/tinashh2000/asmpp</a><br /></i>
<br />
Okay, I did grab <b>AP.EXE 24.02</b>  the other day and finally tested it more yesterday.<br />
<br />
It does work on native DOS, but ... djl&#039;s NTVDM doesn&#039;t handle it. He admits he has some gaps in emulation and only tested common instructions emitted by compilers. So under the emulator I can&#039;t even get a help screen. (Anything out of the ordinary could be suspect, and writing in pure assembly definitely brings out atypical uses.)<br />
<br />
Just to be clear, here&#039;s what I do (in native FreeDOS):<br />
<br />
<code><br />
rexx invwords.rex<br />
rexx fixsizes.rex<br />
sed -e &quot;/^ *A[sS][sS]/d&quot; -e &quot;/DS:/s///&quot; fixsizes.tmp &gt;inv.app<br />
ap.exe /jo inv<br />
crc32 inv.com<br />
REM ... should say 9A476DE7 , same as JWasm or WASM ...<br />
</code><br />
<br />
EDIT: Under DOSBox-X (fast 486), it does assemble in under 5 seconds.]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23442</link>
<pubDate>Fri, 08 May 2026 04:39:06 +0200</pubDate>
</item>
<item>
<title>DUGL Player 1.0 Alpha5</title>
<content:encoded><![CDATA[<i>Reply from Zyzzle, 08.05.2026, 02:42:</i><br /><br /><i>&gt; &gt; If possible, one other feature request: Will it be possible to have an<br /></i><i>&gt; &gt; option to play stereo audio files or movies with mono audio which has<br /></i><i>&gt; been<br /></i><i>&gt; &gt; mixed from L+R? This is for one-speaker systems. Realtime mixing left<br /></i><i>&gt; and<br /></i><i>&gt; &gt; right channels into a single mono channel is a valuable feature to have<br /></i><i>&gt; <br /></i><i>&gt; Feature already exist, the sound output is always set into DUGLPLAY.CFG by:<br /></i><i>&gt; [SoundSampling],[SoundStereo] and [Sound16Bits]. Any selected audio/video<br /></i><i>&gt; file will be resampled/played with this output.<br /></i>
I see. Thanks for clarifying. So if I set [SoundStereo] to 0 (disabled), the mixer will mix both channels of a stereo stream into a mono output at 50% L+R? I&#039;ll test it.]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23441</link>
<pubDate>Fri, 08 May 2026 02:42:30 +0200</pubDate>
</item>
<item>
<title>NetHack 3.6.7 for DOS</title>
<content:encoded><![CDATA[<i>Reply from Zyzzle, 08.05.2026, 02:36:</i><br /><br /><i>&gt; &gt; <a href="https://nethack.org/v500/release.html">https://nethack.org/v500/release.html</a><br /></i><i>&gt; &gt; <br /></i><i>&gt; &gt; version 5 is available<br /></i>
<br /><i>&gt; <br /></i><i>&gt; VGA GUI (these are 1024x768):<br /></i><i>&gt; <a href="https://www.bttr-software.de/forum/img/uploaded/image505.png">https://www.bttr-software.de/forum/img/uploaded/image505.png</a><br /></i><i>&gt; <a href="https://www.bttr-software.de/forum/img/uploaded/image506.png">https://www.bttr-software.de/forum/img/uploaded/image506.png</a><br /></i>
I even got the DJGPP DOS port of version 5.00 to work in 1920x1080 with small icons (GUI) and readable text -- it scales great to 16:9 in baremetal DOS.<br />
<br />
Wizard mode may be enabled by executing Nethack 5.0 with the command &quot;nethack -D -u wizard&quot;]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23440</link>
<pubDate>Fri, 08 May 2026 02:36:56 +0200</pubDate>
</item>
</channel>
</rss>