Важная информация
RSS лента

Счастливые Девяностые

Появление компьютера «Дубна-48К» и эпоха Spectrum (1991-1997) (часть 3)

Рейтинг: 4.33. Голосов: 6.
Еще один кусок воспоминаний, который удалось немного "обтесать" для публичного варианта. Может он покажется скучным, но раз просили, решил выложить все главы, ничего не пропуская. Сейчас смотрю на всю эту возню в детстве и волосы дыбом встают:
НУ ПОЧЕМУ Я НЕ МОГ ДОГАДАТЬСЯ ДО ТАКИХ ПРОСТЫХ ВЕЩЕЙ????
Немного смекалки, хорошей литературы, или небольшое наставление знающих людей, и сносно программировать я научился бы к окончанию школы Но если бы, да кабы...
А программистов среди родственников и знакомых не имелось. Помощи ждать не приходилось и я учился только на собственных ошибках.


Дальнейшая активность на форуме пока под вопросом, из-за острой нехватки времени.



Глава 8
«Бутэсы» и «Программы в ячейке»

Открылось второе дыхание. Я с новой силой влюбился в программирование. Чаши весов «Игры- Программирование» уравновесились. Для меня одинаково интересным стало как играть в игры, так и дальше постигать тайны программирования на языке BASIC.

После того как я освоил автостарт с помощью команды LINE, то стал активно записывать на ленту программы из других разделов, а некоторые даже сам доработал дополнительными строками. Какое-то время я любовался своими созданными программами, но потом это немного поднадоело. Захотелось двигаться дальше.

«Почти никто не записывает «профессиональные» игры в «Program», а везде используется «Bytes:»» - подумал я.

Это, наверное, очень модно и удобно! Надо бы и мне всерьез потренироваться! Плохо зная английское произношение, я прозвал такие блоки «Бутэсами».

Теперь я внимательным образом стал изучать «Главу 21». Попутно я открыл для себя небольшие преимущества команды «MERGE», которая догружала и склеивала программы без запуска, а также полную бесполезность «VERIFY».

А вот с «Бутэсами» оказалось не все так радужно. В книге рассматривалась запись «Бутэсов» с картинкой, и области UDG с собственным алфавитом в режиме курсора G. Описание самого важного типа «Bytes:», в котором обычно размещали игры, отсутствовало. Вернее:

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

Именно самый важный тип данных блока в книжке описывался сокращением «и т. д.».
«А почему трудно объяснить, как записывать «Бутэсы» с играми» - раздраженно подумал я. Складывалось впечатление, что это какая-то военная тайна. И, правда, стиль изложения последних глав книги был просто отвратительный и непонятный.

Для начала я потренировался записывать свой первый блок «Bytes:», загружающий картинку. Как его сделать, к счастью описывалось. Для этого я создал программу, которая командами «PRINT» выводила длинный цветной текст, и записал картинку командой:

SAVE””CODE 16384,6912

Загружая с магнитофона собственное творение, я слушал ритмичные «скрипы» и радовался, что моя картинка «звучит» как настоящая.

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

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

В качестве практической тренировки, я активно «вскрывал» игры и изучал, как написана BASIC часть в них. Правда не всегда эта манипуляция приносила желаемый результат. В некоторых играх попытки нажать BREAK во время загрузки блока «Bytes:», следовавшего за программой, приводили к следующим ситуациям: Компьютер заклинивало на текущем действии и кроме сброса ничего не помогало. В другом случае в ответ на «вскрытие», компьютер сам производил сброс.

В этих случаях часто помогала команда «MERGE», на которую я посмотрел с другого ракурса и оценил по достоинству. Она позволяла загрузить большинство проблемных блоков типа «Program:» из игр, которые сбрасывались или заклинивались от нажатия BREAK. Но и тут не всегда спасала «всемогущая MERGE». В некоторых случаях даже при загрузке с помощью нее, программу перекашивало.

А попадались и вовсе загадочные программы. Они вскрывались, но вместо осмысленной последовательности команд с переменными, в программе обнаруживался случайный набор команд, символов и чисел. Я предположил, что так поступают для устрашения, а где-то под слоем «помойки» обязательно лежит интересная и действующая BASIC программа.
Одной из первых и самой безобидной программой такого типа, стала «Jumping Jack». Именно в ней я впервые выделил такой прием. В результате, для обозначения такого рода программ родился еще один термин «Программа с помойкой».

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

