<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>
	Comments on: Zir Blazer&#8217;s latest QNX update	</title>
	<atom:link href="https://virtuallyfun.com/2021/08/10/zir-blazers-latest-qnx-update/feed/" rel="self" type="application/rss+xml" />
	<link>https://virtuallyfun.com/2021/08/10/zir-blazers-latest-qnx-update/</link>
	<description>Fun with Virtualization</description>
	<lastBuildDate>Fri, 13 Aug 2021 07:56:47 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>
		By: Mihai Gaitos		</title>
		<link>https://virtuallyfun.com/2021/08/10/zir-blazers-latest-qnx-update/comment-page-1/#comment-280633</link>

		<dc:creator><![CDATA[Mihai Gaitos]]></dc:creator>
		<pubDate>Fri, 13 Aug 2021 07:56:47 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=11258#comment-280633</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2021/08/10/zir-blazers-latest-qnx-update/comment-page-1/#comment-280545&quot;&gt;Zir Blazer&lt;/a&gt;.

&quot;EMMs (Extender Memory Managers) for 386 systems to emulate Expanded Memory without the real memory card Hardware also adds overhead.&quot;

I remember not loading EMM386 unless absolutely necessary on my 386 (and later 486) since it would cause visible slowdowns in many games as well as some other programs that required a powerful CPU. I had a config.sys boot-menu with options for XMS, XMS+EMM386 NOEMS (for Upper-Memory-Block), and XMS+EMS(+UMB, of course)

Speaking of memory, many programs were only using base memory and temporay files. Using a disk caching program was almost the best use for XMS at the time :)

As you say, direct hardware access really was important. Also, most programs already had (or had access to) libraries for using all the memory (e.g. DOS4GW). However, there were applications (especially smaller/cheaper ones) that were built to only use the &quot;base memory&quot; in order to work on all &quot;PC Compatibles&quot;. For most vedors it was quite important not to reduce their market share with hardware requirements unless absolutely needed, so, until the beginning of the 90s programs to *require* a 386 CPU were few and far between.

As an example, the first Autodesk Animator (released in 1989 on 2 720k diskettes BTW) only required a 286 computer with 1MB of RAM (and VGA, of course). Windows 3.0 was usable on XT-class machines.

And then, there&#039;s the money problem. Before Linux (and a while after), the price gap between DOS and Unix was about an order of magnitude (in the &#039;90s SCO Unix was priced around a thousand USD).

I now realize that there is a similarity between DOS and UNIX. Both were good enough (not great) for their time and place, and both were free or dirt cheap at the time. And thus acquired world domination. Of course, one difference is that Unix kept evolving since its introduction, while DOS didn&#039;t change much :)

