Введение
Когда-то в далекие 90-е, а может и ранее, многим из нас доводилось читать русскую литературу по ZX-Spectrum. Это были всевозможные справочники по системным программам, описание игр, описание железа и многое другое. Авторы этих книг часто в предисловии рассказывали немного о истории ZX-Spectrum. Обычно там говорилось о его создателе К. Синклере, о цене компьютера, которая составляла около 100 фунтов, а также перечислялся весь модельный ряд (ZX-Spectrum, ZX-Spectrum+, ZX-Spectrum+2, ZX-Spectrum+2A, ZX-Spectrum+2B и ZX-Spectrum+3) с описанием технических характеристик. Не знаю как у многих, а у меня описание этих моделей вызывало некоторое недоумение. Думаю многие из нас в те годы, кто не имел непосредственного отношения к клонированию ZX-Spectrum в России полагали что то, что у них есть в их «ящиках» со встроенным дисководом, на которых иногда даже была надпись «ZX-Spectrum», и есть настоящий ZX-Spectrum. Я лично не застал Эру магнитофонных вариантов с консольным исполнением в виде небольшой или даже большой клавиатуры, но полагаю, что даже при наличии всяких надписей на корпусе отличных от ZX-Spectrum восприятие было таким же. В литературе по железу часто ходили названия: «Ленинград», «Пентагон», «Москва», как-то смутно напрашивалось объяснение происхождения этих самодельных компьютеров, особенно когда встречались названия городов. Но тут обычно вмешивалось название «Пентагон», и путало все карты, так как оно казалось чем-то ультрамодным и иностранным. Однако по прошествию некоторого времени, когда каждый из нас обзаводился все большим количеством литературы, становилось понятно, о чем идет речь, и откуда берутся все эти разнообразные названия.
Обратив внимание в литературе на описание фирменных моделей ZX-Spectrum, многие из нас с горечью осознавали, что в России распространены всего лишь русские подделки настоящего Спектрума. О настоящем Спектруме оставалось только мечтать. Никаких картинок, фото настоящего Спектрума в литературе практически не встречалось, только описание. После долгой бравады о Синклере авторы обычно слезно начинали писать о крахе его компании, а потом заканчивали на мажорной/минорной ноте о моделях ZX-Spectrum+2 и ZX-Spectrum+3, которые уже выпускала другая фирма Amstrad.
Недавно автор (ваш покорный слуга) наткнулся на международный интернет аукцион eBay, на котором в большом разнообразии представлены фирменные модели Спектрума, в том числе ZX-Spectrum+2 и ZX-Spectrum+3. Загорелся этой идеей и приобрел ZX-Spectrum+3. После того, как я подержал в руках ZX-Spectrum+3 у меня возникло некоторое разочарование. Нет, я, конечно, видел его перед покупкой на фото, но в руках это несколько другое. Я думаю это связано с тем, что современная компьютерная техника уже ушла слишком далеко, и мое восприятие просто сразу не успело перестроиться. Со временем все встало на свои места. Однако помимо эстетического восприятия возникли также и технические проблемы, которые несколько омрачили мои первоначальные ожидания. Но, как и в первом случае, через некоторое время стало понятно, что и они преодолимы, причем процесс их преодоления приносит еще больше удовольствия, чем просто нормальное использование.
Одной и самой главной технической проблемой стало наличие у ZX-Spectrum+3 другой дисковой операционной системы, отличной от той, что использовалась в России. Как многим известно, у нас была распространена, причем монопольно, система TR-DOS, а в ZX-Spectrum+3 используется неизвестная +3DOS. Кроме того, дисковод у ZX-Spectrum+3 оказался тоже нестандартный, вместо ожидаемого 3,5’ – 3’.
Электрически подключить дисковод 3,5’ не составляет труда подробное описание этой проблемы и ряда других можно найти здесь.
Несмотря на то, что корпус ZX-Spectrum+3 не позволяет штатно встроить в него дисковод 3,5’, я нашел несколько конструктивных решений. При небольших доработках корпуса самого дисковода и использовании некоторых дополнительных деталей можно встроить дисковод 3,5’ без каких-либо изменений (порчи) фирменного корпуса ZX-Spectrum+3, причем все будет выглядеть красиво и аккуратно, как заводской вариант. Но эта задача заслуживает отдельного рассмотрения и будет описана в другом разделе.
Как видно из названия этот раздел посвящен адаптации программ к системе +3DOS. Очевидно, что без решения этой проблемы ZX-Spectrum+3 не сможет получить в России вторую жизнь! Конечно, на WOS имеется архив образов дисков +3, но как их перевести на реальные дискеты неизвестно, я по крайней мере не нашел ни одной утилиты, которая бы это делала. Все утилиты, в основном, делаю обратную операцию, которая понятно не представляет для нашего случая никакого интереса.* Кроме того, имеющийся софт на +3 образах (dsk) не актуален на сегодняшний день, так как это, в основном, игры, которые неизвестны российскому пользователю. Возможно, там и есть что-то такое, что в те далекие времена могло бы заинтересовать, но сегодня проникнутся старыми неизвестными, неполюбившимися игрушками крайне сложно. Это ставит всю затею об использовании ZX-Spectrum+3 под сомнение. На образах +3 дисков встречаются (в небольшом количестве) и известные игры, однако их перенос на реальные диски осложнен применением в них фирменных защит. Описание взлома этих защит в литературе отсутствует. Поэтому, очевидно, напрашивается перенос софта из образов TR-DOS или кассет, где игры, во-первых, могут быть незащищены, а во-вторых многие защиты хорошо описаны в русской литературе, например, книга Родионова «Адаптация программ к системе TR-DOS» или книга «Тайники ZX-Spectrum». Кто читал эти книги согласится со мной, что тот путь, который там предложен во многом может быть распространен и на перенос игр из TR-DOS или кассет в систему +3DOS.
Чтобы окончательно убедить читателя в целесообразности развития платформы, а значит и в необходимости решения поставленной задачи, я перечислю еще несколько неоспоримых достоинств ZX-Spectrum+3 и аспектов его актуальности для андеграунда.
Основным достоинством является фирменное исполнение, то есть возможность пользоваться реальной, настоящей, официальной версией Спектрума. В ситуации андеграунда это усиливается такими посылами, как: раритет, ностальгия, мечты детства, то есть все те аспекты, на которых держится сам андеграунд. Эта модель в отличие от других фирменных моделей обладает необходимыми для разумных андеграудных пользователей техническими параметрами: 128к, музыкальный сопроцессор, поддержка дисковода, RGB выход, порты джойстика, качественный БП, системный разъем, порт принтера и многое другое, при этом качество исполнения достаточно высокое по сравнению даже с другими платформами, не говоря уже о Синклеровских моделях Спектрума. Это и отличная клавиатура, несомненно, лучшая, чем у других фирменных моделей Спектрума или их клонов, отличное качество печатной платы (лично проверял при экспериментах, хорошо паяется и не рвется металлизация даже после многократной перепайки деталей), заводской монтаж, наличие ULA и импортные радиодетали.
Интегрированная DOS в OS. Импортные аналоги DOS, а также прижившаяся в отечестве TR-DOS были больше надстройками над OS чем самими OS с поддержкой дисковода со всеми вытекающими последствиями. Это на первый взгляд может показаться пустяком, так как все уже привыкли к выкрутасам TR-DOS, но поверьте, стоит только немножко поработать с +3DOS, и вы станете ее безоговорочным поклонником. Эта дисковая система со стороны очень сильно напоминает MS-DOS. Поддержка расширения файлов, вывод информации об объеме файла в Кб, а не в секторах, как у TR-DOS, отсутствие упаковки диска, так как файлы пишутся в любое свободное место, вывод файлов в каталоге по алфавиту, что при разумной организации имен позволяет легко объединять файлы одной программ и не мучится вопросом, когда и после какого файла пишется тот или иной. Использование «*» позволяет работать с группой файлов или файлами одной программы, удалять, копировать, переносить на другой диск без использования менеджера, делая это через бейсик. При этом операторы в бейсике не сопровождаются дополнительными синтаксическими надстройками RANDOMIZE USR и т.п., регистр в именах файлов не имеет значения.
В целом эта модель способна удовлетворить любителей наиболее успешных моделей 128К и его клона Пентагон128. По сути, ZX-Spectrum+3 является более удачной, качественной версией этих моделей. Главное достоинство ZX-Spectrum+3, отличающее его от дисковой версии Пентагона128 – это наличие заводского консольного корпуса. В реалиях андеграунда установить в квартире ящик или даже корпус от PC непросто. Я знаю многих людей, которые стесняются даже приличного HighTower у себя дома, так как он портит интерьер, занимает место, а тем более при использовании современного телевизора вообще непонятно к какому боку его прислонять. ZX-Spectrum+3 в отличие от этих «ящиков» можно спокойно спрятать в тумбочке или в шкафу, так что никто не будет даже знать о вашем шизофреническом увлечении… Наличие PC клавиатуры, также сводит на нет андеграундные настроения, так как приближает Спектрум к PC. Пентагон128, облаченный в клоновские консольные корпуса, если такие сейчас можно найти, также проиграет хотя бы по качеству клавиатуры, да и выносной дисковод не сделает ему чести! Что касается фирменного 128к, то там все ясно, плохая клавиатура, отсутствие DOS и дисковода, Синклеровское качество, хотя оно, возможно, и, скорее всего, лучше, чем у клонов…
А что же недостатки? В чем проигрывает ZX-Spectrum+3 другим моделям? Первое что следует отметить, необходимость адаптации софта. Однако это практически единственный существенный аргумент против ZX-Spectrum+3, поэтому решению проблемы адаптации программ к +3DOS и посвящен этот раздел. Как будет показано далее, эта проблема вполне решаемая и не так страшна, как может показаться со стороны. К другим недостаткам можно отнести ошибки в ПЗУ, которые частично решены в новых версиях прошивок, (см. ссылку выше), а те которые не решены можно обойти простым и красивым способом. Также следует отметить немалую стоимость ZX-Spectrum+3. Купить себе его может только взрослый человек, так как это связано с покупкой по международной карте, регистрацией на интернет аукционе, в платежной системе PayPal и множеством других проблем. Однако следует также отметить, что большинство андеграундистов – это люди в возрасте 25-40 лет, многие из них при желании вполне способны преодолеть этот барьер и, возможно, даже получат удовольствие от процесса покупки таким способом. По крайней мере, этот опыт не пройдет бесследно и может понадобиться в жизни для других целей.
Если я Вас убедил в актуальности идеи или Вам просто стало интересно, то предлагаю перейти к основной части.
Выбор источника для переноса программ в систему +3DOS
Как отмечалось во введении, из-за применения защиты от копирования целесообразно переносить софт на реальные диски +3DOS не с образов фирменных дискет (dsk), а с образов кассет (tap, tzx) или образов TR-DOS (trd, scl). Однако и на этих образах программы могут быть серьезно защищены. Если вы пользователь Спектрума со стажем, плюс профессиональный программист, вы скорее посмеетесь над автором, так как большинство из применяемых защит, когда-то в далекие детские годы было вами преодолено, а возможно даже некоторые из них были написаны при вашем участии. Если это так, то можете смело переходить к рассмотрению следующих вопросов этого раздела. Для остальных рекомендую использовать местные коллекции, которые в нашей стране накоплены в большом количестве. Практически в каждом городе была своя коллекция софта под Спектрум. При чем многие программы были взломаны для облегчения их копирования или при переносе с кассеты на диск. Поэтому главным источником для переноса софта являются образы scl и trd местных коллекций. Я вспоминаю коллекцию своего города, на ней практически 80% игр было со взломанным загрузчиком. Однако эта коллекция была безвозвратно утрачена и мне в своих изысканиях пришлось обратиться к коллекции из Волгодонска, московской коллекции Алексея Дупанова, а также к коллекциям на сайте TR-DOS и WOS.
Конечно сунувшись в первую попавшуюся коллекцию и выбрав из нее первую попавшуюся версию необходимой для вас игры, вы, скорее всего, столкнетесь с тем, что загрузчик ее все же защищен. Не отчаивайтесь, нужно просто поискать лучше и найти хотя бы 3-4 версии этой игры порыскав по всем доступным вам коллекциям. Я уверен, что вы найдете хотя бы одну, которая если и защищена, то не сильно и книги «Тайники ZX-Spectrum» вам хватит, чтобы ее преодолеть.
Написание загрузчика для +3DOS
После снятия защиты вам необходимо создать новый загрузчик программы на реальном диске +3DOS. Но я все же рекомендую работать сначала с образами dsk, используя при этом какой-нибудь из известных эмуляторов, например, RealSpectrum. Забегая вперед, скажу, что вам все равно, скорее всего, придется при переброске на реальный диск воспользоваться услугами образа dsk, плюс необходимо хранить на PC адаптированные версии программ, что удобно делать именно на dsk. А для начинающих я вообще порекомендую вначале заставить игрушку работать в системе TR-DOS с написанным вами с нуля загрузчиком. Это позволит психологически оторваться от +3DOS и не кивать в случае неудач на эту систему. Опыт показал, что если программа пошла у вас в TR-DOS, то и в +3DOS она будет работать с большой степенью вероятности. Таким образом, после написания нового загрузчика в TR-DOS перенос игры в систему +3DOS будет всего лишь делом техники!
Рассмотрим несколько примеров написания загрузчика.
С чего начать? Ну конечно, какой же Спектрум без игры ELITE?
В поисках подходящей версии для переноса я перерыл несколько архивов и уже было отчаялся, но вдруг на WOS нашел образ tzx с какой-то версией под 128к. Загрузчик оказался незащищенный!
Вот его листинг:
5 SAVE “ELITE” LINE 10
10 CLEAR 65535
15 BORDER 0: PAPER 0: INK 7: CLS
20 LOAD “” CODE: PRINT AT 20,0: LOAD “” CODE
30 RANDOMIZE USR 28672
Давайте разберем его построчно. Кто читал книгу Родионова, наверняка уже догадался, что это простейший классический загрузчик. По первой строке, которая имеет номер 5 нетрудно догадаться, что здесь уже кто-то серьезно поработал и практически все сделал за нас! Очевидно, что первая строка сделана для страховки. Видимо опыт автора, написавшего этот загрузчик, подсказал ему это ход. Во-первых, после запуска в случае неудачи компьютер может уйти в ресет, а во-вторых, в случае успеха вернутся назад в бейсик будет невозможно, поэтому написанный загрузчик безвозвратно исчезнет. Во избежание этого, в первой строке под номером 5 загрузчик сам себя предварительно сохраняет с автозапуском со строки под номером 10.
В следующих строках 10 и 15 задается RAMTOP и атрибуты экрана. Честно скажу, я так и не понял, почему значение RAMTOP=65535. Я в начале не обратил на это внимание и задавал низкий RAMTOP исходя из адреса, в который грузится кодовый блок. При этом после загрузки портился шрифт, некоторые буквы затирались, и в место них печаталась всякая «бяка». Возможно, генератор шрифта находится в начале или конце кодового блока, что при неправильной организации памяти приводит к его частичной порче.
Вторым неразрешимым вопросом оказалась надпись на заставке – 128к, я так и не понял, чем эта версия отличается от 48к, так как по объему игра не превышает 48к и грузится в основную страницу. Возможно, это как-то связано с RAMTOP=65535, если вы сможете найти ответы на эти вопросы хорошо, но в любом случае на решении поставленной задачи это никак не отразится. В строке под номер 20 последовательно классическим образом грузятся два блока, первый – заставка и второй – кодовый. Оператор PRINT AT 20,0 по всей видимости предназначен для установки позиции печати имени последнего кодового файла. На сколько это необходимо, трудно сказать, автору загрузчика было виднее.
Далее чтобы посмотреть адреса загрузки этих кодовых файлов можно воспользоваться простой командой +3DOS:
Cat “t:”
При этом на экран будет выведено следующее:
“ELITE ” LINE 10 (BASIC)
“a ” CODE 32768,6912
“elite ” CODE 24648,40801
Этой информации наряду с RANDOMIZE USR 28672 вполне достаточно для написания загрузчика и дальнейшего копирования файлов на образ диска. Ранее отмечалось, что для новичка целесообразнее заставить работать игру с вновь написанным загрузчиком вначале в TR-DOS. Напишем загрузчик для этой системы:
10 CLEAR 65535
20 BORDER 0: PAPER 0
30 RANDOMIZE USR 15619: REM: LOAD “elitescr” SCREEN$
40 RANDOMIZE USR 15619: REM: LOAD “elitedat” CODE
50 RANDOMIZE USR 28672
Из листинга видно, что загрузчик отличается, главным образом, введением имен файлов, о которых будет подробно рассказано ниже, и добавлением дополнительной синтаксической надстройки RANDOMIZE USR 15619: REM, необходимой для инициализации системы TR-DOS. Далее если, как в нашем случае, файлы находились на образе tzx или tap перекидываем их на образ trd, сохраняем там же написанный загрузчик и запускаем его. О чудо все работает!!! Путь к системе +3DOS открыт! Теперь необходимо всего лишь перебросить файлы с образа trd или исходного tzx на образ dsk и модифицировать написанный для TR-DOS загрузчик.
Вот как это делается:
10 CLEAR 65535
20 BORDER 0: PAPER 0
30 LOAD “elite.scr” SCREEN$
40 LOAD “elite.dat” CODE
50 RANDOMIZE USR 28672
Да, да! Вы правы, нет ничего проще! В листинге исчезли только эти неуклюжие синтаксические надстройки RANDOMIZE USR 15619: REM. По ходу моего повествования вы наверное все больше и больше убеждаетесь, что нет ничего страшного и опасного в системе +3DOS, а даже наоборот она вполне даже дружелюбна к пользователю!
Следует также отметить об изменении имен файлов. Вместо “elitescr” и “elitedat” появились “elite.scr” и “elite.dat”, то есть были введены расширения файлов, которые поддерживает +3DOS. Очень трудно было удержаться от использования этой положительной особенности +3DOS, тем более мы все к этому привыкли по опыту работы с MS-DOS. Более подробно о введении расширения будет сказано ниже.
Теперь рассмотрим второй показательный случай, когда игра расположена непосредственно на образе TR-DOS диска. Для примера я возьму игру Total Eclipse2 из коллекции Алексея Дупанова диск №60.
Листинг исходного загрузчика в TR-DOS следующий:
10 BORDER VAL “0”: PAPER VAL “0”: CLEAR VAL “24499”
20 RANDOMIZE USR VAL “15619”: REM: LOAD “to1” CODE 4e4
30 RANDOMIZE USR 4e4
40 RANDOMIZE USR VAL “15619”: REM: LOAD “to2” CODE
50 RANDOMIZE USR VAL “15619”: REM: LOAD “to3” CODE 6e4
70 DRAW USR 6e6, USR VAL “24500”, USR VAL”27228”
Несмотря на то, что загрузчик фактически незащищен, в отличии от кассетной версии он достаточно непросто читается. Однако многим известно, что это связано с проблемой RAMTOPа, о которой так хорошо в свое время рассказал Родионов. Кто об этом ничего не слышал, вкратце расскажу несколько необходимых для понимания и чтения листинга загрузчика моментов. Дело в том, что в системе TR-DOS загрузчик раздувается до неприличных размеров из-за введения неуклюжих синтаксических надстроек RANDOMIZE USR 15619: REM, поэтому области памяти, выделяемой под программу загрузчика на бейсике, становится недостаточно. Её, конечно, можно увеличить задав больший адрес в RAMTOPа оператором CLEAR. Однако, как правило, это сделать невозможно, так как кодовый файл обычно грузится в память сразу за бейсик загрузчиком. Понятно, что в силу малого объема оперативной памяти Спектрума производители игр практически не оставляли никаких свободных мест. Поэтому при переходе от кассетной версии к дисковой помимо модификации загрузчика, горе адаптёры, как правило, изощрялись и ухищрялись всевозможными способами, чтобы сэкономить эту несчастную память. Отсюда появляются всевозможные операторы VAL, которые, несмотря, на увеличение длины в текстовом виде, позволяют несколько сократить объем бейсик строки за счет представления чисел в символьной форме. Появление непонятных 4е4 и 6е4 связано с аналогичной экономией памяти, но за счет уже представления числа в экспоненциальной форме, то есть 4e4 и 6e4 есть ничто иное, как 40000 и 60000. Экономия памяти и в символьной и в кодовой части строки бейсика очевидна. Таким образом, исходный загрузчик можно отчистить от всех этих выкрутасов и представить в удобной для понимания виде:
10 BORDER 0: PAPER 0: CLEAR 24499
20 RANDOMIZE USR 15619: REM: LOAD “to1” CODE 40000
30 RANDOMIZE USR 40000
40 RANDOMIZE USR 15619: REM: LOAD “to2” CODE
50 RANDOMIZE USR 15619: REM: LOAD “to3” CODE 60000
70 DRAW USR 60000, USR 24500, USR 27228
После запуска такого загрузчика получаем вполне ожидаемый результат – сообщение «4 out of memory», так как зачем бы автору изгаляться, если бы проблема RAMTOPа для этой программы не существовала?
Но нас эта надпись не должна смущать, так как это проблема TR-DOS. Для нас важно разобраться, что и как грузится и убедиться, что в загрузчике нет никаких подводных камней и прочих неожиданностей. Для этого, воспользовавшись операторам STOP, внедряя его между характерными строками загрузчика пошагово проверяем, как и что загружается. Например, добавляем строку 25 STOP. Запускаем, загружается файл to1 и выводится сообщение Ok. Затем просто без номера строки вводим RANDOMIZE USR 40000 и наблюдаем появления заставки с «сортирной» отметкой Алексея Дупанова. Становится ясно, что to1 – это заставка, которая инициализируется по адресу ее загрузки.
Идем дальше, внедряем 55 STOP, грузятся файлы to2, to3. Теперь обращаем внимание на строку под номером 70. Вот это да! А где же адрес инициализации программы RANDOMIZE USR XXXXX? Вместо него какой-то бред. Но приглядевшись внимательнее, многим из вас интуиция подскажет, что это очередной прием для экономии памяти. Я лично так и не смог разобраться на чем этот прием основан, но точно смог установить, что эта строка эквивалентна следующему:
RANDOMIZE USR 60000
RANDOMIZE USR 24500
RANDOMIZE USR 27228.
То есть идет последовательная инициализация загружаемых блоков, а потом переход в точку входа самой программы! Таким образом, последовательно вводя команды можно установить, что to2 – это основной кодовый файл, который можно предположить декодируется процедурой по адресу 24500, блок to3 – это статический экран игры (рамка, которая никогда не меняется) она инициализируется по адресу загрузки 60000. Ну и адрес 27228 есть точка входа.
Для копирования файлов и для раскрутки исходного загрузчика, вам будет полезна информации о длине и адресах загружаемых блоков, о ней можно узнать при помощи команды TR-DOS – LIST.
Исходя из проведенного анализа исходного загрузчика, загрузчик программы в системе +3DOS будет следующий:
10 BORDER 0: PAPER 0: CLEAR 24499
20 LOAD “t_ecl1.scr” CODE 40000
30 RANDOMIZE USR 40000
40 LOAD “t_ecl.dat” CODE
50 LOAD “t_ecl2.scr” CODE 60000
60 RANDOMIZE USR 60000
70 RANDOMIZE USR 24500
80 RANDOMIZE USR 27228
В очередной раз можно убедится в простоте и удобстве, которые появляются в +3DOS. Важно также отметить, что проблем с RAMTOPом в +3DOS не возникнет, так как неуклюжие синтаксические надстройки не засоряют память Спека, как в TR-DOS. Это позволяет модифицировать даже фирменные игры с кассет без борьбы с RAMTOPом. Кроме того, легко заметить, что если записать игру вместе с загрузчиком с диска +3DOS на кассету она легко пойдет без всяких изменений, так как принятое упрощение в виде пустого имени файла, обусловлено тем, что последние записаны на ленту последовательно и не требуют идентификации по имени. При этом синтаксис не запрещает использовать правильное имя, которое соответствует имени загружаемого с ленты блока. Из этого также можно сделать и обратный вывод, что незащищенная на ленте игра может быть легко адаптирован к системе +3DOS введением всего лишь имен файлов, если оные отсутствуют в загрузчике. Это еще одна крупная капля на мельницу системы +3DOS!
Перенос файлов на реальные диски +3DOS
Допустим, вы успешно справились с защитой, написали загрузчик и теперь вам необходимо, как-то перенести файлы программы на реальный диск +3DOS. В последние годы для системы TR-DOS создано много разных файловых менеджеров, при помощи которых можно переносить файлы с одного образа на другой. Но вся проблема в том, что все эти менеджеры писались отечественными программистами, которым до системы +3DOS не было дела, и поддержку образов dsk и реальных дисков +3DOS они попросту не сделали. Поэтому в этой ситуации два пути: либо самому восполнить этот пробел и написать файловый менеджер с поддержкой образов dsk и реальных дисков +3DOS или написать какую-нибудь более простую утилиту, либо осуществить перенос каким-то другим более изощренным способом.
Для тех, кто не является профессиональным программистом или никогда не писал подобный вещей и не имеет наработанного опыта в этом направлении, разумным будет пойти по второму пути. Нет, нет я не настаиваю если вы считает, что вам по силам написать файловый менеджер и у вас есть на это много свободного времени, то я буду только рад за вас. В этом случае вам можно сразу перейти к чтению заключительной части.
Оставшейся, я полагаю, многочисленной части читателей я предлагаю альтернативный подход. Очевидно, что перебросить файлы с образов кассет достаточно просто. Для этого можно использовать реальный ZX-Spectrum+3 и преобразованный образ в MP3 файл, файлы с которого можно записать на диск при помощи стандартных команд +3DOS. Такой путь долгий и неудобный, к тому же основной объем программ скорее пойдет с образов TR-DOS, в этом случае лучше воспользоваться эмулятором, поддерживающим все известны и необходимые для работы образы, а также реальные диски +3DOS. Слава Богу, что такой эмулятор существует – это упомянутый ранее RealSpectrum эмулятор. Описание процедуры переноса с образов кассет я опущу, так как это частично будет описано при рассмотрении процедуры переноса с образов TR-DOS.
И так начнем. Первое что следует порекомендовать это использовать в начале образ dsk а не реальный диск +3DOS, так как это продлит жизнь, как самому диску, так и позволит создать архив адаптированных образов на PC. Далее необходимо создать образ tap, как промежуточный носитель файлов. Это можно сделать при помощи менеджера или эмулятора. Вы, наверное, уже успели догадались, что для того, чтобы перенести файлы с образа trd, необходимо сначала скопировать их на образ tap при помощи эмулятора или любого менеджера файлов, а потом при помощи стандартных команд +3DOS в эмуляторе скопировать их на образ dsk.
Делается это так:
10 CLEAR 24500
20 LOAD “t:”
30 LOAD “” CODE XXXXX,NNNNN
40 SAVE “a:name.aaa” CODE XXXXX,NNNNN
В 10 строке на всякий случай устанавливается RAMTOP, позволяющий безопасно загрузить кодовый блок в память. В 20 строке устанавливается текущее устройство чтения – лента. По идеи можно было бы воспользоваться сразу в строке 30 командой LOAD “t:name” CODE. Синтаксис это допускает, однако в +3DOS допущена досадная ошибка, при использовании этой команды вместо загрузки файла с ленты, начинает выводиться ее каталог – эквивалент CAT “t:”. Однако как видно эту проблему можно обойти достаточно просто. При работе с диском такой ошибки не наблюдается, поэтому в 40 строке простой командой загруженный в ОЗУ файл сохраняется на диск а:.
Далее, сохранив файлы игры и загрузчик на образ dsk, можно с замиранием сердца проверить работоспособность игр в системе +3DOS. Если игра успешно заработает, следует перейти к заключительному этапу, который заключается в копировании с образа dsk на реальный дик +3DOS. Для этого в эмуляторе в один дисковод вставляется образ dsk, а в другой реальный диск. При этом обязательно сделайте ресет, так как дисковод B по умолчанию не инициализирован! Также рекомендую использовать реальные диски, отформатированные утилитой 22DISK в формате DDSD 706 кб. Такие диски хорошо читаются как на реальном Спектруме, так и ДОС-ой версией эмулятора, которая устойчиво работает при установленном драйвере дисковода и под WIN. Не могу утверждать, но на моей домашней машине версия эмулятора под виндоус с реальными дисками работала крайне глючно, а также форматирование ранее неформатированных под +3DOS дискет в любой версии эмулятора по какой-то причине тоже происходило с глюком. Заканчивая с дискетами, хотелось еще отметить, что необходимо заклеить окошко, которое необходимо для определения диска, как диска обычной плотности, то есть при его заклеивании дисковод станет воспринимать его, как DDSD. Теперь вернемся к копированию файлов. Учитывая особенности системы +3DOS, удобно файлы одной программы называть по алфавиту, так чтобы они при выведении каталога располагались вмести и по старшинству.
Например, я предлагаю так:
ELITE
elite.scr
elite.dat
Учитывать регистр необязательно, так как файлы в каталоге всеравно выводятся в верхнем регистре. Важно заметить, что обязательно необходимо, чтобы первые три буквы файлов у одной программы совпадали, тогда они всегда будут рядом. Загрузчик необходимо называть так, чтобы он всегда был выше кодовых файлов, при этом для загрузчиков, наверное, удобно использовать пустое расширение. Это легко выделяет его из обще массы файлов, а также упрощает задачу сделать его выше по алфавиту. Для кодовых файлов удобно использовать расширение, например, scr для экранов, dat для кодовых файлов, sav для файлов отгрузки и т.д. Это компенсирует отсутствие в каталоге информации о типе файлов.
При умелом назначении имен файлов, лего осуществить их копирование с образа на диск, например в нашем случае это будет команда:
copy “a:el*.*” to “b”
Если файлы названы разнородно, то придется копировать их по одному, указывая полное имя. Теоретически возможна команда copy “a:” to “b”, однако она не проходит, когда образ диска 173 кб, а реального диска 706, в этом случае происходит ошибка.
При желании того, чтобы файл грузился по опции loader в основном меню, необходимо присвоить ему имя DISK по аналогии с boot для TR-DOS.
Скорее всего, на этом ваши мучения должны закончится. В приложении я выкладываю рассмотренные примеры на образах dsk, которые также были проверены и на реальном ZX-SPECTRUM+3. Желаю успехов в адаптации программ к системе +3DOS!
Заключение
В заключении хотелось немного предупредить возможную критику. Сразу оговорюсь, что изложенная идея не относится к фанатичным поклонникам и коллекционерам мегатонного софта, который они практически не запускают на своем реальном Спеке. Также очевидно, что это не относится и к эмуляторщикам, музыкантам с GS и т.д. Эта идея направлена, главным образом, на тех пользователей, которым хочется пользоваться реальным Спектрумом, подключая его к реальному телевизору. То есть по типу игровой приставки, поиграл в любимые игры, пописал программы на бейсике и возможно на ассемблере и убрал с глаз долой, чтобы не мешать текущему быту. Все достоинства ZX-Spectrum+3 для такого использования были озвучены выше. Разумность их очевидна, так как эта модель изначально была создана именно для такого использования. Резюмируя ее положительные свойства можно отметить следующее: эстетический вид, хорошее качество и достаточные для большинства приложений технические характеристики. Необходимое количество софта двумя тремя людьми за год может быть доведено до нескольких десятков, а может и превысит 100. Но лично мне хватит и пару десятков игр, которые я способен осилить в одиночку. План развития платформы, на мой взгляд, заключаются в увеличении адаптированного софта, то есть в обеспечении программной поддержки.
В мое представление процесс должен идти так:
1. Адаптация программ с незащищенным загрузчиком
2. Адаптация программ со слабо защищенным загрузчиком
3. Адаптация программ с монозагрузчиком
4. Написание бутов
5. Адаптация отгрузок на диск (полная дисковая версия игр)
6. Адаптация программ со сложными кодовыми загрузчиками
7. Написание своих программ.
Конечно, что-то может идти в параллель или раньше, все зависит от того, кто и в каком количестве подключится к проекту. Меня, скорее всего, хвати до 4-го пункта и, возможно, с элементами 5-го. Удачи, ждите следующих работ по ZX-SPECTRUM+3!
____________________________________________
* На сегодняшний день удобные утилиты найдены. Читайте здесь.