Вход

Просмотр полной версии : #3d2f или #3d30?



Faster
24.06.2014, 11:33
Занялся обновлением своих исходников с дисковыми процедурами. В связи с этим хочу уяснить один вопрос. В качестве точек входа в ПЗУ TR-DOS обычно используют (использовали) #3d2f или #3d30. В разных источниках читал разную информацию об использовании #3d30, якобы на каких-то контроллерах дисководов прямой переход на RET, минуя NOP к нужному результату не приведет. Так как на самом деле-то, можно получить внятный ответ подтвержденный фактами/примерами? Или это все миф и можно безболезненно использовать #3d30 и не париться. Хотелось бы раскрыть тему "сисек".:)

p.s. хочу сразу попросить не писать сюда про "православный" #3d13 и о том, что дискеты уже никто не юзает в нынешнее время. Сабж о другом.

Shadow Maker
24.06.2014, 11:38
Ну ты конечно вовремя решил задать этот вопрос, как раз все на SD перешли, тестировать непонятно на чем :)

Насколько я помню, суть в том, что якобы на каких-то мифических компутерах трдос включался не на первой же команде, а только на последующей. И вот этим обусловлен переход сначала на NOP, чтобы трдос успел включиться.

Имхо это всё какой-то мифологический бред. Пусть хардварные ребята меня поправят, если это не так.

jerri
24.06.2014, 11:40
Faster,
1.оригинальные процедуры из TR-DOS используют в качестве возврата в TR-DOS точку #3d2f :nop:ret
точка.
2.при написании игры Walker и тесте её на компьютере Profi мы столкнулись с одним неприятным эффектом
игра зависала на 2хтурбо - 14 мгц
все решилось когда после обращения к порту памяти после out(c) был поставлен nop.

мораль такова - 4 такта не спасут предводителя дворянства. а на какой-то особо тормозной машине или каким нибудь особо турбо режимом может быть неприятность

Gutten
24.06.2014, 11:53
А я сё же напишу. Дискеты никто не использует, но вот варианты образов дискет со СМУКом вполне используются. И они не всегда (или вообще?) не работают через #3D2F.

Alex Rider
24.06.2014, 12:06
И они не всегда (или вообще?) не работают через #3D2F.
Не работают :)

Хотелось бы раскрыть тему "сисек".
И, вообще, это не "тема сисек", а темы, высосанная из другого органа. #3d30 можно использовать с тем же успехом, как и out (#fd),a или дешифрацию порта #fe только по /IORQ + /WR или еще over9000 примеров "улучшалок и оптимизилок", работающих только на компьютере автора и таком же компьютере его друга.

Gutten
24.06.2014, 12:13
Почему на старшем брате ПЦ никто не лечит зубы через анус и не программит напрямую в порты? Есть стандартная точка #3D13 и работайте через неё. Чего не нравится-то? Медленно? Так счас многие с винтами, они быстрее дискет.

denpopov
24.06.2014, 12:28
Почему на старшем брате ПЦ никто не лечит зубы через анус
потому что здравый человек никого к анусу подпустит:)

Titus
24.06.2014, 12:34
Ну ты конечно вовремя решил задать этот вопрос, как раз все на SD перешли, тестировать непонятно на чем :)


А я сё же напишу. Дискеты никто не использует, но вот варианты образов дискет со СМУКом вполне используются. И они не всегда (или вообще?) не работают через #3D2F.

Что-то вы зафантазировались. Это у вас, владельцев Пентев или чего-то подобного флеш-карточки вместо дискет. А у нас, реальщиков - настоящие Пентагоны (у меня, например) с дисководами и дискетами.

Да, и вообще, как вы, SD'шники, запускаете ту кучу дисковых версий, которая не через 3D13?

Blade
24.06.2014, 12:39
Да, и вообще, как вы, SD'шники, запускаете ту кучу дисковых версий, которая не через 3D13?
Move /dev/null

Titus
24.06.2014, 12:44
Move /dev/null

Я не понимаю линуксовский жаргон)

Gutten
24.06.2014, 12:49
Что-то вы зафантазировались. Это у вас, владельцев Пентев или чего-то подобного флеш-карточки вместо дискет. А у нас, реальщиков - настоящие Пентагоны (у меня, например) с дисководами и дискетами.

Да, и вообще, как вы, SD'шники, запускаете ту кучу дисковых версий, которая не через 3D13?

Ну у меня железный Скорпион с СМУКом, который образы воспринимает именно как дискету и работает только через 3D13. И если версия не идёт, то либо (чито позырить) запускаю в Unreal'e, либо (если очень нужно!) пользую FDD-эмулятор либо забываю про неё. Или прошу добрых людей переделать на 3D13, помогает.

Shadow Maker
24.06.2014, 13:27
Что-то вы зафантазировались. Это у вас, владельцев Пентев или чего-то подобного флеш-карточки вместо дискет. А у нас, реальщиков - настоящие Пентагоны (у меня, например) с дисководами и дискетами.

Да, и вообще, как вы, SD'шники, запускаете ту кучу дисковых версий, которая не через 3D13?
Ты не поверишь, Z-Controller поддерживает всё :)

А так, мне никто не может починить Пентагон, все экстрасенсы в отпуске, поэтому у меня есть реальный Пентагон и реальный Скорпион, но один не включается, а другой не работает с ТРДОС.

Jimmy Falcon
24.06.2014, 13:30
Я не понимаю линуксовский жаргон)

Да, только не move, а mv. И mv в /dev/null не делают: файл null будет перезаписан содержимым того что туда перемувили. В /dev/null можно перенаправить вывод если он не нужен.

По теме: я немного не понял, если есть сомнения, что мешает использовать адрес 3D2F? Проблема перескакивания между ПЗУшками действительно имела место, причём даже при работе самого интерфейса TR-DOS из ПЗУшки.

Titus
24.06.2014, 13:54
По теме: я немного не понял, если есть сомнения, что мешает использовать адрес 3D2F? Проблема перескакивания между ПЗУшками действительно имела место, причём даже при работе самого интерфейса TR-DOS из ПЗУшки.

Желательно привести пример конкретной модели, в которой при обращении к 3D30 ПЗУ не успевало переключаться. И желательно со схемой, дабы понять, в связи с чем это такие тормоза.

Не исключено, что авторы TR-DOS сделали такую задержку на всякий случай или ориентируясь на какие-то медленные контроллеры, которые у нас и не ходили вовсе.

Jimmy Falcon
24.06.2014, 14:38
Проблемы переключения были на Краснодаре с внешней платой TR-DOS, переключение было реализовано транзисторным ключом и резистором последовательно с CS на плате Краснодара.

Только я не понял практического смысла постановки вопроса. Что мешает использовать адрес 3D2F? К чему вообще это обсуждение если мы знаем, что переход по этому адресу работает в любом случае?

Titus
24.06.2014, 15:01
Только я не понял практического смысла постановки вопроса. Что мешает использовать адрес 3D2F? К чему вообще это обсуждение если мы знаем, что переход по этому адресу работает в любом случае?

Чтобы понять, обоснованное это решение, или какой-либо атавизм.

Faster
24.06.2014, 23:57
А я сё же напишу. Дискеты никто не использует, но вот варианты образов дискет со СМУКом вполне используются. И они не всегда (или вообще?) не работают через #3D2F.
Ну просил же не писать об этом )) В моем понимании, то как это реализовано в SMUC подходит чисто для хранения архива дискет на винте, но никак для нормального и удобного использования в качестве виртуальной рабочей дискеты.

Почему на старшем брате ПЦ никто не лечит зубы через анус и не программит напрямую в порты? Есть стандартная точка #3D13 и работайте через неё. Чего не нравится-то? Медленно? Так счас многие с винтами, они быстрее дискет.
Потому что им слабо :) А если серьезно, то только на реальном дисководе можно оценить всю прелесть и крутизну фишек как лоадеров, так и сопутствующих процедур использующих низкое программирование ВГ-шки, которые просто не написать через функции #3d13. И окромя скорости работы процедур, на что ориентировался кодер не стоит забывать, что при использовании #3d2f можно было не заботиться о сохранении системных переменных и использовать всю память ОЗУ, что в некоторых случаях было решающим фактором. И да, #3d2f такая я же не менее стандартная точка, что и #3d13.

