PDA

Просмотр полной версии : Адаптация программ к системе +3DOS



Addison
06.07.2008, 19:26
Введение
Когда-то в далекие 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’ не составляет труда подробное описание этой проблемы и ряда других можно найти здесь (http://www.secarica.ro/html/plus3_hardware.html).
Несмотря на то, что корпус ZX-Spectrum+3 не позволяет штатно встроить в него дисковод 3,5’, я нашел несколько конструктивных решений. При небольших доработках корпуса самого дисковода и использовании некоторых дополнительных деталей можно встроить дисковод 3,5’ без каких-либо изменений (порчи) фирменного корпуса ZX-Spectrum+3, причем все будет выглядеть красиво и аккуратно, как заводской вариант. Но эта задача заслуживает отдельного рассмотрения и будет описана в другом разделе (http://zx.pk.ru/showthread.php?t=9841).
Как видно из названия этот раздел посвящен адаптации программ к системе +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-го. (http://zx-pk.ru/threads/8019-adaptatsiya-programm-k-sisteme-3dos.html?p=141075&viewfull=1#post141075) Удачи, ждите следующих работ по ZX-SPECTRUM+3!

____________________________________________
* На сегодняшний день удобные утилиты найдены. Читайте здесь (http://zx.pk.ru/showthread.php?t=8812).

Addison
06.07.2008, 19:28
А что же недостатки? В чем проигрывает 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. Более подробно о введении расширения будет сказано ниже.

Addison
06.07.2008, 19:30
Адаптация программ с кодовым загрузчиком и небольшой артефакт +3.
Развивая начатую тему, привожу еще один характерный пример адаптации к системе +3DOS.
Многое в нашей жизни делается обычно, когда нужда заставит. Так и в этом случае, адаптировав с десяток ходовых игр преимущественно с простым загрузчиком на бейсике, настал момент, когда понадобилось адаптировать игру с загрузчиком в машинном коде. У меня две самые любимые игры это ELITE и ADVANCED SOCCER SIMULATOR. В эти игры я могу играть часами и годами. И, наверное, из-за них пришла идея приобрести реальный Спектрум.

Если с первой игрой ELITE мне повезло, удалось найти вариант на ленте с простым загрузчиком, то со второй дела обстояли гораздо хуже. Простых вариантов не было, были либо полные дисковые версии для TR_DOS с монозагрузчиком, либо ленточные версии с загрузчиком в коде. В коллекции Волгодонска встретилась неполная дисковая версия с бейсик загрузчиком. Как я писал выше, лучше идти по простому пути, взять самый простой вариант, то есть в нашем случае это будет вариант из коллекции Волгодонска с загрузчиком на бейсике. Однако удачно работающая версия в TR_DOS при переносе в +3DOS отказалась работать, зависая перед инициализацией игры, которая происходит по нажатию пробела после стартовой заставки.

Забегая вперед, скажу, что дело оказалось вовсе не в +3DOS, а в самом Спектруме +3, как таковом. На том этапе я этого еще не знал и думал, что возможно зависание происходит из-за исходной корявой адаптации к TR_DOS, внешне это подтверждалось отсутствием подпрограммы загрузки отложенной игры, которая инициализируется перед стартом, предлагая либо начать новую игру либо загрузить старую. В самой игре автором было предусмотрено только сохранение, а загрузка делалась исключительно вначале игры. Из-за этого получалось, что версия игры была настолько убогая, что как-то вернуться к сохраненному (даже на ленту) состоянию игры, в ней было невозможно.
Кроме этого казуса в загрузчике фигурировали непонятные мне pokes, кроме того, в экранную область по мимо картинки грузилась какая-то гадость и запускалась по адресу 16384… Короче говоря, я решил не возится с этой убогой версией и обратится к оригинальной на образе tzx WOS.

Загрузчик у оригинальной версии был классический, то есть сначала бейсик загрузчик грузил кодовый загрузчик, а потом кодовый грузил все остальное.
Есть мнение, что самой эффективной защитой от среднестатистического ламера является применение кодового загрузчика. Не знаю, этим ли руководствовался автор игры, но первичный бейсик загрузчик у оригинальной версии выглядел так:

0 CLEAR 24783: LOAD “” СODE: RANDOMIZE USR 64307

Как видно из листинга, вся необходимая для работы информация в нем присутствует. А защита в виде 0-й строки вызывает всего лишь улыбку и вопрос – А что автор думал, что кто-то захочет править эту единственную строку???
Дальше дело сложнее. На образе ленты размещены 5-ть кодовых файлов без заголовка, и все, что он них можно узнать – это их длину. Однако перед ними расположен один кодовый файл с заголовком, который очевидно грузится по команде LOAD “” СODE в бейсик загрузчике.
Параметры файла просты: адрес загрузки 64000, длина 1536, точка входа 64307. Используя эту информацию и монитор ADM 7.08 можно определить, что это загрузчик в машинном коде, который грузит 4-ре из выше упомянутых 5-ти кодовых блоков.

1 блок 16384, 6912 – очевидно заставка
2 блок 25600, 4608 – по всей видимости, просто часть самой игры
3 блок 43856, 3968 – программа загрузки с ленты отложенной игры та, которая отсутствовала в корявой версии под TR-DOS.
4 блок 50000, 14000 – основной кодовый блок игры.

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

LD IX,START
LD DE,LENGTH
LD A,FF
SCF
CALL FA84

Слова START и LENGTH, которые предварительно загружаются в регистры IX и DE перед вызовом подпрограммы загрузки с ленты CALL FA84 дают информацию о параметрах загружаемых блоков, которые я указал ранее. А что же с 5-м кодовым блоком? Этот блок оказался исходным состоянием игры, то есть содержащим все параметры, переменные игры, которые сохраняются при отгрузке. На ленте присутствовал файл с исходным состоянием игры, который грузился подпрограммой загрузки расположенной в 3-ем блоке при выборе опции новая игра. В случае выбора опции отложенная игра грузился аналогичный файл с параметрами отложенной игры. Параметры 5 блока 30208, 13648.
Таким образом, выудя всю необходимую информацию о файлах игры, пишется загрузчик, и записываются на диск файлы. Точку входа можно использовать аналогичную 64307, предварительно подредактировав код блоков 1 и 2, обойдя в них процедуры загрузки с ленты при помощи команд JR или JP. Конечно, блок 1 вообще можно было бы выбросить и отправит процессор сразу по адресу в блок 2 на подпрограмму загрузки отложенной игры, однако блоки организованы непросто и те функции, которые я за ними закрепил, весьма условны и справедливы только для рассматриваемой нами задачи. В целом в них встречаются куски (подпрограммы), используемые в процессе самой игры, а не только при загрузке.

Проделав все операции, игра удачно стартовала в TR_DOS, при этом в отличие от корявой версии в этом случае можно было использовать отгрузку состояния игры на ленту. Однако при переносе игры в +3DOS игра зависала после выбора футбольной команды. Я установил, что зависание в корявой версии в + 3DOS было вызвано той же причиной, кроме того, как оказалось, игра аналогично висла и при загрузке с ленты, если грузить ее на Спектруме +3. Причем, даже в режиме замка 48к, что сильно удивляло и ставило в тупик. Одно стало понятно, что сама +3DOS к этому отношения не имела, дело в самом Спектруме +3.
Пошаговое исследование при помощи дебаггера эмулятора RealSpectrum позволило локализовать дефект, установить адрес подпрограммы после которой происходит зависание.
53546 CALL 51823

Как я понял, происходило это при формировании звукового сигнала, когда я вводил номер футбольной команды, нажимал ввод, и программа переходила на подпрограмму синтеза отзвука нажатия клавиши. При этом заблаговременно для нее разрешался режим прерывания IM2. Вот в нем-то и оказалась проблема! Дело в том, что дебаггер показывал различный вектор прерывания в системе 128 Пентагон и в системе Спектрум+3. Для Пентагона вектор был равен FFFF, а для Спектрум+3 – 2100. На скору руку в системе Спектрум +3 при помощи дебаггера я принудительно изменил вектор с 2100 на FFFF. Игра заработала без проблем! Таким образом, причина была точно установлена. Осталось только определить: из-за чего меняется вектор прерывания в системе +3 и как исправить его на FFFF.
Всем известно, что вектор прерывания находится по адресу I+255, где I – регистр прерываний процессора. В регистр I сразу по точке входа 64307 загружался быйт 39H, 255 (FFH) – это байт на шине данных. Исходя из этого, вектор прерываний для этой программы хранился по адресу 39FFH или 14847, то есть в ПЗУ. Я установил, что в обычной прошивке в этом месте располагается большой блок байтов со значением FF, а в +3 вместо FF – 00, причем в банке 48к у +3 была такая же ситуация из-за чего при переходе даже в режим замка программа тоже висла.

В одной из книг я вычитал, что есть некая таблица векторов прерываний, расположенных в ПЗУ, то есть, грубо говоря, приведены вектора прерываний, которые хранятся в XXFF адресах ПЗУ. Очевидно, что одной из проблем при адаптации программ к системе +3 может быть проблема с вектором прерываний, так как ПЗУ у +3 неидентично оригинальному.
Ясно, что проблему можно решить путем изменения содержимого регистра I, но для этого сначала необходимо найти где-то расположенные рядом два байта FF FF причем так, чтобы первый располагался в XXFF. Перерыв все возможные адреса ПЗУ и самой программы я понял, что такого варианта просто нет, его надо создать.
Где создать? Конечно в блоке загрузчика, тем более мне там встретился пустой кусок с нулевыми байтам. Сделал, изменил регистр I. Игра пошла! Однако при отображении счета во время демонстрации матча на цифрах появились характерные горизонтальные полоски… Да, это те самые FF FF которые я записал, казалось бы в свободное место в загрузчике. Тогда я пошел другим путем, воспользовался тем, что RAMTOP установлен намного ниже, чем грузится первый кодовый файл и в самый низкий подходящий адрес записал необходимые ффки. Запустил игру, когда одна из команд забила гол, сформировался звук сигнализирующий об этом, бордюр моргнул синим цветом и игра повисла. И там занято!!! Да что же делать. Весь код игры же не раскрутишь, чтобы определить, где там есть свободный кусок, да тем более еще, и не каждый подойдет.
Но выход все-таки есть! У Спектрума+3 бейсик программа начинается с такого же адреса, как и у любого магнитофонного Спека 23755, то есть без смещения на 112 байт, как у дисковых вариантов с TR-DOS. Поэтому то и не возникает проблем с RAMTOP, хотя исходный бейсик файл загрузчика при адаптации, как правило, увеличивается.
Воспользовавшись этой уже положительной чертой +3, я опустил RAMTOP до нужного адреса, чтобы появилось место для создания байтов FF FF в нужном адресе XXFF.
Исходный RAMTOP 24783 или 60CFH ближайший подходящий адрес вниз от этого 5FFFH, тогда RAMTOP буде 5FFEH или 24574, а проблема будет лечится введением трех poke:

POKE 24575,255: POKE 24576,255 для создания FF FF

и

POKE 64308,96 – для настройки регистра I на адрес 24575.

Таким образом, была достигнута еще одна победа над Спеком +3! Для меня эта победа вдвойне приятна, так как я хоть и умею читать машинный код, но как таковой продолжительной практики программирования у меня не было!

Продолжение следует…

Addison
06.07.2008, 19:31
Последнее время начали объявлять владельцы ZX-Spectrum+3, и что самое приятное, многие из них планируют пойти по пути встраивания 3,5'' дисковода. Следовательно, в скором времени стоит ожидать наращивание базы адаптированного софта (игр).
Я постараюсь опубликовать здесь еще ряд небольших статей, которые помогут значительно снизить трудоемкость работы по адаптации. Благодаря некоторым приемам перетащить игрушку с тапки на образ +3 при определенной сноровке потребует всего 15 минут работы. В общем, я ожидаю того же естественного процесса переноса софта, как был и с системой TR-DOS. Каждый будет перетаскивать то, что ему нужно, а в сумме мы получим неплохую базу игр! Возможно в далеком будущем отечественные производители, такие как АТМ, Пентагон и т.п. возможно задумаются о реализации +3 DOS в своих машинах! Но это мечты. ;)
Я полагаю, что пользователь, получивший в свое распоряжение ZX+3 с дисководом 3,5'', сразу же возжелает адаптировать ELITE или DIZZY. Первая уже имеется, вторая практически готова (имеется 5 частей). Конечно, кто-то захочет сделать свои варианты, той же ELITE несколько версий, например, в коллекции 107 игр, которую я здесь публиковал, адаптирована как раз другая ELITE, не 128к, которую сделал я. Однако там не доделано меню отгрузок. Также не сделана ELITE2/3 от В. Кладова. Ну и полно других хитов, которые захотят в первую очередь перенести на ZX+3 новоиспеченные его владельцы! Тем не менее, я прошел некоторый путь, и последователи невольно сместят свой взгляд в сторону другого не перенесенного софта и расширят тем самым общую базу.

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

Правила организации файлов игры при адаптации к +3DOS:

1. Использовать стандартный образ диска 173 кб.
2. Образ должен иметь только одну игру.
3. Образ должен называться также как игра.
4. Все файлы должны иметь по возможности стандартные расширения:
.BAS - файл бейсик программы,
.LDR - кодовый загрузчик,
.DAT - кодовый блок игры,
.SCR - файл заставки,
.BIN - альтернативное расширение для кодового блока,
.SAV - файл отгрузок.
5. Имена файлов должны иметь общую начальную часть, хотя бы 3-5 символов, лучше иметь одинаковые имена с использованием индексов в случаях, когда расширение файлов совпадает.
6. Образ должен содержать файл DISK (без расширения), в котором на бейсике написана строчка загрузки основного загрузчика игры. Естественно, с реализацией автостарта, как самого файла DISK, так и самого загрузчика игры. Это позволит пускать любой образ из основного меню по опции LOADER.

Это основные, на мой взгляд, разумные правила, которые позволят создать базу игр, которые легко копируются с диска на диск и удобны в использовании. Достаточно на PC иметь папку с такими образами, которые легко сортируются по алфавиту. Стоит загрузить в эмулятор или на реальный диск этот образ, как вы мгновенно получается работоспособную игру с загрузкой по опции LOADER. Выбранная система расширений позволит легко копировать, разбираться в структуре игры и т.п. Важно в загрузчике использовать именно расширение BAS, так как многие самопальные буты используют его по фильтру. Так делал я, и так делали иностранцы в коллекции из 107 игр. Кстати, они заочно выполнили все мои правила, за исключением использования одного образа для одной игры. Поэтому эту коллекцию еще предстоит разбить на 107 независимых образов с автозапуском.
Считаю что формирование коллекций на больших дисках - это дело индивидуальное.
В жизни проще использовать несколько дискет и перед игрой перебрасывать туда с ПЦ образ. Дисков мало, хранить их не хочется, да и надежнее на PC.

Кто имеет 10-ок любимых игр может загнать их легко на одну большую дискету 706 кб. При этом ему хватит эмулятора SPIN команды COPY "a:name*.*" to "b:". В SPIN в "b" загружается чистый образ 706 кб, а в "а" по очереди диски с играми, далее в бейсике пишется строка с copy - Enter! name - это та самая единая часть имени всех файлов, о которой говорилось в предложенных правилах. Потом полученный образ 706 кб, при помощи утилиты (http://zx.pk.ru/showthread.php?p=259391#post259391), о которой я писал, загоняется на реальный диск и юзается на реальном +3!

Addison
09.07.2008, 12:17
В этом разделе я буду публиковать названия игр, программ и т.п. адаптированных к системе +3DOS. Здесь под адаптированными я понимаю программы, которые работают в системе +3DOS и легко переносятся (при помощи команды copy) с образов dsk на реальный диск 3 или 3.5". Некоторые игры из опубликованных здесь вы можете найти на WOS, однако перенос их с образов на реальный диск осложнен защитой от копирования. Таким образом, эта тема будет интересна в основном пользователям реального ZX-SPECTRUM+3.

По мере времени, сил и возможности будут адаптироваться также и отгрузки на диск,
при этом около названия игры (программы) будет появляться надпись "FULL DISK VERSION"
Следите за обновлением.

На данный момент адаптированы:

1. ELITE 128K - FULL DISK VERSION
2. TOTAL ECLIPSE II
3. TETRIS (Miror Soft) (источник WOS)
4. PACMANIA (источник WOS)
5. TILT
6. SIMCITY
7. ADVANCED PINBALL
8. KRAKOUT
9. KRAKOUT2
10. ARKANOID II
11. WEC LE MANS
12. MISS PACMAN
13. QUAZATRON
14. BRIDE OF FRANKENSTEIN
15. ADVANCED SOCCER SIMULATOR FULL DISK VERSION
16. DIZZY 1
17. DIZZY 2
18. DIZZY 3
19. DIZZY 3.5
20. DIZZY 4
21. DIZZY 5
22. RENEGADE 1
23. SUPER CHEES 3.5
24. COLOSSUS CHEES
25. Preliminary Monty
26. SPIRITS
27. DRACONUS
28. TETRIS2


P.S. Перед тем как приступить к собственным адаптациям рекомендую прочесть общие правила (http://zx.pk.ru/showpost.php?p=259631&postcount=37).

Addison
16.07.2008, 18:12
Задумал сделать коллекцию DIZZY на одном диске, причем, качественные версии с минимальными отличиями от оригинала. До этого я уже адаптировал части 1, 2, 3.5 и 5. Также в коллекции 107 игр западной адаптации на третьем диске имеются части 5,6 и7. То есть фактически не хватает только 3 и 4 части! Однако я все же решил все переделать. Мои адаптации были сделаны с образов tr-dos коллекций Волгодонска и Дупанова, эти версии оставляли желать лучшего, тогда я еще не отработал технологию переноса и выбирал варианты с легко раскрываемым загрузчиком, поэтому версии попались совсем кривые судя по вечным жизням, отсутствию музыки и т.п. Версии западной адаптации я толком не смотрел, но, судя по файлам игр, там тоже что-то делали, несколько непонятных блоков странного объема. В общем, я решил обратиться к образам кассет. Не уверен в их оригинальности, ксорок там нет, защиты как таковой тоже, просто применяется кодовый загрузчик, но что приятно, все заставки оригинальные, одним стандартным файлом 16384,6912, сама игра идет одним большим блоком, плюс один музыкальный блок, кроме соответственно первой части, так как там музыки АУ не было. Просмотр кода показал, что ничего лишнего там нет, все стройно и четко, посему считаю, что на этих тапках оригинальные образы кассет, а если и не совсем оригинальные, то с корректно снятой защитой и аккуратно структурированные.

DIZZY1

В теме Slider’а уже было обсуждение (http://zx.pk.ru/showpost.php?p=237476&postcount=580) по поводу проблемы не запуска этой части из под режима 128к. Я не буду сильно повторяться, скажу только то, что проблема в затирании системных переменных основным кодом игры. Существует множество способов решения этой проблемы, но я преследовал цель адаптировать как можно ближе к оригиналу, то есть хотел сохранить, как загружаемы блоки в исходном виде, так и те адреса, куда они грузятся, и произвести только минимальные доработки, без которых просто игра не пойдет в системе +3. В общем, я изменил только кодовый загрузчик, соответственно поменял процедуры чтения с ленты на процедуры чтения с диска и для обхода затирания системных переменных 128к загрузил кодовый загрузчик в нормальные адреса ОЗУ выше 23755. Однако, как в случае ленточной версии просто перенести загрузчик в системные переменные в машинном коде уже не получилось, так как процедуры +3 DOS в отличие от процедур ленты используют эти переменные. Поэтому я по максимуму сделал все в нормальных адресах ОЗУ: инициализацию ДОС, включение мотора, открытие файла для чтения, а уже непосредственно чтение и выключение мотора произвел из адресов системных переменных! К счастью процедура чтения файла эти переменные, которые затираются, не использует.
В итоге получилась качественная версия для +3 DOS с сохранение оригинальных блоков (картинки и самой игры) с изменением только загрузчика, что объективно и логично при адаптации.

DIZZY2

С этой частью пришлось повозиться. Она в отличие от всех других просто отказывалась работать в системе 128к в варианте ZX+3, даже при загрузке с тапки. И если первая часть глючила в любом ZX, для нее проблемой был режим 128к, то здесь глюк возникал только в системе +3. Причем если грузить с тапки в системе +3 в режиме 48к без музыки АУ все работало, как часы!
Долгие и кропотливые разбирательства позволили установить, что причиной этому есть переделка ПЗУ (банк 48к). Процедура RST38 была изменена! После ее выполнения банк памяти устанавливается в соответствие с переменной BANK_M. В стандартной синклеровской прошивке этого не было. Сделано это из-за того, что для +3DOS заюзана 7-я страница и ее периодически нужно включать, когда отрабатывается процедура +3DOS в бейсике. Поэтому если в игре банк памяти переключается некорректно (без сохранения содержимого порта 7FFDh в переменной BANK_M), то при возникновении прерывания первого рода IM1 отрабатывает процедура RST38 и меняет банк памяти на тот, который записан в переменной BANK_M. В случае DIZZY2 происходит несанкционированное переключение банка 6, куда подгружена музыка, на банк 0, где расположен основной код игр. Это приводит к зависанию в самом начале при воспроизведении приветственного крика.
Решить эту проблему можно. Если делать это в лоб, то, наверное, нужно в игре, где щелкаются банки добавить сохранение текущей настройки регистра 7FFDh в системной переменной BANK_M. Сделать это не так просто, нужно курочить код, делать выноски искать свободные места, причем переключений много и структура игрушки мне не известна, да и решение будет частным только для этой игры. А ведь наверняка такая проблема может возникнуть и в других играх!
Я придумал очень остроумное и хорошее решение!
Вот часть процедуры RST38, в которой происходит глюк:

3873h

BIT 4,(5C3Bh)
JR Z,387Ch
CALL 387Fh
Последняя команда и переключает это банк. Суть в том, что если 4-й флаг системы бейсик включен, то происходит переключения банка на 7-й и декремент ячейки в нем по адресу E600h – это, скорее всего, какая-то переменная +3DOS, которая создается в 7-ом банке при инициализации +3DOS. Но для функционирования игры это не нужно, поэтому в самом конце загрузки, когда +3DOS больше не будет использоваться, целесообразно сбросить 4-й флаг в системе бейсика, расположен он по адресу 5C3Bh. Исходно там содержится байт 221, при выключении 4-го бита будет 205!
Таким образом, очередной артефакт +3DOS лечится в загрузчике перед финальным RANDOMIZE USR путем введения POKE 23611,205!!!

Что касается остальной адаптации, то в отличие от оригинала все блоки я загрузил в бейсике в их оригинальные адреса, а не в машинном коде, так как это позволял адрес начала загрузки 24576 основного кодового блока. Подгрузка файла музыки в страницу 6 осуществил обычной процедурой LDIR в машинном коде, процедура предварительно подзагружается из файла с расширением ldr. Затем все затирается основным блоком игры, который грузится последним.


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

DIZZY5 - побежден в ходе упорных и кровопролитных боёв.

Addison
19.05.2009, 20:47
«Дошли руки» до адаптации отгрузок к системе +3DOS. Первым делом попробовал поэкспериментировать с наиболее популярной игрой ELITE. Тем более, что в ней имеется классическое меню отгрузок. За основу была взята кассетная версия 128К с WOS, как наиболее удачная и уже с адаптированным к +3DOS загрузчиком.
К недостаткам этой версии могу отнести только отсутствие оригинального шрифта. В плане полноты, разнообразия кораблей, артефактов, описанных в литературе, эта версия удовлетворит запросы большинства геймеров.
Вообще, как многим известно, существует много разных версий, в том числе и бесчисленные переделки для TR-DOS, которые потеряли всякие признаки первоистока. Наиболее распространенная версия адаптированная к TR-DOS – это версия от Joystick Club. Не хочу хаять эту версию, так как в далекие годы детства играл в нее и радовался наличию адаптированной процедуры отгрузок, что, как правило, в других играх местных коллекции было редкостью. А тут ELITE, да с адаптированной отгрузкой! Но я также не могу не отметить ряд ее недостатков. Во-первых использование файла доступа несколько ограничивает, не позволяет без перезагрузки загружать разные сэйвы, во-вторых сама версия от Joystick Club небезупречна. Отсутствуют некоторые корабли, при стыковке корабли не вылетают со станции, а также, по мнению ряда геймеров, она более легкая при ведении космический баталий.
На Virtual TR-DOS имеется распространненая версия с весьма измененным меню отгрузок, где по нажатию SS вам выдают голубые строчки меню. Смотрится это не очень красиво, потерян шарм, выдача секретного номера командира и вообще изменен интерфейс не в лучшую сторону! Понятно, что все перечисленные недостатки вызваны нехваткой пространства в ОЗУ, тем более что версии, как правило, рассчитаны на работу с 48к машинами… В случи адаптации под +3DOS такой проблемы нет, так как эта система стоит на машинке со 128к! Поэтому при адаптации я преследовал цель – «Не навреди!». Если и вносил что-то свое, то делал лучше чем было. Думаю, мне это вполне удалось.

И так, что и как сделано:

1. Загрузка и сохранение файла состояния игры на диск +3DOS. Название файла отгрузки и имя командира совпадает, за исключением того, что к имени файла добавляется расширение sav. Таким образом, после сохранения командира JAMESON, на диске будет создан файл JAMESON.sav. Введение дополнительного разграничения по имени файла счел лишним, думаю, ничего кроме путаницы и увеличения объема процедуры отгрузки это не даст. Представьте, что после ввода имени командира вам бы еще предложили ввести имя файла. Двойной ввод – нужен он? Заменить вод имени командира на ввод имени файла испортит исходный интерфейс. Так что остановился на оригинальном варианте, который был в кассетной версии. Этот вариант предельно четок, понятен и удобен.
2. При пересохранении командира на диске создается bak файл, то есть файл со старым состоянием переименовывается, например, JAMESON.bak. Это позволит исправить возможную ошибку, когда геймер буде сохраняться всегда под одним именем командира без добавления индекса. Например, игра не удалась и вместо возврата к старой версии можно нечаянно вызвать сохранение, нажать и все вы навсегда сохраните неудачный бой или еще что-то. Подсказки на подтверждение загрузки и сохранения я не сделал, так как это ведет к сильной доработке кода. Я старался ничего не трогать, и все запросы, которые появляются – все присутствуют в оригинале, только с измененным текстом.
2. Сообщение перед сохранением «Insert tape, then press any key» заменено на «Please waite...». Ожидание нажатия клавиши соответственно тоже убрано. Очевидно, что в дисковом варианте это не нужно, если дискеты не будет, появится соответствующее сообщение и после загрузки в дисковод диска операцию можно повторить. Надпись «Please waite» появляется как при сохранении, так и при загрузке и сигнализирует о процессе загрузки/сохранении.
3. При ошибке вместо сообщения Tape loading error появляется соответствующее сообщение об ошибке. В оригинальной версии ошибка печаталась только при некорректной загрузке, при сохранении такого сообщения не выдавалось. Я ввел несколько вариантов ошибок.
No disk, Disk is write protected, File no found, Bad file name, Full disk.
Полагаю этих вариантов вполне достаточно, при возникновении ошибки, которая не перечислена в списке выше, выдается сообщение Unknown error. Такое сообщение, скорее всего, всплывет, если использовать нестандартный формат дискеты. Сообщение Bad file name появляется при неверном имени файла, но в игре реально ввести только пустое имя.
4. Еще одно изменение коснулось количества символов в имени командира. Оно было сокращено с 10 до 8, что очевидно вызвано совмещением имени командира и имени файла. Также была доработана процедура ввода, после достижения 8 символов, процедура загрузки или записи больше не стартует. При попытке ввести 9 символ ввод просто блокируется, вы можете либо удалит 8 символ и предыдущие либо нажать ввод для запуска процедуры. Сделал эту доработку для удобства, так как пользователь заранее не знает сколько символом ему отведено для формирования имени командира и велика вероятность того, что он захочет больше 8… А так, у него появится возможность без создания лишнего сэйва придумать себе короткий и лаконичный псевдоним.

Версия проверялась на Spin и Real эмуляторе, а также на реальном ZX-Spectrum+3.
В саму игру долго не играл, но думаю ничего там плохого быть не должно, так как код не портил, уходил сразу в другой банк памяти и там делал свои дела… Те изменения кода, который проводил все проверил – ввод 8 символов и печать дополнительных сообщений.

И наконец, сама версия ELITE для +3DOS!!!

Addison
31.05.2009, 17:38
Ну вот, пришла пора освежить тему, да и хороший повод к этому появился! Наконец доделал Advanced Soccer Simulator. С этой игрой пришлось пройти долгий путь препятствий, к счастью все из них были успешно преодолены. Пять месяцев назад, когда я поспешно анонсировал скорый выход этой адаптации, я не думал что ее доводка затянется так надолго. При предварительном тестировании столкнулся с несколькими артефактами, которые ну ни как не поддавались объяснению из-за чего все попытки доделать эту адаптацию были прерваны на несколько месяцев. Не хотелось выкладывать недоделанную версию…
Недавно взялся вновь и смог раскрутить неподдающиеся головоломки, о которых я позднее напишу в подробном описании пройденного пути адаптации ELITE/ASS.

И так, что сделано в ASS.

1. Естественно основное – сохранение и загрузка файла состояния игры в системе +3DOS.
2. Добавлено меню «Диск». Раньше в основном меню можно было только сохранить состояние игры на ленту, подгрузка старой игры была возможна только в самом начале.
3. Выдача сообщений об ошибках при записи/чтении: файл не найден, нет диска, защита от записи, неизвестная ошибка. При удачном действие выдается - ОК!
4. Убрано первоначально меню с выбором начало/загрузка, так как потеряло актуальность, взамен него введен дополнительный запрос при старте в фирменном интерфейсе игры.

Можно было много чего добавить, идей было полно, начиная от каталога диска заканчивая изменением размера отгружаемого файла. Действительно в игре слишком тяжелый файл отгрузки аж 14кБ. Вызвано это, во-первых, резервированием 8-ми участников игры, где требуется отвести место не только под мелкие переменные, такие как количество игр, счет в банке и проч., но и под достаточно ёмкие имена игроков в команде, положение в турнирной таблице и т.п. Ну и, во-вторых, переменные состояния игры, как оказалось при анализе, разбросаны вперемешку с основным кодом игры, поэтому программист не стал заморачиваться и сделал сохранение блока, в которые попадают эти переменные. Оставим это на его совести.
Исходя из выше сказанного понятно, что можно было значительно снизить объем сохраняемого файла хотя бы за счет уменьшения числа участников до двух. Очевидно, что играть в эту игру массово компанией, как это было раньше, когда собирались дома, чтобы порубится в Спектрум, сейчас уже никто не будет. Максимум чего стоит ожидать – это если кто-то по старой памяти в одиночку решит поиграть на реале или же в эмуляторе. Я полагаю мой вариант адаптации удачнее тех, которые есть на TR-DOS. Хотя на эмуляторе можно сохранять и иными способами, отличными от стандартных. Но это уже как кому нравится. Поэтому вполне бы хватило двух трех игроков, при этом уменьшился бы файл отгрузки, и освободилось бы место в ОЗУ для введения дополнительных доработок, например, каталога диска или иных доработок – введение перерыва между таймами, модернизация меню и т.п. Были мысли сделать возврат из второго (большого) меню в основное, чтобы была возможность после загрузки отложенной партии посмотреть, что загрузилось и при желании вернуться назад и загрузить другой файл. Можно было сделать просмотр некоторых важных параметров внутри меню «Диск». Но, как и в случае ELITE, я решил сохранить по максимуму оригинальность игры и добавлять только бесспорно необходимое. Поэтому количество участников было сохранено - 8, и было внесено только то, на что хватило места.
Хотелось бы отметить один нюанс. При выборе загрузки старой игры вы попадаете в основное меню, далее необходимо войти в меню «диск» и выбрать загрузку файла. Раньше в неадаптированной версии вас сразу выкидывало на процедуру загрузки файла.
Сделать аналогично мне не хватило места, думаю это не самый плохой вариант, ведь суть первоначального запроса в том, чтобы перескочить выбор количества игроков, очковой системы и выбора команд. Это реализовано. Если вы выберете загрузку старой партии и не и не станете ее загружать, а последуете дальше, то вам по умолчанию дадут Liverpool, 4 дивизион, стандартное количество денег и трехочковую систему. Так было задумано и в оригинальной версии, если прервать загрузку старой партии брейком.

Ну и, наконец, сама версия Advanced Soccer Simulator для +3DOS.

drbars
01.06.2009, 08:45
Вот интересно, а есть ли исходники загрузчиков для +3 на асме аля #3d13 или независимые от переменных (http://zxdn.narod.ru/coding/trdosdrv.txt)? Ведь для адаптации игр, как это делалось на TR-DOS, потребуется лезть в код. Я так понимаю, если эта система похожа на MS-DOS значит монолоадеров уже сделать не получится... Для работы по адаптации софта, нужен минимальный набор инструментария уже адаптированного под эту систему: dos командер, граф.редактор, alasm, sts, hrust итд... Как я понимаю этот софт никто не адаптировал.

balu_dark
01.06.2009, 13:33
в фирменном руководстве - достаточно толково разжевано все что касается работы с +3 из асма. приведены описание всех необходимых подпрограм и перечислены все входные и выходные параметры. структура диска дает возможность работать с дискетами большого обьема и я думаю возможно даже с винтом.

Addison
01.06.2009, 20:26
достаточно толково разжевано
здесь можно поспорить.

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

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

Добавлено через 3 минуты

Для работы по адаптации софта, нужен минимальный набор инструментария уже адаптированного под эту систему: dos командер, граф.редактор, alasm, sts, hrust итд...
Зачем?

Инлайн ассемблер для этих целей есть;). Я же не на реале крякаю, чтож я извращенец по твоему?:D

drbars
01.06.2009, 21:31
Я же не на реале крякаю, чтож я извращенец по твоему?Да :) На риале веселее курочить гамы, сам много раз так делал, поэтому про софт адаптированный и поинтересовался. :cool:

Addison
02.06.2009, 00:42
эта система похожа на MS-DOS
И да, и нет. Смотря чем похожа. Файлы имеют расширение так же, как и в МС-ДОС. Организация данных на диске, вполне возможно, чем-то похожа на FAT, по крайней мере, упаковка диска уже не требуется... Имеются команды работы с файлами по "*".
А во всем остальном эта система не отличается от ТР-ДОС. Она также интегрирована в Бейсик. Здесь можно поспорить, что мол ТР-ДОС не интегрирована, но ведь команды штатно выполняются из бейсика, пусть и с корявыми синтаксическими конструкциями. Я полагаю, нет никаких проблем также как и для +3ДОС для ТР-ДОС переделать бейсик 128, чтобы синтаксис при работе с диском был прямой без выкрутасов. Здесь просто исторически сложилось, что ТР-ДОС продавался, как внешняя периферия и предполагалось, что Спектрум уже никак нельзя изменить, даже в плане прошивки.



монолоадеров уже сделать не получится...
Почему это? Что мешает написать бейсик файл, где в строке REM поместить код?
Грузишь этот файл, а потом в нем уходишь по usr в код.


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

В будущем планирую написать здесь статью с рекомендациями, советами и примерами на эту тему. Но это будет после адаптации Advanced S S.
Вообще там есть о чем рассказать, так как повторюсь, фирменное описание - это не учебник и не руководство по написанию процедур загрузки и записи в машинном коде, а всего лишь справочник. Сами понимаете, справочник удобен и полезен больше как памятка, напоминание. Тем более что про адаптацию там вообще ничего не сказано.

Добавлено через 22 минуты

На риале веселее курочить гамы
Ну, это как посмотреть...
Я думаю, не для кого не секрет, что игры обычно не пишутся непосредственно на ассемблере и очень часто не пишутся на машине того уровня, на которой будут в нее играть. Для Спектрума это вообще наверняка... Та же самая элита писалась для BBC-micro и не удивлюсь, если на PC или Mac. Потом исходники перекомпилировали на разные платформы. И они, скорее всего, были написаны на Си, Паскале или Фортране...

Исходя из выше сказанного, ясно, что курочить на реале - это все равно, что стрелять из пушки по воробьям... Это примерно также, если написать игру на бейсике и курочить ее через ассемблер, причем просто, чтобы заменить одну строку на другую. Это можно спокойно сделать в интерпретаторе....
В нашем случае эмулятор с инлайн ассемблером и дебагером с пошаговой отладкой позволяет фактически придти к исходникам и работать хоть и с кодом, но все же на уровне процедур игры, то есть практически на высоком уровне - паскаля, си! Иначе ты просто задолбишься что-то там менять, некоторые вещи неочевидны даже при наличии на ладоне всех регистров, стека и результата выполнения процедуры... А вслепую видя только дизассемблированный код, там вообще ничего не разберешь или разберешь со скоростью 1-2 процедуры в неделю.... На это никакого терпения не хватит, мы же не шпионские шифровки декодируем, это просто развлекалово и оно должно сравнительно легко прокатывать (получаться), иначе на это дело легко забить.

Addison
18.10.2009, 13:09
В скором времени ждите адаптированного Advanced Soccer Simulator, работы практически завершены, если бы не этот баг, уже сегодня бы сдал под ключ!
Ну вот, пришла пора освежить тему, да и хороший повод к этому появился! Наконец доделал Advanced Soccer Simulator. С этой игрой пришлось пройти долгий путь препятствий, к счастью все из них были успешно преодолены. Пять месяцев назад, когда я поспешно анонсировал скорый выход этой адаптации, я не думал что ее доводка затянется так надолго. При предварительном тестировании столкнулся с несколькими артефактами, которые ну ни как не поддавались объяснению из-за чего все попытки доделать эту адаптацию были прерваны на несколько месяцев. Не хотелось выкладывать недоделанную версию…
Недавно взялся вновь и смог раскрутить неподдающиеся головоломки, о которых я позднее напишу в подробном описании пройденного пути адаптации ELITE/ASS.

И так, что сделано в ASS.

1. Естественно основное – сохранение и загрузка файла состояния игры в системе +3DOS.
2. Добавлено меню «Диск». Раньше в основном меню можно было только сохранить состояние игры на ленту, подгрузка старой игры была возможна только в самом начале.
3. Выдача сообщений об ошибках при записи/чтении: файл не найден, нет диска, защита от записи, неизвестная ошибка. При удачном действие выдается - ОК!
4. Убрано первоначально меню с выбором начало/загрузка, так как потеряло актуальность, взамен него введен дополнительный запрос при старте в фирменном интерфейсе игры.

Можно было много чего добавить, идей было полно, начиная от каталога диска заканчивая изменением размера отгружаемого файла. Действительно в игре слишком тяжелый файл отгрузки аж 14кБ. Вызвано это, во-первых, резервированием 8-ми участников игры, где требуется отвести место не только под мелкие переменные, такие как количество игр, счет в банке и проч., но и под достаточно ёмкие имена игроков в команде, положение в турнирной таблице и т.п. Ну и, во-вторых, переменные состояния игры, как оказалось при анализе, разбросаны вперемешку с основным кодом игры, поэтому программист не стал заморачиваться и сделал сохранение блока, в которые попадают эти переменные. Оставим это на его совести.
Исходя из выше сказанного понятно, что можно было значительно снизить объем сохраняемого файла хотя бы за счет уменьшения числа участников до двух. Очевидно, что играть в эту игру массово компанией, как это было раньше, когда собирались дома, чтобы порубится в Спектрум, сейчас уже никто не будет. Максимум чего стоит ожидать – это если кто-то по старой памяти в одиночку решит поиграть на реале или же в эмуляторе. Я полагаю мой вариант адаптации удачнее тех, которые есть на TR-DOS. Хотя на эмуляторе можно сохранять и иными способами, отличными от стандартных. Но это уже как кому нравится. Поэтому вполне бы хватило двух трех игроков, при этом уменьшился бы файл отгрузки, и освободилось бы место в ОЗУ для введения дополнительных доработок, например, каталога диска или иных доработок – введение перерыва между таймами, модернизация меню и т.п. Были мысли сделать возврат из второго (большого) меню в основное, чтобы была возможность после загрузки отложенной партии посмотреть, что загрузилось и при желании вернуться назад и загрузить другой файл. Можно было сделать просмотр некоторых важных параметров внутри меню «Диск». Но, как и в случае ELITE, я решил сохранить по максимуму оригинальность игры и добавлять только бесспорно необходимое. Поэтому количество участников было сохранено - 8, и было внесено только то, на что хватило места.
Хотелось бы отметить один нюанс. При выборе загрузки старой игры вы попадаете в основное меню, далее необходимо войти в меню «диск» и выбрать загрузку файла. Раньше в неадаптированной версии вас сразу выкидывало на процедуру загрузки файла.
Сделать аналогично мне не хватило места, думаю это не самый плохой вариант, ведь суть первоначального запроса в том, чтобы перескочить выбор количества игроков, очковой системы и выбора команд. Это реализовано. Если вы выберете загрузку старой партии и не и не станете ее загружать, а последуете дальше, то вам по умолчанию дадут Liverpool, 4 дивизион, стандартное количество денег и трехочковую систему. Так было задумано и в оригинальной версии, если прервать загрузку старой партии брейком.

Ну и, наконец, сама версия Advanced Soccer Simulator для +3DOS.

goodboy
31.10.2009, 12:14
посмотри на WoS утилиты от Kobrahsoft (к сожалению не все программы есть в наличии). к одной есть даже небольшая брошурка по адаптации программ с ленты на диск.

ftp://ftp.worldofspectrum.org/pub/sinclair/games-info/s/SP5TapeTo+3DiscUtility.pdf

Addison
31.10.2009, 20:22
утилиты от Kobrahsoft

ftp://ftp.worldofspectrum.org/pub/sinclair/games-info/s/SP7TapeTo+3DiscUtility.zip

в архиве проще скачивать.

Addison
16.11.2009, 22:34
:v2_yahoo: Ну вот и появилась нормальная программная поддержка для платформы ZX+3! Моими силами было адаптированно несколько игр, в том числе, и адаптация меню отгрузок в двух моих любимых играх. Несколько из них было выловлено с WOS, как незащищенные и легко копируемые. Все эти 22 игры плюс одна новая портированная с Атари лежат здесь! (http://zx.pk.ru/showpost.php?p=141075&postcount=5)

И вдруг на этом скудном результате вырастают такие плоды, недавно на меня вышло несколько сторонников платформы, которые либо уже купили ZX+3 и все переделали, как я предлагал, либо планируют это сделать в ближайшие дни!!! И о чудо, еще и нарыли хороший сайт с большой коллекцией игр (http://plus3.wz.cz/index.html). Причем, игры адаптированы честно! Я специально смотрел прям по моей задумки все сделано, расширения файлов подобраны нормально, все файлы игры просматриваются обычной командой CAT, все копируется, переносится, да еще и размещено на полноценных образах 710 кб! Просто конфетка. Диски снабжены простеньким но вполне удобным бутом! Среди игр встречаются даже ХИТЫ! Например, ELITE! Ведь сколько я искал, так и не нашел ее нигде... Пришлось самому делать. К чести сказать, что версия игры даже другая не та, которую я взял за основу. Однако адаптация неполная и меню отгрузок в варианте TAP... Полагаю и другие игры не имеют адаптированных меню отгрузок. Но это нормально, все доморощенные коллекции на TR-DOS были во многом похожи. А помнится, сколько было криков всяких Летаргиков, Сцлев и т.п. типа надо адаптировать до конца, а так это халтура. Вот посмотрите, чел нашлепал не заморачиваясь и правильно сделал! А отгрузки это дело следующего этапа. Короче я счастлив таким пополнением игр и счастлив появлением новых активных юзеров ZX+3. Все-таки не зря старался и протаптывал тропинку! Go-Go!:v2_yahoo: Догнать и обогнать TR-DOS!

Скачать 107 игр! (http://narod.ru/disk/15117290000/107GAMES.rar.html)

Диск №1
1. AGENT X2
2. ANARCHY
3. ARC OF YESOD
4. APB
5. ARKANOID
6. ATV-SIM
7. AUTOCRAS
8. BARBARIAN 1
9. BARBARIAN 2
10. BARBARIAN 3
11. BASKET
12. BENNY HILL
13. BIONIC COMMANDO
14. BLOCK DIZZY
15. BOMB JACK 1
16. BOMB JACK 2
17. BATTLE SHIPS

Диск №2
17. BOOVIE 1
18. BOOVIE 2
19. BOULDER DASH 1
20. BOULDER DASH 2
21. BOULDER DASH 3
22. BOULDER DASH 4
23. CABAL
24. CAPTAIN FIZZ
25. CASTLE MASTER 1
26. CASTLE MASTER 2
27. CHASE HQ
28. CHUBBY GRISTLE
29. COMMANDO,CYCLONE
30. CRAZY CARS 2
31. DAN DARE 1
32. DAN DARE 2
33. DAN DARE 3

Диск №3
34. DESTINY
35. DIZZY 5
36. DIZZY 6
37. DIZZY 7
38. BUBBLE DIZZY
39. PANIC DIZZY
40. DRILLER
41. DRAGON NINJA
42. TOTAL ECLIPSE 1
43. TOTAL ECLIPSE 2
44. ELITE
45. ESCAPE FROM THE PLANET OF THE ROBOT MONSTERS
46. EXOLON
47. FAST FOOD DIZZY
48. FINAL ASSAULT

Диск №4
49. GHOULS AND GHOSTS
50. GOLDEN AXE
51. GREEN BERET
52. GRELL AND FALLA
53. GUNHEAD
54. GUNSTAR
55. H.A.T.E.
56. HERCULES
57. HEROQUEST
58. HORACE
59. HUDSON HAWK

Диск №5
60. HUNT FOR RED OCTOBER
61. HYSTERIA
62. ICE CLIMBER
63. IKARI WARRIORS
64. INDIANA JONES 3
65. IRONMAN
66. IRON SOLDIER
67. ISC
68. JACKAL
69. JAZZY
70. JMENO RUZE
71. JUGGERNAUT
72. JW DARTS
73. LEE ENFIELD
74. 007 LICENCE TO KILL

Диск №6
75. DR MARIO
76. LONE WOLF
77. LITTLE PUF
78. MAGMAX
79. MINES
80. MINESWEEPER
81. MONACO GP
82. MOON ALERT
83. MUNCHER
84. MIDNIGHT RESISTANCE
85. NELLIE
86. NETHER EARTH
87. NIBBLES
88. OXOTA
89. PROTENIS

Диск №7
90. NAVY SEALS 1
91. NAVY SEALS 2
92. NINJA HAMSTER
93. NORTH AND SOUTH
94. PACMANIA
95. PAPER BOY 2
96. PASSIANS
97. PLATOON
98. RANGERS

Диск №8
99. RENAGADE
100. REX 1
101. REX 2
102. RICK DANGEROUS
103. RISE OUT
104. ROAD BLASTERS
105. ROLLING THUNDER
106. R-TYPE
107. R XONIX

loxic
17.11.2009, 00:05
Про прикладные программы не забываем:
14307

:v2_yahoo:

loxic
17.11.2009, 00:37
Вот интересный сайтик про +3
http://www.secarica.ro/html/zx_zone.html

Vadim
17.11.2009, 06:31
И да, и нет. Смотря чем похожа. Файлы имеют расширение так же, как и в МС-ДОС. Организация данных на диске, вполне возможно, чем-то похожа на FAT, по крайней мере, упаковка диска уже не требуется... Имеются команды работы с файлами по "*".

Файловая система у дисков +3 DOS (как и у AMSDOS) - CP/M. Как-то я выписывал логические параметры именно для этого формата (По сути как и у Amstrad CPC). Сейчас не помню. Размер блока вроде бы 4 физических сектора, т.е. 2Кб. (но может быть 2 сектора). В системе CP/M логическое пространство диска делится на 2 части: область оглавления (директория, католог) и область данных. Весь диск делится на блоки равные 2^n * 128 (где 128 - размер записи которыми оперирует система при работе с файлами)
В нашем случае n=4. Каталог обычно занимает 2 или 4 блока, остальное - область данных диска. На каждый файл имеется описатель (directory entry) из 32 байт. Я не буду досконально описывать его. Надо будет - поищите в инете. Скажу вкратце. Первый байт - код user area (0-15) потом 11 символов имени (8 имя +3 расширение) потом код экстента, 15-й байт показывает кол-во записей в экстенте. А следующие 16 байт содержат информацию о расположении файла на диске. В одном описателе хранится данные о 8-и блоках которые занимает файл. Перечисляются номера занятых блоков. Если файл состоит более чем из 8 блоков, то формируется следующий экстент и т.д. К слову сказать, если диск содержит менее 256 блоков, то в описателе номера блоков задаются не 16-и битными словами, а байтами и описатель содержит инфу о 16 занимаемых файлом блоках.
Формат не очень удобный, но есть возможность писать в участки диска которые занимают удаленные файлы и обходить бэды. Как? Легко. При проверке диска собирается инфа о биты секторах, формируется спец файл который из них и состоит. Файлу дается имя, к примеру - $badsect и он делается скрытым. Вот и всё.
А фат придумал билл гейтс. Это его личное изобретение. Фат появилась ещё в их дисковом бейсике который они поставили на IBM PC. Он отделил описатели файлов от информации о размещении файла на диске которую он перенес в таблицу FAT (File allocation table).

Vadim
17.11.2009, 09:12
Кстати, не знаю может где и была ссылка, но ведь есть сайт с образами

http://www.tzxvault.org/disks.htm

Довольно много игр. и на Wos тоже немало...[COLOR="Silver"]

Addison
17.11.2009, 18:35
и на Wos тоже немало
Понимаешь, само по себе наличие образов дисков для +3 ДОс еще ничего не значит. Если почитаешь внимательно тему то поймешь почему.
Возьми тот же WOS. Образы сброшены с оригинальных дисков, каталог на них не просматривается, так как они защищены. Следовательно, скопировать на другой образ диска ты ничего не можешь, и что самое главное, перенеся той утилитой, про которую я писал, на реальный диск, ты не сможешь запустить игру на реальном Спектруме, он сбрасывает. Утилита переносит только нормально организованный диск без всяких препонов и защит. Возможно, есть утилиты, которые могут корректно переносить и такие образы, раз их в образы загнали, значит можно и обратно... Но я таких утилит не нашел. Да и если найти, все рано это не решает проблему, хотца свободы, чтобы как на TR-DOS были диски с кучей игр, чтобы можно было перекидывать туда сюда. Тем более что есть поддержка полноценного объема 706 кб...
В этом вся проблема. На WOS 80, а может 90 процентов - оригинальные образы с защитой, кроме того, не все любимые игры там есть, а скорее есть лишь немногие, на +3 дисках шлепали новые игры, весь любимый нами объем программ на тапках, лишь немногие хиты были зарелизены на +3 дисках... В инете я находил разные сайты с образами и до этих ваших ссылок, но, как правило, сразу про них забывал из-за того, что там нет известных программ (любимых) и нет абсолютной четкости файловой системы, все замуровано, запрятано, защищено.

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

В этом суть адаптации, которую я предлагаю.

А если уж юзаться просто спеком каким-нибудь... так это и эмулятора хватит.

Я стремлюсь к нормальной коллекции ходовых игр, адаптированных для +3, чтобы было все тоже, что и на TR-DOS, только лучше и удобнее. Чтобы был старый добрый спек с дисководом и с нормальным доступом к файлам. Я не особо "за" винчестер, так как теряется дух Спектрума, для меня Спектрум - Спектрум с дисководом не более. Хочется реально воспринимать идеалы минувшего :).

drbars
02.12.2009, 01:53
Не так давно пробовал на эмуляторе по break остановить загрузку образа... не получилось. Как в командную стоку +3DOS попасть?

Vadim
02.12.2009, 06:04
На сайте wos есть документация. В т.ч. фирменное описание +3 от Амстрада. Там есть и user manual и в нём же некое подобие инструкции для программистов. И порт 1FFD описан и системные вызовы +3DOS и содержимое страниц ПЗУ, что и где там сидит. Формат дискет логический и физический тоже там есть. Написано там, так же, что есть "обычные" и "загрузочные" дискеты. В загрузочной есть некий загрузчик который не является файлом, а что-то на типа boot-сектора, обнаружив который +3Дос его считывает и запускает. Этот момент я детально исследовать не стал, но полагаю, что на дискете может и не быть файлов, а данные записаны в секторы диска подряд (т.н. raw mode). Что с ними делать? Дизассемблировать загрузчик, данные преобразовать в файлы. Сделать нормальный, обычный загрузчик и радоваться. Дизасм там несложный, вернее даже очень простой.

вот сцылко: ftp://ftp.worldofspectrum.org/pub/sinclair/books/ZXSpectrum+3Manual.zip

Addison
02.12.2009, 18:30
Не так давно пробовал на эмуляторе по break остановить загрузку образа... не получилось. Как в командную стоку +3DOS попасть?

Ты, наверное, про возврат в Бейсик при остановке загрузки?

Здесь все тоже самое, что и в загрузчике для TR-DOS или TAP. Если загрузчик написан на бейсике, то ты можешь брейком его остановить, если он написан в коде, то брейк жать бестолку! Брейк - это "фишка" бейсика, она в нем штатно сидит для остановки бейсик программ.
Поэтому рекомендую почитать литературу на виртуал TR-DOS сайте - две книжки:
1. Адаптация программ к системе TR-DOS (Родионов).
2. Тайники ZX и как установить вечную жизнь.

Сразу хочу тебя разочаровать, большинство образов оригинальных дисков +3 не то чтобы имеют кодовый загрузчик, а в принципе защищены или нестандартно записаны или и то и другое вместе, поэтому даже посмотреть, что на диске лежит нельзя простым способом. Ковырять эти диски сложно. Они не переносятся штатными средствами. Например, у меня есть утилита для перегонки образов на реальный диск, так вот она перегоняет образ на диск, а игра после этого не работает... Почему? НЕ ЗНАЮ! Никто ничего про это не пишет, разбираться с этим долго.

Я с этим не стал связываться, а решил использовать свой детский опыт общения со Спеком, а, следовательно, с TR-DOS и TAP. Там все вскрываю, затем перетаскиваю на обычный образ диска +3, который получается при штатном форматировании самим Спеком.


Если конкретно по вопросу остановки загрузчика, то тут могу кратко сказать!

1. Бейсик загрузчик останавливают путем замены оператора load на merge, это позволяет снять автостарт. Помогает только тогда, когда программист не покурочил длины строк в бейсике или еще чего.

2. Кодовый загрузчик останавливается по точке прерывания, которая устанавливается в дебагере по адресу входа. Адрес входа это тот, который после загрузки кодового загрузчика записан - Randomize usr АДРЕС!

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

drbars
02.12.2009, 22:30
Нет, я далеко не новичок :) Скорее старичок. Просто +3DOS штука мною не исследованная.

Addison
02.12.2009, 23:58
Нет, я далеко не новичок
А ну тогда это просто "непривычка". +3DOS все тоже самое, там нет отличий особых, все подобно. А с дисками там невозможно работать через команды +3DOS, так как они нестандартно записаны.

Vadim
06.12.2009, 16:30
вы же не вскрывали оригинальные диски с TR-DOS, думаете там все просто было записано?

Клон. Список дисков в студию! Зачем сообщения удалил?

Ewgeny7
06.12.2009, 18:01
Vadim, обсуждение во "Флейме" в соответствующей теме. Сразу её найдешь :)

Addison
06.12.2009, 22:59
Задумал сделать коллекцию DIZZY на одном диске, причем, качественные версии с минимальными отличиями от оригинала. До этого я уже адаптировал части 1, 2, 3.5 и 5. Также в коллекции 107 игр западной адаптации на третьем диске имеются части 5,6 и7. То есть фактически не хватает только 3 и 4 части! Однако я все же решил все переделать. Мои адаптации были сделаны с образов tr-dos коллекций Волгодонска и Дупанова, эти версии оставляли желать лучшего, тогда я еще не отработал технологию переноса и выбирал варианты с легко раскрываемым загрузчиком, поэтому версии попались совсем кривые судя по вечным жизням, отсутствию музыки и т.п. Версии западной адаптации я толком не смотрел, но, судя по файлам игр, там тоже что-то делали, несколько непонятных блоков странного объема. В общем, я решил обратиться к образам кассет. Не уверен в их оригинальности, ксорок там нет, защиты как таковой тоже, просто применяется кодовый загрузчик, но что приятно, все заставки оригинальные, одним стандартным файлом 16384,6912, сама игра идет одним большим блоком, плюс один музыкальный блок, кроме соответственно первой части, так как там музыки АУ не было. Просмотр кода показал, что ничего лишнего там нет, все стройно и четко, посему считаю, что на этих тапках оригинальные образы кассет, а если и не совсем оригинальные, то с корректно снятой защитой и аккуратно структурированные.

DIZZY1

В теме Slider’а уже было обсуждение (http://zx.pk.ru/showpost.php?p=237476&postcount=580) по поводу проблемы не запуска этой части из под режима 128к. Я не буду сильно повторяться, скажу только то, что проблема в затирании системных переменных основным кодом игры. Существует множество способов решения этой проблемы, но я преследовал цель адаптировать как можно ближе к оригиналу, то есть хотел сохранить, как загружаемы блоки в исходном виде, так и те адреса, куда они грузятся, и произвести только минимальные доработки, без которых просто игра не пойдет в системе +3. В общем, я изменил только кодовый загрузчик, соответственно поменял процедуры чтения с ленты на процедуры чтения с диска и для обхода затирания системных переменных 128к загрузил кодовый загрузчик в нормальные адреса ОЗУ выше 23755. Однако, как в случае ленточной версии просто перенести загрузчик в системные переменные в машинном коде уже не получилось, так как процедуры +3 DOS в отличие от процедур ленты используют эти переменные. Поэтому я по максимуму сделал все в нормальных адресах ОЗУ: инициализацию ДОС, включение мотора, открытие файла для чтения, а уже непосредственно чтение и выключение мотора произвел из адресов системных переменных! К счастью процедура чтения файла эти переменные, которые затираются, не использует.
В итоге получилась качественная версия для +3 DOS с сохранение оригинальных блоков (картинки и самой игры) с изменением только загрузчика, что объективно и логично при адаптации.

DIZZY2

С этой частью пришлось повозиться. Она в отличие от всех других просто отказывалась работать в системе 128к в варианте ZX+3, даже при загрузке с тапки. И если первая часть глючила в любом ZX, для нее проблемой был режим 128к, то здесь глюк возникал только в системе +3. Причем если грузить с тапки в системе +3 в режиме 48к без музыки АУ все работало, как часы!
Долгие и кропотливые разбирательства позволили установить, что причиной этому есть переделка ПЗУ (банк 48к). Процедура RST38 была изменена! После ее выполнения банк памяти устанавливается в соответствие с переменной BANK_M. В стандартной синклеровской прошивке этого не было. Сделано это из-за того, что для +3DOS заюзана 7-я страница и ее периодически нужно включать, когда отрабатывается процедура +3DOS в бейсике. Поэтому если в игре банк памяти переключается некорректно (без сохранения содержимого порта 7FFDh в переменной BANK_M), то при возникновении прерывания первого рода IM1 отрабатывает процедура RST38 и меняет банк памяти на тот, который записан в переменной BANK_M. В случае DIZZY2 происходит несанкционированное переключение банка 6, куда подгружена музыка, на банк 0, где расположен основной код игр. Это приводит к зависанию в самом начале при воспроизведении приветственного крика.
Решить эту проблему можно. Если делать это в лоб, то, наверное, нужно в игре, где щелкаются банки добавить сохранение текущей настройки регистра 7FFDh в системной переменной BANK_M. Сделать это не так просто, нужно курочить код, делать выноски искать свободные места, причем переключений много и структура игрушки мне не известна, да и решение будет частным только для этой игры. А ведь наверняка такая проблема может возникнуть и в других играх!
Я придумал очень остроумное и хорошее решение!
Вот часть процедуры RST38, в которой происходит глюк:

3873h

BIT 4,(5C3Bh)
JR Z,387Ch
CALL 387Fh
Последняя команда и переключает это банк. Суть в том, что если 4-й флаг системы бейсик включен, то происходит переключения банка на 7-й и декремент ячейки в нем по адресу E600h – это, скорее всего, какая-то переменная +3DOS, которая создается в 7-ом банке при инициализации +3DOS. Но для функционирования игры это не нужно, поэтому в самом конце загрузки, когда +3DOS больше не будет использоваться, целесообразно сбросить 4-й флаг в системе бейсика, расположен он по адресу 5C3Bh. Исходно там содержится байт 221, при выключении 4-го бита будет 205!
Таким образом, очередной артефакт +3DOS лечится в загрузчике перед финальным RANDOMIZE USR путем введения POKE 23611,205!!!

Что касается остальной адаптации, то в отличие от оригинала все блоки я загрузил в бейсике в их оригинальные адреса, а не в машинном коде, так как это позволял адрес начала загрузки 24576 основного кодового блока. Подгрузка файла музыки в страницу 6 осуществил обычной процедурой LDIR в машинном коде, процедура предварительно подзагружается из файла с расширением ldr. Затем все затирается основным блоком игры, который грузится последним.


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

DIZZY5 - побежден в ходе упорных и кровопролитных боёв.

goodboy
17.01.2010, 22:26
помоги человеку из греции, а то он пытается грузить данные в страницы напрямую.
http://www.worldofspectrum.org/forums/showthread.php?t=28184

jerri
22.01.2010, 12:28
Клон а ты смотрел образа МОТ+3 и Корсариос+3 а то я их както защиты лишал
а как они работают понять так и не смог... их кстати один испанец гдето выкладывал

может даже и на ВОС

goodboy
22.01.2010, 13:39
их кстати один испанец гдето выкладывал
http://www.speccy.org/trastero/2007/300407/300407.htm

jerri
22.01.2010, 14:11
да да это оно :) я так тогда в структуре ДСК и не разобрался :)

Addison
26.01.2010, 21:02
goodboy, я как-то из бейсика и не стал пробовать банки щелкать, посчитал, что лучше сразу в код уйти. А челу там вроде народ помог.


jerri, я в код без дела не лазаю. И вообще я работаю с программами с тап и тр-дос. И переношу от туда, так как нужный софт именно там. На +3 образах в основном то, чего я и не видел никогда, там новое или релизы старых популярных хитов. В начале темы я обосновал почему не обращаюсь к образам +3.
Для адаптации с tap или с любого другого формата, когда имеется файлова идентификация знания формата dsk не нужно. Файлы при помощи эмулятора через память перетаскиваешь на диск обычными командами +3dos, далее пишешь загрузчик на бейсике или в коде. Для кода я вскоре напишу подробно, как это делается. Если есть какие-то конкретные вопросы задавай отвечу. Сам формат диска я не изучал, хотя планирую, мне это понадобится для написания полноценного бута/коммандера.

goodboy
26.01.2010, 21:49
А челу там вроде народ помог.

и кстати выложили ZX утилиты для конверсий с ленты на диск
http://nugget.no-ip.com/speccy-pics/+3disktools.rar

Addison
26.01.2010, 22:06
утилиты для конверсий с ленты на диск
вещь, наверное, полезная, но сейчас уже не очень актуальна, так как есть очень мощный способ перегонки через временные файлы на PC. Хотя тем, кто начнет, может и будет очень полезно воспользоваться этой утилитой. Щас я ее гляну, все зависит от качества интерфейса, если интерфейс слабый то едва ли стоит с ней заморачиваться, проще будет через эмуль гонять, тем более, что она не решает проблемы кодового загрузчика.

---------- Post added at 22:06 ---------- Previous post was at 22:00 ----------

А понятно, утилита непосредственно на dsk диске. Будет полезна для тех, кто работает на реале. Я такие встречал

Addison
23.02.2010, 15:40
Последнее время начали объявлять владельцы ZX-Spectrum+3, и что самое приятное, многие из них планируют пойти по пути встраивания 3,5'' дисковода. Следовательно, в скором времени стоит ожидать наращивание базы адаптированного софта (игр).
Я постараюсь опубликовать здесь еще ряд небольших статей, которые помогут значительно снизить трудоемкость работы по адаптации. Благодаря некоторым приемам перетащить игрушку с тапки на образ +3 при определенной сноровке потребует всего 15 минут работы. В общем, я ожидаю того же естественного процесса переноса софта, как был и с системой TR-DOS. Каждый будет перетаскивать то, что ему нужно, а в сумме мы получим неплохую базу игр! Возможно в далеком будущем отечественные производители, такие как АТМ, Пентагон и т.п. возможно задумаются о реализации +3 DOS в своих машинах! Но это мечты. ;)
Я полагаю, что пользователь, получивший в свое распоряжение ZX+3 с дисководом 3,5'', сразу же возжелает адаптировать ELITE или DIZZY. Первая уже имеется, вторая практически готова (имеется 5 частей). Конечно, кто-то захочет сделать свои варианты, той же ELITE несколько версий, например, в коллекции 107 игр, которую я здесь публиковал, адаптирована как раз другая ELITE, не 128к, которую сделал я. Однако там не доделано меню отгрузок. Также не сделана ELITE2/3 от В. Кладова. Ну и полно других хитов, которые захотят в первую очередь перенести на ZX+3 новоиспеченные его владельцы! Тем не менее, я прошел некоторый путь, и последователи невольно сместят свой взгляд в сторону другого не перенесенного софта и расширят тем самым общую базу.

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

Правила организации файлов игры при адаптации к +3DOS:

1. Использовать стандартный образ диска 173 кб.
2. Образ должен иметь только одну игру.
3. Образ должен называться также как игра.
4. Все файлы должны иметь по возможности стандартные расширения:
.BAS - файл бейсик программы,
.LDR - кодовый загрузчик,
.DAT - кодовый блок игры,
.SCR - файл заставки,
.BIN - альтернативное расширение для кодового блока,
.SAV - файл отгрузок.
5. Имена файлов должны иметь общую начальную часть, хотя бы 3-5 символов, лучше иметь одинаковые имена с использованием индексов в случаях, когда расширение файлов совпадает.
6. Образ должен содержать фал DISK (без расширения), в котором на бейсике написана строчка загрузки основного загрузчика игры. Естественно, с реализацией автостарта, как самого файла DISK, так и самого загрузчика игры. Это позволит пускать любой образ из основного меню по опции LOADER.

Это основные, на мой взгляд, разумные правила, которые позволят создать базу игр, которые легко копируются с диска на диск и удобны в использовании. Достаточно на PC иметь папку с такими образами, которые легко сортируются по алфавиту. Стоит загрузить в эмулятор или на реальный диск этот образ, как вы мгновенно получается работоспособную игру с загрузкой по опции LOADER. Выбранная система расширений позволит легко копировать, разбираться в структуре игры и т.п. Важно в загрузчике использовать именно расширение BAS, так как многие самопальные буты используют его по фильтру. Так делал я, и так делали иностранцы в коллекции из 107 игр. Кстати, они заочно выполнили все мои правила, за исключением использования одного образа для одной игры. Поэтому эту коллекцию еще предстоит разбить на 107 независимых образов с автозапуском.
Считаю что формирование коллекций на больших дисках - это дело индивидуальное.
В жизни проще использовать несколько дискет и перед игрой перебрасывать туда с ПЦ образ. Дисков мало, хранить их не хочется, да и надежнее на PC.

Кто имеет 10-ок любимых игр может загнать их легко на одну большую дискету 706 кб. При этом ему хватит эмулятора SPIN команды COPY "a:name*.*" to "b:". В SPIN в "b" загружается чистый образ 706 кб, а в "а" по очереди диски с играми, далее в бейсике пишется строка с copy - Enter! name - это та самая единая часть имени всех файлов, о которой говорилось в предложенных правилах. Потом полученный образ 706 кб, при помощи утилиты (http://zx.pk.ru/showthread.php?p=259391#post259391), о которой я писал, загоняется на реальный диск и юзается на реальном +3!

Vadim
26.07.2012, 08:46
Моя коллекция "открытых" игр для +3 выглядит несколько иначе. Как и tr-dos или TAP коллекция, созданы каталоги по буквам алфавита. Внутри, для каждой игры создаем подкаталог по её полному имени, уже внутри помещаю файлы игры, а так же, запакованный в zip образ dsk с игрой. Образ этот нужен, что бы быстро запустить игру из под эмуля. А файлы игры - для быстрой сборки дискет 720К. Использую утилиту для работы с образами CPCFS090. Собрать образ из каталога, куда накидали файлов игр - примерно 15 сек. В образе, под именем disk лежит один из бутов, портированных мною. Он позволяет отображать "длинные" имена файлов. Машинокодовые загрузчики я помещаю в REM строку, а не выделяю в отдельный LDR файл. Мне так удобнее. И частенько игра занимает всего 1 файл (если загрузчик на асме).

Addison
26.07.2012, 18:53
Я ничего не помещал в REM так как так удобнее все на ладони, зачем расковыривать все, а потом опять заковыривать? Лучше пусть все будет открытым.

Vadim
27.07.2012, 06:38
Я ничего не помещал в REM так как так удобнее все на ладони, зачем расковыривать все, а потом опять заковыривать?

Я делаю не так. Т.е. не "заковыриваю", не делаю пустую REM строку и потом туда помещаю код (так я делал в начале 90-х). А сделал я вот как: На асме написал так, что у меня сразу формируется файл в формате +3DOS. Т.е. в исходнике коды заголовка, потом коды бейсика. И соотв. вставка машинного кода. Т.к. писать "бейсиком" в асме весьма неудобно, то у меня там из бейсик команд самый минимум - установка стека (в общем-то оно и не нужно, ставлю для некоторых программ, которые возвращают управление после загрузки кодов в бейсик, что бы например читы поставить в виде POKE убрав REM перед ним) и собственно команда запуска кодов.

P.S. Есть ещё, кстати, вариант, размещения кодов в области переменных бейсика.

Addison
27.07.2012, 11:55
Vadim, я придерживался принципа, чтобы любой ребенок мог потом открыть посмотреть. Совсем нетрудно написать бейсик загрузчик.

Vadim
27.07.2012, 12:06
я придерживался принципа, чтобы любой ребенок мог потом открыть посмотреть. Совсем нетрудно написать бейсик загрузчик.
Это понятно. Просто я то исходники не удаляю. Для меня оно всегда открыто. А грузить в странички из бейсика +3 не очень то просто.

psb
27.07.2012, 12:07
читы поставить в виде POKE убрав REM перед ним
а чо, нормальный метод "для людей" :))) нахрена люди интры с чит-меню делают - не понятно...