Вскрытие блоков «Program:» совсем скоро дало положительные результаты даже там, где не ожидал. Я научился записывать буквы в нижние строки. В самоучителе информации об этом я не нашел. Там утверждалось, что оператором «PRINT» невозможно поместить изображение. А на самом деле, именно с помощью этой команды можно записать буквы в нижние строки, если после «PRINT» добавить #0. Правда, чтобы она не затерлась сообщением «OK», в конце строки приходилось ставить «PAUSE 0».

Как я успел подметить в программах, которые спокойно вскрывались, все интересное, яркое и важное все равно скрыто от глаз. Я сразу заметил, что большинство игр записывалось блоками «Bytes:». А теперь еще и выяснилось, что для перехода в чудесный мир, во всех BASIC блоках красочных программ стояло только RANDOMIZE USR с пятизначным адресом ячейки.

После этой команды и запускались игры со всем разнообразием графики. Но из бейсика они оставались невидимы. При этом в самом тексте программы ничего интересного не обнаруживалось. Именно такая невидимая конструкция программ полюбилась больше всего, и как специально об этом в самоучителе не упоминалось. А если что-то и проскакивало, то объяснялось запутанно и общими словами без конкретики Поэтому программы и игры, записанные таким образом, на «местном» жаргоне стали называться «Программы в ячейке».

В процессе изучения самоучителя по BASIC, содержимого игр, и крохам информации из других источников, об устройстве компьютера сформировалось следующее мнение:
Подобно Солнцу, вокруг которого вращаются все планеты Солнечной системы, язык BASIC – это основа на которой все завязано. Все остальное работает из под него. После сброса, компьютер возвращается в BASIC, который управляет всеми узлами компьютера, обеспечивая его работу. Команда RANDOMIZE USR это лишь маленькое окошко в невидимый яркий мир «Программ в ячейке». С помощью него можно зайти в ячейку и считать программу, после чего компьютер из «ячеечного мира» возвращается в свой привычный режим BASIC.
Если игры можно вызвать из ячейки, то значит, как-то их туда записывают.

На ближайшем «совещании программистов» я выдвинул теорию. Суть ее заключалась в следующем: должны существовать какие-то способы просмотра содержимого «Программ в ячейке», так что все данные отобразятся строками на языке BASIC. А чтобы записать «Программу в ячейку» есть какой-то хитрый метод, о котором стараются не распространяться широкому кругу пользователей.

Брат согласился с моей теорией. С этого момента начались поиски такого уникального способа записи и просмотра содержимого ячеек. Параллельно продолжалось изучение BASIC блоков все новых и новых игр.

Под «мелодии загрузки» с магнитофона собственноручно записанных блоков «Program:» на BASIC, я погружался в сладкие мечты. Я представлял счастливый момент, когда мои программы будут загружаться блоком «Bytes:», а в BASIC-части будет стоять только строчка, которая их запускает и выглядит так:

10 LOAD “”CODE: RANDOMIZE USR 40000.

При этом сами программы скрыты от глаз, как самые настоящие покупные игры! Как я хотел приблизить этот счастливейший момент!!!

Глава 9
Утренние игрушки Jumping Jack и Zolyx.

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

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

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

Так и есть, диван пустой. Мама уже ушла на работу, а папа еще не вернулся с ночной смены.
В комнату через окно проникал приятный сине-зеленый свет от ламп дворового уличного освещения. Он слабо освещал стены, оставляя на обоях узкие светлые прямоугольные пятна разной яркости и размеров. Из-за дефектов оконных стекол и деревьев, растущих на газоне, некоторые световые прямоугольники украшали яркие и темные прожилки. Эти светлые пятна с раннего детства прозвал «солнечные» или «световые трубы».

Приятную тишину в комнате нарушало только тиканье маятниковых часов на противоположной стене, слева от двери. Я внимательно всмотрелся в циферблат. Стрелки показывали 8:30.

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

Я умылся и возвратился в комнату. В это время бабушка приготовила еду, и я быстро позавтракал. На улице еще не начало светлеть, а гулять в таком состоянии мне нельзя. Может попробовать немного поиграть в игры?

Я включил настольную лампу, зацепленную подошвой за шуруп, торчащий из стены, и быстро собрал свое кресло. Через телевизор «Электроника» я включил компьютер, решив пройти игру «Jumping Jack». В этой игре человечек должен допрыгать до верха экрана по черточкам-доскам, через бегущие дырки в них. Эти дырки мне чем-то напомнили «очки» деревенских туалетов или открытые люки на асфальтированной дороге. Только в игре эти «люки» двигались, и поэтому были очень опасные. Чуть не доглядишь, и ты уже провалился и потерял жизнь.