By the way, I assume you read The Cathedral and the Bazaar. If not, I think you would enjoy it.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2021/08/10/zir-blazers-latest-qnx-update/comment-page-1/#comment-280545">Zir Blazer</a>.</p>
<p>&#8220;EMMs (Extender Memory Managers) for 386 systems to emulate Expanded Memory without the real memory card Hardware also adds overhead.&#8221;</p>
<p>I remember not loading EMM386 unless absolutely necessary on my 386 (and later 486) since it would cause visible slowdowns in many games as well as some other programs that required a powerful CPU. I had a config.sys boot-menu with options for XMS, XMS+EMM386 NOEMS (for Upper-Memory-Block), and XMS+EMS(+UMB, of course)</p>
<p>Speaking of memory, many programs were only using base memory and temporay files. Using a disk caching program was almost the best use for XMS at the time 🙂</p>
<p>As you say, direct hardware access really was important. Also, most programs already had (or had access to) libraries for using all the memory (e.g. DOS4GW). However, there were applications (especially smaller/cheaper ones) that were built to only use the &#8220;base memory&#8221; in order to work on all &#8220;PC Compatibles&#8221;. For most vedors it was quite important not to reduce their market share with hardware requirements unless absolutely needed, so, until the beginning of the 90s programs to *require* a 386 CPU were few and far between.</p>
<p>As an example, the first Autodesk Animator (released in 1989 on 2 720k diskettes BTW) only required a 286 computer with 1MB of RAM (and VGA, of course). Windows 3.0 was usable on XT-class machines.</p>
<p>And then, there&#8217;s the money problem. Before Linux (and a while after), the price gap between DOS and Unix was about an order of magnitude (in the &#8217;90s SCO Unix was priced around a thousand USD).</p>
<p>I now realize that there is a similarity between DOS and UNIX. Both were good enough (not great) for their time and place, and both were free or dirt cheap at the time. And thus acquired world domination. Of course, one difference is that Unix kept evolving since its introduction, while DOS didn&#8217;t change much 🙂</p>
<p>By the way, I assume you read The Cathedral and the Bazaar. If not, I think you would enjoy it.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Zir Blazer		</title>
		<link>https://virtuallyfun.com/2021/08/10/zir-blazers-latest-qnx-update/comment-page-1/#comment-280545</link>

		<dc:creator><![CDATA[Zir Blazer]]></dc:creator>
		<pubDate>Fri, 13 Aug 2021 00:06:16 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=11258#comment-280545</guid>

					<description><![CDATA[In reply to &lt;a href=&quot;https://virtuallyfun.com/2021/08/10/zir-blazers-latest-qnx-update/comment-page-1/#comment-280286&quot;&gt;Mihai Gaitos&lt;/a&gt;.

I did considered than something UNIX based would be slower than DOS and thus a hard sell (Actually, I had a single sentence saying that in the PC Evolution article, &quot;In addition to that, Xenix itself also required more resources than PC DOS, so users that didn&#039;t made use of any of Xenix advanced features would certainly have their applications running slower than on PC DOS due to the higher OS overhead for no tangible benefit&quot;). Heck, instruction execution latency on the 286 was slower on Protected Mode than Real Mode, so it was a bad idea to use it if you didn&#039;t needed Virtual Memory/MMU or &#062; 1 MiB addressing. However, for how much that would hold true is questionable...

Expanded Memory/EMS added an API for Bank Switching. This adds overhead (Do note than it was the most viable way to add more RAM to a 8088 PC class system, so maybe it would have happened anyways)
A20 Handlers to access the 64 KiB HMA, which DOS could use for itself, also adds overhead due to switching A20 Gate state latency
The XMS API to provide a means to move data back and forth from the Conventional Memory to the Extended Memory also adds a substantial overhead if using a 286 class system (Before Microsoft began to cheat by using 286 LOADALL in HIMEM.SYS in order to avoid entering and exiting Protected Mode)
EMMs (Extender Memory Managers) for 386 systems to emulate Expanded Memory without the real memory card Hardware also adds overhead. I think that a guy that tested Chipset-based EMM emulation vs a 386 EMM said that the difference in gaming was quite major

While UNIX would have begun slower, chances are that as soon as you broke the 640 KiB RAM barrier, these overheads would have begin to pick up. And yeah, there is also the matter about direct Hardware access for things like graphics, which in DOS was a free-for-all. Not sure if UNIX would be so generous about letting Software abuse certain resources.


UEFI is an overengineered specification, like ACPI. I tend to like overengineered stuff. The problem is that besides having overengineered specifications, vendors usually decide to implement them improperly, and you have a whole lot of UEFI/ACPI bugs that keep track of because there is a big rule book yet everyone still has its own flavour when it comes to implement it.
And no way that I consider than the BIOS was nice. Yeah, the basic stuff was far simpler, but it had a completely chaotic evolution with a lot of propietary extensions or interfaces that went nowhere, and just some that became popular achieved de facto standard status before being formally standarized (Which I think was the case with the famous e820 Memory Map function, which was first implemented by Phoenix BIOS before it got adopted by almost everyone with different behavior, then formally standarized: http://www.ctyme.com/intr/rb-1741.htm). You could rely only on the basic stuff to work, everything else I suppose that would be like UNIX before POSIX.]]></description>
			<content:encoded><![CDATA[<p>In reply to <a href="https://virtuallyfun.com/2021/08/10/zir-blazers-latest-qnx-update/comment-page-1/#comment-280286">Mihai Gaitos</a>.</p>
<p>I did considered than something UNIX based would be slower than DOS and thus a hard sell (Actually, I had a single sentence saying that in the PC Evolution article, &#8220;In addition to that, Xenix itself also required more resources than PC DOS, so users that didn&#8217;t made use of any of Xenix advanced features would certainly have their applications running slower than on PC DOS due to the higher OS overhead for no tangible benefit&#8221;). Heck, instruction execution latency on the 286 was slower on Protected Mode than Real Mode, so it was a bad idea to use it if you didn&#8217;t needed Virtual Memory/MMU or &gt; 1 MiB addressing. However, for how much that would hold true is questionable&#8230;</p>
<p>Expanded Memory/EMS added an API for Bank Switching. This adds overhead (Do note than it was the most viable way to add more RAM to a 8088 PC class system, so maybe it would have happened anyways)<br />
A20 Handlers to access the 64 KiB HMA, which DOS could use for itself, also adds overhead due to switching A20 Gate state latency<br />
The XMS API to provide a means to move data back and forth from the Conventional Memory to the Extended Memory also adds a substantial overhead if using a 286 class system (Before Microsoft began to cheat by using 286 LOADALL in HIMEM.SYS in order to avoid entering and exiting Protected Mode)<br />
EMMs (Extender Memory Managers) for 386 systems to emulate Expanded Memory without the real memory card Hardware also adds overhead. I think that a guy that tested Chipset-based EMM emulation vs a 386 EMM said that the difference in gaming was quite major</p>
<p>While UNIX would have begun slower, chances are that as soon as you broke the 640 KiB RAM barrier, these overheads would have begin to pick up. And yeah, there is also the matter about direct Hardware access for things like graphics, which in DOS was a free-for-all. Not sure if UNIX would be so generous about letting Software abuse certain resources.</p>
<p>UEFI is an overengineered specification, like ACPI. I tend to like overengineered stuff. The problem is that besides having overengineered specifications, vendors usually decide to implement them improperly, and you have a whole lot of UEFI/ACPI bugs that keep track of because there is a big rule book yet everyone still has its own flavour when it comes to implement it.<br />
And no way that I consider than the BIOS was nice. Yeah, the basic stuff was far simpler, but it had a completely chaotic evolution with a lot of propietary extensions or interfaces that went nowhere, and just some that became popular achieved de facto standard status before being formally standarized (Which I think was the case with the famous e820 Memory Map function, which was first implemented by Phoenix BIOS before it got adopted by almost everyone with different behavior, then formally standarized: <a href="http://www.ctyme.com/intr/rb-1741.htm" rel="nofollow ugc">http://www.ctyme.com/intr/rb-1741.htm</a>). You could rely only on the basic stuff to work, everything else I suppose that would be like UNIX before POSIX.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Mihai Gaitos		</title>
		<link>https://virtuallyfun.com/2021/08/10/zir-blazers-latest-qnx-update/comment-page-1/#comment-280286</link>

		<dc:creator><![CDATA[Mihai Gaitos]]></dc:creator>
		<pubDate>Wed, 11 Aug 2021 12:31:15 +0000</pubDate>
		<guid isPermaLink="false">https://virtuallyfun.com/wordpress/?p=11258#comment-280286</guid>

					<description><![CDATA[Great article! I had no idea about the 386 history interview, glad you mentioned it. I also like the PC Evolution article, good work. As it happens, I now have beside me an old Olivetti PCS 86 (with 8086 CPU but IDE HDD and something that looks like VGA onboard). Long story :)

You raise valid points regarding DOS ubiquity but I would like to add something. Even by the time of the 386 and Linux, in most use cases DOS was the preferred option, based -in part- on its simplicity and in part on all the tools already available (some ported from CP/M).

Avery Pennarun has a good article regarding Internet evolution here: https://tailscale.com/blog/two-internets-both-flakey/
I think what he says about IPv4 and the &quot;first edition Internet&quot; could equally be said about DOS (and x86 architecture).

Around 1995, one of the few companies in Romania to have a LAN changed from a custom made Xenix based accounting software (with multi-user support) to mostly DOS based software (Novell Netware server, diskless PCs as workstations and dBASE-IV). The new software (also multi-user) was perceived to be way faster and more user-friendly than the old Xenix based one. (As an aside, when later switching to Windows-based software with GUI, the GUI software was perceived as being worse)

I guess my point is that, especially with the computing power available back then, the Unix level of abstraction was useful for portability but taking its toll on execution speed. E.g. text interfaces for DOS programs were mainly using some simple functions (put_char, put_string, put_attribute) that operated more or less directly on video memory, maybe taking advantage of the multiple pages of video memory that even CGA had. On Unix, one would have to use the curses library that would use back-buffers (in system RAM), then emit the strings and escape-codes according to terminfo database (in system RAM), which would then be interpreted by the kernel video driver or the terminal and finally that would then put chars in the video memory. When the hardware is slow, all these intermediate steps make the interface feel sluggish.

In fact, even nowadays there are some DOS programs that &quot;feel&quot; very responsive, even on those old computers. E.g. Borland&#039;s Turbo C IDE is perfectly usable even on an XT machine. The compilation is slow, but editing, switching between (text-mode) editor windows, menus, help etc. is nearly-instant. The same with debugging - the integrated debugger was way more user-friendly than adb (or later gdb). Another advantage was the ease of getting some nice graphics done. The BGI (Borland Graphics Interface) library was easy to learn and use, as opposed to the huge complexity of X Window; not to mention that most of Unix world was text based back then.

That reminds me: what surprised me about QNX was how quickly the compiler worked. Back in the 90s I switched from C to Pascal simply because of compiler speed (I returned to C some years later). For programs of similar complexity, a Pascal compilation would take a few seconds, as opposed to C taking around 10 times as much.

As an aside, your idea about Coreboot reminded me of something Linus said some years ago wrt EFI:
So EFI has this cool shell, a loadable driver framework, and other nice
features. Where &quot;nice&quot; obviously means &quot;much more complex than the simple
things they designed in the late seventies back when people were stupid
and just wanted things to work&quot;.
from: https://yarchive.net/comp/linux/efi.html
I love his definition of nice!]]></description>
			<content:encoded><![CDATA[<p>Great article! I had no idea about the 386 history interview, glad you mentioned it. I also like the PC Evolution article, good work. As it happens, I now have beside me an old Olivetti PCS 86 (with 8086 CPU but IDE HDD and something that looks like VGA onboard). Long story 🙂</p>
<p>You raise valid points regarding DOS ubiquity but I would like to add something. Even by the time of the 386 and Linux, in most use cases DOS was the preferred option, based -in part- on its simplicity and in part on all the tools already available (some ported from CP/M).</p>
<p>Avery Pennarun has a good article regarding Internet evolution here: <a href="https://tailscale.com/blog/two-internets-both-flakey/" rel="nofollow ugc">https://tailscale.com/blog/two-internets-both-flakey/</a><br />
I think what he says about IPv4 and the &#8220;first edition Internet&#8221; could equally be said about DOS (and x86 architecture).</p>
<p>Around 1995, one of the few companies in Romania to have a LAN changed from a custom made Xenix based accounting software (with multi-user support) to mostly DOS based software (Novell Netware server, diskless PCs as workstations and dBASE-IV). The new software (also multi-user) was perceived to be way faster and more user-friendly than the old Xenix based one. (As an aside, when later switching to Windows-based software with GUI, the GUI software was perceived as being worse)</p>
<p>I guess my point is that, especially with the computing power available back then, the Unix level of abstraction was useful for portability but taking its toll on execution speed. E.g. text interfaces for DOS programs were mainly using some simple functions (put_char, put_string, put_attribute) that operated more or less directly on video memory, maybe taking advantage of the multiple pages of video memory that even CGA had. On Unix, one would have to use the curses library that would use back-buffers (in system RAM), then emit the strings and escape-codes according to terminfo database (in system RAM), which would then be interpreted by the kernel video driver or the terminal and finally that would then put chars in the video memory. When the hardware is slow, all these intermediate steps make the interface feel sluggish.</p>
<p>In fact, even nowadays there are some DOS programs that &#8220;feel&#8221; very responsive, even on those old computers. E.g. Borland&#8217;s Turbo C IDE is perfectly usable even on an XT machine. The compilation is slow, but editing, switching between (text-mode) editor windows, menus, help etc. is nearly-instant. The same with debugging &#8211; the integrated debugger was way more user-friendly than adb (or later gdb). Another advantage was the ease of getting some nice graphics done. The BGI (Borland Graphics Interface) library was easy to learn and use, as opposed to the huge complexity of X Window; not to mention that most of Unix world was text based back then.</p>
<p>That reminds me: what surprised me about QNX was how quickly the compiler worked. Back in the 90s I switched from C to Pascal simply because of compiler speed (I returned to C some years later). For programs of similar complexity, a Pascal compilation would take a few seconds, as opposed to C taking around 10 times as much.</p>
<p>As an aside, your idea about Coreboot reminded me of something Linus said some years ago wrt EFI:<br />
So EFI has this cool shell, a loadable driver framework, and other nice<br />
features. Where &#8220;nice&#8221; obviously means &#8220;much more complex than the simple<br />
things they designed in the late seventies back when people were stupid<br />
and just wanted things to work&#8221;.<br />
from: <a href="https://yarchive.net/comp/linux/efi.html" rel="nofollow ugc">https://yarchive.net/comp/linux/efi.html</a><br />
I love his definition of nice!</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