Ну у меня железный Скорпион с СМУКом, который образы воспринимает именно как дискету и работает только через 3D13. И если версия не идёт, то либо (чито позырить) запускаю в Unreal'e, либо (если очень нужно!) пользую FDD-эмулятор либо забываю про неё. Или прошу добрых людей переделать на 3D13, помогает.
Ну, собственно, тут все просто. К моменту разработки SMUC турболоадеры уже во всю клепали и никто не заморачивался над тем, что вдруг однажды MOA (читай Scorpion) создаст такой своеобразный эмулятор trd-образов, с ограниченным функционалом. Да и чего тут кривить душой, подавляющему большинству лоадерописателей было <censored> на этот дивайс уже после его выхода. От части причина была в том, что не многие знали как программно определить, что софт запущен с физического дисковода или образа. В любом случае мой топик это не призыв юзать исключительно турболоадеры и подобные вещи, а просто попытка разобраться в сути вопроса.

Проблемы переключения были на Краснодаре с внешней платой TR-DOS, переключение было реализовано транзисторным ключом и резистором последовательно с CS на плате Краснодара.
Вот такой ответ я и хотел услышать. Интересно, как много владельцев этого «Краснодара» и насколько он вообще был распространен? А есть пользователи GRM Pentagon, что они могут сказать по этому вопросу?

Чтобы понять, обоснованное это решение, или какой-либо атавизм.
Именно так :)

Barmaley_m
25.06.2014, 00:53
Интересно, как много владельцев этого «Краснодара» и насколько он вообще был распространен?
Постановка вопроса неправильная. Как уже написали, цена вопроса - 4 такта с одной стороны, и сужение круга поддерживаемых машин - с другой. Стоит ли вписывать новый пункт в System Requirements, если от него можно избавиться ценой 4х тактов?

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

TSL
25.06.2014, 01:21
Да, и вообще, как вы, SD'шники, запускаете ту кучу дисковых версий, которая не через 3D13?
Есть 2 пути:
- замена всех процедур в ПЗУ тырдоса на свои (бейзконфа),
- перехват обращений к ВГ93 и вызов процедур накопителя (тсконфа).
------
Насчет #3D30 vs. #3D2F. Проблема была в медленном ПЗУ, которое по мнению авторов могло не успеть выставить данные после срабатывания переключателя. Аргументы:
- не встречал в жизни такого контроллера, который бы в сочетании с ПЗУ не успевал,
- не бывает настолько медленных ПЗУ (считали как то раз),
- в момент переключения ПЗУ дергается шина адреса, и хоть дергается только 1 бит, все равно неизвестно, как при этом колбасит данные на ПЗУ. вполне реальна ситуция при которой на момент латча опкода на дате ПЗУ будут стоять не ожидаемые нопы, а какая-то ахинея, и все ухищрения все равно не помогут.

Faster
25.06.2014, 08:52
Постановка вопроса неправильная. Как уже написали, цена вопроса - 4 такта с одной стороны, и сужение круга поддерживаемых машин - с другой. Стоит ли вписывать новый пункт в System Requirements, если от него можно избавиться ценой 4х тактов?

Мой вопрос был просто ради интереса, а не ради экономии 4-х тактов, которых, кстати, будет вовсе не 4. Например в турболоадере на чтение 1 сектора это число составит уже 16 тактов (это без учета выбора нужной стороны диска и поиска нужного трека), а с учетом всех этих вещей - 28 тактов.

p.s. Titus, а ты не в курсе, кто написал турболоадер для x-copy (копировщик дискет)? Аналогичный лоадер, емнип, был и в креке Italy90 от Исаева. Вообще интересно, кто накодил первый турболоадер?:)

jerri
25.06.2014, 09:14
И да, #3d2f такая я же не менее стандартная точка, что и #3d13.

это точка возврата в ROM TR-DOS
но никак не стандартная точка доступа
и причина в том числе в разных версиях ДОС

ты правда считаешь что прошивки 5.01, 5.03, 5.04, 6.01, 6.04
на 100% совместимы? и твой навороченный лоадер заработает без настройки?

не веришь - почитай буржуев. Они в чем то завидуют жителям СССР
потому как у нас есть только одна ОС - TRDOS
Не важно что кривая и глючная - она стандарт

у них же D40 D80 Opus MB02, Микродрайв и тд.
поэтому только tap только хардкор.

Faster
25.06.2014, 09:28
это точка возврата в ROM TR-DOS
но никак не стандартная точка доступа
и причина в том числе в разных версиях ДОС

ты правда считаешь что прошивки 5.01, 5.03, 5.04, 6.01, 6.04
на 100% совместимы? и твой навороченный лоадер заработает без настройки?
Опять все свели к холивару. Ну не собираюсь я тут рассуждать на тему, что лучше: #3d2f или #3d13. Сабж вообще о другом!! 5.01 - идет сразу лесом. Это ***** мамонта никто не собирается поддерживать. Остальные в части #3d2f 100% совместимы.



не веришь - почитай буржуев. Они в чем то завидуют жителям СССР
потому как у нас есть только одна ОС - TRDOS
Не важно что кривая и глючная - она стандарт

у них же D40 D80 Opus MB02, Микродрайв и тд.
поэтому только tap только хардкор.
На буржуйские DOS мне пофигу, у кого есть TR-DOS, у тех все работает.

jerri
25.06.2014, 09:44
Опять все свели к холивару. Ну не собираюсь я тут рассуждать на тему, что лучше: #3d2f или #3d13. Сабж вообще о другом!! 5.01 - идет сразу лесом. Это ***** мамонта никто не собирается поддерживать. Остальные в части #3d2f 100% совместимы.


с учетом разнообразия дисководов, контроллеров и прочих радостей - да почти совместимы.



На буржуйские DOS мне пофигу, у кого есть TR-DOS, у тех все работает.

Ну раз тебе пофигу то к чему ты вообще начал эту тему?

Faster
25.06.2014, 09:51
с учетом разнообразия дисководов, контроллеров и прочих радостей - да почти совместимы.
через #3d2f на всех тех перечисленных версиях TR-DOS переключится ПЗУ? Ответ - да.



Ну раз тебе пофигу то к чему ты вообще начал эту тему?
Толсто. Прочитай мой первый пост и сам ответь на этот вопрос.

Titus
25.06.2014, 11:35
p.s. Titus, а ты не в курсе, кто написал турболоадер для x-copy (копировщик дискет)? Аналогичный лоадер, емнип, был и в креке Italy90 от Исаева. Вообще интересно, кто накодил первый турболоадер?:)

Нет, не в курсе.
Мне кажется, что родоначальниками были проги типа DCU от Родионова. Я сам ее разбирал на заре спектрумизма, чтобы понять, как работать на низком уровне с TR-DOS. Потом в 1994 году стал делать свои турбо-лоадеры, которые потом кто-то разбирал и вставлял к себе (даже на форуме кто-то про это рассказывал, может GoodBoy, может еще кто).
Причем, по скольку я поначалу являлся обладателем некошерного дисковода 5313 (Teac появился позже), то мой турбо-лоадер сделан был с учетом глюка данного дисковода, когда при старте мотора головка могла сместиться и сдвинуться на один трек. Многие турболоадеры того времени (до 95 года) грешили тем, что не работали на 5313, если в процессе загрузки дисковод останавливался, а потом запускался далее. Пользователю приходилось подлавливать этот момент, преоткрывать защелку дверцы, чтобы двигатель не остановился, а потом обратно опускать, когда надо было грузиться далее. А мой лоадер просто при старте двигателя считывал, на какой дорожке он находится, и корректировался, если дорожка не та. Кстати, тогда же в 1994 году я сделал турбо-лоадер с музыкой (для Shock MD), но так и не выпустил, хотя всем показывал и говорил, попробуйте сделать так же) Никто не сделал)

alone
25.06.2014, 12:09
А если серьезно, то только на реальном дисководе можно оценить всю прелесть и крутизну фишек как лоадеров, так и сопутствующих процедур использующих низкое программирование ВГ-шки, которые просто не написать через функции #3d13.
Низкое программирование ВГшки - это CacheVox, остальное детский конструктор из процедур ПЗУ :)

---------- Post added at 12:06 ---------- Previous post was at 12:02 ----------


