<?xml version="1.0" encoding="ISO-8859-1"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>DOS ain't dead</title>
<link>http://www.bttr-software.de/forum/</link>
<description>DOS ain't dead</description>
<language>en</language>
<item>
<title>With DPMI into protect mode and back - EDIT: example</title>
<content:encoded><![CDATA[<i>Reply from cm, 30.08.2010, 21:51:</i><br /><br /><i>&gt; &gt; &gt; &gt; &gt; The only way is just to terminate the application.<br /></i><i>&gt; &gt; &gt; &gt; Correct.<br /></i><i>&gt; &gt; &gt; Not that much.<br /></i><i>&gt; &gt; Well tell us.<br /></i><i>&gt; <br /></i><i>&gt; NO I won't. No need to duplicate Japheth's work, see above.<br /></i>
<br />
Using RM callbacks (which I did use too, but that's not the point) doesn't properly remove the &quot;DPMI process&quot; or &quot;context&quot;, so you're not really back. In that state, it might be a bad idea to terminate the current DOS process. (Japheth probably knows more about that, regarding HDPMI.)<br />
<br /><i>&gt; &gt; How bout you just execute your own executable?<br /></i><i>&gt; <br /></i><i>&gt; Bad hack.<br /></i>
<br />
Right, but it works well enough if you get the name.<br />
<br /><i>&gt; &gt; Besides, <b>this particular issue</b> doesn't exist for a Windows process and<br /></i><i>&gt; &gt; without a problem to work around, faking a child isn't useful anyway.<br /></i><i>&gt; <br /></i><i>&gt; Strange, how do you execute 3rd party crappy code then ? And why did<br /></i><i>&gt; Firefox ban crappy plugins (most notably Flash) into a separate process ?<br /></i>
<br />
I would think Firefox is not a DOS or DPMI program, so that this would not be the <b>particular issue that we talked about</b>.<br />
<br /><i>&gt; &gt; In other news: lol if u b trollin b trollin <b>r8</b> dude<br /></i><i>&gt; <br /></i><i>&gt; Is it 64-bit code ? Does it compile ???<br /></i>
<br />
Why would it even be 64-bit code. And yes, it does compile:<br />
<br />
<code>D:\&gt;debug<br />
Executed initcont<br />
-a<br />
0F88:0100 mov eax,cr0<br />
0F88:0103 inc eax<br />
0F88:0105 mov cr0,eax<br />
0F88:0108<br />
-u 100l8<br />
0F88:0100 0F20C0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MOV&nbsp; &nbsp; &nbsp;EAX,CR0<br />
0F88:0103 6640&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INC&nbsp; &nbsp; &nbsp;EAX<br />
0F88:0105 0F22C0&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MOV&nbsp; &nbsp; &nbsp;CR0,EAX<br />
-<br />
</code><br />
<br />
See? (True, it's not optimal and all the other preparations to properly go into PM are still missing, but better than not compiling at all.)<br />
<br />
(EDIT: No, not all text that contains the token &quot;r8&quot; (or any other register name) is code.)<br />
<br /><i>&gt; &gt; (BTW for ring 0 access I prefer JLMs.)<br /></i><i>&gt; <br /></i><i>&gt; Sure, and this works without external files.<br /></i>
<br />
Sure, and going into PM on your own works with an EMM, XMM or DPMI host installed.]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8644</link>
<pubDate>Mon, 30 Aug 2010 21:51:57 GMT</pubDate>
</item>
<item>
<title>NASM version 2.09 available</title>
<content:encoded><![CDATA[<i>Reply from cm, 30.08.2010, 21:40:</i><br /><br /><i>&gt; This is probably because of all output formats enabled by default. You'll<br /></i><i>&gt; have to manually disable non-DOS targets (win32, macho) in NASM.H or<br /></i><i>&gt; OUTPUT.H or whatever (I forget), which is what was typically done in old<br /></i><i>&gt; 0.97/0.98 days. Then it should run a little better (but not much).<br /></i>
<br />
Already thought about that. I'll probably disable macho and elf (maybe rdf too), but win32 and coff might be useful for HX and DJGPP development. I'll also have to look into making these things optional via C preprocessor variables so that we might get these patches into the official NASM builds. That could be accomplished with an additional makefile for Open Watcom that only has 16-bit DOS as target. (The label <code>dos</code> is currently used for the DPMI output format in the Open Watcom makefile.)<br />
<br /><i>&gt; which lacks x86-64 support which isn't needed here anyways.<br /></i>
<br />
As I wrote, I already disabled post-686 instructions, including all IA64-emulation and AMD64 stuff. I'll look into disabling support for these architectures in other places except the expression evaluator (that would be too much work).<br />
<br />
I thought about disabling post-386 instructions too. This way, one would be able to create basic 32-bit programs with the 16-bit build, but anything else would require the DJGPP build.<br />
<br /><i>&gt; Make sure to use -os or -oxs or whatever for OpenWatcom.<br /></i>
<br />
Yep, already done. I also tested other different options. I have to manually enter different data segment names to avoid overflowing the default segment. All the data needs to be handled as far too. (<i>Large</i> or <i>Huge</i> memory model.) Maybe Open Watcom can be talked into moving data to overlays, which may or may not enable segments or even single items larger than 64 KiB.<br />
<br /><i>&gt; EDIT: Oops, TC doesn't support C99, doh.<br /></i>
<br />
I really wasn't looking forward to extend my toolchain to the semi-free TC either. (You only get the binaries, and only from that one hidden museum site.)<br />
<br /><i>&gt; &gt; Maybe time to throw out those 8086's and 80186, and raise the limit to a<br /></i><i>&gt; &gt; more modern machine, like a 286 ? :-D :-D :-D<br /></i>
<br />
Actually, the oldest real machine I'm running has a 586-class CPU. Porting it to a 16-bit platform is just for fun.<br />
<br /><i>&gt; Yes, if he's using XMS at all in the future, it will be 286+ only.<br /></i>
<br />
It could be optional, with disk swapping if no XMM is installed. Because, you see, I <i>did</i> mention disk swapping and XMS.<br />
<br /><i>&gt; I guess he likes the new macro features or whatever.<br /></i>
<br />
Right. Besides, I'm usually with the latest daily build of NASM. Some of my code right now probably won't even assemble with 2.07, and I'm already planning to use the better preprocessor of the upcoming 2.10 release. 0.98.xx was a joke compared to what we get now. (Also, I don't know whether you are allowed to use 2.06 or older releases under the 2-clause BSD license. That's important to me for ideological reasons.)]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8643</link>
<pubDate>Mon, 30 Aug 2010 21:40:01 GMT</pubDate>
</item>
<item>
<title>Little Sister</title>
<content:encoded><![CDATA[<i>Post by j_hoff, 29.08.2010, 22:21:</i><br /><br />Sorry folks, no exciting pictures of my little sister here ;-),  i just want to direct your attention to my latest project: LANSTAT a LAN STATus monitor. Though it cannot compete with projects like &quot;Big Brother&quot; or &quot;Big Sister&quot;, my &quot;Little Sister&quot; has got some interesting features. It runs under (MS-)DOS (but can be used under Windows as well), is rather compact in size, yet very flexibly configurable. Therefore it can be used with virtually any networking software available for DOS and can do even more that just ping a number of hosts. <br />
<br />
Please feel free to download the package from <a href="http://www.bttr-software.de/products/jhoffmann/">here</a> and try it yourself.]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8642</link>
<pubDate>Sun, 29 Aug 2010 22:21:56 GMT</pubDate>
</item>
<item>
<title>32bit pointers, GPFs and real mode</title>
<content:encoded><![CDATA[<i>Reply from bretjohn, 29.08.2010, 17:59:</i><br /><br /><i>&gt; the code is already 100% done, it just doesn't work the same on every<br /></i><i>&gt; platform.<br /></i>
<br />
Well, then, apparently it's not <b>100%</b> done.  :-|<br />
<br />
If it were me, what I would probably do is create some subroutines that use GS:[ESI] as a real mode input parameter.  For example, instead of:<br />
<br />
  MOV  AX,GS:[ESI]<br />
<br />
I would create a subroutine that does all of the necessary manipulations/calculations and:<br />
<br />
  CALL MovAxGsEsi<br />
<br />
That approach should allow you to keep most of your code intact.  You could also do it with macros instead of subroutines.  I don't know exactly what your code looks like, but you probably wouldn't need to create very many of these types of subroutines/macros to &quot;fix&quot; the program so it would work on any 386+ platform.]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8641</link>
<pubDate>Sun, 29 Aug 2010 17:59:20 GMT</pubDate>
</item>
<item>
<title>Problem with linking</title>
<content:encoded><![CDATA[<i>Reply from Japheth, 28.08.2010, 19:20:</i><br /><br />I played with this stuff, but am unable to link. olink.exe tells &quot;Invalid target name&quot;:<br />
<br />
<code><br />
&nbsp; &nbsp; &nbsp; &nbsp; set ORANGEC=d:\orangec<br />
&nbsp; &nbsp; &nbsp; &nbsp; set PATH=d:\orangec\bin;<br />
&nbsp; &nbsp; &nbsp; &nbsp; olink.exe /c /T:CON test.o /otest.exe /Ld:\orangec\lib clwin.l climp.l<br />
olink Version 4.1.3 Copyright (C) LADSoft 2006-2010<br />
Error: Invalid target name<br />
</code><br />
<br />
When I use ocl.exe instead of occ.exe - that is, the linker is called implicitely by the compiler - it works. But I need a separate link step.<br />
<br />
Perhaps one of the smart guys here can help?<br />
<br />
EDIT: problem solved, the olink parameter is <b>/T:CON32</b>, not /T:CON. This is an error in the docs.]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8640</link>
<pubDate>Sat, 28 Aug 2010 19:20:10 GMT</pubDate>
</item>
<item>
<title>Volumes vs physical storage media | WAS &quot;Protectmod handl&quot;</title>
<content:encoded><![CDATA[<i>Reply from bretjohn, 28.08.2010, 16:35:</i><br /><br /><i>&gt; When copying to the <b>same HD</b>, you preferably use a <b>BIG BUFFER</b><br /></i><i>&gt; (say 16 MiB), while in other cases (HD0-&gt;HD1, HD0-&gt;RAMDISK, <br /></i><i>&gt; HD0-&gt;USBstick0, USBstick2-&gt;USBstick2, ...) a small buffer (say 64 KiB)<br /></i><i>&gt; would be sufficient and maybe even faster.<br /></i>
<br />
Nice idea, but unfortunately won't work too well without adding another INT 13h extension.  The maximum number of sectors (blocks) you can transfer to/from a disk in a single INT 13h transaction is 255, or 127.5 kiB (assuming the standard 512 bytes/sector).  Also, the memory address provided for the transfer is always expected to be in segment:offset format, so that automatically limits it to 64 kiB.<br />
<br />
You could load a &quot;large buffer&quot; with multiple INT 13h requests and then empty the buffer the same way, which may save a little bit of head thrashing on a real hard drive (with actual platters &amp; heads &amp; tracks) if the sectors were in fact contiguous.<br />
<br /><i>&gt; Also storage media durability should be reported (true for HD, sticks,<br /></i><i>&gt; floppy, false for RAMDISK).<br /></i>
<br />
I would probably use a term other than &quot;media durability&quot; for that concept.  At least to me, HD's &amp; CD's are more durable than flash disks (which by design have a limited lifespan and should be treated as unreliable &amp; disposable like floppies are).  To me, the concept you're trying to impart is more like &quot;data durability&quot; (or &quot;permanence&quot; or &quot;stickiness&quot; or something like that), not &quot;media durability&quot;.]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8639</link>
<pubDate>Sat, 28 Aug 2010 16:35:38 GMT</pubDate>
</item>
<item>
<title>It (memorizing posts) doesn't  work ...</title>
<content:encoded><![CDATA[<i>Reply from Arjay, 28.08.2010, 11:44:</i><br /><br /><i>&gt; I just didn't memorize all the 8550 posts properly :crying:<br /></i>
LOL<br />
<br /><i>&gt; &gt; bug reports to be submitted either via email or the<br /></i><i>&gt; &gt; forum (it would appear the preferred option)<br /></i><i>&gt; <br /></i><i>&gt; Do I really have to register to one more forum ??? :confused:<br /></i>
I know where you are coming from.  Post here and I'll happily post a link to your report if you like.  Although to be honest pretty painless sign-up process.]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8638</link>
<pubDate>Sat, 28 Aug 2010 11:44:48 GMT</pubDate>
</item>
<item>
<title>HWiNFO32 became freeware in v2.20  (Jul-22-2008)</title>
<content:encoded><![CDATA[<i>Reply from Arjay, 28.08.2010, 11:40:</i><br /><br /><i>&gt; HWiNFO<b>32</b> became freeware with version 2.<b>2</b>0. <br /></i>
Darkened room typo :)  The date was correct....<br />
<br /><i>&gt; And that's not hidden: <br /></i>
&quot;Hidden&quot; in the sense that it required a search of history.txt for &quot;freeware&quot; to find :-D<br />
<br /><i>&gt; HWiNFO version 5.2.5 available --> 5772 :-D<br /></i>
That post predates me here :)]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8637</link>
<pubDate>Sat, 28 Aug 2010 11:40:51 GMT</pubDate>
</item>
<item>
<title>Orange C version 4.1.3 available</title>
<content:encoded><![CDATA[<i>Reply from Rugxulo, 28.08.2010, 04:55:</i><br /><br /><i>&gt; David Lindauer has released the Orange C compiler and toolchain version<br /></i><i>&gt; 4.1.3 on 02 May 2010. [It] <i>is entirely new work that is heading in the<br /></i><i>&gt; direction of a completely retargetable optimizing compiler/toolchain.</i><br /></i><i>&gt; <br /></i><i>&gt; Home page &amp; download: <a href="http://www.members.tripod.com/~ladsoft/orangec.htm">http://www.members.tripod.com/~ladsoft/orangec.htm</a><br /></i>
<br />
It's basically alpha state but the (heavily-improved) successor to CC386. It does produce better (faster) code but of course still needs some work. The output is exclusively Win32/PE in HX-compatible format.]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8636</link>
<pubDate>Sat, 28 Aug 2010 04:55:34 GMT</pubDate>
</item>
<item>
<title>NASM version 2.09 available</title>
<content:encoded><![CDATA[<i>Reply from Rugxulo, 28.08.2010, 04:53:</i><br /><br /><i>&gt; &gt; NASM.EXE is a 460 KiB file which means that it barely<br /></i><i>&gt; &gt; runs at all and usually crashes if I try to assemble anything at all (at<br /></i><i>&gt; &gt; least I hope the crash is only due to running out of memory).<br /></i><i>&gt; NDISASM.EXE<br /></i><i>&gt; &gt; works fine though, and is just about 110 KiB.<br /></i>
<br />
This is probably because of all output formats enabled by default. You'll have to manually disable non-DOS targets (win32, macho) in NASM.H or OUTPUT.H or whatever (I forget), which is what was typically done in old 0.97/0.98 days. Then it should run a little better (but not much). Last 16-bit build is for 0.98.39, found on SourceForge, which lacks x86-64 support which isn't needed here anyways. (Turbo C will produce smaller code, I think, but I may be thinking of after UPX, which wouldn't help shrink RAM use. Make sure to use -os or -oxs or whatever for OpenWatcom. EDIT: Oops, TC doesn't support C99, doh.)<br />
<br /><i>&gt; &gt; So NASM still can be compiled for 8086 systems. If I have time for that,<br /></i><i>&gt; I<br /></i><i>&gt; &gt; might look into stripping it down better to get the executable's size<br /></i><i>&gt; down.<br /></i><i>&gt; &gt; Maybe write some code to let it use disk or XMS swapping? Hmm.<br /></i><i>&gt; <br /></i><i>&gt; Maybe time to throw out those 8086's and 80186, and raise the limit to a<br /></i><i>&gt; more modern machine, like a 286 ? :-D :-D :-D<br /></i>
<br />
Yes, if he's using XMS at all in the future, it will be 286+ only. I believe <b>cm</b> is using NASM 2.04+ features in his port of RxDOS. While I don't personally see a huge need to have a 16-bit NASM just to assemble that, it would still be cool to have. I guess he likes the new macro features or whatever.]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8635</link>
<pubDate>Sat, 28 Aug 2010 04:53:31 GMT</pubDate>
</item>
<item>
<title>It (memorizing posts) doesn't  work ...</title>
<content:encoded><![CDATA[<i>Reply from DOS386, 28.08.2010, 01:29:</i><br /><br /><i>&gt; Don't you read this forum?!<br /></i>
<br />
I do ... I just didn't memorize all the 8550 posts properly :crying:<br />
<br /><i>&gt; bug reports to be submitted either via email or the<br /></i><i>&gt; forum (it would appear the preferred option)<br /></i>
<br />
Do I really have to register to one more forum ??? :confused:]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8634</link>
<pubDate>Sat, 28 Aug 2010 01:29:59 GMT</pubDate>
</item>
<item>
<title>Volumes vs physical storage media | WAS &quot;Protectmod handl&quot;</title>
<content:encoded><![CDATA[<i>Reply from DOS386, 28.08.2010, 01:26:</i><br /><br /><i>&gt; Do you have a specific protocol in mind?  If this is something you're<br /></i><i>&gt; wanting, you probably need to come with a design/API/protocol and<br /></i>
<br />
under progress :hungry:<br />
<br /><i>&gt; do an initial implementation for BIOS/kernel provided drives.  Like I<br /></i><i>&gt; stated earlier, if I did it for USBDRIVE I would limit my scope to USB<br /></i><i>&gt; disks, and it sounds like you want much more than that.<br /></i>
<br />
Knowing whether 2 volumes are on same USB HD (use big buffer) or not would be useful.<br />
<br /><i>&gt; I'm guessing that you are referring to a drive using its internal buffers<br /></i><i>&gt; to do the copy instead of actually transferring the data across the bus<br /></i><i>&gt; into RAM and back across the bus again?  If that's the case, it would take<br /></i><i>&gt; much more intimate knowledge of how the disk works than the<br /></i><i>&gt; volume-to-physical relationships.  You would have to know specific hardware<br /></i><i>&gt; details, like whether the disk even has an internal buffer that you can<br /></i><i>&gt; manipulate or not (e.g., USB flash drives don't, but USB-attached hard<br /></i><i>&gt; drives might).<br /></i>
<br />
Interesting, but not what I was referring to.<br />
<br />
When copying to the <b>same HD</b>, you preferably use a <b>BIG BUFFER</b> (say 16 MiB), while in other cases (HD0-&gt;HD1, HD0-&gt;RAMDISK,  HD0-&gt;USBstick0, USBstick2-&gt;USBstick2, ...) a small buffer (say 64 KiB) would be sufficient and maybe even faster.<br />
<br />
Also storage media durability should be reported (true for HD, sticks, floppy, false for RAMDISK).]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8633</link>
<pubDate>Sat, 28 Aug 2010 01:26:10 GMT</pubDate>
</item>
<item>
<title>Don't do this!!! 32bit pointers, GPFs and real mode</title>
<content:encoded><![CDATA[<i>Reply from DOS386, 28.08.2010, 01:09:</i><br /><br /><i>&gt; The compatibility issue that I'm worried about is that it seems that a &quot;dos<br /></i><i>&gt; boot disk&quot; as prepared by later versions of <b>windows</b><br /></i>
<br />
don't use such &quot;DOS&quot; ;-)<br />
<br /><i>&gt; boots into some sort<br /></i><i>&gt; of emm386-like mode where the switch to unreal mode fails because the CPU<br /></i><i>&gt; has already been set in some mode that breaks my &quot;switch to unreal&quot; code<br /></i>
<br />
Right :-( But it breaks your &quot;use of the unreal mode&quot; too ...<br />
<br /><i>&gt; I've never really investigated what that problem is<br /></i>
<br />
V86 has the 64 KiB segment limit too and you can't do <b>INC CR0</b> in V86 mode ...<br />
<br /><i>&gt; &quot;switch from pmode to real mode&quot; before switching to unreal mode might fix<br /></i>
<br />
YES, but &quot;V86 to real&quot; is difficult and depends from EMM386 version, there is no good official way ... <br />
<br /><i>&gt; it may be gone.  One week ago today I suffered a HDD+motherboard+power<br /></i><i>&gt; supply failure<br /></i>
<br />
Voltage increase killed all the other stuff :crying: ???<br />
<br /><i>&gt; and lost everything.  I have backups of all my good stuff,<br /></i><i>&gt; but I suspect that that update might have been tucked away in an unbacked<br /></i><i>&gt; up folder since it was just to test.  IIRC, it was an easy change to make<br /></i><i>&gt; (just the device+vendor ID) so I can do it again once I get a new machine.<br /></i>
<br />
:-|]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8632</link>
<pubDate>Sat, 28 Aug 2010 01:09:41 GMT</pubDate>
</item>
<item>
<title>Orange C version 4.1.3 available</title>
<content:encoded><![CDATA[<i>Post by rr, 27.08.2010, 22:40:</i><br /><br />David Lindauer has released the Orange C compiler and toolchain version 4.1.3 on 02 May 2010. [It] <i>is entirely new work that is heading in the direction of a completely retargetable optimizing compiler/toolchain.</i><br />
<br />
Home page &amp; download: <a href="http://www.members.tripod.com/~ladsoft/orangec.htm">http://www.members.tripod.com/~ladsoft/orangec.htm</a>]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8631</link>
<pubDate>Fri, 27 Aug 2010 22:40:05 GMT</pubDate>
</item>
<item>
<title>HWiNFO32 became freeware in v2.10  (Jul-22-2008)</title>
<content:encoded><![CDATA[<i>Reply from rr, 27.08.2010, 21:55:</i><br /><br /><i>&gt; &gt; &gt; Martin made the following post on the HWiNFO forum<br /></i><i>&gt; &gt; <br /></i><i>&gt; &gt; Doesn't reveal when other versions got freeware.<br /></i><i>&gt; Agreed.  Basically the answer was fairly well hidden in history.txt file<br /></i><i>&gt; supplied with the HWiNFO32 or online<br /></i><i>&gt; <a href="http://www.afterdawn.com/software/version_history.cfm/hwinfo32">on<br /></i><i>&gt; this page</a> - HWiNFO32 became freeware in v2.10 (July-22-2008).<br /></i>
<br />
HWiNFO<b>32</b> became freeware with version 2.<b>2</b>0. And that's not hidden: HWiNFO version 5.2.5 available --> 5772 :-D]]></content:encoded>
<link>http://www.bttr-software.de/forum/forum_entry.php?id=8630</link>
<pubDate>Fri, 27 Aug 2010 21:55:46 GMT</pubDate>
</item>
</channel>
</rss>