<?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; Страницы истории</title>
	<atom:link href="http://www.volkov.ru/category/oldstuff/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.volkov.ru</link>
	<description></description>
	<lastBuildDate>Wed, 08 Sep 2010 17:32:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Руководство к ZX-Spectrum. Глава 6</title>
		<link>http://www.volkov.ru/oldstuff/zx-spectrum6/</link>
		<comments>http://www.volkov.ru/oldstuff/zx-spectrum6/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 09:28:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Страницы истории]]></category>

		<guid isPermaLink="false">http://www.volkov.ru/?p=1613</guid>
		<description><![CDATA[Глава 6.
Основы работы с клавиатурой
В этой  главе речь идет в основном о стандартной клавиа-
туре,  хотя в тексте и будут встречаться некоторые коммента-
рии, касающиеся клавиатуры Спектрум+. Мы не будем рассматри-
вать специальные модели клавиатуры,  такие  как  МС  5007  с
контроллером.  В  большинстве  случаев  всякие нестандартные
клавиатуры достаточно точно эмулируют стандартную  клавиату-
ру.
В первой части этой  главы  объясняется,  как  присходит
взаимодействие  с [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Глава 6.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Основы работы с клавиатурой</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">В этой  главе речь идет в основном о стандартной клавиа-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">туре,  хотя в тексте и будут встречаться некоторые коммента-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">рии, касающиеся клавиатуры Спектрум+. Мы не будем рассматри-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вать специальные модели клавиатуры,  такие  как  МС  5007  с</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">контроллером.  В  большинстве  случаев  всякие нестандартные</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">клавиатуры достаточно точно эмулируют стандартную  клавиату-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ру.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">В первой части этой  главы  объясняется,  как  присходит</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">взаимодействие  с  клавиатурой  на  аппаратном и программном</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">уровнях. Во второй чати этой главы объясняется, как BIOS об-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">рабатывает информацию,  получаемую с клавиатуры, и делает ее</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">доступной для наших программ.  Если вы намерены подробно уз-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">нать  о  работе клавиатуры,  то рекомендую сначала прочитать</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">эту главу. Один из достойных примеров использования этой ин-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">формации &#8211; это написание своего драйвера клавиатуры, который</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">бы модифицировал работу клавиатуры,  подобно тому,  как  это</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">сделано в моей программе Q-DOS.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">6.1 Работа клавиатуры</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Клавиатура Спектрума  не содержит специальных микросхем,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">которые выполняли бы часть рутинной работы. Когда клавиш на-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">жата,  соответствующий бит соответствующего порта сбрсывает-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ся. Всего существует 8 портов, которые контроллируют 40 кла-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">виш. Один порт контроллирует, таким образом, 5 клавиш.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Когда мы нажимаем на клавиши, клавиатура ничего не знает</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">о значении нажимаемых клавиш, она просто отмечает о происхо-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">дящих действиях.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">6.2 Связь с компьютером</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Каждый раз,  когда нажимается или отпускается  какая-ни-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">будь   клавиша  на  клавиатуре,  изменяется  соответствующий</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">бит.Каждые 1/50 секунды компьютер сканирует клавиатуру,  вы-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">рабатывая  с помощью программ ASCII-код соответствующей кла-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">виши.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Сначала с    помощью   сканирования   клавиши   получает</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">скен-код,  потом с помощью таблиц, происходит декодирование,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">транслирование,  архивирование, скроллирование с целью полу-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">чения ASCII-кода.  Работа по переводу скен-кода  усложняется</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">тем,  что  клавиатура имеет несколько операций по усложнению</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">регистров, меняющих значение нажатых клавиш. Например, нажав</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">клавишу CAPS SHIFT и одновременно клавишу С, по получим про-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">писную С.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Клавиши регистров и клавиши-переключатели.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">В дополнение  к  основным клавишам SHIFT и CAPS есть еще</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">клавиши-переключатели,  которые также влияют на механизм пе-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">реклюхения  регистров клавиатуры &#8211; клавиши GRAPHICS,  EXTERN</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">CAPS LOCK.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Информация о состоянии  регистров  храниться  в  области</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">системных переменных</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">23617/#5C41   0 &#8211; K, L, C режимы</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1 &#8211; Е режим</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">2 и более &#8211; G режим</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">23658/#5С6А   бит 3 установлен &#8211; C режим</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">сброшен    - L режим</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Всякий раз, когда BIOS получает скэн-код нажатия обычной</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">клавиши,  проверяется  состояние  этих режимов и после этого</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вырабатывается окончательный код.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Клавиши связи</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Когда подпрограммы BIOS транслируют коды,  она постоянно</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">проверяет   их   на   определенные   комбинации,  такие  как</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">CAPS+SPACE (BREAK).  Эти командыы застявляют немедленно  вы-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">полнить определенные действия, а иногда даже не помещать код</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">в память</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Повторение действия клавиши</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">На клавиатуре компьютера действия клавиши может  автома-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">тически повторяться.  С помощью специальных подпрограмм, оп-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ределяется, как долго остается клавиша в нажатом состоянии и</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">если это необоходимо, с заданной частотой будет генерировать</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">код  этой  клавиши.  За  эту  функцию  отвечают  2   ячейки:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">23561/#5С09 Время задержки между автоповтором и наатием кла-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">виши 23562/#5С0А Частота автоповтора</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Повторяющиеся клавиши</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">На клавиатуре Spectrum&#8217;а+  есть  повторяющиеся  клавиши.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Например,  &#8221;  можно набрать нажатием одной клавиши,  а можно</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">нажав SYMBOL SHIFT и Р. Но нет возможность определить, какая</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">из комбинаций все-таки нажата.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">6.3 Порты клавиатуры.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Ранее мы  вскольз упоминали о портах клавиатуры.  Узнать</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">нажата ли какая-нибудь клавиша можно  прочитав  значение  из</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">порта #FE (254).  Вся клавиатура Спектрума разбита на восемь</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">рядов по пять клавиш в каждом. При нажатии на клавишу сбрсы-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вается  один из младших битов (D0-D4) порта в зависимости от</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">клавиши. На практике необходимо знать точно, какая из клавиш</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">нажата.  Для этого следует читать данные из порта, индувиду-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ального для каждого ряда.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Адреса портов представлены ниже.  Биты D0-D4 в считанном</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">значении указывают какая клавиша полуряда нажата &#8211; соответс-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">твующий бит будет сброшен.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Внимательные заметят, что адрес можно формировать и дру-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">гим способом: младший байт всегда равен #FE (254), а в стар-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">шем сбрасывается соответствующий бит.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Хранимые данные</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">С работой клавиатуры явно или нет связано большое  число</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ячеек. Приведем основные:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">23556/5С04 Код  нажатой  клавиши  без учета клавиш изменения</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">состояния регистра.  Символьные  клавиши   всегда</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">прописные.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">23560/5С08 Код последней нажатой клавиши</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">23658/5С6А 3 бит. Установлен при С-курсоре</div>
<p>Глава 6.</p>
<p>Основы работы с клавиатурой</p>
<p>В этой  главе речь идет в основном о стандартной клавиа-</p>
<p>туре,  хотя в тексте и будут встречаться некоторые коммента-</p>
<p>рии, касающиеся клавиатуры Спектрум+. Мы не будем рассматри-</p>
<p>вать специальные модели клавиатуры,  такие  как  МС  5007  с</p>
<p>контроллером.  В  большинстве  случаев  всякие нестандартные</p>
<p>клавиатуры достаточно точно эмулируют стандартную  клавиату-</p>
<p>ру.</p>
<p>В первой части этой  главы  объясняется,  как  присходит</p>
<p>взаимодействие  с  клавиатурой  на  аппаратном и программном</p>
<p>уровнях. Во второй чати этой главы объясняется, как BIOS об-</p>
<p>рабатывает информацию,  получаемую с клавиатуры, и делает ее</p>
<p>доступной для наших программ.  Если вы намерены подробно уз-</p>
<p>нать  о  работе клавиатуры,  то рекомендую сначала прочитать</p>
<p>эту главу. Один из достойных примеров использования этой ин-</p>
<p>формации &#8211; это написание своего драйвера клавиатуры, который</p>
<p>бы модифицировал работу клавиатуры,  подобно тому,  как  это</p>
<p>сделано в моей программе Q-DOS.</p>
<p>6.1 Работа клавиатуры</p>
<p>Клавиатура Спектрума  не содержит специальных микросхем,</p>
<p>которые выполняли бы часть рутинной работы. Когда клавиш на-</p>
<p>жата,  соответствующий бит соответствующего порта сбрсывает-</p>
<p>ся. Всего существует 8 портов, которые контроллируют 40 кла-</p>
<p>виш. Один порт контроллирует, таким образом, 5 клавиш.</p>
<p>Когда мы нажимаем на клавиши, клавиатура ничего не знает</p>
<p>о значении нажимаемых клавиш, она просто отмечает о происхо-</p>
<p>дящих действиях.</p>
<p>6.2 Связь с компьютером</p>
<p>Каждый раз,  когда нажимается или отпускается  какая-ни-</p>
<p>будь   клавиша  на  клавиатуре,  изменяется  соответствующий</p>
<p>бит.Каждые 1/50 секунды компьютер сканирует клавиатуру,  вы-</p>
<p>рабатывая  с помощью программ ASCII-код соответствующей кла-</p>
<p>виши.</p>
<p>Сначала с    помощью   сканирования   клавиши   получает</p>
<p>скен-код,  потом с помощью таблиц, происходит декодирование,</p>
<p>транслирование,  архивирование, скроллирование с целью полу-</p>
<p>чения ASCII-кода.  Работа по переводу скен-кода  усложняется</p>
<p>тем,  что  клавиатура имеет несколько операций по усложнению</p>
<p>регистров, меняющих значение нажатых клавиш. Например, нажав</p>
<p>клавишу CAPS SHIFT и одновременно клавишу С, по получим про-</p>
<p>писную С.</p>
<p>Клавиши регистров и клавиши-переключатели.</p>
<p>В дополнение  к  основным клавишам SHIFT и CAPS есть еще</p>
<p>клавиши-переключатели,  которые также влияют на механизм пе-</p>
<p>реклюхения  регистров клавиатуры &#8211; клавиши GRAPHICS,  EXTERN</p>
<p>CAPS LOCK.</p>
<p>Информация о состоянии  регистров  храниться  в  области</p>
<p>системных переменных</p>
<p>23617/#5C41   0 &#8211; K, L, C режимы</p>
<p>1 &#8211; Е режим</p>
<p>2 и более &#8211; G режим</p>
<p>23658/#5С6А   бит 3 установлен &#8211; C режим</p>
<p>сброшен    - L режим</p>
<p>Всякий раз, когда BIOS получает скэн-код нажатия обычной</p>
<p>клавиши,  проверяется  состояние  этих режимов и после этого</p>
<p>вырабатывается окончательный код.</p>
<p>Клавиши связи</p>
<p>Когда подпрограммы BIOS транслируют коды,  она постоянно</p>
<p>проверяет   их   на   определенные   комбинации,  такие  как</p>
<p>CAPS+SPACE (BREAK).  Эти командыы застявляют немедленно  вы-</p>
<p>полнить определенные действия, а иногда даже не помещать код</p>
<p>в память</p>
<p>Повторение действия клавиши</p>
<p>На клавиатуре компьютера действия клавиши может  автома-</p>
<p>тически повторяться.  С помощью специальных подпрограмм, оп-</p>
<p>ределяется, как долго остается клавиша в нажатом состоянии и</p>
<p>если это необоходимо, с заданной частотой будет генерировать</p>
<p>код  этой  клавиши.  За  эту  функцию  отвечают  2   ячейки:</p>
<p>23561/#5С09 Время задержки между автоповтором и наатием кла-</p>
<p>виши 23562/#5С0А Частота автоповтора</p>
<p>Повторяющиеся клавиши</p>
<p>На клавиатуре Spectrum&#8217;а+  есть  повторяющиеся  клавиши.</p>
<p>Например,  &#8221;  можно набрать нажатием одной клавиши,  а можно</p>
<p>нажав SYMBOL SHIFT и Р. Но нет возможность определить, какая</p>
<p>из комбинаций все-таки нажата.</p>
<p>6.3 Порты клавиатуры.</p>
<p>Ранее мы  вскольз упоминали о портах клавиатуры.  Узнать</p>
<p>нажата ли какая-нибудь клавиша можно  прочитав  значение  из</p>
<p>порта #FE (254).  Вся клавиатура Спектрума разбита на восемь</p>
<p>рядов по пять клавиш в каждом. При нажатии на клавишу сбрсы-</p>
<p>вается  один из младших битов (D0-D4) порта в зависимости от</p>
<p>клавиши. На практике необходимо знать точно, какая из клавиш</p>
<p>нажата.  Для этого следует читать данные из порта, индувиду-</p>
<p>ального для каждого ряда.</p>
<p>Адреса портов представлены ниже.  Биты D0-D4 в считанном</p>
<p>значении указывают какая клавиша полуряда нажата &#8211; соответс-</p>
<p>твующий бит будет сброшен.</p>
<p>Внимательные заметят, что адрес можно формировать и дру-</p>
<p>гим способом: младший байт всегда равен #FE (254), а в стар-</p>
<p>шем сбрасывается соответствующий бит.</p>
<p>Хранимые данные</p>
<p>С работой клавиатуры явно или нет связано большое  число</p>
<p>ячеек. Приведем основные:</p>
<p>23556/5С04 Код  нажатой  клавиши  без учета клавиш изменения</p>
<p>состояния регистра.  Символьные  клавиши   всегда</p>
<p>прописные.</p>
<p>23560/5С08 Код последней нажатой клавиши</p>
<p>23658/5С6А 3 бит. Установлен при С-курсоре</p>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.volkov.ru/oldstuff/zx-spectrum6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Руководство к ZX-Spectrum. Глава 5</title>
		<link>http://www.volkov.ru/oldstuff/zxspectrum5/</link>
		<comments>http://www.volkov.ru/oldstuff/zxspectrum5/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 09:27:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Страницы истории]]></category>

		<guid isPermaLink="false">http://www.volkov.ru/?p=1611</guid>
		<description><![CDATA[В большинстве компьютеров имеются устройства внешней па-
мяти,  использующие для накопления информации магнитные дис-
ки.  Независимо от типа и емкости они используют один и  тот
же принцип долговременного хранения информации в виде намаг-
ниченных участков поврхности накопителя.  При движении  мимо
них  считывающего устройства в нем возбуждаются импульсы то-
ка.
Сначала (в 1982 году) Спектрумы имели один  единственный
тип внешней памяти &#8211; магнитифоны. С [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">В большинстве компьютеров имеются устройства внешней па-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">мяти,  использующие для накопления информации магнитные дис-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ки.  Независимо от типа и емкости они используют один и  тот</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">же принцип долговременного хранения информации в виде намаг-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ниченных участков поврхности накопителя.  При движении  мимо</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">них  считывающего устройства в нем возбуждаются импульсы то-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ка.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Сначала (в 1982 году) Спектрумы имели один  единственный</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">тип внешней памяти &#8211; магнитифоны. С тех пор техника развива-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">лась: в том же 82 году появились микродрайвы, а позже и нор-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">мальные дисководы. Непрерывное развитие технологии привело к</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">широкому распростронению жестких дисков (шутка) и трехдюймо-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вых мини-дискет (тоже шутка).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Однако программиста  должно  больше интересовать как ин-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">формация расположена на диске и как ее записывать  и  считы-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вать.  В этой главе мы сосредоточимся на гибких дисках,  ибо</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">они занимают лидирующую позицию в списке  внешней  накопите-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">лей.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5.1 Физическая структура диска</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Емкость диска зависит от дисковода и особенностей опера-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ционной системы,  однако структура диска всегда одна и таже.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Данные  всегда  записываются на магнитный поверхности в виде</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">концентрических поверхности,  называемых  дорожками.  Каждая</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">дорожка, в свою очередь, состоит из нескольких секторов. Ко-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">личество информации на одной стороне диска зависит от  числа</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">дорожек  и размера сектора.  Плотность (число дорожек) может</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">меняться от диска к диску. Старые модели дисководов имеют 40</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">дорожек, новые до 83.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Для дискет расположение каждой дорожки и число использу-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">емых строн диска &#8211; конструктивные  особенности  дисковода  и</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">дискеты и не могут быть изменены. Но число и размер секторов</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">задаются программно при форматировании дискеты. Во всей кни-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ге мы будем рассматривать только стандартные форматы данных.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Специальные схемы форматирования с помощью  программирования</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">контроллера предназначены для защиты дискет от копирования.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Размер сектора в системе TR-DOS равен 256 байтам. На до-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">рожке размещается 16 секторов,  что дает 4К на дорожку или 4</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">сектора на килобайт. Такое большое количество секторов мало-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">го размера имеет несколько преимуществ.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Дискеты имеют две стороны и они обе могут быть использо-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ваны.  (на соответствующем дисководе). Жесткие диски состоят</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">из нескольких пластин и имеют более двух сторон,  но в связи</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">с тем, что &#8220;винчестеры&#8221; до недавнего времени можно было под-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">соеденить только к Профи, мы их пока рассматривать не будем.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5.2 Форматы дисков TR-DOS</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">TR-DOS используются очень мало форматов дисков. Возможно</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">написание сових драйверов дискет, которые будут использовать</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">другие форматы диска,  но на пркатике это почти не использу-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ется.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Возможны следующие форматы:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Название Стороны Секторов Дорожек Объем</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">S-16        1      16       40     160K</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">D-16        2      16       40     320K</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">QS-16       1      16       80     320K</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">QD-16       2      16       80     640K</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Причины, по которой стандартный форматов  целых  четыре,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">проста:  это  гарантирует,  что  программы будут читаться на</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">всех компьютерах.  Первые компьютеры имели дисководы для од-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">носторонних дискет.  После появились дисководы для двух сто-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ронних дисков. Теперь их заменили 80-ти дорожечные двух сто-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ронние дисководы.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">TR-DOS использует двойную плотность записи, что позволя-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ет использовать 16 секторов,  это почти соответствует 8 сек-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">торам MS-DOS.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5.3 Логическая структура диска</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Все диски TR-DOS имеют сходный логический формат. Сторо-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ны,  дорожки и сектора нумеруются одинаковым образом. Прежде</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">чем  перейти  к  обсуждению организации диска полезно разоб-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">раться с нотацией,  принятой в TR-DOS для адресации информа-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ции на диске.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Пятидюймовые дискеты имеют 40 или 80 дорожек, нумеруемых</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">с 0 (самая внешная дорожка) до 39 или 79 (самая  внутренная,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ближайшая к центру дорожка).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">На двухстороннем дисководе стороны нумеруются от 0 до 1.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Единственная сторона односторонней дискеты имеет номер 0. На</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">двухсторонней дискете дорожки нумеруются несколько странно:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">0,2,4&#8230; 158             сторона 0</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">████████████▒▒█████████████</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1,3,5&#8230; 159             сторона 1</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Сектора нумеруются  с  0 до 15 в формате DOS или от 1 до</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">16 в формате контроллера.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Некоторые программы позволяют для простоты указывать  не</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">только  дорожки,  но и стороны.  Дорожки при этом нумеруются</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">как на односторонней дискете.  Именно  такой  формат  принят</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">контроллером дисковода.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5.4 Как TR-DOS использует диски</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">При форматировании  TR-DOS  делит  каждую  дорожку на 16</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">секторов по 256 байт.  Общая емкость диска QD-16  составляет</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">655360 байт.  Однако не весь объем используется для хранения</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">данных,  некоторую часть диска занимает системная информация</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">и таблицы, которая необходима для работы.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Процесс форматирования  делит  общее количество секторов</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">на 3 части,  вернее отделяет от одной большой части две  ма-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ленькие. Эти частички &#8211; каталог и область системной информа-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ции.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Каталог содержится в 7 секторах,  системную информацию о</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">дискете в целом можно найти на восьмом секторе (все на муле-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вой дорожке).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Каталог файлов содержит информацию о файлах.  Там  нахо-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">диться информация о имени, длина и др. Область системной ин-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">формации содержит информацию о дискете в целом:  имя  диска,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">тип операционной системы, свободная память и так. далее.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Пространство данных используется для хранения собственно</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">данных и занимает большую часть диска.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Следует учесть, что в TR-DOS нигде не отмечасются плохие</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">сектора, также не допускается фрагментация файлов.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5.5 Подробности логической структуры</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Рассмотрим более детально каталог и системную информацию</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5.5.1 Каталог</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Каталог используется  для  хранения информации о файлах,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">включая имя, его размер, начальный свободный сектор.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Каталог представляется собой таблицу,в  котором  каждому</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">файлу  на диске соответствует одна запись.  Эта запись имеет</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">размер 16 байт,  следовательно на одном секторе размером 256</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">байт имещается 16 записей каталога.  Всего под каталог выде-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">лено 7 секторов нулевой дорожки дискеты.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Каждая запись о файле состоит из 7 полей.  Ниже  указаны</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">смещения полей в байтах от начала записи:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">0..7   Имя файла в ASCII формате</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">8      Тип файла в ASCII формате</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">9..10  Параметр &#8220;старт&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">11..12 Длина файла в байтах</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">13     Объем файла в секторах</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">14     Номер первого сектора файла</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">15     Номер первой дорожки</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Поле 1. Имя файла</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Первые восемь байт записи каталога содержит имя файла  в</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">формате ASCII.  Если имя файла короче 8 символов, то оно до-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">полняется во восьми символов пробелами.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Существует несколько особых  ситуаций,  которые  следует</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">отметить особо. Во-первых, если первых символ имеет значение</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">00,  то считается,  что это конец  дириктория.  Если  TR-DOS</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">встречает  такой символ,  то просмотр каталога прекращается.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Во-вторых,  если первый символ имеет значение  01,  то  этот</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">файл считается удаленным.  Вообще, я не рекомендую использо-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вать в имени файла символы более #7F и менее #20.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">В-третьих, некоторые комбинации имен файлов  воспринима-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ются как управляющие.  Например, &#8220;B:WAND&#8221; и &#8220;A:WAND&#8221; воспри-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">нимаются как команды для считывания файла  WAND  с  принуди-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">тельного дисковода.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Поле 2. Тип файла.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Это поле гранит в себе символ  D,  C,  B,  #  в  формате</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ASCII. Как правило применяются только эти символы, чего мы и</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">рекомендуем вам придерживаться.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Поле 3. Параметр &#8220;старт&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Это поле  имеет различное значение в зависимости от типа</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">файла.  При типе B здесь находиться длина бейсик  файла  без</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">учета  размера переменных.  При типе C адрес с которого была</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">выгружена программа.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Стартовая строка бейсик-программы записывается после са-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">мой программы, номер строки автостарта в области длиной око-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ло 80 байт, припысываемой к программе.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Поле 4. Длина</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Длина файла в байтах.  Следует учесть, что величина ука-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">занная в этой ячейке может быть ложной.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Поле 5. Рамер файла в секторах</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Размер файла в секторах. Эта величина всегда должна быть</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">истиннной,  чтобы файл копировался успешно.  Занесение в эту</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ячейку нуля является наиболие простой зашитой.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Поле 6 и 7. Начальное место файла на диске</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Здесь находиться адрес первого сектора и трека соответс-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">твенно.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5.5.2 Область системной информации</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Восьмой сектор  нулевой дорожки гранит в себе информацию</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">о дискете в общем. Она содержит следующую информацию:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Смещения от начала сектора:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#E1  Первый свободный сектор на дискете</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#E2    Первый свободный трек</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#E3    Тип диска:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">16 80 дорожек, 2 стороны</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">17 40 дорожек, 2 стороны</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">18 80 дорожек, 1 сторона</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">19 40 дорожек, 1 сторона</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#Е4  Общее количество файлов записанных</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">на диск</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#Е6,Е7 Число свободных секторов на дис-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ке</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#Е7    Код  #10,определяющий принадлеж-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ность к TR-DOS #F4 Количество удаленных</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">файлов</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#F5-#FC Имя диска в ASCII формате</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5.5.3. Пространство данных</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Все файлы данных храняться в области, занимающей самую боль-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">шую часть каждого диска.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Файлам дается  столько места сколько нужно.  Файл всегда</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">представляет собой один непрерывный блок из секторов. TR-DOS</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">не  учитывает  плохие  сектора  и после форматирования у вас</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">есть очень большой шанс,  что ваша программа читаться не бу-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">дет, если на вашем диске были плохие сектора.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5.6 Выводы</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">TR-DOS одна из самый не развитых операционных систем для</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Спектрума.  Нет доводов на ее использование, но ей все поль-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">зуются и TR-DOS получила большое распростронение на террито-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">рии СНГ.  Но зато есть iS-DOS,  где и набирался этот  текст.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ТR-DOS очень быстрая операционная система, но практически не</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">предоставляет пользователю никакого сервиса.</div>
<div>В большинстве компьютеров имеются устройства внешней па-</div>
<div>мяти,  использующие для накопления информации магнитные дис-</div>
<div>ки.  Независимо от типа и емкости они используют один и  тот</div>
<div>же принцип долговременного хранения информации в виде намаг-</div>
<div>ниченных участков поврхности накопителя.  При движении  мимо</div>
<div>них  считывающего устройства в нем возбуждаются импульсы то-</div>
<div>ка.</div>
<div></div>
<div>Сначала (в 1982 году) Спектрумы имели один  единственный</div>
<div>тип внешней памяти &#8211; магнитифоны. С тех пор техника развива-</div>
<div>лась: в том же 82 году появились микродрайвы, а позже и нор-</div>
<div>мальные дисководы. Непрерывное развитие технологии привело к</div>
<div>широкому распростронению жестких дисков (шутка) и трехдюймо-</div>
<div>вых мини-дискет (тоже шутка).</div>
<div></div>
<div>Однако программиста  должно  больше интересовать как ин-</div>
<div>формация расположена на диске и как ее записывать  и  считы-</div>
<div>вать.  В этой главе мы сосредоточимся на гибких дисках,  ибо</div>
<div>они занимают лидирующую позицию в списке  внешней  накопите-</div>
<div>лей.</div>
<div></div>
<div>5.1 Физическая структура диска</div>
<div></div>
<div>Емкость диска зависит от дисковода и особенностей опера-</div>
<div>ционной системы,  однако структура диска всегда одна и таже.</div>
<div>Данные  всегда  записываются на магнитный поверхности в виде</div>
<div>концентрических поверхности,  называемых  дорожками.  Каждая</div>
<div>дорожка, в свою очередь, состоит из нескольких секторов. Ко-</div>
<div>личество информации на одной стороне диска зависит от  числа</div>
<div>дорожек  и размера сектора.  Плотность (число дорожек) может</div>
<div>меняться от диска к диску. Старые модели дисководов имеют 40</div>
<div>дорожек, новые до 83.</div>
<div></div>
<div>Для дискет расположение каждой дорожки и число использу-</div>
<div>емых строн диска &#8211; конструктивные  особенности  дисковода  и</div>
<div>дискеты и не могут быть изменены. Но число и размер секторов</div>
<div>задаются программно при форматировании дискеты. Во всей кни-</div>
<div>ге мы будем рассматривать только стандартные форматы данных.</div>
<div>Специальные схемы форматирования с помощью  программирования</div>
<div>контроллера предназначены для защиты дискет от копирования.</div>
<div></div>
<div>Размер сектора в системе TR-DOS равен 256 байтам. На до-</div>
<div>рожке размещается 16 секторов,  что дает 4К на дорожку или 4</div>
<div>сектора на килобайт. Такое большое количество секторов мало-</div>
<div>го размера имеет несколько преимуществ.</div>
<div></div>
<div>Дискеты имеют две стороны и они обе могут быть использо-</div>
<div>ваны.  (на соответствующем дисководе). Жесткие диски состоят</div>
<div>из нескольких пластин и имеют более двух сторон,  но в связи</div>
<div>с тем, что &#8220;винчестеры&#8221; до недавнего времени можно было под-</div>
<div>соеденить только к Профи, мы их пока рассматривать не будем.</div>
<div></div>
<div>5.2 Форматы дисков TR-DOS</div>
<div></div>
<div>TR-DOS используются очень мало форматов дисков. Возможно</div>
<div>написание сових драйверов дискет, которые будут использовать</div>
<div>другие форматы диска,  но на пркатике это почти не использу-</div>
<div>ется.</div>
<div></div>
<div>Возможны следующие форматы:</div>
<div></div>
<div>Название Стороны Секторов Дорожек Объем</div>
<div></div>
<div>S-16        1      16       40     160K</div>
<div>D-16        2      16       40     320K</div>
<div>QS-16       1      16       80     320K</div>
<div>QD-16       2      16       80     640K</div>
<div></div>
<div>Причины, по которой стандартный форматов  целых  четыре,</div>
<div>проста:  это  гарантирует,  что  программы будут читаться на</div>
<div>всех компьютерах.  Первые компьютеры имели дисководы для од-</div>
<div>носторонних дискет.  После появились дисководы для двух сто-</div>
<div>ронних дисков. Теперь их заменили 80-ти дорожечные двух сто-</div>
<div>ронние дисководы.</div>
<div></div>
<div>TR-DOS использует двойную плотность записи, что позволя-</div>
<div>ет использовать 16 секторов,  это почти соответствует 8 сек-</div>
<div>торам MS-DOS.</div>
<div></div>
<div>5.3 Логическая структура диска</div>
<div></div>
<div>Все диски TR-DOS имеют сходный логический формат. Сторо-</div>
<div>ны,  дорожки и сектора нумеруются одинаковым образом. Прежде</div>
<div>чем  перейти  к  обсуждению организации диска полезно разоб-</div>
<div>раться с нотацией,  принятой в TR-DOS для адресации информа-</div>
<div>ции на диске.</div>
<div></div>
<div>Пятидюймовые дискеты имеют 40 или 80 дорожек, нумеруемых</div>
<div>с 0 (самая внешная дорожка) до 39 или 79 (самая  внутренная,</div>
<div>ближайшая к центру дорожка).</div>
<div></div>
<div>На двухстороннем дисководе стороны нумеруются от 0 до 1.</div>
<div>Единственная сторона односторонней дискеты имеет номер 0. На</div>
<div>двухсторонней дискете дорожки нумеруются несколько странно:</div>
<div></div>
<div>0,2,4&#8230; 158             сторона 0</div>
<div>████████████▒▒█████████████</div>
<div>1,3,5&#8230; 159             сторона 1</div>
<div></div>
<div>Сектора нумеруются  с  0 до 15 в формате DOS или от 1 до</div>
<div>16 в формате контроллера.</div>
<div></div>
<div>Некоторые программы позволяют для простоты указывать  не</div>
<div>только  дорожки,  но и стороны.  Дорожки при этом нумеруются</div>
<div>как на односторонней дискете.  Именно  такой  формат  принят</div>
<div>контроллером дисковода.</div>
<div></div>
<div>5.4 Как TR-DOS использует диски</div>
<div></div>
<div>При форматировании  TR-DOS  делит  каждую  дорожку на 16</div>
<div>секторов по 256 байт.  Общая емкость диска QD-16  составляет</div>
<div>655360 байт.  Однако не весь объем используется для хранения</div>
<div>данных,  некоторую часть диска занимает системная информация</div>
<div>и таблицы, которая необходима для работы.</div>
<div></div>
<div>Процесс форматирования  делит  общее количество секторов</div>
<div>на 3 части,  вернее отделяет от одной большой части две  ма-</div>
<div>ленькие. Эти частички &#8211; каталог и область системной информа-</div>
<div>ции.</div>
<div></div>
<div>Каталог содержится в 7 секторах,  системную информацию о</div>
<div>дискете в целом можно найти на восьмом секторе (все на муле-</div>
<div>вой дорожке).</div>
<div></div>
<div>Каталог файлов содержит информацию о файлах.  Там  нахо-</div>
<div>диться информация о имени, длина и др. Область системной ин-</div>
<div>формации содержит информацию о дискете в целом:  имя  диска,</div>
<div>тип операционной системы, свободная память и так. далее.</div>
<div></div>
<div>Пространство данных используется для хранения собственно</div>
<div>данных и занимает большую часть диска.</div>
<div></div>
<div>Следует учесть, что в TR-DOS нигде не отмечасются плохие</div>
<div>сектора, также не допускается фрагментация файлов.</div>
<div></div>
<div>5.5 Подробности логической структуры</div>
<div></div>
<div>Рассмотрим более детально каталог и системную информацию</div>
<div></div>
<div>5.5.1 Каталог</div>
<div></div>
<div>Каталог используется  для  хранения информации о файлах,</div>
<div>включая имя, его размер, начальный свободный сектор.</div>
<div></div>
<div>Каталог представляется собой таблицу,в  котором  каждому</div>
<div>файлу  на диске соответствует одна запись.  Эта запись имеет</div>
<div>размер 16 байт,  следовательно на одном секторе размером 256</div>
<div>байт имещается 16 записей каталога.  Всего под каталог выде-</div>
<div>лено 7 секторов нулевой дорожки дискеты.</div>
<div></div>
<div>Каждая запись о файле состоит из 7 полей.  Ниже  указаны</div>
<div>смещения полей в байтах от начала записи:</div>
<div></div>
<div>0..7   Имя файла в ASCII формате</div>
<div>8      Тип файла в ASCII формате</div>
<div>9..10  Параметр &#8220;старт&#8221;</div>
<div>11..12 Длина файла в байтах</div>
<div>13     Объем файла в секторах</div>
<div>14     Номер первого сектора файла</div>
<div>15     Номер первой дорожки</div>
<div></div>
<div>Поле 1. Имя файла</div>
<div>Первые восемь байт записи каталога содержит имя файла  в</div>
<div>формате ASCII.  Если имя файла короче 8 символов, то оно до-</div>
<div>полняется во восьми символов пробелами.</div>
<div></div>
<div>Существует несколько особых  ситуаций,  которые  следует</div>
<div>отметить особо. Во-первых, если первых символ имеет значение</div>
<div>00,  то считается,  что это конец  дириктория.  Если  TR-DOS</div>
<div>встречает  такой символ,  то просмотр каталога прекращается.</div>
<div>Во-вторых,  если первый символ имеет значение  01,  то  этот</div>
<div>файл считается удаленным.  Вообще, я не рекомендую использо-</div>
<div>вать в имени файла символы более #7F и менее #20.</div>
<div></div>
<div>В-третьих, некоторые комбинации имен файлов  воспринима-</div>
<div>ются как управляющие.  Например, &#8220;B:WAND&#8221; и &#8220;A:WAND&#8221; воспри-</div>
<div>нимаются как команды для считывания файла  WAND  с  принуди-</div>
<div>тельного дисковода.</div>
<div></div>
<div>Поле 2. Тип файла.</div>
<div>Это поле гранит в себе символ  D,  C,  B,  #  в  формате</div>
<div>ASCII. Как правило применяются только эти символы, чего мы и</div>
<div>рекомендуем вам придерживаться.</div>
<div></div>
<div>Поле 3. Параметр &#8220;старт&#8221;</div>
<div>Это поле  имеет различное значение в зависимости от типа</div>
<div>файла.  При типе B здесь находиться длина бейсик  файла  без</div>
<div>учета  размера переменных.  При типе C адрес с которого была</div>
<div>выгружена программа.</div>
<div></div>
<div>Стартовая строка бейсик-программы записывается после са-</div>
<div>мой программы, номер строки автостарта в области длиной око-</div>
<div>ло 80 байт, припысываемой к программе.</div>
<div></div>
<div>Поле 4. Длина</div>
<div>Длина файла в байтах.  Следует учесть, что величина ука-</div>
<div>занная в этой ячейке может быть ложной.</div>
<div></div>
<div>Поле 5. Рамер файла в секторах</div>
<div>Размер файла в секторах. Эта величина всегда должна быть</div>
<div>истиннной,  чтобы файл копировался успешно.  Занесение в эту</div>
<div>ячейку нуля является наиболие простой зашитой.</div>
<div></div>
<div>Поле 6 и 7. Начальное место файла на диске</div>
<div>Здесь находиться адрес первого сектора и трека соответс-</div>
<div>твенно.</div>
<div></div>
<div>5.5.2 Область системной информации</div>
<div></div>
<div>Восьмой сектор  нулевой дорожки гранит в себе информацию</div>
<div>о дискете в общем. Она содержит следующую информацию:</div>
<div></div>
<div>Смещения от начала сектора:</div>
<div></div>
<div>#E1  Первый свободный сектор на дискете</div>
<div>#E2    Первый свободный трек</div>
<div>#E3    Тип диска:</div>
<div>16 80 дорожек, 2 стороны</div>
<div>17 40 дорожек, 2 стороны</div>
<div>18 80 дорожек, 1 сторона</div>
<div>19 40 дорожек, 1 сторона</div>
<div>#Е4  Общее количество файлов записанных</div>
<div>на диск</div>
<div>#Е6,Е7 Число свободных секторов на дис-</div>
<div>ке</div>
<div>#Е7    Код  #10,определяющий принадлеж-</div>
<div>ность к TR-DOS #F4 Количество удаленных</div>
<div>файлов</div>
<div>#F5-#FC Имя диска в ASCII формате</div>
<div></div>
<div>5.5.3. Пространство данных</div>
<div></div>
<div>Все файлы данных храняться в области, занимающей самую боль-</div>
<div>шую часть каждого диска.</div>
<div></div>
<div>Файлам дается  столько места сколько нужно.  Файл всегда</div>
<div>представляет собой один непрерывный блок из секторов. TR-DOS</div>
<div>не  учитывает  плохие  сектора  и после форматирования у вас</div>
<div>есть очень большой шанс,  что ваша программа читаться не бу-</div>
<div>дет, если на вашем диске были плохие сектора.</div>
<div></div>
<div>5.6 Выводы</div>
<div></div>
<div>TR-DOS одна из самый не развитых операционных систем для</div>
<div>Спектрума.  Нет доводов на ее использование, но ей все поль-</div>
<div>зуются и TR-DOS получила большое распростронение на террито-</div>
<div>рии СНГ.  Но зато есть iS-DOS,  где и набирался этот  текст.</div>
<div>ТR-DOS очень быстрая операционная система, но практически не</div>
<div>предоставляет пользователю никакого сервиса.</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.volkov.ru/oldstuff/zxspectrum5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Руководство к ZX-Spectrum. Глава 4</title>
		<link>http://www.volkov.ru/oldstuff/zx-spectrum4/</link>
		<comments>http://www.volkov.ru/oldstuff/zx-spectrum4/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 09:19:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Страницы истории]]></category>

		<guid isPermaLink="false">http://www.volkov.ru/?p=1609</guid>
		<description><![CDATA[Глава 4. Основы видео
Для многих  людей дисплей и есть компьютер.  О программе
некоторые &#8220;гении&#8221; судят исключительно по качеству &#8220;картинки&#8221;
на экране.  В этой главе мы расскажем о том, как формируется
изображение и покажем как использовать это на практике.
4.1 Адаптеры дисплеев
Большинство пользователей компьютеров семейства Спектрум
сталкиваются с таким понятием, только когда читают журналы о
IBM PC. 99% имеющий стандартных Спектрум даже [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Глава 4. Основы видео</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Для многих  людей дисплей и есть компьютер.  О программе</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">некоторые &#8220;гении&#8221; судят исключительно по качеству &#8220;картинки&#8221;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">на экране.  В этой главе мы расскажем о том, как формируется</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">изображение и покажем как использовать это на практике.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">4.1 Адаптеры дисплеев</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Большинство пользователей компьютеров семейства Спектрум</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">сталкиваются с таким понятием, только когда читают журналы о</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">IBM PC. 99% имеющий стандартных Спектрум даже не подозревают</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">о существовании других экранов.  Всем им суждено работать со</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">стандартным экраном.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">На текущий момент мне известны следущие типы адаптеров:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Стандартный  адаптер</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">(Standart Graphics Adapter SGA)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Улучшенный адаптер</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">(Enhanced Graphics Adapter EGA)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Моноадапер Профи</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">(Profi-mono Graphics Adapter PMGA)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Цветной адаптер Профи</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">(Profi-color Graphics Adapter PCGA)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Адаптер АТМ</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">(ATM-Turbo Graphisc Adapter AGA)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Все они отличаются своими характеристиками. Наилучшим из</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">них является EGA.  Все эти адаптеры являются графическими, в</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">них нет такого принципиального режима как текстовой (за иск-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">лючением АEGA)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">В последнее  время  появилась  информация о АТМ-ТУРБО 2,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">где имеется улучшенный адаптер AEGA  (ATM-Turbo  2  Enhanced</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Graphics Adapter). Он имеет характеристики как у EGA+AGA, но</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">кроме всего этого имеет текстовой режим.  К сожалению  я  не</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">имел общения с ним, поэтому утверждать точно не буду. Вот их</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">характеристики:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">SGA</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">256*192 2 цвета из 8*2 для 8*8 точек.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">EGA</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">640*350 16 цветов для каждой точки</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">PMGA</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">512*240 2 цвета на весь экран</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">PCGA</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">512*240 8 цветов+мерцание на 8 точек</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">512*240 16 цветов на 8 точек</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">AGA</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">640*200 8 цветов для каждой строки</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">320*200 16 цветов для каждой точки</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Так как в настоящее время распростроннен SGA, поэтому мы</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">и будем рассмотривать только его.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">4.2 Видеопамять SGA</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Видеопамять, или,  точнее, оперативная память, использу-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ется для хранения изображения,  физически расположена вместе</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">с остальными компанентами на плате компьютера. Логически эта</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">память является частью  адресного  пространства  процессора.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Для  этого зарезервирована область памяти,  начиная с адреса</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#4000.  Область логически разделена на  две  части:  область</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">черно-белого  изображения и область атрибутов &#8211; цветов.  Об-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ласть черно-белого изображения  и  область  атрибутов  очень</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">сложна,  поэтому  мы рассмотрим ее подробно.  Начинается об-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ласть с #4000 до #5AFF,  что дает 6144 байта. Спектрумовский</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">SGA  экран разделен на знакоместа (тексел от TEXt ELement) -</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">области в виде квадратиков 8 на 8 точек.  Для каждого знако-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">места свои атрибуты. На экране 24 ряда по 32 символа в ряду:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">всего 768 атрибутов. Каждые 8 точек храняться в одном байте,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">т.е  на хранение изображения 1 знакоместа тратиться 8 байт +</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1 байт знакоместа 768*8, что и дает 6144.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Вообще существует два способа изучить структуру экранной</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">области ZX Spectrum.  Один &#8211; рассмотреть как грузиться экран</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">с кассеты, другой это внимательно прочить данныю главу. Если</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вы выбрали последнее крайне рекомендую набирать все  примеры</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">на клавиатуре, это будет способствовать большему запоминанию</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">материала.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Экран начинается с адреса  16384.  Попробуетм  закрасить</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">крайний левый верхний угол. Дадим ряд команд:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD A,%11111111           LET A=255</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD (#4000),A             POKE 16384,A</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD A,%00001111           LET A=15</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD (#4000),A             POKE 16384,A</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD A,%10101010           LET A=170</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD (#4000),A             POKE 16384,A</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">После этого примера вы наверно  убедились,  что  биты  в</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">байте соответствуют пикселям на экране.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD (#4001),A</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD (#4002),A</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8230;..  и так далее</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Вы будете изменять содержимое экрана,  двигаясь по гори-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">зонтали или говоря точнее,  вы будете модифицировать нулевые</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">линии в нулевом знакоместе нулевого ряда.  Увеличивая  адрес</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вы  перемещаетеся вправо по экрану,  ходясь в том же нулевой</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">линии.  Т.к.  столбцов 32 то попробуем пропустить 32 байта и</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">занести туда значение: LD (#4000+#20),A</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Но в результате мы получили нечто  иное  чем,  следовало</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ожидать. Изменилась нулевая линия в первом ряду. Чтобы изме-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">нить первую линию в нулевом  знакоместе  следует  пропустить</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">256 байт.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Теперь вы  убедились  в сложности экрана.  Чтобы немного</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">отдохнуть можете позагружать  картинки,  пройти  72  комнату</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">EXOLON&#8217;а и выпить 2-3 кружечки кофю,  после чего можете про-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">должить сие чтиво.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">На первый взгляд такое расположение экранной области не-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">лепо.  Но  на  практике  это облегчает работу (шутка) &#8211; надо</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">толкьо все понять.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Итак, вернемся к экрану.  Экрана также разбит на  трети.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Отсчет в каждой трети начинается заного.  Каждая треть начи-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">нается с адресов:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#4000</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#4800</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#5000</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">В кодах адрес как правило храниться в  регистровой  паре</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">HL. Полный адрес можно представить в виде:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">┌──────H──────┐ ┌──────L──────┐</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">┌┴┬─┬─┬─┬─┬─┬─┬┴┬┴┬─┬─┬─┬─┬─┬─┬┴┐</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">│0│1│0│ │ │ │ │ │ │ │ │ │ │ │ │ │</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">└─┴─┴─┴┬┴┬┴┬┴─┴┬┴┬┴─┴┬┴┬┴─┴─┴─┴┬┘</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">└┬┘ └─┬─┘ └─┬─┘ └───┬───┘</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1    2     3       4</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1  Номер трети</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">2  Смещение внутри знакоместа</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">3  Номер ряда</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">4  Номер столбца</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Чтобы сместиться вправо дадим команду INC L. Чтобы пере-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">меститься  по вертикали в одном знакоместе дадим команду INC</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">H.  Когда вы пройдете все знакоместо и выйдете  за  границу,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">номер  столбца  обнулиться,  а  номер рада увеличиться.  Все</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">просто, пока дело не доходит до других третей.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">На практике часто на экране графика используется  только</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">на одной трети. КОнечно она есть и на других третях, но чаще</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">статическая, не подвижная.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Большую теоретическую информацию вы найдете в любой  ли-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">тературе по Спектруму, а нам пора перейти к атрубутам, пред-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">варительно пройдя уровень ZYNAPS&#8217;а</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Атрибуты каждого  знакоместа  занимают  1  байт,  причем</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">структура их очень проста. Байты распологаются слева направо</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">и сверху вниз. Адрес можно вычислить как 22588+32*Y+X.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">На ассемблере это деляется следующим образом:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD D,X</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD E,Y</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD H,0</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD L,Y</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ADD HL,HL</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ADD HL,HL</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ADD HL,HL</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ADD HL,HL</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ADD HL,HL</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD A,E</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ADD A,L</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD L,A</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">JR NC,$+3</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">LD DE,#5800</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ADD HL,DE</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">В результате чего мы получими в регистре HL адрес  байта</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">в памяти.  У нас еще остался бордур.  На него конечно нельзя</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">выводить графику,  но можно менять цвет. Для этого код цвета</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">нужно выдать в порт #00FE.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Цвета кодируются следующим образом:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">0   черный</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1   синий</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">2   красный</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">3   фиолетовый или малиновый</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">4   зеленый</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">5   голубой</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">6   желтый</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">7   белый</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Следует вспомнить,  что в &#8220;128К&#8221; имеется два  экрана.  В</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ПЗУ  нет  подпрограмм,  которые бы работали с новым экраном.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Структура его такая же как и старого,  адреса его расположе-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ния другой (#C000,  7 страница).  Для получения адреса можно</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">выше указанной схемой для регистра HL, с некоторым отличием.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Старший бит регистра Н быдет указывать номер экрана.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Для активизации  нового  экрана следует активизировать 7</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">страницу и установить бит 3 порта #7FFD  или  ячейки  #5B5C,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">после чего можно вернуть прежнюю страницу.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Для активизации  старого  экрана достаточно сбросить бит</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#7FFD. И напоследок главы совет: полезно изменять координаты</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">печать по X не с помощью команды INC L,  а с помощью: LD A,L</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ADD A,1 LD L,A</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Это конечно несет потерю в 4 байта,  но иммет  некоторые</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">плюсы,  связанные с флагами. Вообще, на пактике часто приме-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">няется следующий прием: в памяти граняниться таблица с адре-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">сами  всех  строк экрана и адрес можно выбирать как смещение</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">внутри таблицы.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">4.3 Управление дисплеем</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Управлять экраном дисплея, как и выполнять другие опера-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ции на компьютере, можно тремя способами:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- используя функции языка программирования</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- используя служебные функции DOS или ROM-BIOS</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">- управляя аппаратурой напрямую через память или порты</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Служебные функции  для  работы с изображениями доступные</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">через языки программирования,  автоматически помящяют данные</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">в видеопамять ROM-BIOS имеет множество очень мощьных функций</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">выполняющих почти все операции,  необходимые  для  генерации</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вывода на экран.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Выбирая прямой  вывод  на  экран мы должны отдавать себе</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">отсчет в том,  что при этом мы может мешать другим системам,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">например работающими с окнами.  Тем не менее, многие сущест-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вующие программы созданные для ZX-Spectruma,  генерируют не-</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">посредственный вывод информации на экран,  настолько многие,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">что это уже стало стандартным способом вызова. Все понимают,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">что это не хорошо, но все так и поступают.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Вообще прямой  вывод  следует  применять  только когда в</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">этом есть особая необходимость.</div>
<p>Глава 4. Основы видео</p>
<p>Для многих  людей дисплей и есть компьютер.  О программе</p>
<p>некоторые &#8220;гении&#8221; судят исключительно по качеству &#8220;картинки&#8221;</p>
<p>на экране.  В этой главе мы расскажем о том, как формируется</p>
<p>изображение и покажем как использовать это на практике.</p>
<p>4.1 Адаптеры дисплеев</p>
<p>Большинство пользователей компьютеров семейства Спектрум</p>
<p>сталкиваются с таким понятием, только когда читают журналы о</p>
<p>IBM PC. 99% имеющий стандартных Спектрум даже не подозревают</p>
<p>о существовании других экранов.  Всем им суждено работать со</p>
<p>стандартным экраном.</p>
<p>На текущий момент мне известны следущие типы адаптеров:</p>
<p>Стандартный  адаптер</p>
<p>(Standart Graphics Adapter SGA)</p>
<p>Улучшенный адаптер</p>
<p>(Enhanced Graphics Adapter EGA)</p>
<p>Моноадапер Профи</p>
<p>(Profi-mono Graphics Adapter PMGA)</p>
<p>Цветной адаптер Профи</p>
<p>(Profi-color Graphics Adapter PCGA)</p>
<p>Адаптер АТМ</p>
<p>(ATM-Turbo Graphisc Adapter AGA)</p>
<p>Все они отличаются своими характеристиками. Наилучшим из</p>
<p>них является EGA.  Все эти адаптеры являются графическими, в</p>
<p>них нет такого принципиального режима как текстовой (за иск-</p>
<p>лючением АEGA)</p>
<p>В последнее  время  появилась  информация о АТМ-ТУРБО 2,</p>
<p>где имеется улучшенный адаптер AEGA  (ATM-Turbo  2  Enhanced</p>
<p>Graphics Adapter). Он имеет характеристики как у EGA+AGA, но</p>
<p>кроме всего этого имеет текстовой режим.  К сожалению  я  не</p>
<p>имел общения с ним, поэтому утверждать точно не буду. Вот их</p>
<p>характеристики:</p>
<p>SGA</p>
<p>256*192 2 цвета из 8*2 для 8*8 точек.</p>
<p>EGA</p>
<p>640*350 16 цветов для каждой точки</p>
<p>PMGA</p>
<p>512*240 2 цвета на весь экран</p>
<p>PCGA</p>
<p>512*240 8 цветов+мерцание на 8 точек</p>
<p>512*240 16 цветов на 8 точек</p>
<p>AGA</p>
<p>640*200 8 цветов для каждой строки</p>
<p>320*200 16 цветов для каждой точки</p>
<p>Так как в настоящее время распростроннен SGA, поэтому мы</p>
<p>и будем рассмотривать только его.</p>
<p>4.2 Видеопамять SGA</p>
<p>Видеопамять, или,  точнее, оперативная память, использу-</p>
<p>ется для хранения изображения,  физически расположена вместе</p>
<p>с остальными компанентами на плате компьютера. Логически эта</p>
<p>память является частью  адресного  пространства  процессора.</p>
<p>Для  этого зарезервирована область памяти,  начиная с адреса</p>
<p>#4000.  Область логически разделена на  две  части:  область</p>
<p>черно-белого  изображения и область атрибутов &#8211; цветов.  Об-</p>
<p>ласть черно-белого изображения  и  область  атрибутов  очень</p>
<p>сложна,  поэтому  мы рассмотрим ее подробно.  Начинается об-</p>
<p>ласть с #4000 до #5AFF,  что дает 6144 байта. Спектрумовский</p>
<p>SGA  экран разделен на знакоместа (тексел от TEXt ELement) -</p>
<p>области в виде квадратиков 8 на 8 точек.  Для каждого знако-</p>
<p>места свои атрибуты. На экране 24 ряда по 32 символа в ряду:</p>
<p>всего 768 атрибутов. Каждые 8 точек храняться в одном байте,</p>
<p>т.е  на хранение изображения 1 знакоместа тратиться 8 байт +</p>
<p>1 байт знакоместа 768*8, что и дает 6144.</p>
<p>Вообще существует два способа изучить структуру экранной</p>
<p>области ZX Spectrum.  Один &#8211; рассмотреть как грузиться экран</p>
<p>с кассеты, другой это внимательно прочить данныю главу. Если</p>
<p>вы выбрали последнее крайне рекомендую набирать все  примеры</p>
<p>на клавиатуре, это будет способствовать большему запоминанию</p>
<p>материала.</p>
<p>Экран начинается с адреса  16384.  Попробуетм  закрасить</p>
<p>крайний левый верхний угол. Дадим ряд команд:</p>
<p>LD A,%11111111           LET A=255</p>
<p>LD (#4000),A             POKE 16384,A</p>
<p>LD A,%00001111           LET A=15</p>
<p>LD (#4000),A             POKE 16384,A</p>
<p>LD A,%10101010           LET A=170</p>
<p>LD (#4000),A             POKE 16384,A</p>
<p>После этого примера вы наверно  убедились,  что  биты  в</p>
<p>байте соответствуют пикселям на экране.</p>
<p>LD (#4001),A</p>
<p>LD (#4002),A</p>
<p>&#8230;..  и так далее</p>
<p>Вы будете изменять содержимое экрана,  двигаясь по гори-</p>
<p>зонтали или говоря точнее,  вы будете модифицировать нулевые</p>
<p>линии в нулевом знакоместе нулевого ряда.  Увеличивая  адрес</p>
<p>вы  перемещаетеся вправо по экрану,  ходясь в том же нулевой</p>
<p>линии.  Т.к.  столбцов 32 то попробуем пропустить 32 байта и</p>
<p>занести туда значение: LD (#4000+#20),A</p>
<p>Но в результате мы получили нечто  иное  чем,  следовало</p>
<p>ожидать. Изменилась нулевая линия в первом ряду. Чтобы изме-</p>
<p>нить первую линию в нулевом  знакоместе  следует  пропустить</p>
<p>256 байт.</p>
<p>Теперь вы  убедились  в сложности экрана.  Чтобы немного</p>
<p>отдохнуть можете позагружать  картинки,  пройти  72  комнату</p>
<p>EXOLON&#8217;а и выпить 2-3 кружечки кофю,  после чего можете про-</p>
<p>должить сие чтиво.</p>
<p>На первый взгляд такое расположение экранной области не-</p>
<p>лепо.  Но  на  практике  это облегчает работу (шутка) &#8211; надо</p>
<p>толкьо все понять.</p>
<p>Итак, вернемся к экрану.  Экрана также разбит на  трети.</p>
<p>Отсчет в каждой трети начинается заного.  Каждая треть начи-</p>
<p>нается с адресов:</p>
<p>#4000</p>
<p>#4800</p>
<p>#5000</p>
<p>В кодах адрес как правило храниться в  регистровой  паре</p>
<p>HL. Полный адрес можно представить в виде:</p>
<p>┌──────H──────┐ ┌──────L──────┐</p>
<p>┌┴┬─┬─┬─┬─┬─┬─┬┴┬┴┬─┬─┬─┬─┬─┬─┬┴┐</p>
<p>│0│1│0│ │ │ │ │ │ │ │ │ │ │ │ │ │</p>
<p>└─┴─┴─┴┬┴┬┴┬┴─┴┬┴┬┴─┴┬┴┬┴─┴─┴─┴┬┘</p>
<p>└┬┘ └─┬─┘ └─┬─┘ └───┬───┘</p>
<p>1    2     3       4</p>
<p>1  Номер трети</p>
<p>2  Смещение внутри знакоместа</p>
<p>3  Номер ряда</p>
<p>4  Номер столбца</p>
<p>Чтобы сместиться вправо дадим команду INC L. Чтобы пере-</p>
<p>меститься  по вертикали в одном знакоместе дадим команду INC</p>
<p>H.  Когда вы пройдете все знакоместо и выйдете  за  границу,</p>
<p>номер  столбца  обнулиться,  а  номер рада увеличиться.  Все</p>
<p>просто, пока дело не доходит до других третей.</p>
<p>На практике часто на экране графика используется  только</p>
<p>на одной трети. КОнечно она есть и на других третях, но чаще</p>
<p>статическая, не подвижная.</p>
<p>Большую теоретическую информацию вы найдете в любой  ли-</p>
<p>тературе по Спектруму, а нам пора перейти к атрубутам, пред-</p>
<p>варительно пройдя уровень ZYNAPS&#8217;а</p>
<p>Атрибуты каждого  знакоместа  занимают  1  байт,  причем</p>
<p>структура их очень проста. Байты распологаются слева направо</p>
<p>и сверху вниз. Адрес можно вычислить как 22588+32*Y+X.</p>
<p>На ассемблере это деляется следующим образом:</p>
<p>LD D,X</p>
<p>LD E,Y</p>
<p>LD H,0</p>
<p>LD L,Y</p>
<p>ADD HL,HL</p>
<p>ADD HL,HL</p>
<p>ADD HL,HL</p>
<p>ADD HL,HL</p>
<p>ADD HL,HL</p>
<p>LD A,E</p>
<p>ADD A,L</p>
<p>LD L,A</p>
<p>JR NC,$+3</p>
<p>LD DE,#5800</p>
<p>ADD HL,DE</p>
<p>В результате чего мы получими в регистре HL адрес  байта</p>
<p>в памяти.  У нас еще остался бордур.  На него конечно нельзя</p>
<p>выводить графику,  но можно менять цвет. Для этого код цвета</p>
<p>нужно выдать в порт #00FE.</p>
<p>Цвета кодируются следующим образом:</p>
<p>0   черный</p>
<p>1   синий</p>
<p>2   красный</p>
<p>3   фиолетовый или малиновый</p>
<p>4   зеленый</p>
<p>5   голубой</p>
<p>6   желтый</p>
<p>7   белый</p>
<p>Следует вспомнить,  что в &#8220;128К&#8221; имеется два  экрана.  В</p>
<p>ПЗУ  нет  подпрограмм,  которые бы работали с новым экраном.</p>
<p>Структура его такая же как и старого,  адреса его расположе-</p>
<p>ния другой (#C000,  7 страница).  Для получения адреса можно</p>
<p>выше указанной схемой для регистра HL, с некоторым отличием.</p>
<p>Старший бит регистра Н быдет указывать номер экрана.</p>
<p>Для активизации  нового  экрана следует активизировать 7</p>
<p>страницу и установить бит 3 порта #7FFD  или  ячейки  #5B5C,</p>
<p>после чего можно вернуть прежнюю страницу.</p>
<p>Для активизации  старого  экрана достаточно сбросить бит</p>
<p>#7FFD. И напоследок главы совет: полезно изменять координаты</p>
<p>печать по X не с помощью команды INC L,  а с помощью: LD A,L</p>
<p>ADD A,1 LD L,A</p>
<p>Это конечно несет потерю в 4 байта,  но иммет  некоторые</p>
<p>плюсы,  связанные с флагами. Вообще, на пактике часто приме-</p>
<p>няется следующий прием: в памяти граняниться таблица с адре-</p>
<p>сами  всех  строк экрана и адрес можно выбирать как смещение</p>
<p>внутри таблицы.</p>
<p>4.3 Управление дисплеем</p>
<p>Управлять экраном дисплея, как и выполнять другие опера-</p>
<p>ции на компьютере, можно тремя способами:</p>
<p>- используя функции языка программирования</p>
<p>- используя служебные функции DOS или ROM-BIOS</p>
<p>- управляя аппаратурой напрямую через память или порты</p>
<p>Служебные функции  для  работы с изображениями доступные</p>
<p>через языки программирования,  автоматически помящяют данные</p>
<p>в видеопамять ROM-BIOS имеет множество очень мощьных функций</p>
<p>выполняющих почти все операции,  необходимые  для  генерации</p>
<p>вывода на экран.</p>
<p>Выбирая прямой  вывод  на  экран мы должны отдавать себе</p>
<p>отсчет в том,  что при этом мы может мешать другим системам,</p>
<p>например работающими с окнами.  Тем не менее, многие сущест-</p>
<p>вующие программы созданные для ZX-Spectruma,  генерируют не-</p>
<p>посредственный вывод информации на экран,  настолько многие,</p>
<p>что это уже стало стандартным способом вызова. Все понимают,</p>
<p>что это не хорошо, но все так и поступают.</p>
<p>Вообще прямой  вывод  следует  применять  только когда в</p>
<p>этом есть особая необходимость.</p>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.volkov.ru/oldstuff/zx-spectrum4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Руководство к ZX-Spectrum. Глава 3.2</title>
		<link>http://www.volkov.ru/oldstuff/zx-spectrum32/</link>
		<comments>http://www.volkov.ru/oldstuff/zx-spectrum32/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 09:17:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Страницы истории]]></category>

		<guid isPermaLink="false">http://www.volkov.ru/?p=1607</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.volkov.ru/oldstuff/zx-spectrum32/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Руководство к ZX-Spectrum. Глава 3.1</title>
		<link>http://www.volkov.ru/oldstuff/zx-spectrum31/</link>
		<comments>http://www.volkov.ru/oldstuff/zx-spectrum31/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 09:12:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Страницы истории]]></category>

		<guid isPermaLink="false">http://www.volkov.ru/?p=1604</guid>
		<description><![CDATA[Глава 3
Программы в ПЗУ.
Для    работы    компьютеру    необходимо    программное
обеспечение.  Некоторую часть  программного  обеспечения  по
многим  причинам выгодно  раз и  навсегда  встроить  в  ПЗУ.
Программы, записанные в  микросхемы ПЗУ  доступны процессору
немедленно, после  включения  питания,  их  нельзя  изменить
стерять или потерять.
Машины  семейства Спектрум  имеют довольно большой объем
ПЗУ  с программами  и данными,  необходимыми для  запуска  и
обслуживания периферийных устройств. Поскольку эти программы
судят  в [...]]]></description>
			<content:encoded><![CDATA[<p>Глава 3</p>
<p>Программы в ПЗУ.</p>
<p>Для    работы    компьютеру    необходимо    программное</p>
<p>обеспечение.  Некоторую часть  программного  обеспечения  по</p>
<p>многим  причинам выгодно  раз и  навсегда  встроить  в  ПЗУ.</p>
<p>Программы, записанные в  микросхемы ПЗУ  доступны процессору</p>
<p>немедленно, после  включения  питания,  их  нельзя  изменить</p>
<p>стерять или потерять.</p>
<p>Машины  семейства Спектрум  имеют довольно большой объем</p>
<p>ПЗУ  с программами  и данными,  необходимыми для  запуска  и</p>
<p>обслуживания периферийных устройств. Поскольку эти программы</p>
<p>судят  в ПЗУ  всегда, их  не надо  загружать  с  диска,  как</p>
<p>например драйверы нестандартных принтеров.</p>
<p>По  назначению, программы  в ПЗУ  делятся на:  программы</p>
<p>запуска  машины, базовую  систему  ввода-вывода  (ROM-BIOS),</p>
<p>интерпретаторы  языка бейсик и расширения ПЗУ, добавляемые в</p>
<p>случае установки дополнительных переферийных устройств.</p>
<p>В  адресном пространстве Спектрума для ПЗУ отведен самый</p>
<p>нижний  блок в  16К, начинающийся  с адреса  #0000. Не  всем</p>
<p>моделям хватает этого размера. (Первый Spectrum-16K имел 16К</p>
<p>ПЗУ, а гораздо более мощный PROFI имеет 68К ПЗУ)</p>
<p>3.1 Программы запуска машины.</p>
<p>Такие  программы выполняются  всякий раз  при  включении</p>
<p>компьютера или нажатии на кнопку сброса. Хотя программист не</p>
<p>использует их, знать что они делают поучительно.</p>
<p>Работа  программы состоит  из нескольких  фаз:  проверка</p>
<p>работоспособности компьютера, инициализация памяти, проверка</p>
<p>на дополнительное оборудование.</p>
<p>Проверка  работоспособности или POST (Power On Self-Test</p>
<p>;  питание включено  &#8211; самопроверка) важный шаг в подготовке</p>
<p>компьютера   к  работе.   Программы,  проверяющие  отдельные</p>
<p>устройства, невелики и выполняются незаметно.</p>
<p>Программы  иницализации компьютера  существенно сложней.</p>
<p>Сначала   отрабатывается  программа   установки  стандартных</p>
<p>значений  системных переменных.  Затем запускается программа</p>
<p>инициализации  переферийных устройств. После этого вы можете</p>
<p>увидеть фирменную заставку.</p>
<p>Если   в   системе   имеется   подключенный   контроллер</p>
<p>дисковода,  то управление  передается дисковой  операционной</p>
<p>системе (для того чтобы это быле действительно автоматически</p>
<p>необходимо   установить  на  контролеере  перемычку  ).  DOS</p>
<p>пытается  найти диске  файл с  названием boot  (TR-DOS)  или</p>
<p>config.sys   (SP-DOS)  и  если  это  удается,  передает  ему</p>
<p>управление.  TR-DOS делает  автостарт только  в версии 5.1 и</p>
<p>выше.</p>
<p>3.2 ROM-BIOS</p>
<p>ROM-BIOS  ялвется основной  часть ПЗУ,  которая  активно</p>
<p>используется  в  течении  всего  времени  работы  компьтера.</p>
<p>Назначени   ROM-BIOS  обеспечивает  все  основные  служебные</p>
<p>функции,  необдимые для  работы компьютера.  Большей  частью</p>
<p>BIOS   управляет  переферийными   устройствами,  такими  как</p>
<p>магнитофон,   дисковод,  принтер,  клавиатура,  динамик  или</p>
<p>экран.</p>
<p>Концептуально   программы  BIOS   лежат   между   нашими</p>
<p>программами  и аппаратурой. В действительности это означает,</p>
<p>что   BIOS  работает   в  двух   направлениях  в   некотором</p>
<p>двухстороннем  процессе. Одна  сторона получает от программы</p>
<p>запросы  на выполнение  служебных функций  BIOS, связанных с</p>
<p>вводом-выводом. Эти функции вызываются нашими программами.</p>
<p>Так  как служебные  функции будут  рассмтриваться  позже</p>
<p>намного  подробнее, мы не будем здесь рассматривать, что они</p>
<p>делают, а перейдем к следующему вопросу.</p>
<p>3.3 Память под управлением операционной системы.</p>
<p>48К    Символы псевдографики</p>
<p>Стек операционной системы (процессора)</p>
<p>Стек калькулятора</p>
<p>Рабочая область операционной системы</p>
<p>&lt;байт разделитель #80&gt;</p>
<p>буфер строчного редактора интерпретатора Бейсик</p>
<p>(Каждая строка оканчивается байтом #0D &#8211; перевод</p>
<p>строки)</p>
<p>Байт разделитель #80</p>
<p>Имена и значения переменных бейсик-программы</p>
<p>Текст бейсик-программы</p>
<p>Байт разделитель #80</p>
<p>Область размещения информации о каналах</p>
<p>Системные переменные TR-DOS</p>
<p>Системные переменные INTERFACE 1</p>
<p>#5C00  Системные переменные операционной системе</p>
<p>#5B00  Буфер принтера или сист. перем. 128К</p>
<p>#5800  Область атрибутов экрана</p>
<p>#4000  Область экрана</p>
<p>#0000  16К ПЗУ</p>
<p>Числа  обозначают начала  этих областей. Для большинства</p>
<p>указаны  не адреса,  а именно системные переменных в которых</p>
<p>содержиться соответствующие значения.</p>
<p>Если  вам не  интересно столь  подробная информация,  вы</p>
<p>можете обратиться к следующей:</p>
<p>Область зарезервированная пользователем</p>
<p>Область бейсик интерпретатора и системы</p>
<p>Информация о каналах</p>
<p>Системные переменные</p>
<p>Буфер принтера</p>
<p>Область атрибутов экрана</p>
<p>Область экрана</p>
<p>ПЗУ</p>
<p>128К.  Основная память в 128К такая же как и в 48К, но в</p>
<p>буфере принтера находяться специальные системные переменные.</p>
<p>Страницы в основной памяти следующие:</p>
<p>0</p>
<p>2</p>
<p>5</p>
<p>ПЗУ</p>
<p>Страницы   1,3,4,6,7  отданы   под   RAM-диск.   Каталог</p>
<p>RAM-диска  находиться в  седьмой странице, там же находиться</p>
<p>дополнительный экран, но этот экран не поддерживается ПЗУ.</p>
<p>PROFI.   Страницы  от   #08  до   #3F.  Их   наличие  не</p>
<p>обязательно,  но если они есть, то используются как RAM-диск</p>
<p>(как правило).</p>
<p>7 страница     Здесь находиться операционная система</p>
<p>6 страница     Дополнительный экран 512*240 точек</p>
<p>5 страница     Цветной экран и модули управления аппаратурой</p>
<p>3 и 4 стрн.    Резерв</p>
<p>2,1,0          Область транзитных программ</p>
<p>(#8000-#BFFF,#4000-#7FFF,#0000-#3FFF)</p>
<p>3.4 Системные переменные</p>
<p>Большинство   подпрограмм  BIOS  управляется  с  помощью</p>
<p>данных,  хранимых в  области называемой  областью  системных</p>
<p>переменных.     Данные    этой    области    устанавливаются</p>
<p>подпрограммами   ПЗУ  во   время  начального  запуска.  Хотя</p>
<p>предпологается,   что  эти   управляющие   данные   являются</p>
<p>собственнстью   BIOS,  наши   программы  могут  их  читать,а</p>
<p>некоторые даже изменять. Даже если вы не будете использовать</p>
<p>функции  BIOS, Вам  все равно  не  помешает  ознакомиться  с</p>
<p>системными переменными.</p>
<p>Для всех ячеек мы указываем:  имя, объем, адрес шестнд.,</p>
<p>флажок (десят. адрес, смещение)</p>
<p>Флажок следует интепритировать следующим образом:</p>
<p>X &#8211; переменная содержит данные, которые не рекомендуется</p>
<p>менять во избежание неприятностей</p>
<p>N  -  переменная  интенсивно  используется  операционной</p>
<p>системой,   изменение  ее   значение  не  приведет  к  очень</p>
<p>недолговременному эффекту.</p>
<p>R &#8211; точка входа в процедуру BIOS, не переменная</p>
<p>Имена  переменных чисто  условная  вещь,  вы  не  можете</p>
<p>обращаться  к переменным  по именам  (хотя при  желании  все</p>
<p>возможно),  но названия  переменных стали уже стандартными и</p>
<p>вы можете найти их в любой литературе по ZX-Spectrum.</p>
<p>3.4.1 Стандартные переменные 48К.</p>
<p>Эти  переменные начинаются с адреса #5C00 и занимают 182</p>
<p>байта  и присутствуют  во всех  моделях.  На  середину  этой</p>
<p>области   указывает  IY=#5C3A,   вы  можете  адресоваться  к</p>
<p>переменным  через регистр IY, но не можете изменять его, это</p>
<p>может привести к сбою в работе системы.</p>
<p>KSTATE, #5C00..#5C07, два блока по 4 байта, N</p>
<p>23552..23559</p>
<p>Эти восемь байт используются программами для обслуживания</p>
<p>клавиатуры, но внешними программами не используются.</p>
<p>Назначение байтов KSTATE:</p>
<p>#5C00 (IY-58)  Значение 255, если блок свободен, либо код</p>
<p>#5C04 (IY-54)  нажатой клавиши ( в верхнем регистре).</p>
<p>#5C01 (IY-57)  Счетчик для устранения дребезга.</p>
<p>#5C05 (IY-53)</p>
<p>#5C02 (IY-56)  Счетчик, определяющий задержку автоповтора</p>
<p>#5C06 (IY-52)  действия клавиши.</p>
<p>#5C03 (IY-55)  Код нажатой клавиши</p>
<p>#5C07 (IY-51)</p>
<p>LAST_K, 1 байт, #5C08, N, 23560, IY-50</p>
<p>Код  последней нажатой  клавиши с  учетом регистров.  Он</p>
<p>хранится здесь, пока не будет нажата другая клавиша</p>
<p>REPDEL, 1 байт, #5C09, , 23561, IY-49</p>
<p>Величина задержки между нажатием клавиши и автоповтором.</p>
<p>Нормальное значение 35 (#23).</p>
<p>REPPER, 1 байт, #5C0A,, 23562, IY-48</p>
<p>Скорость  автоповтора при длительном нажатии на клавишу.</p>
<p>Нормальное значение 5.</p>
<p>DEFADD, слово, #5C0B, N, 23563, IY-47</p>
<p>Адрес   первого   параметра   функции,  предопределенной</p>
<p>пользователем,  если используется,  в  противном  случае  0.</p>
<p>Например:</p>
<p>DEF FN A(B)=&#8230;</p>
<p>В памяти храниться DEF FN A (B, #0E&#8230;.)</p>
<p>^DEFADD</p>
<p>K_DATA, 1 байт, #5C0D, N, 23565, IY-45</p>
<p>Код  цвета, заданный  цифровой клавишей в режиме курсора</p>
<p>E. Хранится в этом байте до задания следующего кода.</p>
<p>TV_DATA1, 1 байт, #5C0E, N, 23566, IY-44</p>
<p>Последний код управления печатью в режиме курсора Е.</p>
<p>TV_DATA2, 1 байт, #5C0F, N, 23567, IY-43</p>
<p>Первый   параметр  переданный   через  AT  или  TAB.  Не</p>
<p>изменяется до следующего управления.</p>
<p>STRMS, 38 байт, #5C10..#5C35, X, 23568..23605, IY-42</p>
<p>Область хранения информации о потоках. Первые две ячейки</p>
<p>указывают  на канал  потока -3,  следующие на -2 и так до 15</p>
<p>потока.  В этих  ячейках храняться  увеличенные на  единицу,</p>
<p>смещения  описателей канала относительно адреса указанного в</p>
<p>переменной CHANS. Если поток закрыт оба байта равны 0.</p>
<p>Следует  учесть,  что  в  мониторе  90  года  по  адресу</p>
<p>#5C34/5C35     (23604/23605)    храниться    код    скорости</p>
<p>записи/чтения.  При одинарной  плотности 00/00,  при двойной</p>
<p>плотности  #82/#75, хотя  достаточно занести  в ячейку #5C35</p>
<p>любое   значение,  отличное   от   нуля,   чтобы   программа</p>
<p>записывалась на двойной скорости.</p>
<p>В  ячейку #5C10  (23568) необходимо  занести значение 8,</p>
<p>чтобы  программа  работала  нормально,  но  ее  нельзя  было</p>
<p>редактировать  и происходил автоматический сброс при нажатии</p>
<p>на кнопку сброса. (Напомню, что это о мониторе 1990 года)</p>
<p>CHARS, слово, #5C36, N, 23606, IY-4</p>
<p>Адрес    расположения    шрифта,    на    256    больший</p>
<p>действительного  адреса. Это  связано с  тем, что  первые 32</p>
<p>символа   являются  непечатными   и  в   таблицу  не  входят</p>
<p>(32*8=256). Нормальное значение #3C00</p>
<p>RASP, байт, #5C38,, 23608, IY-2</p>
<p>Длина   звука  предупреждающего   о  ошибке   редактора.</p>
<p>Нормальное значение 0.</p>
<p>PIP, байт, #5C39,, 23609, IY-1</p>
<p>Длительность  звука при  нажатии  на  клавишу  в  режиме</p>
<p>редактирования.   Нормальное  значение   63,  однако   можно</p>
<p>обнулить его во избежание мелодичных звуков из динамика.</p>
<p>ERR_NR, байт, #5C3A, ,23610,IY+0</p>
<p>Число  на единицу меньше кода сообщения, выдаваемого при</p>
<p>ошибке,  включая сообщение  о нормальном  завершении  работы</p>
<p>программы ОК. Нормальное значение #FF.</p>
<p>FLAGS, байт, #5C3B, X, 23611, IY+1</p>
<p>Флаговый байт. Назначение отдельных битов:</p>
<p>бит   0  =1,   если  не   нужно   выводить   пробел   перед</p>
<p>бейсик-оператором.</p>
<p>бит 1  =1, если при выводе на принтер, точнее в 3 поток.</p>
<p>бит 2  =1, при вводе в режиме L-курсора, иначе К-курсор</p>
<p>бит  3 =1,  при ожидании  ввода ввода  символа в  курсоре L,</p>
<p>иначе ожидается К-курсор</p>
<p>бит 4, (используется только в 128К), =1 при новом ПЗУ, иначе</p>
<p>0.</p>
<p>бит 5, =1 если нажата клавиша</p>
<p>бит 6, =1, если обрабатывается число, иначе строка</p>
<p>бит 7, =1, если редактирование, иначе выполнение программы.</p>
<p>TV_FLAG, байт, #5C3C, X, 23612, IY+2</p>
<p>Флаговый байт. Биты управляют выводом на экран:</p>
<p>бит 0, =1, при выводе в две нижние строки</p>
<p>бит 3, =1, при необдимости проверки</p>
<p>бит 4, =1, при выводе листинга программы</p>
<p>бит 5, =1, при необходимости очистки нижних строк</p>
<p>ERR_SP, слово, #5C3D, X, 23613, IY+5</p>
<p>Адрес,  на  который  устанавливается  стек  при  запуске</p>
<p>программы  обработки ошибок.  Изменив  значение  переменной,</p>
<p>можно подключить собственные процедуры обработки ошибки.</p>
<p>Пример.    оператор   CLEAR   устанавливает   нормальное</p>
<p>значение,  поэтому переменную  следует изменять позже подачи</p>
<p>оператора.</p>
<p>LIST_SP,слово, #5C3F, N, 23615, IY+5</p>
<p>Сохраняет адрес вершины стека, пока выводиться листинг.</p>
<p>MODE, байт, #5C41, N, 23617, IY+7</p>
<p>Число определяюще курсор:</p>
<p>0 курсор К,L,C</p>
<p>1 курсор Е</p>
<p>2 курсор G</p>
<p>Если  занести значение большее, чем 2, то измениться вид</p>
<p>курсора, но все-таки будет работать как G</p>
<p>NEWPPC, слово, #5C42, , 23618, IY+8</p>
<p>Номер  строки  бейсик-программы,  в  которой  расположен</p>
<p>следующий оператор. Изменяя эту и следующую переменную можно</p>
<p>организовать  переход к  любой строке  и к  любому оператору</p>
<p>программы.</p>
<p>NSPPC, байт, #5C44,, 23620, IY+10</p>
<p>Номер  следующего выполняемого оператора в строке бейсик</p>
<p>программы. См также NEWPPC</p>
<p>PPC, слово, #5C45,, 23621, IY+11</p>
<p>Номер текущей, выполняемой строки бейсик программы. Если</p>
<p>выполняется     строка    без    номера    (непосредственная</p>
<p>интерпретация), то переменная содержит #FFFE</p>
<p>SUBPPC, байт, #5C47, , 23623, IY+13</p>
<p>Номер текущего оператора в строке программы</p>
<p>BORDCR, байт, #5C48, , 23624, IY+14</p>
<p>Атрибуты нижних строк и бордера. Нормально 56</p>
<p>E_PPC, слово, #5C49, , 23625, IY+15</p>
<p>Номер бейсик-программы, в которой находится курсор</p>
<p>VARS, слово, #5C4B, X, 23627, IY+17</p>
<p>Адрес начала области переменных бейсик программы</p>
<p>DEST, слово, #5C4D, N, 23629, IY+19</p>
<p>Адрес  первого символа  имени  обрабатываемой  в  данный</p>
<p>момент переменной.</p>
<p>CHANS, слово, #5C4F, X, 23631, IY+21</p>
<p>Адрес  начала области информации о каналах. По умолчанию</p>
<p>#5CB6</p>
<p>CURCHL, слово, #5C51, X, 23633, IY+23</p>
<p>Адрес первого описателя текущего канала.</p>
<p>PROG, слово, #5C53, X, 23635, IY+25</p>
<p>Адрес начала бейсик программы</p>
<p>NXTLIN, слово, #5C55, X, 23637, IY+27</p>
<p>Адрес начала следующей строки бейсик-программы</p>
<p>DATADD, слово, #5C57, X, 23639, IY+29</p>
<p>Адрес  последнего считанного  оператором READ объекта из</p>
<p>бейсик-программы.</p>
<p>E_LINE, слово, #5C59, X, 23641, IY+31</p>
<p>Адрес начала редактируемой строки</p>
<p>K_CUR, слово, #5C5B, , 23643, IY+33</p>
<p>Адрес   символа   редактируемой   строки,   на   которую</p>
<p>установлен курсор.</p>
<p>CH_ADD, слово, #5C5D, X, 23645, IY+35</p>
<p>Адрес      следующего     интерпретируемого      символа</p>
<p>бейсик-программы.</p>
<p>X_PTR, слово, #5C5F, X, 23647, IY+37</p>
<p>Адрес символа бейсик-строки, вслед за которым установлен</p>
<p>знак ? при обнаружении синктаксической ошибки.</p>
<p>WORK_SP, слово, #5C63, X, 23651, IY+41</p>
<p>Адрес начала рабочей области бейсик-программы</p>
<p>STKBOT, слово, #5C65, X, 23653, IY+43</p>
<p>Адрес начала стека калькулятора</p>
<p>STKEND, слово, #5C65, X, 23653, IY+43</p>
<p>Адрес вершины стека калькулятора.</p>
<p>BREG, байт, #5C67, N, 23655, IY+45</p>
<p>Регистр В калькулятора</p>
<p>MEM, слово, #5C68, N, 23656, IY+46</p>
<p>Адрес области памяти, используемой калькулятором.</p>
<p>FLAGS2, байт, #5C6A, X, 23658, IY+48</p>
<p>Флаговый бит, назначение битов следующие:</p>
<p>бит 0 =1, при необходимоти очистить основной экран</p>
<p>бит 1 =1, если буфер принтера уже использовался</p>
<p>бит 2 =1, если основной экран уже очищен</p>
<p>бит 3 =1, если включен С курсор</p>
<p>бит 4 =1, установлен при использовании К-курсора</p>
<p>биты 5,6,7 используются только в мониторе 90 года:</p>
<p>бит  5 =1, при необходимости выводить расширенную информацию</p>
<p>о заголовке при считывании с кассеты.</p>
<p>бит 6 =1, при выводе в монитере-отладчике символьных данных</p>
<p>бит   7  =1,   при  выводе   в  шестнадцатиричном   виде  (в</p>
<p>мониторе-отлдчике).</p>
<p>DF_SZ, байт, #5C6B, X, 23659, IY+49</p>
<p>Количество строк в нижнем (служебном) экране. Нормальное</p>
<p>значение  2. Занеся  туда число 0, вы устроите некое подобие</p>
<p>защиты.</p>
<p>S_TOP, слово, #5C6C, , 23660, IY+50</p>
<p>Номер   строки  бейсик-программы,   начиная  с   которой</p>
<p>выводиться автоматический листинг.</p>
<p>OLDPPC, слово, #5C6E,, 23662, IY+52</p>
<p>Номер  строки  программы,  с  которой  будет  продолжено</p>
<p>выполнение по вводу оператора CONTINUE.</p>
<p>OSPPPP, байт, #5C70, , 23664, IY+54</p>
<p>Номер  оператора в  строке, который  будет  выполнен  по</p>
<p>вводу оператора CONTINUE.</p>
<p>FLAGX, байт, #5C71, N, 23665, IY+55</p>
<p>Флаги оператора INPUT:</p>
<p>бит 1 =1, если вводиться новая переменная.</p>
<p>бит 5 =1, если работает INPUT, иначе редактирование</p>
<p>бит 6 =1, при обработке строки введенной через INPUT</p>
<p>бит 7 =1, если выполняется INPUT LINE</p>
<p>STRLEN, слово, #5C72, N, 23666, IY+56</p>
<p>Длина   обрабатываемой  символьной   переменной,   ранее</p>
<p>определенной или идентефикатор новой в младшем байте.</p>
<p>T_ADDR, слово, #5C74, N, 23668, IY+58</p>
<p>Адрес   следующего  элемента   в   таблице   синтаксиса,</p>
<p>расположенной  в  ПЗУ,  точнее  говоря,  в  таблице  классов</p>
<p>операторов.</p>
<p>SEED, слово, #5C76, , 23670, IY+60</p>
<p>Значение  используемое для  вычисления  псевдослучайного</p>
<p>числа.</p>
<p>FRAMES, три байта, #5C78..#5C7A, N, 23672..23674, IY+62</p>
<p>Системный таймер. Увеличивается каждые 1/50  секунды  на</p>
<p>единицу.</p>
<p>UDG, слово, #5C7B, , 23675, IY+65</p>
<p>Адрес   начала  области,  используемой  для   размещения</p>
<p>определяемых пользователем символов.</p>
<p>COORDS, два байта, #5C7D и #5C7E, , 23677, IY+67</p>
<p>Координаты X и Y последней изображенной точки.</p>
<p>P_POSN, байт, #5C7F, ,23679, IY+69</p>
<p>Позиция  следующей печати  на принтере. Определяется как</p>
<p>33-n (#21-n)</p>
<p>PR_CC, слово, #5CB0, X, 23680, IY+70</p>
<p>Адрес памяти, используемой как буфер принтера</p>
<p>ECHO_E, 2 байта, #5C82, , 23692, IY+72</p>
<p>Позиция  печати (строка  и колонка)  следующего  символа</p>
<p>бейсик-строки.</p>
<p>DF_CC, слово, #5C84, , 23684, IY+74</p>
<p>Адрес   байта,  соответствующий   верхней  линии   точек</p>
<p>знакоместа, в которое был осуществлен последний вывод.</p>
<p>DF_CCL, слово, #5C86, , 23696, IY+76</p>
<p>Тоже, что и DF_CC, но для командых строк.</p>
<p>S_POSN, 2 байта, #5C88, , 23688, IY+78</p>
<p>Координаты  позиции вывода  на экран. Представляются как</p>
<p>дополнение до 24 строки и 33 столбца.</p>
<p>S_POSNL, 2 байта, #5C8A, , 23690, IY+80</p>
<p>Координаты печати для командой строки.</p>
<p>SCR_CT, байт, #5C8C, 23692, IY+82</p>
<p>Число, на единицу большее числа строк для скроллинга.</p>
<p>ATTR_P, байт, #5C8D, , 23693, IY+83</p>
<p>Постоянные атрибуты экрана.</p>
<p>MASK_P, байт, #5C8E, , 23694, IY+84</p>
<p>Маска  для  разделения  постоянных  и  уже  существующих</p>
<p>атрибутов при выводе на экран. Если в MASK_P бит установлен,</p>
<p>то  соответствующий бит  атрибута при  выводе  на  экран  не</p>
<p>изменяется.</p>
<p>ATTR_T, байт, #5C8F, N, 23695, IY+85</p>
<p>Временные переменные, используемые при выводе на экран.</p>
<p>MASK_T, байт, #5C90, , 23696, IY+86</p>
<p>Маска   для  разделения   временных  атрибутов   и   уже</p>
<p>выведенных на экран. См MASK_P</p>
<p>P_FLAG, байт, #5C91, , 23697, IY+87</p>
<p>Управляющие   биты  вывода  на  экран.  Четные  атрибуты</p>
<p>используются   для  постояных   параметров,   нечетные   для</p>
<p>временных.</p>
<p>0/1 бит = при OVER 1</p>
<p>2/3 бит = при INVERSE 1</p>
<p>4/5 бит = при INK 9</p>
<p>6/7 бит = при PAPER 9</p>
<p>MEMBOT, 30 байт, #5C92..5CAF, N, 23698</p>
<p>Область  значений калькулятора, которые неудобно хранить</p>
<p>на стеке калькулятора.</p>
<p>NMIADD, 2 байта, #5CB0, ,23728, IY+118</p>
<p>Из-за  ошибки в ПЗУ не используется, хотя должна хранить</p>
<p>адрес процедуры обработки немаскируемых прерываний.</p>
<p>RAMTOP, слово, #5CB2, X, 23730, IY+120</p>
<p>Адрес последнего байта системной области ОЗУ.</p>
<p>P_RAMT, слово, #5CB4, , 23732, IY+122</p>
<p>Адрес  последнего байта рабочего ОЗУ. В компьютере с ОЗУ</p>
<p>48К  должно содержать  65535 #FFFF,  компьютеры  128К  также</p>
<p>имеют здесь значение #FFFF</p>
<p>3.4.2 Системные переменные монитора 1990 года</p>
<p>Монитор 1990 года имеет несколько новых режимов, а также</p>
<p>встроенных  монитор-DUMPER, который  тоже имеет свои режимы.</p>
<p>Для хранения этих режимов монитор также использует системные</p>
<p>переменные.  Хоть эти  переменные были  описаны и предыдущей</p>
<p>подглаве, мы все же выделим их отдельно.</p>
<p>#5C34 &#8211; хранит в себе 0 при записи на одинарной плотности и</p>
<p>#5С35 &#8211; 82 и 75 при записи на двойной частоте.</p>
<p>#5C10 &#8211; должно содержать 8, если вы желаете, чтобы произошел</p>
<p>полный сброс при подачи сигнала RESET</p>
<p>#5CAA &#8211; хранит текущий адрес монитора-DUMPERа</p>
<p>#5САС &#8211; адрес, по которому храниться текущий регистр.</p>
<p>#5С6А &#8211; в трех стрших битах хранит режимы</p>
<p>бит 5=1 при выводе расширенной информации о файле</p>
<p>(при считывания с кассеты)</p>
<p>бит 6=1 при выводе в мониторе в числовом виде</p>
<p>бит 7=1 при выводе в мониторе в 16-тиричном виде.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.volkov.ru/oldstuff/zx-spectrum31/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Руководство к ZX-Spectrum. Глава 2</title>
		<link>http://www.volkov.ru/oldstuff/%d0%a0%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%ba-zx-spectrum-%d0%93%d0%bb%d0%b0%d0%b2%d0%b0-2/</link>
		<comments>http://www.volkov.ru/oldstuff/%d0%a0%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%ba-zx-spectrum-%d0%93%d0%bb%d0%b0%d0%b2%d0%b0-2/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 09:00:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Страницы истории]]></category>

		<guid isPermaLink="false">http://www.volkov.ru/?p=1601</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.volkov.ru/oldstuff/%d0%a0%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be-%d0%ba-zx-spectrum-%d0%93%d0%bb%d0%b0%d0%b2%d0%b0-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Руководство к ZX-Spectrum. Глава 1</title>
		<link>http://www.volkov.ru/oldstuff/zx-spectrum1/</link>
		<comments>http://www.volkov.ru/oldstuff/zx-spectrum1/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 08:39:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Страницы истории]]></category>

		<guid isPermaLink="false">http://www.volkov.ru/?p=1599</guid>
		<description><![CDATA[
Глава 1

Анатомия персонального компьютера.

С  точки зрения  програмиста  все  компьютеры состоят из

процессора, микросхем памяти и нескольких "умных" микросхем.

Основные   схемные  компоненты   компьютера  расположены  на

системной  плате,  расширения же и дополнительные компоненты

вставляются  в  разъемы  системной  платы.  Для  подключения

нескольких   [...]]]></description>
			<content:encoded><![CDATA[<pre>
Глава 1

Анатомия персонального компьютера.

С  точки зрения  програмиста  все  компьютеры состоят из

процессора, микросхем памяти и нескольких "умных" микросхем.

Основные   схемные  компоненты   компьютера  расположены  на

системной  плате,  расширения же и дополнительные компоненты

вставляются  в  разъемы  системной  платы.  Для  подключения

нескольких   устройств  пользователи  фирменных  компьютеров

использовали  такое  чудо  как  INTERFACE  1.  Нам  же  всем

приходиться  пользоваться  такими  вещами  как  слоты:  один

разъем входит, три выходят.

Системная  плата содержит  микропроцессор  Z80,  который

управляет  всей работой,  подключенные  к  нему  оперативное

запоминающее   устройство  (ОЗУ),   постоянное  запоминающее

устройство  (ПЗУ) и вспомогательные микросхемы. Некоторые из

этих    вспомогательных   микросхем    управляют    внешними

устройствами,  например  дисководом  или  принтером,  другие

обеспечивают работу самого микропроцессора.

В  этой главе  мы рассмотрим  роль основных  микросхем и

опишем  их основные  возможности. Следует  отметить,  что  в

разных компьютерах могут быть установлены различные варианты

одной   и  той   же  микросхемы.  Например,  микросхема  для

генерации  многоголосой музыки обозначается AY8910,  3AY8912

или  YM2149M. Мы будем считать их одинаковыми, а их названия

синонимами.

1.0 Байты и биты

Минимальной  единицей информации  понимаемой компьютером

является  бит. Бит может принимать только 2 значения включен

или  выключен, быть  или не  быть (бит  или не бит, если так

можно  сказать).  На  практике  состояние  включенного  бита

обозначается  1 и называется логическая единица. Выключенный

бит  по аналогии  называется логическим нулем и обозначается

0.  8 бит  составляют 1  байт. Байт  является самой основной

единицей  информации.  Почти  вся  информация  измеряется  в

байтах. Один символ кодируется компьютером одним байтом и вы

на  основе этого  можете приравнять байт и символ. Например,

текст этой главы составлен из 13905 байта.

1.1 Микропроцессор Z80

Это 8-разрядный микропроцессор,  разработанный компанией

ZILOG(R)  и  управляющий  работой  стандартных  персональных

компьютеров фирмы Sinclair Research LTD.  Это  мозг  машины,

который  также называют центральным процессорным устройством

(ЦПУ).  Почти каждый бит информации, проходящий через компь-

ютер,  обрабатывается ЦПУ.  Микропроцессор управляет работой

ПК,  пересылая сигналы управления и данные  от  одной  части

компьютера к другой по сети электронных проводов, называемых

шиной. Микросхемы памяти и интерфейсные микросхемы подключа-

ются  к шине с помощью портов ввода-вывода.  Через эти порты

проходят данные, которыми ЦПУ обменивается с остальными час-

тями компьютера и с перефирией.

Внутри   микропроцессора  имеется  рабочая  область  для

обработки и передачи данных, состоящая из ... Да, из скольки

регистров  соостоит Z80?  Одни источники называют 22, другие

24  или 26.  Регистров же  конечно всегда  одинакого, просто

некоторые  источники считают  одни регистры как один, другие

как  два. Общий  объем их  всегда составляет  26  байт.  Для

однозначности  будем  считать  их  за  24  как  в  фирменном

руководстве по Z80.

Микропроцессор    Z80   -   лишь   один   из   множества

микропроцессоров, разработанных фирмой ZILOG. Но он является

одним   из  самых   лучших  8-разрядных   процессоров,   его

возможности  превышают вдвое  возможности  процессора  INTEL

8080.  В связи  с популярностью  Z80, многие  фирмы закупили

права на его производство.

* * *

Синклер   во  всех  свих  моделях  использовал  Z80,  за

исключением   очень  мощных   компьютеров  Sinclair   QL   и

NOTEBOOK-90.  Последний был  признан  лучшим  компьютером  в

своем классе.

* * *

Микропроцессор   Z80  может  работать  только  с  целыми

числами.  Для  работы  с  вещественными  числами  необходимы

специальные   средства.  Для   математических  вычислений  в

Спектруме  используются  библиотеки  подпрограмм,  работа  с

вещественными   числами  в  которых  эмулируется  с  помощью

множества команд процессора. Такой  подход  требует  больших

затрат процессорного времени.

1.2 Вспомогательные микросхемы.

Микропроцессор  не может  ( да  и не  должен)  управлять

всеми   процессами  в   компьютере.   Передавая   выполнение

определенных   функций  вспомогательным   микросхемам,   ЦПУ

разгружает  себя для основной работы. На эти вспомогательные

микросхемы можно возложить управление потоками информации во

внутренних  цепях или  обслуживание внешних  устройств. Эти,

так  называемые, контроллеры  устройств  часто  представляют

отдельные платы, вставляемые в системный разъем.

Изредка      вспомогательные     микросхемы     являются

программируемыми,  т.е. их можно настраивать  для выполнения

различных   задач.   Чаще   всего   такое   программирование

нежелательно, однако рассматривая микросхемы по отдельности,

я  укажу, что же именно можно программировать. Однако в этой

книге    не    рассматриваются    вопросы,    связанные    с

программированием  конкретных микросхем, по этим вопросам вы

можете обратиться к техническим справочникам.

1.2.1 Контроллер доступа к памяти

В   некоторых   компьютерах   для   доступа   к   памяти

применяеться  микросхема К556РТ4 или ее аналоги, в фирменном

же  компьютере была установлена "жуткая" микросхема ULA. Она

заведовала   всеми  важными   вещами,  которые  нельзя  было

"доверить" процессору. В данном случае "это" служит для того

чтобы   Вы  записав  значение  в  память,   могли его оттуда

прочитать  (хотя, по  сути дела, вы без нее даже не запишите

данные  в память)  или для  того, чтобы за адресом #001С шел

адрес  #001D, а не 78В7. Эта микросхема не программируется и

работает в фоновом режиме, поэтому вы можете спокойно забыть

все, что вы прочитали в этом параграфе.

1.2.2 Контроллер дисплея

Основан   указанных  выше  микросхемах.  Он  служит  для

получения синхросигнала и также не программируется.

1.2.3 Генератор тактовых импульсов.

Он  представляет собой микросхему + кварцевый резонатор.

Он     вырабатывает    тактовые     импульсы,    управляющие

микропроцессором.  Его опорная  частота, как правило, 14МГц.

Эта  частота  делится  другими  микросхемами  для  получения

рабочих частот. Рабочая частота стандартного микропроцессора

Z80  2.5МГц, но  в  Спектруме  его  заставляют  работать  на

3.5МГц,  что составляет  одну четверть  от опорной  частоты.

Новые  члены  семейства  Синклера  могут  работать  быстрее,

например,  мой компьютер  работает  на  частоте  7МГц,  (для

сравнения  микропроцессор INTEL  80286(R) работает на 6МГц).

Многие  контроллеры,  например  дисковода,  используют  свои

кварцевые резонаторы.

1.2.4 Программируемый парарельный интерфейс ВВ55.

В  последних моделях  используется эта  микросхема.  Она

необходима  для подключения  к шине  некоторых  переферийных

устройств.  Через порты  ввода-вывода этой  микросхемы можно

устоить  общение с  принтером или  другим  компьютером.  Его

можно и нужно программировать.

1.2.5 Контроллеры дисковода и принтера.

Используется  для управления  флоппи-диском и принтером.

Их   можно  программировать   и  позже  будет  сказано  как.

Контроллер  дисковода основан  на  микросхеме  К1818ВГ93,  а

принтера на выше указанном ВВ55.

1.2.6 Музыкальный сопроцессор AY8910

Эта  микросхема применяется  начиная с  моделей  128К  и

далее.  С ее  помощью можно  создавать великолепную  музыку.

Более подробно мы рассмотрим ее в свое время.

1.3 Связывающее звено: шина.

Как  уже упоминалось  выше, в компьютерах все внутренние

управляющие схемы связаны между собой с помощью совокупности

соединений, называемой шиной. В действительности, это просто

множество  проводов общих  для  всех  компонентов  системной

платы.  Данные, пересылаемые  от одного устройства к другому

"путешествуют" по шине, пока не достигнут места назначения.

Каждый  байт памяти  и любая  из  управляющих  микросхем

напрямую    или   косвенно    подключены   к   шине.   Когда

дополнительное  устройство вставляется в системный разъем на

системной  плате,  оно  тем  самым  подключается  к  шине  и

становиться  полноправной частью  компьютера. Любые  данные,

поступающие  в компьютер  или выводимые  из него, в какой-то

момент  проходят  по  шине.  Большую  часть  времени  данные

находяться  в основной  памяти, которая  в машинах семейства

Синклера  многих тысяч  восьмибитный ячеек  памяти, а именно

131072   бит  в   самой  минимальной   модели  и  8399608  в

максимальной.   Некоторые  данные,   однако,  могут  недолго

находиться  в порту ввода-вывода или в регистре, пока ЦПУ не

отправит   их  по   назначению.  Порты   и  регистры   будут

рассмотрены в гл 2.

Каждая ячейка памяти и каждый порт имеют свой уникальный

адрес.  Всякий раз при обращении к ячейке памяти или к порту

этот   адрес  передается   по  шине  адреса,  само  значение

передается  по шине  данных. Существует также шина питания и

шина   контроля  и   управления  микропроцессором,   но  для

программиста    они   не   предтавляют   интереса,   поэтому

остановимся на двух первых.

1.3.1 Шина адреса

Шина  адреса всех компьютеров семейства Спектрум состоит

из 16 сигнальных линий, несущих адреса ячеек памяти и портов

ввода-вывода. Адресоваться можно к 65536 портам ввода-вывода

и ячейкам памяти.

1.3.2 Шина данных

Шина  данных совместно  с шиной  адреса используется для

передачи   данных  внутри   компьютера.  Все   Спектрумы   с

микропроцессором  Z80  имеют  шину  данных  состоящую  из  8

информационных   линий,  каждая  из  которых  передает  одну

двоичную  цифру и  единицей передачи  информации является  1

байт.

Микропроцессор  Z80 может  работать с  16-ти  разрядными

данными, но только внутри себя. По суте дела возможности Z80

не  только такие же как и у процессора INTEL 8088(R), но и в

некоторых  аспектах намного  больше. Вообще  говоря,  у  Z80

очень развитая система команд.

1.4 Микросхемы памяти.

До   сих  пор   мы  рассматривали   рассматривали   ЦПУ,

вспомогательные   микросхемы,  и   лишь   чуть   затрагивали

упоминали память. Мы намеренно отложили обсуждение памяти до

конца  главы, поскольку  микросхемы  памяти,  в  отличие  от

других микросхем, не управляют потоками данных в компьютере,

а лишь хранят данные до поры.

Число микросхем памяти определяет максимальный ее объем,

который   можно  использовать  для  программ  и  данных.  Но

компьютер  может использовать  не все  микросхемы памяти или

частично. Это мудрое изречение следует пояснить. Дело в том,

что в вашем Спектруме 48К может стоять микросхем ОЗУ на 64К,

при этом использоваться будут только 48К. Иначе говоря, имея

только  48К памяти, вы не сможете обрсщаться к остальным 16К

памяти.

Программисту следует также полностью придерживаться этой

точки  зрения и говорить не о физическом объеме памяти, а об

адресуемой памяти. Z80 может обращаться к 64К и часто памяти

этому  и равна.  Но  в  "128К"  и  PROFI  физическая  память

мнократно  больше адресуемой.  Подробно адресация  к  памяти

рассматривается в 2.2.

Обращение к памяти происходит с помощью 16-ти разрядного

адреса.  В схеме  использование памяти процессором Z80 имеет

"ширину" 16 бит, поскольку они передаются по 16-ти разрядной

шине данных. Профессионалы представляют адреса в 16-тиричном

виде,  если в вас проблемы с шестнадцати ричной арифметикой,

то загляните в приложение 1.

При рассмотрении 64К (48К ОЗУ и 16К ПЗУ) памяти обычного

Спектрума мы обычно делим ее на 4 блока по 16килобайт. Такое

разбиение  памяти на  блоки носит отчасти условных характер,

однако  этоудобно для  объяснения общей  схемы распределения

памяти.

COOO-FFFF (49152-65535) Рабочее ОЗУ.

8000-BFFF (32768-49151) Рабочее ОЗУ.

4000-7FFF (16384-32767) Системное ОЗУ и часть

рабочего ОЗУ.

0000-3FFF (    0-16384) ПЗУ.

Рис. 1.4 Схема памяти.

"128К".  Тут имеется  160К памяти: 128К ОЗУ (8 блоков по

16К) и 32К ПЗУ (2 блока по 16К)

Вы  можете изменять активную страницу памяти набором команд,

но  начиная с  адреса #4000  по адрес #BFFF будут находиться

одни  и те же данные. Меняться будет только область памяти с

#С000  по #FFFF.  Страницы ПЗУ  можно менять  независимо  от

страниц ОЗУ. И позже мы скажем как.

#7FFFF

#6FFFF

#5FFFF

#4FFFF

#3FFFF

#2FFFF

#1FFFF

#0FFFF

Станицам  памяти 5  и 2  соответствуют блоки  с #4000 по

#7FFF и с #8000 по #BFFF соответственно.

1.5 Идеология программирования.

Прежде  чем  перейти  к  следующим  главам, мне  хочется

остановиться    на    общих    принципах    программирования

персональных  компьютеров. Эти  общие принципы  помогут  вам

понять,  что для  вас важно  и полезно,  и наоборот,  на что

можно не обращать внимания.

Ключевым    моментом   в    программировании    является

использование  программ  ПЗУ,  обеспечивающих  почти  полный

набор   функций  управления   компьютером.  Следует   всегда

использовать фирменно описанные точки входа в процедуры. Это

дает  фирме свободу  для совершествования  компьютеров  ,  а

также  ваша программа  будет работать  на всех  компьютерах.

Хотя управление аппаратурой на низком уровне тоже имеет свои

плюсы,   и  дает   достаточную  полноту   для  программу.  О

программировании    с   использованием    процедур   ПЗУ   и

программировании  на низком уровне можно долго дискутировать

и долго приводить доводы "за" и "против". Вообще если же вам

захочеться   использовать   нестандартное   программирование

следует описать все это в сопроводительной документации.</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.volkov.ru/oldstuff/zx-spectrum1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Руководство к ZX-Spectrum. Введение</title>
		<link>http://www.volkov.ru/oldstuff/zxspectrum/</link>
		<comments>http://www.volkov.ru/oldstuff/zxspectrum/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 08:35:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Страницы истории]]></category>

		<guid isPermaLink="false">http://www.volkov.ru/?p=1596</guid>
		<description><![CDATA[Когда-то давным-давно был такой компьютер ZX-Spectrum.  И когда-то, тоже давным-давно, на первом курсе вуза, я написал некий материал, мини-книжку о нем. Все это давным-давно уже забыто. Но я случайно наткнулся на материалы о Спектруме и решил выложить для их для общего доступа. Так сказать, для истории.  Орфография сохранена.
А.Волков
Программисткое руководство к ZX-Spectrum&#8217;у
Предисловие
Итак,вы открыли первую страницу книги. [...]]]></description>
			<content:encoded><![CDATA[<p>Когда-то давным-давно был такой компьютер ZX-Spectrum.  И когда-то, тоже давным-давно, на первом курсе вуза, я написал некий материал, мини-книжку о нем. Все это давным-давно уже забыто. Но я случайно наткнулся на материалы о Спектруме и решил выложить для их для общего доступа. Так сказать, для истории.  Орфография сохранена.</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">А.Волков</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Программисткое руководство к ZX-Spectrum&#8217;у</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Предисловие</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Итак,вы открыли первую страницу книги. Более чем уверен,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">любой  из читавших  книги П.Нортона увидет в ней PROGRAMER&#8217;S</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">GUIDE TO THE IBM PC. А Вы эту книгу и держите в своих руках.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Это  на 99% процентов она и есть. Я только чуть-чуть изменил</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">данные  дававшиеся для  IBM PC на Спектрум, добавил немножко</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">свежей  информации, подробно  описал все возможные сложности</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">при  программировании. Книги  П.Нортона, их стиль изложения,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">глубина   понимания  предмета,   широта  охвата  делают  его</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">произведения уникальными.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Питер  Нортон родился  в Сиэтле,  получил образование  в</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Ридовском  Колледже. Я  же родился  в Новосибирске,  получаю</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">образование    в   Новосибирском   Институте   Экономики   и</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Менеджмента. А кроме всего этого я ученик Иисуса Христа.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Но, если вам  понравились книги П.Нортона, то я надеюсь,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">что вы хоть не выкините мою.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Созданию  этой книги  содействовало так много людей, что</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">было бы невозможно всех их перечислить.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Однако,  есть    один   человек,   который   заслуживает</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">отдельного упоминания и благодарности &#8211; это сэр Клайв Марльз</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Синкер  (Clive Sinclair), чей гений подарил нам, то о чем мы</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">будем говорить в книге.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Автор.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Введение.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Цель  этой книги  проста, но  честолюбива &#8211;  помочь  вам</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">освоить  принципы  программирования  семейства  персональных</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">компьютеров  (ПК) фирмы Sinclair Research LTD. Представление</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Спектрума   в  сентябре   1982  года,   было  без   сомнений</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">значительным  событием в  компьютерном  мире.  Позже,  когда</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">об&#8217;емы  продаж  этой  модели  и  ее  ближайших  родствеников</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">превзошли  самые смелые  ожидания,  стало  ясно  -  Спектрум</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">фактически признан стандартным компьютером настольного типа.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">От  оригинальной модели  Спектрума  ведут  свою  родословную</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">большинство  персональных компьютеров,  значение  которых  в</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">нашем мире сегодня трудно переоценить.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Успех семейства Синклера соответственно повысил важность</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">разработки  программного обеспечения  для этих  компьютеров.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Однако   все  время   повышающиеся  требования   со  стороны</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">пользователей   вносят  все   большие  сложности   в  работу</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">программистов.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Эта  книга    о  том,  что  необходимо  знать,  уметь  и</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">понимать  для того,  чтобы создавать программы  для ПК. Хотя</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">мы  и  будем  обращать  внимание  на  особенности  отдельных</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">моделей,  однако основная  наша задача &#8211; найти общий подход,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">пригодный  не только  для существующих,  но  и  для  будущих</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">членов семейства Спектрум.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Эта  книга для  всех, кто  связан с разработкой программ</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">для  ПК, прежде  всего для программистов, но и не только для</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">них.    Она   для    тех,   кому   нужно   понимать   основы</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">программирования,   тому  кто   планирует  или   проектирует</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">программы, для тех, кто эти программы использует и хочет при</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">этом знать, что происходит в машине.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Этой   книгой  можно   пользоваться  как   учебником  по</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">программированию на ассемблере, т.к. часто даются примеры на</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">бейсике, аналогичные ассемблеровским.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Филосовское отступление.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Одним   из  основных   элементов  этой   книги  является</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">обсуждение  идеологии  программирования.  Вы  найдете  здесь</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">обяснение   идей,  которыми   Синклер  руководствовался  при</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">разработке  семейства Спектрум,  и  принципов  рационального</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">программирования,  вытекающих из  моего собственного  опыта.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Для   чтения  книги   вовсе  не   обязательно   иметь   опыт</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">программирования,  хотя  это  ускорит  понимание  материала.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Единственным  обязательным условием является наличие желания</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">изчать данное пособие.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Если  бы  эта  книга  содержала  лишь  факты, &#8211;  таблицы</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">технической  информации,   она вряд  ли была бы вам полезна.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Поэтому  я постоянно прерываю обсуждение технических деталей</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">объяснением того, почему делается именно так, какие принципы</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">объединяют  различные идеи  и как  писать программы, которые</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">будут  жить  &#8221;долго  и  счастливо&#8221;     вместе  с  семейством</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">компьютеров  Синклера и  моей книгой.  Возмем пример:  как я</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">любил  программу MOA SERVICE написанную Андреем Ларченко, но</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">она   не  поддерживает   128К  и  мне  пришлось  перейти  на</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">CONVER-COMMANDER, написанный Ковалевским, хотя эта программа</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">тоже  не идеальна  (Особенно когда  длина файла равна 80,254</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">или 255 секторов)</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Как пользоваться этой книгой.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Эта  книга одновременно  и учебник и справочник, поэтому</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ею можно польозваться по крайней мере двумя способами. Можно</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">прочитать   ее  от  корки  до  корки,  углубляясь  только  в</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">интересующие  вас места,  лишь чуть-чуть  проглядывая другой</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">материал. (Это хороший способ изучить приемы, используемые в</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">программах,  и идеи,  лежащие на основе этих методов). Можно</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">также  использовать эту  книгу  и  в  качестве  справочника,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">обращаясь  к  конкретной  главе  за  ответом  на  конкретный</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">вопрос.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Если  вы предпочитаете второй способ, то обнаружите, что</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">большая   часть  материла   имеет  внутренние  связи.  Чтобы</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">сохранить  эти связи информация часто повторяется, а там же,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">где  повторение не  практично, дается  ссылка. Для выделения</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">частей  текста,  относящихся  только  к  конкретным  моделям</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">компьютеров, применяются наглядные значки, например &#8220;128К&#8221;.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Появление  этого значка  в начале  параграфа или раздела</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">указывает на то, что эти фрагменты книги относяться только к</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">данной  модели, а  появление его  в тексте должно привлекать</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">ваше внимание к спецефическим для отдельных моделей деталям.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Надеюсь,   что  эта   система  поможет   вам  быстро   найти</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">информацию, необходимую для вашей программы.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Литература.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Естественно,  одна книга не может вместить все ответы на</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">все  ваши вопросы. Я сделал ее настолько подробной и полной,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">насколько  мог, но  потребность в  дополнительной информации</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">останеться  всегда. Вот  некоторые дополнительные  источники</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">информации.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">&#8220;Первоисточником&#8221;  подробной  технической  информации  о</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">семействе  Спектрума являются  справочники  по  оригинальной</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">модели,   по  128К  и  т.д.  Большая  часть  программистской</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">информации   в  этих  книгах  повторяется  и  может  служить</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">руководством  по всему  семейству. Следует  только  помнить,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">что,  во-первых, особености, касающиеся конкретной модели, в</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">этих руководствах не выделены в тексте, имеющем отношение ко</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">всему,   и  чтобы   это  учесть,   следует  сравнить  разные</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">руководства,  хотя проще  посмотреть мою  книгу.  Во-вторых,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">часто  эти описания  недоступны советскому  пользователю,  а</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">распростроняемые некоторыми фирмами (в особенности Солоном и</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">VA  PRINT&#8217;ом) содержат  явно некомпетентную  информацию ( на</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">мой  взгляд). В-третьих,  каждая  новая  модель,  не  только</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">приобретает новые достоинства, но и что-то теряет. Вам лучше</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">не  отвлекаться на  изучение вещей,  актуальных не  для всех</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">моделей Спектрума, но все же неплохобы было бы узнать почему</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">отлично    работавшая   ранее    программа   после   покупки</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">какого-нибудь  расширения сбрасывается (со 2 этажа) или, что</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">не более приятно, виснет (на потолке).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Существует также масса различных описаний и документации</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">других  фирм. В  них описаны различные дисководы, принтеры и</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">т.д.,   но  для  программиста большая  часть  информации  не</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">представляет интереса.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Много  интересной информации можно найти в периодических</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">изданиях.  За рубежом  издаются такие  издания, как Sinclair</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">User,  Your Sinclair, Your Spectrum, Bajtek, Home Computers,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Spectrum&#8217;s  programs. Не осталась за уровнем &#8220;нищеты&#8221; и наша</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">страна.   У  нас  издаются  Спектромания,  ZX-Pевю,  HACKER,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Радиолюбитель,  Байтик, Spectrum  Press и  многие другие. Но</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">лучшим журналом был и остается до сих пор Sinclair User.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Поскольку   данная   книга   посвящена   общим   основам</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">программирования  ПК, вы  найдете здесь  лишь самые ключевые</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">моменты,  касающиеся отдельных  языков программирования.  По</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">поводу  языков и компиляторов вам понадобиться столько книг,</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">что  мне на  их перечисление  пришлось бы потратить такой же</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">объем как и эта книга.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">P.S. Для непонятливых: строки о Нортоне &#8211; шутка.</div>
<pre>                          А.Волков

         Программисткое руководство к ZX-Spectrum'у

                         Предисловие

    Итак,вы открыли первую страницу книги. Более чем уверен,
любой  из читавших  книги П.Нортона увидет в ней PROGRAMER'S
GUIDE TO THE IBM PC. А Вы эту книгу и держите в своих руках.
Это  на 99% процентов она и есть. Я только чуть-чуть изменил
данные  дававшиеся для  IBM PC на Спектрум, добавил немножко
свежей  информации, подробно  описал все возможные сложности
при  программировании. Книги  П.Нортона, их стиль изложения,
глубина   понимания  предмета,   широта  охвата  делают  его
произведения уникальными.
    Питер  Нортон родился  в Сиэтле,  получил образование  в
Ридовском  Колледже. Я  же родился  в Новосибирске,  получаю
образование    в   Новосибирском   Институте   Экономики   и
Менеджмента. А кроме всего этого я ученик Иисуса Христа.
    Но, если вам  понравились книги П.Нортона, то я надеюсь,
что вы хоть не выкините мою.
    Созданию  этой книги  содействовало так много людей, что
было бы невозможно всех их перечислить.
    Однако,  есть    один   человек,   который   заслуживает
отдельного упоминания и благодарности - это сэр Клайв Марльз
Синкер  (Clive Sinclair), чей гений подарил нам, то о чем мы
будем говорить в книге.

                                       Автор.

                          Введение.

    Цель  этой книги  проста, но  честолюбива -  помочь  вам
освоить  принципы  программирования  семейства  персональных
компьютеров  (ПК) фирмы Sinclair Research LTD. Представление
Спектрума   в  сентябре   1982  года,   было  без   сомнений
значительным  событием в  компьютерном  мире.  Позже,  когда
об'емы  продаж  этой  модели  и  ее  ближайших  родствеников
превзошли  самые смелые  ожидания,  стало  ясно  -  Спектрум
фактически признан стандартным компьютером настольного типа.
От  оригинальной модели  Спектрума  ведут  свою  родословную
большинство  персональных компьютеров,  значение  которых  в
нашем мире сегодня трудно переоценить.
    Успех семейства Синклера соответственно повысил важность
разработки  программного обеспечения  для этих  компьютеров.
Однако   все  время   повышающиеся  требования   со  стороны
пользователей   вносят  все   большие  сложности   в  работу
программистов.
    Эта  книга    о  том,  что  необходимо  знать,  уметь  и
понимать  для того,  чтобы создавать программы  для ПК. Хотя
мы  и  будем  обращать  внимание  на  особенности  отдельных
моделей,  однако основная  наша задача - найти общий подход,
пригодный  не только  для существующих,  но  и  для  будущих
членов семейства Спектрум.
    Эта  книга для  всех, кто  связан с разработкой программ
для  ПК, прежде  всего для программистов, но и не только для
них.    Она   для    тех,   кому   нужно   понимать   основы
программирования,   тому  кто   планирует  или   проектирует
программы, для тех, кто эти программы использует и хочет при
этом знать, что происходит в машине.
    Этой   книгой  можно   пользоваться  как   учебником  по
программированию на ассемблере, т.к. часто даются примеры на
бейсике, аналогичные ассемблеровским.

                  Филосовское отступление.

    Одним   из  основных   элементов  этой   книги  является
обсуждение  идеологии  программирования.  Вы  найдете  здесь
обяснение   идей,  которыми   Синклер  руководствовался  при
разработке  семейства Спектрум,  и  принципов  рационального
программирования,  вытекающих из  моего собственного  опыта.
Для   чтения  книги   вовсе  не   обязательно   иметь   опыт
программирования,  хотя  это  ускорит  понимание  материала.
Единственным  обязательным условием является наличие желания
изчать данное пособие.
    Если  бы  эта  книга  содержала  лишь  факты, -  таблицы
технической  информации,   она вряд  ли была бы вам полезна.
Поэтому  я постоянно прерываю обсуждение технических деталей
объяснением того, почему делается именно так, какие принципы
объединяют  различные идеи  и как  писать программы, которые
будут  жить  "долго  и  счастливо"     вместе  с  семейством
компьютеров  Синклера и  моей книгой.  Возмем пример:  как я
любил  программу MOA SERVICE написанную Андреем Ларченко, но
она   не  поддерживает   128К  и  мне  пришлось  перейти  на
CONVER-COMMANDER, написанный Ковалевским, хотя эта программа
тоже  не идеальна  (Особенно когда  длина файла равна 80,254
или 255 секторов)

                Как пользоваться этой книгой.

    Эта  книга одновременно  и учебник и справочник, поэтому
ею можно польозваться по крайней мере двумя способами. Можно
прочитать   ее  от  корки  до  корки,  углубляясь  только  в
интересующие  вас места,  лишь чуть-чуть  проглядывая другой
материал. (Это хороший способ изучить приемы, используемые в
программах,  и идеи,  лежащие на основе этих методов). Можно
также  использовать эту  книгу  и  в  качестве  справочника,
обращаясь  к  конкретной  главе  за  ответом  на  конкретный
вопрос.
    Если  вы предпочитаете второй способ, то обнаружите, что
большая   часть  материла   имеет  внутренние  связи.  Чтобы
сохранить  эти связи информация часто повторяется, а там же,
где  повторение не  практично, дается  ссылка. Для выделения
частей  текста,  относящихся  только  к  конкретным  моделям
компьютеров, применяются наглядные значки, например "128К".
    Появление  этого значка  в начале  параграфа или раздела
указывает на то, что эти фрагменты книги относяться только к
данной  модели, а  появление его  в тексте должно привлекать
ваше внимание к спецефическим для отдельных моделей деталям.
Надеюсь,   что  эта   система  поможет   вам  быстро   найти
информацию, необходимую для вашей программы.

                         Литература.

    Естественно,  одна книга не может вместить все ответы на
все  ваши вопросы. Я сделал ее настолько подробной и полной,
насколько  мог, но  потребность в  дополнительной информации
останеться  всегда. Вот  некоторые дополнительные  источники
информации.
    "Первоисточником"  подробной  технической  информации  о
семействе  Спектрума являются  справочники  по  оригинальной
модели,   по  128К  и  т.д.  Большая  часть  программистской
информации   в  этих  книгах  повторяется  и  может  служить
руководством  по всему  семейству. Следует  только  помнить,
что,  во-первых, особености, касающиеся конкретной модели, в
этих руководствах не выделены в тексте, имеющем отношение ко
всему,   и  чтобы   это  учесть,   следует  сравнить  разные
руководства,  хотя проще  посмотреть мою  книгу.  Во-вторых,
часто  эти описания  недоступны советскому  пользователю,  а
распростроняемые некоторыми фирмами (в особенности Солоном и
VA  PRINT'ом) содержат  явно некомпетентную  информацию ( на
мой  взгляд). В-третьих,  каждая  новая  модель,  не  только
приобретает новые достоинства, но и что-то теряет. Вам лучше
не  отвлекаться на  изучение вещей,  актуальных не  для всех
моделей Спектрума, но все же неплохобы было бы узнать почему
отлично    работавшая   ранее    программа   после   покупки
какого-нибудь  расширения сбрасывается (со 2 этажа) или, что
не более приятно, виснет (на потолке).
    Существует также масса различных описаний и документации
других  фирм. В  них описаны различные дисководы, принтеры и
т.д.,   но  для  программиста большая  часть  информации  не
представляет интереса.
    Много  интересной информации можно найти в периодических
изданиях.  За рубежом  издаются такие  издания, как Sinclair
User,  Your Sinclair, Your Spectrum, Bajtek, Home Computers,
Spectrum's  programs. Не осталась за уровнем "нищеты" и наша
страна.   У  нас  издаются  Спектромания,  ZX-Pевю,  HACKER,
Радиолюбитель,  Байтик, Spectrum  Press и  многие другие. Но
лучшим журналом был и остается до сих пор Sinclair User.
    Поскольку   данная   книга   посвящена   общим   основам
программирования  ПК, вы  найдете здесь  лишь самые ключевые
моменты,  касающиеся отдельных  языков программирования.  По
поводу  языков и компиляторов вам понадобиться столько книг,
что  мне на  их перечисление  пришлось бы потратить такой же
объем как и эта книга.

    P.S. Для непонятливых: строки о Нортоне - шутка.</pre>
<pre><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: small;"><span style="line-height: 18px; white-space: pre; ">

</span></span></pre>
<div><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: small;"><span style="line-height: 18px; white-space: pre;"></p>
<div></div>
<div><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: small;"><span style="line-height: 19px; white-space: normal; "><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace;"><span style="line-height: 18px; white-space: pre; font-size: x-small; "><br />
</span></span></span></span></div>
<p></span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.volkov.ru/oldstuff/zxspectrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
