<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/7.2.5-stable" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Metztli Information Technology Blog Bits</title>
		<link>https://metztli.blog/Metztli-bits/</link>
		<atom:link rel="self" type="application/rss+xml" href="https://metztli.blog/Metztli-bits/?tempskin=_rss2" />
		<description></description>
		<language>en-US</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=7.2.5-stable"/>
		<ttl>60</ttl>
				<item>
			<title>Installing Mathematica for OS/2 Symmetrical Multiprocessing (SMP) v2.11 / HPFS386 Hack in VirtualBox</title>
			<link>https://metztli.blog/Metztli-bits/smp-hpfs386-math</link>
			<pubDate>Sun, 05 Nov 2023 19:42:00 +0000</pubDate>			<dc:creator>Jose</dc:creator>
			<category domain="alt">GNU/Linux</category>
<category domain="alt">Legacy</category>
<category domain="main">OS/2</category>
<category domain="alt">Virtualization</category>			<guid isPermaLink="false">286@https://metztli.blog/</guid>
						<description>&lt;div&gt;&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_1&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/Mathematica-for-OS2-on-SMP-v211-hpfs386.png?mtime=1699189226&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/Mathematica-for-OS2-on-SMP-v211-hpfs386.mp4?mtime=1699189222&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size.)&lt;/p&gt;

&lt;p&gt;Procedure to install Mathematica v2.2 for OS/2 in my local copy of the VirtualBox 7.0.12 OS/2 for SMP v2.11 with HPFS386 virtual machine hosted in my four(4) CPU / eight(8) CORE Metztli Reiser4 development environment. &lt;/p&gt;

&lt;p&gt;Subsequently this VirtualBox vm will be uploaded to a remote server, with a &lt;em&gt;Metztli Reiser4&lt;/em&gt; for AMD CPUs environment, i.e., &lt;em&gt;&lt;strong&gt;reizer4&lt;/strong&gt;&lt;/em&gt;, and I will utilize &lt;a href=&quot;https://metztli.blog/nochtli/smp-hpfs386&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;VBoxManage&lt;/em&gt; to increase the cpu count to 16 in the &lt;em&gt;headless&lt;/em&gt; environment&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Although the visual media is self explanatory, I included a few &lt;em&gt;Mathematica for OS/2&lt;/em&gt; installation procedure snapshots which may be of relevant historical interest:&lt;/p&gt;

&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/0_Mathematica-for-OS2_Install.png?mtime=1699189222&quot; title=&quot;Mathematica for OS/2 preliminary install screen&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1148&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 preliminary install screen&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/0_Mathematica-for-OS2_Install.png/fit-400x320.png?mtime=1699189222&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 preliminary install screen&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Diskette 1 has been inserted &lt;em&gt;a priori&lt;/em&gt; and we can see that it is executing initial installation phase:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/1_Mathematica-for-OS2_1-running.png?mtime=1699189222&quot; title=&quot;Mathematica a priori inserted diskette 1 which is running&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1149&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 a priori inserted diskette 1 which is running&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/1_Mathematica-for-OS2_1-running.png/fit-400x320.png?mtime=1699189222&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica a priori inserted diskette 1 which is running&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Mathematica for OS/2 installer prompts for diskette 2:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/2_Mathematica-for-OS2_2-insert.png?mtime=1699189222&quot; title=&quot;Mathematica for OS/2 insert diskette 2&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1150&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 insert diskette 2&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/2_Mathematica-for-OS2_2-insert.png/fit-400x320.png?mtime=1699189222&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 insert diskette 2&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Diskette 2 installer executes and proceeds with second phase of installation:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/2_Mathematica-for-OS2_2-running.png?mtime=1699189223&quot; title=&quot;Mathematica for OS/2 diskette 2 running&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1151&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 diskette 2 running&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/2_Mathematica-for-OS2_2-running.png/fit-400x320.png?mtime=1699189223&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 diskette 2 running&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Mathematica for OS/2 installation routine prompts for diskette 3:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/3_Mathematica-for-OS2_3-insert.png?mtime=1699189223&quot; title=&quot;Mathematica for OS/2 insert diskette 3&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1152&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 insert diskette 3&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/3_Mathematica-for-OS2_3-insert.png/fit-400x320.png?mtime=1699189223&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 insert diskette 3&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Diskette 3 routine of the installer picks up where the previous left of:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/3_Mathematica-for-OS2_3-running.png?mtime=1699189223&quot; title=&quot;Mathematica for OS/2 diskette 3 running&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1153&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 diskette 3 running&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/3_Mathematica-for-OS2_3-running.png/fit-400x320.png?mtime=1699189223&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 diskette 3 running&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Mathematica for OS/2 installer routine prompts for diskette 4:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/4_Mathematica-for-OS2_4-insert.png?mtime=1699189224&quot; title=&quot;Mathematica for OS/2 insert diskette 4&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1154&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 insert diskette 4&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/4_Mathematica-for-OS2_4-insert.png/fit-400x320.png?mtime=1699189224&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 insert diskette 4&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Diskette 4 carries installation past the half of the total routine:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/4_Mathematica-for-OS2_4-running.png?mtime=1699189224&quot; title=&quot;Mathematica for OS/2 diskette 4 running&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1155&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 diskette 4 running&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/4_Mathematica-for-OS2_4-running.png/fit-400x320.png?mtime=1699189224&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 diskette 4 running&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Mathematica for OS/2 installer prompts for the final diskette 5:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/5_Mathematica-for-OS2_5-insert.png?mtime=1699189224&quot; title=&quot;Mathematica for OS/2 insert final diskette 5&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1156&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 insert final diskette 5&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/5_Mathematica-for-OS2_5-insert.png/fit-400x320.png?mtime=1699189224&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 insert final diskette 5&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Diskette 5 installation routine completes the Mathematica for OS/2 installation:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/5_Mathematica-for-OS2_5-running.png?mtime=1699189225&quot; title=&quot;Mathematica for OS/2 final diskette 5 runing&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1157&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 final diskette 5 running&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/5_Mathematica-for-OS2_5-running.png/fit-400x320.png?mtime=1699189225&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 final diskette 5 runing&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Mathematica for OS/2 prompts us whether we agree with the default -named folder...&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/6_Mathematica-for-OS2_folder-creation.png?mtime=1699189225&quot; title=&quot;Mathematica for OS/2 default -named folder&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1158&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 default -named folder&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/6_Mathematica-for-OS2_folder-creation.png/fit-400x320.png?mtime=1699189225&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 default -named folder&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Or else &lt;img src=&quot;https://metztli.blog/rsc/smilies/graysmilewinkgrin.gif&quot; title=&quot;&amp;amp;#59;&amp;amp;#68;&quot; alt=&quot;&amp;amp;#59;&amp;amp;#68;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt;&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/Mathematica-for-OS2-Nepohualtzintzin.png?mtime=1716263258&quot; title=&quot;Nepohualtzintzin&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1227&quot;&gt;&lt;img alt=&quot;Nepohualtzintzin&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/Mathematica-for-OS2-Nepohualtzintzin.png/fit-400x320.png?mtime=1716263258&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Nepohualtzintzin&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Subsequently, a dialog informs us that Mathematica for OS/2 is installed!&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/7_Mathematica-for-OS2_Installed.png?mtime=1699189225&quot; title=&quot;Mathematica for OS/2 dialog install complete&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1159&quot;&gt;&lt;img alt=&quot;Mathematica for OS/2 dialog install complete&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/7_Mathematica-for-OS2_Installed.png/fit-400x320.png?mtime=1699189225&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Mathematica for OS/2 dialog install complete&lt;/div&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Nepohualtzintzin&lt;/strong&gt;&lt;/em&gt; (Ne∙pohual∙tzin∙tzin) ≈ &lt;em&gt;&lt;strong&gt;I can compute infinitesimals&lt;/strong&gt;&lt;/em&gt; -- from the &lt;em&gt;&lt;strong&gt;Nahuatl&lt;/strong&gt;&lt;/em&gt;, real &lt;em&gt;&lt;strong&gt;Mexico&lt;/strong&gt; - &lt;strong&gt;Tenochtitlan&#039;s&lt;/strong&gt;&lt;/em&gt; language -- which &lt;em&gt;&lt;strong&gt;predates&lt;/strong&gt;&lt;/em&gt; the alien Anglo-Saxons / Iberian / French, etc. all, European invaders&#039; vulgar Latin -derived dialects on this stolen continent originally known as &lt;em&gt;&lt;strong&gt;Ixachitlan&lt;/strong&gt;&lt;/em&gt; ≈ Land&lt;em&gt;mass&lt;em&gt; Immensity.&lt;/em&gt;&lt;/em&gt;&lt;br /&gt;
&lt;div class=&quot;image_block squared&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/ce_nepohualtzintzin.jpg?mtime=1721713521&quot; title=&quot;Ce Mathematica v2.2 for OS/2&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1235&quot;&gt;&lt;img alt=&quot;Ce Mathematica v2.2 for OS/2&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/ce_nepohualtzintzin.jpg/fit-400x320.jpg?mtime=1721713521&quot; width=&quot;150&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Ce Mathematica v2.2 for OS/2&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;image_block squared&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/ome_nepohualtzintzin.jpg?mtime=1721713522&quot; title=&quot;Ome Mathematica v2.2 for OS/2&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1240&quot;&gt;&lt;img alt=&quot;Ome Mathematica v2.2 for OS/2&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/ome_nepohualtzintzin.jpg/fit-400x320.jpg?mtime=1721713522&quot; width=&quot;211&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Ome Mathematica v2.2 for OS/2&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;image_block squared&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/eyi_nepohualtzintzin.jpg?mtime=1721713521&quot; title=&quot;Eyi Mathematica v2.2 for OS/2&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1237&quot;&gt;&lt;img alt=&quot;Eyi Mathematica v2.2 for OS/2&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/eyi_nepohualtzintzin.jpg/fit-400x320.jpg?mtime=1721713521&quot; width=&quot;147&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Eyi Mathematica v2.2 for OS/2&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;image_block squared&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/nahui_nepohualtzintzin.jpg?mtime=1721713522&quot; title=&quot;Nahui Mathematical v2.2 for OS/2&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1239&quot;&gt;&lt;img alt=&quot;Nahui Mathematical v2.2 for OS/2&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/nahui_nepohualtzintzin.jpg/fit-400x320.jpg?mtime=1721713522&quot; width=&quot;209&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Nahui Mathematical v2.2 for OS/2&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;image_block squared&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/macuilli_nepohualtzintzin.jpg?mtime=1721713521&quot; title=&quot;Macuilli Mathematical v2.2 for OS/2&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1238&quot;&gt;&lt;img alt=&quot;Macuilli Mathematical v2.2 for OS/2&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/macuilli_nepohualtzintzin.jpg/fit-400x320.jpg?mtime=1721713521&quot; width=&quot;148&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Macuilli Mathematical v2.2 for OS/2&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;image_block squared&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/chiucuace_nepohualtzintzin.jpg?mtime=1721713521&quot; title=&quot;Chiucuace Mathematical v2.2 for OS/2&quot; rel=&quot;lightbox[p286]&quot; id=&quot;link_1236&quot;&gt;&lt;img alt=&quot;Chiucuace Mathematical v2.2 for OS/2&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/chiucuace_nepohualtzintzin.jpg/fit-400x320.jpg?mtime=1721713521&quot; width=&quot;144&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Chiucuace Mathematical v2.2 for OS/2&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://metztli.blog/Metztli-bits/smp-hpfs386-math&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;https://metztli.it/b2evolution/&quot;&gt;Metztli b2evo for PHP 8&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div><div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_2" poster="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/Mathematica-for-OS2-on-SMP-v211-hpfs386.png?mtime=1699189226"><source src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/Mathematica-for-OS2-on-SMP-v211-hpfs386.mp4?mtime=1699189222" type="video/mp4" align="center" /></video></div></div><p>(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size.)</p>

<p>Procedure to install Mathematica v2.2 for OS/2 in my local copy of the VirtualBox 7.0.12 OS/2 for SMP v2.11 with HPFS386 virtual machine hosted in my four(4) CPU / eight(8) CORE Metztli Reiser4 development environment. </p>

<p>Subsequently this VirtualBox vm will be uploaded to a remote server, with a <em>Metztli Reiser4</em> for AMD CPUs environment, i.e., <em><strong>reizer4</strong></em>, and I will utilize <a href="https://metztli.blog/nochtli/smp-hpfs386" target="_blank"><em>VBoxManage</em> to increase the cpu count to 16 in the <em>headless</em> environment</a>.</p>

<p>Although the visual media is self explanatory, I included a few <em>Mathematica for OS/2</em> installation procedure snapshots which may be of relevant historical interest:</p>

<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/0_Mathematica-for-OS2_Install.png?mtime=1699189222" title="Mathematica for OS/2 preliminary install screen" rel="lightbox[p286]" id="link_1148"><img alt="Mathematica for OS/2 preliminary install screen" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/0_Mathematica-for-OS2_Install.png/fit-320x320.png?mtime=1699189222" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 preliminary install screen</i></div></div>

<p>Diskette 1 has been inserted <em>a priori</em> and we can see that it is executing initial installation phase:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/1_Mathematica-for-OS2_1-running.png?mtime=1699189222" title="Mathematica a priori inserted diskette 1 which is running" rel="lightbox[p286]" id="link_1149"><img alt="Mathematica for OS/2 a priori inserted diskette 1 which is running" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/1_Mathematica-for-OS2_1-running.png/fit-320x320.png?mtime=1699189222" width="320" height="180" class="loadimg" /></a><div><i>Mathematica a priori inserted diskette 1 which is running</i></div></div>

<p>Mathematica for OS/2 installer prompts for diskette 2:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/2_Mathematica-for-OS2_2-insert.png?mtime=1699189222" title="Mathematica for OS/2 insert diskette 2" rel="lightbox[p286]" id="link_1150"><img alt="Mathematica for OS/2 insert diskette 2" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/2_Mathematica-for-OS2_2-insert.png/fit-320x320.png?mtime=1699189222" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 insert diskette 2</i></div></div>

<p>Diskette 2 installer executes and proceeds with second phase of installation:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/2_Mathematica-for-OS2_2-running.png?mtime=1699189223" title="Mathematica for OS/2 diskette 2 running" rel="lightbox[p286]" id="link_1151"><img alt="Mathematica for OS/2 diskette 2 running" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/2_Mathematica-for-OS2_2-running.png/fit-320x320.png?mtime=1699189223" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 diskette 2 running</i></div></div>

<p>Mathematica for OS/2 installation routine prompts for diskette 3:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/3_Mathematica-for-OS2_3-insert.png?mtime=1699189223" title="Mathematica for OS/2 insert diskette 3" rel="lightbox[p286]" id="link_1152"><img alt="Mathematica for OS/2 insert diskette 3" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/3_Mathematica-for-OS2_3-insert.png/fit-320x320.png?mtime=1699189223" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 insert diskette 3</i></div></div>

<p>Diskette 3 routine of the installer picks up where the previous left of:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/3_Mathematica-for-OS2_3-running.png?mtime=1699189223" title="Mathematica for OS/2 diskette 3 running" rel="lightbox[p286]" id="link_1153"><img alt="Mathematica for OS/2 diskette 3 running" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/3_Mathematica-for-OS2_3-running.png/fit-320x320.png?mtime=1699189223" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 diskette 3 running</i></div></div>

<p>Mathematica for OS/2 installer routine prompts for diskette 4:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/4_Mathematica-for-OS2_4-insert.png?mtime=1699189224" title="Mathematica for OS/2 insert diskette 4" rel="lightbox[p286]" id="link_1154"><img alt="Mathematica for OS/2 insert diskette 4" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/4_Mathematica-for-OS2_4-insert.png/fit-320x320.png?mtime=1699189224" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 insert diskette 4</i></div></div>

<p>Diskette 4 carries installation past the half of the total routine:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/4_Mathematica-for-OS2_4-running.png?mtime=1699189224" title="Mathematica for OS/2 diskette 4 running" rel="lightbox[p286]" id="link_1155"><img alt="Mathematica for OS/2 diskette 4 running" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/4_Mathematica-for-OS2_4-running.png/fit-320x320.png?mtime=1699189224" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 diskette 4 running</i></div></div>

<p>Mathematica for OS/2 installer prompts for the final diskette 5:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/5_Mathematica-for-OS2_5-insert.png?mtime=1699189224" title="Mathematica for OS/2 insert final diskette 5" rel="lightbox[p286]" id="link_1156"><img alt="Mathematica for OS/2 insert final diskette 5" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/5_Mathematica-for-OS2_5-insert.png/fit-320x320.png?mtime=1699189224" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 insert final diskette 5</i></div></div>

<p>Diskette 5 installation routine completes the Mathematica for OS/2 installation:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/5_Mathematica-for-OS2_5-running.png?mtime=1699189225" title="Mathematica for OS/2 final diskette 5 runing" rel="lightbox[p286]" id="link_1157"><img alt="Mathematica for OS/2 final diskette 5 running" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/5_Mathematica-for-OS2_5-running.png/fit-320x320.png?mtime=1699189225" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 final diskette 5 runing</i></div></div>

<p>Mathematica for OS/2 prompts us whether we agree with the default -named folder...<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/6_Mathematica-for-OS2_folder-creation.png?mtime=1699189225" title="Mathematica for OS/2 default -named folder" rel="lightbox[p286]" id="link_1158"><img alt="Mathematica for OS/2 default -named folder" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/6_Mathematica-for-OS2_folder-creation.png/fit-320x320.png?mtime=1699189225" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 default -named folder</i></div></div>

<p>Or else <img src="https://metztli.blog/rsc/smilies/graysmilewinkgrin.gif" title="&amp;#59;&amp;#68;" alt="&amp;#59;&amp;#68;" class="middle" width="15" height="15" /><br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/Mathematica-for-OS2-Nepohualtzintzin.png?mtime=1716263258" title="Nepohualtzintzin" rel="lightbox[p286]" id="link_1227"><img alt="Nepohualtzintzin" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/Mathematica-for-OS2-Nepohualtzintzin.png/fit-320x320.png?mtime=1716263258" width="320" height="180" class="loadimg" /></a><div><i>Nepohualtzintzin</i></div></div>

<p>Subsequently, a dialog informs us that Mathematica for OS/2 is installed!<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/7_Mathematica-for-OS2_Installed.png?mtime=1699189225" title="Mathematica for OS/2 dialog install complete" rel="lightbox[p286]" id="link_1159"><img alt="Mathematica for OS/2 dialog install complete" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/7_Mathematica-for-OS2_Installed.png/fit-320x320.png?mtime=1699189225" width="320" height="180" class="loadimg" /></a><div><i>Mathematica for OS/2 dialog install complete</i></div></div>
<hr />
<p><em><strong>Nepohualtzintzin</strong></em> (Ne∙pohual∙tzin∙tzin) ≈ <em><strong>I can compute infinitesimals</strong></em> -- from the <em><strong>Nahuatl</strong></em>, real <em><strong>Mexico</strong> - <strong>Tenochtitlan's</strong></em> language -- which <em><strong>predates</strong></em> the alien Anglo-Saxons / Iberian / French, etc. all, European invaders' vulgar Latin -derived dialects on this stolen continent originally known as <em><strong>Ixachitlan</strong></em> ≈ Land<em>mass<em> Immensity.</em></em><br />
<div class="squared"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/ce_nepohualtzintzin.jpg?mtime=1721713521" title="Ce Mathematica v2.2 for OS/2" rel="lightbox[p286]" id="link_1235"><img alt="Ce Mathematica v2.2 for OS/2" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/ce_nepohualtzintzin.jpg/fit-320x320.jpg?mtime=1721713521" width="150" height="320" class="loadimg" /></a><div><i>Ce Mathematica v2.2 for OS/2</i></div></div>

<div class="squared"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/ome_nepohualtzintzin.jpg?mtime=1721713522" title="Ome Mathematica v2.2 for OS/2" rel="lightbox[p286]" id="link_1240"><img alt="Ome Mathematica v2.2 for OS/2" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/ome_nepohualtzintzin.jpg/fit-320x320.jpg?mtime=1721713522" width="211" height="320" class="loadimg" /></a><div><i>Ome Mathematica v2.2 for OS/2</i></div></div>

<div class="squared"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/eyi_nepohualtzintzin.jpg?mtime=1721713521" title="Eyi Mathematica v2.2 for OS/2" rel="lightbox[p286]" id="link_1237"><img alt="Eyi Mathematica v2.2 for OS/2" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/eyi_nepohualtzintzin.jpg/fit-320x320.jpg?mtime=1721713521" width="147" height="320" class="loadimg" /></a><div><i>Eyi Mathematica v2.2 for OS/2</i></div></div>

<div class="squared"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/nahui_nepohualtzintzin.jpg?mtime=1721713522" title="Nahui Mathematical v2.2 for OS/2" rel="lightbox[p286]" id="link_1239"><img alt="Nahui Mathematical v2.2 for OS/2" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/nahui_nepohualtzintzin.jpg/fit-320x320.jpg?mtime=1721713522" width="209" height="320" class="loadimg" /></a><div><i>Nahui Mathematical v2.2 for OS/2</i></div></div>

<div class="squared"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/macuilli_nepohualtzintzin.jpg?mtime=1721713521" title="Macuilli Mathematical v2.2 for OS/2" rel="lightbox[p286]" id="link_1238"><img alt="Macuilli Mathematical v2.2 for OS/2" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/macuilli_nepohualtzintzin.jpg/fit-320x320.jpg?mtime=1721713521" width="148" height="320" class="loadimg" /></a><div><i>Macuilli Mathematical v2.2 for OS/2</i></div></div>

<div class="squared"><a href="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/chiucuace_nepohualtzintzin.jpg?mtime=1721713521" title="Chiucuace Mathematical v2.2 for OS/2" rel="lightbox[p286]" id="link_1236"><img alt="Chiucuace Mathematical v2.2 for OS/2" src="https://metztli.blog/media/blogs/Metztli-bits/Mathematica-for-OS2/.evocache/chiucuace_nepohualtzintzin.jpg/fit-320x320.jpg?mtime=1721713521" width="144" height="320" class="loadimg" /></a><div><i>Chiucuace Mathematical v2.2 for OS/2</i></div></div><div class="item_footer"><p><small><a href="https://metztli.blog/Metztli-bits/smp-hpfs386-math">Original post</a> blogged on <a href="https://metztli.it/b2evolution/">Metztli b2evo for PHP 8</a>.</small></p></div>]]></content:encoded>
								<comments>https://metztli.blog/Metztli-bits/smp-hpfs386-math#comments</comments>
			<wfw:commentRss>https://metztli.blog/Metztli-bits/?tempskin=_rss2&#38;disp=comments&#38;p=286</wfw:commentRss>
		</item>
				<item>
			<title>OS/2 for Symmetric Multiprocessing (SMP) 16 CPU/Core version 2.11 with Mathematica: 'Klein Bottle'</title>
			<link>https://metztli.blog/Metztli-bits/os-2-smp-2-11-mathematica-klein-bottle</link>
			<pubDate>Mon, 13 Mar 2023 12:15:00 +0000</pubDate>			<dc:creator>Jose</dc:creator>
			<category domain="alt">Legacy</category>
<category domain="main">OS/2</category>			<guid isPermaLink="false">275@https://metztli.blog/</guid>
						<description>&lt;h2 class=&quot;evo_auto_anchor_header&quot; id=&quot;mathematica-for-os-2-2-11-on-smp-klein-bottle&quot;&gt;Mathematica for OS/2 2.11 on SMP: &#039;Klein Bottle&#039;&lt;/h2&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
As an &lt;em&gt;addendum&lt;/em&gt; to my previous &#039;&lt;a href=&quot;https://metztli.blog/ixiptli/mathematica-os-2-2-11-smp&quot; target=&quot;_blank&quot;&gt;Mathematica on OS/2 Symmetrical Multiprocessing (SMP) for v2.11 Guest in VirtualBox 16 CPU/Cores&lt;/a&gt;&#039; post in Collection &lt;em&gt;&lt;strong&gt;Ixiptli&lt;/strong&gt;&lt;/em&gt;, I remembered I had seen the so-called &#039;Klein Bottle&#039; in an older manual I had many &lt;em&gt;Metztli&lt;/em&gt;&amp;nbsp; ago.&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_3&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-Mathematica-Klein-bottle.png?mtime=1678710628&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-Mathematica-Klein-bottle.mp4?mtime=1678706535&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size.)&lt;/p&gt;

&lt;hr /&gt;
&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; Notwithstanding, at that time, the front window of my car was broken and my backpack was stolen in San Francisco as I had parked, on the street, next to San Francisco State University -- and I had that manual in there.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-smp-2-11-mathematica-klein-bottle/os2-mathematica-klein-bottle.png?mtime=1678710987&quot; rel=&quot;lightbox[p275]&quot; id=&quot;link_1064&quot;&gt;&lt;img alt=&quot;Klein Bottle rendered in Mathematica for OS/2&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-smp-2-11-mathematica-klein-bottle/.evocache/os2-mathematica-klein-bottle.png/fit-192x192.png?mtime=1678710987&quot; width=&quot;192&quot; height=&quot;108&quot; class=&quot;evo_thumbnail evo_thumbnail__left noborder loadimg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://metztli.blog/Metztli-bits/os-2-smp-2-11-mathematica-klein-bottle&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;https://metztli.it/b2evolution/&quot;&gt;Metztli b2evo for PHP 8&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<h2 class="evo_auto_anchor_header" id="mathematica-for-os-2-2-11-on-smp-klein-bottle">Mathematica for OS/2 2.11 on SMP: 'Klein Bottle'</h2>
<p><br /><br />
As an <em>addendum</em> to my previous '<a href="https://metztli.blog/ixiptli/mathematica-os-2-2-11-smp" target="_blank">Mathematica on OS/2 Symmetrical Multiprocessing (SMP) for v2.11 Guest in VirtualBox 16 CPU/Cores</a>' post in Collection <em><strong>Ixiptli</strong></em>, I remembered I had seen the so-called 'Klein Bottle' in an older manual I had many <em>Metztli</em>&nbsp; ago.<sup>1</sup></p>

<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_4" poster="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-Mathematica-Klein-bottle.png?mtime=1678710628"><source src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-Mathematica-Klein-bottle.mp4?mtime=1678706535" type="video/mp4" align="center" /></video></div>
<br /><br />
(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size.)</p>

<hr />
<p><sup>1</sup> Notwithstanding, at that time, the front window of my car was broken and my backpack was stolen in San Francisco as I had parked, on the street, next to San Francisco State University -- and I had that manual in there.</p>

<p><a href="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-smp-2-11-mathematica-klein-bottle/os2-mathematica-klein-bottle.png?mtime=1678710987" rel="lightbox[p275]" id="link_1064"><img alt="Klein Bottle rendered in Mathematica for OS/2" src="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-smp-2-11-mathematica-klein-bottle/.evocache/os2-mathematica-klein-bottle.png/fit-192x192.png?mtime=1678710987" width="192" height="108" class="evo_thumbnail evo_thumbnail__left noborder loadimg" /></a></p><div class="item_footer"><p><small><a href="https://metztli.blog/Metztli-bits/os-2-smp-2-11-mathematica-klein-bottle">Original post</a> blogged on <a href="https://metztli.it/b2evolution/">Metztli b2evo for PHP 8</a>.</small></p></div>]]></content:encoded>
								<comments>https://metztli.blog/Metztli-bits/os-2-smp-2-11-mathematica-klein-bottle#comments</comments>
			<wfw:commentRss>https://metztli.blog/Metztli-bits/?tempskin=_rss2&#38;disp=comments&#38;p=275</wfw:commentRss>
		</item>
				<item>
			<title>OS/2 2.11 SMP Bootable CDROM 10 Minute Installation Hack into VirtualBox</title>
			<link>https://metztli.blog/Metztli-bits/os-2-2-11-smp</link>
			<pubDate>Fri, 08 Apr 2022 12:05:00 +0000</pubDate>			<dc:creator>Jose</dc:creator>
			<category domain="alt">Monad</category>