Через пару минут в комнате тихо зазвучал из магнитофона скрип программы, которая после загрузки сразу стартовала без меню. Я увлеченно играл в игру. С каждым разом задания все усложнялись. А тем временем за окном начинало светлеть. Поняв, что пройти эту игру нереально, я быстро потерял к ней интерес.

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

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

С ужасом посмотрев на часы, я впервые пожалел о потраченном зря времени. Тут мне пришла в голову мысль: «Лучше бы вместо бесполезного прохождения игр я продолжил изучать программирование и «вскрывать» игры»…

Глава 10
Посетите Багамы – память на всю жизнь!

Январские каникулы были в самом разгаре. Я уже достаточно хорошо освоил команды графики на Бэйсике и запись картинки в область экрана. Теперь хотелось все это применить на практике. Однажды я подошел к папе и стал хвастаться, как научился работать с командами графики. Хотелось создать какой-нибудь «Бутэс» с картинкой, и чтобы при этом программа была кому-то полезна.

– А создай-ка картинку! – в шутку предложил папа
– Какую? – спросил я
– Вот тут по центру упаковка банановой жевачки – указал он пальцем в экран.
– Ага – кивнул я.
– А под ней подпись… – он на мгновение задумался
– Посетите Багамы – память на всю жизнь! – закончил папа.
– Здорово!! Обязательно сделаю!! – радостно воскликнул я.

Я стал создавать рисунок с помощью программы на Бэйсике, которая состояла из операторов «PLOT» и «DRAW». (О существовании графических редакторов, на момент создания я не знал). Для каждой строки программы, с нескольких попыток, я подбирал координаты точек экрана и длину линий. Перед тем как заканчивать работу, я записывал промежуточные результаты на магнитофон в формате BASIC программы. На следующий день, подгружал с магнитофона незаконченную программу, и продолжал работать. Программа на бэйсике с каждым разом разрасталась и становилась угрожающих размеров.

Но это не смущало. Напротив, мне очень нравилось слушать «скрипы», с помощью которых загружалась программа. К какому-то моменту я уже хорошо запомнил звучание первых строк. Я теперь уловил разницу в звучании и уже фактически безошибочно отличал по «скрипам» программы на Бейсике, от «программ в ячейке», записанных блоком «Bytes:». У последних более насыщенный и равномерный шум, чем у BASIC программ. Может быть, она строится и по какому-то другому принципу?

Теперь «слушая» программу, я различал характер загружаемых данных, которые условно разделил на три категории: «Программа на BASIC», «Картинка» и «Программа в ячейке». Под ячеечной программой подразумевалась любая игра, которая запускалась по RANDOMIZE USR. Большая часть таких программ, кроме отдельных участков, загружалась равномерным шумом.

Через две недели, когда программа была готова, я записал ее в формате картинки с помощью SAVE “banana” CODE 16384,6912. Дополнительно к картинке я написал блок «Program:», и сделал так, что сначала стартует программа, которая загружает картинку.

Все получилось как в настоящей игре, где после программы «Бутэсом» загружается картинка. Я очень гордился этой программой, потому как в ней присутствовал даже настоящий блок «Bytes:». Огорчало только то, что эта картинка и являлась главной частью программы. А в настоящих играх, после картинки шел «Bytes» с какой-нибудь игрой, которая обязательно запускался по RANDOMIZE USR…

Глава 11
Брат решает примеры

Приближалась весна 1993 года. Брат, как и я, в детский садик никогда не ходил и сидел дома. До поступления в школу оставалось меньше года. Мама решила сама позаниматься с ним, предварительно подготовив к поступлению в 1-й класс. Она хотела, чтобы он заранее научился читать и считать. Почти каждый день по вечерам, мама сидела с братом и заставляла писать слова в тетрадке.

В какой-то момент она увидела, что брат стал иногда путать буквы и писать то, чему мама явно не учила. Особенно часто путал «И» с «N», а «Я» писал как «R». А потом и вовсе стали проскакивать латинские буквы в русских словах.

– Почему ты пишешь буквы наоборот?
– Потому что на компьютере такие буквы!

Мама стала поправлять брата, и это событие как-то быстро подзабылось. А время шло своим чередом. Однажды вечером мама готовила на кухне ужин и экзаменовала брата.