К моменту разработки SMUC турболоадеры уже во всю клепали и никто не заморачивался над тем, что вдруг однажды MOA (читай Scorpion) создаст такой своеобразный эмулятор trd-образов, с ограниченным функционалом. Да и чего тут кривить душой, подавляющему большинству лоадерописателей было <censored> на этот дивайс уже после его выхода.
Если посмотреть фильм с Enlight'96, то между рекламами Амиги есть фрагмент, где группа во главе с Кано и Ивамото беседует с Зоновым как раз по этому вопросу. И сошлись на #3D13.

---------- Post added at 12:09 ---------- Previous post was at 12:06 ----------


И да, #3d2f такая я же не менее стандартная точка, что и #3d13.
Сама по себе она документирована, но все точки ПЗУ, которые через неё вызывают - нет.

Faster
25.06.2014, 13:07
Если посмотреть фильм с Enlight'96, то между рекламами Амиги есть фрагмент, где группа во главе с Кано и Ивамото беседует с Зоновым как раз по этому вопросу. И сошлись на #3D13.
Ага, после чего на следующий Enlight'97 сделали Eye Ache 2 с таким турболоадером, который нормально грузит только на Pentagon'е. :v2_dizzy_facepalm: Смешно. :)


Сама по себе она документирована, но все точки ПЗУ, которые через неё вызывают - нет.
Вот адреса стандартных подпрограмм:


#2fc3 out (#1f),a ;регистр команд
ret
.....
#1e3a out (#3f),a ;регистр дорожки
ret
.....
#1ff3 out (#ff),a ;системный регистр
ret
.....
#2a53 out (c),a ;универсальный адрес
ret
...
#3fe5 in a,(#ff)
and %11000000
jr z,#3fe5
ret m
#3fec ini ;чтение байтов
jr #3fe5
...
#3fca in a,(#ff)
and %11000000
jr z,#3fca
ret m
#3fd1 outi ;запись байтов
jr #3fca
...
#20b1 in a,(#ff)
and #c0
jr z,#20b1
ret m
out (c),d ;запись байта
djnz #20b1
ret

Не думаю, что их сдвигали по адресам в версиях выше 5.04, иначе старый софт не стал бы работать на новых версиях.

denpopov
25.06.2014, 13:20
Ага, после чего на следующий Enlight'97 сделали Eye Ache 2 с таким турболоадером, который нормально грузит только на Pentagon'е. Смешно

а чо смешного-то? просто подражание амижным треклоадерам, и грузится уместно:)

Titus
25.06.2014, 13:21
Если посмотреть фильм с Enlight'96, то между рекламами Амиги есть фрагмент, где группа во главе с Кано и Ивамото беседует с Зоновым как раз по этому вопросу. И сошлись на #3D13.

Если пересмотреть множество фильмов и перечитать множество статей, то весьма легко выцепить информационный фрагмент, совпадающий с собственным мнением, но не отражающий картину вцелом)

Ни Кано, ни Ивамото не придерживались 3D13.
Уж и пошутить нельзя. Чего не скажешь в шутейном разговоре)

jerri
25.06.2014, 13:22
Ага, после чего на следующий Enlight'97 сделали Eye Ache 2 с таким турболоадером, который нормально грузит только на Pentagon'е. :v2_dizzy_facepalm: Смешно. :)

Вот адреса стандартных подпрограмм:


#2fc3 out (#1f),a ;регистр команд
ret
.....
#1e3a out (#3f),a ;регистр дорожки
ret
.....
#1ff3 out (#ff),a ;системный регистр
ret
.....
#2a53 out (c),a ;универсальный адрес
ret
...
#3fe5 in a,(#ff)
and %11000000
jr z,#3fe5
ret m
#3fec ini ;чтение байтов
jr #3fe5
...
#3fca in a,(#ff)
and %11000000
jr z,#3fca
ret m
#3fd1 outi ;запись байтов
jr #3fca
...
#20b1 in a,(#ff)
and #c0
jr z,#20b1
ret m
out (c),d ;запись байта
djnz #20b1
ret

Не думаю, что их сдвигали по адресам в версиях выше 5.04, иначе старый софт не стал бы работать на новых версиях.

а кто его особо тестировал то это старый софт

Titus
25.06.2014, 13:24
ты правда считаешь что прошивки 5.01, 5.03, 5.04, 6.01, 6.04
на 100% совместимы? и твой навороченный лоадер заработает без настройки?

А еще есть TR-DOS 7.00 (моя), она на форуме выкладывалась.
Отличается от оригинальной тем, что обычные программы (те, что через 3D13) она тоже грузит с турбо скоростью. Что, впрочем, отключается, нажатием Shift'а (кажется), и TR-DOS 7.0 (http://zx-pk.ru/showthread.php?t=11750) мгновенно превращается в 5.03.

Faster
25.06.2014, 13:25
а чо смешного-то? просто подражание амижным треклоадерам, и грузится уместно:)
Смешно по поводу того, что "сошлись на #3D13". Да это понятно, что уместно. Я ничего и не говорю на этот счет.

alone
25.06.2014, 13:30
Вот адреса стандартных подпрограмм:
Среди перечисленных нет чтения системного регистра и регистра статуса, например.

Faster
25.06.2014, 13:35
Среди перечисленных нет чтения системного регистра и регистра статуса, например.
Ну #ff читается через #3fe5, а #1f по алгоритму МОА по адресу #3f33.

jerri
25.06.2014, 14:12
Ну #ff читается через #3fe5, а #1f по алгоритму МОА по адресу #3f33.

т.е через ()()
я правильно понял?

есть кстати еще метод Рощина

---------- Post added at 14:12 ---------- Previous post was at 14:11 ----------


А еще есть TR-DOS 7.00 (моя), она на форуме выкладывалась.
Отличается от оригинальной тем, что обычные программы (те, что через 3D13) она тоже грузит с турбо скоростью. Что, впрочем, отключается, нажатием Shift'а (кажется), и TR-DOS 7.0 (http://zx-pk.ru/showthread.php?t=11750) мгновенно превращается в 5.03.

ты патчил же 5.03 я правильно понял?

Titus
25.06.2014, 14:14
ты патчил же 5.03 я правильно понял?

Судя по ссылке, патчил 5.04T.

Faster
25.06.2014, 14:34
т.е через ()()
я правильно понял?
Вот ты упертый какой, однако! Специально для тебя:


;(c) Andrew MOA Larchenko
in_1f out (#3f),0
out (#5f),#a
ld d,#01
jp #3f33
...
#3F33 IN A,(#1F)
LD B,A
AND #7F
RET Z
LD HL,#29D8
AND #40
JR NZ,#3F4B
LD A,B
AND 4
JR Z,#3FA0
DEC D
JR NZ,#3F15
#27D8 LD HL,#29E2
#3F4B LD A,#D0
OUT (#1F),A
LD A,B
AND 1
JP NZ,#3EE7
IN A,(#3F)
OR A
JR NZ,#3F5F
IN A,(#5F)
CP #A
RET Z

найдешь здесь ()() ??



есть кстати еще метод Рощина
Рощин заблуждался, ситуация которую он смоделировал невозможна, если контролировать #ff.

jerri
25.06.2014, 15:31
in a,(c)
ret
out (c),a
ret

вот это - нормально
остальное - через ()()
а поскольку авторы ТР Дос не предусмотрели нормально
то да все всегда через ()()

null_device
25.06.2014, 20:22
jerri, мне почему-то кажется, что если бы в то время не было возможности "повторить" BDI на отечественной элементной базе, врятли бы появился какой-то другой интерфейс в отечественных клонах (поправьте меня, если я ошибаюсь). Ну и относительная простота схемной реализации, опять же. ;)

jerri
25.06.2014, 22:48
null_device, а разве существующие на тот момент контроллеры FDD нельзя было прикрутить?
что у нас существовало в 1988?

Barmaley_m
26.06.2014, 00:31
Мой вопрос был просто ради интереса, а не ради экономии 4-х тактов, которых, кстати, будет вовсе не 4. Например в турболоадере на чтение 1 сектора это число составит уже 16 тактов (это без учета выбора нужной стороны диска и поиска нужного трека), а с учетом всех этих вещей - 28 тактов.
При работе с дисководом скорость выполнения, так сказать, макроскопических операций, как то чтение сектора, позиционирование и т.д., определяется дисководом. Нельзя считать сектор быстрее, чем он окажется под магнитной головкой, как ни оптимизируй код. Разброс скоростей вращения диска и то будет вносить более ощутимый вклад, чем эти 4 такта на 3d2f. А скорость загрузчика программно подстраивается к работе дисковода.

Другое дело, что если турболоадер написан так криво, что он не успевает в нужные моменты обратиться к нужным портам - тогда возникают пропуски сектора и ожидание следующего оборота; потери данных и ошибки чтения. Но это свидетельствует только о кривости такого лоадера. Все нормальные драйвера работают как через 3d30, так и через 3d2f.

---------- Post added at 23:31 ---------- Previous post was at 23:24 ----------


Вообще интересно, кто накодил первый турболоадер?:)
Турболоадер следует отличать от произвольного лоадера, использующего низкоуровневый доступ к ВГ93. Например, в DCU был такой доступ, но быстрой эту программу не назовешь.

Давайте вспоминать, какая самая старая программа имела турболоадер. Мне известен загрузчик к Lyra 2 от ASC. 1992г. Можно скачать у AAA. Там используется турболоадер, и по-видимому это было новеллой для тех времен, так как в заставке акцентируется: "HP-Disked", HP=High Performance.

Faster
26.06.2014, 08:33
Нельзя считать сектор быстрее, чем он окажется под магнитной головкой, как ни оптимизируй код.
Всё верно, я это знаю. НО! Представь ситуацию, что между чтением секторов происходит выполнение стороннего кода, да взять, например, печать на экране номера считываемого сектора, трека и еще чего-то там (в копировщике), или загрузчик как в POWER UP или REFRESH (видео часть загружаемая под музыку в реальном времени с дискеты). И эта экономия в тактах может оказаться драгоценной.


Турболоадер следует отличать от произвольного лоадера, использующего низкоуровневый доступ к ВГ93.
Меня интересует именно турболоадер, а не просто процедура используюущая низкоуровневый доступ к ВГ.


Давайте вспоминать, какая самая старая программа имела турболоадер. Мне известен загрузчик к Lyra 2 от ASC. 1992г. Можно скачать у AAA. Там используется турболоадер, и по-видимому это было новеллой для тех времен, так как в заставке акцентируется: "HP-Disked", HP=High Performance.
Посмотрю...

Посмотрел. Там загрузчик использует функцию #3D13 с кодом 14 - загрузка кодового файла. #3D2F там и не пахнет :) Кому интересно, может сам посмотреть код загрузчика с адреса #5B27.

null_device
26.06.2014, 09:27
разве существующие на тот момент контроллеры FDD нельзя было прикрутить?

"Прикрутить" - ничего не мешало. Это, если отбросить вопросы "массовости" (стандарта и единообразности, если хотите), совместимости форматов и емкости носителя.
Насколько знаю, чип WDC1772 - на котором построены популярные интерфейсы "за бугром", не имеют отчественного аналога (КР1818ВГ93), в отличии от WDC1793.

Vadim
26.06.2014, 10:58
4 такта погоды не делают, а вот на совместимость очень влияют, нужно мне, к примеру, перехватывать входы 3D2F что бы после входа мы не уходили по стеку, а шли бы на свою процедурку. 2 байта, можно заменить на JR и там поставить уже переход, а не тут то было! Выяснилось, что есть программы которые вызывают 3D30. Моё мнение было таким - просто люди захотели сделать "вот так", что бы выкаблучнуться или что бы "запутать" взломщика. А ситуация с тем, что якобы ПЗУ не переключится - ну бред, как выше и говорили.

Faster
26.06.2014, 11:06
4 такта погоды не делают, а вот на совместимость очень влияют, нужно мне, к примеру, перехватывать входы 3D2F что бы после входа мы не уходили по стеку, а шли бы на свою процедурку. 2 байта, можно заменить на JR и там поставить уже переход, а не тут то было!
Это теоретический пример или есть реальный пример перехвата #3d2f, который ты использовал?

Vadim
26.06.2014, 11:44
Это теоретический пример или есть реальный пример перехвата #3d2f, который ты использовал?

Есть конечно, я пишу вариант trdos для Профика с поддержкой винта. Место надо в ТРДОС вычистить, вариант сделать кусочками - нереален, т.е. убираем всё лишнее, всё сдвигаем и много чего переписываем. Совместимость теряем сразу по 3D2F. Что делать? Решил сделать перехватчик адресов, для анализа и подмены. Сделал, много чего стало работать на такой прошивке, но конечно есть и такое что не пойдёт. Перехват сделал очень просто - по адресу 3D30 поставил код JP. Получился адрес 3DCD в нём уже и ставим перехватчик. В списке подмены у меня сейчас около 30 адресов, для большей части программ этого достаточно. Увы, насмотрелся много чего в программах, жаль что так писали.

SoftFelix
26.06.2014, 11:45
А есть где-нить программа-тест для проверки железа на "удачность" перехода по #3D30? Было бы полезно ей потестить существующее железо, особенно в режиме ТУРБО ВКЛ-ВЫКЛ (процессор). Или написать такую тЕстилку...

Faster
26.06.2014, 13:31
Перехват сделал очень просто - по адресу 3D30 поставил код JP. Получился адрес 3DCD в нём уже и ставим перехватчик.
Убедил не использовать #3D97 :) Насчет #3D30 проблем не увидел, считаю, что это правильно, что отслеживаешь именно #3D30, а не #3D2F.

---------- Post added at 13:31 ---------- Previous post was at 13:29 ----------


А есть где-нить программа-тест для проверки железа на "удачность" перехода по #3D30? Было бы полезно ей потестить существующее железо, особенно в режиме ТУРБО ВКЛ-ВЫКЛ (процессор). Или написать такую тЕстилку...
Да что ее писать. Запускаешь прогу, которая юзает #3D30, или в асме пишешь свой загрузчик и запускаешь. Если не повисло, то все ок.

alone
26.06.2014, 15:09
Что-то мне это напоминает разговоры насчёт "давайте изменим адресацию экрана, а то адрес вычислять неудобно". Выигрыш около нуля, а проблем не оберёшься.

Faster
26.06.2014, 16:46
Что-то мне это напоминает разговоры насчёт "давайте изменим адресацию экрана, а то адрес вычислять неудобно". Выигрыш около нуля, а проблем не оберёшься.
Ты так говоришь, как буд-то я пытаюсь навязать что-то новое. Этим приемам уж 20 лет. И пока я не вижу проблем использовать #3D30, по большому счету. Мне не сложно, конечно, и #3D2F использовать. Я и запустил этот топик, чтобы обсудить все нюансы.

jerri
26.06.2014, 17:53
Мне не сложно, конечно, и #3D2F использовать.

Дельная мысль. оставь как есть пусть работает.

Gutten
26.06.2014, 19:26
in a,(c)
ret
out (c),a
ret

вот это - нормально
остальное - через ()()
а поскольку авторы ТР Дос не предусмотрели нормально
то да все всегда через ()()

В скорпионе есть такое:

#3FF0 out (c),a
#3ff2 ret
#3FF3 in (a),c
#3FF5 ret

Но кому это надо?

Vadim
27.06.2014, 14:04
Но кому это надо?
Конечно никому, полезнее было бы если
1)Это лежало бы в окне 3D00-3DFF
2)Внедрено в прошивку ещё в 1989г, т.е. было бы стандартом.

Gutten
27.06.2014, 14:12
стандарт - точка #3D13, рекомендованная разработчиком с указанием функций, внедрено раньше, чем в 1989 году. Но это не помешало начать жаждущим пользоваться другими точками и прямым программированием ВГ93, не задумываясь о совместимостях и прочих проблемах. Так что наличие этих команд в нужном окне вряд ли бы что-то изменило.

Faster
27.06.2014, 19:21
не задумываясь о совместимостях и прочих проблемах.
О каких еще проблемах ты говоришь? У всех все работало в те годы и все пёрлись от турболоадеров в демках, копировщиках и тд. Через функции #3d13 ничего стоящего было не накодить, к тому же эти системные переменные.... А проблемы начались уже позже, с появлением SMUC и патчей ПЗУ. Но это уже проблемы SMUC и патчеров, а не "#3d2f".

Gutten
27.06.2014, 19:52
Как раз о проблемах развития. Использование точек входа в ПЗУ вместо рекомендованных функций - стопор развития и исправления ошибок ПЗУ. В ПЗУ48 и ПЗУ128 тоже ошибки не правились по причине совместимости.

goodboy
27.06.2014, 19:59
стандарт - точка #3D13, рекомендованная разработчиком с указанием функций

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

Faster
27.06.2014, 20:28
Как раз о проблемах развития. Использование точек входа в ПЗУ вместо рекомендованных функций - стопор развития и исправления ошибок ПЗУ.
По мне так #3d2f это наоборот большой прогресс развития кодинга. А исправление ошибок можно сделать и без ущерба совместимости. Посмотри книгу П.Федина (http://vtrdos.ru/book/TRDISASM.ZIP). Я в предыдущем посте говорил, про патчи добавляющие поддержку HDD.

Gutten
27.06.2014, 20:35
Вообще-то именно для этой точки есть различные функции, которые заносятся в регистр С. Согласен, раскопали скорее всего наши хакеры. Хотя честно думал, что по аналогии с INT 21h на ПК именно оно прописано разработчиком.
Да и перевод для иностранцев сделан только про эту точку
ftp://ftp.worldofspectrum.org/pub/sinclair/hardware-info/TR-DOS_Programming.txt

creator
27.06.2014, 21:08
В ПЗУ48 и ПЗУ128 тоже ошибки не правились по причине совместимости.
Вообще-то они не правились по причине жадности дяди Клайва.

Gutten
27.06.2014, 21:15
Мда? Сколько помню, везде (в отечественной литературе) упоминалось, что они не правились потому, что много программ использовали процедуры ПЗУ. И высказывалось мнение, что лучше было бы сделать аналог керналя Амиги с точками входа.

Vadim
28.06.2014, 06:26
И высказывалось мнение, что лучше было бы сделать аналог керналя Амиги с точками входа.
Я так думаю, что не были сделаны точки входа по следующим причинам:

1)Комп задумывался как обучающий для школьников начальных классов, разработчики и сам синклер не предполагали, что будет писаться некий софт, которому потребуется вызовы из ПЗУ. Т.е. делали "игрушечную" машинку, а не серьезный аппарат;
2)Т.к. в ПЗУ находится бейсик, а не BIOS то делать точку входа с парсингом номеров функций не особо осмысленно. Да, ПЗУ состоит (условно) из 2х частей: интерпретатор бейсика и системные процедуры (это условно в литературе называют собственной ОС спектрума или SOS). Но эта SOS она представляет собой просто набор нескольких процедур, нет там деления на классы или уровни. Мешанина процедур.
А точки входа были сделаны в ПЗУ +3DOS там такое деление есть