<category domain="alt">Legacy</category>
<category domain="main">OS/2</category>			<guid isPermaLink="false">251@https://metztli.blog/</guid>
						<description>&lt;p&gt;There was, still is, &lt;em&gt;something&lt;/em&gt; appealing about OS/2 -- it was ahead of its time, &lt;em&gt;Warp&lt;/em&gt; indeed -- &lt;em&gt;The Integrating Platform&lt;/em&gt;.  I came across some relevant resources and created an OS/2 2.11 Bootable CDROM media for VirtualBox -- as I heard, &lt;em&gt;through the grapevine&lt;/em&gt;, that it was &lt;em&gt;undoable&lt;/em&gt;. &lt;img src=&quot;https://metztli.blog/rsc/smilies/graylaugh.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#41;&amp;amp;#41;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#41;&amp;amp;#41;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Many moons ago, &lt;em&gt;&lt;strong&gt;huehue Metztlapohualli&lt;/strong&gt;&lt;/em&gt;, i.e., &#039;&lt;em&gt;in the ancient month count&lt;/em&gt;&#039;, OS/2 enabled me to learn Unix by utilizing the GNU/Linux utilities ported by OS/2 hackers. Accordingly, once IBM orphaned the OS/2 -- and the executives even balked at our multiple petitions to have the OS open sourced -- the transition to Linux was relatively painless. As a matter of fact, while creating this hack I had to bring my old ported GNU/Linux utilities, alternating between OS/2 2.0, 2.1x, and even Warp 3, environments so as to alleviate the shortcoming of 640x480 resolution.&lt;/p&gt;

&lt;p&gt;Due to the scarcity of information, I usually operate by inductive reasoning. Notwithstanding, I came across the following &#039;nugget&#039;:&lt;br /&gt;
&lt;em&gt;OS/2 has supported &lt;em&gt;SMP&lt;/em&gt; for quite a while in special editions of OS/2. The first version was &#039;&lt;strong&gt;OS/2 2.11 for Symmetrical Multiprocessing&lt;/strong&gt;&#039;...&lt;br /&gt;
The diffences between the single-processor OS/2 and the SMP version are very small: 2 APIs for controlling the CPUs, an extra index for DosQuerySysInfo() and 4 APIs for dealing with spinlocks. I know that the &#039;SMP addendum&#039; mentions a lot of other things, but they are server things, not SMP things.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&#039;OS/2 2.11 SMP&#039; supports up to 16 processors&lt;/strong&gt;,...&lt;/em&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;Yet my build of VirtualBox, from source, under a &lt;em&gt;Metztli Reiser4&lt;/em&gt; Debian environment &lt;del&gt;can only go up to 8 processors/cores&lt;/del&gt; and &lt;img src=&quot;https://metztli.blog/rsc/smilies/grayno.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#110;&amp;amp;#111;&amp;amp;#58;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#110;&amp;amp;#111;&amp;amp;#58;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt; higher resolution than 640x480...&lt;/p&gt;