– Сможешь решить пример? – спросила мама.
– Да – сказал брат.
– Сколько будет двадцать три плюс пятнадцать?
– Щас посчитаю – задумавшись на секунду ответил брат, и быстро выбежал из кухни.

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

– Ну что принес бумажку и ручку?
– Тридцать восемь!
– Уже успел посчитать? А скажи как ты считал?
– Принт двадцать три плюс пятнадцать
– Чего????
– На компьютере посчитал.

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

– Ты представляешь, я его попросила решить пример и думала, что он сосчитает в уме. А он побежал в комнату и сосчитал на компьютере – хвасталась она папе на следующий день.
– Надо же догадаться до такого в семь с половиной лет! – с гордостью в голосе продолжала мама.

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

Маминой гордости за брата не разделял только я. А чего тут догадываться то? Набрать команду PRINT с числовыми значениями и нажать ENTER. Я только подумал, что будет, если маме растолковать, что брат знает BASIC не намного хуже меня, и может составить многострочную программу в разы сложнее, чем сложение двух чисел.

Мама не учла, что компьютер сыграет такую злую шутку. В какой-то момент получилось так, что программировать на BASIC он умел лучше, чем писать рукой на русском языке и считать в уме.

Глава 12
Тайна записи в ячейку. «Обезвреживание» RANDOMIZE USR

Проходило время. В конце концов, я изучил всю книгу по Бэйсику, прилагаемую к компьютеру «Дубна», кроме единственной главы. Даже после внимательного изучения смысл нескольких последних глав я плохо понял. Из всего прочитанного я вынес только одно. Командой POKE можно записать значение в любую ячейку памяти. Если это делать в область экрана, то высветятся точки, как от команды PLOT. Во все остальные места просто запишется число, но при этом ничего не произойдет. PEEK считывает числовые значение из ячейки и выводит на экран. Но это цифры, а как туда записать буквы???

Этой небольшой главе требовалось уделить особое внимание. Изучив ее, я надеялся хоть как-то приоткрыть тайну записи букв и графики в ячейку. Она называлась:

27. ИСПОЛЬЗОВАНИЕ МАШИННЫХ КОДОВ

Из вступления уже становилось понятно, что «Ассемблер» и «Машинные Коды», это и есть что-то такое особенное, что формирует «Программы в ячейке».

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

ld bc, 99
ret


Ниже пояснялось, что эта программа должна загружать число «99» в какой-то «bc регистр».
«Наверное, это какая-то «ячеечная» переменная типа LET» - подумал я.

А далее приводился ее цифровой эквивалент из 4-х циферок: 1 , 99, 0, 201. Но прежде предлагалось некое выделение области памяти под программу. Но почему-то в книге самым большим адресом указывался 32767, а не 65535, то есть ровно в 2 раза меньший, чем в реальности. А как-же остальные ячейки?

В книжном примере предлагалось записать программу в адрес 32500. Для пробы я оставил все как есть, а если получится, то начну эксперименты с номерами ячеек 40000 и более.
То что я увидел дальше, приятно радовало глаз. Перед написанием программы предлагалось ввести команду CLEAR 32499. Этой командой пользовались в некоторых играх, перед тем, как начать загрузку «Бутэса» с «Программой в ячейке». Теперь я нашел подтверждение теории, согласно которой эта команда ставится в играх не просто так, для «модной» очистки экрана. Судя по двум схематичным картинкам, она реально что-то двигает в «ячеечной памяти» компьютера, только этого не видно из BASIC! Ниже давалась короткая вспомогательная программа для загрузки чисел в ячейки в нужной последовательности. Я радостный набрал эту программу и запустил, загрузив нужные значения по указанному адресу.

Справившись с волнением, в нижней строке я набрал PRINT USR 32500, и перед тем как ее ввести, на секунду зажмурил глаза, и только после этого нажал ENTER. Сбросит или нет?
Открыв глаза, я увидел безобидное «ОК» в нижней строке экрана, как при удачном завершении Бэйсик программы. Мало того, что не произошел сброс, так еще и выдалось число 99 в левом верхнем углу.

«Ну-ка, а если «Рандомизе» вместо «Принт» набрать что будет» - войдя в азарт подумал я.

Ха! Я радостно хлопнул в ладоши. На этот раз циферки не высветились, а просто выдалось «OK».
Я с ужасом вспоминал, сколько раз пытался набирать последовательность команд «RANDOMIZE USR» с разными значениями на пустом компьютере. Все время происходил сброс или экран замирал. После многократных неудач я уже стал побаиваться этой комбинации команд и старательно ее обходил.