Alex Rider
29.06.2014, 00:45
Я так думаю, что не были сделаны точки входа по следующим причинам
Насколько я помню, причина одна: рекомендация использования кода ПЗУ для уменьшения объема кода программ. И этот подход при всех своих недостатках имел успех. Правки вносить было нельзя из-за использования кода ПЗУ в самых экзотических целях, например, для расшифровки кода приложения, затирания по ldir: ret почти всей памяти и так далее. Saboteur 2, к примеру без зазрений совести использует код буквы "C" по ардесу #000f для печати первой буквы имени ракеты.

Vadim
29.06.2014, 07:02
рекомендация использования кода ПЗУ для уменьшения объема кода программ.
Ты противоречишь сам себе. Если бы рекомендовали использовать ПЗУ, то как раз таки были бы сделаны точки входа, по которым имелся бы осмысленный и нужный сервис.

goodboy
29.06.2014, 10:32
Правки вносить было нельзя из-за использования кода ПЗУ в самых экзотических целях, например, для расшифровки кода приложения, затирания по ldir: ret почти всей памяти и так далее. Saboteur 2, к примеру без зазрений совести использует код буквы "C" по ардесу #000f для печати первой буквы имени ракеты.

похожая ситуация есть в игре `defender of the crown`.
там #FF`ами из ПЗУ печатается полоса которая выделяет пункт в меню,
а в 128 там другие байты и на экране естественно `мусор`

savelij
29.06.2014, 10:55
Я с вас удивляюсь что вы тут обсуждаете. Все эти привязки к тырдос пзу не более чем вые..анки адаптаторов. Какое нафиг использование привязки к тырдос пзу. Оригинальные игры про тырдос ничего не знают и соответственно никак к нему не привязаны. За такие выкрутасы этим самым адаптантам нужно руки поотбивать по самую шею.

Shadow Maker
29.06.2014, 13:24
похожая ситуация есть в игре `defender of the crown`.
там #FF`ами из ПЗУ печатается полоса которая выделяет пункт в меню,
а в 128 там другие байты и на экране естественно `мусор`
Я помню, автор это фиксил кстати в DotC 30 Anniversary edition. Который по-моему так и не вышел в общий доступ.

Faster
30.06.2014, 09:32
В связи с переживанием владельцев SMUC, а также для остальных заинтересованных лиц:

Проверка наличия SMUC:


