Изменить стиль страницы

Написал две игры. Сценарии позаимствовал. Одну видел на японском

ПК и СМ-1420 и решил посмотреть, как решается такая задача. В моем распоряжении алфавитно-цифровой дисплей, графических пока нет. Игра такая. По полю ползает управляемая клавиатурой букашка, и случайно скачут три шарика. Задача в том, чтобы, отрезая куски поля букашкой, захватить постепенно все. Столкновение с шариком – потеря попытки.

Захваченная букашкой территория окрашивается в другой цвет. В момент движения по не захваченной территории за букашкой тянется след.

Попадание шарика в след – потеря попытки. За тремя шариками усмотреть тяжело и игрок пытается разделить их и заключить в отдельные камеры.

Игра работает на аппарате, называемом программатор. У него, в отличие от СМ-1800 нет отладочной панели, с помощью которой можно остановить программу на нужном адресе, пройти по шагам участок, посмотреть содержимое ячеек памяти и регистров процессора. На программаторе нет даже кнопки резет, только тумблер включить – выключить. В качестве операционной системы у него -

'монитор-отладчик', который позволяет писать в ячейки памяти шестнадцатеричные коды. Никакого ассемблера или ПЛМ тоже нет.

Вторая игра – сбивание самолетов, вылетающих справа-слева случайно, на случайной высоте. Случайность задается генератором случайных чисел. Внизу экрана пушка, перемещается клавишами-стрелками вперед-назад, пробел – выстрел. Самолеты несут бомбы, от которых пушка должна уворачиваться. Летящие навстречу на одной высоте самолеты разбиваются вдребезги. Осколки разлетаются под случайными углами и с разной скоростью, очень натурально. Фюзеляж, крылья, бомбы и пушка – все сделано из символов и букв. Разбиваются самолеты как при попадании из пушки, так и от случайного осколка сбитого самолета. Сделал заставку с названием и музыкальным сопровождением. Порт зуммера известен, известны коды для включения, выключения звука и варьирования частотой. Подобрал на слух семь нот, закрепил каждую за клавишей и наиграл мелодию. Оказывается, чтобы получилась реальная мелодия, у нот должна быть нужная длительность, и паузы тоже должны иметь определенную длительность. С мелодией получилось, но мощности процессора не хватило, чтобы одновременно шли титры и мелодия.

Работает у нас в бюро Шурка, лаборант. Лет тридцати трех. Шурка строгий, он ругается в столовой с раздатчицами и соседями по очереди

– 'коммунисты проклятые'.

Однажды как-то само собой мы разыграли его.

Комната, где сидит наше бюро совсем маленькая – шесть кульманов.

После обеда вчетвером собрались у михалычева кульмана, болтаем, шутим. Михалыч – веселый еврей, ведущий конструктор. Он лет на десять старше нас, дома двое детей, но общаемся мы легко. На соседнем, свободном кульмане висит шурин чертеж. Шура этой осенью поступил на вечерний, кажется в МИФИ. И получил задание начертить несложную деталь в трех проекциях. Рабочее место Шурки в лаборатории, а к нам он иногда заходит почертить. Зашел разговор про его чертеж.

– Он уже три недели чертит его. Слово за слово и работа закипела.

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

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

– Саш, тебе еще нужен твой чертеж?

– Нужен, а что?

– Да так, ничего.

Сергей вернулся в отдел. Вскоре заходит Шура. Посмотрел на огрызок, узнал знакомую деталь со следом ботинка и стал орать.

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

– Да ладно, я сразу догадался.

В лаборатории у входа шкафчик для одежды. Дверца приоткрыта, висит

Шурино пальто.

– А интересно, сколько стоит такое пальто?

– Рублей сто сорок.

– Давайте скинемся, купим такое же, оторвем рукав и повесим?

– Не надо.

– Почему?

– У Шуры 300-ватный паяльник.

Легко подключать стандартные устройства – дисплеи или принтеры.

Платы контроллеров с параллельным и последовательным интерфейсом у нас уже есть, остается просто изготовить кабель. Но есть и интересные задачи. Например, подключить к СМ-1800 программатор микросхем ППЗУ. Программатор это большой ящик, который предназначен, прежде всего, для ручного ввода программируемых данных. Правда есть разъем для приема данных, с определенным протоколом. Ручной ввод очень труден – две тысячи шестнадцатеричных кодов. На это уходит много времени, контроль неудобен – дисплей в одну строку, малейшая неточность в цифре и программа не будет работать. Прервать ввод нельзя – после выключения питания данные не сохраняются. Как хорошо было бы подключить его к нашей СМ-1800 и закачивать данные готовыми блоками. На СМ-1800 данные можно хранить и редактировать. Но СМ-1800 знать не хочет этот программатор. Нет таких сундуков в списке ее устройств. Вдруг нашел сходство протокола программатора с протоколом перфоленты для СМ-1800. Теперь нужно сделать кабель и заменить разъем на программаторе – таких давно не выпускают. Остается только передать данные на вход стандартной программе, которая подготовит их в формате перфоленты и передаст на программатор.

Стираются данные в микросхемах ультрафиолетовыми лампами, установленными на программаторе, за пару часов. У микросхем ППЗУ есть маленькое окошко, через которое виден малютка чип и тончайшие волоски проводников.

Появилась динамическая оперативная память. Она на порядок более емкая, чем статическая. Статическая – 1 Кбайт на 1, а динамическая

16 Кбайт на 1. И быстродействие приемлемое. Но плату динамической памяти просто так не отладишь. Раньше мы набирали тумблерами адрес и байт данных, писали его в ячейку, а затем устанавливали строб чтения и смотрели что в ней. Теперь это невозможно. В динамической памяти данные требует постоянной регенерации через миллисекунды, иначе они пропадут. В статической памяти ячейка хранения – триггер, а в динамической – конденсатор. Регенерация – это пробег по всем адресам, с чтением содержимого и перезаписью его. Поэтому мы не можем выставить адрес на шине, когда на ней мелькают другие.

Нас четверых: Виктора, меня, Сергея и Игоря направили от отдела на месячные микропроцессорные курсы. Занятия два раза в неделю, в двухэтажном уютном особняке во дворах Метростроевской улицы. Начало с десяти утра до четырех. Меня это особенно устраивает: от дома до особняка две остановки на метро или пять на 31-м троллейбусе.

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

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

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

На третьем занятии нашу группу завели в специальный класс с шестнадцатью мониторами. В соседней комнате стоит сервер. А мониторы

– суть терминалы пользователей. Мы должны набрать простейшую программу на ассемблере, десятка три строчек, откомпилировать ее и распечатать. Администратор сказал, что теперь мы юзеры и что после включения монитора, в ответ на юзер следует ввести слово, написанное мелом на мониторе: юзер1; юзер2;…юзер16. А в ответ на пароль просто нажать 'ентер'.