Addison
27.07.2012, 12:42
А грузить в странички из бейсика +3 не очень то просто
если игра на диске одна (а так оно и должно быть, это же образы дисков), то загрузчик называется именем DISK и тогда из меню грузится автоматом, так же как и с кассеты. Нажимаешь ресет, вставляешь диск жмешь энтер, так как loader там первая опция и вуаля пошла загрузка. так все +3 диски сделаны, даже фирменные.

---------- Post added at 12:42 ---------- Previous post was at 12:39 ----------

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

Vadim
29.07.2012, 10:12
если игра на диске одна (а так оно и должно быть, это же образы дисков), то загрузчик называется именем DISK и тогда из меню грузится автоматом, так же как и с кассеты. Нажимаешь ресет, вставляешь диск жмешь энтер, так как loader там первая опция и вуаля пошла загрузка. так все +3 диски сделаны, даже фирменные.

---------- Post added at 12:42 ---------- Previous post was at 12:39 ----------

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

9 строк чуши не имеющей отношения к делу. Я о чём тебе написал? О _страницах_. Ты в курсе что это? Как ты загрузишь из бейсика код в страницу? Ты пробовал? В ленточных версиях с бейсик загрузчиком делается так: код страницы имеет в самом начале небольшую программку, которая переключает страницы и перебрасывает в нее код, потом восстанавливает страницу 0. Но это есть в мизерном проценте игр. Остальные имеют кодовые загрузчики и проблем с помещением кода в страницу там нет. Просто из бейсика +3 попробуй или выдать в 7FFD значение, скажем 17. Или в переменную помести. Что будет? Вижу, что ты даже не пытался. Скажу сразу - по приходу прерывания восстанавливается страница 0. Т.е. из бейсика управлять страничками в +3 никак нельзя. Поэтому я и делаю машинокодовые загрузчики, а для возможности вставки поке, делаю возврат из кодов в бейсик после погрузки всего. Если есть такая возможность, разумеется.