Я поэкспериментировал с разными величинами и понял, что с помощью такой программы можно записывать числа в ячейку от 0 до 65535, запуская и высвечивая данные через PRINT USR 32500. После этого я попробовал записать программу в свой любимый адрес 40000. Там тоже все нормально работало. Значит какая-то досадная ошибка в книге.

Опытным путем я сделал еще одно очень важное открытие. Чтобы «Обезвредить RANDOMIZE USR», на голом компьютере достаточно в нужную ячейку записать число «201». И набрав «заветную комбинацию» компьютер не перезагрузится, и выдаст «ОК». Таким образом, с помощью числа «201» можно просто сходить до «двери в волшебный ячеечный мир» и невредимым вернуться обратно. Дальше говорилось, как записать эту программу на кассету:

SAVE”…”CODE 32500, 4

Тут я окончательно осознал, что созданная программа и есть тот самый заветный «Бутэс» с «Программой в ячейке», только очень короткий с записью циферок! А то, что я увидел ниже, вызвало бурю ликования:

«Можно записать так, что программа будет автоматически выполняться после загрузки…»

В книжке объяснялось, как сделать двухблоковую программу, на основе этой микро «Программы в ячейке». Еще пара минут экспериментов по упрощению, и я полностью догнал, как сделать миниатюрную программу мечты, которая будет загружаться в мой любимый адрес. В предвкушении этого важного события, я нажал кнопку «СБРОС», ввел «Программу в ячейку», создал вспомогательную BASIC-программу и записал на ленту…

Пи-и-и-и-и-Тшу!, Пи-и-и-Тшу-шу-шу-шу-шу-шу… – выскочил заголовок «Program:» и загрузилась короткая BASIC программа.
А тем временем, рамка бодро мигала в ожидании следующего блока:

Пи-и-и-и-и-Тшу!, Пи-и-и-Тшу-шу. При этих звуках, через строчку от первого выскочил заголовок «Bytes:». А следом очень короткое «4-х байтное шуршание» моей первой в жизни настоящей «Программы в ячейке».

После загрузки компьютер высветил число 65535 на экран, а в нижней строке выдалось OK. Я повторно набрал PRINT USR 40000 и полюбовался выскочившим числом. Взгляд приятно радовал мой BASIC-блок, состоящий из строки:

1 LOAD””CODE: PRINT USR 40000

Почти сбылась моя мечта относительно конструкции! Все как по заказу. Программа загружается в ячейку и невидима из BASIC, но при этом работает! Я очищал компьютер, и загружал созданную программу снова и снова. К сожалению, нормально насладится звучанием, не удавалось из-за ее микроскопической длины. Передо мной миниатюрная модель реальной «промышленной» игры.

И все-таки оставалось какое-то чувство незавершенности, которое создавало дискомфорт. Почему опять такой идиотизм??? Ну привели бы пример, с записыванием в ячейку хотя-бы буквы «А». Тогда по аналогии можно будет создавать тексты, выдаваемые по RANDOMIZE USR. Что опять жалко поделится секретными знаниями??? Вот нахрена мне запись этих чисел в ячейку? Как эту программу применить на практике??? Я чувствовал раздражение и легкую злость на авторов книги. Мало того, что последние главы простым языком объяснить не могут начинающим, так еще и тайны какие-то устраивают!

Проходили недели, которые складывались в месяцы. Теперь стоило мне увидеть в программе RANDOMIZE USR, как перед глазами всплывала одна и та же навязчивая картина: Я набираю RANDOMIZE USR 40000, а в левом верхнем углу экрана вместо числа «99» выдается синяя или красная буква «А»…

Измучившись поисками способов «записи букв в ячейку», я зверски насиловал компьютер разной белибердой. Что я только не перепробовал. И «POKE USR “А”», и просто «POKE 40000, А», и много чего еще. Время от времени все варианты перебирались по кругу, но ничего не получалось. Записывались только цифры и все. Буквы упорно отказывались записываться в ячейку. Я начал отчаиваться.

Делая школьные домашние задания, я часто ловил себя на том, что сижу перед открытыми тетрадками, а мысленно летаю в далеком будущем. Там моя собственная программа загружается блоком «Program:» в котором стоит только LOAD ””CODE и RANDOMIZE USR 40000. Следом за ней пойдет загружаться не очень длинный «Bytes:», который из Бэйсика будет не виден. После запуска моя программа выведет кучу всяких цветных буковок на экран. В процессе выполнения сама программа будет «невскрываемая», как все нормальные «ячеечные программы». Ее нельзя будет вскрыть с помощью одновременного нажатия комбинации клавиш «BREAK + CAPS SHIFT».

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