&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_5&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2.11-SMP.png?mtime=1649416694&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2.11-SMP.mp4?mtime=1649414003&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;
(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., &#039;Home&#039;, collection front page)&lt;/p&gt;

&lt;p&gt;&lt;ins&gt;Update 12-18-2022&lt;/ins&gt; : my personal development computing environment can only go up to eight(8) cores; however, I installed another Oracle VirtualBox 7.0.4 -- although &#039;headless&#039; -- in one of my remote Metztli Reiser4 servers. I made use of VNC to make connection and although &lt;a href=&quot;https://remmina.org/&quot; target=&quot;_blank&quot;&gt;Remmina&lt;/a&gt; experience a buggy pointer (or mouse) I was able to bring up the SMP Monitor. I could not delay this event as it is not everyday that an OS/2 for Symmetrical Multiprocessing (SMP) Version 2.11 is seen running on 16 CPU/Cores!&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;&lt;h3 class=&quot;evo_auto_anchor_header&quot; id=&quot;os-2-for-smp-version-2-11-remote-instance-accessed-via-vnc&quot;&gt;OS/2 for SMP Version 2.11 remote instance accessed via VNC&lt;/h3&gt;&lt;/div&gt;
&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_6&quot; poster=&quot;https://metztli.blog/media/blogs/calli/OS2-2_11-SMP/OS2-2_11-SMP-16_CPUs.png?mtime=1671422986&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/calli/OS2-2_11-SMP/OS2-2_11-SMP-16_CPUs.mp4?mtime=1671420942&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;
(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., &#039;Home&#039;, collection front page)&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;h3 class=&quot;evo_auto_anchor_header&quot; id=&quot;convert-from-2-1-base-video-into-3-0-base-video-in-order-to-take-advantage-of-the-monitor-configuration-feature-of-the-3-0-system-icon&quot;&gt;CONVERT FROM 2.1 BASE VIDEO INTO 3.0 BASE VIDEO IN ORDER TO TAKE ADVANTAGE OF THE MONITOR CONFIGURATION FEATURE OF THE 3.0 SYSTEM ICON&lt;/h3&gt;&lt;/div&gt;
&lt;p&gt;At our OS/2 2.1x CMD, executing the following:&lt;br /&gt;
&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;\OS2\VCFGINST&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;EXE&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
the screen will momentarily blank; subsequently, shutting down and then rebooting our OS/2 2.1x then, opening the &lt;em&gt;Screen object&lt;/em&gt; will show the current screen resolution enabled by the &lt;em&gt;&lt;strong&gt;conversion&lt;/strong&gt; into 3.0 Base Video&lt;/em&gt;:&lt;br /&gt;
&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_7&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386MMPMTCPIP_VCFGINST_EXE.png?mtime=1745844189&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386MMPMTCPIP_VCFGINST_EXE.mp4?mtime=1745844191&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;
(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., &#039;Home&#039;, collection front page)&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&quot;&lt;/p&gt;&lt;div align=&quot;center&quot;&gt;&lt;h3 class=&quot;evo_auto_anchor_header&quot; id=&quot;platform-specific-drivers-psds&quot;&gt;Platform Specific Drivers (PSDs)&lt;/h3&gt;&lt;/div&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/os2w3-view-os2v211-smp-psds.png?mtime=1671812464&quot; title=&quot;View OS/2 for SMP v2.11 Reference&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1005&quot;&gt;&lt;img alt=&quot;View OS/2 for SMP v2.11 Reference&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/os2w3-view-os2v211-smp-psds.png/fit-400x320.png?mtime=1671812464&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;View OS/2 for SMP v2.11 Reference&lt;/div&gt;&lt;/div&gt;
&lt;a href=&quot;https://hobbesarchive.com/?detail=/pub/os2/dev/info/books/OS2forSMP_2-11_1stEd.zip&quot; target=&quot;_blank&quot;&gt;OS/2 for SMP v2.11 Reference at Hobbes but requires OS/2 INF VIEW.EXE utility or &#039;INF READER&#039;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;In OS/2 for SMP V2.11, all of the platform specific code has been removed from the operating system, and placed into a Platform Specific Driver. These drivers provide an abstraction layer for the underlying hardware by allowing the operating system to call generic functions to perform platform-specific operations without worrying about the actual hardware implementation. This allows OS/2 for SMP V2.11 to support new MP hardware platforms without modifying the operating system.&lt;br /&gt;
&lt;br /&gt;
PSDs are 32-bit flat DLLs specified in CONFIG.SYS by using the PSD= keyword, and must conform to the 8.3 file naming convention (e.g. PSD=&lt;ins&gt;TENOCHCA&lt;/ins&gt;.PSD). They cannot contain either drive or path information because OS/2 cannot process such information at the stage of the startup sequence when the PSD statements are processed. The root directory of the startup partition is first searched for the specified file name, followed by the \OS2 directory of the startup partition. If drive or path information is included in a PSD statement, an error is generated.&lt;br /&gt;
&lt;br /&gt;
PSD parameters may be specified after the PSD&#039;s name, and may be a maximum of 1024 characters long. The parameter string is not interpreted or parsed by OS/2, but is passed verbatim as an ASCIIZ string when the PSD&#039;s Install function is invoked.&lt;br /&gt;
&lt;br /&gt;
If multiple PSD statements are encountered, OS/2 will load each PSD in the order listed in CONFIG.SYS, and call the PSD&#039;s install function. The first PSD which successfully installs will be the one OS/2 uses.&lt;br /&gt;
&lt;br /&gt;
PSD statements are processed before BASEDEV, IFS, and DEVICE statements.&quot;&lt;/em&gt;&lt;/p&gt;
&lt;div align=&quot;right&quot;&gt;&lt;a href=&quot;https://komh.github.io/os2books/smp/006_L1_PlatformSpecificDriv.html&quot; target=&quot;_blank&quot;&gt;KO Myung-Hun&#039;s Platform Specific Drivers (PSD)s online OS/2 for SMP Version 2.11&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/os2w3-show-os2v211-smp-psds.png?mtime=1671808555&quot; title=&quot;OS/2 UNPACK2 OS2APIC.PSD&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1004&quot;&gt;&lt;img alt=&quot;OS/2 UNPACK2 OS2APIC.PSD&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/os2w3-show-os2v211-smp-psds.png/fit-400x320.png?mtime=1671808555&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;OS/2 UNPACK2 OS2APIC.PSD&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;-&gt;\OS2\INSTALL\CAVERUN.PSD&lt;br /&gt;
-&gt;\OS2\INSTALL\OS2APIC.PSD&lt;br /&gt;
-&gt;\OS2\INSTALL\VIPERMP.PSD&lt;br /&gt;
-&gt;\OS2\INSTALL\EBI2.PSD&lt;br /&gt;
-&gt;\OS2\INSTALL\TRICRD.PSD&lt;br /&gt;
-&gt;\OS2\INSTALL\PROLIANT.PSD&lt;br /&gt;
-&gt;\OS2\INSTALL\WYSE.PSD&lt;br /&gt;
-&gt;\OS2\INSTALL\ALR.PSD&lt;/p&gt;

&lt;p&gt;(The above are typical of middle of 1990&#039;s Compaq software bundle where OS/2 for SMP v2.11 was an option; notwithstanding, I believe that the maximum number of CPU/COREs supported was eight(8))&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;div align=&quot;center&quot;&gt;&lt;h3 class=&quot;evo_auto_anchor_header&quot; id=&quot;on-os-2-for-smp-version-2-11-executing-on-16-cpus-cores-in-virtualbox-we-can-install-hpfs386-file-system-hack&quot;&gt;On OS/2 for SMP Version 2.11 Executing on 16 CPUs/Cores in VirtualBox We can Install HPFS386 File System Hack.&lt;/h3&gt;&lt;/div&gt;
&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;\AHPFS386&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CMD&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_8&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-for-SMP_v211-installing-HPFS386-hack.png?mtime=1748929190&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-for-SMP_v211-installing-HPFS386-hack.mp4?mtime=1748929189&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;
(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., &#039;Home&#039;, collection front page)&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;&lt;em&gt;Other Unix virtual file systems include the File System Switch in System V Release 3, the Generic File System in Ultrix, and the VFS in Linux. In OS/2 and Microsoft Windows, the virtual file system mechanism is called the &lt;strong&gt;Installable File System&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Virtual_file_system&quot; target=&quot;_blank&quot;&gt;Wikipedia: Virtual File System&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
The Installable File System (IFS) is a filesystem API in MS-DOS/PC DOS 4.x, IBM OS/2 and Microsoft Windows that enables the operating system to recognize and load drivers for file systems.&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The IFS provided a basic and powerful interface for programming filesystems. It was introduced in 1989 in OS/2 1.20, along with the HPFS filesystem.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Filesystem drivers executed in kernel-space (ring 0) and are divided in four principal pieces: microIFS, miniIFS, IFS, helpers.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Only the IFS and the filesystem code itself is required and it is loaded via an &quot;&lt;strong&gt;IFS=&lt;/strong&gt;&quot; statement in the &lt;strong&gt;CONFIG.SYS&lt;/strong&gt; file&lt;/em&gt;:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-2-11-smp/ifs_config_sys.png?mtime=1749283961&quot; title=&quot;Installable File System (IFS) statement in CONFIG.SYS&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1376&quot;&gt;&lt;img alt=&quot;Installable File System (IFS) statement in CONFIG.SYS&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-2-11-smp/.evocache/ifs_config_sys.png/fit-400x320.png?mtime=1749283961&quot; width=&quot;394&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Installable File System (IFS) statement in CONFIG.SYS&lt;/div&gt;&lt;/div&gt;
&lt;em&gt;&lt;ins&gt;[see full CONFIG.SYS sample file further below]&lt;/ins&gt;. It is a NE 16-bit dynamically loaded library. No matter if it is a 32-bit OS/2 (2.0 and newer), the IFS is always 16-bit (although extraofficially you can make a 32-bit IFS).&lt;/em&gt;&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_program.webp?mtime=1769994290&quot; title=&quot;ZipStream, 32 bit IFS concatenated to end of CONFIG.SYS&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1567&quot;&gt;&lt;img alt=&quot;ZipStream, 32 bit IFS concatenated to end of CONFIG.SYS&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/ZipStream_IFS_for-OS2_program.webp/fit-400x320.webp?mtime=1769994290&quot; width=&quot;382&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;ZipStream, 32 bit IFS concatenated to end of CONFIG.SYS&lt;/div&gt;&lt;/div&gt;
&lt;ins&gt;(For instance,)&lt;/ins&gt;&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_edge_.webp?mtime=1769958065&quot; title=&quot;ZipStream, 32 bit IFS box edge&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1563&quot;&gt;&lt;img alt=&quot;ZipStream, 32 bit IFS box edge&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/ZipStream_IFS_for-OS2_edge_.webp/fit-400x320.webp?mtime=1769958065&quot; width=&quot;400&quot; height=&quot;80&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;ZipStream, 32 bit IFS box edge&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_diskette-media.webp?mtime=1769958066&quot; title=&quot;ZipStream, 32 bit IFS diskette media&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1564&quot;&gt;&lt;img alt=&quot;ZipStream, 32 bit IFS diskette media&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/ZipStream_IFS_for-OS2_diskette-media.webp/fit-400x320.webp?mtime=1769958066&quot; width=&quot;328&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;ZipStream, 32 bit IFS diskette media&lt;/div&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;ZipStream &lt;del&gt;is&lt;/del&gt;&lt;ins&gt;was&lt;/ins&gt; an OS/2 2.x Installable File System (IFS) that mirrors access to existing OS/2 File Systems and simultaneously provides automatic, transparent file compression and decompression.&lt;br /&gt;
...&lt;br /&gt;
Its 32 bit implementation exploits OS/2&#039;s pre-emptive multi-threaded processing capabilities, allowing complex processing to be carried out in an optimum manner.&lt;/p&gt;&lt;/blockquote&gt;
&lt;table width=&quot;100%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_front_.webp?mtime=1769958065&quot; title=&quot;ZipStream, 32 bit IFS box front&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1565&quot;&gt;&lt;img alt=&quot;ZipStream, 32 bit IFS box front&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/ZipStream_IFS_for-OS2_front_.webp/fit-400x320.webp?mtime=1769958065&quot; width=&quot;244&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;ZipStream, 32 bit IFS box front&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot;&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_back_.webp?mtime=1769958064&quot; title=&quot;ZipStream, 32 bit IFS box back&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1566&quot;&gt;&lt;img alt=&quot;ZipStream, 32 bit IFS box back&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/ZipStream_IFS_for-OS2_back_.webp/fit-400x320.webp?mtime=1769958064&quot; width=&quot;230&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;ZipStream, 32 bit IFS box back&lt;/div&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
&lt;em&gt;The microIFS is a piece of code that loads in memory the kernel and the miniIFS and jumps to kernel execution. It is usually in the boot portion of the filesystem.&lt;/em&gt;&lt;br /&gt;
i.e.,&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&#039;Big Blue&#039;... could mak&lt;ins&gt;e&lt;/ins&gt; a minimum investment in virtualizing the OS/2 boot procedure with the Kernel-based Virtual Machine (KVM) Linux virtualization technology used extensively by Red Hat -- IBM&#039;s latest acquisition!&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://metztli.blog/nochtli/smp-hpfs386&quot; target=&quot;_blank&quot;&gt; Tlacatecolotl: OS/2 for Symmetrical Multiprocessing(SMP) v2.11 HPFS386 on Headless VirtualBox 7.0.12&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Installable_File_System&quot; target=&quot;_blank&quot;&gt;Wikipedia: Installable File System&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;ins&gt;For OS/2&lt;/ins&gt; two kinds of IFS drivers &lt;ins&gt;were available for HPFS&lt;/ins&gt; file system:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;The standard one with a cache limited to 2 MB&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;HPFS386 provided with certain server versions of OS/2, or as added component for the server versions that did not come with it.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;HPFS386&#039;s cache is limited by the amount of available memory in OS/2&#039;s system memory arena[1] and was implemented in 32-bit assembly language. HPFS386 is a ring 0 driver (allowing direct hardware access and direct interaction with the kernel) with built-in SMB networking properties that are usable by various server daemons, whereas HPFS is a ring 3 driver. Thus, HPFS386 is faster than HPFS and highly optimized for server applications. It is also highly tunable by experienced administrators&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/High_Performance_File_System&quot; target=&quot;_blank&quot;&gt;Wikipedia: High Performance File System&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
Here we have an OS/2 for SMP v2.11 with HPFS386 hack -- on 16 CPU/Cores/Threads in VirtualBox 7.1.6 -- running GammaTech GTDISK utilities and seemingly saying (to IBM), &#039;&lt;em&gt;Look ma&#039;, my CPUs or Cores or Threads do not hang me!&lt;/em&gt;&#039; &lt;img src=&quot;https://metztli.blog/rsc/smilies/graylaugh.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#41;&amp;amp;#41;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#41;&amp;amp;#41;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt; &lt;br /&gt;
&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_9&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386.png?mtime=1744359156&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386.mp4?mtime=1744359155&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;
(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., &#039;Home&#039;, collection front page)&lt;/p&gt;

&lt;div align=&quot;center&quot;&gt;&lt;h3 class=&quot;evo_auto_anchor_header&quot; id=&quot;typical-os-2-for-smp-version-2-11-config-sys-installed-to-drive-h-retrofitted-with-hpfs386-file-system-multimedia-and-tcp-ip&quot;&gt;Typical OS/2 for SMP Version 2.11 CONFIG.SYS -- Installed to Drive H: -- Retrofitted with HPFS386 File System, MultiMedia, and TCP/IP&lt;/h3&gt;&lt;/div&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-for-SMP-v211_CONFIG_SYS.png?mtime=1748938538&quot; title=&quot;OS/2 for SMP Version 2.11 CONFIG.SYS (copied to a floppy and viewed via E editor in OS/2 Warp 3)&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1373&quot;&gt;&lt;img alt=&quot;OS/2 for SMP Version 2.11 CONFIG.SYS (copied to a floppy and viewed via E editor in OS/2 Warp 3)&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/OS2-for-SMP-v211_CONFIG_SYS.png/fit-400x320.png?mtime=1748938538&quot; width=&quot;185&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;OS/2 for SMP Version 2.11 CONFIG.SYS (copied to a floppy and viewed via E editor in OS/2 Warp 3)&lt;/div&gt;&lt;/div&gt;

&lt;h3 class=&quot;evo_auto_anchor_header&quot; id=&quot;here-is-some-rearranged-and-enhanced-code-of-a-non-real-life-example-to-prove-a-point1&quot;&gt;Here is some &lt;em&gt;rearranged&lt;/em&gt; and &lt;em&gt;enhanced&lt;/em&gt; code of &lt;em&gt;A non-real-life example to prove a point&lt;/em&gt;&lt;sup&gt;1&lt;/sup&gt;...&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Unlike the initial preliminary hard-coded &lt;em&gt;int&lt;/em&gt; 16 assigned to the variable &lt;em&gt;threads&lt;/em&gt;, as elaborated at &lt;a href=&quot;https://metztli.blog/nochtli/ahuiani-os-2-smp-v2-11-hpfs386-mmedia-tcp-ip&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;&lt;strong&gt;Ahuiani&lt;/strong&gt;: OS/2 for Symmetrical Multiprocessing(&lt;strong&gt;SMP&lt;/strong&gt;) v2.11 with HPFS386, MultiMedia, and TCP/IP stack.&lt;/em&gt;&lt;/a&gt;, this version does query/detect the number of threads, as the original author intended. Further, it will output the &lt;em&gt;int&lt;/em&gt; CPUs/COREs variable detected in OS/2.&lt;br /&gt;
&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_long&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;#define&amp;nbsp;INCL_DOSPROCESS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;#define&amp;nbsp;INCL_DOSMISC&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;#include&amp;nbsp;&amp;lt;os2.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;#include&amp;nbsp;&amp;lt;time.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;#ifndef&amp;nbsp;QSV_NUMPROCESSORS&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;/*The&amp;nbsp;QSV_NUMPROCESSORS&amp;nbsp;is&amp;nbsp;only&amp;nbsp;defined&amp;nbsp;in&amp;nbsp;the&amp;nbsp;SMP&amp;nbsp;toolkit,&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;nbsp;*and&amp;nbsp;since&amp;nbsp;the&amp;nbsp;SMP&amp;nbsp;toolkit&amp;nbsp;is&amp;nbsp;always&amp;nbsp;at&amp;nbsp;least&amp;nbsp;6&amp;nbsp;months&amp;nbsp;behind&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;nbsp;*the&amp;nbsp;normal&amp;nbsp;toolkit&amp;nbsp;you&amp;nbsp;will&amp;nbsp;probably&amp;nbsp;not&amp;nbsp;want&amp;nbsp;use&amp;nbsp;it.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;nbsp;*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;#define&amp;nbsp;QSV_NUMPROCESSORS&amp;nbsp;26&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;#endif&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;int&amp;nbsp;GetNumberOfCPUs&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;()&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;ULONG&amp;nbsp;CPUs&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;APIRET&amp;nbsp;rc&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CPUs&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;rc&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;DosQuerySysInfo&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;QSV_NUMPROCESSORS&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;QSV_NUMPROCESSORS&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;nbsp;&amp;amp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CPUs&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;&lt;a href=&quot;http://www.php.net/function.sizeof&quot; title=&quot; Read the PHP.net documentation for : sizeof() &quot; target=&quot;_blank&quot; class=&quot;codeblock_external_link&quot;&gt;sizeof&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CPUs&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;));&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_comment&quot;&gt;/*We&amp;nbsp;have&amp;nbsp;to&amp;nbsp;guard&amp;nbsp;against&amp;nbsp;running&amp;nbsp;under&amp;nbsp;a&amp;nbsp;non-SMP&amp;nbsp;OS/2&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&amp;nbsp;*that&amp;nbsp;does&amp;nbsp;not&amp;nbsp;support&amp;nbsp;index&amp;nbsp;26,&amp;nbsp;and&amp;nbsp;that&amp;nbsp;index&amp;nbsp;26&amp;nbsp;(as&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&amp;nbsp;*far&amp;nbsp;as&amp;nbsp;I&amp;nbsp;remember)&amp;nbsp;has&amp;nbsp;previously&amp;nbsp;been&amp;nbsp;used&amp;nbsp;for&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&amp;nbsp;*something&amp;nbsp;else&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&amp;nbsp;*/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;if(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;rc&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;!=&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;0&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;||&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CPUs&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;1&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;||&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CPUs&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CPUs&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;return&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CPUs&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;void&amp;nbsp;SpendTime&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;int&amp;nbsp;howmuch&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_comment&quot;&gt;//Use&amp;nbsp;some&amp;nbsp;CPU&amp;nbsp;time&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;//&amp;nbsp;-&amp;nbsp;and&amp;nbsp;beg&amp;nbsp;that&amp;nbsp;your&amp;nbsp;compiler&amp;nbsp;does&amp;nbsp;not&amp;nbsp;optimize&amp;nbsp;this&amp;nbsp;aways&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;int&amp;nbsp;x&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;for(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;int&amp;nbsp;i&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;howmuch&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;++)&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;x&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;+=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;void&amp;nbsp;APIENTRY&amp;nbsp;MyThread&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;ULONG&amp;nbsp;howmuch&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;SpendTime&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;((int)&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;howmuch&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;DosExit&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;EXIT_THREAD&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;int&amp;nbsp;main&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;void&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;)&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;TID&amp;nbsp;tid&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;64&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;];&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_comment&quot;&gt;//array&amp;nbsp;to&amp;nbsp;hold&amp;nbsp;the&amp;nbsp;TIDs&amp;nbsp;of&amp;nbsp;the&amp;nbsp;threads&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;int&amp;nbsp;threads&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;GetNumberOfCPUs&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;();&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_comment&quot;&gt;//how&amp;nbsp;many&amp;nbsp;threads&amp;nbsp;to&amp;nbsp;create&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;int&amp;nbsp;howmuch&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;1000000000&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_comment&quot;&gt;//&amp;nbsp;int&amp;nbsp;howmuch=1000000000000000000;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;int&amp;nbsp;t&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;clock_t&amp;nbsp;starttime&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;clock&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_comment&quot;&gt;//create&amp;nbsp;threads&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;for(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;threads&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;++)&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;DosCreateThread&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;tid&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;],&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;MyThread&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;ULONG&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;)(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;howmuch&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;threads&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CREATE_READY&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;STACK_COMMITTED&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;8192&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_comment&quot;&gt;//wait&amp;nbsp;for&amp;nbsp;the&amp;nbsp;threads&amp;nbsp;to&amp;nbsp;finish&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_comment&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;for(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;threads&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;++)&amp;nbsp;{&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;DosWaitThread&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&amp;amp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;tid&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;t&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;DCWW_WAIT&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;clock_t&amp;nbsp;endtime&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;clock&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;();&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;&lt;a href=&quot;http://www.php.net/function.printf&quot; title=&quot; Read the PHP.net documentation for : printf() &quot; target=&quot;_blank&quot; class=&quot;codeblock_external_link&quot;&gt;printf&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;amc_string&quot;&gt;&quot;CPUs/COREs&amp;nbsp;detected:&amp;nbsp;%d&quot;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;threads&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;&lt;a href=&quot;http://www.php.net/function.printf&quot; title=&quot; Read the PHP.net documentation for : printf() &quot; target=&quot;_blank&quot; class=&quot;codeblock_external_link&quot;&gt;printf&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;amc_string&quot;&gt;&quot;\nRunning&amp;nbsp;time:&amp;nbsp;%f&amp;nbsp;seconds\n&quot;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;,&amp;nbsp;((double)(&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;endtime&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;starttime&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;))/&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;CLK_TCK&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&amp;nbsp;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;&amp;#160;&amp;#160;return&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Example SMP_OME executable program &lt;a href=&quot;/media/blogs/Metztli-bits/OSOme_11-SMP/readOnly/OS211-SMP_OME.ZIP&quot; target=&quot;_blank&quot;&gt;OS211-SMP_OME.ZIP&lt;/a&gt; is available AS-IS, i.e., no explicit nor implicit warranties and whoever downloads it s/he/they do at their own discretion.&lt;/p&gt;

&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_10&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386MMPMTCPIP_detect-EXE-billion.jpg?mtime=1751739566&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386MMPMTCPIP_detect-EXE-billion.mp4?mtime=1751739566&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;
(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., &#039;Home&#039;, collection front page)&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;h3 class=&quot;evo_auto_anchor_header&quot; id=&quot;os-2-for-smp-version-2-11-with-hpfs386-hack-multimedia-and-tcp-ip-version-2-04-in-action&quot;&gt;OS/2 for SMP Version 2.11 with HPFS386 hack, MultiMedia, and TCP/IP Version 2.04 in Action!&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;After installing the TCP/IP v2.x stack and its &lt;em&gt;fixpak&lt;/em&gt; UN64092,&lt;br /&gt;
&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_11&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPMMPMinstallTCPIP.jpg?mtime=1752837409&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPMMPMinstallTCPIP.mp4?mtime=1752837408&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;
(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., &#039;Home&#039;, collection front page)&lt;/p&gt;

&lt;p&gt;OS/2 for SMP Version 2.11, with HPFS386 file system hack and multimedia, can still implement &lt;em&gt;The Network is the Computer&lt;/em&gt; protocols, as shown by pinging a couple of sites and -- provided we install the IBM WebExplorer v1.01 -- browsing a few still compatible sites.&lt;br /&gt;
&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_12&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS211SMPHPFS386TCPIPWebExplorer.jpg?mtime=1752768100&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS211SMPHPFS386TCPIPWebExplorer.mp4?mtime=1752768104&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;
(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;Open video in new tab&#039;, which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., &#039;Home&#039;, collection front page)&lt;/p&gt;
&lt;p&gt;---&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
NOTE: If you want to acquire this OS/2 2.11 SMP Bootable CD/ISO image hack, it comes in a bottle opener USB stick:&lt;br /&gt;
&lt;div class=&quot;image_block rounded&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-2-11-smp/metztli_it_usb-stick.webp?mtime=1761163671&quot; title=&quot;Metztli IT Bottle opener USB stick&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1483&quot;&gt;&lt;img alt=&quot;Metztli IT Bottle opener USB stick&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-2-11-smp/.evocache/metztli_it_usb-stick.webp/fit-400x320.webp?mtime=1761163671&quot; width=&quot;400&quot; height=&quot;260&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Metztli IT Bottle opener USB stick&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;and includes the IBM base OS/2 2.10 CDROM image on which the hack was &lt;em&gt;loosely&lt;/em&gt; based.&lt;br /&gt;
&lt;div class=&quot;image_block border rounded&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS21_CDROM.webp?mtime=1761079740&quot; title=&quot;IBM OS/2 2.10 CDROM original hard copy&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_1482&quot;&gt;&lt;img alt=&quot;IBM OS/2 2.10 CDROM original hard copy&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/OS21_CDROM.webp/fit-400x320.webp?mtime=1761079740&quot; width=&quot;311&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;IBM OS/2 2.10 CDROM original hard copy&lt;/div&gt;&lt;/div&gt;

&lt;hr /&gt;
&lt;p&gt;REFERENCES:&lt;br /&gt;
&lt;sup&gt;1&lt;/sup&gt; &lt;a href=&quot;http://www.edm2.com/0507/smp.html&quot; target=&quot;_blank&quot;&gt;EDM/2 SMP - Symmetrical Multiprocessing&lt;/a&gt;&lt;br /&gt;
&lt;div class=&quot;image_block noborder&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/os2_2.11-smp-at-metztli_it_.png?mtime=1649419855&quot; title=&quot;OS/2 2.11 SMP in VirtualBox 6.1.32&quot; rel=&quot;lightbox[p251]&quot; id=&quot;link_877&quot;&gt;&lt;img alt=&quot;OS/2 2.11 SMP in VirtualBox 6.1.32&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/os2_2.11-smp-at-metztli_it_.png/fit-400x320.png?mtime=1649419855&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;OS/2 2.11 SMP in VirtualBox 6.1.32&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;font color=&quot;#CC0000&quot;&gt;CAVEAT&lt;/font&gt;: I have seen some videos/statements out there where the OS2APIC.PSD is simply extracted from a higher version OS/2 for SMP and rammed in with an OS2KRNL with none or limited support for SMP, i.e., a two- CPU/Core OSKRNL with a Warp 3 server (&lt;em&gt;vanilla&lt;/em&gt; or Advanced), Warp 4, and/or WSeB, -donated OS2APIC.PSD being presented as an four(4) CPU/CORE SMP in a &lt;a href=&quot;https://youtu.be/PtwkTRh-kPM&quot; target=&quot;_blank&quot;&gt;YT video out there&lt;/a&gt; (hint &lt;img src=&quot;https://metztli.blog/rsc/smilies/icon_wink.gif&quot; title=&quot;&amp;amp;#59;&amp;amp;#41;&quot; alt=&quot;&amp;amp;#59;&amp;amp;#41;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt; . Well, yes, the pseudo- SMP OS/2 will experience frequent severe locks during execution. &lt;img src=&quot;https://metztli.blog/rsc/smilies/grayyes.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#121;&amp;amp;#101;&amp;amp;#115;&amp;amp;#58;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#121;&amp;amp;#101;&amp;amp;#115;&amp;amp;#58;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt; Yet, the narrator will blame those events on legacy OS/2 SMP &#039;&lt;em&gt;instability&lt;/em&gt;&#039; thus cloaking his/her technical deficiency instead of admitting that s/he is cheating -- making fraudulent claims to defame the legacy OS/2 technology! i.e., YT video fragment:&lt;br /&gt;
&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_13&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS211-pseudo-smp-OS2KRNL-freeze.png?mtime=1699519810&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS211-pseudo-smp-OS2KRNL-freeze.mp4?mtime=1699519809&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://metztli.blog/Metztli-bits/os-2-2-11-smp&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;https://metztli.it/b2evolution/&quot;&gt;Metztli b2evo for PHP 8&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>There was, still is, <em>something</em> appealing about OS/2 -- it was ahead of its time, <em>Warp</em> indeed -- <em>The Integrating Platform</em>.  I came across some relevant resources and created an OS/2 2.11 Bootable CDROM media for VirtualBox -- as I heard, <em>through the grapevine</em>, that it was <em>undoable</em>. <img src="https://metztli.blog/rsc/smilies/graylaugh.gif" title="&amp;#58;&amp;#41;&amp;#41;" alt="&amp;#58;&amp;#41;&amp;#41;" class="middle" width="15" height="15" /></p>

<p>Many moons ago, <em><strong>huehue Metztlapohualli</strong></em>, i.e., '<em>in the ancient month count</em>', OS/2 enabled me to learn Unix by utilizing the GNU/Linux utilities ported by OS/2 hackers. Accordingly, once IBM orphaned the OS/2 -- and the executives even balked at our multiple petitions to have the OS open sourced -- the transition to Linux was relatively painless. As a matter of fact, while creating this hack I had to bring my old ported GNU/Linux utilities, alternating between OS/2 2.0, 2.1x, and even Warp 3, environments so as to alleviate the shortcoming of 640x480 resolution.</p>

<p>Due to the scarcity of information, I usually operate by inductive reasoning. Notwithstanding, I came across the following 'nugget':<br />
<em>OS/2 has supported <em>SMP</em> for quite a while in special editions of OS/2. The first version was '<strong>OS/2 2.11 for Symmetrical Multiprocessing</strong>'...<br />
The diffences between the single-processor OS/2 and the SMP version are very small: 2 APIs for controlling the CPUs, an extra index for DosQuerySysInfo() and 4 APIs for dealing with spinlocks. I know that the 'SMP addendum' mentions a lot of other things, but they are server things, not SMP things.<br />
<br />
<strong>'OS/2 2.11 SMP' supports up to 16 processors</strong>,...</em><sup>1</sup></p>

<p>Yet my build of VirtualBox, from source, under a <em>Metztli Reiser4</em> Debian environment <del>can only go up to 8 processors/cores</del> and <img src="https://metztli.blog/rsc/smilies/grayno.gif" title="&amp;#58;&amp;#110;&amp;#111;&amp;#58;" alt="&amp;#58;&amp;#110;&amp;#111;&amp;#58;" class="middle" width="15" height="15" /> higher resolution than 640x480...</p>

<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_14" poster="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2.11-SMP.png?mtime=1649416694"><source src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2.11-SMP.mp4?mtime=1649414003" type="video/mp4" align="center" /></video></div>
(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., 'Home', collection front page)</p>

<p><ins>Update 12-18-2022</ins> : my personal development computing environment can only go up to eight(8) cores; however, I installed another Oracle VirtualBox 7.0.4 -- although 'headless' -- in one of my remote Metztli Reiser4 servers. I made use of VNC to make connection and although <a href="https://remmina.org/" target="_blank">Remmina</a> experience a buggy pointer (or mouse) I was able to bring up the SMP Monitor. I could not delay this event as it is not everyday that an OS/2 for Symmetrical Multiprocessing (SMP) Version 2.11 is seen running on 16 CPU/Cores!</p>

<div align="center"><h3 class="evo_auto_anchor_header" id="os-2-for-smp-version-2-11-remote-instance-accessed-via-vnc">OS/2 for SMP Version 2.11 remote instance accessed via VNC</h3></div>
<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_15" poster="https://metztli.blog/media/blogs/calli/OS2-2_11-SMP/OS2-2_11-SMP-16_CPUs.png?mtime=1671422986"><source src="https://metztli.blog/media/blogs/calli/OS2-2_11-SMP/OS2-2_11-SMP-16_CPUs.mp4?mtime=1671420942" type="video/mp4" align="center" /></video></div>
(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., 'Home', collection front page)<br />
<br /></p>
<div align="center"><h3 class="evo_auto_anchor_header" id="convert-from-2-1-base-video-into-3-0-base-video-in-order-to-take-advantage-of-the-monitor-configuration-feature-of-the-3-0-system-icon">CONVERT FROM 2.1 BASE VIDEO INTO 3.0 BASE VIDEO IN ORDER TO TAKE ADVANTAGE OF THE MONITOR CONFIGURATION FEATURE OF THE 3.0 SYSTEM ICON</h3></div>
<p>At our OS/2 2.1x CMD, executing the following:<br />
<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">\OS2\VCFGINST</span><span class="amc_keyword">.</span><span class="amc_default">EXE</span></span></code></td></tr></table></div><br />
the screen will momentarily blank; subsequently, shutting down and then rebooting our OS/2 2.1x then, opening the <em>Screen object</em> will show the current screen resolution enabled by the <em><strong>conversion</strong> into 3.0 Base Video</em>:<br />
<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_16" poster="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386MMPMTCPIP_VCFGINST_EXE.png?mtime=1745844189"><source src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386MMPMTCPIP_VCFGINST_EXE.mp4?mtime=1745844191" type="video/mp4" align="center" /></video></div>
(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., 'Home', collection front page)<br />
<br /><br />
"</p><div align="center"><h3 class="evo_auto_anchor_header" id="platform-specific-drivers-psds">Platform Specific Drivers (PSDs)</h3></div>
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/os2w3-view-os2v211-smp-psds.png?mtime=1671812464" title="View OS/2 for SMP v2.11 Reference" rel="lightbox[p251]" id="link_1005"><img alt="View OS/2 for SMP v2.11 Reference" src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/os2w3-view-os2v211-smp-psds.png/fit-320x320.png?mtime=1671812464" width="320" height="180" class="loadimg" /></a><div><i>View OS/2 for SMP v2.11 Reference</i></div></div>
<a href="https://hobbesarchive.com/?detail=/pub/os2/dev/info/books/OS2forSMP_2-11_1stEd.zip" target="_blank">OS/2 for SMP v2.11 Reference at Hobbes but requires OS/2 INF VIEW.EXE utility or 'INF READER'</a></p>

<p><br /><br />
<em>In OS/2 for SMP V2.11, all of the platform specific code has been removed from the operating system, and placed into a Platform Specific Driver. These drivers provide an abstraction layer for the underlying hardware by allowing the operating system to call generic functions to perform platform-specific operations without worrying about the actual hardware implementation. This allows OS/2 for SMP V2.11 to support new MP hardware platforms without modifying the operating system.<br />
<br />
PSDs are 32-bit flat DLLs specified in CONFIG.SYS by using the PSD= keyword, and must conform to the 8.3 file naming convention (e.g. PSD=<ins>TENOCHCA</ins>.PSD). They cannot contain either drive or path information because OS/2 cannot process such information at the stage of the startup sequence when the PSD statements are processed. The root directory of the startup partition is first searched for the specified file name, followed by the \OS2 directory of the startup partition. If drive or path information is included in a PSD statement, an error is generated.<br />
<br />
PSD parameters may be specified after the PSD's name, and may be a maximum of 1024 characters long. The parameter string is not interpreted or parsed by OS/2, but is passed verbatim as an ASCIIZ string when the PSD's Install function is invoked.<br />
<br />
If multiple PSD statements are encountered, OS/2 will load each PSD in the order listed in CONFIG.SYS, and call the PSD's install function. The first PSD which successfully installs will be the one OS/2 uses.<br />
<br />
PSD statements are processed before BASEDEV, IFS, and DEVICE statements."</em></p>
<div align="right"><a href="https://komh.github.io/os2books/smp/006_L1_PlatformSpecificDriv.html" target="_blank">KO Myung-Hun's Platform Specific Drivers (PSD)s online OS/2 for SMP Version 2.11</a></div>
<p><br /></p>

<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/os2w3-show-os2v211-smp-psds.png?mtime=1671808555" title="OS/2 UNPACK2 OS2APIC.PSD" rel="lightbox[p251]" id="link_1004"><img alt="OS/2 UNPACK2 OS2APIC.PSD" src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/os2w3-show-os2v211-smp-psds.png/fit-320x320.png?mtime=1671808555" width="320" height="180" class="loadimg" /></a><div><i>OS/2 UNPACK2 OS2APIC.PSD</i></div></div>

<p>->\OS2\INSTALL\CAVERUN.PSD<br />
->\OS2\INSTALL\OS2APIC.PSD<br />
->\OS2\INSTALL\VIPERMP.PSD<br />
->\OS2\INSTALL\EBI2.PSD<br />
->\OS2\INSTALL\TRICRD.PSD<br />
->\OS2\INSTALL\PROLIANT.PSD<br />
->\OS2\INSTALL\WYSE.PSD<br />
->\OS2\INSTALL\ALR.PSD</p>

<p>(The above are typical of middle of 1990's Compaq software bundle where OS/2 for SMP v2.11 was an option; notwithstanding, I believe that the maximum number of CPU/COREs supported was eight(8))<br />
<br /></p>
<div align="center"><h3 class="evo_auto_anchor_header" id="on-os-2-for-smp-version-2-11-executing-on-16-cpus-cores-in-virtualbox-we-can-install-hpfs386-file-system-hack">On OS/2 for SMP Version 2.11 Executing on 16 CPUs/Cores in VirtualBox We can Install HPFS386 File System Hack.</h3></div>
<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc2"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">\AHPFS386</span><span class="amc_keyword">.</span><span class="amc_default">CMD</span></span></code></td></tr></table></div><br />
<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_17" poster="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-for-SMP_v211-installing-HPFS386-hack.png?mtime=1748929190"><source src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-for-SMP_v211-installing-HPFS386-hack.mp4?mtime=1748929189" type="video/mp4" align="center" /></video></div>
(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., 'Home', collection front page)<br />
<br />
<p><em>Other Unix virtual file systems include the File System Switch in System V Release 3, the Generic File System in Ultrix, and the VFS in Linux. In OS/2 and Microsoft Windows, the virtual file system mechanism is called the <strong>Installable File System</strong></em>.</p>
<p><a href="https://en.wikipedia.org/wiki/Virtual_file_system" target="_blank">Wikipedia: Virtual File System</a><br />
<br /><br />
The Installable File System (IFS) is a filesystem API in MS-DOS/PC DOS 4.x, IBM OS/2 and Microsoft Windows that enables the operating system to recognize and load drivers for file systems.</p>
<p>...</p>

<p><em>The IFS provided a basic and powerful interface for programming filesystems. It was introduced in 1989 in OS/2 1.20, along with the HPFS filesystem.</em></p>

<p><em>Filesystem drivers executed in kernel-space (ring 0) and are divided in four principal pieces: microIFS, miniIFS, IFS, helpers.</em></p>

<p><em>Only the IFS and the filesystem code itself is required and it is loaded via an "<strong>IFS=</strong>" statement in the <strong>CONFIG.SYS</strong> file</em>:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-2-11-smp/ifs_config_sys.png?mtime=1749283961" title="Installable File System (IFS) statement in CONFIG.SYS" rel="lightbox[p251]" id="link_1376"><img alt="Installable File System (IFS) statement in CONFIG.SYS" src="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-2-11-smp/.evocache/ifs_config_sys.png/fit-320x320.png?mtime=1749283961" width="320" height="260" class="loadimg" /></a><div><i>Installable File System (IFS) statement in CONFIG.SYS</i></div></div>
<em><ins>[see full CONFIG.SYS sample file further below]</ins>. It is a NE 16-bit dynamically loaded library. No matter if it is a 32-bit OS/2 (2.0 and newer), the IFS is always 16-bit (although extraofficially you can make a 32-bit IFS).</em><br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_program.webp?mtime=1769994290" title="ZipStream, 32 bit IFS concatenated to end of CONFIG.SYS" rel="lightbox[p251]" id="link_1567"><img alt="ZipStream, 32 bit IFS concatenated to end of CONFIG.SYS" src="https://metztli.blog/htsrv/getfile.php/ZipStream_IFS_for-OS2_program.webp?root=collection_12&amp;path=OSOme_11-SMP%2FZipStream_IFS_for-OS2_program.webp&amp;mtime=1769994290&amp;size=fit-320x320" width="320" height="268" class="loadimg" /></a><div><i>ZipStream, 32 bit IFS concatenated to end of CONFIG.SYS</i></div></div>
<ins>(For instance,)</ins><br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_edge_.webp?mtime=1769958065" title="ZipStream, 32 bit IFS box edge" rel="lightbox[p251]" id="link_1563"><img alt="ZipStream, 32 bit IFS box edge" src="https://metztli.blog/htsrv/getfile.php/ZipStream_IFS_for-OS2_edge_.webp?root=collection_12&amp;path=OSOme_11-SMP%2FZipStream_IFS_for-OS2_edge_.webp&amp;mtime=1769958065&amp;size=fit-320x320" width="320" height="64" /></a><div><i>ZipStream, 32 bit IFS box edge</i></div></div>
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_diskette-media.webp?mtime=1769958066" title="ZipStream, 32 bit IFS diskette media" rel="lightbox[p251]" id="link_1564"><img alt="ZipStream, 32 bit IFS diskette media" src="https://metztli.blog/htsrv/getfile.php/ZipStream_IFS_for-OS2_diskette-media.webp?root=collection_12&amp;path=OSOme_11-SMP%2FZipStream_IFS_for-OS2_diskette-media.webp&amp;mtime=1769958066&amp;size=fit-320x320" width="320" height="312" class="loadimg" /></a><div><i>ZipStream, 32 bit IFS diskette media</i></div></div>
<br /></p>
<blockquote><p>ZipStream <del>is</del><ins>was</ins> an OS/2 2.x Installable File System (IFS) that mirrors access to existing OS/2 File Systems and simultaneously provides automatic, transparent file compression and decompression.<br />
...<br />
Its 32 bit implementation exploits OS/2's pre-emptive multi-threaded processing capabilities, allowing complex processing to be carried out in an optimum manner.</p></blockquote>
<table width="100%" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td valign="top">
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_front_.webp?mtime=1769958065" title="ZipStream, 32 bit IFS box front" rel="lightbox[p251]" id="link_1565"><img alt="ZipStream, 32 bit IFS box front" src="https://metztli.blog/htsrv/getfile.php/ZipStream_IFS_for-OS2_front_.webp?root=collection_12&amp;path=OSOme_11-SMP%2FZipStream_IFS_for-OS2_front_.webp&amp;mtime=1769958065&amp;size=fit-320x320" width="244" height="320" class="loadimg" /></a><div><i>ZipStream, 32 bit IFS box front</i></div></div>
</td>
<td valign="top">
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/ZipStream_IFS_for-OS2_back_.webp?mtime=1769958064" title="ZipStream, 32 bit IFS box back" rel="lightbox[p251]" id="link_1566"><img alt="ZipStream, 32 bit IFS box back" src="https://metztli.blog/htsrv/getfile.php/ZipStream_IFS_for-OS2_back_.webp?root=collection_12&amp;path=OSOme_11-SMP%2FZipStream_IFS_for-OS2_back_.webp&amp;mtime=1769958064&amp;size=fit-320x320" width="230" height="320" class="loadimg" /></a><div><i>ZipStream, 32 bit IFS box back</i></div></div>
</td>
</tr>
</tbody>
</table>
<p><br /><br />
<em>The microIFS is a piece of code that loads in memory the kernel and the miniIFS and jumps to kernel execution. It is usually in the boot portion of the filesystem.</em><br />
i.e.,</p>
<blockquote><p>'Big Blue'... could mak<ins>e</ins> a minimum investment in virtualizing the OS/2 boot procedure with the Kernel-based Virtual Machine (KVM) Linux virtualization technology used extensively by Red Hat -- IBM's latest acquisition!</p></blockquote>
<p><a href="https://metztli.blog/nochtli/smp-hpfs386" target="_blank"> Tlacatecolotl: OS/2 for Symmetrical Multiprocessing(SMP) v2.11 HPFS386 on Headless VirtualBox 7.0.12</a></p>

<p><a href="https://en.wikipedia.org/wiki/Installable_File_System" target="_blank">Wikipedia: Installable File System</a><br />
<br /><br />
<ins>For OS/2</ins> two kinds of IFS drivers <ins>were available for HPFS</ins> file system:</p>
<ul>
<li><em>The standard one with a cache limited to 2 MB</em></li>
<li><em>HPFS386 provided with certain server versions of OS/2, or as added component for the server versions that did not come with it.</em></li>
</ul>
<p><br /></p>
<p><em>HPFS386's cache is limited by the amount of available memory in OS/2's system memory arena[1] and was implemented in 32-bit assembly language. HPFS386 is a ring 0 driver (allowing direct hardware access and direct interaction with the kernel) with built-in SMB networking properties that are usable by various server daemons, whereas HPFS is a ring 3 driver. Thus, HPFS386 is faster than HPFS and highly optimized for server applications. It is also highly tunable by experienced administrators</em>.</p>
<p><a href="https://en.wikipedia.org/wiki/High_Performance_File_System" target="_blank">Wikipedia: High Performance File System</a></p>

<p><br /><br />
Here we have an OS/2 for SMP v2.11 with HPFS386 hack -- on 16 CPU/Cores/Threads in VirtualBox 7.1.6 -- running GammaTech GTDISK utilities and seemingly saying (to IBM), '<em>Look ma', my CPUs or Cores or Threads do not hang me!</em>' <img src="https://metztli.blog/rsc/smilies/graylaugh.gif" title="&amp;#58;&amp;#41;&amp;#41;" alt="&amp;#58;&amp;#41;&amp;#41;" class="middle" width="15" height="15" /> <br />
<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_18" poster="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386.png?mtime=1744359156"><source src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386.mp4?mtime=1744359155" type="video/mp4" align="center" /></video></div>
(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., 'Home', collection front page)</p>

<div align="center"><h3 class="evo_auto_anchor_header" id="typical-os-2-for-smp-version-2-11-config-sys-installed-to-drive-h-retrofitted-with-hpfs386-file-system-multimedia-and-tcp-ip">Typical OS/2 for SMP Version 2.11 CONFIG.SYS -- Installed to Drive H: -- Retrofitted with HPFS386 File System, MultiMedia, and TCP/IP</h3></div>
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2-for-SMP-v211_CONFIG_SYS.png?mtime=1748938538" title="OS/2 for SMP Version 2.11 CONFIG.SYS (copied to a floppy and viewed via E editor in OS/2 Warp 3)" rel="lightbox[p251]" id="link_1373"><img alt="OS/2 for SMP Version 2.11 CONFIG.SYS (copied to a floppy and viewed via E editor in OS/2 Warp 3)" src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/OS2-for-SMP-v211_CONFIG_SYS.png/fit-320x320.png?mtime=1748938538" width="185" height="320" class="loadimg" /></a><div><i>OS/2 for SMP Version 2.11 CONFIG.SYS (copied to a floppy and viewed via E editor in OS/2 Warp 3)</i></div></div>

<h3 class="evo_auto_anchor_header" id="here-is-some-rearranged-and-enhanced-code-of-a-non-real-life-example-to-prove-a-point1">Here is some <em>rearranged</em> and <em>enhanced</em> code of <em>A non-real-life example to prove a point</em><sup>1</sup>...</h3>
<p></p>
<p>Unlike the initial preliminary hard-coded <em>int</em> 16 assigned to the variable <em>threads</em>, as elaborated at <a href="https://metztli.blog/nochtli/ahuiani-os-2-smp-v2-11-hpfs386-mmedia-tcp-ip" target="_blank"><em><strong>Ahuiani</strong>: OS/2 for Symmetrical Multiprocessing(<strong>SMP</strong>) v2.11 with HPFS386, MultiMedia, and TCP/IP stack.</em></a>, this version does query/detect the number of threads, as the original author intended. Further, it will output the <em>int</em> CPUs/COREs variable detected in OS/2.<br />
<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_long"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">#define&nbsp;INCL_DOSPROCESS</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc4"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">#define&nbsp;INCL_DOSMISC</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">#include&nbsp;&lt;os2.h&gt;</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc6"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">#include&nbsp;&lt;stdio.h&gt;</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">#include&nbsp;&lt;time.h&gt;</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc8"></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">#ifndef&nbsp;QSV_NUMPROCESSORS</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">/*The&nbsp;QSV_NUMPROCESSORS&nbsp;is&nbsp;only&nbsp;defined&nbsp;in&nbsp;the&nbsp;SMP&nbsp;toolkit,</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&nbsp;*and&nbsp;since&nbsp;the&nbsp;SMP&nbsp;toolkit&nbsp;is&nbsp;always&nbsp;at&nbsp;least&nbsp;6&nbsp;months&nbsp;behind</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&nbsp;*the&nbsp;normal&nbsp;toolkit&nbsp;you&nbsp;will&nbsp;probably&nbsp;not&nbsp;want&nbsp;use&nbsp;it.</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&nbsp;*/</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">#define&nbsp;QSV_NUMPROCESSORS&nbsp;26</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">#endif</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc1"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">int&nbsp;GetNumberOfCPUs</span><span class="amc_keyword">()&nbsp;{</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default">ULONG&nbsp;CPUs</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default">APIRET&nbsp;rc</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default">CPUs&nbsp;</span><span class="amc_keyword">=&nbsp;</span><span class="amc_default">0</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default">rc&nbsp;</span><span class="amc_keyword">=&nbsp;</span><span class="amc_default">DosQuerySysInfo</span><span class="amc_keyword">(</span><span class="amc_default">QSV_NUMPROCESSORS</span><span class="amc_keyword">,</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;</span><span class="amc_default">QSV_NUMPROCESSORS</span><span class="amc_keyword">,</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;&amp;</span><span class="amc_default">CPUs</span><span class="amc_keyword">,</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;</span><span class="amc_default"><a href="http://www.php.net/function.sizeof" title=" Read the PHP.net documentation for : sizeof() " target="_blank" class="codeblock_external_link">sizeof</a></span><span class="amc_keyword">(</span><span class="amc_default">CPUs</span><span class="amc_keyword">));</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_comment">/*We&nbsp;have&nbsp;to&nbsp;guard&nbsp;against&nbsp;running&nbsp;under&nbsp;a&nbsp;non-SMP&nbsp;OS/2</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;&nbsp;*that&nbsp;does&nbsp;not&nbsp;support&nbsp;index&nbsp;26,&nbsp;and&nbsp;that&nbsp;index&nbsp;26&nbsp;(as</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;&nbsp;*far&nbsp;as&nbsp;I&nbsp;remember)&nbsp;has&nbsp;previously&nbsp;been&nbsp;used&nbsp;for</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;&nbsp;*something&nbsp;else</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;&nbsp;*/</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc3"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc3"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;</span><span class="amc_keyword">if(</span><span class="amc_default">rc</span><span class="amc_keyword">!=</span><span class="amc_default">0&nbsp;</span><span class="amc_keyword">||&nbsp;</span><span class="amc_default">CPUs</span><span class="amc_keyword">&lt;</span><span class="amc_default">1&nbsp;</span><span class="amc_keyword">||&nbsp;</span><span class="amc_default">CPUs</span><span class="amc_keyword">&gt;</span><span class="amc_default">64</span><span class="amc_keyword">)</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc3"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;</span><span class="amc_default">CPUs&nbsp;</span><span class="amc_keyword">=&nbsp;</span><span class="amc_default">1</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc3"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;return&nbsp;</span><span class="amc_default">CPUs</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc3"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc3"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">}</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc3"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc3"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">void&nbsp;SpendTime</span><span class="amc_keyword">(</span><span class="amc_default">int&nbsp;howmuch</span><span class="amc_keyword">)&nbsp;{</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc3"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_comment">//Use&nbsp;some&nbsp;CPU&nbsp;time</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc3"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;//&nbsp;-&nbsp;and&nbsp;beg&nbsp;that&nbsp;your&nbsp;compiler&nbsp;does&nbsp;not&nbsp;optimize&nbsp;this&nbsp;aways</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc4"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;</span><span class="amc_default">int&nbsp;x</span><span class="amc_keyword">=</span><span class="amc_default">0</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc4"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;for(</span><span class="amc_default">int&nbsp;i</span><span class="amc_keyword">=</span><span class="amc_default">0</span><span class="amc_keyword">;&nbsp;</span><span class="amc_default">i</span><span class="amc_keyword">&lt;</span><span class="amc_default">howmuch</span><span class="amc_keyword">;&nbsp;</span><span class="amc_default">i</span><span class="amc_keyword">++)&nbsp;{</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc4"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;</span><span class="amc_default">x&nbsp;</span><span class="amc_keyword">+=&nbsp;</span><span class="amc_default">2</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc4"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;}</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc4"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">}</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc4"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc4"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">void&nbsp;APIENTRY&nbsp;MyThread</span><span class="amc_keyword">(</span><span class="amc_default">ULONG&nbsp;howmuch</span><span class="amc_keyword">)&nbsp;{</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc4"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default">SpendTime</span><span class="amc_keyword">((int)</span><span class="amc_default">howmuch</span><span class="amc_keyword">);</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc4"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default">DosExit</span><span class="amc_keyword">(</span><span class="amc_default">EXIT_THREAD</span><span class="amc_keyword">,</span><span class="amc_default">0</span><span class="amc_keyword">);</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc4"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">}</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc5"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc5"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc5"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">int&nbsp;main</span><span class="amc_keyword">(</span><span class="amc_default">void</span><span class="amc_keyword">)&nbsp;{</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc5"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default">TID&nbsp;tid</span><span class="amc_keyword">[</span><span class="amc_default">64</span><span class="amc_keyword">];&nbsp;</span><span class="amc_comment">//array&nbsp;to&nbsp;hold&nbsp;the&nbsp;TIDs&nbsp;of&nbsp;the&nbsp;threads</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc5"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;</span><span class="amc_default">int&nbsp;threads</span><span class="amc_keyword">=</span><span class="amc_default">GetNumberOfCPUs</span><span class="amc_keyword">();&nbsp;</span><span class="amc_comment">//how&nbsp;many&nbsp;threads&nbsp;to&nbsp;create</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc5"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;&#160;&#160;</span><span class="amc_default">int&nbsp;howmuch</span><span class="amc_keyword">=</span><span class="amc_default">1000000000</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc5"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_comment">//&nbsp;int&nbsp;howmuch=1000000000000000000;</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc5"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;</span><span class="amc_default">int&nbsp;t</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc5"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc5"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default">clock_t&nbsp;starttime</span><span class="amc_keyword">=</span><span class="amc_default">clock</span><span class="amc_keyword">();</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc6"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc6"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_comment">//create&nbsp;threads</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc6"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;</span><span class="amc_keyword">for(</span><span class="amc_default">t</span><span class="amc_keyword">=</span><span class="amc_default">0</span><span class="amc_keyword">;&nbsp;</span><span class="amc_default">t</span><span class="amc_keyword">&lt;</span><span class="amc_default">threads</span><span class="amc_keyword">;&nbsp;</span><span class="amc_default">t</span><span class="amc_keyword">++)&nbsp;{</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc6"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;</span><span class="amc_default">DosCreateThread</span><span class="amc_keyword">(&amp;</span><span class="amc_default">tid</span><span class="amc_keyword">[</span><span class="amc_default">t</span><span class="amc_keyword">],</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc6"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span class="amc_default">MyThread</span><span class="amc_keyword">,</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc6"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;(</span><span class="amc_default">ULONG</span><span class="amc_keyword">)(</span><span class="amc_default">howmuch</span><span class="amc_keyword">/</span><span class="amc_default">threads</span><span class="amc_keyword">),</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc6"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span class="amc_default">CREATE_READY</span><span class="amc_keyword">|</span><span class="amc_default">STACK_COMMITTED</span><span class="amc_keyword">,</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc6"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span class="amc_default">8192</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc6"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&nbsp;</span><span class="amc_keyword">);</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc6"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;}</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc7"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc7"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_comment">//wait&nbsp;for&nbsp;the&nbsp;threads&nbsp;to&nbsp;finish</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc7"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_comment">&#160;&#160;</span><span class="amc_keyword">for(</span><span class="amc_default">t</span><span class="amc_keyword">=</span><span class="amc_default">0</span><span class="amc_keyword">;&nbsp;</span><span class="amc_default">t</span><span class="amc_keyword">&lt;</span><span class="amc_default">threads</span><span class="amc_keyword">;&nbsp;</span><span class="amc_default">t</span><span class="amc_keyword">++)&nbsp;{</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"><div class="amc7"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;&#160;&#160;</span><span class="amc_default">DosWaitThread</span><span class="amc_keyword">(&amp;</span><span class="amc_default">tid</span><span class="amc_keyword">[</span><span class="amc_default">t</span><span class="amc_keyword">],</span><span class="amc_default">DCWW_WAIT</span><span class="amc_keyword">);</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc4"><div class="amc7"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;}</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc7"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc6"><div class="amc7"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default">clock_t&nbsp;endtime</span><span class="amc_keyword">=</span><span class="amc_default">clock</span><span class="amc_keyword">();</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc7"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&nbsp;</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc8"><div class="amc7"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default"><a href="http://www.php.net/function.printf" title=" Read the PHP.net documentation for : printf() " target="_blank" class="codeblock_external_link">printf</a></span><span class="amc_keyword">(</span><span class="amc_string">"CPUs/COREs&nbsp;detected:&nbsp;%d"</span><span class="amc_keyword">,&nbsp;</span><span class="amc_default">threads</span><span class="amc_keyword">);</span></span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc7"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;</span><span class="amc_default"><a href="http://www.php.net/function.printf" title=" Read the PHP.net documentation for : printf() " target="_blank" class="codeblock_external_link">printf</a></span><span class="amc_keyword">(</span><span class="amc_string">"\nRunning&nbsp;time:&nbsp;%f&nbsp;seconds\n"</span><span class="amc_keyword">,&nbsp;((double)(</span><span class="amc_default">endtime</span><span class="amc_keyword">-</span><span class="amc_default">starttime</span><span class="amc_keyword">))/</span><span class="amc_default">CLK_TCK</span><span class="amc_keyword">);</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc8"></div></div></td><td><code class="codeblock">&nbsp;</code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc8"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">&#160;&#160;return&nbsp;</span><span class="amc_default">0</span><span class="amc_keyword">;</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc2"><div class="amc8"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">}</span></span></code></td></tr></table></div><br />
<br /><br />
Example SMP_OME executable program <a href="/media/blogs/Metztli-bits/OSOme_11-SMP/readOnly/OS211-SMP_OME.ZIP" target="_blank">OS211-SMP_OME.ZIP</a> is available AS-IS, i.e., no explicit nor implicit warranties and whoever downloads it s/he/they do at their own discretion.</p>

<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_19" poster="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386MMPMTCPIP_detect-EXE-billion.jpg?mtime=1751739566"><source src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPHPFS386MMPMTCPIP_detect-EXE-billion.mp4?mtime=1751739566" type="video/mp4" align="center" /></video></div>
(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., 'Home', collection front page)<br />
<br /></p>
<h3 class="evo_auto_anchor_header" id="os-2-for-smp-version-2-11-with-hpfs386-hack-multimedia-and-tcp-ip-version-2-04-in-action">OS/2 for SMP Version 2.11 with HPFS386 hack, MultiMedia, and TCP/IP Version 2.04 in Action!</h3>
<p></p>
<p>After installing the TCP/IP v2.x stack and its <em>fixpak</em> UN64092,<br />
<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_20" poster="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPMMPMinstallTCPIP.jpg?mtime=1752837409"><source src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS2v211SMPMMPMinstallTCPIP.mp4?mtime=1752837408" type="video/mp4" align="center" /></video></div>
(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., 'Home', collection front page)</p>

<p>OS/2 for SMP Version 2.11, with HPFS386 file system hack and multimedia, can still implement <em>The Network is the Computer</em> protocols, as shown by pinging a couple of sites and -- provided we install the IBM WebExplorer v1.01 -- browsing a few still compatible sites.<br />
<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_21" poster="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS211SMPHPFS386TCPIPWebExplorer.jpg?mtime=1752768100"><source src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS211SMPHPFS386TCPIPWebExplorer.mp4?mtime=1752768104" type="video/mp4" align="center" /></video></div>
(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, 'Open video in new tab', which will enable larger screen size. Alternatively, the video with larger screen size may be shown in the Calli, i.e., 'Home', collection front page)</p>
<p>---</p>
<p><br /><br />
NOTE: If you want to acquire this OS/2 2.11 SMP Bootable CD/ISO image hack, it comes in a bottle opener USB stick:<br />
<div class="rounded"><a href="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-2-11-smp/metztli_it_usb-stick.webp?mtime=1761163671" title="Metztli IT Bottle opener USB stick" rel="lightbox[p251]" id="link_1483"><img alt="Metztli IT Bottle opener USB stick" src="https://metztli.blog/htsrv/getfile.php/metztli_it_usb-stick.webp?root=collection_12&amp;path=quick-uploads%2Fos-2-2-11-smp%2Fmetztli_it_usb-stick.webp&amp;mtime=1761163671&amp;size=fit-320x320" width="320" height="208" class="loadimg" /></a><div><i>Metztli IT Bottle opener USB stick</i></div></div>

<p>and includes the IBM base OS/2 2.10 CDROM image on which the hack was <em>loosely</em> based.<br />
<div class="border rounded"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS21_CDROM.webp?mtime=1761079740" title="IBM OS/2 2.10 CDROM original hard copy" rel="lightbox[p251]" id="link_1482"><img alt="IBM OS/2 2.10 CDROM original hard copy" src="https://metztli.blog/htsrv/getfile.php/OS21_CDROM.webp?root=collection_12&amp;path=OSOme_11-SMP%2FOS21_CDROM.webp&amp;mtime=1761079740&amp;size=fit-320x320" width="311" height="320" class="loadimg" /></a><div><i>IBM OS/2 2.10 CDROM original hard copy</i></div></div>

<hr />
<p>REFERENCES:<br />
<sup>1</sup> <a href="http://www.edm2.com/0507/smp.html" target="_blank">EDM/2 SMP - Symmetrical Multiprocessing</a><br />
<div class="noborder"><a href="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/os2_2.11-smp-at-metztli_it_.png?mtime=1649419855" title="OS/2 2.11 SMP in VirtualBox 6.1.32" rel="lightbox[p251]" id="link_877"><img alt="OS/2 2.11 SMP in VirtualBox 6.1.32" src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/.evocache/os2_2.11-smp-at-metztli_it_.png/fit-320x320.png?mtime=1649419855" width="400" height="225" class="loadimg" /></a><div><i>OS/2 2.11 SMP in VirtualBox 6.1.32</i></div></div>

<p><font color="#CC0000">CAVEAT</font>: I have seen some videos/statements out there where the OS2APIC.PSD is simply extracted from a higher version OS/2 for SMP and rammed in with an OS2KRNL with none or limited support for SMP, i.e., a two- CPU/Core OSKRNL with a Warp 3 server (<em>vanilla</em> or Advanced), Warp 4, and/or WSeB, -donated OS2APIC.PSD being presented as an four(4) CPU/CORE SMP in a <a href="https://youtu.be/PtwkTRh-kPM" target="_blank">YT video out there</a> (hint <img src="https://metztli.blog/rsc/smilies/icon_wink.gif" title="&amp;#59;&amp;#41;" alt="&amp;#59;&amp;#41;" class="middle" width="15" height="15" /> . Well, yes, the pseudo- SMP OS/2 will experience frequent severe locks during execution. <img src="https://metztli.blog/rsc/smilies/grayyes.gif" title="&amp;#58;&amp;#121;&amp;#101;&amp;#115;&amp;#58;" alt="&amp;#58;&amp;#121;&amp;#101;&amp;#115;&amp;#58;" class="middle" width="15" height="15" /> Yet, the narrator will blame those events on legacy OS/2 SMP '<em>instability</em>' thus cloaking his/her technical deficiency instead of admitting that s/he is cheating -- making fraudulent claims to defame the legacy OS/2 technology! i.e., YT video fragment:<br />
<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_22" poster="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS211-pseudo-smp-OS2KRNL-freeze.png?mtime=1699519810"><source src="https://metztli.blog/media/blogs/Metztli-bits/OSOme_11-SMP/OS211-pseudo-smp-OS2KRNL-freeze.mp4?mtime=1699519809" type="video/mp4" align="center" /></video></div><div class="item_footer"><p><small><a href="https://metztli.blog/Metztli-bits/os-2-2-11-smp">Original post</a> blogged on <a href="https://metztli.it/b2evolution/">Metztli b2evo for PHP 8</a>.</small></p></div>]]></content:encoded>
								<comments>https://metztli.blog/Metztli-bits/os-2-2-11-smp#comments</comments>
			<wfw:commentRss>https://metztli.blog/Metztli-bits/?tempskin=_rss2&#38;disp=comments&#38;p=251</wfw:commentRss>
		</item>
				<item>
			<title>Ольга Пронина (Monika9422) её видео</title>
			<link>https://metztli.blog/Metztli-bits/olga</link>
			<pubDate>Fri, 17 Dec 2021 07:43:00 +0000</pubDate>			<dc:creator>Jose</dc:creator>
			<category domain="main">media creation</category>			<guid isPermaLink="false">241@https://metztli.blog/</guid>
						<description>&lt;h4 class=&quot;evo_auto_anchor_header&quot; id=&quot;one-of-the-biggest-advantages-of-my-hobby-is-that-a-motorbike-disciplines-you-thanks-to-him-i-m-in-perfect-physical-shape-because-motorbikes-are-not-for-weak-women-olga-spoke-in-her-blog-of-her-motorbike-as-if-it-was-a-person1&quot;&gt;&#039;One of the biggest advantages of my hobby is that a motorbike disciplines you. Thanks to him, I&#039;m in perfect physical shape because motorbikes are not for weak women.&#039;~ Olga spoke in her blog of her motorbike as if it was a person&lt;sup&gt;1&lt;/sup&gt;&lt;/h4&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
Subsequent her tragic death, I had posted her video to one of fascist &#039;Murika&#039;s censorship...er, &#039;social,&#039; media platforms. Recently, however, I came across it in my local storage media and... well, here it is:&lt;br /&gt;
&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_23&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/Monika9422/Ольга_Пронина.png?mtime=1639722230&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Monika9422/Ольга_Пронина.mp4?mtime=1639722233&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;

&lt;hr /&gt;
&lt;p&gt;References:&lt;br /&gt;
&lt;sup&gt;1&lt;/sup&gt; &lt;a href=&quot;https://siberiantimes.com/other/others/news/queen-of-bikers-killed-in-horrific-crash-leaving-her-teenage-daughter-motherless/&quot; target=&quot;_blank&quot;&gt;Queen of bikers killed in horrific crash leaving her teenage daughter motherless&lt;/a&gt;&lt;br /&gt;
&lt;img alt=&quot;Ольга Пронина &quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Monika9422/.evocache/Monika9422.png/fit-400x320.png?mtime=1639728264&quot; width=&quot;320&quot; height=&quot;320&quot; class=&quot;Olga Pronina loadimg&quot; /&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://metztli.blog/Metztli-bits/olga&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;https://metztli.it/b2evolution/&quot;&gt;Metztli b2evo for PHP 8&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<h4 class="evo_auto_anchor_header" id="one-of-the-biggest-advantages-of-my-hobby-is-that-a-motorbike-disciplines-you-thanks-to-him-i-m-in-perfect-physical-shape-because-motorbikes-are-not-for-weak-women-olga-spoke-in-her-blog-of-her-motorbike-as-if-it-was-a-person1">'One of the biggest advantages of my hobby is that a motorbike disciplines you. Thanks to him, I'm in perfect physical shape because motorbikes are not for weak women.'~ Olga spoke in her blog of her motorbike as if it was a person<sup>1</sup></h4>
<p><br /><br />
Subsequent her tragic death, I had posted her video to one of fascist 'Murika's censorship...er, 'social,' media platforms. Recently, however, I came across it in my local storage media and... well, here it is:<br />
<div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_24" poster="https://metztli.blog/media/blogs/Metztli-bits/Monika9422/Ольга_Пронина.png?mtime=1639722230"><source src="https://metztli.blog/media/blogs/Metztli-bits/Monika9422/Ольга_Пронина.mp4?mtime=1639722233" type="video/mp4" align="center" /></video></div>

<hr />
<p>References:<br />
<sup>1</sup> <a href="https://siberiantimes.com/other/others/news/queen-of-bikers-killed-in-horrific-crash-leaving-her-teenage-daughter-motherless/" target="_blank">Queen of bikers killed in horrific crash leaving her teenage daughter motherless</a><br />
<img alt="Ольга Пронина " src="https://metztli.blog/media/blogs/Metztli-bits/Monika9422/.evocache/Monika9422.png/fit-320x320.png?mtime=1639728264" width="80" height="80" class="Olga Pronina loadimg" /></p><div class="item_footer"><p><small><a href="https://metztli.blog/Metztli-bits/olga">Original post</a> blogged on <a href="https://metztli.it/b2evolution/">Metztli b2evo for PHP 8</a>.</small></p></div>]]></content:encoded>
								<comments>https://metztli.blog/Metztli-bits/olga#comments</comments>
			<wfw:commentRss>https://metztli.blog/Metztli-bits/?tempskin=_rss2&#38;disp=comments&#38;p=241</wfw:commentRss>
		</item>
				<item>
			<title>Hacking an OS/2 2.1 Floppy Set or CDROM Into a Bootable CDROM Media / ISO Image</title>
			<link>https://metztli.blog/Metztli-bits/os-2-x</link>
			<pubDate>Tue, 04 May 2021 10:49:00 +0000</pubDate>			<dc:creator>Jose</dc:creator>
			<category domain="alt">media creation</category>
<category domain="main">OS/2</category>			<guid isPermaLink="false">232@https://metztli.blog/</guid>
						<description>&lt;div&gt;&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_25&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/OS2-Chiucomoztoc.png?mtime=1620118847&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/OS2-Chiucomoztoc.mp4?mtime=1620112391&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;(Once the video player has started, right selecting (or &#039;clicking&#039;) your device (or &#039;mouse&#039;) will show menu option, &#039;&lt;em&gt;Open video in new tab&lt;/em&gt;&#039;, which will enable larger screen size. Alternatively, the video with larger screen size is shown in the Calli collection front page)&lt;/p&gt;
&lt;hr /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
Although &lt;em&gt;IBM OS/2 3.x Warp&lt;/em&gt; and higher &lt;em&gt;in&lt;strong&gt;digitalizations&lt;/strong&gt;&lt;/em&gt; have been hacked into bootable CDROM media / ISO images, I believe this is the first OS/2 2.x which has been morphed into such an unique entity. The procedure was not easy -- and obviously not intuitive. The work required to make the cdboot hack complete the first phase of the OS/2 2.1 installation was substantial; and once I achieved it I thought that whatever else needed to be done would be easier. I was mistaken. I had to compile an utility to search for and replace strings in the OS/2 2.1 CONFIG.SYS file at the end of the first phase of the OS/2 installation. Fact is, I could not find an appropriate binary one which executed under OS/2 2.1x in my extensive local collection of &lt;em&gt;Hobbes&lt;/em&gt; CDROM media, etc., nor online at &lt;del&gt;Hobbes site&lt;/del&gt; &lt;img src=&quot;https://metztli.blog/rsc/smilies/graydead.gif&quot; title=&quot;&amp;amp;#88;&amp;amp;#88;&amp;amp;#40;&quot; alt=&quot;&amp;amp;#88;&amp;amp;#88;&amp;amp;#40;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt; &lt;ins&gt;sun set&lt;/ins&gt; and/or elsewhere.&lt;/p&gt;

&lt;p&gt;At the time I used the IBM C/C++ Tools 2.01:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_ICC.png?mtime=1745704003&quot; title=&quot;IBM C/C++ Tools 2.0.1 containing ICC executable&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_1345&quot;&gt;&lt;img alt=&quot;IBM C/C++ Tools 2.0.1 containing ICC executable&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_ICC.png/fit-400x320.png?mtime=1745704003&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;IBM C/C++ Tools 2.0.1 containing ICC executable&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;to build the STRRPL.EXE utility which source code was freely available:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_ICC-success.png?mtime=1745703981&quot; title=&quot;Build of STRRPL.C into binary executable&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_1346&quot;&gt;&lt;img alt=&quot;Build of STRRPL.C into binary executable&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_ICC-success.png/fit-400x320.png?mtime=1745703981&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Build of STRRPL.C into binary executable&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Unlike prebuilt STRRPL.EXE binary from &lt;a href=&quot;https://hobbesarchive.com/Home/Download?path=/Hobbes/pub/os2/util/file/strrpl_0-84r2.zip&quot; target=&quot;_blank&quot;&gt;strrpl_0-84r2.zip available from Hobbes static archive&lt;/a&gt;, and elsewhere,&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_non-ICC-binary-STRRPL-fail.png?mtime=1745781817&quot; title=&quot;Prebuilt STRRPL.EXE from Hobbes fails under OS/2 v2.x&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_1348&quot;&gt;&lt;img alt=&quot;Prebuilt STRRPL.EXE from Hobbes fails under OS/2 v2.x&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_non-ICC-binary-STRRPL-fail.png/fit-400x320.png?mtime=1745781817&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Prebuilt STRRPL.EXE from Hobbes fails under OS/2 v2.x&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;my build of STRRPL.EXE with IBM C/C++ Tools 2.01 actually executed under OS/2 2.1x:&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_ICC-build-strrpl.png?mtime=1745703994&quot; title=&quot;IBM C/C++ build of STRRPL.EXE binary executes under OS/2 2.1x&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_1347&quot;&gt;&lt;img alt=&quot;IBM C/C++ build of STRRPL.EXE binary executes under OS/2 2.1x&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_ICC-build-strrpl.png/fit-400x320.png?mtime=1745703994&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;IBM C/C++ build of STRRPL.EXE binary executes under OS/2 2.1x&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Accordingly, I repackaged the original strrpl_0-84r2.zip as &lt;a href=&quot;/media/blogs/Metztli-bits/OS2-ce/strrpl_0-84r2m.zip?mtime=1745785841&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;strrpl_0-84r2&lt;strong&gt;m&lt;/strong&gt;&lt;/em&gt;.zip&lt;/a&gt; and under OS2v21/ directory included the binary executable strrpl.exe which does function properly under OS/2 v2.x&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_pkzip_strrpl_0-84r2m.png?mtime=1745785843&quot; title=&quot;strrpl_0-84r2m.zip with OS2v21\strrpl.exe&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_1349&quot;&gt;&lt;img alt=&quot;strrpl_0-84r2m.zip with OS2v21\strrpl.exe&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_pkzip_strrpl_0-84r2m.png/fit-400x320.png?mtime=1745785843&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;strrpl_0-84r2m.zip with OS2v21\strrpl.exe&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Had IBM released the OS/2 code as free and/or open source software (&lt;em&gt;FOSS&lt;/em&gt;) instead of being so indifferent to the multiple petitions to do so (for instance those in which I personally took part at &lt;a href=&quot;https://www.os2world.com/&quot; target=&quot;_blank&quot;&gt;the OS2World site&lt;/a&gt; before I left the site for good -- as I had moved on to GNU/Linux Debian) the avaricious plutocrat Bill Gates&#039; mediocre &#039;&lt;em&gt;creation&lt;/em&gt;&#039;, &lt;em&gt;backdoored&lt;/em&gt; software, &lt;em&gt;idiotically&lt;/em&gt; named as a mundane household notion, &#039;&lt;em&gt;windows&lt;/em&gt;,&#039; would not have spread like the virus it emulates.&lt;/p&gt;

&lt;p&gt;Generating an OS/2 2.1x bootable CD under GNU/Linux Debian -based Metztli Reiser4:&lt;br /&gt;
&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;genisoimage&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;r&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;b&amp;nbsp;boot&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;boot&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;img&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;c&amp;nbsp;boot&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;boot&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;catalog&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;o&amp;nbsp;os2bootcd&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;iso&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
Ensuing snapshot is an specific example of the above command under my Metztli Reiser4 Debian environment, where my two(2)-floppy &lt;em&gt;boot&lt;/em&gt;.img is custom-renamed as &lt;em&gt;boot&lt;strong&gt;smphpfs386&lt;/strong&gt;&lt;/em&gt;.img and &lt;em&gt;os2bootcd&lt;/em&gt;.iso is written to another directory -- relative to our current position in the shell -- and custom renamed, too:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;../xicnahualti_hpfs386-caxtolli_omome/&lt;em&gt;&lt;strong&gt;os211smphpfs386metztli&lt;/strong&gt;&lt;/em&gt;.iso&lt;/p&gt;&lt;/blockquote&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/OS2-v211-for-SMP-HPFS386-hack.png?mtime=1743258550&quot; title=&quot;Generating an OS/2 2.1x bootable CD under Metztli Reiser4&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_1337&quot;&gt;&lt;img alt=&quot;Generating an OS/2 2.1x bootable CD unde Metztli Reiser4&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/OS2-v211-for-SMP-HPFS386-hack.png/fit-400x320.png?mtime=1743258550&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Generating an OS/2 2.1x bootable CD under Metztli Reiser4&lt;/div&gt;&lt;/div&gt;
The layout in the snapshot &#039;&lt;em&gt;a priori&lt;/em&gt;&#039; shows multi-media and tcpip, and their corresponding update suffixes: &lt;em&gt;u1&lt;/em&gt;, &lt;em&gt;u2&lt;/em&gt;, and &lt;em&gt;upd&lt;/em&gt;. That is what you get when you acquire either of the &lt;a href=&quot;https://metztli.blog/Metztli-bits/os-2-2-11-smp&quot; target=&quot;_blank&quot;&gt;OS/2 v2.11 for Symmetrical Multiprocessing &lt;em&gt;with HPFS386&lt;/em&gt;&lt;/a&gt; hack that I have on sale.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
Generally speaking, even if your bootable two(2) disk image is successfully created, &lt;em&gt;&lt;strong&gt;if&lt;/strong&gt;&lt;/em&gt;&amp;nbsp; it can not make the transition to the OS/2 disks layout on the CD, i.e., can not detect it due an older driver like IBM1S506.ADD (see snapshot below), the boot procedure will stop with the output:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The system cannot find the file &quot;A:\COUNTRY.SYS&quot;. This device driver, program, or data file is not located in the default path or the path specified for it in the CONFIG.SYS file. Install this file in the correct directory, or correct the appropriate CONFIG.SYS file statement.&lt;br /&gt;
&lt;br /&gt;
The system is stopped.&lt;br /&gt;
&lt;br /&gt;
Correct the preceding error and restart the system.&lt;/em&gt;&lt;br /&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-x/os2_1x_bootable-cd-error--old-driver.png?mtime=1649137978&quot; title=&quot;OS/2 2.1.x Bootable CD error due to older IBM1S506.ADD&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_873&quot;&gt;&lt;img alt=&quot;OS/2 2.1.x Bootable CD error due to older IBM1S506.ADD&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-x/.evocache/os2_1x_bootable-cd-error--old-driver.png/fit-400x320.png?mtime=1649137978&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;OS/2 2.1.x Bootable CD error due to older IBM1S506.ADD&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;image_block noborder&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os2-un-pack_425.png?mtime=1643711707&quot; title=&quot;OS/2 PROGRAMER&amp;#039;S DESK REFERENCE pg. 425&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_850&quot;&gt;&lt;img alt=&quot;OS/2 PROGRAMER&amp;apos;S DESK REFERENCE pg. 425&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os2-un-pack_425.png/fit-400x320.png?mtime=1643711707&quot; width=&quot;719&quot; height=&quot;288&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;OS/2 PROGRAMER&#039;S DESK REFERENCE pg. 425&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;image_block noborder&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os2-un-pack_426.png?mtime=1643711725&quot; title=&quot;OS/2 PROGRAMER&amp;#039;S DESK REFERENCE pg. 426&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_851&quot;&gt;&lt;img alt=&quot;OS/2 PROGRAMER&amp;apos;S DESK REFERENCE pg. 426&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os2-un-pack_426.png/fit-400x320.png?mtime=1643711725&quot; width=&quot;255&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;OS/2 PROGRAMER&#039;S DESK REFERENCE pg. 426&lt;/div&gt;&lt;/div&gt;
&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;cmd&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;c&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_string&quot;&gt;&quot;PACK&amp;nbsp;bundle.list&amp;nbsp;bundle&amp;nbsp;/L&quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;
If, unlike myself, you are not using the &lt;em&gt;Korn Shell&lt;/em&gt; under OS/2, then the command delimited by double quotes is sufficient.&lt;br /&gt;
&lt;div class=&quot;image_block squared&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-x/os2_pack-a-list_command.png?mtime=1649004194&quot; title=&quot;OS/2 PACK a list of files&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_872&quot;&gt;&lt;img alt=&quot;OS/2 PACK a list of files&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-x/.evocache/os2_pack-a-list_command.png/fit-400x320.png?mtime=1649004194&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;OS/2 PACK a list of files&lt;/div&gt;&lt;/div&gt;


&lt;div class=&quot;image_block noborder&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os2-un-pack_427.png?mtime=1643711738&quot; title=&quot;OS/2 PROGRAMER&amp;#039;S DESK REFERENCE pg. 427&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_852&quot;&gt;&lt;img alt=&quot;OS/2 PROGRAMER&amp;apos;S DESK REFERENCE pg. 427&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os2-un-pack_427.png/fit-400x320.png?mtime=1643711738&quot; width=&quot;222&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;OS/2 PROGRAMER&#039;S DESK REFERENCE pg. 427&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;image_block noborder&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os2-un-pack_428.png?mtime=1643711840&quot; title=&quot;OS/2 PROGRAMER&amp;#039;S DESK REFERENCE pg. 428&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_853&quot;&gt;&lt;img alt=&quot;OS/2 PROGRAMER&amp;apos;S DESK REFERENCE pg. 428&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os2-un-pack_428.png/fit-400x320.png?mtime=1643711840&quot; width=&quot;272&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;OS/2 PROGRAMER&#039;S DESK REFERENCE pg. 428&lt;/div&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;h3 class=&quot;evo_auto_anchor_header&quot; id=&quot;convert-from-2-1-base-video-into-3-0-base-video-in-order-to-take-advantage-of-the-monitor-configuration-feature-of-the-3-0-system-icon&quot;&gt;&lt;em&gt;CONVERT FROM 2.1 BASE VIDEO INTO 3.0 BASE VIDEO IN ORDER TO TAKE ADVANTAGE OF THE MONITOR CONFIGURATION FEATURE OF THE 3.0 SYSTEM ICON&lt;/em&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Hint 4)&lt;br /&gt;
Display driver reference lists the binary files that compose the base video subsystem and explains the difference in the installation between 3.0 and 2.1. Search for VIDEOCFG to see all references.&lt;/li&gt;
&lt;li&gt;i.e.,&lt;br /&gt;
MONITOR.DIF&lt;br /&gt;
VCFGINST.EXE&lt;br /&gt;
VCFGMRI.DLL&lt;br /&gt;
VIDEOCFG.206 (To be renamed as VIDEOCFG.DLL when copied over to OS/2 v2.11)&lt;br /&gt;
VIDEOCFG.DLL (This is for OS/2 Warp 3)&lt;br /&gt;
VIDEOPMI.DLL&lt;br /&gt;
WPVIDSYS.DLL&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/convert-os2-v2_1-base-video-into-os2-v3_0.png?mtime=1709883084&quot; title=&quot;Convert from OS/2 v2.1 BASE VIDEO into 3.0 BASE VIDEO&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_1198&quot;&gt;&lt;img alt=&quot;Convert from OS/2 v2.1 BASE VIDEO into 3.0 BASE VIDEO&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/convert-os2-v2_1-base-video-into-os2-v3_0.png/fit-400x320.png?mtime=1709883084&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Convert from OS/2 v2.1 BASE VIDEO into 3.0 BASE VIDEO&lt;/div&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
Dual-booting with OS/2 for SMP v2.11 and Warp 3 Connect Uni-Processor.&lt;br /&gt;
Caveat: If using a single CPU/CORE, then the CONFIG.SYS FOR OS/2 for SMP v2.11 must have disabled the statement&lt;br /&gt;
PSD=OS2APIC.PSD /APIC&lt;br /&gt;
i.e.,&lt;br /&gt;
REM PSD=OS2APIC.PSD /APIC&lt;/p&gt;

&lt;p&gt;else, it will not dual-boot with an OS/2 Uni-Processor in a VirtualBox 7.0.14 (currently being used).&lt;/p&gt;

&lt;div class=&quot;image_block border&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/vga-from-gradd077-works-in-os2-v2_1.png?mtime=1709883946&quot; title=&quot;VGA from GRADD077 works in OS/2 v2.11&quot; rel=&quot;lightbox[p232]&quot; id=&quot;link_1199&quot;&gt;&lt;img alt=&quot;VGA from GRADD077 works in OS/2 v2.11&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/vga-from-gradd077-works-in-os2-v2_1.png/fit-400x320.png?mtime=1709883946&quot; width=&quot;400&quot; height=&quot;225&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;VGA from GRADD077 works in OS/2 v2.11&lt;/div&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;p&gt;REFERENCES:&lt;br /&gt;
&lt;a href=&quot;https://tldp.org/HOWTO/Bootdisk-HOWTO/cd-roms.html&quot; target=&quot;_blank&quot;&gt;Creating bootable CD-ROMs&lt;/a&gt;&lt;br /&gt;
(work in progress)&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://metztli.blog/Metztli-bits/os-2-x&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;https://metztli.it/b2evolution/&quot;&gt;Metztli b2evo for PHP 8&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div><div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_26" poster="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/OS2-Chiucomoztoc.png?mtime=1620118847"><source src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/OS2-Chiucomoztoc.mp4?mtime=1620112391" type="video/mp4" align="center" /></video></div></div><p>(Once the video player has started, right selecting (or 'clicking') your device (or 'mouse') will show menu option, '<em>Open video in new tab</em>', which will enable larger screen size. Alternatively, the video with larger screen size is shown in the Calli collection front page)</p>
<hr /><p><br /><br />
Although <em>IBM OS/2 3.x Warp</em> and higher <em>in<strong>digitalizations</strong></em> have been hacked into bootable CDROM media / ISO images, I believe this is the first OS/2 2.x which has been morphed into such an unique entity. The procedure was not easy -- and obviously not intuitive. The work required to make the cdboot hack complete the first phase of the OS/2 2.1 installation was substantial; and once I achieved it I thought that whatever else needed to be done would be easier. I was mistaken. I had to compile an utility to search for and replace strings in the OS/2 2.1 CONFIG.SYS file at the end of the first phase of the OS/2 installation. Fact is, I could not find an appropriate binary one which executed under OS/2 2.1x in my extensive local collection of <em>Hobbes</em> CDROM media, etc., nor online at <del>Hobbes site</del> <img src="https://metztli.blog/rsc/smilies/graydead.gif" title="&amp;#88;&amp;#88;&amp;#40;" alt="&amp;#88;&amp;#88;&amp;#40;" class="middle" width="15" height="15" /> <ins>sun set</ins> and/or elsewhere.</p>

<p>At the time I used the IBM C/C++ Tools 2.01:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_ICC.png?mtime=1745704003" title="IBM C/C++ Tools 2.0.1 containing ICC executable" rel="lightbox[p232]" id="link_1345"><img alt="IBM C/C++ Tools 2.0.1 containing ICC executable" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_ICC.png/fit-320x320.png?mtime=1745704003" width="320" height="180" class="loadimg" /></a><div><i>IBM C/C++ Tools 2.0.1 containing ICC executable</i></div></div>

<p>to build the STRRPL.EXE utility which source code was freely available:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_ICC-success.png?mtime=1745703981" title="Build of STRRPL.C into binary executable" rel="lightbox[p232]" id="link_1346"><img alt="Build of STRRPL.C into binary executable" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_ICC-success.png/fit-320x320.png?mtime=1745703981" width="320" height="180" class="loadimg" /></a><div><i>Build of STRRPL.C into binary executable</i></div></div>

<p>Unlike prebuilt STRRPL.EXE binary from <a href="https://hobbesarchive.com/Home/Download?path=/Hobbes/pub/os2/util/file/strrpl_0-84r2.zip" target="_blank">strrpl_0-84r2.zip available from Hobbes static archive</a>, and elsewhere,<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_non-ICC-binary-STRRPL-fail.png?mtime=1745781817" title="Prebuilt STRRPL.EXE from Hobbes fails under OS/2 v2.x" rel="lightbox[p232]" id="link_1348"><img alt="Prebuilt STRRPL.EXE from Hobbes fails under OS/2 v2.x" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_non-ICC-binary-STRRPL-fail.png/fit-320x320.png?mtime=1745781817" width="320" height="180" class="loadimg" /></a><div><i>Prebuilt STRRPL.EXE from Hobbes fails under OS/2 v2.x</i></div></div>

<p>my build of STRRPL.EXE with IBM C/C++ Tools 2.01 actually executed under OS/2 2.1x:<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_ICC-build-strrpl.png?mtime=1745703994" title="IBM C/C++ build of STRRPL.EXE binary executes under OS/2 2.1x" rel="lightbox[p232]" id="link_1347"><img alt="IBM C/C++ build of STRRPL.EXE binary executes under OS/2 2.1x" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_ICC-build-strrpl.png/fit-320x320.png?mtime=1745703994" width="320" height="180" class="loadimg" /></a><div><i>IBM C/C++ build of STRRPL.EXE binary executes under OS/2 2.1x</i></div></div>

<p>Accordingly, I repackaged the original strrpl_0-84r2.zip as <a href="/media/blogs/Metztli-bits/OS2-ce/strrpl_0-84r2m.zip?mtime=1745785841" target="_blank"><em>strrpl_0-84r2<strong>m</strong></em>.zip</a> and under OS2v21/ directory included the binary executable strrpl.exe which does function properly under OS/2 v2.x<br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os21_pkzip_strrpl_0-84r2m.png?mtime=1745785843" title="strrpl_0-84r2m.zip with OS2v21\strrpl.exe" rel="lightbox[p232]" id="link_1349"><img alt="strrpl_0-84r2m.zip with OS2v21\strrpl.exe" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os21_pkzip_strrpl_0-84r2m.png/fit-320x320.png?mtime=1745785843" width="320" height="180" class="loadimg" /></a><div><i>strrpl_0-84r2m.zip with OS2v21\strrpl.exe</i></div></div>

<p>Had IBM released the OS/2 code as free and/or open source software (<em>FOSS</em>) instead of being so indifferent to the multiple petitions to do so (for instance those in which I personally took part at <a href="https://www.os2world.com/" target="_blank">the OS2World site</a> before I left the site for good -- as I had moved on to GNU/Linux Debian) the avaricious plutocrat Bill Gates' mediocre '<em>creation</em>', <em>backdoored</em> software, <em>idiotically</em> named as a mundane household notion, '<em>windows</em>,' would not have spread like the virus it emulates.</p>

<p>Generating an OS/2 2.1x bootable CD under GNU/Linux Debian -based Metztli Reiser4:<br />
<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">genisoimage&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">r&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">b&nbsp;boot</span><span class="amc_keyword">/</span><span class="amc_default">boot</span><span class="amc_keyword">.</span><span class="amc_default">img&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">c&nbsp;boot</span><span class="amc_keyword">/</span><span class="amc_default">boot</span><span class="amc_keyword">.</span><span class="amc_default">catalog&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">o&nbsp;os2bootcd</span><span class="amc_keyword">.</span><span class="amc_default">iso&nbsp;</span><span class="amc_keyword">.</span></span></code></td></tr></table></div><br />
Ensuing snapshot is an specific example of the above command under my Metztli Reiser4 Debian environment, where my two(2)-floppy <em>boot</em>.img is custom-renamed as <em>boot<strong>smphpfs386</strong></em>.img and <em>os2bootcd</em>.iso is written to another directory -- relative to our current position in the shell -- and custom renamed, too:</p>
<blockquote><p>../xicnahualti_hpfs386-caxtolli_omome/<em><strong>os211smphpfs386metztli</strong></em>.iso</p></blockquote>
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/OS2-v211-for-SMP-HPFS386-hack.png?mtime=1743258550" title="Generating an OS/2 2.1x bootable CD under Metztli Reiser4" rel="lightbox[p232]" id="link_1337"><img alt="Generating an OS/2 2.1x bootable CD unde Metztli Reiser4" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/OS2-v211-for-SMP-HPFS386-hack.png/fit-320x320.png?mtime=1743258550" width="320" height="180" class="loadimg" /></a><div><i>Generating an OS/2 2.1x bootable CD under Metztli Reiser4</i></div></div>
The layout in the snapshot '<em>a priori</em>' shows multi-media and tcpip, and their corresponding update suffixes: <em>u1</em>, <em>u2</em>, and <em>upd</em>. That is what you get when you acquire either of the <a href="https://metztli.blog/Metztli-bits/os-2-2-11-smp" target="_blank">OS/2 v2.11 for Symmetrical Multiprocessing <em>with HPFS386</em></a> hack that I have on sale.<br />
<br /><br />
Generally speaking, even if your bootable two(2) disk image is successfully created, <em><strong>if</strong></em>&nbsp; it can not make the transition to the OS/2 disks layout on the CD, i.e., can not detect it due an older driver like IBM1S506.ADD (see snapshot below), the boot procedure will stop with the output:</p>

<p><em>The system cannot find the file "A:\COUNTRY.SYS". This device driver, program, or data file is not located in the default path or the path specified for it in the CONFIG.SYS file. Install this file in the correct directory, or correct the appropriate CONFIG.SYS file statement.<br />
<br />
The system is stopped.<br />
<br />
Correct the preceding error and restart the system.</em><br />
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-x/os2_1x_bootable-cd-error--old-driver.png?mtime=1649137978" title="OS/2 2.1.x Bootable CD error due to older IBM1S506.ADD" rel="lightbox[p232]" id="link_873"><img alt="OS/2 2.1.x Bootable CD error due to older IBM1S506.ADD" src="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-x/.evocache/os2_1x_bootable-cd-error--old-driver.png/fit-320x320.png?mtime=1649137978" width="320" height="180" class="loadimg" /></a><div><i>OS/2 2.1.x Bootable CD error due to older IBM1S506.ADD</i></div></div>

<div class="noborder"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os2-un-pack_425.png?mtime=1643711707" title="OS/2 PROGRAMER&#039;S DESK REFERENCE pg. 425" rel="lightbox[p232]" id="link_850"><img alt="OS/2 PROGRAMER&apos;S DESK REFERENCE pg. 425" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os2-un-pack_425.png/fit-320x320.png?mtime=1643711707" width="719" height="288" class="loadimg" /></a><div><i>OS/2 PROGRAMER'S DESK REFERENCE pg. 425</i></div></div>

<div class="noborder"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os2-un-pack_426.png?mtime=1643711725" title="OS/2 PROGRAMER&#039;S DESK REFERENCE pg. 426" rel="lightbox[p232]" id="link_851"><img alt="OS/2 PROGRAMER&apos;S DESK REFERENCE pg. 426" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os2-un-pack_426.png/fit-320x320.png?mtime=1643711725" width="255" height="320" class="loadimg" /></a><div><i>OS/2 PROGRAMER'S DESK REFERENCE pg. 426</i></div></div>
<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc2"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">cmd&nbsp;</span><span class="amc_keyword">/</span><span class="amc_default">c&nbsp;</span><span class="amc_string">"PACK&nbsp;bundle.list&nbsp;bundle&nbsp;/L"</span></span></code></td></tr></table></div><br />
If, unlike myself, you are not using the <em>Korn Shell</em> under OS/2, then the command delimited by double quotes is sufficient.<br />
<div class="squared"><a href="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-x/os2_pack-a-list_command.png?mtime=1649004194" title="OS/2 PACK a list of files" rel="lightbox[p232]" id="link_872"><img alt="OS/2 PACK a list of files" src="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/os-2-x/.evocache/os2_pack-a-list_command.png/fit-320x320.png?mtime=1649004194" width="320" height="180" class="loadimg" /></a><div><i>OS/2 PACK a list of files</i></div></div>


<div class="noborder"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os2-un-pack_427.png?mtime=1643711738" title="OS/2 PROGRAMER&#039;S DESK REFERENCE pg. 427" rel="lightbox[p232]" id="link_852"><img alt="OS/2 PROGRAMER&apos;S DESK REFERENCE pg. 427" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os2-un-pack_427.png/fit-320x320.png?mtime=1643711738" width="222" height="320" class="loadimg" /></a><div><i>OS/2 PROGRAMER'S DESK REFERENCE pg. 427</i></div></div>

<div class="noborder"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/os2-un-pack_428.png?mtime=1643711840" title="OS/2 PROGRAMER&#039;S DESK REFERENCE pg. 428" rel="lightbox[p232]" id="link_853"><img alt="OS/2 PROGRAMER&apos;S DESK REFERENCE pg. 428" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/os2-un-pack_428.png/fit-320x320.png?mtime=1643711840" width="272" height="320" class="loadimg" /></a><div><i>OS/2 PROGRAMER'S DESK REFERENCE pg. 428</i></div></div>
<br /></p>
<h3 class="evo_auto_anchor_header" id="convert-from-2-1-base-video-into-3-0-base-video-in-order-to-take-advantage-of-the-monitor-configuration-feature-of-the-3-0-system-icon"><em>CONVERT FROM 2.1 BASE VIDEO INTO 3.0 BASE VIDEO IN ORDER TO TAKE ADVANTAGE OF THE MONITOR CONFIGURATION FEATURE OF THE 3.0 SYSTEM ICON</em></h3>
<ul>
<li>Hint 4)<br />
Display driver reference lists the binary files that compose the base video subsystem and explains the difference in the installation between 3.0 and 2.1. Search for VIDEOCFG to see all references.</li>
<li>i.e.,<br />
MONITOR.DIF<br />
VCFGINST.EXE<br />
VCFGMRI.DLL<br />
VIDEOCFG.206 (To be renamed as VIDEOCFG.DLL when copied over to OS/2 v2.11)<br />
VIDEOCFG.DLL (This is for OS/2 Warp 3)<br />
VIDEOPMI.DLL<br />
WPVIDSYS.DLL</li>
</ul>
<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/convert-os2-v2_1-base-video-into-os2-v3_0.png?mtime=1709883084" title="Convert from OS/2 v2.1 BASE VIDEO into 3.0 BASE VIDEO" rel="lightbox[p232]" id="link_1198"><img alt="Convert from OS/2 v2.1 BASE VIDEO into 3.0 BASE VIDEO" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/convert-os2-v2_1-base-video-into-os2-v3_0.png/fit-320x320.png?mtime=1709883084" width="320" height="180" class="loadimg" /></a><div><i>Convert from OS/2 v2.1 BASE VIDEO into 3.0 BASE VIDEO</i></div></div>
<br /><br />
Dual-booting with OS/2 for SMP v2.11 and Warp 3 Connect Uni-Processor.<br />
Caveat: If using a single CPU/CORE, then the CONFIG.SYS FOR OS/2 for SMP v2.11 must have disabled the statement<br />
PSD=OS2APIC.PSD /APIC<br />
i.e.,<br />
REM PSD=OS2APIC.PSD /APIC</p>

<p>else, it will not dual-boot with an OS/2 Uni-Processor in a VirtualBox 7.0.14 (currently being used).</p>

<div class="border"><a href="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/vga-from-gradd077-works-in-os2-v2_1.png?mtime=1709883946" title="VGA from GRADD077 works in OS/2 v2.11" rel="lightbox[p232]" id="link_1199"><img alt="VGA from GRADD077 works in OS/2 v2.11" src="https://metztli.blog/media/blogs/Metztli-bits/OS2-ce/.evocache/vga-from-gradd077-works-in-os2-v2_1.png/fit-320x320.png?mtime=1709883946" width="320" height="180" class="loadimg" /></a><div><i>VGA from GRADD077 works in OS/2 v2.11</i></div></div>
<hr />
<p>REFERENCES:<br />
<a href="https://tldp.org/HOWTO/Bootdisk-HOWTO/cd-roms.html" target="_blank">Creating bootable CD-ROMs</a><br />
(work in progress)</p><div class="item_footer"><p><small><a href="https://metztli.blog/Metztli-bits/os-2-x">Original post</a> blogged on <a href="https://metztli.it/b2evolution/">Metztli b2evo for PHP 8</a>.</small></p></div>]]></content:encoded>
								<comments>https://metztli.blog/Metztli-bits/os-2-x#comments</comments>
			<wfw:commentRss>https://metztli.blog/Metztli-bits/?tempskin=_rss2&#38;disp=comments&#38;p=232</wfw:commentRss>
		</item>
				<item>
			<title>Social engineering scam ALERT: &#34;Subject: Hackers have access to your device. Check details ASAP!&#34;</title>
			<link>https://metztli.blog/Metztli-bits/mofo</link>
			<pubDate>Mon, 26 Apr 2021 05:53:00 +0000</pubDate>			<dc:creator>Jose</dc:creator>
			<category domain="main">Social Engineering</category>			<guid isPermaLink="false">230@https://metztli.blog/</guid>
						<description>&lt;div class=&quot;image_block squared&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/mofo/bitcoin-vampire.png?mtime=1619442924&quot; title=&quot;Spoofed email bitcoin scam&quot; rel=&quot;lightbox[p230]&quot; id=&quot;link_744&quot;&gt;&lt;img alt=&quot;Spoofed email bitcoin scam&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/mofo/.evocache/bitcoin-vampire.png/fit-400x320.png?mtime=1619442924&quot; width=&quot;400&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Spoofed email bitcoin scam&lt;/div&gt;&lt;/div&gt;
&lt;h3 class=&quot;evo_auto_anchor_header&quot; id=&quot;not-in-our-name-mofos&quot;&gt;Not in our name, Mofos!&lt;/h3&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
Social engineering mass email campaign(s) where &lt;em&gt;&lt;font color=&quot;#f70000&quot;&gt;&lt;strong&gt;spoofed&lt;/strong&gt;&lt;/font&gt; email addresses&lt;/em&gt; -- including at least one of ours -- have been used by Internet &lt;em&gt;scum mofos&lt;/em&gt; targeting the hard earned finances of unsuspecting users. Below is one of two identical ones that we came across.&lt;/p&gt;

&lt;p&gt;&#039;&lt;em&gt;Hello there&lt;br /&gt;
Let me introduce myself first - I am a professional programmer, who specializes in hacking during my free time.&lt;br /&gt;
This time you were unlucky to become my next victim and I have just hacked the Operating System and your device.&lt;br /&gt;
&lt;br /&gt;
I have been observing you for several months.&lt;br /&gt;
To put things in a simple way, I have infected your device with my virus while you were visiting your favorite adult website.&lt;br /&gt;
&lt;br /&gt;
I will try to explain the situation in more details, if you are not really familiar with this kind of situations.&lt;br /&gt;
Trojan virus grants me with full access as well as control of your device.&lt;br /&gt;
Hence, I can see and access anything on your screen, switch on the camera and microphone and do other stuff, while you don&#039;t even know that.&lt;br /&gt;
&lt;br /&gt;
In addition, I also accessed your whole contacts list at social networks and your device too.&lt;br /&gt;
&lt;br /&gt;
You may be questioning yourself - why didn&#039;t your antivirus detect any malicious software until now?&lt;br /&gt;
&lt;br /&gt;
- Well, my spyware uses a special driver, which has a signature that is updated on a frequent basis, hereby your antivirus simply cannot catch it.&lt;br /&gt;
&lt;br /&gt;
I have created a videoclip exposing the way you are playing with yourself on the left screen section, while the right section shows the porn video that you were watching at that point of time.&lt;br /&gt;
Few clicks of my mouse would be sufficient to forward this video to all your contacts list and social media friends.&lt;br /&gt;
You will be surprised to discover that I can even upload it to online platforms for public access.&lt;br /&gt;
&lt;br /&gt;
The good news is that you can still prevent this from happening:&lt;br /&gt;
All you need to do is transfer $1350 (USD) of bitcoin equivalent to my BTC wallet (if you don&#039;t know how to get it done, &lt;br /&gt;
do some search online - there are plenty of articles describing the step-by-step process).&lt;br /&gt;
&lt;br /&gt;
My bitcoin wallet is (BTC Wallet): 1NToziZKcJfyxHpwkcxbafwghGasme4NUf&lt;br /&gt;
&lt;br /&gt;
Once I receive your payment, I will delete your kinky video right away, and can promise that is the last time you hear from.&lt;br /&gt;
You have 48 hours (2 days exactly) to complete the payment.&lt;br /&gt;
The read notification will be automatically sent to me, once you open this email, so the timer will start automatically from that moment.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t bother trying to reply my email, because it won&#039;t change anything (the sender&#039;s email address has been generated automatically and taken from internet).&lt;br /&gt;
Don&#039;t try to complain or report me either, because all my personal information and my bitcoin address are encrypted as part of blockchain system.&lt;br /&gt;
I have done my homework.&lt;br /&gt;
&lt;br /&gt;
If I discover that you have tried forwarding this email to anyone, I will right away share your kinky video to public.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s be reasonable and don&#039;t make any stupid mistakes anymore. I have provided a clear step-by-step guide for you.&lt;br /&gt;
All you need to do is simply follow the steps and get rid of this uncomfortable situation once and for all.&lt;br /&gt;
&lt;br /&gt;
Best regards and good luck.&lt;/em&gt;&#039;&lt;/p&gt;

&lt;p&gt;The above is copied &lt;em&gt;verbatium&lt;/em&gt; from two identical emails from two(2) &lt;em&gt;different&lt;/em&gt; email address senders of which one of them is &lt;font color=&quot;#f70000&quot;&gt;&lt;em&gt;spoofed&lt;/em&gt;&lt;/font&gt; from at least one of our legit email addresses used by our organization. &lt;font color=&quot;#f70000&quot;&gt;&lt;strong&gt;We did not email the above crap!&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://metztli.blog/Metztli-bits/mofo&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;https://metztli.it/b2evolution/&quot;&gt;Metztli b2evo for PHP 8&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div class="squared"><a href="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/mofo/bitcoin-vampire.png?mtime=1619442924" title="Spoofed email bitcoin scam" rel="lightbox[p230]" id="link_744"><img alt="Spoofed email bitcoin scam" src="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/mofo/.evocache/bitcoin-vampire.png/fit-320x320.png?mtime=1619442924" width="320" height="256" class="loadimg" /></a><div><i>Spoofed email bitcoin scam</i></div></div>
<h3 class="evo_auto_anchor_header" id="not-in-our-name-mofos">Not in our name, Mofos!</h3>
<p><br /><br />
Social engineering mass email campaign(s) where <em><font color="#f70000"><strong>spoofed</strong></font> email addresses</em> -- including at least one of ours -- have been used by Internet <em>scum mofos</em> targeting the hard earned finances of unsuspecting users. Below is one of two identical ones that we came across.</p>

<p>'<em>Hello there<br />
Let me introduce myself first - I am a professional programmer, who specializes in hacking during my free time.<br />
This time you were unlucky to become my next victim and I have just hacked the Operating System and your device.<br />
<br />
I have been observing you for several months.<br />
To put things in a simple way, I have infected your device with my virus while you were visiting your favorite adult website.<br />
<br />
I will try to explain the situation in more details, if you are not really familiar with this kind of situations.<br />
Trojan virus grants me with full access as well as control of your device.<br />
Hence, I can see and access anything on your screen, switch on the camera and microphone and do other stuff, while you don't even know that.<br />
<br />
In addition, I also accessed your whole contacts list at social networks and your device too.<br />
<br />
You may be questioning yourself - why didn't your antivirus detect any malicious software until now?<br />
<br />
- Well, my spyware uses a special driver, which has a signature that is updated on a frequent basis, hereby your antivirus simply cannot catch it.<br />
<br />
I have created a videoclip exposing the way you are playing with yourself on the left screen section, while the right section shows the porn video that you were watching at that point of time.<br />
Few clicks of my mouse would be sufficient to forward this video to all your contacts list and social media friends.<br />
You will be surprised to discover that I can even upload it to online platforms for public access.<br />
<br />
The good news is that you can still prevent this from happening:<br />
All you need to do is transfer $1350 (USD) of bitcoin equivalent to my BTC wallet (if you don't know how to get it done, <br />
do some search online - there are plenty of articles describing the step-by-step process).<br />
<br />
My bitcoin wallet is (BTC Wallet): 1NToziZKcJfyxHpwkcxbafwghGasme4NUf<br />
<br />
Once I receive your payment, I will delete your kinky video right away, and can promise that is the last time you hear from.<br />
You have 48 hours (2 days exactly) to complete the payment.<br />
The read notification will be automatically sent to me, once you open this email, so the timer will start automatically from that moment.<br />
<br />
Don't bother trying to reply my email, because it won't change anything (the sender's email address has been generated automatically and taken from internet).<br />
Don't try to complain or report me either, because all my personal information and my bitcoin address are encrypted as part of blockchain system.<br />
I have done my homework.<br />
<br />
If I discover that you have tried forwarding this email to anyone, I will right away share your kinky video to public.<br />
<br />
Let's be reasonable and don't make any stupid mistakes anymore. I have provided a clear step-by-step guide for you.<br />
All you need to do is simply follow the steps and get rid of this uncomfortable situation once and for all.<br />
<br />
Best regards and good luck.</em>'</p>

<p>The above is copied <em>verbatium</em> from two identical emails from two(2) <em>different</em> email address senders of which one of them is <font color="#f70000"><em>spoofed</em></font> from at least one of our legit email addresses used by our organization. <font color="#f70000"><strong>We did not email the above crap!</strong></font></p><div class="item_footer"><p><small><a href="https://metztli.blog/Metztli-bits/mofo">Original post</a> blogged on <a href="https://metztli.it/b2evolution/">Metztli b2evo for PHP 8</a>.</small></p></div>]]></content:encoded>
								<comments>https://metztli.blog/Metztli-bits/mofo#comments</comments>
			<wfw:commentRss>https://metztli.blog/Metztli-bits/?tempskin=_rss2&#38;disp=comments&#38;p=230</wfw:commentRss>
		</item>
				<item>
			<title>Hacking a Reiser4/Zstd (SFRN 4.0.2) -patched Build of Debian Linux 4.14.Cempohualli-Ce for AMD64.</title>
			<link>https://metztli.blog/Metztli-bits/hacking-a-reiser4-zstd-sfrn</link>
			<pubDate>Sun, 25 Feb 2018 14:23:00 +0000</pubDate>			<dc:creator>Jose</dc:creator>
			<category domain="alt">GNU/Linux</category>
<category domain="alt">Debian</category>
<category domain="main">reiser4</category>			<guid isPermaLink="false">145@https://metztli.blog/</guid>
						<description>&lt;div&gt;&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_27&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/p146/cempohualli.png?mtime=1519568003&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/p146/cempohualli.mp4?mtime=1519565220&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;(Use your right &lt;em&gt;mouse&lt;/em&gt; pointer on image to show &lt;em&gt;video controls&lt;/em&gt; and/or to &lt;em&gt;Open video in new tab&lt;/em&gt; -- recommended)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Official 4.14.x iterations of Debian kernel packaging for Unstable (Sid) ended with 4.14.17-1. Accordingly, there is no Debian kernel packaging for current upstream release Linux 4.14.20 and much less named its &lt;em&gt;Nahuatl&lt;/em&gt; equivalent: &lt;em&gt;Cempohualli&lt;/em&gt;: twenty and &lt;em&gt;Ce&lt;/em&gt;: one. Moreover, the currently available Reiser4 patch is for kernel 4.14.1+; thus I had to find a way to debian&lt;em&gt;ize&lt;/em&gt; last kernel packaging if it was to successfully wrap around pristine &lt;a href=&quot;https://www.kernel.org/&quot; target=&quot;_blank&quot;&gt;kernel.org&lt;/a&gt;&#039;s Linux 4.14.&lt;em&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;/em&gt;. The latter, i.e., &lt;em&gt;Cempohualli&lt;/em&gt;, is a beautiful number; full of symbolism for existing &lt;em&gt;Nahuatl speaking &lt;strong&gt;real&lt;/strong&gt; Mexicah&lt;/em&gt;. What follows are my annotations to carry out the somewhat involved build procedure.&lt;/p&gt;

&lt;p&gt;First oddity. Beginning with upstream kernel 4.14.18, Debian kernel packaging for 4.14.17-1 will fail to build:&lt;/p&gt;

&lt;p&gt;  &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;LD      vmlinux.o&lt;br /&gt;
  MODPOST vmlinux.o&lt;br /&gt;
arch/x86/entry/syscall_64.o: In function `x32_enable&#039;:&lt;br /&gt;
syscall_64.c:(.init.text+0x8): undefined reference to `system_call_fast_compare_end&#039;&lt;br /&gt;
syscall_64.c&lt;img src=&quot;https://metztli.blog/rsc/smilies/icon_sad.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#40;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#40;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt;.init.text+0xe): undefined reference to `system_call_fast_compare&#039;&lt;br /&gt;
syscall_64.c:(.init.text+0x19): undefined reference to `system_call_mask_compare_end&#039;&lt;br /&gt;
syscall_64.c&lt;img src=&quot;https://metztli.blog/rsc/smilies/icon_sad.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#40;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#40;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt;.init.text+0x1f): undefined reference to `system_call_mask_compare&#039;&lt;br /&gt;
syscall_64.c:(.init.text+0x33): undefined reference to `system_call_fast_compare&#039;&lt;br /&gt;
syscall_64.c&lt;img src=&quot;https://metztli.blog/rsc/smilies/icon_sad.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#40;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#40;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt;.init.text+0x3f): undefined reference to `system_call_mask_compare&#039;&lt;br /&gt;
make[5]: *** [vmlinux] Error 1&lt;br /&gt;
[]/build/kernel/tekitl-4.14.18/linux/Makefile:998: recipe for target &#039;vmlinux&#039; failed&lt;br /&gt;
make[4]: *** [sub-make] Error 2&lt;br /&gt;
Makefile:146: recipe for target &#039;sub-make&#039; failed&lt;br /&gt;
make[3]: *** [__sub-make] Error 2&lt;br /&gt;
Makefile:24: recipe for target &#039;__sub-make&#039; failed&lt;br /&gt;
make[3]: Leaving directory &#039;[]/build/kernel/tekitl-4.14.18/linux/debian/build/build_amd64_none_amd64&lt;br /&gt;
make[2]: *** [debian/stamps/build_amd64_none_amd64] Error 2&lt;br /&gt;
debian/rules.real:190: recipe for target &#039;debian/stamps/build_amd64_none_amd64&#039; failed&lt;br /&gt;
make[2]: Leaving directory &#039;[]/build/kernel/tekitl-4.14.18/linux&#039;&lt;br /&gt;
make[1]: *** [binary-arch_amd64_none_amd64_real] Error 2&lt;br /&gt;
debian/rules.gen:24: recipe for target &#039;binary-arch_amd64_none_amd64_real&#039; failed&lt;br /&gt;
make[1]: Leaving directory &#039;[]/build/kernel/tekitl-4.14.18/linux&#039;&lt;br /&gt;
make: *** [binary-arch] Error 2&lt;br /&gt;
debian/rules:50: recipe for target &#039;binary-arch&#039; failed&lt;br /&gt;
dpkg-buildpackage: error: fakeroot debian/rules binary-arch gave error exit status 2&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Accordingly, if I wanted to build current upstream Linux 4.14.20 &#039;the &lt;em&gt;Debian way&lt;/em&gt;&#039;, i.e., to generate DEBs as well as UDEBs suitable for Metztli-Reiser4 netboot Debian-Installer (d-i), I had to figure out the issue above.&lt;/p&gt;

&lt;p&gt;After considerable effort I found there are a few updated patches we must apply from current Debian kernel packaging master 4.15.4-1 git repository to our Debian kernel packaging unstable (Sid) 4.14.17-1 for this latter to build my downloaded Linux 4.14.20 from upstream:&lt;/p&gt;

&lt;p&gt;debian/patches/debian/gitignore.patch&lt;br /&gt;
debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch&lt;/p&gt;

&lt;p&gt;Additionally, I modified 4.14.17-1 packaging&lt;br /&gt;
debian/patches/series&lt;br /&gt;
&lt;a href=&quot;/media/blogs/Metztli-bits/quick-uploads/p145/debian-patches-series.png?mtime=1519135458&quot; target=&quot;_blank&quot;&gt;&lt;br /&gt;
&lt;img src=&quot;/media/blogs/Metztli-bits/quick-uploads/p145/debian-patches-series.png?mtime=1519135458&quot; width=&quot;500&quot; height=&quot;100&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;because 4.14.20 newer kernel already had these security fixes applied.&lt;/p&gt;

&lt;p&gt;Now, assuming the Debian kernel packaging default , i.e., to build the &lt;em&gt;real-time&lt;/em&gt; (RT) kernel and headers, we get second oddity.&lt;/p&gt;

&lt;p&gt;Although the first set of patches for the Debian &#039;vanilla&#039; kernel applied smoothly, if the developer desired to build the &lt;em&gt;real-time&lt;/em&gt; (RT) kernel and headers to subsequently patch &lt;em&gt;&lt;strong&gt;all&lt;/strong&gt;&lt;/em&gt; with &lt;em&gt;reiser4&lt;/em&gt; -- which I did -- I had to implement another small hack to fix the following issue:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Applying patch features/all/rt/preempt-lazy-support.patch&lt;br /&gt;
Applying patch features/all/rt/ftrace-Fix-trace-header-alignment.patch&lt;br /&gt;
Applying patch features/all/rt/x86-preempt-lazy.patch&lt;br /&gt;
1 out of 5 hunks FAILED&lt;br /&gt;
Patch features/all/rt/x86-preempt-lazy.patch does not apply (enforce with -f)&lt;br /&gt;
debian/rules.real:145: recipe for target &#039;debian/stamps/source_rt&#039; failed&lt;br /&gt;
make[2]: *** [debian/stamps/source_rt] Error 1&lt;br /&gt;
make[2]: Leaving directory &#039;/[]/build/kernel/nahui.matlactetl_onnahui.cempohualli/linux&#039;&lt;br /&gt;
debian/rules.gen:989: recipe for target &#039;source_rt_real&#039; failed&lt;br /&gt;
make[1]: *** [source_rt_real] Error 2&lt;br /&gt;
make[1]: Leaving directory &#039;/[]/build/kernel/nahui.matlactetl_onnahui.cempohualli/linux&#039;&lt;br /&gt;
debian/rules:26: recipe for target &#039;source&#039; failed&lt;br /&gt;
make: *** [source] Error 2&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Evidently debian/patches/features/all/rt/x86-preempt-lazy.patch applied by &lt;em&gt;quilt&lt;/em&gt; with fuzz=0 fails at arch/x86/include/asm/thread_info.h since the latter has an extra line of code in the Linux 4.14.20 source tree:&lt;br /&gt;
&lt;code&gt;u32                     status;         /* thread synchronous flags */&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;which &lt;em&gt;quilt&lt;/em&gt; attempted to patch &lt;em&gt;thread_info.h&lt;/em&gt; to be subsequently copied over into RT kernel build directory:&lt;br /&gt;
debian/build/source_rt/arch/x86/include/asm/thread_info.h&lt;/p&gt;

&lt;p&gt;thus I modified slightly debian/patches/features/all/rt/x86-preempt-lazy.patch &lt;sup&gt;1&lt;/sup&gt; so it could apply &lt;em&gt;after&lt;/em&gt; the above referenced line of code.&lt;/p&gt;

&lt;p&gt;It worked...&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Otherwise&lt;/strong&gt;&lt;/em&gt;, if you do not want to build the &lt;em&gt;real-time&lt;/em&gt; (RT) kernel and headers, edit with a &lt;a href=&quot;https://sourceforge.net/projects/metztli-reiser4/files/xvi_tiny-text-editor/&quot; target=&quot;_blank&quot;&gt;text editor (like &lt;em&gt;&lt;strong&gt;xvi&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; &lt;img src=&quot;https://metztli.blog/rsc/smilies/icon_wink.gif&quot; title=&quot;&amp;amp;#59;&amp;amp;#41;&quot; alt=&quot;&amp;amp;#59;&amp;amp;#41;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt;&lt;br /&gt;
&lt;code&gt;xvi debian/config/defines&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and locate the lines:&lt;/p&gt;

&lt;p&gt;[featureset-rt_base]&lt;br /&gt;
enabled: true&lt;/p&gt;

&lt;p&gt;and change &#039;true&#039; text string to &lt;em&gt;false&lt;/em&gt;, i.e.,&lt;/p&gt;

&lt;p&gt;[featureset-rt_base]&lt;br /&gt;
enabled: &lt;em&gt;false&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;save your changes and close debian/config/defines&lt;/p&gt;

&lt;p&gt;In summary. I used last &#039;official&#039; Debian kernel packaging 4.14.17-1 for &lt;em&gt;Unstable&lt;/em&gt; (&lt;em&gt;Sid&lt;/em&gt;) as base. I then applied the above operations plus &lt;a href=&quot;https://metztli.it/blog/index.php/building-new-reiser4-software-format?blog=4&quot; target=&quot;_blank&quot;&gt;other &lt;em&gt;reiser4&lt;/em&gt; hacks for &lt;em&gt;Stretch&lt;/em&gt; elaborated in previous post(s)&lt;/a&gt;; thus generating a &lt;a href=&quot;https://github.com/Metztli/reiser4-debian-kernel-packaging-4.14.20&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Metztli Reiser4&lt;/em&gt; Debian kernel packaging for 4.14.&lt;em&gt;Cempohualli&lt;/em&gt;...er, &lt;em&gt;20&lt;/em&gt;, suitable to build a stretch-backports kernel&lt;/a&gt; and which resulting source code I subsequently uploaded to &lt;em&gt;Github&lt;/em&gt;.&lt;/p&gt;

&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/p145/cempohualli-ce.jpg?mtime=1519569282&quot; title=&quot;Real Mexicah used a base Cempohualli, i.e., twenty, for their number theory and cherished the expressiveness, non-linearity, of their language: Nahuatl. Those characteristics enhanced their mathematical acumen to apprehend, appreciate, and imitate, nature and Nehnencacitlalli [&amp;#039;the cosmos&amp;#039;]. In stark contrast, pseudo-&amp;#039;Mexicans&amp;#039; from 1821 onward, i.e., descendants of Spanish scum invaders who -- like their mother country Spain -- lag several centuries behind in science and technology[1], only have tainted their colonized masses with infinite ignorance.

[1] Kant.&quot; rel=&quot;lightbox[p145]&quot; id=&quot;link_296&quot;&gt;&lt;img title=&quot;Tonalpohualli: &amp;apos;Aztec Calendar&amp;apos;&quot; alt=&quot;Hacking a Reiser4/Zstd (SFRN 4.0.2) -patched Build of Debian Linux 4.14.Cempohualli-Ce for AMD64.&quot; src=&quot;https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/p145/.evocache/cempohualli-ce.jpg/fit-400x320.jpg?mtime=1519569282&quot; width=&quot;393&quot; height=&quot;320&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;div class=&quot;image_legend&quot;&gt;Real Mexicah used a base Cempohualli, i.e., twenty, for their number theory and cherished the expressiveness, non-linearity, of their language: Nahuatl. Those characteristics enhanced their mathematical acumen to apprehend, appreciate, and imitate, nature and Nehnencacitlalli [&#039;the cosmos&#039;]. In stark contrast, pseudo-&#039;Mexicans&#039; from 1821 onward, i.e., descendants of Spanish scum invaders who -- like their mother country Spain -- lag several centuries behind in science and technology[1], only have tainted their colonized masses with infinite ignorance.&lt;br /&gt;
&lt;br /&gt;
[1] Kant.&lt;/div&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h3&gt;Building Reiser4/Zstd (SFRN 4.0.2) stretch-backports Linux 4.14.Cempohualli-Ce for AMD64&lt;/h3&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Assuming a proper development environment to &lt;a href=&quot;https://metztli.it/blog/index.php/coyolxauhqui-build-reiser4-patched-linux?blog=4&quot; target=&quot;_blank&quot;&gt;build our kernel &#039;&lt;em&gt;the Debian way&lt;/em&gt;&#039; as elaborated &lt;em&gt;a priori&lt;/em&gt; in other post(s)&lt;/a&gt;, we can build upstream Linux kernel 4.14.20, thus:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;mkdir --verbose nahui.matlactetl_onnahui.cempohualli&lt;/code&gt;&lt;br /&gt;
...er, well that&#039;s &lt;em&gt;Nahuatl&lt;/em&gt; for 4.14.20 -- which you could name your working directory. I will just make a symbolic link:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ln -s nahui.matlactetl_onnahui.cempohualli 4.14.20&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd nahui.matlactetl_onnahui.cempohualli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Download Debian kernel packaging hacked for Linux 4.14.20 from &lt;em&gt;GitHub&lt;/em&gt;:&lt;br /&gt;
&lt;code class=&quot;codespan&quot;&gt;git clone https://github.com/Metztli/reiser4-debian-kernel-packaging-4.14.20.git linux&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;(Do something while it downloads as it approaches 1Gb of data)&lt;/p&gt;

&lt;p&gt;After the cloning procedure finishes, we make a linux sym link:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ln -s reiser4-debian-kernel-packaging-4.14.20 linux&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;then download kernel 4.14.20 from upstream:&lt;br /&gt;
&lt;code&gt;wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.20.tar.xz&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Let&#039;s create a symbolic link in the format that Debian kernel packaging expects:&lt;br /&gt;
&lt;code&gt;ln -s linux-4.14.20.tar.xz linux_4.14.20.orig.tar.xz&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and change into &lt;em&gt;linux&lt;/em&gt; directory&lt;br /&gt;
&lt;code&gt;cd linux&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Edit debian/changelog:&lt;br /&gt;
&lt;code&gt;xvi debian/changelog&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Locate the text string:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;linux (4.14.17-1) unstable; urgency=medium&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;and remove the number 17 and insert &lt;em&gt;20&lt;/em&gt;, instead, i.e.,&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;linux (4.14.&lt;em&gt;20&lt;/em&gt;-1) unstable; urgency=medium&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;save your changes.&lt;/p&gt;

&lt;p&gt;Now we are ready to build the kernel &#039;&lt;em&gt;the Debian way&lt;/em&gt;&#039; as we did in previous post(s).&lt;/p&gt;

&lt;p&gt;Added bonus &lt;img src=&quot;https://metztli.blog/rsc/smilies/icon_wink.gif&quot; title=&quot;&amp;amp;#59;&amp;amp;#41;&quot; alt=&quot;&amp;amp;#59;&amp;amp;#41;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt;&lt;br /&gt;
Likely fix for Bug#885166: instability with 4.14 regarding KVM virtualization&lt;br /&gt;
&lt;a href=&quot;https://lists.debian.org/debian-kernel/2017/12/msg00374.html&quot; target=&quot;_blank&quot;&gt;https://lists.debian.org/debian-kernel/2017/12/msg00374.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;since referenced &lt;em&gt;commit&lt;/em&gt;:&lt;br /&gt;
&lt;a href=&quot;https://lists.debian.org/debian-kernel/2018/02/msg00173.html&quot; target=&quot;_blank&quot;&gt;https://lists.debian.org/debian-kernel/2018/02/msg00173.html&lt;/a&gt; seems to be already applied to Linux kernel source tree 4.14.20.&lt;/p&gt;

&lt;p&gt;YES! Bug#885166 has been fixed in 4.14.20!...&lt;br /&gt;
&quot;If I used git correctly, then 4.14.20 already has 2a266f23550be997d783f27e704b9b40c4010292, so I tried 4.14.19. 4.14.19 on the one virt host that had the most violent failures failed in the first hour of operation, but with a slightly different error behavior that I was used to. I am therefore not sure whether we are not talking about multiple issues, one of them having been fixed somewhere in between 4.14.13 and 4.14.19.&quot;&lt;br /&gt;
...&lt;br /&gt;
&lt;a href=&quot;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=885166&quot; target=&quot;_blank&quot;&gt;https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=885166&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; &lt;a href=&quot;https://lists.debian.org/debian-kernel/2018/02/msg00196.html&quot; target=&quot;_blank&quot;&gt;RE: x86: Support for lazy preemption in Debian Linux 4.14.20 AMD64&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;font color=&quot;#CC0000&quot;&gt;DISCLAIMER&lt;/font&gt;&lt;img src=&quot;https://metztli.blog/rsc/smilies/graybigrazz.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#80;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#80;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt; although due diligence has been applied, this resource is made available for testing/evaluation purposes on an &lt;font color=&quot;#CC0000&quot;&gt;AS IS&lt;/font&gt; basis.  The procedure only reflects my own modifications, my limited testing, and the potential user who executes the procedures assumes all risks.&lt;/p&gt;

&lt;p&gt;Please do not hold me or Metztli Information Technology responsible if the information provided here does not achieve the desired result. The information is provided &lt;font color=&quot;#CC0000&quot;&gt;AS IS&lt;/font&gt; and with the hope that it may be useful to the Internet community --especially those who desire reiser4 on GNU/Linux Debian.&lt;/p&gt;

&lt;p&gt;Nevertheless, there is no implicit or explicit guarantee that the information presented here is accurate --even though due diligence was exercised during the procedure.  Accordingly, if an user(s) decide to download and/or implement the procedure and/or shell commands described here s/he or them, do so at her, his, or their own risk. You have been forewarned.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://metztli.blog/Metztli-bits/hacking-a-reiser4-zstd-sfrn&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;https://metztli.it/b2evolution/&quot;&gt;Metztli b2evo for PHP 8&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div><div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_28" poster="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/p146/cempohualli.png?mtime=1519568003"><source src="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/p146/cempohualli.mp4?mtime=1519565220" type="video/mp4" align="center" /></video></div></div><p>(Use your right <em>mouse</em> pointer on image to show <em>video controls</em> and/or to <em>Open video in new tab</em> -- recommended)</p>
<hr />
<p></p>
<p>Official 4.14.x iterations of Debian kernel packaging for Unstable (Sid) ended with 4.14.17-1. Accordingly, there is no Debian kernel packaging for current upstream release Linux 4.14.20 and much less named its <em>Nahuatl</em> equivalent: <em>Cempohualli</em>: twenty and <em>Ce</em>: one. Moreover, the currently available Reiser4 patch is for kernel 4.14.1+; thus I had to find a way to debian<em>ize</em> last kernel packaging if it was to successfully wrap around pristine <a href="https://www.kernel.org/" target="_blank">kernel.org</a>'s Linux 4.14.<em><strong>20</strong></em>. The latter, i.e., <em>Cempohualli</em>, is a beautiful number; full of symbolism for existing <em>Nahuatl speaking <strong>real</strong> Mexicah</em>. What follows are my annotations to carry out the somewhat involved build procedure.</p>

<p>First oddity. Beginning with upstream kernel 4.14.18, Debian kernel packaging for 4.14.17-1 will fail to build:</p>

<p>  </p><blockquote><p>LD      vmlinux.o<br />
  MODPOST vmlinux.o<br />
arch/x86/entry/syscall_64.o: In function `x32_enable':<br />
syscall_64.c:(.init.text+0x8): undefined reference to `system_call_fast_compare_end'<br />
syscall_64.c<img src="https://metztli.blog/rsc/smilies/icon_sad.gif" title="&amp;#58;&amp;#40;" alt="&amp;#58;&amp;#40;" class="middle" width="15" height="15" />.init.text+0xe): undefined reference to `system_call_fast_compare'<br />
syscall_64.c:(.init.text+0x19): undefined reference to `system_call_mask_compare_end'<br />
syscall_64.c<img src="https://metztli.blog/rsc/smilies/icon_sad.gif" title="&amp;#58;&amp;#40;" alt="&amp;#58;&amp;#40;" class="middle" width="15" height="15" />.init.text+0x1f): undefined reference to `system_call_mask_compare'<br />
syscall_64.c:(.init.text+0x33): undefined reference to `system_call_fast_compare'<br />
syscall_64.c<img src="https://metztli.blog/rsc/smilies/icon_sad.gif" title="&amp;#58;&amp;#40;" alt="&amp;#58;&amp;#40;" class="middle" width="15" height="15" />.init.text+0x3f): undefined reference to `system_call_mask_compare'<br />
make[5]: *** [vmlinux] Error 1<br />
[]/build/kernel/tekitl-4.14.18/linux/Makefile:998: recipe for target 'vmlinux' failed<br />
make[4]: *** [sub-make] Error 2<br />
Makefile:146: recipe for target 'sub-make' failed<br />
make[3]: *** [__sub-make] Error 2<br />
Makefile:24: recipe for target '__sub-make' failed<br />
make[3]: Leaving directory '[]/build/kernel/tekitl-4.14.18/linux/debian/build/build_amd64_none_amd64<br />
make[2]: *** [debian/stamps/build_amd64_none_amd64] Error 2<br />
debian/rules.real:190: recipe for target 'debian/stamps/build_amd64_none_amd64' failed<br />
make[2]: Leaving directory '[]/build/kernel/tekitl-4.14.18/linux'<br />
make[1]: *** [binary-arch_amd64_none_amd64_real] Error 2<br />
debian/rules.gen:24: recipe for target 'binary-arch_amd64_none_amd64_real' failed<br />
make[1]: Leaving directory '[]/build/kernel/tekitl-4.14.18/linux'<br />
make: *** [binary-arch] Error 2<br />
debian/rules:50: recipe for target 'binary-arch' failed<br />
dpkg-buildpackage: error: fakeroot debian/rules binary-arch gave error exit status 2</p></blockquote>

<p>Accordingly, if I wanted to build current upstream Linux 4.14.20 'the <em>Debian way</em>', i.e., to generate DEBs as well as UDEBs suitable for Metztli-Reiser4 netboot Debian-Installer (d-i), I had to figure out the issue above.</p>

<p>After considerable effort I found there are a few updated patches we must apply from current Debian kernel packaging master 4.15.4-1 git repository to our Debian kernel packaging unstable (Sid) 4.14.17-1 for this latter to build my downloaded Linux 4.14.20 from upstream:</p>

<p>debian/patches/debian/gitignore.patch<br />
debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch</p>

<p>Additionally, I modified 4.14.17-1 packaging<br />
debian/patches/series<br />
<a href="/media/blogs/Metztli-bits/quick-uploads/p145/debian-patches-series.png?mtime=1519135458" target="_blank"><br />
<img src="/media/blogs/Metztli-bits/quick-uploads/p145/debian-patches-series.png?mtime=1519135458" width="500" height="100" /></a></p>

<p>because 4.14.20 newer kernel already had these security fixes applied.</p>

<p>Now, assuming the Debian kernel packaging default , i.e., to build the <em>real-time</em> (RT) kernel and headers, we get second oddity.</p>

<p>Although the first set of patches for the Debian 'vanilla' kernel applied smoothly, if the developer desired to build the <em>real-time</em> (RT) kernel and headers to subsequently patch <em><strong>all</strong></em> with <em>reiser4</em> -- which I did -- I had to implement another small hack to fix the following issue:</p>

<blockquote><p>Applying patch features/all/rt/preempt-lazy-support.patch<br />
Applying patch features/all/rt/ftrace-Fix-trace-header-alignment.patch<br />
Applying patch features/all/rt/x86-preempt-lazy.patch<br />
1 out of 5 hunks FAILED<br />
Patch features/all/rt/x86-preempt-lazy.patch does not apply (enforce with -f)<br />
debian/rules.real:145: recipe for target 'debian/stamps/source_rt' failed<br />
make[2]: *** [debian/stamps/source_rt] Error 1<br />
make[2]: Leaving directory '/[]/build/kernel/nahui.matlactetl_onnahui.cempohualli/linux'<br />
debian/rules.gen:989: recipe for target 'source_rt_real' failed<br />
make[1]: *** [source_rt_real] Error 2<br />
make[1]: Leaving directory '/[]/build/kernel/nahui.matlactetl_onnahui.cempohualli/linux'<br />
debian/rules:26: recipe for target 'source' failed<br />
make: *** [source] Error 2</p></blockquote>

<p>Evidently debian/patches/features/all/rt/x86-preempt-lazy.patch applied by <em>quilt</em> with fuzz=0 fails at arch/x86/include/asm/thread_info.h since the latter has an extra line of code in the Linux 4.14.20 source tree:<br />
<code>u32                     status;         /* thread synchronous flags */</code></p>

<p>which <em>quilt</em> attempted to patch <em>thread_info.h</em> to be subsequently copied over into RT kernel build directory:<br />
debian/build/source_rt/arch/x86/include/asm/thread_info.h</p>

<p>thus I modified slightly debian/patches/features/all/rt/x86-preempt-lazy.patch <sup>1</sup> so it could apply <em>after</em> the above referenced line of code.</p>

<p>It worked...</p>

<p><em><strong>Otherwise</strong></em>, if you do not want to build the <em>real-time</em> (RT) kernel and headers, edit with a <a href="https://sourceforge.net/projects/metztli-reiser4/files/xvi_tiny-text-editor/" target="_blank">text editor (like <em><strong>xvi</strong></em></a> <img src="https://metztli.blog/rsc/smilies/icon_wink.gif" title="&amp;#59;&amp;#41;" alt="&amp;#59;&amp;#41;" class="middle" width="15" height="15" /><br />
<code>xvi debian/config/defines</code></p>

<p>and locate the lines:</p>

<p>[featureset-rt_base]<br />
enabled: true</p>

<p>and change 'true' text string to <em>false</em>, i.e.,</p>

<p>[featureset-rt_base]<br />
enabled: <em>false</em></p>

<p>save your changes and close debian/config/defines</p>

<p>In summary. I used last 'official' Debian kernel packaging 4.14.17-1 for <em>Unstable</em> (<em>Sid</em>) as base. I then applied the above operations plus <a href="https://metztli.it/blog/index.php/building-new-reiser4-software-format?blog=4" target="_blank">other <em>reiser4</em> hacks for <em>Stretch</em> elaborated in previous post(s)</a>; thus generating a <a href="https://github.com/Metztli/reiser4-debian-kernel-packaging-4.14.20" target="_blank"><em>Metztli Reiser4</em> Debian kernel packaging for 4.14.<em>Cempohualli</em>...er, <em>20</em>, suitable to build a stretch-backports kernel</a> and which resulting source code I subsequently uploaded to <em>Github</em>.</p>

<div><a href="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/p145/cempohualli-ce.jpg?mtime=1519569282" title="Real Mexicah used a base Cempohualli, i.e., twenty, for their number theory and cherished the expressiveness, non-linearity, of their language: Nahuatl. Those characteristics enhanced their mathematical acumen to apprehend, appreciate, and imitate, nature and Nehnencacitlalli [&#039;the cosmos&#039;]. In stark contrast, pseudo-&#039;Mexicans&#039; from 1821 onward, i.e., descendants of Spanish scum invaders who -- like their mother country Spain -- lag several centuries behind in science and technology[1], only have tainted their colonized masses with infinite ignorance.

[1] Kant." rel="lightbox[p145]" id="link_296"><img title="Tonalpohualli: &apos;Aztec Calendar&apos;" alt="Hacking a Reiser4/Zstd (SFRN 4.0.2) -patched Build of Debian Linux 4.14.Cempohualli-Ce for AMD64." src="https://metztli.blog/media/blogs/Metztli-bits/quick-uploads/p145/.evocache/cempohualli-ce.jpg/fit-320x320.jpg?mtime=1519569282" width="320" height="261" class="loadimg" /></a><div><i>Real Mexicah used a base Cempohualli, i.e., twenty, for their number theory and cherished the expressiveness, non-linearity, of their language: Nahuatl. Those characteristics enhanced their mathematical acumen to apprehend, appreciate, and imitate, nature and Nehnencacitlalli ['the cosmos']. In stark contrast, pseudo-'Mexicans' from 1821 onward, i.e., descendants of Spanish scum invaders who -- like their mother country Spain -- lag several centuries behind in science and technology[1], only have tainted their colonized masses with infinite ignorance.<br />
<br />
[1] Kant.</i></div></div>
<hr />
<p></p>
<h3>Building Reiser4/Zstd (SFRN 4.0.2) stretch-backports Linux 4.14.Cempohualli-Ce for AMD64</h3>
<p></p>
<p>Assuming a proper development environment to <a href="https://metztli.it/blog/index.php/coyolxauhqui-build-reiser4-patched-linux?blog=4" target="_blank">build our kernel '<em>the Debian way</em>' as elaborated <em>a priori</em> in other post(s)</a>, we can build upstream Linux kernel 4.14.20, thus:</p>

<p><code>mkdir --verbose nahui.matlactetl_onnahui.cempohualli</code><br />
...er, well that's <em>Nahuatl</em> for 4.14.20 -- which you could name your working directory. I will just make a symbolic link:</p>

<p><code>ln -s nahui.matlactetl_onnahui.cempohualli 4.14.20</code></p>

<p><code>cd nahui.matlactetl_onnahui.cempohualli</code></p>

<p>Download Debian kernel packaging hacked for Linux 4.14.20 from <em>GitHub</em>:<br />
<code class="codespan">git clone https://github.com/Metztli/reiser4-debian-kernel-packaging-4.14.20.git linux</code></p>

<p>(Do something while it downloads as it approaches 1Gb of data)</p>

<p>After the cloning procedure finishes, we make a linux sym link:</p>

<p><code>ln -s reiser4-debian-kernel-packaging-4.14.20 linux</code></p>

<p>then download kernel 4.14.20 from upstream:<br />
<code>wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.20.tar.xz</code></p>

<p>Let's create a symbolic link in the format that Debian kernel packaging expects:<br />
<code>ln -s linux-4.14.20.tar.xz linux_4.14.20.orig.tar.xz</code></p>

<p>and change into <em>linux</em> directory<br />
<code>cd linux</code></p>

<p>Edit debian/changelog:<br />
<code>xvi debian/changelog</code></p>

<p>Locate the text string:</p>
<blockquote><p>linux (4.14.17-1) unstable; urgency=medium</p></blockquote>

<p>and remove the number 17 and insert <em>20</em>, instead, i.e.,</p>

<blockquote><p>linux (4.14.<em>20</em>-1) unstable; urgency=medium</p></blockquote>

<p>save your changes.</p>

<p>Now we are ready to build the kernel '<em>the Debian way</em>' as we did in previous post(s).</p>

<p>Added bonus <img src="https://metztli.blog/rsc/smilies/icon_wink.gif" title="&amp;#59;&amp;#41;" alt="&amp;#59;&amp;#41;" class="middle" width="15" height="15" /><br />
Likely fix for Bug#885166: instability with 4.14 regarding KVM virtualization<br />
<a href="https://lists.debian.org/debian-kernel/2017/12/msg00374.html" target="_blank">https://lists.debian.org/debian-kernel/2017/12/msg00374.html</a></p>

<p>since referenced <em>commit</em>:<br />
<a href="https://lists.debian.org/debian-kernel/2018/02/msg00173.html" target="_blank">https://lists.debian.org/debian-kernel/2018/02/msg00173.html</a> seems to be already applied to Linux kernel source tree 4.14.20.</p>

<p>YES! Bug#885166 has been fixed in 4.14.20!...<br />
"If I used git correctly, then 4.14.20 already has 2a266f23550be997d783f27e704b9b40c4010292, so I tried 4.14.19. 4.14.19 on the one virt host that had the most violent failures failed in the first hour of operation, but with a slightly different error behavior that I was used to. I am therefore not sure whether we are not talking about multiple issues, one of them having been fixed somewhere in between 4.14.13 and 4.14.19."<br />
...<br />
<a href="https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=885166" target="_blank">https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=885166</a></p>
<hr />
<p><sup>1</sup> <a href="https://lists.debian.org/debian-kernel/2018/02/msg00196.html" target="_blank">RE: x86: Support for lazy preemption in Debian Linux 4.14.20 AMD64</a></p>

<p><font color="#CC0000">DISCLAIMER</font><img src="https://metztli.blog/rsc/smilies/graybigrazz.gif" title="&amp;#58;&amp;#80;" alt="&amp;#58;&amp;#80;" class="middle" width="15" height="15" /> although due diligence has been applied, this resource is made available for testing/evaluation purposes on an <font color="#CC0000">AS IS</font> basis.  The procedure only reflects my own modifications, my limited testing, and the potential user who executes the procedures assumes all risks.</p>

<p>Please do not hold me or Metztli Information Technology responsible if the information provided here does not achieve the desired result. The information is provided <font color="#CC0000">AS IS</font> and with the hope that it may be useful to the Internet community --especially those who desire reiser4 on GNU/Linux Debian.</p>

<p>Nevertheless, there is no implicit or explicit guarantee that the information presented here is accurate --even though due diligence was exercised during the procedure.  Accordingly, if an user(s) decide to download and/or implement the procedure and/or shell commands described here s/he or them, do so at her, his, or their own risk. You have been forewarned.</p><div class="item_footer"><p><small><a href="https://metztli.blog/Metztli-bits/hacking-a-reiser4-zstd-sfrn">Original post</a> blogged on <a href="https://metztli.it/b2evolution/">Metztli b2evo for PHP 8</a>.</small></p></div>]]></content:encoded>
								<comments>https://metztli.blog/Metztli-bits/hacking-a-reiser4-zstd-sfrn#comments</comments>
			<wfw:commentRss>https://metztli.blog/Metztli-bits/?tempskin=_rss2&#38;disp=comments&#38;p=145</wfw:commentRss>
		</item>
				<item>
			<title>From Ксения [Xenia] to Мария [Maria] With ffmpeg, gnome-subtitles, and mencoder</title>
			<link>https://metztli.blog/Metztli-bits/xenia</link>
			<pubDate>Sun, 08 Feb 2015 21:03:00 +0000</pubDate>			<dc:creator>Jose</dc:creator>
			<category domain="alt">open source</category>
<category domain="alt">Debian</category>
<category domain="main">media creation</category>			<guid isPermaLink="false">115@https://metztli.blog/</guid>
						<description>&lt;div&gt;&lt;div class=&quot;mediajs_block&quot;&gt;&lt;video class=&quot;html5_mediaelementjs_player &quot; id=&quot;html5_mediaelementjs_29&quot; poster=&quot;https://metztli.blog/media/blogs/Metztli-bits/Nenetl/Cihuatl.png?mtime=1628033089&quot;&gt;&lt;source src=&quot;https://metztli.blog/media/blogs/Metztli-bits/Nenetl/Cihuatl.mp4?mtime=1628036441&quot; type=&quot;video/mp4&quot; align=&quot;center&quot; /&gt;&lt;/video&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;font color=&quot;#f70000&quot;&gt;08-03-2021 update:&lt;/font&gt;&lt;br /&gt;
T̶h̶i̶s̶ ̶v̶i̶d̶e̶o̶ ̶i̶s̶ ̶a̶g̶e̶-̶r̶e̶s̶t̶r̶i̶c̶t̶e̶d̶ ̶a̶n̶d̶ ̶o̶n̶l̶y̶ ̶a̶v̶a̶i̶l̶a̶b̶l̶e̶ ̶o̶n̶ ̶Y̶o̶u̶T̶u̶b̶e̶  &lt;a href=&quot;https://www.rt.com/usa/521456-youtube-ceo-free-expression-award/&quot; target=&quot;_blank&quot;&gt;Fuck Youtube CEO Polish CENSOR and ex-sister-in-law to Google&#039;s co-founder&lt;/a&gt;&lt;sup&gt;1&lt;/sup&gt;!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
I used &lt;a href=&quot;http://www1.mplayerhq.hu/design7/dload.html&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;&lt;strong&gt;Mplayer&#039;s mencoder&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; (built from source) to render the &lt;em&gt;English&lt;/em&gt;/&lt;em&gt;Russian&lt;/em&gt; subtitles in the PoC video above -- as I was trying out the upcoming GNU/Linux Debian &lt;em&gt;Jessie&lt;/em&gt; distribution encapsulated inside a &lt;em&gt;KVM&lt;/em&gt; virtual machine.&lt;/p&gt;

&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;/media/blogs/Metztli-bits/01312015/debianjessie01-30-2015.png?mtime=1422772217&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Debian: virt-manager managed KVM Jessie instance&quot; title=&quot;Debian: virt-manager managed KVM Jessie instance&quot; src=&quot;/media/blogs/Metztli-bits/01312015/debianjessie01-30-2015.png?mtime=1422772217&quot; width=&quot;490&quot; height=&quot;275&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
In the past I had used &lt;em&gt;mencoder&lt;/em&gt; to add Spanish subtitles to a video, but this time I was challenged with Russian subtitles, as those initially would not render properly in the resulting video. As a matter of fact, I was not even able to install &lt;em&gt;mencoder&lt;/em&gt; from the Debian Jessie and Sid repositories due to libdvdnav4 dependency issue. Thus, the ephemeral viable option was to build mplayer&#039;s &lt;em&gt;mencoder&lt;/em&gt; from source --which will skip support for DVD during the configure phase. &lt;/p&gt;

&lt;p&gt;To solve the first issue, during Debian Jessie installation routine in the virtual machine I selected Russian as an additional language:&lt;/p&gt;

&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;/media/blogs/Metztli-bits/01312015/ru_ru.utf-8.png?mtime=1422975116&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Debian Jessie installation: add ru_RU.UTF-8 locale during installation&quot; title=&quot;Debian Jessie installation: add ru_RU.UTF-8 locale during installation&quot; src=&quot;/media/blogs/Metztli-bits/01312015/ru_ru.utf-8.png?mtime=1422975116&quot; width=&quot;490&quot; height=&quot;398&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;I can verify the above action by examining /etc/locale.gen; I can see (scrolling to the bottom) that, in effect, I enabled 2 languages in addition to English: Russian and Mexico&#039;s Spanish dialect, all UTF-8.&lt;/p&gt;

&lt;div class=&quot;image_block&quot;&gt;&lt;img alt=&quot;Examining Debian Jessie /etc/locale.gen&quot; title=&quot;Examining Debian Jessie /etc/locale.gen&quot; src=&quot;/media/blogs/Metztli-bits/01312015/etc-locale_gen.png?mtime=1423043733&quot; width=&quot;467&quot; height=&quot;267&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;For the record, at the top of the /etc/locale.gen file the user is advised to execute:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;codespan&quot;&gt;/usr/sbin/locale-gen&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;after &lt;strong&gt;manually&lt;/strong&gt;&lt;/em&gt; enabling any locale (by removing the hash symbol from the beginning of the directive.)&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Building mplayer -- defaults to building mencoder, too -- from source in Debian Jessie.&lt;/h3&gt;

&lt;p&gt;I update Debian repositories:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;apt&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;get&amp;nbsp;update&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Since I am getting mplayer/mencoder code via &lt;em&gt;Subversion&lt;/em&gt;:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;apt&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;get&amp;nbsp;install&amp;nbsp;subversion&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Then I get the mplayer/mencoder source code:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;svn&amp;nbsp;checkout&amp;nbsp;svn&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;amc_comment&quot;&gt;//svn.mplayerhq.hu/mplayer/trunk&amp;nbsp;mplayer&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;and directory &lt;em&gt;mplayer&lt;/em&gt; will be created at my current directory location.&lt;/p&gt;

&lt;p&gt;I change directory into mplayer:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;cd&amp;nbsp;mplayer&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Since I am on Debian, and after scanning the README file, I can simply download a couple of DEBs:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;apt&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;get&amp;nbsp;install&amp;nbsp;git&amp;nbsp;devscripts&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;and then could simply execute the script under the debian directory to&lt;/p&gt;

&lt;p&gt;&quot;&lt;em&gt;configure, compile and build a proper Debian .deb package with only one command:&lt;/em&gt;&quot;&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;debian&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;daily&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;build&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;sh&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;b&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;But no. Since I am in a non-stable Debian, the resulting mencoder package may still refuse to install. Thus, I will download the relevant DEB packages manually:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;apt&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;get&amp;nbsp;install&amp;nbsp;ffmpeg&amp;nbsp;docbook&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;xsl&amp;nbsp;ladspa&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;sdk&amp;nbsp;libenca&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libaa1&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libasound2&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libaudio&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libcaca&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libcdparanoia&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libbluray&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libdirectfb&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libdts&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libesd0&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libfaad&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libfontconfig1&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libfreetype6&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libfribidi&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libgif&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libgl1&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mesa&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libgtk2.0&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libjack&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libjpeg&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;liblircclient&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;liblivemedia&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;liblzo2&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libmp3lame&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libmpcdec&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libncurses5&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libopenal&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libpng12&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libpulse&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libschroedinger&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libsdl1.2&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libsmbclient&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libspeex&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libsvga1&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libswscale&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libtheora&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libvorbis&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libvorbisidec&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libx11&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libx264&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;#160;&amp;#160;libxext&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libxinerama&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libxv&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libxvidcore&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libxvmc&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libxxf86dga&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libxxf86vm&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;libvdpau&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;pkg&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;config&amp;nbsp;vstream&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;client&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;x11proto&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;core&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;xsltproc&amp;nbsp;yasm&amp;nbsp;zlib1g&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&amp;nbsp;mpg123&amp;nbsp;libmpg123&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dev&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;After the above operation completes, then we are ready to build mplayer/mencoder from our downloaded source snapshot. Since I am in the mplayer directory:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_keyword&quot;&gt;./&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;configure&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;enable&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;gui&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;(sample partial output):&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;[...]&lt;br /&gt;
Creating config.mak&lt;br /&gt;
Creating config.h&lt;/p&gt;

&lt;p&gt;Config files successfully generated by ./configure --enable-gui !&lt;/p&gt;

&lt;p&gt;  Install prefix: /usr/local&lt;br /&gt;
  Data directory: /usr/local/share/mplayer&lt;br /&gt;
  Config direct.: /usr/local/etc/mplayer&lt;/p&gt;

&lt;p&gt;  Byte order: little-endian&lt;br /&gt;
  Optimizing for: native&lt;br /&gt;
[...]&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;font color=&quot;red&quot;&gt;&lt;em&gt;Note:&lt;/em&gt;&lt;/font&gt; the default installation directory is /usr/local/ and the &lt;em&gt;--enable-gui&lt;/em&gt; option is, well, optional. As usual we could change the installation directory and disable/enable options. Simply type &lt;em&gt;./configure --help&lt;/em&gt; for an overview.&lt;/p&gt;

&lt;p&gt;Additionally, if you will be downloading codecs, make sure to place the extracted files ending in &lt;em&gt;&lt;strong&gt;.&lt;/strong&gt;so&lt;/em&gt; under the directory &lt;code&gt;/usr/local/lib/codecs/&lt;/code&gt;&lt;br /&gt;
&lt;font color=&quot;orange&quot;&gt;&lt;em&gt;End of note.&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;In this particular case for this post, I follow a successfully completed ./configure operation with:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;make&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;make&amp;nbsp;install&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You may be required to acquire root privilege to &lt;em&gt;make install&lt;/em&gt; into /usr/local --as is usual any time you install software from repositories.&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Cihuatl Archetype And The Human Subconsciousness.&lt;/h3&gt;
&lt;p&gt;Unless one is brainwashed by one of those three(3) major patriarchal strains spread by fanatics throughout the world imposing a misogynist attitude, the archetype of &lt;em&gt;&lt;strong&gt;Cihuatl&lt;/strong&gt;&lt;/em&gt;, &lt;em&gt;Nahuatl&lt;/em&gt; -- Mexico&#039;s language par excellence -- which translates as &lt;em&gt;женщина&lt;/em&gt; in Russian, &lt;em&gt;Woman&lt;/em&gt; in English, and &lt;em&gt;Mujer&lt;/em&gt; in Spanish, is fascinating. It beams down onto a man&#039;s subconsciousness when least expected.&lt;/p&gt;

&lt;p&gt;I happen to add an extra feature supporting &lt;a href=&quot;http://rutube.ru/&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;&lt;strong&gt;RuTube&lt;/strong&gt; videos&lt;/em&gt;&lt;/a&gt; in &lt;a href=&quot;https://www.openshift.com/&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;&lt;strong&gt;b2evolution&lt;/strong&gt; for &lt;strong&gt;Openshift&lt;/strong&gt; PaaS cloud&lt;/em&gt;&lt;/a&gt; hosted at my &lt;a href=&quot;http://nepohualtzintzin.com&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;&lt;strong&gt;Nepohualtzintzin&lt;/strong&gt; GitHub&lt;/em&gt;&lt;/a&gt; repository. And during testing I came across &lt;a href=&quot;http://rutube.ru/video/cf126c6e54c8e30758fffe75503ca644/&quot; target=&quot;_blandk&quot;&gt;&lt;em&gt;Miss MAXIM 2013 (&lt;strong&gt;Ксения Кайгородова&lt;/strong&gt;: &lt;strong&gt;Xenia Kaygorodova&lt;/strong&gt;)&lt;/em&gt;&lt;/a&gt;. Thus the seed of a proof of concept -- or PoC -- was generated as result of a Russian media video and my chance listening of a melody sung in Spanish: &lt;em&gt;¿Tú De Que Vas?&lt;/em&gt; -- loosely translated as, &lt;em&gt;Do You Even Need To Ask?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Thus, I used &lt;a href=&quot;http://youtube-dl.org/&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;&lt;strong&gt;youtube-dl&lt;/strong&gt; utility&lt;/em&gt;&lt;/a&gt; -- available also from Debian repositories. If it does not exist in your system, all you have to do is:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;apt&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;get&amp;nbsp;install&amp;nbsp;youtube&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dl&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;and subsequently downloaded the video from &lt;em&gt;RuTube&lt;/em&gt; with command:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;youtube&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;dl&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;o&amp;nbsp;nenetl&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;flv&amp;nbsp;http&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;amc_comment&quot;&gt;//rutube.ru/video/cf126c6e54c8e30758fffe75503ca644&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;the option &lt;em&gt;&lt;strong&gt;-o&lt;/strong&gt;&lt;/em&gt; is just to assign a name to the file of interest; otherwise, you will end up with an unintelligeble alphanumeric-named file. As for the word &lt;em&gt;nenetl&lt;/em&gt;, it is akin to a female image, ideal &lt;em&gt;form&lt;/em&gt;, approaching an archetype.&lt;/p&gt;

&lt;p&gt;Assuming current location is where the downloaded file resides, I create an ephemeral directory and change into it:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;mkdir&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;verbose&amp;nbsp;ephemeral&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;cd&amp;nbsp;ephemeral&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At this directory I will operate as follows:&lt;/p&gt;

&lt;p&gt;used &lt;em&gt;&lt;strong&gt;ffmpeg&lt;/strong&gt;&lt;/em&gt; in order to extract the images from the &lt;em&gt;nenetl&lt;/em&gt;.flv video, thus:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc4&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;ffmpeg&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;i&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;../&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;nenetl&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;flv&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;f&amp;nbsp;image2&amp;nbsp;images&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;05d&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;png&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The extracted images will occupy around 1.5 Gb of space. Now, by rough trial and error, I aimed to fit a relevant subset of the images into an interval equal to the length of the melody playing in the background. The final command -- referenced below -- outputs a &lt;em&gt;nenetl&lt;/em&gt;_slideshow.mp4 which lasts approximately the length of the melody:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc5&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;ffmpeg&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;r&amp;nbsp;6.2&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;ss&amp;nbsp;00&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;00&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;03&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;i&amp;nbsp;images&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;%&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;05d&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;png&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;v&amp;nbsp;libx264&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;r&amp;nbsp;30&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;pix_fmt&amp;nbsp;yuv420p&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;../&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;nenetl_slideshow&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I had to decrease the intake of the images to 6.2 frames per second (fps) by using the &lt;em&gt;&lt;strong&gt;-r&lt;/strong&gt;&lt;/em&gt; option to ffmpeg; thus it gives the video somewhat of a slow motion &lt;img src=&quot;https://metztli.blog/rsc/smilies/graylaugh.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#41;&amp;amp;#41;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#41;&amp;amp;#41;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Also, by feeding the &lt;em&gt;&lt;strong&gt;-ss&lt;/strong&gt;&lt;/em&gt; to ffmpeg I advanced the resulting slideshow by hh:mm:&lt;em&gt;&lt;strong&gt;03&lt;/strong&gt;&lt;/em&gt; seconds. Please type:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc6&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;man&amp;nbsp;ffmpeg&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;for additional information relevant to options specified.&lt;/p&gt;

&lt;p&gt;Once we are satisfied with the outcome, we can erase all the extracted &lt;em&gt;&lt;strong&gt;.&lt;/strong&gt;png&lt;/em&gt; (picture) files at our current ephemeral directory and thus recover our disk space.&lt;/p&gt;

&lt;p&gt;Subsequently, I merged the slideshow file with the .mp3 &lt;em&gt;Franco de Vita&lt;/em&gt; audio file as follows:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc7&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;ffmpeg&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;i&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;../&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;nenetl_slideshow&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp4&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;i&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;../&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;Franco_De_Vita&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;Tu_De_Que_Vas&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp3&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;map&amp;nbsp;0&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;map&amp;nbsp;1&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;codec&amp;nbsp;copy&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;shortest&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;../&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;nenetl&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Cool! Now we have the length of the melody that is roughly equivalent to the most visually interesting media. We can verify it with the &lt;em&gt;mplayer&lt;/em&gt; that was built above:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc8&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;mplayer&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;../&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;nenetl&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Or, alternatively, since we enabled the graphical user interface (GUI) as an argument during ./configure&lt;br /&gt;
phase:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc9&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;gmplayer&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;../&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;nenetl&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;/media/blogs/Metztli-bits/01312015/gmplayer_nenetl.jpg?mtime=1423335272&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Using Hayraphon skin in GUI-enabled mplayer: gmplayer&quot; title=&quot;Using Hayraphon skin in GUI-enabled mplayer: gmplayer&quot; src=&quot;/media/blogs/Metztli-bits/01312015/gmplayer_nenetl.jpg?mtime=1423335272&quot; width=&quot;490&quot; height=&quot;275&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font color=&quot;red&quot;&gt;&lt;em&gt;Note:&lt;/em&gt;&lt;/font&gt; If you accepted the default installation path for the mplayer build, please make sure to install your skins under &lt;code&gt;/usr/local/share/mplayer/skins/&lt;/code&gt;. For instance, the location for the &lt;a href=&quot;http://www1.mplayerhq.hu/design7/dload.html#skins&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Hayraphon&lt;/em&gt; skin&lt;/a&gt; in the above snapshot would be &lt;code&gt;/usr/local/share/mplayer/skins/hayraphon&lt;/code&gt;
&lt;font color=&quot;orange&quot;&gt;&lt;em&gt;End of note.&lt;/em&gt;&lt;/font&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;h3&gt;Adding Subtitles with GNOME Subtitles Editor&lt;/h3&gt;

&lt;p&gt;In Debian, we install the application as:&lt;br /&gt;
&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc0&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;apt&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;get&amp;nbsp;install&amp;nbsp;gnome&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;subtitles&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;After it is completely installed, we start it from our shell:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;gnome&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;subtitles&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;From topmost menu, we select &lt;em&gt;Video&lt;/em&gt;, &lt;em&gt;Open&lt;/em&gt; from the ensuing cascaded menu, and locate the &lt;em&gt;nenetl&lt;/em&gt;.mp4 video/audio media we created before. The media file will be embedded in the upper section of the application.&lt;/p&gt;

&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;/media/blogs/Metztli-bits/01312015/gnome-subtitles_select-video.png?mtime=1423310968&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;gnome-subtitles: open video&quot; title=&quot;gnome-subtitles: open video&quot; src=&quot;/media/blogs/Metztli-bits/01312015/gnome-subtitles_select-video.png?mtime=1423310968&quot; width=&quot;490&quot; height=&quot;328&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;We select the leftmost blank paper icon labeled &lt;em&gt;New&lt;/em&gt; to start creating subtitles for our video -- as it is played using the controls under the embedded media. Further, as our embedded media is played, we can add another line of text by pressing the plus icon labeled &lt;em&gt;Insert&lt;/em&gt; located in the upper row of icons -- just below the uppermost menu.&lt;/p&gt;

&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;/media/blogs/Metztli-bits/01312015/gnome-subtitles_new-_srt.png?mtime=1423312648&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;gnome-subtitles: new/open .srt file&quot; title=&quot;gnome-subtitles: new/open .srt file&quot; src=&quot;/media/blogs/Metztli-bits/01312015/gnome-subtitles_new-_srt.png?mtime=1423312648&quot; width=&quot;490&quot; height=&quot;327&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;From aforementioned row we also can save our newly created subtitles file by selecting the green arrow pointing down in a drawer icon, labeled as &lt;em&gt;Save&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The named file will default to be saved with an extension &lt;em&gt;&lt;strong&gt;.&lt;/strong&gt;srt&lt;/em&gt; and UTF-8 locale.&lt;/p&gt;

&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;/media/blogs/Metztli-bits/01312015/gnome-subtitles_new-save_srt.png?mtime=1423336361&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Save dialog prompting format and location of subtitles file.&quot; title=&quot;Save dialog prompting format and location of subtitles file.&quot; src=&quot;/media/blogs/Metztli-bits/01312015/gnome-subtitles_new-save_srt.png?mtime=1423336361&quot; width=&quot;490&quot; height=&quot;381&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;After we are satisfied assigning subtitles to relevant sections of the embedded audio/visual stream, we are ready to embed the subtitles file into the actual &lt;em&gt;nenetl&lt;/em&gt;.mp4 media. For that we will use &lt;em&gt;mencoder&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Assuming our location continues to be our ephemeral directory that we created for this set of tasks and we have a resulting xenia.srt subtitles file also here, we type next command:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;mencoder&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;../&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;nenetl&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp4&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;oac&amp;nbsp;mp3lame&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;ovc&amp;nbsp;lavc&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;sub&amp;nbsp;xenia&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;srt&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;subcp&amp;nbsp;enca&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;ru&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;utf&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;8&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;subfont&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;outline&amp;nbsp;4&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;of&amp;nbsp;mpeg&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;o&amp;nbsp;xenia&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Alternatively, directive below will add extra font feature to your subtitles:&lt;/p&gt;

&lt;p class=&quot;codeblock_title&quot;&gt;Shell&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_shell amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_html&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;mencoder&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;../&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;nenetl&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp4&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;oac&amp;nbsp;mp3lame&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;ovc&amp;nbsp;lavc&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;sub&amp;nbsp;xenia&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;srt&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;subcp&amp;nbsp;enca&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;ru&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;utf&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;8&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;subfont&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;text&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;scale&amp;nbsp;4&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;subfont&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;outline&amp;nbsp;6&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;of&amp;nbsp;mpeg&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;o&amp;nbsp;Nenetl&lt;/span&gt;&lt;span class=&quot;amc_keyword&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;amc_default&quot;&gt;mp4&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;/media/blogs/Metztli-bits/01312015/debian8_nenetl.png?mtime=1423413825&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;Debian Jessie gmplayer&quot; title=&quot;Debian Jessie gmplayer&quot; src=&quot;/media/blogs/Metztli-bits/01312015/debian8_nenetl.png?mtime=1423413825&quot; width=&quot;490&quot; height=&quot;353&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;br /&gt;
References:&lt;br /&gt;
&lt;sup&gt;1&lt;/sup&gt; &lt;a href=&quot;https://caityjohnstone.medium.com/silicon-valley-algorithm-manipulation-is-the-only-thing-keeping-mainstream-media-alive-4550b4bb205a&quot; target=&quot;_blank&quot;&gt;&quot;Her sister Anne is the founder of the genetic-testing company 23andMe and was married to Google co-founder Sergey Brin.&quot;&lt;/a&gt; via &lt;a href=&quot;http://www.softpanorama.org/Skeptics/Political_skeptic/Propaganda/Neo_mccarthyism/index.shtml&quot; target=&quot;_blank&quot;&gt;NeoMcCarthyism as a smoke screen to hide the crisis of neoliberalism&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.labnol.org/internet/useful-ffmpeg-commands/28490/&quot; target=&quot;_blank&quot;&gt;Useful FFmpeg Commands&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://stackoverflow.com/questions/11779490/ffmpeg-how-to-add-new-audio-not-mixing-in-video&quot; target=&quot;_blank&quot;&gt;ffmpeg, how to add new audio (not mixing) in video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Past midway during the creation of this post -- researching sources -- I was surprised to find the RuTube source is also available from YouTube, albeit with a different cover:&lt;br /&gt;
&lt;a href=&quot;http://youtu.be/1T4fY-u4tRs&quot; target=&quot;_blank&quot;&gt;Десятка финалисток Miss MAXIM 2013. Часть первая (Ксения Кайгородова)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://shininghappypeople.net/deljr/b2e-russian-english.html&quot; target=&quot;_blank&quot;&gt;How I got b2evolution to work in both English and Russian with UTF-8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.linuxquestions.org/questions/linux-general-1/convert-mpg-to-mp4-4175514239/&quot; target=&quot;_blank&quot;&gt;Convert MPG to MP4&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;font color=&quot;#CC0000&quot;&gt;DISCLAIMER&lt;/font&gt;&lt;img src=&quot;https://metztli.blog/rsc/smilies/graybigrazz.gif&quot; title=&quot;&amp;amp;#58;&amp;amp;#80;&quot; alt=&quot;&amp;amp;#58;&amp;amp;#80;&quot; class=&quot;middle&quot; width=&quot;15&quot; height=&quot;15&quot; /&gt; although due diligence has been applied, the above post is intended as a proof of concept for encoding Russian language subtitles in videos. &lt;/p&gt;

&lt;p&gt;Please do not hold me or Metztli Information Technology, or its associates, responsible if the information provided here does not achieve the desired result. The information is provided &lt;font color=&quot;#CC0000&quot;&gt;AS IS&lt;/font&gt; and with the hope that it may be useful to the Internet community.&lt;/p&gt;

&lt;p&gt;Notwithstanding, There is no implicit or explicit guarantee that the information presented here is accurate.  Accordingly, if an user(s) decide to implement the procedure or shell commands described here she, he, or them, do so at her, his, or their own risk. You have been forewarned.&lt;/p&gt;

&lt;p&gt;I reserve the right to modify the blog and even to delete it without further notice.&lt;/p&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://metztli.blog/Metztli-bits/xenia&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;https://metztli.it/b2evolution/&quot;&gt;Metztli b2evo for PHP 8&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div><div class="mediajs_block"><video class="html5_mediaelementjs_player " id="html5_mediaelementjs_30" poster="https://metztli.blog/media/blogs/Metztli-bits/Nenetl/Cihuatl.png?mtime=1628033089"><source src="https://metztli.blog/media/blogs/Metztli-bits/Nenetl/Cihuatl.mp4?mtime=1628036441" type="video/mp4" align="center" /></video></div></div><p><br /><font color="#f70000">08-03-2021 update:</font><br />
T̶h̶i̶s̶ ̶v̶i̶d̶e̶o̶ ̶i̶s̶ ̶a̶g̶e̶-̶r̶e̶s̶t̶r̶i̶c̶t̶e̶d̶ ̶a̶n̶d̶ ̶o̶n̶l̶y̶ ̶a̶v̶a̶i̶l̶a̶b̶l̶e̶ ̶o̶n̶ ̶Y̶o̶u̶T̶u̶b̶e̶  <a href="https://www.rt.com/usa/521456-youtube-ceo-free-expression-award/" target="_blank">Fuck Youtube CEO Polish CENSOR and ex-sister-in-law to Google's co-founder</a><sup>1</sup>!</p>
<hr />
<p><br /><br />
I used <a href="http://www1.mplayerhq.hu/design7/dload.html" target="_blank"><em><strong>Mplayer's mencoder</strong></em></a> (built from source) to render the <em>English</em>/<em>Russian</em> subtitles in the PoC video above -- as I was trying out the upcoming GNU/Linux Debian <em>Jessie</em> distribution encapsulated inside a <em>KVM</em> virtual machine.</p>

<div class="image_block"><a href="/media/blogs/Metztli-bits/01312015/debianjessie01-30-2015.png?mtime=1422772217" target="_blank"><img alt="Debian: virt-manager managed KVM Jessie instance" title="Debian: virt-manager managed KVM Jessie instance" src="/media/blogs/Metztli-bits/01312015/debianjessie01-30-2015.png?mtime=1422772217" width="490" height="275" /></a></div>
<p><br /><br />
In the past I had used <em>mencoder</em> to add Spanish subtitles to a video, but this time I was challenged with Russian subtitles, as those initially would not render properly in the resulting video. As a matter of fact, I was not even able to install <em>mencoder</em> from the Debian Jessie and Sid repositories due to libdvdnav4 dependency issue. Thus, the ephemeral viable option was to build mplayer's <em>mencoder</em> from source --which will skip support for DVD during the configure phase. </p>

<p>To solve the first issue, during Debian Jessie installation routine in the virtual machine I selected Russian as an additional language:</p>

<div class="image_block"><a href="/media/blogs/Metztli-bits/01312015/ru_ru.utf-8.png?mtime=1422975116" target="_blank"><img alt="Debian Jessie installation: add ru_RU.UTF-8 locale during installation" title="Debian Jessie installation: add ru_RU.UTF-8 locale during installation" src="/media/blogs/Metztli-bits/01312015/ru_ru.utf-8.png?mtime=1422975116" width="490" height="398" /></a></div>
<p><br /></p>

<p>I can verify the above action by examining /etc/locale.gen; I can see (scrolling to the bottom) that, in effect, I enabled 2 languages in addition to English: Russian and Mexico's Spanish dialect, all UTF-8.</p>

<div class="image_block"><img alt="Examining Debian Jessie /etc/locale.gen" title="Examining Debian Jessie /etc/locale.gen" src="/media/blogs/Metztli-bits/01312015/etc-locale_gen.png?mtime=1423043733" width="467" height="267" /></div>
<p><br /></p>

<p>For the record, at the top of the /etc/locale.gen file the user is advised to execute:</p>

<p><code class="codespan">/usr/sbin/locale-gen</code></p>

<p><em>after <strong>manually</strong></em> enabling any locale (by removing the hash symbol from the beginning of the directive.)<br />
<br /></p>

<h3>Building mplayer -- defaults to building mencoder, too -- from source in Debian Jessie.</h3>

<p>I update Debian repositories:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">apt</span><span class="amc_keyword">-</span><span class="amc_default">get&nbsp;update</span></span></code></td></tr></table></div>

<p>Since I am getting mplayer/mencoder code via <em>Subversion</em>:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc2"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">apt</span><span class="amc_keyword">-</span><span class="amc_default">get&nbsp;install&nbsp;subversion</span></span></code></td></tr></table></div>

<p>Then I get the mplayer/mencoder source code:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">svn&nbsp;checkout&nbsp;svn</span><span class="amc_keyword">:</span><span class="amc_comment">//svn.mplayerhq.hu/mplayer/trunk&nbsp;mplayer</span></span></code></td></tr></table></div>

<p>and directory <em>mplayer</em> will be created at my current directory location.</p>

<p>I change directory into mplayer:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc4"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">cd&nbsp;mplayer</span></span></code></td></tr></table></div>

<p>Since I am on Debian, and after scanning the README file, I can simply download a couple of DEBs:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">apt</span><span class="amc_keyword">-</span><span class="amc_default">get&nbsp;install&nbsp;git&nbsp;devscripts</span></span></code></td></tr></table></div>

<p>and then could simply execute the script under the debian directory to</p>

<p>"<em>configure, compile and build a proper Debian .deb package with only one command:</em>"</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc6"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">debian</span><span class="amc_keyword">/</span><span class="amc_default">daily</span><span class="amc_keyword">-</span><span class="amc_default">build</span><span class="amc_keyword">.</span><span class="amc_default">sh&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">b</span></span></code></td></tr></table></div>

<p>But no. Since I am in a non-stable Debian, the resulting mencoder package may still refuse to install. Thus, I will download the relevant DEB packages manually:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">apt</span><span class="amc_keyword">-</span><span class="amc_default">get&nbsp;install&nbsp;ffmpeg&nbsp;docbook</span><span class="amc_keyword">-</span><span class="amc_default">xsl&nbsp;ladspa</span><span class="amc_keyword">-</span><span class="amc_default">sdk&nbsp;libenca</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libaa1</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libasound2</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libaudio</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libcaca</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libcdparanoia</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libbluray</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libdirectfb</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libdts</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libesd0</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libfaad</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libfontconfig1</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libfreetype6</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libfribidi</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libgif</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libgl1</span><span class="amc_keyword">-</span><span class="amc_default">mesa</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libgtk2.0</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libjack</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libjpeg</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;liblircclient</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;liblivemedia</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;liblzo2</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libmp3lame</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libmpcdec</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libncurses5</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libopenal</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libpng12</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libpulse</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libschroedinger</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libsdl1.2</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libsmbclient</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libspeex</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libsvga1</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libswscale</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libtheora</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libvorbis</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libvorbisidec</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libx11</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libx264</span><span class="amc_keyword">-</span><span class="amc_default">dev&#160;&#160;libxext</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libxinerama</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libxv</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libxvidcore</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libxvmc</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libxxf86dga</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libxxf86vm</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;libvdpau</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;pkg</span><span class="amc_keyword">-</span><span class="amc_default">config&nbsp;vstream</span><span class="amc_keyword">-</span><span class="amc_default">client</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;x11proto</span><span class="amc_keyword">-</span><span class="amc_default">core</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;xsltproc&nbsp;yasm&nbsp;zlib1g</span><span class="amc_keyword">-</span><span class="amc_default">dev&nbsp;mpg123&nbsp;libmpg123</span><span class="amc_keyword">-</span><span class="amc_default">dev</span></span></code></td></tr></table></div>

<p>After the above operation completes, then we are ready to build mplayer/mencoder from our downloaded source snapshot. Since I am in the mplayer directory:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc8"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_keyword">./</span><span class="amc_default">configure&nbsp;</span><span class="amc_keyword">--</span><span class="amc_default">enable</span><span class="amc_keyword">-</span><span class="amc_default">gui</span></span></code></td></tr></table></div>

<p>(sample partial output):</p>
<blockquote><p>[...]<br />
Creating config.mak<br />
Creating config.h</p>

<p>Config files successfully generated by ./configure --enable-gui !</p>

<p>  Install prefix: /usr/local<br />
  Data directory: /usr/local/share/mplayer<br />
  Config direct.: /usr/local/etc/mplayer</p>

<p>  Byte order: little-endian<br />
  Optimizing for: native<br />
[...]</p></blockquote>

<p><font color="red"><em>Note:</em></font> the default installation directory is /usr/local/ and the <em>--enable-gui</em> option is, well, optional. As usual we could change the installation directory and disable/enable options. Simply type <em>./configure --help</em> for an overview.</p>

<p>Additionally, if you will be downloading codecs, make sure to place the extracted files ending in <em><strong>.</strong>so</em> under the directory <code>/usr/local/lib/codecs/</code><br />
<font color="orange"><em>End of note.</em></font></p>

<p>In this particular case for this post, I follow a successfully completed ./configure operation with:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">make</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc0"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">make&nbsp;install</span></span></code></td></tr></table></div>

<p>You may be required to acquire root privilege to <em>make install</em> into /usr/local --as is usual any time you install software from repositories.<br />
<br /></p>
<h3>Cihuatl Archetype And The Human Subconsciousness.</h3>
<p>Unless one is brainwashed by one of those three(3) major patriarchal strains spread by fanatics throughout the world imposing a misogynist attitude, the archetype of <em><strong>Cihuatl</strong></em>, <em>Nahuatl</em> -- Mexico's language par excellence -- which translates as <em>женщина</em> in Russian, <em>Woman</em> in English, and <em>Mujer</em> in Spanish, is fascinating. It beams down onto a man's subconsciousness when least expected.</p>

<p>I happen to add an extra feature supporting <a href="http://rutube.ru/" target="_blank"><em><strong>RuTube</strong> videos</em></a> in <a href="https://www.openshift.com/" target="_blank"><em><strong>b2evolution</strong> for <strong>Openshift</strong> PaaS cloud</em></a> hosted at my <a href="http://nepohualtzintzin.com" target="_blank"><em><strong>Nepohualtzintzin</strong> GitHub</em></a> repository. And during testing I came across <a href="http://rutube.ru/video/cf126c6e54c8e30758fffe75503ca644/" target="_blandk"><em>Miss MAXIM 2013 (<strong>Ксения Кайгородова</strong>: <strong>Xenia Kaygorodova</strong>)</em></a>. Thus the seed of a proof of concept -- or PoC -- was generated as result of a Russian media video and my chance listening of a melody sung in Spanish: <em>¿Tú De Que Vas?</em> -- loosely translated as, <em>Do You Even Need To Ask?</em></p>

<p>Thus, I used <a href="http://youtube-dl.org/" target="_blank"><em><strong>youtube-dl</strong> utility</em></a> -- available also from Debian repositories. If it does not exist in your system, all you have to do is:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc0"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">apt</span><span class="amc_keyword">-</span><span class="amc_default">get&nbsp;install&nbsp;youtube</span><span class="amc_keyword">-</span><span class="amc_default">dl</span></span></code></td></tr></table></div>

<p>and subsequently downloaded the video from <em>RuTube</em> with command:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">youtube</span><span class="amc_keyword">-</span><span class="amc_default">dl&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">o&nbsp;nenetl</span><span class="amc_keyword">.</span><span class="amc_default">flv&nbsp;http</span><span class="amc_keyword">:</span><span class="amc_comment">//rutube.ru/video/cf126c6e54c8e30758fffe75503ca644</span></span></code></td></tr></table></div>

<p>the option <em><strong>-o</strong></em> is just to assign a name to the file of interest; otherwise, you will end up with an unintelligeble alphanumeric-named file. As for the word <em>nenetl</em>, it is akin to a female image, ideal <em>form</em>, approaching an archetype.</p>

<p>Assuming current location is where the downloaded file resides, I create an ephemeral directory and change into it:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc2"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">mkdir&nbsp;</span><span class="amc_keyword">--</span><span class="amc_default">verbose&nbsp;ephemeral</span></span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc3"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">cd&nbsp;ephemeral</span></span></code></td></tr></table></div>

<p>At this directory I will operate as follows:</p>

<p>used <em><strong>ffmpeg</strong></em> in order to extract the images from the <em>nenetl</em>.flv video, thus:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc4"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">ffmpeg&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">i&nbsp;</span><span class="amc_keyword">../</span><span class="amc_default">nenetl</span><span class="amc_keyword">.</span><span class="amc_default">flv&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">f&nbsp;image2&nbsp;images</span><span class="amc_keyword">%</span><span class="amc_default">05d</span><span class="amc_keyword">.</span><span class="amc_default">png</span></span></code></td></tr></table></div>

<p>The extracted images will occupy around 1.5 Gb of space. Now, by rough trial and error, I aimed to fit a relevant subset of the images into an interval equal to the length of the melody playing in the background. The final command -- referenced below -- outputs a <em>nenetl</em>_slideshow.mp4 which lasts approximately the length of the melody:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc5"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">ffmpeg&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">r&nbsp;6.2&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">ss&nbsp;00</span><span class="amc_keyword">:</span><span class="amc_default">00</span><span class="amc_keyword">:</span><span class="amc_default">03&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">i&nbsp;images</span><span class="amc_keyword">%</span><span class="amc_default">05d</span><span class="amc_keyword">.</span><span class="amc_default">png&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">c</span><span class="amc_keyword">:</span><span class="amc_default">v&nbsp;libx264&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">r&nbsp;30&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">pix_fmt&nbsp;yuv420p&nbsp;</span><span class="amc_keyword">../</span><span class="amc_default">nenetl_slideshow</span><span class="amc_keyword">.</span><span class="amc_default">mp4</span></span></code></td></tr></table></div>

<p>I had to decrease the intake of the images to 6.2 frames per second (fps) by using the <em><strong>-r</strong></em> option to ffmpeg; thus it gives the video somewhat of a slow motion <img src="https://metztli.blog/rsc/smilies/graylaugh.gif" title="&amp;#58;&amp;#41;&amp;#41;" alt="&amp;#58;&amp;#41;&amp;#41;" class="middle" width="15" height="15" /></p>

<p>Also, by feeding the <em><strong>-ss</strong></em> to ffmpeg I advanced the resulting slideshow by hh:mm:<em><strong>03</strong></em> seconds. Please type:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc6"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">man&nbsp;ffmpeg</span></span></code></td></tr></table></div>

<p>for additional information relevant to options specified.</p>

<p>Once we are satisfied with the outcome, we can erase all the extracted <em><strong>.</strong>png</em> (picture) files at our current ephemeral directory and thus recover our disk space.</p>

<p>Subsequently, I merged the slideshow file with the .mp3 <em>Franco de Vita</em> audio file as follows:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc7"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">ffmpeg&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">i&nbsp;</span><span class="amc_keyword">../</span><span class="amc_default">nenetl_slideshow</span><span class="amc_keyword">.</span><span class="amc_default">mp4&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">i&nbsp;</span><span class="amc_keyword">../</span><span class="amc_default">Franco_De_Vita</span><span class="amc_keyword">-</span><span class="amc_default">Tu_De_Que_Vas</span><span class="amc_keyword">.</span><span class="amc_default">mp3&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">map&nbsp;0&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">map&nbsp;1&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">codec&nbsp;copy&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">shortest&nbsp;</span><span class="amc_keyword">../</span><span class="amc_default">nenetl</span><span class="amc_keyword">.</span><span class="amc_default">mp4</span></span></code></td></tr></table></div>

<p>Cool! Now we have the length of the melody that is roughly equivalent to the most visually interesting media. We can verify it with the <em>mplayer</em> that was built above:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc8"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">mplayer&nbsp;</span><span class="amc_keyword">../</span><span class="amc_default">nenetl</span><span class="amc_keyword">.</span><span class="amc_default">mp4</span></span></code></td></tr></table></div>

<p>Or, alternatively, since we enabled the graphical user interface (GUI) as an argument during ./configure<br />
phase:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc9"><div class="amc1"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">gmplayer&nbsp;</span><span class="amc_keyword">../</span><span class="amc_default">nenetl</span><span class="amc_keyword">.</span><span class="amc_default">mp4</span></span></code></td></tr></table></div>

<div class="image_block"><a href="/media/blogs/Metztli-bits/01312015/gmplayer_nenetl.jpg?mtime=1423335272" target="_blank"><img alt="Using Hayraphon skin in GUI-enabled mplayer: gmplayer" title="Using Hayraphon skin in GUI-enabled mplayer: gmplayer" src="/media/blogs/Metztli-bits/01312015/gmplayer_nenetl.jpg?mtime=1423335272" width="490" height="275" /></a></div>
<p><br />
<font color="red"><em>Note:</em></font> If you accepted the default installation path for the mplayer build, please make sure to install your skins under <code>/usr/local/share/mplayer/skins/</code>. For instance, the location for the <a href="http://www1.mplayerhq.hu/design7/dload.html#skins" target="_blank"><em>Hayraphon</em> skin</a> in the above snapshot would be <code>/usr/local/share/mplayer/skins/hayraphon</code>
<font color="orange"><em>End of note.</em></font>
<br /></p>
<h3>Adding Subtitles with GNOME Subtitles Editor</h3>

<p>In Debian, we install the application as:<br />
<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc0"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">apt</span><span class="amc_keyword">-</span><span class="amc_default">get&nbsp;install&nbsp;gnome</span><span class="amc_keyword">-</span><span class="amc_default">subtitles</span></span></code></td></tr></table></div>

<p>After it is completely installed, we start it from our shell:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">gnome</span><span class="amc_keyword">-</span><span class="amc_default">subtitles</span></span></code></td></tr></table></div>

<p>From topmost menu, we select <em>Video</em>, <em>Open</em> from the ensuing cascaded menu, and locate the <em>nenetl</em>.mp4 video/audio media we created before. The media file will be embedded in the upper section of the application.</p>

<div class="image_block"><a href="/media/blogs/Metztli-bits/01312015/gnome-subtitles_select-video.png?mtime=1423310968" target="_blank"><img alt="gnome-subtitles: open video" title="gnome-subtitles: open video" src="/media/blogs/Metztli-bits/01312015/gnome-subtitles_select-video.png?mtime=1423310968" width="490" height="328" /></a></div>

<p>We select the leftmost blank paper icon labeled <em>New</em> to start creating subtitles for our video -- as it is played using the controls under the embedded media. Further, as our embedded media is played, we can add another line of text by pressing the plus icon labeled <em>Insert</em> located in the upper row of icons -- just below the uppermost menu.</p>

<div class="image_block"><a href="/media/blogs/Metztli-bits/01312015/gnome-subtitles_new-_srt.png?mtime=1423312648" target="_blank"><img alt="gnome-subtitles: new/open .srt file" title="gnome-subtitles: new/open .srt file" src="/media/blogs/Metztli-bits/01312015/gnome-subtitles_new-_srt.png?mtime=1423312648" width="490" height="327" /></a></div>

<p>From aforementioned row we also can save our newly created subtitles file by selecting the green arrow pointing down in a drawer icon, labeled as <em>Save</em>.</p>

<p>The named file will default to be saved with an extension <em><strong>.</strong>srt</em> and UTF-8 locale.</p>

<div class="image_block"><a href="/media/blogs/Metztli-bits/01312015/gnome-subtitles_new-save_srt.png?mtime=1423336361" target="_blank"><img alt="Save dialog prompting format and location of subtitles file." title="Save dialog prompting format and location of subtitles file." src="/media/blogs/Metztli-bits/01312015/gnome-subtitles_new-save_srt.png?mtime=1423336361" width="490" height="381" /></a></div>

<p>After we are satisfied assigning subtitles to relevant sections of the embedded audio/visual stream, we are ready to embed the subtitles file into the actual <em>nenetl</em>.mp4 media. For that we will use <em>mencoder</em>.</p>

<p>Assuming our location continues to be our ephemeral directory that we created for this set of tasks and we have a resulting xenia.srt subtitles file also here, we type next command:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc2"><div class="amc2"></div></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">mencoder&nbsp;</span><span class="amc_keyword">../</span><span class="amc_default">nenetl</span><span class="amc_keyword">.</span><span class="amc_default">mp4&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">oac&nbsp;mp3lame&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">ovc&nbsp;lavc&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">sub&nbsp;xenia</span><span class="amc_keyword">.</span><span class="amc_default">srt&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">subcp&nbsp;enca</span><span class="amc_keyword">:</span><span class="amc_default">ru</span><span class="amc_keyword">:</span><span class="amc_default">utf</span><span class="amc_keyword">-</span><span class="amc_default">8&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">subfont</span><span class="amc_keyword">-</span><span class="amc_default">outline&nbsp;4&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">of&nbsp;mpeg&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">o&nbsp;xenia</span><span class="amc_keyword">.</span><span class="amc_default">mp4</span></span></code></td></tr></table></div>

<p>Alternatively, directive below will add extra font feature to your subtitles:</p>

<p class="codeblock_title">Shell</p><div class="codeblock codeblock_with_title amc_shell amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code class="codeblock"><span class="amc_html"><span class="amc_default">mencoder&nbsp;</span><span class="amc_keyword">../</span><span class="amc_default">nenetl</span><span class="amc_keyword">.</span><span class="amc_default">mp4&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">oac&nbsp;mp3lame&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">ovc&nbsp;lavc&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">sub&nbsp;xenia</span><span class="amc_keyword">.</span><span class="amc_default">srt&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">subcp&nbsp;enca</span><span class="amc_keyword">:</span><span class="amc_default">ru</span><span class="amc_keyword">:</span><span class="amc_default">utf</span><span class="amc_keyword">-</span><span class="amc_default">8&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">subfont</span><span class="amc_keyword">-</span><span class="amc_default">text</span><span class="amc_keyword">-</span><span class="amc_default">scale&nbsp;4&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">subfont</span><span class="amc_keyword">-</span><span class="amc_default">outline&nbsp;6&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">of&nbsp;mpeg&nbsp;</span><span class="amc_keyword">-</span><span class="amc_default">o&nbsp;Nenetl</span><span class="amc_keyword">.</span><span class="amc_default">mp4</span></span></code></td></tr></table></div>

<div class="image_block"><a href="/media/blogs/Metztli-bits/01312015/debian8_nenetl.png?mtime=1423413825" target="_blank"><img alt="Debian Jessie gmplayer" title="Debian Jessie gmplayer" src="/media/blogs/Metztli-bits/01312015/debian8_nenetl.png?mtime=1423413825" width="490" height="353" /></a></div>
<p><br /><br />
References:<br />
<sup>1</sup> <a href="https://caityjohnstone.medium.com/silicon-valley-algorithm-manipulation-is-the-only-thing-keeping-mainstream-media-alive-4550b4bb205a" target="_blank">"Her sister Anne is the founder of the genetic-testing company 23andMe and was married to Google co-founder Sergey Brin."</a> via <a href="http://www.softpanorama.org/Skeptics/Political_skeptic/Propaganda/Neo_mccarthyism/index.shtml" target="_blank">NeoMcCarthyism as a smoke screen to hide the crisis of neoliberalism</a></p>

<p><a href="http://www.labnol.org/internet/useful-ffmpeg-commands/28490/" target="_blank">Useful FFmpeg Commands</a>.</p>

<p><a href="http://stackoverflow.com/questions/11779490/ffmpeg-how-to-add-new-audio-not-mixing-in-video" target="_blank">ffmpeg, how to add new audio (not mixing) in video</a></p>

<p>Past midway during the creation of this post -- researching sources -- I was surprised to find the RuTube source is also available from YouTube, albeit with a different cover:<br />
<a href="http://youtu.be/1T4fY-u4tRs" target="_blank">Десятка финалисток Miss MAXIM 2013. Часть первая (Ксения Кайгородова)</a></p>

<p><a href="http://shininghappypeople.net/deljr/b2e-russian-english.html" target="_blank">How I got b2evolution to work in both English and Russian with UTF-8</a></p>

<p><a href="https://www.linuxquestions.org/questions/linux-general-1/convert-mpg-to-mp4-4175514239/" target="_blank">Convert MPG to MP4</a></p>
<hr />
<p><font color="#CC0000">DISCLAIMER</font><img src="https://metztli.blog/rsc/smilies/graybigrazz.gif" title="&amp;#58;&amp;#80;" alt="&amp;#58;&amp;#80;" class="middle" width="15" height="15" /> although due diligence has been applied, the above post is intended as a proof of concept for encoding Russian language subtitles in videos. </p>

<p>Please do not hold me or Metztli Information Technology, or its associates, responsible if the information provided here does not achieve the desired result. The information is provided <font color="#CC0000">AS IS</font> and with the hope that it may be useful to the Internet community.</p>

<p>Notwithstanding, There is no implicit or explicit guarantee that the information presented here is accurate.  Accordingly, if an user(s) decide to implement the procedure or shell commands described here she, he, or them, do so at her, his, or their own risk. You have been forewarned.</p>

<p>I reserve the right to modify the blog and even to delete it without further notice.</p></p><div class="item_footer"><p><small><a href="https://metztli.blog/Metztli-bits/xenia">Original post</a> blogged on <a href="https://metztli.it/b2evolution/">Metztli b2evo for PHP 8</a>.</small></p></div>]]></content:encoded>
								<comments>https://metztli.blog/Metztli-bits/xenia#comments</comments>
			<wfw:commentRss>https://metztli.blog/Metztli-bits/?tempskin=_rss2&#38;disp=comments&#38;p=115</wfw:commentRss>
		</item>
			</channel>
</rss>
