ZX-Ревю 1991 №9 1990 г.

Forum - В нашей почте сентября лежит сразу несколько писем, которые могли бы претендовать на приз "Лучший вопрос месяца", если бы мы осмелились устроить такой конкурс. Но наши возможности имеют вполне осязаемый предел и не позволяют так рисковать.


Темы статьи: Программирование  

FORUM

В нашей почте сентября лежит сразу несколько писем, которые могли бы претендовать на приз "Лучший вопрос месяца", если бы мы осмелились устроить такой конкурс. Но наши возможности имеют вполне осязаемый предел и не позволяют так рисковать.

Привидения в ОЗУ

Во-первых, поступило обращение от военнослужащего из г. Мурманска т. Новикова В. П. сомневающегося в надежности своей машины. Вот в двух словах суть его проблемы.

Экспериментируя с оператором РЕЕК, он обнаружил, что значительная часть верхнего пространства памяти компьютера содержит нули, что и не удивительно - память девственно чиста, но на самом верху, в районе адреса 65300 содержатся какие-то числа.

Попытка их "очистить", т.е. принудительно обнулить, в одних случаях ни на что не влияет, в других выводит компьютер из строя (конечно не физически, а только программно). Более того, многие из них просто нестабильны. Если в ОЗУ уже размещена какая-то Бейсик-программа, то эти числа меняются без видимой закономерности, что затрудняет ему борьбу с ними за очищение памяти от "мусора".

Прежде всего, мы должны успокоить нашего читателя - с компьютером все в порядке, просто он провел эксперименты с одним из разделов оперативной памяти компьютера. Те, кто имеет нашу разработку "Большие возможности Вашего Спектрума", могут найти в ней карту памяти и увидеть, что в исходном (после включения) состоянии этот участок памяти отводится для хранения символов графики пользователя (UDG), а также для организации в нем вспомогательных служебных структур - стеков. Это стек GO SUB и машинный стек. Содержимое этой области находится под управлением ПЗУ компьютера и потому может изменяться, даже если пользователь об этом и не догадывается.

Напомним для начинающих карту памяти "Спектрума". Нижние 16K занимает ПЗУ (содержащее необходимые процедуры операционной системы, о чей мы достаточно подробно пишем в разделе "Секреты ПЗУ"). Далее примерно 7K занимает экранная область памяти, потом идет буфер принтера, системные переменные и пр. И наконец - свободное пространство (более 2/3 общей памяти). Это "свободное пространство" подвержено постоянным изменениям. Это не чистый лист бумаги, на котором можно что-то написать и стереть. Оно непрерывно "пульсирует", то увеличиваясь, то уменьшаясь, выделяя свои просторы для временного использования по мере необходимости для различных нужд. Контроль же за всеми этими процессами ведется в установках значений системных переменных и в данных на стеках, находящихся на вершине памяти (вот почему они могут меняться и почему их нельзя "портить").

Возьмем простой пример, Вы нажали клавишу EDIT и видите как строка из листинга Вашей программы на экране копируется в нижнюю часть экрана, где Вы можете вносить в нее свои изменения и дополнения. Вам и невдомек, что в это же время в "свободной" области памяти происходят бурные события. Выделяется место под область редактирования, передвигаются вверх буфер INPUT и стек калькулятора, копируется содержимое Вашей строки из программной области в область редактирования и прочее и прочее.

Вы нажали ENTER и отредактированная строка заняла свое место в программе. И это опять "раздвигание" программной области, чтобы втиснуть измененную строку, смещение всего, что было выше ее вверх, копирование, сворачивание области редактирования и, наоборот, сдвиг вниз буфера INPUT и стека калькулятора.

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

То же происходит и со стеками, находящимися в верхних адресах компьютера. Они могут расти (растут они вниз) или сжиматься, но по мере их сжатия освобождающиеся ячейки памяти присовокупляются к свободному пространству, но не обнуляются. Там остается "эхо" предшествующих событий и держится оно до тех пор, пока стек, разрастаясь сверху вниз вновь не проутюжит эти адреса или пока снизу не подступят рабочие области по мере развития Вашей Бейсик-программы.

Что такое стек?

Продолжая эту тему, ответим также на вопрос В. Сивцева из Воронежа о том, что такое стеки GO SUB и машинный стек, о которых так часто упоминается.

Большинство наших читателей конечно знает, что делает команда GO SUB - вызывает исполнение подпрограммы. Когда ПЗУ встречает в Вашей программе команду GO SUB, то сначала запоминается то место, в котором она встретилась - номер строки и номер оператора в строке.

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