LD A,(#8)
CP #C3
JR NZ,NO_SMUC
LD BC,#1FFD ;порт конфигурации scorpion'а
LD A,#2
OUT (C),A ;включаем пзу монитора (rom 2)
LD A,(#F1) ;код версии пзу
OUT (C),0 ;отключаем пзу монитора
CP #5E
JR C,NO_SMUC ;в пзу нет поддержки hdd
LD SP,TABLE
LD HL,#3D2F
LD BC,#FFBE
JP (HL)
LL_00 INC A ;#ff??? - если регистр состояния
JR Z,NO_SMUC ;пуст, то smuc отсутствует
...

TABLE DW #3FF3,LL_00

Проверка наличия HDD:


LD HL,WORKBUF
LD C,#9 ;setwrk
RST 8
DB #81
LD C,#22 ;$hddid
RST 8
DB #81
JR C,NO_HDD
...

WORKBUF DS #200

Проверка с какого устройства запущена программа (физический диск или виртуальный образ):


LD A,(#8)
CP #C3
JR NZ,FDD
LD BC,#1FFD ;порт конфигурации scorpion'а
LD A,#2
OUT (C),A ;включаем пзу монитора (rom 2)
LD A,(#F1) ;код версии пзу
OUT (C),0 ;отключаем пзу монитора
CP #5E
JR C,FDD ;в пзу нет поддержки hdd
;-
LD SP,TABLE ;тест устройства (по исходникам MOA)
LD HL,#3D2F
LD BC,#7FBA
JP (HL)
LL_00 LD C,A
LD A,(#5CF6) ;дисковод
CP #2 ;"c","d"
JR NC,HDD ;эмулятор
DEC A
JR Z,$+#8
BIT 7,C ;"a"
JR Z,HDD ;эмулятор
JR FDD
BIT 6,C ;"b"
JR Z,HDD ;эмулятор
FDD ...

TABLE DW #3FF3,LL_00

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

Blade
30.06.2014, 09:43
Есть еще TR-DOS 5.30, 6.XX.

Alex Rider
30.06.2014, 14:29
Если бы рекомендовали использовать ПЗУ, то как раз таки были бы сделаны точки входа, по которым имелся бы осмысленный и нужный сервис.
Ну четыре таких точки все же сделали :) #0008, #0010, #0028, #0038. А, вообще, повторюсь, что можно использовать любой доступный набор байтов любым угодным способом, потому как ПЗУ неизменно.

Какое нафиг использование привязки к тырдос пзу.
А никто и не говорил, что авторы TR-DOS обещались ничего в ПЗУ не менять и позволяли использовать его код как угодно. Есть несколько стандартных точек входа - их и можно использовать без потери совместимости. Все остальное - для авторов, готовых на одну из двух возможностей: слушать про себя матерные отзывы или писать крупными буквами, что их вресия работает только на TR-DOS X.YZ и может убить диск при использовании другой версии TR-DOS (и слушать чуть менее матерные отзывы обладателей других прошивок, на которых идет софт от нормальных авторов). В моем понимании использование нестандратного кода TR-DOS оправдано только для разработки хитрых дем для "посмотрите как я умею" или для написнаия (перекрестившись) сервисных тулов, для работы которых авторы TR-DOS не сделали точек входа.

Titus
30.06.2014, 14:38
А никто и не говорил, что авторы TR-DOS обещались ничего в ПЗУ не менять и позволяли использовать его код как угодно. Есть несколько стандартных точек входа - их и можно использовать без потери совместимости. Все остальное - для авторов, готовых на одну из двух возможностей: слушать про себя матерные отзывы или писать крупными буквами, что их вресия работает только на TR-DOS X.YZ и может убить диск при использовании другой версии TR-DOS (и слушать чуть менее матерные отзывы обладателей других прошивок, на которых идет софт от нормальных авторов). В моем понимании использование нестандратного кода TR-DOS оправдано только для разработки хитрых дем для "посмотрите как я умею" или для написнаия (перекрестившись) сервисных тулов, для работы которых авторы TR-DOS не сделали точек входа.

В годы расцвета спектрумизма в России и трдосии населения, ходовыми были только версии 5.03, 5.04T и подобные. Те, кто делали турболоадеры использовали несколько основных приемов, основанных на тех фрагментах кода, которые во всех этих версиях были неизменны.
На моей памяти несовместимыми с массами были только загрузчики Кладова в его версии Елите-3 (а может и Елите-2 тоже), а так же некоторые турболоадеры, которые не рассчитывали на глючные 5313. Да и то, все эти глюки никак не были связаны с собственно TR-DOS.

Поэтому все эти крики, что использовать доступ к ВГ напрямую неправильно, или же out (FD),A аморально - никак не изменят того факта, что в эпоху расцвета спековского движения у нас, все это было нормой, и подобным образом написана куча программ. Поэтому именно господа фанаты и новожелезописатели должны подстраиваться под стандарты эпохи расцвета, а не наоборот.

Alex Rider
30.06.2014, 14:48
Поэтому именно господа фанаты и новожелезописатели должны подстраиваться под стандарты эпохи расцвета, а не наоборот.
Это верно и никто не отрицает. Железно поддерживать выкрутасы из 90-х надо обязательно, если это вообще возможно. Хотя, это и не дает никакого оправдания для написания хитрых загрузчиков сейчас. А особенно для изобретения "новых" "хитрых" приемов типа использования #3d30.

Titus
30.06.2014, 15:20
Это верно и никто не отрицает. Железно поддерживать выкрутасы из 90-х надо обязательно, если это вообще возможно. Хотя, это и не дает никакого оправдания для написания хитрых загрузчиков сейчас. А особенно для изобретения "новых" "хитрых" приемов типа использования #3d30.

Ну, спор 3d30/3d2f в наше время практически не актуален. Тормознутых систем, не работающих с 3d30 вряд ли найдешь, но и смысла писать 3d30 вместо 3d2f нету, ибо разница в три копейки.

Я, если бы писал лоадер, обязательно бы его писал через 3d2f, а не через 3d13. Как и делал начиная с 1994 года)

Alex Rider
30.06.2014, 21:14
Я, если бы писал лоадер
Для чего лоадер-то? В смысле, для какой софтины?

Titus
30.06.2014, 22:21
Для чего лоадер-то? В смысле, для какой софтины?
Для любой, или почти любой. Игры, демки, или чего еще.

Alex Rider
30.06.2014, 22:35
Для любой, или почти любой. Игры, демки, или чего еще.
Это специально, чтобы реальщики на Скорпе, или прошившие себе кастомные TR-DOS'ы или эмуляторщики, у которых не 5.03/5.04 стоит по дефолту в ромсете, тебя прокляли, а потом бы появилась версия с гордой надписью "Patched for #3d13 by Alex Rider" поверх твоего копирайта? Ну я понимаю еще там турболоадер, если у тебя разом грузится 200 Кб или в интре/деме под музыку... Хотя, интро с музыкой я бы тоже выломал для ускорения загрузки.

Titus
30.06.2014, 22:56
Это специально, чтобы реальщики на Скорпе, или прошившие себе кастомные TR-DOS'ы или эмуляторщики, у которых не 5.03/5.04 стоит по дефолту в ромсете, тебя прокляли, а потом бы появилась версия с гордой надписью "Patched for #3d13 by Alex Rider" поверх твоего копирайта? Ну я понимаю еще там турболоадер, если у тебя разом грузится 200 Кб или в интре/деме под музыку... Хотя, интро с музыкой я бы тоже выломал для ускорения загрузки.

Наверняка эта прога была бы заточена под Пентагон онли, и реальщики на Скорпе ничего бы не потеряли)

Разве кто-то жаловался, что не работает, например, Great Codemasters Collection?

alone
30.06.2014, 23:20
Не знаю, как в Москве, а у нас в Рязани продавцы даже 128К игры помечали (аж в названии файла), а то, что работает только на пентагоне, не выкладывали вообще. Ибо себе дороже.

Alex Rider
01.07.2014, 00:10
Наверняка эта прога была бы заточена под Пентагон онли, и реальщики на Скорпе ничего бы не потеряли)
Ну если только так. Хотя, есть, конечно, альтернативные прошивки TR-DOS и на Пентагонах, но прошиты они уже скорее всего на свой страх и риск, да и альтернативные прошивки все же уважают, как правило, псевдостандартные "точки входа". Но, опять же, это оправдано только для дем и собственных игр, но не для системного софта и интр к чужим играм, работающим на большом парке машин. Ну и если оно действительно разумно использует фишки Пентагона, а не просто потому что "у меня оно есть".

Titus
01.07.2014, 00:14
Ну если только так. Хотя, есть, конечно, альтернативные прошивки TR-DOS и на Пентагонах, но прошиты они уже скорее всего на свой страх и риск, да и альтернативные прошивки все же уважают, как правило, псевдостандартные "точки входа". Но, опять же, это оправдано только для дем и собственных игр, но не для системного софта и интр к чужим играм, работающим на большом парке машин. Ну и если оно действительно разумно использует фишки Пентагона, а не просто потому что "у меня оно есть".

Все видимые мною TR-DOS все это уважали. 5.03, 5.04Т и 7.0 (моя). Да и другие наверняка тоже.
Пентагоновые фишки в основном нужны, конечно, для дем. Игры всегда стараются делать мультимашинными.

Alex Rider
01.07.2014, 01:29
Да и другие наверняка тоже.
Если версия поддерживает образы дискет, то, даже если в ней "популярные" куски кода не тронуты, они вряд ли обеспечат чтение из образов с других накопителей. Так что, в принципе, к одному пришли: для мультимашинного софта (утилиты, игры, демы без жесткой привязке к машине) стоит делать загрузку через #3d13 или из BASIC'а, для софта под конкретные машины можно использовать и куски кода TR-DOS. Но, все же думаю, что стоит детектить наличие этого кода или хотя бы предупреждать пользователя.

Shadow Maker
01.07.2014, 01:37
Конечно, большими такими буквами "ВЫ ЗАГРУЖАЕТЕ ИГРУ, У КОТОРОЙ ЕСТЬ В КОДЕ 3D2F, И МЫ ДЕТЕКТИМ, ШО ВЫ ИСПОЛЬЗУЕТЕ КОФЕМОЛКУ, ПЕРЕГРУЗИТЕСЬ И НЕ ПЫТАЙТЕСЬ ИСПОЛЬЗОВАТЬ КОФЕМОЛКУ БЕЗ 3D2F!"

jerri
01.07.2014, 10:52
В свое время для турболоадера в Walker я использовал настройщик, который с помощью функции копирования имени вытягивал ПЗУ и потом искал нужные мне процедуры в дампе и втыкал адреса в нужные места.
уверен что даже на 5.01 этот лоадер работал бы без проблем.

alone
01.07.2014, 11:21
Игры всегда стараются делать мультимашинными.
Это не так. Конкретно для Профи написали 40 игр, которые больше нигде не работают. Но конкретно для Пентагона игры не писали.

Vadim
01.07.2014, 11:42
Это не так. Конкретно для Профи написали 40 игр, которые больше нигде не работают. Но конкретно для Пентагона игры не писали.
Архитектура пентагона с т.з. программиста, чем то отличается от ZX-128+Betadisc? Нет. Профи, как и АТМ имеет свой расширенный режим с ОСью, если такого режима больше нет нигде, то и софт не пойдет (если этот софт ориентирован на железо). Та же история со Спринтером.

Titus
01.07.2014, 15:22
Это не так. Конкретно для Профи написали 40 игр, которые больше нигде не работают. Но конкретно для Пентагона игры не писали.

Имеются в виду, если игра под стандартный экран 6912 и стандартную память 128Кб.

null_device
01.07.2014, 16:43
Архитектура пентагона с т.з. программиста, чем то отличается от ZX-128+Betadisc?

Например, банально, писать под пентагоновское количество тактов в прерывание(~71000). И все - на фирменной машине, и любой с количеством тактов на этом же уровне (например, "желтый" нетурбированный скорпион) данная программа не пойдет.
Второй "глюкодром" - общее поле памяти без торможения.

Alex Rider
01.07.2014, 16:46
Конечно, большими такими буквами "ВЫ ЗАГРУЖАЕТЕ ИГРУ, У КОТОРОЙ ЕСТЬ В КОДЕ 3D2F, И МЫ ДЕТЕКТИМ, ШО ВЫ ИСПОЛЬЗУЕТЕ КОФЕМОЛКУ, ПЕРЕГРУЗИТЕСЬ И НЕ ПЫТАЙТЕСЬ ИСПОЛЬЗОВАТЬ КОФЕМОЛКУ БЕЗ 3D2F!"
Не надо иронии. А то ты не видел никогда в загрузчиках и/или мануалах надписи о том, что это чудо работает только на TR-DOS 5.01/5.03/5.04/...

Но конкретно для Пентагона игры не писали.
А разве нет игр, которые изначально под пентагоновский экран/int были заточены? Alter Ego - не оно (правда, это из недавнего).

В общем, действиетльно, если игра использует (неотключабельно) наворот какого-то клона, то она может пользоваться и другими документированными возможностями этого клона (например, rst #8 для Скорпа) и спокойно не работать на ZX48, Zx128, Пентагоне и даже BaseConf :) Но при любом раскладе использование недокументированных хаков может порождать любые сюрпризы в будущем. И, если на форуме есть люди, которые за час переделают [почти]любую программу с #3d2f под #3d13, то для более навороченных клонов вероятность фейла больше.

solegstar
01.07.2014, 17:05
И, если на форуме есть люди, которые за час переделают [почти]любую программу с #3d2f под #3d13, то...
я б этим людям даже денег заплатил за переделку нужной мне проги под #3d13. :)

alone
01.07.2014, 17:09
Чёрный Ворон так и не переделали. Если бы он был #3D13, то про поддержку #3D2F в новом железе, может, даже и не вспоминали бы :)

Alex Rider
01.07.2014, 20:36
я б этим людям даже денег заплатил за переделку нужной мне проги под #3d13.
Что за прога?

Чёрный Ворон так и не переделали.
Я так понимаю, это эксперимент далеко не на один вечер :) Даже кладовская Elite с ломанным загрузчиком Titus'а поддалась за несколько часов (и чисто под скорп, и под #3d13). А в ЧВ мне страшно влезать - авторитет Медноногова давит.

denpopov
01.07.2014, 20:40
А в ЧВ мне страшно влезать - авторитет Медноногова давит.
может, там код по области $5C00 и дальше расположен?

Titus
01.07.2014, 20:43
Я так понимаю, это эксперимент далеко не на один вечер :) Даже кладовская Elite с ломанным загрузчиком Titus'а поддалась за несколько часов (и чисто под скорп, и под #3d13).