Вместо ответов, я получал все новые и новые загадки с разными типами защит, «помоек» и прочих хитростей. Иногда находились разгадки, но только на маленькие хитрости, в то время как на самый главный и больной вопрос я ответа так и не находил.

Я по-прежнему верил, что Бэйсик это основное состояние компьютера, а машинные коды это дополнительное состояние. Выйти в BASIC, в переносном смысле для меня означало возвратиться домой, или почувствовать себя в безопасности.

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

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

Из BASIC-хитростей больше всего понравилась нулевая строка. О том, как создать такую строку, в книжке также позорно отмалчивались. Несмотря на это, во многих программах строки с номером «0» часто использовались. Такую строку не «взять», не отредактировать и не создать обычным способом. Но ведь она висит на экране и чем-то сделана!
На тот момент, самой крутой моей программой стала доработка «Угадай число» написанная на Бэйсике. При числе больше загаданного выдавалась красная, при меньшем зеленая, а при правильном желтая надпись.

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

– Я хочу научиться программировать и создавать свои игры!

Глава 13
Dlan 48K и Zeus

Прислушавшись к моим просьбам найти хоть какую-то литературу по программированию, папа купил желтую книжку-сборник «BASIC FOR ZX-SPECTRUM», Санкт-Петербургского издательско-полиграфического комплекса «Вести». Помимо обычного BASIC в первой части, описывались BETA BASIC, LASER BASIC и MEGA BASIC.

В дополнение к книге, он купил кассету с «техническими» программами. Сперва я очень обрадовался, но прежде чем читать, решил ознакомиться с содержимым кассеты. Бегло почитав названия, я обнаружил LASER BASIC, который описывался в середине книги. Остальные названия мне вообще ни о чем не говорили. Вернувшись из школы, я приступил к практическому изучению программ.

На предмет BASIC блоков эти программы оказались просто бесценными. Сразу впечатлила программа «Dlan 48k». Уже сам процесс загрузки меня вдохновлял. Блок «Program:» грузился очень долго. Судя по «музыке», он состоял из текста или какой-то длинной BASIC программы. Это очень радовало, потому что будет много интересной «пищи для ума» из BASIC строк.

После запуска программа, демонстрировала разные шрифты, эффекты и рамочки. На предмет вскрытия «стандартным способом» она не поддалась. По окончании демонстрации выдалась подсказка, что программу можно остановить клавишей Х в любой момент. Я был приятно удивлен, обнаружив объемную BASIC программу. Но весь текст, который красочно выводится на экран, размещен в BASIC строках после команды REM. Кроме текста имелись какие-то непонятные наборы из букв и цифр. Запускается программа по любимому и таинственному «RANDOMIZE USR».

Я сначала подумал, может REM это просто для показа, что записано в ячейке. Не может такого быть, чтобы после этих «Ремов» компьютер чувствовал данные, а тем более из ячейки! Это просто декоративная подсказка. Это какой-то прикол, но все равно для подстраховки стоит попробовать поменять текст и успокоится. Я изменил текст в первых нескольких строках, и запустил программу.

На экране, с красочными эффектами, замелькал мой текст! Не может быть! «Программа в ячейке» чувствует строки Бэйсика, и выбирает буквы, размер шрифта и другие параметры для мультипликации, именно отсюда. Значит можно создать свой текст вместо этого. И совсем не бесполезный текст после REM, а очень важный! А если сюда добавить русский алфавит???

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

Кроме Dlan’а на кассете имелось много разных программ, назначение которых, я не знал. Запомнилась еще одна непонятная программа «Zeus», которую я сразу прозвал «Зевс». После загрузки и запуска экран стал синим, а сверху висели всего две белые строчки:

ZEUS Z80 ASSEMBLER
© 1983 Crystal Computing


Под надписью мигал курсор, состоящий из нижнего подчеркивания. Знакомое слово. Так это возможно и есть тот ключик, которым можно как-то и чего-то создать в «ячейке». Но только как?

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

Комментарии

  1. Аватар для helcril
    Спасибо! Как всегда прочитал с большим интересом.
  2. Аватар для hippiman
    Очень интересно читается! Спасибо. Жду продолжения

Трекбэков