Стек GO SUB - и есть тот участок памяти, в которой это все и запоминается. Он растет сверху вниз и работает по принципу "последним пришел - первым уйдешь". Т.е. при команде RETURN со стека снимаются данные, поступившие в последней GO SUB. Легко представить себе, что вызвав через GO SUB подпрограмму, Вы в ней опять применяете GO SUB для вызова другой и так далее. При этом стек будет расти все больше и больше. Совершенно очевидно, что возвращаясь из этих подпрограмм через RETURN, Вы снимете все заложенные на стек данные, он сожмется и придет в исходное состояние. Кстати, если Вы из подпрограмм будете возвращаться через GO TO, то такой нежный баланс на стеке будет нарушен и работоспособность Вашей программы будет висеть на волоске.

Машинный стек находится чуть ниже стека GO SUB и непосредственно граничит с верхней границей свободного пространства. Соответственно, когда стек GO SUB расширяется и сжимается, то машинный стек копируется то вниз, то вверх.

Машинный стек аналогичен стеку GO SUB по природе, но с ним работает не Бейсик-программа, а сам процессор Z-80. Там процессор запоминает адреса процедур, когда они вызывают другие процедуры и наоборот, снимает эти адреса при возврате. Вторая его функция - временное место хранения содержимого регистров процессора или каких-либо ячеек памяти, когда их нужно освободить для каких то срочных дел, но нельзя их потерять. Для этого в системе команд Z-80 есть даже две группы команд - PUSH (команды этой группы отправляют на стек данные на хранение), и команды POP (они восстанавливает данные, снимая их со стека).

Так, например, PUSH ВС отправит на стек содержимое регистров B и C, а команда POP HL снимет то, что последних помещалось на стек (2 байта) и зашлет их в регистры H и L.

Обратите внимание еще и на тот факт, что если Вы никогда в машинном коде (на Ассемблере) не программировали и не собираетесь, то и машинный стек Вам вроде бы не нужен? - Ничего подобного!

Вполне достаточно того, что любое Ваше действие на компьютере (а также и бездействие) сопровождается исполнением сотен процедур, находящихся в ПЗУ, которые работают в машинном коде и без этого стека жить никак не смогут.

Зачем нужны прерывания?

Еще один вопрос, интересующий десятки наших читателей в последнее время - это использование прерываний в "Спектруме". Что такое прерывания? Зачем они нужны?

Надо сказать, что кое-что об этом есть в нашем трехтомнике по программированию в машинных кодах, но видимо недостаточно. В нашем портфеле сейчас заготовлен обширный материал на эту тему, выполненный Баяновым К. К. из Томска по нашему заказу, но на финише года мы должны в первую очередь завершить начатые статьи и циклы, поэтому этот материал дадим в следующем году, а пока ограничимся несколькими словами о прерываниях.

Система прерываний - это средство, с помощью которого процессор может прекратить исполнение одной задачи и перейти к другой, а потоп опять вернуться туда, где прервал работу.

Все компьютеры имеют систему прерываний. На самых совершенных машинах работа может быть организована например так, что процессор исполняет свою главную задачу, но иногда обращается к вспомогательным, которые в свою очередь распределены по приоритетам (по степени важности) и более приоритетные выполняются в первую очередь. По мере исполнения каждой работы компьютер возвращается к предыдущей незаконченной задаче.

Процессор Z-80 может исполнять прерывания двух основных типов.

Первый тип - немаскированное прерывание (NMI). Оно так названо потому, что программист не может его предотвратить или направить на исполнение своей задачи (маскировать). Процессор неотвратимо исполняет это прерывание, когда оно происходит.

Маскируемое прерывание более интересно, т.к. может быть использовано и потому, что оно имеет три разных режима (IM0, IM1 и IM2).

В нулевом режиме процессор просто ждет команды от внешнего устройства на то, чтобы прервать свою работу и обратиться к исполнению программы, заложенной в известном месте памяти. В фирменной машине и в большинстве самодельных аналогов нет средств для работы в этом режиме.

Первый режим (IM1) - основной. "Спектрум" конструктивно исполнен так, чтобы всегда работать в нем. В этом режиме процессор прерывает работу, запоминая в регистре PC адрес, в котором он прервался, и обращается в ПЗУ по адресу 0038Н. Процедура ПЗУ, расположенная в этом месте обеспечивает "тикание" внутренних часов "Спектрума" и сканирование клавиатуры в поисках нажатой клавиши. Если клавиша была нажата, тут же изменяются значения флагов в системных переменных (см. раздел "Секреты ПЗУ") и далее работа продолжается.