Ну-ка, ну-ка, покажи кладовскую элиту мою версию, которую переделали под 3d13)

goodboy
01.07.2014, 21:37
может, там код по области $5C00 и дальше расположен?
там код начинается с #4000 и по всей памяти, графика на `втором` экране

denpopov
01.07.2014, 21:39
там код начинается с #4000 и по всей памяти, графика на `втором` экране
вот это размах:)

Alex Rider
01.07.2014, 22:49
Ну-ка, ну-ка, покажи кладовскую элиту мою версию, которую переделали под 3d13)
http://zx-pk.ru/showpost.php?p=538361&postcount=1056

---------- Post added at 22:49 ---------- Previous post was at 22:46 ----------

Ну как твою :) Переполоманную твою.

Titus
01.07.2014, 23:48
Ну как твою :) Переполоманную твою.

Действительно, вроде меню осталось мое.

Alex Rider
02.07.2014, 00:05
Там тока бага непофиксенная с отображением, упоминаемая в треде про Elite, осталась. Не думал даже как ее правильно зачинить. Да и зачастую несложно переделать загрузку/запись, заточенную под #3d2f, под #3d13. Кстати, вот эта вот Elite - один из примеров, когда #3d2f никуда не уперлась. Подозреваю, что сделано так потому, что так проще, и похрен на всех, у кого не пойдет.

solegstar
02.07.2014, 01:06
Что за прога?
так с налету и не вспомню, но бывает попадаются... если будут варианты, маякну.

Titus
02.07.2014, 03:21
Кстати, вот эта вот Elite - один из примеров, когда #3d2f никуда не уперлась. Подозреваю, что сделано так потому, что так проще, и похрен на всех, у кого не пойдет.

Если че, то вся работа с диском в этой элите - это моих рук дело) Т.е. от кладовской там ничего не осталось, но у него тоже было 3d2f, только еще похлеще)

Vadim
02.07.2014, 06:13
Например, банально, писать под пентагоновское количество тактов в прерывание(~71000). И все - на фирменной машине, и любой с количеством тактов на этом же уровне (например, "желтый" нетурбированный скорпион) данная программа не пойдет.

Программа на фирменном пойдет, но будет подтормаживать. Так что ответ не принимается.

Gutten
02.07.2014, 08:21
Ну если это демка с мультиколором, то пойдёт, но "а смысл?"

Shadow Maker
02.07.2014, 09:08
Короче, надо заканчивать. Итог - сейчас надо делать под 3d13, если делать под 3d2f - то только 3d2f, не 3d30. Чем обусловлено было 3d2f уже сказали.

Vadim
02.07.2014, 09:39
Всё правильно. Я так и считал ещё в начале 90-х. Смысл 3D2F это либо выкаблучивания, либо спец.случай, когда процедуры 3D13 не помогут, либо когда системных переменных нет, но как писалось в одной из тем, нужно всего 3 переменных для работы. Многие лепили 3D2F из-за того, что не могли отключить вывод сообщений о ошибке, а делается это легко. Если нам только чтение/запись секторов trdos нужно, то 3D13 вполне даже справляется при том корректно работая с любым дисководом (80, 40 DS SS)и с любой буквой.

Faster
02.07.2014, 10:56
Короче, надо заканчивать. Итог - сейчас надо делать под 3d13, если делать под 3d2f - то только 3d2f, не 3d30. Чем обусловлено было 3d2f уже сказали.
Соглашусь с такой формулировкой. Тему "сисек" раскрыли. :)

Alex Rider
02.07.2014, 11:21
Если че, то вся работа с диском в этой элите - это моих рук дело) Т.е. от кладовской там ничего не осталось, но у него тоже было 3d2f, только еще похлеще)
Только, насколько я понимаю, у Кладова вся работа с диском была упрятана в 48-ю память, а у тебя юзается 1-я банка для твоей работы с диском ==> игра стала не 48-я. При этом свободной памяти сразу стала почти целая банка, а используется по-прежнему #3d2f специально для батхерта скорпионовцев. Но я сделал все небрежно - у меня дисковые ошибки не обрабатываются, а с учетом перетертых системных переменных BASIC'а ни разу не понятно чем это кончится.

Faster
02.07.2014, 11:29
Вы о чем рассуждаете вообще? Тогда у всех скорпионщиков были еще и реальные дисководы и все работало! Топик посвящен тому как правильнее сейчас кодить, а не делать разбор полетов по 90-ым...

Shadow Maker
02.07.2014, 12:43
Они очень хотят пооффтопить просто...

Gutten
02.07.2014, 12:51
КМК, сейчас правильнее кодить с использованием 3D13 и минимального количества переменных с обработкой ошибок. Всякие турболоадеры, мультилоадеры и прочее малоактуальны при наличии винтов и флэшек. Вряд ли сейчас можно удивить пользователя мегабыстрым лоадером или музыкой во время загрузки - новичков среди них мало, старички уже и не такое видали. Пользователи больше оценят беспроблемность загрузки/записи.

Titus
02.07.2014, 13:21
Только, насколько я понимаю, у Кладова вся работа с диском была упрятана в 48-ю память, а у тебя юзается 1-я банка для твоей работы с диском ==> игра стала не 48-я. При этом свободной памяти сразу стала почти целая банка, а используется по-прежнему #3d2f специально для батхерта скорпионовцев. Но я сделал все небрежно - у меня дисковые ошибки не обрабатываются, а с учетом перетертых системных переменных BASIC'а ни разу не понятно чем это кончится.