Vadim
29.07.2012, 14:59
нахрена люди интры с чит-меню делают - не понятно...
Мне - не понятно.

psb
29.07.2012, 17:30
ну, если вы придерживаетесь принципа "чтобы каждый мог покопаться, внести poke", прикладывайте сразу дизассемблированную asm-версию с автосборщиком:))) уж копаться так копаться:)
а для людей нужно просто встроенное чит-меню, нафиг геймерам лезть вовнутрь...

Addison
19.11.2012, 22:34
Я о чём тебе написал? О _страницах_
Страницы грузят через код это и так ясно.
Речь шла о простом варианте адаптации, например, для 48к игр...

goodboy
20.11.2012, 00:06
Клон, а как мне при просмотре каталога узнать начальный адрес кодового блока и его длину в байтах ?

Vadim
20.11.2012, 06:48
а как мне при просмотре каталога узнать начальный адрес кодового блока и его длину в байтах ?
Клон этого не знает. Читай описание +3dos, в заголовках файлов эта инфа содержится. Смотри мой исх. бута zyx для +3. У каждого файла в +3DOS есть запись 128 байт, перед файлом. В ней сигнатура и данные для спеткрума. А файл сам, является нормальным файлом CP/M. Т.е. его длина кратна 128 байт. Иными словами, его можно рассматривать как набор записей по 128 байт. Запись номер 0 является заголовком, хеадером файла.