Такое "тикание" происходит 50 раз в секунду (это связано с тем, что в нашей электрической сети частота тока - 50 Гц). Если бы Вы жили в Англии или в США, Ваш компьютер сканировал бы клавиатуру чаще - 60 раз в секунду.

Самый серьезный, хотя и реже используемый режим - второй (IM2). В нем после прерывания процессор обращается не в одну и ту же точку ПЗУ, как в IM1, а туда, куда задаст сам программист. Адрес перехода по этому прерыванию вычисляется следующим образом.

Он состоит из двух байтов. Старший байт процессор берет из регистра I (который так и называется - вектор прерываний). Программист может задать его так, как ему надо. Второй байт адреса (младший) процессор принимает от внешнего периферийного устройства, выдавшего этот сигнал прерывания.

Адрес = 256*(содержимое !)+то, что поступило по шине данных. Далее компьютер смотрит, что содержится по этому адресу (и в следующем) и определяет, куда ему перейти на исполнение новой задачи.

Новый адрес = содержимому адреса+256*содержимое (адрес+1).

Пример:

Регистр I содержит число 143. От периферии поступило число 27, расчет адреса дает:

256*143+27 = 36635 (и 36636)

Если в этих ячейках содержатся числа 137 и 93, то будет сделан переход на адрес:

137+256*93=23945

Таким образом, программист в нужном ему месте может организовать таблицу переходов, содержащую 126 адресов. Длина этой таблицы будет 256 байтов. Далее он выставит регистр I так, чтобы он всегда указывал на начало этой таблицы, и положение адреса перехода по прерыванию будет зависеть от внешнего устройства. Так, можно обеспечить работу компьютера со 128-ью разными внешними устройствами, каждое из которых обслуживается своей личной программой (драйвером).

Пока мы на этом остановимся, а в будущем году дадим развернутый материал на эту тему, причем приложим к нему несколько образцов программ-драйверов.

К вопросу о совместимости.

Нам было очень приятно получить письмо из Елгавы (Латвийская республика) от нашего читателя Масолова Ю. В.

Вы помните, что в начале года на наших страницах проводилось исследование почему не работает на многих самодельных машинах программа "Арканоид". Было установлено, что процессор в фирменной машине при чтении внешнего порта "подхватывает" байт атрибутов и в этом вся проблема и заключалась.

Нашему читателю удалось таким же образом запустить TOP GUN, DUET и многие другие программы.

Конечно же, нам очень приятно, что проблемы, поднятые на наших страницах, приводят в итоге к практическим решениям.

Вместе с тем, как указано в письме, есть еще проблемы с прерываниями INT. В разных схемах этот сигнал формируется по разному. В результате опытов удалось установить, что этот сигнал должен появляться в НАЧАЛЕ КАДРОВОГО СИНХРОИМПУЛЬСА и сбрасывается через M1 и MREQ, а если прерывания запрещены, то через 10 мксек. Если же сигнал начинается в другое время, имеются следующие проблемы:

1. Дрожат спрайты на экране (ARKANOID и др.).

2. Исчезает курсор в экране (ARTSTUDIO).

3. Линии в бордюре не совпадают с фоном экрана.

О необходимости разобраться с сигналом INT говорит и наш читатель Хвиш А. А. из г. Луцка. Им также установлено, что этот сигнал оказывает большое влияние на программную совместимость с родительской машиной. Так, на его "Балтике", как и на машинах его близких друзей, отказывались работать программы "Samantha Fox", "Turbo Comp" и др.

Идею по доработке компьютера он нашел в минском журнале "Радиолюбитель" и, как пишет наш читатель, "Теперь компьютер работает отлично".

В этом журнале есть и немало прочей ценной информации для любителей нашей системы. Так, например, сообщается о том, что минский кооператив "Сонет" поставляет желающим ПЗУ 27256 с записью в старшей 16-килобайтной области системы "Disk-monitor", копировщика ZX-COPY, программы "Assembler" и базовой системы ввода/вывода (BIOS) CP/M.

Данный пакет дает возможность не только останавливать любые программы, вносить в них изменения и запускать с места останова, но и писать свои. Выгрузка программ на ленту или диск выполняется несложно с помощью контроллера. Загрузчик BIOS делает возможной работу в среде CP/M, причем без каких-либо существенных аппаратных изменений.

