Читаем Она позади тебя полностью

Я познакомился с ZX Spectrum'ом довольно поздно, где-то в 1984/85 и сначала купил модель 48К просто, чтобы играть в игры, в частности в Manic Miner. У меня действительно вообще не было намерения программировать на этой машине, поскольку я уже работал вольнонаемным оператором больших ЭВМ и иногда разработчиком для BBC Micro. Но работа "фрилансера" подразумевает текучку, так что, когда не было работы, я имел привычку играть в игры на Спектруме, избавляясь от скуки лучше, чем-либо еще. Первый раз я попробовал закодировать что-нибудь для Спектрума, когда журнал опубликовал, как можно выполнять подпрограммы в ПЗУ вместо команд BASIC'а, используя такие вещи, как очистить экран, сделать пиксель видимым на экране, и, действительно это быстрее, чем использовать команду BASIC'a PLOT, и я подумал… Гм… Если я могу сделать это 64 раза, то смогу сделать и пиксельную графику 8*8, появляющуюся на экране где я захочу.

Я правильно подобрал сетку, работая с теми пикселями, которые нужно было устанавливать, чтобы сделать это похожим на мяч и вызывал подпрограмму PLOT из ПЗУ 64 раза через несколько простых циклов в машинном коде. Тогда это был лимит моих знаний. Вся тяжелая работа была выполнена без Ассемблера, благодаря числам, сохраненным в память командой POKE и разбирательством, как все это в целом работает. После нескольких неудач я все-таки получил свой мячик 8*8, появляющийся в любом нужном мне месте экрана. Вызывая 64 раза процедуру из ПЗУ даже из цикла в машинных кодах приводило к относительно медленной работе, поэтому я приобрел копию книги "The Complete Spectrum ROM Disassembly", чтобы посмотреть, что именно я вызывал и простой Ассемблер, работающий с кассетой, чтобы облегчить себе жизнь при кодировании, и бит за битом изучил оптимизацию кода, написанного мной. Как только я понял, я смог заменить восемь обращений к подпрограмме в ПЗУ простой командой LD (HL), n, я знал, что нахожусь на правильном пути!

Пока все это происходило, я купил копию Gilsoft's Quill Adventure System с помыслами написать адвентюрную игру, которую я бы смог продать, вероятно, как и у всех остальных, купивших такую же копию. У меня было несколько идей для игр, но решив испытать и изучить эту систему целиком, я взялся за версию старой классической Colossal Adventure от Crowther and Woods. У меня был листинг Colossal Adventure на Basic'е, который был напечатан в американском компьютерном журнале, так что описание комнат, объектов, сообщений, логика и команды были у меня перед носом и все, что мне нужно было сделать, это перенести все на Quill, что уже было намного проще.

Quill был отличной программой, но чем больше я его использовал, тем больше осознавал его ограничения, особенно в отношении Colossal Adventure с ее длинными описаниями локаций и вещей, постоянной нуждой вывода текста снова и снова, тогда как он уходил за экран. Ели бы The Quill имел бы такую возможность, как сжатие текста, раздельный скроллинг на экране и большую экранную область, вместить Colossal Adventure до заполнения лимита ОЗУ не было бы проблемой. Но он таких возможностей не имел, так что тут была только одна альтернатива — сделать все это самому.

Именно здесь я реально изучил программирование на Z80, посвящая этому недели и внимательно проходя через The Quill с помощью Romantic Robot Multiface 1 и дизассеблер, делая заметки, где я обдумывал обращение к различным подпрограммам и пытался перенаправить в мои блоки кода. Изнутри The Quill был очень аккуратным куском кода, что делало отслеживание подпрограммы очень легким и также это был очень безопасный кусок кода, обращение к подпрограммам обрабатывалось чисто, почти без затирания значений регистров, что позволило вклинить мои собственные подпрограммы довольно просто. Что действительно удивило меня, это как быстро я нашел способ делать такие вещи как: систему компрессии и декомпрессии текста, подпрограмму вывода строки в 42 символа (6 точек на пиксель), и благодаря этому я однажды осознал, что я наконец хочу сделать и как это сделать, используя код ассемблера Z80, и подставив его, что казалось самым простым способом.

В итоге я получил единый блок кода, в который я добавил около сорока команд для The Quill: внедрил сжатие текста и печать на экране в 42 символа, авто форматирование текста, сохранение и загрузку ОЗУ, звуковые подпрограммы, а базу для системы игровой графики я надеялся добавить позже. Еще я дал имя программе: The Enhancer.

Перейти на страницу:

Похожие книги

Об интеллекте
Об интеллекте

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

Джефф Хокинс , Джеф Хокинс , Сандра Блейксли , Сандра Блэйксли

Зарубежная компьютерная, околокомпьютерная литература / Технические науки / Прочая компьютерная литература / Образование и наука / Книги по IT