The format of the header record is as follows:

Bytes 0...7 - +3DOS signature - 'PLUS3DOS'
Byte 8 - 1Ah (26) Soft-EOF (end of file)
Byte 9 - Issue number
Byte 10 - Version number
Bytes 11...14 - Length of the file in bytes, 32 bit number,
least significant byte in lowest address
Bytes 15...22 - +3 BASIC header data
Bytes 23...126 - Reserved (set to 0)
Byte 127 - Checksum (sum of bytes 0...126 modulo 256)

Байты 15-22
Note that +3 BASIC makes use of the first 7 of these 8 bytes as
follows:

+---------------+-------+-------+-------+-------+-------+-------+-------+
| BYTE | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
+---------------+-------+-------+-------+-------+-------+-------+-------+
| Program 0 file length 8000h or LINE offset to prog |
| Numeric array 1 file length xxx name xxx xxx |
| Character array 2 file length xxx name xxx xxx |
| CODE or SCREEN$ 3 file length load address xxx xxx |
+-----------------------------------------------------------------------+

goodboy
20.11.2012, 10:45
извиняюсь, не уточнил.
как это сделать простым способом (из бейсика).
есть аналог команды LIST ?

Vadim
20.11.2012, 11:42
Насколько я знаю - нет. Я делаю так: экспортирую файлы из образа DSK в файлы. Открываю их HEX редактором, сразу видно и старт и длину.Можно и не экспортировать, просто у меня получалась логическая цепочка, что это было нужно, потом тем же редактором подрезал файл, что бы он точно соотв. длине, и удалял заголовок 128 байт. Всё это делалось для переброски в trdos. Для обратного действия я написал утилиту под QDOS для пришивания хеадера к файлу из образа SCL.