Принцип работы заключается в переписывании верхних 16K в область теневого ОЗУ.

Наш читатель опробовал этот пакет на своем "Балтике" и остался очень и очень доволен. К сожалению, у нас нет информации от кооператива "Сонет" по этому вопросу, но если кто-то из приближенных к нему читателей может содействовать установлению такой связи, мы с радостью опубликуем более широкую информацию об их разработках, ведь судя по нашей почте, очень многих интересует работа в среде CP/М.

Но есть и новые вопросы, новые проблемы.

Во-первых, у нашего постоянного читателя из г. Киева Довженко В. П. не идет программа PSI-CHESS на Львовском варианте компьютера. Что это - случайность или за этим что-то стоит?

Есть также сообщения и о том, что скорость игр, запущенных на "Ленинградской" версии заметно ниже, чем на других версиях, например на "Балтике". И это скорее всего не случайность.

Интерфейс MIDI

Еще один часто встречающийся вопрос касается интерфейса MIDI, который служит для подключения к компьютеру музыкальных инструментов, синтезаторов и прочих музыкальных устройств.

Читателей интересует все: описания, схемы, прошивка ПЗУ, программная поддержка.

К сожалению, мы не располагаем по этому вопросу никакой информацией. Может быть в стране просто еще нет разработок, привязанных к отечественной элементной базе, но если все же что-то есть, то мы с радостью приобрели бы любую информацию, столь нужную нашим читателям.

Электромузыкальные Инструменты: гитара и пр.

Различные

Магнитофон

устройства

Смеситель звуков

MIDI - синтезатор

для звуковых

эффектов

L

Интерфейс MIDI

Бесклавиа

Анализатор

турные син-

звуков

тезаторы

ZX SPECTRUM

Для тех, кто пока просто не задумывался над этим вопросом, мы дадим блок-схему подключения музыкальной системы к "Спектруму", в основу которой положен интерфейс "MIDI" и синтезатор звуков, например YAMAHA DX-100. Надеемся, это зрелище впечатлит тех, кто может заняться такой разработкой. Из схемы наглядно видно, к каким системам открывается доступ, если есть в наличии MIDI-интерфейс. Схема взята из журнала Sinclair User.

Заканчивая сегодня раздел "Форум", мы хотим порекомендовать Вам достать и прочитать журнал "Компьютер" (N1 за 1991 год). Этот совместный советско-польский журнал формируется по материалам польского ежемесячного журнала "Kompjuter" и выходит раз в квартал. Журнал известен среди пользователей компьютеров разных систем, в основном он посвящен IBM-совместимым машинам, но данный номер был почти полностью предоставлен системе "СИНКЛЕР" и содержит весьма интересные и поучительные материалы.

Мы не знаем, как дело обстоит во всей стране в целом, но в Москве и Ленинграде он еще есть в продаже и приобретается без особых проблем.

Мы очень часто получаем письма с просьбой посоветовать над чем бы поработать нашим читателям, умеющим программировать и желающим приложить свои усилия с пользой для себя и общества.

Рецепт очень прост - в нем всего пять слов: "Найдите потребность и удовлетворите ее". (Рецепт взят из недавно вышедшей книги "Как стать предприимчивым и богатым. Из американских рецептов." М., "Молодая гвардия", 1991)

Нужна помощь.

интерфейс

устройств

эффектов

ударных

инструментов

Требуются обучающие программы для ПК "Спектрум". 183060, Мурманск-60, ул. Мира, д. 5/4, кв. 221, Гершковичу М. Б.

Для применения в медицинской практике требуется тех. документация и запрограммированные ПЗУ с ДИСК МОНИТОРОМ ОС. 270111, Одесса-111, а/я 63, Карасевичу В. В.

Компьютер в моем городе.

Сегодня мы обращаемся ко всем нашим читателям с предложением принять участие в крупной акции по созданию летописи развития движения самодеятельного компьютерного творчества в нашей стране.

То явление, которое мы сейчас переживаем, связанное с огромным проникновением компьютерных знаний в самые широкие круги, уникально. Это подлинно народная компьютерная революция. И все Вы ее творцы и активные участники.

Народ сам, не спросясь никого, и не дожидаясь милости от государственных комитетов по информатике и по народному образованию оснастил себя колоссальным парком машин.

Сегодня в стране по нашим оценкам 1.5 - 2 миллиона пользователей "Спектрума". Можно сколько угодно восхищаться гением сэра Клайва Синклера, создателя этого компьютера, но мы то абсолютно точно знаем сколько у нас своих гениев. Тех, кто "на коленке", разрабатывал и из немыслимых деталей собирал советские "Спектрумы", когда официальные журналы упивались достоинствами "Микроши".

