<?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>VDPMI approaching GEMMIS...</title>
<content:encoded><![CDATA[<i>Reply from RayeR, 15.10.2026, 05:05:</i><br /><br /><i>&gt; BTW, I add a comments to each line of my ASM source code, too.  Do you you<br /></i><i>&gt; think there&#039;s something inappropriate about that?<br /></i>
<br />
For those who don&#039;t code asm every day it may save some time re-reading ref/opcode man...]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23728</link>
<pubDate>Thu, 15 Oct 2026 05:05:54 +0200</pubDate>
</item>
<item>
<title>386MAX and assembly language comments</title>
<content:encoded><![CDATA[<i>Reply from mceric, 14.10.2026, 22:50:</i><br /><br /><i>&gt; &gt; BTW, I add a comments to each line of my ASM source code, too...<br /></i>
<br />
While I agree that the comments are plenty, I do prefer well-commented code over little-commented code. Typical example: Assembly language optimizations using XCHG instead of MOV where nobody has an idea what was the intended effect and what was the to-be-ignored side-effect after a while ;-)<br />
<br />
And 386MAX is software which works well. I would assume that the comments helped to make it like that :-)]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23727</link>
<pubDate>Wed, 14 Oct 2026 22:50:25 +0200</pubDate>
</item>
<item>
<title>VDPMI approaching GEMMIS...</title>
<content:encoded><![CDATA[<i>Reply from Japheth, 14.10.2026, 21:21:</i><br /><br /><i>&gt; From what I understand (and I may be completely wrong), when Windows starts<br /></i><i>&gt; it sense a message to EMM386 (or 386MAX) the send its memory management<br /></i><i>&gt; information to Windows (with GEMMIS) and then shots itself off and lets<br /></i><i>&gt; Windows take care of the memory management.  When Windows shuts down, it<br /></i><i>&gt; does the same thing in reverse and the EMM turns itself on again.<br /></i>
<br />
From my understanding that&#039;s pretty correct.<br />
<br /><i>&gt; BTW, I add a comments to each line of my ASM source code, too.  Do you you<br /></i><i>&gt; think there&#039;s something inappropriate about that?<br /></i>
<br />
IMO it&#039;s &quot;suboptimal&quot; - a comment shouldn&#039;t tell what is done but rather give an idea why something is done. Else, if used obsessively, it just increases the N part of the information S/N ratio ( as ecm has pointed out ).]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23726</link>
<pubDate>Wed, 14 Oct 2026 21:21:42 +0200</pubDate>
</item>
<item>
<title>386MAX and assembly language comments</title>
<content:encoded><![CDATA[<i>Reply from ecm, 14.10.2026, 20:32:</i><br /><br /><i>&gt; BTW, I add a comments to each line of my ASM source code, too.  Do you you<br /></i><i>&gt; think there&#039;s something inappropriate about that?<br /></i>
<br />
I tend to agree that not literally every line should have a comment. The disadvantage is that sometimes the &quot;comment&quot; is useless noise that just rehashes what an instruction does, not the how or why. For instance, scanning one of the 386MAX source text files for a moment:<br />
<br />
<a href="https://github.com/sudleyplace/386MAX/blob/f743b78dc6732075e93909aeea368187125aefbe/386MAX/QMAX_DMA.ASM#L428">https://github.com/sudleyplace/386MAX/blob/f743b78...3909aeea368187125aefbe/386MAX/QMAX_DMA.ASM#L428</a><br />
<br />
<code>; Because we just changed the page table, we must flush the TLB<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;call&nbsp; &nbsp; FLUSH_TLB&nbsp; &nbsp; &nbsp; ; Flush the TLB</code><br />
<br />
This states three times we&#039;re flushing the TLB.<br />
<br />
<a href="https://github.com/sudleyplace/386MAX/blob/f743b78dc6732075e93909aeea368187125aefbe/386MAX/QMAX_DMA.ASM#L457">https://github.com/sudleyplace/386MAX/blob/f743b78...3909aeea368187125aefbe/386MAX/QMAX_DMA.ASM#L457</a><br />
<br />
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;assume&nbsp; fs:PDTGRP&nbsp; &nbsp; &nbsp; ; Tell the assembler about it</code><br />
<br />
Telling the assembler about a segment assumption is exactingly what the <code>assume</code> directive is.<br />
<br />
<a href="https://github.com/sudleyplace/386MAX/blob/f743b78dc6732075e93909aeea368187125aefbe/386MAX/QMAX_DMA.ASM#L473">https://github.com/sudleyplace/386MAX/blob/f743b78...3909aeea368187125aefbe/386MAX/QMAX_DMA.ASM#L473</a><br />
<br />
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;popad&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Restore all EGP registers<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; N.B.:&nbsp; Do not follow with [EAX+???*?]<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ret&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Return to caller</code><br />
<br />
The NB is useful, the other two comment lines exactly repeat what the instructions do.<br />
<br />
<a href="https://github.com/sudleyplace/386MAX/blob/f743b78dc6732075e93909aeea368187125aefbe/386MAX/QMAX_DMA.ASM#L578">https://github.com/sudleyplace/386MAX/blob/f743b78...3909aeea368187125aefbe/386MAX/QMAX_DMA.ASM#L578</a><br />
<br />
<code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;push&nbsp; &nbsp; di&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Save for a moment<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mov&nbsp; &nbsp; &nbsp;di,si&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ; Copy as physical source for REST_PTE<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;call&nbsp; &nbsp; REST_PTE&nbsp; &nbsp; &nbsp; &nbsp;; Restore &#039;em and flush page translation cache<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;pop&nbsp; &nbsp; &nbsp;di&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;; Restore</code><br />
<br />
Saving for a moment and restoring a register using push and pop is very much the usual way to use the stack. These comments don&#039;t add much signal here.]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23725</link>
<pubDate>Wed, 14 Oct 2026 20:32:34 +0200</pubDate>
</item>
<item>
<title>VDPMI approaching GEMMIS...</title>
<content:encoded><![CDATA[<i>Reply from bretjohn, 14.10.2026, 18:47:</i><br /><br /><i>&gt; &gt; GEMMIS was an interface used to transfer &quot;ownership&quot; of the memory<br /></i><i>&gt; &gt; management (and maybe some other stuff) from EMM386 to Windows and back<br /></i><i>&gt; &gt; again.  Was GEMMIS ever ever used for anything other than than the<br /></i><i>&gt; &gt; interface between an EMM and Windows?  I know Bob Smith (Qualitas) got<br /></i><i>&gt; his<br /></i><i>&gt; &gt; QEMMM to work with Windows, at least partially.<br /></i><i>&gt; <br /></i><i>&gt; I may be wrong, but isn&#039;t Mr. Smith the 386MAX guy?<br /></i><i>&gt; <br /></i><i>&gt; I remember he&#039;s one of those assembly coders that add a comment to<br /></i><i>&gt; <b>each</b> source line... :-(<br /></i>
<br />
You&#039;re correct -- I got 386MAX and QEMM confused.  He did get 386MAX to work with Windows, and AFAIK he&#039;s the only one that ever made a competitor to EMM386 that worked with Windows.  He did some other interesting stuff, too.<br />
<br />
But that doesn&#039;t answer my question -- was GEMMIS ever used for anything other than the the interface between Windows and an EMM?  Does anybody know?<br />
<br />
From what I understand (and I may be completely wrong), when Windows starts it sense a message to EMM386 (or 386MAX) the send its memory management information to Windows (with GEMMIS) and then shots itself off and lets Windows take care of the memory management.  When Windows shuts down, it does the same thing in reverse and the EMM turns itself on again.  It doesn&#039;t send everything to Windows, though (like the I/O port redirections), but just the memory management information.<br />
<br />
BTW, I add a comments to each line of my ASM source code, too.  Do you you think there&#039;s something inappropriate about that?]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23724</link>
<pubDate>Wed, 14 Oct 2026 18:47:20 +0200</pubDate>
</item>
<item>
<title>VDPMI approaching GEMMIS...</title>
<content:encoded><![CDATA[<i>Reply from Japheth, 14.10.2026, 10:10:</i><br /><br /><i>&gt; GEMMIS was an interface used to transfer &quot;ownership&quot; of the memory<br /></i><i>&gt; management (and maybe some other stuff) from EMM386 to Windows and back<br /></i><i>&gt; again.  Was GEMMIS ever ever used for anything other than than the<br /></i><i>&gt; interface between an EMM and Windows?  I know Bob Smith (Qualitas) got his<br /></i><i>&gt; QEMMM to work with Windows, at least partially.<br /></i>
<br />
I may be wrong, but isn&#039;t Mr. Smith the 386MAX guy?<br />
<br />
I remember he&#039;s one of those assembly coders that add a comment to <b>each</b> source line... :-(]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23723</link>
<pubDate>Wed, 14 Oct 2026 10:10:53 +0200</pubDate>
</item>
<item>
<title>Physical RAM in pure MS-DOS</title>
<content:encoded><![CDATA[<i>Reply from RayeR, 14.10.2026, 03:45:</i><br /><br /><i>&gt; In the past I saw a nice table created by RayeR who compared the maximum<br /></i><i>&gt; RAM which can be used by various DPMI servers.<br /></i>
<br />
The table is here (1 page below)<br />
<a href="http://rayer.g6.cz/programm/programm.htm#DJGPP_MEM">http://rayer.g6.cz/programm/programm.htm#DJGPP_MEM</a>]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23722</link>
<pubDate>Wed, 14 Oct 2026 03:45:07 +0200</pubDate>
</item>
<item>
<title>VDPMI approaching GEMMIS...</title>
<content:encoded><![CDATA[<i>Reply from bretjohn, 14.10.2026, 02:44:</i><br /><br />&gt;&gt; So maybe one day it could fully replace MS EMM386 - will be able<br />
&gt;&gt; cooperate with Win9x...<br /><i>&gt; <br /></i><i>&gt; Interesting.<br /></i>
<br />
GEMMIS was an interface used to transfer &quot;ownership&quot; of the memory management (and maybe some other stuff) from EMM386 to Windows and back again.  Was GEMMIS ever ever used for anything other than than the interface between an EMM and Windows?  I know Bob Smith (Qualitas) got his QEMMM to work with Windows, at least partially.  But I don&#039;t know that GEMMIS was ever used for anything else.]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23721</link>
<pubDate>Wed, 14 Oct 2026 02:44:17 +0200</pubDate>
</item>
<item>
<title>VDPMI approaching GEMMIS...</title>
<content:encoded><![CDATA[<i>Reply from RayeR, 14.10.2026, 01:32:</i><br /><br />I just uploaded logs on github, no sound produced.]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23720</link>
<pubDate>Wed, 14 Oct 2026 01:32:32 +0200</pubDate>
</item>
<item>
<title>Glidulator - 3Dfx software emulator for DOS-multicore</title>
<content:encoded><![CDATA[<i>Post by RayeR, 14.10.2026, 01:26:</i><br /><br />Just another fancy project, that took voodoo emulation code from 86box, add SSE optimized JIT compile and offload it on second CPU core - finally some real and usefull usage for multicore under DOS...<br />
<a href="https://www.vogons.org/viewtopic.php?p=1450397#p1450397">https://www.vogons.org/viewtopic.php?p=1450397#p1450397</a><br />
And SBEMU could run on other core :)]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23719</link>
<pubDate>Wed, 14 Oct 2026 01:26:22 +0200</pubDate>
</item>
<item>
<title>VDPMI approaching GEMMIS...</title>
<content:encoded><![CDATA[<i>Reply from Japheth, 13.10.2026, 23:03:</i><br /><br /><i>&gt; So maybe one day it could fully replace MS EMM386 - will be able cooperate<br /></i><i>&gt; with Win9x...<br /></i>
<br />
Interesting. Btw, have you forgotten to test your CA0106 SB card with vsbhda? I supplied a - may be - fixed version 8 days ago...<br />
<br />
See<br />
<br />
<a href="https://www.bttr-software.de/forum/forum_entry.php?id=23701&amp;page=0&amp;category=0&amp;order=last_answer">https://www.bttr-software.de/forum/forum_entry.php...amp;page=0&amp;category=0&amp;order=last_answer</a>]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23718</link>
<pubDate>Tue, 13 Oct 2026 23:03:11 +0200</pubDate>
</item>
<item>
<title>Physical RAM in pure MS-DOS</title>
<content:encoded><![CDATA[<i>Reply from Laaca, 13.10.2026, 16:32:</i><br /><br />In the past I saw a nice table created by RayeR who compared the maximum RAM which can be used by various DPMI servers. However I am not able to find it more (maybe it disappeared from internet?)<br />
<br />
<br />
But it is sligthly different topic - if the question is how much of RAM is accesible from pure MS-DOS, unmodified, without 3rd party drivers, the answer is, that with XMS method up to 4GB (minus reserved areas, so realisticaly around 3,5GB). With EMS method 32MB. With VCPI method 32MB.<br />
However you can use 3rd drivers (like JEMM386) and the accessible XMS and VCPI will be bigger.]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23717</link>
<pubDate>Tue, 13 Oct 2026 16:32:11 +0200</pubDate>
</item>
<item>
<title>VDPMI approaching GEMMIS...</title>
<content:encoded><![CDATA[<i>Post by RayeR, 13.10.2026, 04:01:</i><br /><br />Crazii just announced he started implementing GEMMIS to his VDPMI/XMM/V86mon<br />
<a href="https://www.vogons.org/viewtopic.php?p=1450372#p1450372">https://www.vogons.org/viewtopic.php?p=1450372#p1450372</a><br />
So maybe one day it could fully replace MS EMM386 - will be able cooperate with Win9x...]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23716</link>
<pubDate>Tue, 13 Oct 2026 04:01:36 +0200</pubDate>
</item>
<item>
<title>Physical RAM in pure MS-DOS</title>
<content:encoded><![CDATA[<i>Reply from Oso2k, 12.10.2026, 08:24:</i><br /><br /><i>&gt; And there&#039;s also another RAM disk driver -<br /></i><i>&gt; <a href="https://bttr-software.de/forum/board_entry.php?id=18797#p18797">https://bttr-software.de/forum/board_entry.php?id=18797#p18797</a><br /></i>
<br />
And EMS driver for 64GB of RAM - <a href="https://board.flatassembler.net/topic.php?t=19410">https://board.flatassembler.net/topic.php?t=19410</a>]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23715</link>
<pubDate>Mon, 12 Oct 2026 08:24:21 +0200</pubDate>
</item>
<item>
<title>Physical RAM in pure MS-DOS</title>
<content:encoded><![CDATA[<i>Reply from Oso2k, 12.10.2026, 08:10:</i><br /><br /><i>&gt; &gt; upper limit of &quot;physical&quot; RAM that can be used in pure MS-DOS.<br /></i><i>&gt; <br /></i><i>&gt; Define better what you mean here?  Used by MS-DOS?  Which version of<br /></i><i>&gt; MS-DOS?  Used by MS-DOS applications?  Are you constraining yourself to<br /></i><i>&gt; period relevant tech (&lt;1998 or &lt;1995)?  <br /></i><i>&gt; <br /></i><i>&gt; <br /></i><i>&gt; DOS mem command can have issues with more than 64MB for some versions.  I<br /></i><i>&gt; think some had issues with 16MB too.  Some older apps have issues with more<br /></i><i>&gt; than 16MB installed even if they don&#039;t have a use for it. <br /></i><i>&gt; <br /></i><i>&gt; Few applications will be able to take advantage of more than 64MB and if<br /></i><i>&gt; they do, they&#039;re relatively lightly documented and are pretty much<br /></i><i>&gt; &quot;non-standard conforming&quot;.<br /></i><i>&gt; <br /></i><i>&gt; You best bet advantage to take of larger memory installations will be:<br /></i><i>&gt; * djgpp with CWSDPMI r7<br /></i><i>&gt; <a href="https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/util/system/cwsdpmi/">https://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/util/system/cwsdpmi/</a><br /></i><i>&gt; * HimemSX with RdiskSX and its smartdrv patch<br /></i><i>&gt; <a href="https://github.com/Baron-von-Riedesel/HimemSX/blob/master/Readme.txt">https://github.com/Baron-von-Riedesel/HimemSX/blob/master/Readme.txt</a><br /></i><i>&gt; <a href="https://github.com/Baron-von-Riedesel/HimemSX/blob/master/RDiskSX/RDiskSX.txt">https://github.com/Baron-von-Riedesel/HimemSX/blob/master/RDiskSX/RDiskSX.txt</a><br /></i><i>&gt; <a href="https://github.com/Baron-von-Riedesel/HimemSX/tree/master/Smartdrv">https://github.com/Baron-von-Riedesel/HimemSX/tree/master/Smartdrv</a><br /></i><i>&gt; <br /></i><i>&gt; I briefly tried these things on a HP t5745 thin client with 2GB of RAM and<br /></i><i>&gt; a Dell Optiplex 9020 with either 16GB or 32GB of RAM.  IIRC, the HP did not<br /></i><i>&gt; like these bits of software but it was also a bit short on the RAM.  The<br /></i><i>&gt; Optiplex did a little better.  I could create the RAM disk but HimemSX was<br /></i><i>&gt; a bit unstable, as was the RAM disk.  I don&#039;t recall if I enabled smartdrv.<br /></i><i>&gt; I didn&#039;t have time to dig in further at that moment.  Maybe I&#039;ll try again<br /></i><i>&gt; soon.<br /></i>
<br />
<br />
And there&#039;s also another RAM disk driver - <a href="https://bttr-software.de/forum/board_entry.php?id=18797#p18797">https://bttr-software.de/forum/board_entry.php?id=18797#p18797</a>]]></content:encoded>
<link>https://www.bttr-software.de/forum/forum_entry.php?id=23714</link>
<pubDate>Mon, 12 Oct 2026 08:10:21 +0200</pubDate>
</item>
</channel>
</rss>