goodboy
20.11.2012, 11:45
понятно, а вообще есть утилита под WIN (кажется BlockEditor), она позволяет просматривать содержимое диска и экспортировать файлы.

Addison
20.11.2012, 11:49
Клон этого не знает.
Не занимайся провокацией в моей теме.
Создавай с Гудбоем свою и там обсуждай свои вопросы, чего я знаю или не знаю я доказал своими адаптированными играми, в том числе и с загрузчиками в машинном коде. Моей адаптацией игры Elite к +3dos пользуется весь мир, причем она получилась даже лучше тех адаптаций, которые были сделаны для TR-DOS.

Vadim
20.11.2012, 12:08
понятно, а вообще есть утилита под WIN (кажется BlockEditor)
Да, очень полезная утилита. Она понимает много форматов, в т.ч. TZX, удобно распаковывать блоки из tzx файла. Хотя там есть минусы. И с +3 умеет работать, но я её не применял для этих целей, нашёл позднее уже.


Моей адаптацией игры Elite к +3dos пользуется весь мир, причем она получилась даже лучше тех адаптаций, которые были сделаны для TR-DOS.
О да, ты велик!! Только судя по той тупости, что ты писал выше видно, что знания твои крайне скудны. Да, сделал адаптацию одной игры как полагается и что? Гордиться до скончания лет? Где твои кодовые загрузчики? Сколько ты игр адаптировал? С горстку может и наберётся. Ты даже мотор отключать не научился, а это даже из бейсика делается легко.