А через что прошли заводы, которые начали выпускать первые "Спектрумы"! Каким мужеством обладали их руководители, не побоявшиеся срыва планов основного производства и взявшиеся за совершенно новое, рискованное и не пользующееся официальной поддержкой дело!

Нет в мире другой страны, в которой были бы еще самодельные "Спектрумы". А ведь сколько разных версии разработано и освоено Вами!

Можно только поражаться, какой же волей должен обладать народ, который без малейшей поддержки и даже вопреки ограничениям на ввоз процессоров Z-80 (и такое было!) поднял в стране уровень компьютерной грамотности и довел ее до миллионов.

Мы обращаемся с просьбой ко всем. Пока все это живо в памяти, именно в эти трудные для страны дни давайте запишем все, что мы знаем и помним об этом пути.

Пройдут годы и мы уверены: об этом периоде будут говорить с должным уважением. Давайте соберем наши общие знания в единую летопись.

Пишите все, что знаете. Когда и как в Вашем городе появились первые компьютеры? Какие модели? Чем сейчас живет город? Кто выпускает машины в Вашем регионе? Какие программы пользуются наибольшим авторитетом и какие модели машин? Кто и как их разрабатывал, кто что предложил нового? Где Вы собираетесь и как? Сколько Вас? Сколько в городе машин и каких? Есть ли учебные классы и школы, оснащенные компьютерами?

Нам нужны и адреса производителей "Спектрумов". Самых крупных мы, конечно знаем, но ведь их сейчас сотни.

Если Вы живете не в городе, а в поселке или селе - это не имеет никакого значения -нам важно знать все.

Если Вы лишь недавно приобрели компьютер и не имеете информации о прошлом -напишите, как Вы видите день сегодняшний. Ведь завтра и он станет историей.

Нам обычно пишут, когда с компьютером что-то плохо. Почему бы не написать, когда с ним все хорошо (и сказать, что это за модель и какой завод ее сделал).

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

Одним словом, нас интересует ВСЕ! Мы будем скрупулезно накапливать и хранить всю информацию. Как знать, ведь если этого не сделать сейчас, она может быть безвозвратно утрачена! Много ли сейчас узнаешь о тех людях, которые делали первый российский (украинский, белорусский...) автомобиль?

У нас есть мечта - когда-нибудь создать музей бытовых персональных компьютеров. Чтобы лет через двадцать все могли прийти и увидеть, как это начиналось.

Пока это только мечта, но если Вы, уважаемый читатель, внимательно следите за нашим развитием, то знаете, что мы хоть и медленно, но неуклонно идем своим путем. И мы

обязательно создадим такой музей, когда наберем для этого достаточно сил.

Обращаясь к Вам с такой просьбой мы преследуем еще одну цель.

Мы хотим выявить среди Вас тех, кто умеет вести маркетинговые исследования, обладает для этого достаточной коммуникабельностью, контактностью, способностью собирать и анализировать информацию.

Крупные разработчики и изготовители компьютеров, периферийных устройств, поставщики программного и информационного обеспечения нуждаются в надежных маркетинговых исследованиях, прежде чем предпринимать какие-либо шаги. До сих пор мы неплохо удовлетворяли их потребности, но количество заказов растет и мы будем формировать коллектив внештатных исследователей, которые по нашему заказу смогут проводить такие оплачиваемые работы.

Наш каталог.

Вышел из печати и сейчас рассылается подписчикам наш каталог игровых и прикладных программ для "Спектрума". Это получился солидный труд объемом 150 страниц, включающий более 5000 программ.

Мы высылаем его тем, кто в свое время (три месяца назад) подписался на предложенных нами условиях. Мы полагаем, что он обрадует всех и они не пожалеют о том, что перечислили средства "ИНФОРКОМу".

Для тех, кто в свое время не оформил подписку на него, сообщаем, что установлена цена в размере 45 рублей. Заказы принимаются.

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

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




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Мир звуков Спектрума - глава 3: Как получается звук (устройство BEEP'ра и способы звукоизвлечения).
Почта - Impetus Led о себе любимом.
Реклама - КУПЛЮ ПЕHТАГОH 48К.
Железо - О некоторых RND-генераторах.
Сплошные приколы - 11 приколов... Сборник высказываний советских офицеров (продолжение).

В этот день...   20 апреля