Что за фантазии) Моя элите онли 48кб)

---------- Post added at 13:21 ---------- Previous post was at 13:19 ----------


Всё правильно. Я так и считал ещё в начале 90-х. Смысл 3D2F это либо выкаблучивания, либо спец.случай, когда процедуры 3D13 не помогут, либо когда системных переменных нет, но как писалось в одной из тем, нужно всего 3 переменных для работы. Многие лепили 3D2F из-за того, что не могли отключить вывод сообщений о ошибке, а делается это легко. Если нам только чтение/запись секторов trdos нужно, то 3D13 вполне даже справляется при том корректно работая с любым дисководом (80, 40 DS SS)и с любой буквой.

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

Alex Rider
02.07.2014, 13:33
Что за фантазии) Моя элите онли 48кб)
В той, что я переделывал под #3d13, используется 1-я банка для дисковых операций. Значит, это после тебя уже ниасилили.

Вот и нет. 3D2F позволяет сделать турбо-загрузку, улучшить обработку ошибок или различных ситуаций, когда нет диска или же не закрыт дисковод и т.д. Не говоря уже о спецвозможностях, экономии памяти и надежности.
Про турбо-закрузку согласен. Про обработку ошибок - с #3d13 способ кривой, но рабочий вполне. Что такое "спецвозможонсти" я не очень понимаю (это форматирование, move и чтение дорожки, чтоли?). Экономия памяти - да, согласен, возможно, код загрузчика возможно чуть больше, но не надо сохранять переменные TR-DOS и буфера никакие не нужны. Надежность наверное сопоставима если сделать все правильно. Разумеется, в #3d13 кроме функций #05 и #06 использовать ничего больше не надо, чтобы собрать как можно меньше глюков TR-DOS.

Gutten
02.07.2014, 13:56
Экономия памяти? Сейчас минимум 128кб на руках. Много ли экономится памяти при написании загрузчика 3D2F? Много ли делается проектов на целый диск (типа ЧВ), чтобы СЕЙЧАС надо было так экономить байты? Кому так сильно СЕЙЧАС нужна турбозагрузка при наличии винтов и карточек? Запас дискет в мире не бесконечен и купить новые не везде уже можно. Да и смысла хранить кучу дискет вместо 1 карточки мало. По скорости загрузки - буржуи вон TAP загружают с магнитофона и не ноют про скорость, зато никаких проблем с поддержой и совместимостью. Игры новые выходят редко. Хорошую игру запустят и без турбомультилоадера, а кривое поделие не станут второй раз запускать, даже если используют "турбо-загрузку, улучшить обработку ошибок или различных ситуаций, когда нет диска или же не закрыт дисковод и т.д." И из переделок старых программ предпочтут рабочую версию, чем мегасуперпуперинтро, которое идёт только на физическом A: дисководе.

Alex Rider
02.07.2014, 14:13
Много ли экономится памяти при написании загрузчика 3D2F?
Как минимум - размер системных переменных TR-DOS и некоторых переменных SOS. В той же Elite, которая изначально 48к, столько места найти будет почти нереально. Но это как раз тот самый "тяжелый" случай.

jerri
02.07.2014, 14:24
Экономия памяти? Сейчас минимум 128кб на руках. Много ли экономится памяти при написании загрузчика 3D2F? Много ли делается проектов на целый диск (типа ЧВ), чтобы СЕЙЧАС надо было так экономить байты? Кому так сильно СЕЙЧАС нужна турбозагрузка при наличии винтов и карточек? Запас дискет в мире не бесконечен и купить новые не везде уже можно. Да и смысла хранить кучу дискет вместо 1 карточки мало. По скорости загрузки - буржуи вон TAP загружают с магнитофона и не ноют про скорость, зато никаких проблем с поддержой и совместимостью. Игры новые выходят редко. Хорошую игру запустят и без турбомультилоадера, а кривое поделие не станут второй раз запускать, даже если используют "турбо-загрузку, улучшить обработку ошибок или различных ситуаций, когда нет диска или же не закрыт дисковод и т.д." И из переделок старых программ предпочтут рабочую версию, чем мегасуперпуперинтро, которое идёт только на физическом A: дисководе.

Ну скажем так
наличие места на диске/кассете и наличие места в памяти машины - совершенно разные вещи.

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

Gutten
02.07.2014, 14:40
Ну скажем так
наличие места на диске/кассете и наличие места в памяти машины - совершенно разные вещи.

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

Подгрузки с дискеты/винта/флэшки - это не подгрузки с кассеты. Нужный файл не надо долго проматывать в поисках. Если не влезает 100500 уровней сразу в память, можно их подгружать динамически. Но это мы говорим про новые игры. ИМХО, если уж программеры хотят показать своё мастерство, то лучше не лепить в очередной раз интро или демо с заезженной музыкой и эффектами, а сделать версию многоуровневой игры с подзагрузками, которая будет идти на любом клоне в любой конфигурации внешней памяти.

---------- Post added at 14:40 ---------- Previous post was at 14:35 ----------


Как минимум - размер системных переменных TR-DOS и некоторых переменных SOS. В той же Elite, которая изначально 48к, столько места найти будет почти нереально. Но это как раз тот самый "тяжелый" случай.

А много кому сейчас нужна версия на 48кб без поддержки диска? И много ли сейчас клонов 48кб+дисковод? Обидится ли кто-то, если 48кб версию переделать в 128кб с поддержой дисковода и без проблем с загрузкой/отгрузкой?

jerri
02.07.2014, 14:43
Gutten, не не перемотка и прочее это уже о другом.
например в Walkerе турболоадер потому как память занята вся -
огромный объем графики уровня.
в Stronghold свободно только 20 байт. но в нем и подгрузка не предусмотрена :)

Shadow Maker
02.07.2014, 15:06
А много кому сейчас нужна версия на 48кб без поддержки диска? И много ли сейчас клонов 48кб+дисковод? Обидится ли кто-то, если 48кб версию переделать в 128кб с поддержой дисковода и без проблем с загрузкой/отгрузкой?
А много кому нужна версия под 3d13? Абсолютно то же самое можно и про это сказать. 3d13 нужна только смукам. Остальные все умеют 3d2f. А со смуком активных только ты. Так что палка о двух концах.

И вообще, сделать дисковую версию игры, которая изначально 48k - тоже в 48k - это правильно. Только если обусловлено чем-то еще (например нужен файловый менеджер, если игра поддерживает сохраненки) - тут уже стоит подумать о 128k.

Gutten
02.07.2014, 15:18
"в целях самообразования, так сказать, и расширения кругозора" - а остальные, "которые умеют 3d2f", работают с RAM-диском и модифицированной TR-DOS? Как работают с .TRD и .SCL образами на винте через NemoIDE при наличии обычной TR-DOS 5.03? У меня же на скорпионе и NemoIDE есть, но используется чисто под .mod-хранилище Wild Player'a и перенос файлов с PC на SMUC-CF.

---------- Post added at 15:18 ---------- Previous post was at 15:16 ----------

Кстати, вот интересно: у zorel'a массово закупали платы скорпиона и платки расширения, в т.ч. смук. Ведь многие же собрали уже, но про них ничего не слышно. Или их такие вопросы не касаются, или они на них знают ответы и им всё равно.

Blade
02.07.2014, 15:41
Остальные все умеют 3d2f.
Скорпион, Кай, Феникс, Пентагон 1.4, 2.2 не умеют.

alone
02.07.2014, 16:07
Пентагон 2.666 тоже не умеет (пока недопилен железный эмулятор ВГшки).

Shadow Maker
02.07.2014, 16:23
Скорпион, Кай, Феникс, Пентагон 1.4, 2.2 не умеют.
Ну и сейчас кто из них актуален? Феникс че-то помню такое, остальные седая старина?

Я к тому, что не стоит забиваться на 3d13 незнамо как. В текущем положении вещей особенно.

Gutten
02.07.2014, 16:44
Хм, актуальны те модели, что народ покупает. Как показывают темы в барахолке, покупают все вышеприведённые варианты.
А что актуально тогда, если не они? Эмуляторы если только, им точно пофиг на точку входа и вариант загрузки.