Korwin
09.10.2013, 12:17
Скачать 107 игр! (http://narod.ru/disk/15117290000/107GAMES.rar.html)

скачать 22 игры для +3DOS (http://narod.ru/disk/14501006000/22GAMES.rar.html)
Ссылки сдохли, хвост облез.

ZX_NOVOSIB
27.03.2015, 20:40
Сделано это из-за того, что для +3DOS заюзана 7-я страница и ее периодически нужно включать, когда отрабатывается процедура +3DOS в бейсике. Поэтому если в игре банк памяти переключается некорректно (без сохранения содержимого порта 7FFDh в переменной BANK_M), то при возникновении прерывания первого рода IM1 отрабатывает процедура RST38 и меняет банк памяти на тот, который записан в переменной BANK_M. В случае DIZZY2 происходит несанкционированное переключение банка 6, куда подгружена музыка, на банк 0, где расположен основной код игр. Это приводит к зависанию в самом начале при воспроизведении приветственного крика.

Всю тему читал, и смежные тоже читал, но так и не могу многие вещи понять, голова дымится уже. Я думал, что +2AB и +3 - это одно и тоже. Токо в +2AB контроллер дисковода обрезали (ПЗУ у них кстати одно на двоих, просто есть версия пзу 4.0, её в основном ставили в +3; и есть 4.1, её в основном ставили в +2AB), но получается, что +3 всё же отличается в плане совместимости от +2AB, причем в худшую сторону?

Спрошу проще, на конкретном примере. У меня есть +2B, в него воткнут BDI и Multiface3. Я гружу TR-DOS игрушки, они прекрасно грузятся и работают. Мультифейсом снапшоты этих игрушек прекрасно сохраняются на ленту, и потом прекрасно загружаются и работают. На +3 все эти действия будут столь же прекрасны? (если снапшоты уже не на ленту сейвить, а на дисковод +3) Или "из-за 7-ой страницы" уже будут какие-то проблемы, как в вышеприведенной диззи-2?

И второй момент. Как в +3DOS правильно сделать файл DISK., чтобы он запускался из Loader'a? В спектакуляторе делаю файл в бейсике, сохраняю его как DISK, по нажатию на Loader он загружается, но не автостартует! а просто выдается сообщение O.K. типа загружено, как будто я MERGE делал. Пробовал сохранить так: SAVE "a: DISK" LINE 1 - один хрен не автостартует. В чём проблема?

goodboy
27.03.2015, 21:53
На +3 все эти действия будут столь же прекрасны? (если снапшоты уже не на ленту сейвить, а на дисковод +3)
а что мешает проверить под эмулем ?

ZX_NOVOSIB
27.03.2015, 23:17
а что мешает проверить под эмулем ?мешает отсутствие адекватного эмуля, способного одновременно сэмулировать и +3 и BDI и MF3. Через какие-то костыли, это, с горем пополам, могут сэмулировать 2 эмуля: RealSpectrum и x128. Но обоим эмулям доверия нет. Они врут. Я по реалу ориентируюсь, ведь в конечном итоге всё это для реала. Причем RS врёт в пессимистическую сторону, т.е. в нём глючит то, что на реале отлично работает. А x128 врёт в оптимистическую сторону, т.е. в нём проходит то, что не проходит у меня на реале.

Ну а вообще, +3, из-за этой 7-ой страницы, получается более капризен чем +2AB? Или проблема только в Dizzy-2?

Или ты имел ввиду, что мне надо, взяв какую-нибудь явно проблемную игру, протестить на эмуле просто связку +2AB+MF3, а потом +3+MF? Я это сделал:Скачал оригинальную Dizzy-2 c zxdenied.ru, попробовал её запустить с лоадера в +2AB - сбрасывается. Через USR0 - запускается. Сделал tap-снапшот. Этот снапшот потом успешно грузится просто из лоадера (usr0 уже не требуется)

Поменял модель на +3. Из лоадера тоже сбрасывается, из usr0 тоже работает. Сделал снапшот на +3 диск, потом загрузил его из лоадера (назвал DISK). Всё работает. Не смотря на то, что для загрузки снапшота использовалась +3DOS(?), юзалась(?) 7-ая страница, всё прошло гладко. Получается +3 не уступает в совместимости своему бездисководному брату?

И почему, блин, когда я в MF3 называю снапшот DISK, то он потом из лоадера не только загружается, но и автостартует. А когда я в бейсике набиваю програмку, сохраняю её как DISK, то она из лоадера просто грузится, но не автостартует? Или это глюки эмуля и на реале всё будет окей?

goodboy
27.03.2015, 23:56
Или ты имел ввиду, что мне надо, взяв какую-нибудь явно проблемную игру, протестить на эмуле просто связку +2AB+MF3, а потом +3+MF? Я это сделал:
да,да,да
dizzy2 слишком простая (используется только одна страница для музыки)
скинь что-нибудь посолидней (типа кастлевании)

ZX_NOVOSIB
28.03.2015, 00:36
Протестил на спекуляторе тап-версию кастлевании. На диск +3 снапшоты и сохраняются и грузятся. И это не смотря на то, что автор в игре не сделал нормальной паузы, а пауза мультифейсу очень желательна. Но всё и так работает. Токо бордюр портится, т.е. сама игра цвет бордюра не обновляет наврено вообще никогда. Хорошо всё-таки, что мы ром MF3 подкорректировали и теперь проблемы с бордером нет даже в таких играх.

Какую бы еще крутую игру на +3 потестить..

goodboy
28.03.2015, 01:32
NavySeals/TotalRecall
выложи диск с скинутой прогой - гляну лоадер.
(мне сейчас некогда с ромами мультифейса разбираться)

Djoni
28.03.2015, 06:17
Всю тему читал, и смежные тоже читал, но так и не могу многие вещи понять, голова дымится уже. Я думал, что +2AB и +3 - это одно и тоже. Токо в +2AB контроллер дисковода обрезали (ПЗУ у них кстати одно на двоих, просто есть версия пзу 4.0, её в основном ставили в +3; и есть 4.1, её в основном ставили в +2AB), но получается, что +3 всё же отличается в плане совместимости от +2AB, причем в худшую сторону?

Спрошу проще, на конкретном примере. У меня есть +2B, в него воткнут BDI и Multiface3. Я гружу TR-DOS игрушки, они прекрасно грузятся и работают. Мультифейсом снапшоты этих игрушек прекрасно сохраняются на ленту, и потом прекрасно загружаются и работают. На +3 все эти действия будут столь же прекрасны? (если снапшоты уже не на ленту сейвить, а на дисковод +3) Или "из-за 7-ой страницы" уже будут какие-то проблемы, как в вышеприведенной диззи-2?

И второй момент. Как в +3DOS правильно сделать файл DISK., чтобы он запускался из Loader'a? В спектакуляторе делаю файл в бейсике, сохраняю его как DISK, по нажатию на Loader он загружается, но не автостартует! а просто выдается сообщение O.K. типа загружено, как будто я MERGE делал. Пробовал сохранить так: SAVE "a: DISK" LINE 1 - один хрен не автостартует. В чём проблема?


В +3 был добавлен контролер дисковода в места мафона.
+3DOS для своих нужд использует 7-ю страницу как и редактор бейсика +3
Фирменный софт под +3 туда не лезет наш нужно адаптировать.

При загрузке с магнитофона или BDI всё будет также работать как и на на +2B.

Для +2B можно попробовать купить вот такую штуку http://www.ebay.com/itm/SDI-1-ZX-Spectrum-2a-b-External-Floppy-Disk-Interface-Bus-Expander-Drive-/131449893043?nma=true&si=ekTCYuVjNAKFcWLJZr7n4LmM6q0%253D&orig_cvip=true&rt=nc&_trksid=p2047675.l2557

Документ http://www.mediafire.com/view/7enwx2stokj96w2/SDI-1_User_Guide.pdf

goodboy
28.03.2015, 10:22
почему, блин, когда я в MF3 называю снапшот DISK, то он потом из лоадера не только загружается, но и автостартует. А когда я в бейсике набиваю програмку, сохраняю её как DISK, то она из лоадера просто грузится, но не автостартует? Или это глюки эмуля и на реале всё будет окей?

при сохранении программы на бейсике можно указать строку для автостарта.
SAVE "DISK" LINE xxxxx

ZX_NOVOSIB
28.03.2015, 15:55
(мне сейчас некогда с ромами мультифейса разбираться)с ромом мультифейса я тебя не просил разбираться. Я ж писал уже неоднократно, что мы с SoftLight'ом сделали в роме MF3 вечный черный бордюр, как раз для игр, в которых цвет бордюра устанавливается только один раз, либо после гейм овера. Так что проблему с бордюром можно считать решенной. А вот если кто-то поразбирался бы с ромом +3 и сделал бы там не токо пункт TR-DOS, но и корректный возврат в стартовое меню - был бы благодарен по гроб жизни этому человеку :)

выложи диск с скинутой прогой - гляну лоадер.

при сохранении программы на бейсике можно указать строку для автостарта.
SAVE "DISK" LINE xxxxx про LINE я в курсе. Всё, я разобрался с автостартом, работает. Просто я натолкнулся на некий глюк +3 или +3DOS, но про него не хочу щас. Главное я разобрался, и DISK щас у меня автостартует, как и положено.

NavySeals/TotalRecallпогоди, а какой смысл тестить эти игры на +3, ежели они изначально и разрабатывались под +3, с учетом его особенностей? Или я что-то недопонял?

ZX_NOVOSIB
28.03.2015, 15:58
При загрузке с магнитофона или BDI всё будет также работать как и на на +2B.ты же выше писал, что "наш нужно адаптировать", а наш это как раз софт для BDI. У меня в голове эти две фразы не уживаются :) Можно пример нашего софта, лезущего в 7-ую страницу?


+3DOS для своих нужд использует 7-ю страницу как и редактор бейсика +3Выше я приводил пример с Dizzy-2, она не запускается из +3 бейсика, Клон объяснил это тем, что возникает конфликт между +3DOS и игрой, но может он ошибся, и конфликт возникает не между +3DOS и игрой, а между +3BASIC и игрой? Ведь игра точно также ведет себя на +2AB, а там +3DOS не лезет в 7-ую страницу.

А когда мультифейс загружает/выгружает снапшот на диск, он тоже юзает +3DOS (которая в свою очередь юзает 7-ю страницу), или нет? Такое ощущение что нет, ведь когда я загружаю Dizzy-2 через usr0, потом скидываю мультифейсом снапшот на диск, то потом, для загрузки этго снапшота мне уже не обязательно вводить usr0, всё и так работает. Фактически MF3 отвязывает Dizzy-2 от привязанности к usr0.

P.S. За штуку, превращающую +2AB в +3 спасибо. Но её нет в свободной продаже, я не нашёл. И цены у неё нет фиксированной.

goodboy
28.03.2015, 16:31
с ромом мультифейса я тебя не просил разбиратьсяу меня не-было возможности найти ром/запустить эмуль.
вот я и просил готовый результат - игру скинутую на диск.
погоди, а какой смысл тестить эти игры на +3, ежели они изначально и разрабатывались под +3, с учетом его особенностей? Или я что-то недопонял?тестить надо работоспособность скинутой версии.

Djoni
28.03.2015, 17:08
ты же выше писал, что "наш нужно адаптировать", а наш это как раз софт для BDI. У меня в голове эти две фразы не уживаются :) Можно пример нашего софта, лезущего в 7-ую страницу?

Выше я приводил пример с Dizzy-2, она не запускается из +3 бейсика, Клон объяснил это тем, что возникает конфликт между +3DOS и игрой, но может он ошибся, и конфликт возникает не между +3DOS и игрой, а между +3BASIC и игрой? Ведь игра точно также ведет себя на +2AB, а там +3DOS не лезет в 7-ую страницу.

А когда мультифейс загружает/выгружает снапшот на диск, он тоже юзает +3DOS (которая в свою очередь юзает 7-ю страницу), или нет? Такое ощущение что нет, ведь когда я загружаю Dizzy-2 через usr0, потом скидываю мультифейсом снапшот на диск, то потом, для загрузки этго снапшота мне уже не обязательно вводить usr0, всё и так работает. Фактически MF3 отвязывает Dizzy-2 от привязанности к usr0.

P.S. За штуку, превращающую +2AB в +3 спасибо. Но её нет в свободной продаже, я не нашёл. И цены у неё нет фиксированной.

Я тут не совсем подробно написал , проблема при связке +3 и BDI.:v2_dizzy_facepalm:

TR-DOS версии фирменных игр адаптированные нашими программистами и некоторые журналы (наши) я уже не говорю про системный софт лезут в порт #1FFD +3 (+2AB) для зашиты от теневого сервис монитора компьютера Scorpion или просто для определения модели компьютера,
запись в порт #1FFD некорректных значений вызывает зависание или сброс программы.

Может проблема в том что программа Dizzy-2 затирает системные переменные бейсика +3 :v2_conf2:

Vadim
28.03.2015, 18:38
У меня есть +2B, в него воткнут BDI и Multiface3. Я гружу TR-DOS игрушки, они прекрасно грузятся и работают.
Опиши плиз, как грузишь игры. Подозреваю, что перед входом в TR-DOS делаешь usr 0? Если так, то бейсик +3 отключается, ты делаешь переход в TR-DOS из бейсик 48 и далее всё, что под трдос грузится и работает. Так?


Выше я приводил пример с Dizzy-2, она не запускается из +3 бейсика,
Диззи я так понимаю версия trdos? Если ты будешь грузить игру TR-DOS хоть с бейсик загрузчиком, хоть с кодовым из бейсика +3 будет проблема с загрузкой кода в страницу. Это я писал выше, где клон недеццки затупил. Дело в том, что бейсик 128, обычный, позволяет нам включать любую страницу, выдав Out в порт и перед этим поместить значение в переменную бейсика 128 BANKM. С бейсиком +3 такое не прокатывает, хотя в описании написано, что так и надо делать. На практике (можно очень это легко проверить в эмуле) получаем, что после обработки прерывания бейсиком +3 _всегда_ включается страница 0. Поэтому в принципе не будут грузиться 128К игры из бейсика +3 (а уж если они используют страницу 07, то и подавно!!!). Функция чтения файла +3ДОС имеет в качестве параметра номер страницы подключенной с С000. Так что из машинных кодов в +3ДОС в страницы грузить можно.
Насчёт меню +3 - как будет время я посмотрю, примерно догадываюсь, почему в текущей реализации по возврату из TR-DOS висяк.
А то, что писал Клонидзе просто пропускай, кроме бреда ты там ничего не почерпнёшь.

Alex Rider
28.03.2015, 22:10
Насчёт меню +3 - как будет время я посмотрю, примерно догадываюсь, почему в текущей реализации по возврату из TR-DOS висяк.
Видимо, потому, что он возвращается по ret в ПЗУ BASIC 48. Ибо вход в TR-DOS я сделал из процедуры перехода в 48-й режим, а он не предусматривает выход в меню. ZX_NOVOSIB, а эмелятор ZX-MAK нормально работает с +100500 и TR-DOS?

Vadim
28.03.2015, 22:34
Видимо, потому, что он возвращается по ret в ПЗУ BASIC 48. Ибо вход в TR-DOS я сделал из процедуры перехода в 48-й режим, а он не предусматривает выход в меню
Ищя ошибку в TR-DOS, когда делаем вход из меню, потом выход по RETURN в меню 128, потом опять в TRDOS и у нас пропадает промпт, я смотрел ПЗУ пентагона, что же там сделано. Там нет ничего необычного. Переход в TR-DOS просто по call 15619. Из ПЗУ бейсика-128. (кстати, неправильно называть бейсик 128 просто редактором, если посмотреть декомпилированные исх, то видно, что это отдельный бейсик, который в своей работе использует подпрограммы из бейсика 48). И возврат идёт обратно в ПЗУ бейсик 128. У +3 может быть проблема в связи с адресацией ОЗУ/ПЗУ. Надо смотреть, что там и как и что надо сделать. Но сделать, я думаю, можно.

ZX_NOVOSIB
28.03.2015, 23:22
у меня не-было возможности найти ром/запустить эмуль.
вот я и просил готовый результат - игру скинутую на диск.в аттаче несколько dsk, запускаются просто из лоадера, предварительно MF3 должен быть включен, в спекуляторе это alt+M. На мой взгляд все скинутые игры работают. Только Total Recal при попытке записи на +3 диск в конце записи подвис, и MF3 мне выдал ошибку "02 I/O error - press any key". Соответственно снапшот нормально не грузится. Но если на ленту выгружать, то всё работает. Однако я тупо скачал другой dsk с ВоСа, кажется от Erbe, и он идеально работает с MF3. Вывод: предпочтительней для TR_DOS релизов брать версии от Erbe или от HitSquad, они избавлены от глюков.

