<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Журнал системного программиста &#187; vesa</title>
	<atom:link href="http://sadko.xskernel.org/archives/tag/vesa/feed" rel="self" type="application/rss+xml" />
	<link>http://sadko.xskernel.org</link>
	<description>блог обо всём и ни о чём</description>
	<lastBuildDate>Wed, 14 Dec 2011 20:21:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>VBE и VESA.</title>
		<link>http://sadko.xskernel.org/archives/963</link>
		<comments>http://sadko.xskernel.org/archives/963#comments</comments>
		<pubDate>Wed, 19 Dec 2007 22:57:00 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[XSystem]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[vesa]]></category>
		<category><![CDATA[xsystem]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/archives/963</guid>
		<description><![CDATA[Tweet Господа! Я в ауте! Если выставлять бит исользования LFB при включении режима, то всё прекрасно! Если не выставлять, то отваливаются прерывания . В принципе, ну его нафиг . Всё равно без LFB никакого кайфа нет . Так что, кажися, проблема решена . Итак, подытожим: из защищённого режима можно спокойно вызывать функции 0x4f00, 0x4f01, 0x4f02 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/963',
  title: 'VBE и VESA.',
  description: 'Господа! Я в ауте! Если выставлять бит исользования LFB при включении режима, то всё прекрасно! Если не выставлять, то отваливаются прерывания :). В принципе, ну его нафиг :). Всё равно без LFB никако...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/963"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="VBE &ETH;&cedil; VESA." data-url="http://sadko.xskernel.org/archives/963">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Господа! Я в ауте! Если выставлять бит исользования LFB при включении режима, то всё прекрасно! Если не выставлять, то отваливаются прерывания <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . В принципе, ну его нафиг <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Всё равно без LFB никакого кайфа нет <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Так что, кажися, проблема решена <img src='http://sadko.xskernel.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Итак, подытожим: из защищённого режима можно спокойно вызывать функции 0x4f00, 0x4f01, 0x4f02 прерывания 0&#215;10. Но не рекомендуется указывать режимы без использования LFB, иначе может случиться нечто, что приведёт к системному сбою.</p>
<p><font color="#ff0000"><b>UPD:</b></font><br />1. Обязательно надо включить обработчики прерываний в реальном режиме перед вызовом int 10h.<br />2. Если перепрограммирован контроллер &#8212; скопировать векторы прерываний реального режима на новые.<br />3. Использовать только LFB-режимы.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/963/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Real Mode</title>
		<link>http://sadko.xskernel.org/archives/961</link>
		<comments>http://sadko.xskernel.org/archives/961#comments</comments>
		<pubDate>Sat, 08 Dec 2007 14:03:00 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[XSystem]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[vesa]]></category>
		<category><![CDATA[xsystem]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/archives/961</guid>
		<description><![CDATA[Tweet Продолжаю колдовство с VESA. Поменял модель организации вызова 16-разрядного кода. Теперь Код располагается в специальном сегменте, который начинается с адреса 0&#215;90000. В этом же сегменте создаётся аллокатор страниц и аллокатор блоков. Их можно использовать для выделения памяти в пределах этого сегмента (что весьма удобно). Например, можно выделить 512 байт под общую информацию VBE или [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/961',
  title: 'Real Mode',
  description: 'Продолжаю колдовство с VESA.\n\nПоменял модель организации вызова 16-разрядного кода. Теперь Код располагается в специальном сегменте, который начинается с адреса 0x90000. В этом же сегменте создаёт...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/961"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="Real Mode" data-url="http://sadko.xskernel.org/archives/961">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p>Продолжаю колдовство с VESA.</p>
<p>Поменял модель организации вызова 16-разрядного кода. Теперь Код располагается в специальном сегменте, который начинается с адреса 0&#215;90000. В этом же сегменте создаётся аллокатор страниц и аллокатор блоков. Их можно использовать для выделения памяти в пределах этого сегмента (что весьма удобно). Например, можно выделить 512 байт под общую информацию VBE или под буфер для получения информации о режиме.</p>
<p>Проблема в другом: после вызова 10h почему-то отваливаются IRQ-прерывания, хотя процессор возвращается обратно в защищённый режим и продолжает цикл. Возможно, надо будет попробовать переинициализировать контроллер.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/961/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>int 10h</title>
		<link>http://sadko.xskernel.org/archives/960</link>
		<comments>http://sadko.xskernel.org/archives/960#comments</comments>
		<pubDate>Thu, 22 Nov 2007 19:55:00 +0000</pubDate>
		<dc:creator>SadKo</dc:creator>
				<category><![CDATA[XSystem]]></category>
		<category><![CDATA[Кодинг]]></category>
		<category><![CDATA[apic]]></category>
		<category><![CDATA[vesa]]></category>
		<category><![CDATA[xsystem]]></category>

		<guid isPermaLink="false">http://sadko.xskernel.org/archives/960</guid>
		<description><![CDATA[Tweet VESA Всё-таки, упирался-не упирался, а прикрутил к ядру возможность вызывать int 10h. При чём, параметры можно передавать вот в такой вот структурке: #pragma pack(push, 1) typedef struct TRealmodeRegState{&#160;&#160;&#160; WORD&#160;&#160;&#160; FLAGS;&#160;&#160;&#160; WORD&#160;&#160;&#160; DI;&#160;&#160;&#160; WORD&#160;&#160;&#160; SI;&#160;&#160;&#160; WORD&#160;&#160;&#160; DX;&#160;&#160;&#160; WORD&#160;&#160;&#160; CX;&#160;&#160;&#160; WORD&#160;&#160;&#160; BX;&#160;&#160;&#160; WORD&#160;&#160;&#160; AX;} TRealmodeRegState; #pragma pack(pop) Теперь оська умеет вваливаться в графический режим по f11 [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin: 0 0 5px 10px; " class="vk-button">
<!-- vkontakte share button -->
<script type="text/javascript">
<!--
document.write(VK.Share.button(
{
  url: 'http://sadko.xskernel.org/archives/960',
  title: 'int 10h',
  description: 'VESAВсё-таки, упирался-не упирался, а прикрутил к ядру возможность вызывать int 10h. При чём, параметры можно передавать вот в такой вот структурке:#pragma pack(push, 1)typedef struct TRealmodeRegState{&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp;&amp;n...',
  noparse: true 
}, 
{
  type: 'button',
  text: 'Скопировать'
}));
-->
</script>
<!-- / vkontakte share button -->
</div><div style="height:21px; padding-top:2px;" class="really_simple_share"><div style="float:left; " class="really_simple_share_linkedin"> 
				<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>
				<script type="in/share" data-counter="right" data-url="http://sadko.xskernel.org/archives/960"></script>
			</div><div style="float:left; padding-left:10px;" class="really_simple_share_twitter"> 
				<a href="http://twitter.com/share" class="twitter-share-button" data-count="horizontal" 
					data-text="int 10h" data-url="http://sadko.xskernel.org/archives/960">Tweet</a> 
				<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script> 
			</div></div>
	<br style="clear:both;" /><p><font size="4">VESA</font></p>
<p>Всё-таки, упирался-не упирался, а прикрутил к ядру возможность вызывать int 10h. При чём, параметры можно передавать вот в такой вот структурке:</p>
<p>#pragma pack(push, 1)</p>
<p>typedef struct TRealmodeRegState<br />{<br />&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp;&nbsp; FLAGS;<br />&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp;&nbsp; DI;<br />&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp;&nbsp; SI;<br />&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp;&nbsp; DX;<br />&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp;&nbsp; CX;<br />&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp;&nbsp; BX;<br />&nbsp;&nbsp;&nbsp; WORD&nbsp;&nbsp;&nbsp; AX;<br />} TRealmodeRegState;</p>
<p>#pragma pack(pop)</p>
<p>Теперь оська умеет вваливаться в графический режим по f11 и вываливаться из него (тоже по f11). В качестве тестового режима было решено взять 0&#215;114 (800x600x16).</p>
<p>Пора писать драйвер VBE (/dev/vbe).</p>
<p><font size="4">Multiprocessing</font></p>
<p>Процессоры научились входить в main. Мало того, в качестве аргумента в main теперь передаётся номер процессора, который определяется специальным атомарным семафором. Теперь надо задуматься о шедулере, ибо тот шедулер, что имеется на данный момент, совсем не годится для мультипроцессорных систем. Уже есть идеи по организации шедулинга, но их надо воплотить в жизнь.<br />Ещё хотелось бы, чтобы на время иницализации /dev каждый процессор прописал себя в /dev/cpuid. Для этого надо как-то придумать, чтобы нужные нити запускались на нужных процессорах. Будем думать.<br /><font size="4">Known bugs</font><br />На AMD Athlon x2 упорно не хотят читаться секторы FDD. Скорее, проблема в том, что надо дёргать MTRR. Но надо проверить.<br />Опять же, на двухъядернике при нажатии нескольких клавиш одновременно виснет клава. Очень неприятно. Скорее, виноват второй CPU, который, возможно, отлавливает прерывание от клавиатуры. Наверное, проблема решится отрубанием APIC или программированием его в Virtual Wire Mode.</p>
]]></content:encoded>
			<wfw:commentRss>http://sadko.xskernel.org/archives/960/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