Я тут не совсем подробно написал , проблема при связке +3 и BDI.
TR-DOS версии фирменных игр адаптированные нашими программистами и некоторые журналы (наши) я уже не говорю про системный софт лезут в порт #1FFD +3 (+2AB) для зашиты от теневого сервис монитора компьютера Scorpion или просто для определения модели компьютера,
запись в порт #1FFD некорректных значений вызывает зависание или сброс программы.Всё это я знал. Я знал что линейка +2AB/+3 не слишком совместима с русскими журналами, и с русским софтом юзающим расширенную сверх 128 память. Мне важней было понять, нет ли разницы внутри самой линейки, т.е. нет ли разницы в совместимости между +2AB и +3! И получается что вроде как нет :)

Опиши плиз, как грузишь игры. Подозреваю, что перед входом в TR-DOS делаешь usr 0? Если так, то бейсик +3 отключается, ты делаешь переход в TR-DOS из бейсик 48 и далее всё, что под трдос грузится и работает. Так?Я беру игры с вирт-трдоса, 9 из 10 игр не требуют режима usr0! Т.е. я тупо захожу в +3BASIC, набираю usr15616 и 9 из 10 игр запускаются. Лишь 1 из 10 требует usr0. Причем чаще всего требует не сама игра, а интро к ней, т.е. интро кривое. Но бывает и сама игра требует usr0, например локализация la Abadia del crimen от Ржавельщика.

Если ты будешь грузить игру TR-DOS хоть с бейсик загрузчиком, хоть с кодовым из бейсика +3 будет проблема с загрузкой кода в страницу. Это я писал выше, где клон недеццки затупил. Дело в том, что бейсик 128, обычный, позволяет нам включать любую страницу, выдав Out в порт и перед этим поместить значение в переменную бейсика 128 BANKM. С бейсиком +3 такое не прокатывает, хотя в описании написано, что так и надо делать. На практике (можно очень это легко проверить в эмуле) получаем, что после обработки прерывания бейсиком +3 _всегда_ включается страница 0. Поэтому в принципе не будут грузиться 128К игры из бейсика +3 (а уж если они используют страницу 07, то и подавно!!!).Кажется я смутно понимаю о чем ты. Ты имеешь ввиду, что есть трдосные 128-ые игры, у которых загрузчик на бейсике, и этот загрузчик сам, бейсиковыми операторами щелкает страницы и распихивает по ним загруженные кодовые файлы, так? Мне такие не попадались, я с вирта беру игры, стараюсь брать релизы посвежее, например от Слайдера. Как уже писал, 9 из 10 не требуют usr0. Хотя не мешало бы потестить чисто 128-ые, возможно среди чисто 128-ых большее количество будет требовать usr0 :v2_conf2:

ZX_NOVOSIB
29.03.2015, 00:26
ZX_NOVOSIB, а эмелятор ZX-MAK нормально работает с +100500 и TR-DOS?ZX-MAK вообще даже не может сэмулировать работу фирменного спекка с BDI!

Вот например X128 может без всяких танце с бубном сэмулировать даже "фирменный спек+BDI+MF3"! Похвально однако! Но корректность эмуляции вызывает вопросы, слишком "добренькая" получается эмуляция. И дебаггера вроде нет на этом эмуле.

---------- Post added at 03:26 ---------- Previous post was at 02:26 ----------


Видимо, потому, что он возвращается по ret в ПЗУ BASIC 48. Ибо вход в TR-DOS я сделал из процедуры перехода в 48-й режим, а он не предусматривает выход в меню.
хм.. а почему тогда, если я сначала захожу в +3BASIC, ввожу любой символ, жму ентер, получаю "variable not found", с помощью EDIT возвращаюсь обратно в меню, выбираю TR-DOS, то теперь по RETURN я возвращаюсь в стартовое меню?

Alex Rider
29.03.2015, 02:30
хм.. а почему тогда, если я сначала захожу в +3BASIC, ввожу любой символ, жму ентер, получаю "variable not found", с помощью EDIT возвращаюсь обратно в меню, выбираю TR-DOS, то теперь по RETURN я возвращаюсь в стартовое меню?
Возможно, редактор бейсика дополнительно инициализирует что-то, что позволяет вернуться в меню по стеку. Сейчас пока я весь в Саботере, не хочется отвлекаться. Да и отладчик RealSpectrum'а очень мелкий и непривычный - переход в TR-DOS я отлаживал в Unreal (до, собственно, входа в TR-DOS), а отлаживать в RealSpectrum'е выход в меню видится большим гемором.

Vadim
29.03.2015, 06:34
Alex Rider, Вчера написал и уже потом вспомнил, из бейсик 128 напрямую в trdos нельзя войти, там делается вызов в ОЗУ, переключение на ПЗУ 48, потом вызов TR-DOS. Но возврат идёт опять туда же, в ОЗУ, не в ПЗУ.

ZX_NOVOSIB
29.03.2015, 13:37
Да и отладчик RealSpectrum'а очень мелкий и непривычный - переход в TR-DOS я отлаживал в Unreal (до, собственно, входа в TR-DOS)я писал TSL насчет возможности сделать эмуляцию +3 и BDI, он ответил, что мол пока не готов ответить на этот вопрос, надо мол изучать +3.

Alex Rider
29.03.2015, 22:44
Alex Rider, Вчера написал и уже потом вспомнил, из бейсик 128 напрямую в trdos нельзя войти, там делается вызов в ОЗУ, переключение на ПЗУ 48, потом вызов TR-DOS. Но возврат идёт опять туда же, в ОЗУ, не в ПЗУ.
Ага, так же включается 48-й бейсик. Надо только накопать как выйти обратно. Когда 128-й бейсик зовет 48-й, он переключает только страницы ПЗУ. А когда навсегда идет в 48-й, что-то делает с ОЗУ. Вот это вот и надо вернуть обратно при выходе из TR-DOS.

goodboy
30.03.2015, 11:05
Вывод: предпочтительней для TR_DOS релизов брать версии от Erbe или от HitSquad, они избавлены от глюков.
дисковые переиздания от ERBE как раз - глючные.
после загрузки (стандартными процедурами) меняется значение переменной которая отвечает за мотор, а она находится на 7ой странице. соответственно портится один байт в игре.
также в фирменных лоадерах может быть защита от мультифейса (программно он определяется)

Vadim
30.03.2015, 15:35
после загрузки (стандартными процедурами) меняется значение переменной которая отвечает за мотор, а она находится на 7ой странице. соответственно портится один байт в игре
Подробнее можешь сказать? А то я не понял. Грузит она игру в страницы, в т.ч. в 7-ю? Но это же запрещено? И потом правит переменную? Как? Вызовом процедуры?

goodboy
30.03.2015, 16:09
Подробнее можешь сказать? А то я не понял. Грузит она игру в страницы, в т.ч. в 7-ю? Но это же запрещено? И потом правит переменную? Как? Вызовом процедуры?
у меня сейчас кочевой период, доступ только к браузеру.
помню что на форуме WoS обсуждались глюки в переизданиях от ERBE.
кажется на im1 (в 128ом бейсике) висит опрос состояния мотора.
порча ячейки происходит после останова.

Vadim
30.03.2015, 16:35
Порча вполне может быть и не только выключением мотора. В 7-й странице лежат буферы и переменные (сейчас не скажу сколько, но порядка 6-8К, распределены неравномерно). Я делал дисковые версии игр, которые занимали частично или всю 7-ю страницу так: Каждая страничка игры упакована отдельно. Перед началом загрузки уничтожение эл.диска и кешей, грузим упакованные данные в страницы, 7-ая страница не юзается при работе с +3ДОС нами. Потом уже выключение мотора, мягкий переход в бейсик-48 (но не всегда), перенос пакованных данных страницы 7 в страницу 7. Затем передвижка и распаковка всего остального. Запуск. Т.к. игры не обращаются к диску - такая схема вполне корректна. Если же нам надо обращаться к диску за чтением или записью, то нужно будет что-то делать со страницей 7. Пока я не смотрел исходник системы, что бы разобраться как поступать в этом случае, но думаю можно найти решение (типа временно сохранять из жизненно важных областей куски данных, вызвать +3ДОС для инициализации переменных, восстановить кое какие значения, сделать ввод вывод и назад восстановить).

ZX_NOVOSIB
30.03.2015, 19:06
дисковые переиздания от ERBE как раз - глючные.
после загрузки (стандартными процедурами) меняется значение переменной которая отвечает за мотор, а она находится на 7ой странице. соответственно портится один байт в игре.Я тебе верю. Но вот с Total Recal похоже получилось исключение из правил. Игру с "безымянного" dsk мультифейс не может корректно скинуть на дискету; в то время как dsk от Erbe скидывается без проблем!

также в фирменных лоадерах может быть защита от мультифейса (программно он определяется)В романтик-робот тоже не дураки сидели. По-моему они всё же перехитрили разработчиков игр, они просто сделали такую фишку: мультифейс по умолчанию всегда выключен, следовательно программно не определяется. И только когда мы нажимаем на кнопку, он включается, но игра его уже не может отследить, она поставлена на паузу, управление передано мультифейсу. После скидывания снапшота, можно выключить MF3, нажать RETURN, и вернутся в игру. Игра ничего не заподозрит. Хотя я ж не спец, могу что-то попутать.

Про проблемы с 7-ой страницей мне сложно что-то понять, но пока не удалось найти ни одной игры, которая не скидывалась бы мультифейсом на дискету :)

Addison
02.08.2016, 01:21
Ссылки сдохли, хвост облез.

ссылки на коллекции 22 и 107 игр обновлены.

http://zx-pk.ru/threads/8019-adaptatsiya-programm-k-sisteme-3dos.html?p=141075&viewfull=1#post141075

Addison
12.09.2016, 23:52
Господа, судя по переписи +3 накупили много.
Пора писать серьезный софт под +3Дос!
Может как-то скооперироваться для того, чтобы умножить усилия?
Хорошо бы написать полноценный командер, по типу нортона под два дисковода, чтобы можно было создавать каталоги, форматировать нестандартный объем.
Также остался не решен вопрос с переносом фирменных образов на дискеты. Я еще не подключал эмулятор дисковода к своему +3, но вроде он должен, как внешний заработать. С виртуального может и будет работать, а если их перегонять на реал? Раньше я пробовал это не проходило, они записаны нестандартно, нужны какие-то утилиты на ПЦ, чтобы выкорчевывать с нестандартных образов на стандартные.

Djoni
13.09.2016, 02:53
Господа, судя по переписи +3 накупили много.
Пора писать серьезный софт под +3Дос!
Может как-то скооперироваться для того, чтобы умножить усилия?
Хорошо бы написать полноценный командер, по типу нортона под два дисковода, чтобы можно было создавать каталоги, форматировать нестандартный объем.
Также остался не решен вопрос с переносом фирменных образов на дискеты. Я еще не подключал эмулятор дисковода к своему +3, но вроде он должен, как внешний заработать. С виртуального может и будет работать, а если их перегонять на реал? Раньше я пробовал это не проходило, они записаны нестандартно, нужны какие-то утилиты на ПЦ, чтобы выкорчевывать с нестандартных образов на стандартные.


Да коммандера не хватает , форматтеры есть:

MultiFormatter поддерживает много форматов с проверкой поверхности и созданием карты битых блоков, но медленный.

http://www.worldofspectrum.org/zxplus3e/software.html

И Disc Util V5.04 тоже интересная утилита.

http://doperoms.com/roms/sinclair_zx_spectrum/Disc%20Util%20v5.04%20(1998)(John%20Elliott).zip.h tml/529521/Disc%20Util%20v5.04%20(1998)(John%20Elliott).zip.h tml

А так помаленьку нужно отказываться от дискет и переходить на HDD CF и SD носители , много фирменных программ без проблем работают под +3е плюс иностранные спектрумисты портируют помаленьку .

Системный софт под +3 нужно наверно собрать в отдельную ветку.

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

Addison
15.04.2017, 22:28
Тема обновлена.

Vadim
17.04.2017, 16:32
Господа, судя по переписи +3 накупили много.
нужны какие-то утилиты на ПЦ, чтобы выкорчевывать с нестандартных образов на стандартные.
Нестандартные образы прекрасно пишутся на дискеты, но игры в таком виде не файловые. boot сектор, в нём загрузчик, далее он грузит блоки с определённых мест диска в определённое место в ОЗУ. Файлов нет. Я об этом писал и тут и в других темах ещё году в 2010-м, в 2011-м. Причем, смотрел я несколько таких игр, сравнивал код с ленточными версиями - совпадение байт в байт. Это конечно не касается специфичных игр под +3. Смотрел Fox Fights Back и ещё какие-то, не помню уже. Просто в то время я делал дисковые версии с упаковкой, выключением дисковода и прочим под +3ДОС, был интерес. Выкладывал сюда релизы. Некоторые товарищи сказали, что дескать это плохо. Версии всё равно не фирменные. На что я резонно заметил, что они не то что ничем не хуже фирменных, а чаще даже лучше. Паковка есть, загрузчик использует файловые функции для чтения, и без проблем оно будет работать с любого девайса, который будет поддержан в +3ДОС. Так что вывод такой. Если есть желание, то нужно браться за нужные +3дос игры и переделывать их в файловый вид. Но боюсь, что если игра использует страницу 7, то там будут весьма серьёзные сложности. Я изучил декомпиленный исходник +3дос и скажу, что победить такие игры весьма непросто.

drbars
25.04.2017, 15:29
Есть ли плагины для FAR'а чтобы работать с .dsk ?

Где почитать про написание кодового разгрузчика?

Shadow Maker
25.04.2017, 15:50
Есть ли плагины для FAR'а чтобы работать с .dsk ?

Где почитать про написание кодового разгрузчика?

Для Far нет, отдельные есть. http://vtrdos.ru/pcutilz.php Ну и ZX Blockeditor вроде умеет по ним ходить.

Чего разгружать собрался? По-моему там всё довольно просто (я смотрел как-то загрузчик по-моему для Mercenary что ли), в общем просто открой и посмотри в дебаггере, туториалов я чет не видел.

Vadim
26.04.2017, 06:22
Где почитать про написание кодового разгрузчика?
Диззи хочешь для +3 сделать? Я могу помочь, именно будет кодовый загрузчик.

drbars
28.04.2017, 11:12
Но боюсь, что если игра использует страницу 7, то там будут весьма серьёзные сложности. Я изучил декомпиленный исходник +3дос и скажу, что победить такие игры весьма непросто.
А что за сложности со страницей 7 ? Диззи просто живёт в ней)))

DenisGrachev
28.04.2017, 11:59
А что за сложности со страницей 7 ? Диззи просто живёт в ней)))

while Bank 7 contains editor scratchpads and +3DOS workspace

ZX_NOVOSIB
28.04.2017, 13:59
Значит ремейка диззи-7 для +3dos не будет? :(

Vadim
29.04.2017, 12:23
Значит ремейка диззи-7 для +3dos не будет? :(

Почему? Я много игр в +3ДОС перевёл, где 7-я страница занята. Проблема только тогда актуальна, когда мы из игры хотим обратиться в +3дос. В 7-й странице буферы (хотя это и мелочь по сути), FCB открытых файлов. таблицы дисков и прочее. Кстати, система построена таким образом, что можно, к примеру, вынести эту инфу в иное ОЗУ (к примеру делаем апгрейд до 256К) и софт будет работать и 7-ую страницу можно будет юзать, но это так, фантазии...

NEO SPECTRUMAN
29.04.2017, 14:57
А нету готового решения для sjasm-а ?
Нужно просто раскидать код по всем возможным(куда получится) банкам и запустить

счас мну делает sna с паузой при старте
потом когда оно запускается
мну лезит и за время паузы переключает тип спектрума на +3 :D

и это как то... :v2_dizzy_vodka:

Vadim
29.04.2017, 16:44
А нету готового решения для sjasm-а ?
Нужно просто раскидать код по всем возможным(куда получится) банкам и запустить


У меня есть готовое решение ессно. Но для м80. Я компилю под виндой используя эмулятор CP/M. У меня получается бейсик, с кодом в REM строке. Потом склеиваю блоки в нужном порядке, потом готовый файл уже помещаю в образ дискеты +3 при помощи консольной утилиты. Так я делал все свои адаптации в +3DOS.

NEO SPECTRUMAN
29.04.2017, 16:49
с кодом в REM строке
а где почитать как оно делается?
у меня так руки и не дошли до этого...

- - - Добавлено - - -


Так я делал
мдя

- - - Добавлено - - -

Походу мне проще будет написать сохранялку в sna с включенным режимом +3...

Shadow Maker
29.04.2017, 20:15
У меня есть готовое решение ессно. Но для м80. Я компилю под виндой используя эмулятор CP/M. У меня получается бейсик, с кодом в REM строке. Потом склеиваю блоки в нужном порядке, потом готовый файл уже помещаю в образ дискеты +3 при помощи консольной утилиты. Так я делал все свои адаптации в +3DOS.
Ну ты пример какой-нибудь адаптации простейшей просто сюда вставь кодом, кому надо - разберется.

Vadim
29.04.2017, 20:58
Ну ты пример какой-нибудь адаптации простейшей просто сюда вставь кодом, кому надо - разберется.

да, я уже отправил ему исходник

Addison
22.09.2017, 01:41
Нестандартные образы прекрасно пишутся на дискеты, но игры в таком виде не файловые. boot сектор, в нём загрузчик, далее он грузит блоки с определённых мест диска в определённое место в ОЗУ. Файлов нет.
Хорошо бы написать процедуру для ПЦ, которая дизассемблирует загрузочную область таких дискет.

Shiny
22.09.2017, 04:47
Хорошо бы написать процедуру для ПЦ, которая дизассемблирует загрузочную область таких дискет

Дебагер/STS2.6 в помощь.

NiKa
21.11.2017, 06:30
107 игр для ZX-Spectrum +3!
Ссылки уже не работают:(

Vadim
21.11.2017, 07:27
Ссылки уже не работают
Толку от игр, которые выкладывал Клон нет. Там кривые, очень кривые адаптации - я их качал и смотрел. Ещё есть куча западных сайтов, где люди выкладывают свои "под(д)елки" адапатций под +3, чаще всего там дичайший кал.

NiKa
21.11.2017, 18:48
Ну а где тогда брать хорошие?

Vadim
21.11.2017, 19:12
Самим делать, переводить. Панду я пробовал уломать, у него есть в разобранном виде всё, что он переводил в tr-dos. Для 98% игр нужно лишь переписать загрузчик и игры готовы. Я 140 игр задисковал, и считаю, что сделал это качественно. Правки кода, как Панда, я не делал, читы не вставлял, но блоки пакованы, глюки загрузки если были - исключены. Из того, что делали западные товарисчи - совсем уж г процентов 10, некоторые даже не работают вообще. Но как правило у них нет паковки, битые картинки как будто с кряк версий делали и мейджик копий. Ну и всё в таком духе.

NiKa
22.11.2017, 08:09
Vadim, ну а вашими 140 играми можно обзавестись?

Vadim
22.11.2017, 09:49
Да, я дам всё что у меня есть и мои 140 и чужие, что выбрано из того, что люди выкладывали в инетах.

NiKa
22.11.2017, 11:53
Очень хорошо, и как это получить?

kyv
23.11.2017, 22:43
Очень хорошо, и как это получить?

http://trastero.speccy.org/cosas/Plus3/Discos.htm

Grand
04.12.2017, 18:19
Пробная адаптация для +3DOS моей же версии игры Harrier Attack с настроечной частью.
Также во вложении и tape-версия. В образах диска и ленты имеется сопроводительный текстовый файл.
Делалось на эмуляторе, так как я не владелец оригинального Spectrum +3. Интересно было бы узнать, работает ли приложеннный образ на реальном компьютере? :)

Black Cat / Era CG
04.12.2017, 18:37
Минутка рекламы :)
http://era-cg.su/picshost/SteinBlume.png

Grand
05.12.2017, 16:09
SteinBlume конечно программа крутая и все такое,.. но знает ли кто-нибудь, есть ли смотрелки текстов для +3DOS?


Добавил в образ файл "DISK", чтобы загрузка была из меню "128 +3" опцией "Loader". Смотрите мое предыдущее сообщение.

Djoni
05.12.2017, 17:05
SteinBlume конечно программа крутая и все такое,.. но знает ли кто-нибудь, есть ли смотрелки текстов для +3DOS?


Добавил в образ файл "DISK", чтобы загрузка была из меню "128 +3" опцией "Loader". Смотрите мое предыдущее сообщение.

Простые тексты в английской кодировке можно прямо в системе +3DOS смотреть , а так такие утилиты не попадались.
Неплох бы портировать ваши программы под +3DOS :)

NiKa
15.12.2017, 18:44
Prince of Persia под +3DOS нет случайно?

Vadim
16.12.2017, 09:09
Нет, нету.

NiKa
16.12.2017, 12:10
А самому перевести из TR-DOS это сложно будет?

ZX_NOVOSIB
16.12.2017, 14:25
NiKa, если ты спрашиваешь, значит для тебя это будет сложно ))

А вообще можно же у MV1971 заказать BDI, потом подомкнуть к BDI флоп или флопоэмуль и тогда ничего переводить из TR-DOS в +3DOS не придется ))

NiKa
16.12.2017, 18:48
Ну если бы была инструкция подробная то наверное ничего особо сложного нет, а BDI это не интересно проще тогда на эмуле запустить и вообще не париться.

Vadim
16.12.2017, 20:22
NiKa, если ты спрашиваешь, значит для тебя это будет сложно ))

А вообще можно же у MV1971 заказать BDI, потом подомкнуть к BDI флоп или флопоэмуль и тогда ничего переводить из TR-DOS в +3DOS не придется ))

Вообще-то тема создана не для даунов, которые не знают про то, что к +3 можно подключить TRDOS. Смысл не в этом. А в том, как адаптировать игры в +3ДОС. На западе TRDOS никому не нужен из-за своей убогости. Я уже много много раз тут писал (и не тут тоже), что забыть нужно этот trdos. Западные товарищи года так с 2002 используют +3ДОС на hdd. Понимаешь? Без подключения образов и ненужного секса (вспоминается анекдот про арбуз и мальчика).

Игру (Принц Персии) перевести несложно.

goodboy
16.12.2017, 20:31
а как решается проблема с размещением буфера и переменных в 7ой странице ?
(естественно при стандартных вызовах системы)

Vadim
16.12.2017, 20:35
а как решается проблема с размещением буфера и переменных в 7ой странице ?
(естественно при стандартных вызовах системы)

Если игра ничего не будет подгружать или выгружать, то метод прост. Пакуем страницы, грузим их так, что бы всё загрузилось в страницы 0,1,3,4,6. Потом гасим мотор, и пакованную страницу 7 копируем в 7, распаковываем, ну и так далее. Как я уже писал - можно посмотреть мои адаптации 128К игр, где была использована страница 7. Семейка Аддамс, к примеру. Она ж работает.

ZX_NOVOSIB
17.12.2017, 14:43
Ну если бы была инструкция подробная то наверное ничего особо сложного нет, а BDI это не интересно проще тогда на эмуле запустить и вообще не париться.

Вообще-то тема создана не для даунов, которые не знают про то, что к +3 можно подключить TRDOS. Смысл не в этом. А в том, как адаптировать игры в +3ДОС. На западе TRDOS никому не нужен из-за своей убогости. Я уже много много раз тут писал (и не тут тоже), что забыть нужно этот trdos. Западные товарищи года так с 2002 используют +3ДОС на hdd. Понимаешь? Без подключения образов и ненужного секса (вспоминается анекдот про арбуз и мальчика).

Игру (Принц Персии) перевести несложно.
Это понятно, что "смысл не в этом", смысл в удобстве и спортивном интересе. Но я подумал, что вдруг для NiKa смысл в том, чтобы поиграть в принца на реале, на +3. Но у него какой-то свой смысл )) Похоже чисто спортивный. Ну ладно, хозяин барин. Но сам он вряд ли переведет принца в +3дос. Это ж шарить надо, тут "инструкцией" не отделаешься, тут ассемблер изучать нужно. Там же не бейсик загрузчик )) + там вроде подзагрузки уровней прям из игры, или я ошибаюсь?

Tr-dos никто не забудет. Уже устоялось как стандарт. А винчестер - не для всех хорошо. Для многих ретро компы-приставки ассоциируются с носителями - кассета, дискета, картридж. И точка. Их винчестером не заманишь. Таких людей мало, но они в тельняшках.
:v2_dizzy_paratroope

NiKa
17.12.2017, 16:39
Поиграть в принца разве, что немного поностальгировать, просто эта игрушка входит в число лучших игр всех времен и народов, вот и хотелось ее увидеть на +3DOS.

ZX_NOVOSIB
17.12.2017, 17:38
просто эта игрушка входит в число лучших игр всех времен и народов, вот и хотелось ее увидеть на +3DOS.
А тебя не смущает, что есть овердофига "лучших игр всех времен", которых нет на +3DOS? ) Если смущает, то тогда ж придется все их переделывать :v2_scare:

Vadim
17.12.2017, 17:38
Я так понимаю там подгрузка уровней? Странно как-то, не Денди она занимала 1 картридж, думаю что 128К, а на спектруме аж 12 подгрузок. Это сделать сложновато. Если 7-ая стр используется, то нужно будет для +3дос делать хинт. Искать не занятую страницу, туда сохранять 7-ю (возможно не всю, а только несколько кусков), потом делать инициализацию переменных +3ДОС, потом дисковый ввод вывод, потом восстановление. Я в принца не спектруме не играл, была только у меня сверх глючаня демоверсия в 90х, а позднее я не искал, т.к. не было интереса. Сейчас на вирте глянул - вариантов масса, для начала кто бы подсказал, с каким проще было бы работать и какой из них точно рабочий и проходимый?

NiKa
17.12.2017, 19:17
А тебя не смущает, что есть овердофига "лучших игр всех времен", которых нет на +3DOS? ) Если смущает, то тогда ж придется все их переделывать
Совсем не овердофига, а такими игрушками считаются всего десяток, и я имею ввиду только ту которая физически может быть адаптирована к +3DOS т.к. она уже есть на спектруме.

ZX_NOVOSIB
17.12.2017, 19:52
и я имею ввиду только ту которая физически может быть адаптирована к +3DOS т.к. она уже есть на спектруме.
Дак и я про ту. Много клёвых игр есть на спектруме в форматах .tzx/.tap или в .trd, но нет в .dsk , значит все такие игры нужно тоже адаптировать
:)

Vadim
18.12.2017, 07:19
Дак и я про ту. Много клёвых игр есть на спектруме в форматах .tzx/.tap или в .trd, но нет в .dsk , значит все такие игры нужно тоже адаптировать
:)

Что я и делал в 2012г, и чуть позднее. Что мне нравилось и хотелось сделать - делал.

jerri
05.01.2018, 10:39
Vadim, есть тема для адаптирования одной игры к +3дос

что там происходит в 7ой странице и насколько нарушение структуры 7ой страницы критично для +3 ДОС?

Vadim
05.01.2018, 12:31
есть тема для адаптирования одной игры к +3дос

что там происходит в 7ой странице и насколько нарушение структуры 7ой страницы критично для +3 ДОС?

Судя по исходникам, в 7-й странице лежит всё, что нужно системе для работы. Стек, буферы каталога, буферы данных (не важно сколько мы читаем за раз +3дос читает 512 байт сектор в буфер и оттуда уже делает копирование от 1 до 512 байт в область данных пользователя) и так далее, но не все 16К используются, а фрагментами, можно в принципе эти данные или сохранить где-нибудь или сгенерировать. К примеру, буфер сектора нам не важен, сбросим данные о нём и всё, система перечитает его, точно также с буфером каталога. Но. 7-ю стр игры тогда нужно сохранить. Вообще, это оффтопик, но я скажу, я хочу переписать +3ДОС, уже брался да забросил. Выправить кривой код для начала, что бы система стала почти такой же быстрой как трдос, потом можно 7-ю стр освободить, винт к +3 цепляют? Цепляют. Не проблема и ОЗУ добавить, в него и перенести всю эту инфу.

jerri
05.01.2018, 13:03
Судя по исходникам, в 7-й странице лежит всё, что нужно системе для работы. Стек, буферы каталога, буферы данных (не важно сколько мы читаем за раз +3дос читает 512 байт сектор в буфер и оттуда уже делает копирование от 1 до 512 байт в область данных пользователя) и так далее, но не все 16К используются, а фрагментами, можно в принципе эти данные или сохранить где-нибудь или сгенерировать. К примеру, буфер сектора нам не важен, сбросим данные о нём и всё, система перечитает его, точно также с буфером каталога. Но. 7-ю стр игры тогда нужно сохранить. Вообще, это оффтопик, но я скажу, я хочу переписать +3ДОС, уже брался да забросил. Выправить кривой код для начала, что бы система стала почти такой же быстрой как трдос, потом можно 7-ю стр освободить, винт к +3 цепляют? Цепляют. Не проблема и ОЗУ добавить, в него и перенести всю эту инфу.

как они грузят информацию в страницы?
или они этого не делают?

есть инструкция с точками доступа на русском?

Vadim
05.01.2018, 17:36
как они грузят информацию в страницы?
или они этого не делают?
При вызове функции чтения нужно включить стр 7, такое требование. А какая страница нужна, кладется в регистр. Я ж тебе давал исходник своего загрузчика? Могу дать ещё раз, там всё с комментариями, если будут вопросы - отвечу. Всё просто там.

jerri
05.01.2018, 18:50
Vadim, вроде не давал
или не мне
кидай сюда

drbars
20.01.2018, 14:12
Vadim, кидай сюда. Тоже хочу глянуть.

Zerios
05.11.2019, 22:11
Ситуация такая , после долгих лет "забвения" , нашел и время и старый (новый ZX +3).
К +3 подключен дисковод 3.5 , как диск В.
Необходимо восстановить "память себе" -).
Чем образ .dsk на дискету записать ? Может что изменилось за время моего отсутствия..

goodboy
05.11.2019, 23:39
Чем образ .dsk на дискету записать ?
c PC ? https://simonowen.com/samdisk/

Zerios
06.11.2019, 15:33
c PC ? https://simonowen.com/samdisk/

Спасибо. Разобрался вроде.

nihirash
22.02.2020, 01:15
У кого-нибудь осталась "полнодисковая" элита(с сохраненками на диск)?

Xela
29.01.2024, 11:52
И наконец, сама версия ELITE для +3DOS!!!


Ну и, наконец, сама версия Advanced Soccer Simulator для +3DOS.

эти версии у кого-то сохранились? поделитесь, плиз

SoftLight
29.01.2024, 12:59
эти версии у кого-то сохранились? поделитесь, плиз
Папка (https://disk.yandex.ru/d/Mrp6EuBdZ-6jkw) с найденными дисками из этой темы

Xela
29.01.2024, 13:53
Я написал сообщение быстрее, чем решил проверить через archive.org - обе игры оказались там доступны. Правда остальные игры с первой страницы не удалось скачать.

Xela
29.01.2024, 17:38
с найденными дисками из этой темы
О! Благодарю!