Просмотр полной версии : Чтение регистра состояния в Honey Commander
Здравствуйте!
В 1997 году я написал дисковый драйвер для ВГ93 для своего антипротектора защиты Fantom. Немало сил ушло на обработку ошибок чтения, мой драйвер позволял определить, что прозошла ошибка, но не мог сообщить, какая именно ошибка произошла, поэтому просто выводил красивое сообщение: Disk Error. Retry, Ignore, Abort?
В Honey Commander 4.00 обработка ошибок решалось с помощью добавления в TR-DOS 3 байт, читающих регистр состояния.
Какого же было мое удивление, когда в Honey Commander 4.01, если я не ошибаюсь, эти три байта уже не требовались, и HC 4.01 работал без такого патча TR-Dos на любом обычном Speccy 128K.
К сожалению, сейчас у меня нет времени, чтобы в отладчике посмотреть дисковый драйвер HC 4.01, поэтому хотелось бы спросить, может кто-нибудь исследовал его код? Может быть я посмотрю код HC 4.01 позже.
вот общий принцип
(из книжки Родионова/Ларченко)
когда в Honey Commander 4.01, если я не ошибаюсь, эти три байта уже не требовались
Боюсь вас расстроить, но по моему это был кривой патч, который просто убирал проверку этих трёх байт. При этом HC начинал работать через (_o_) если вообще запускался.
Каюсь, ибо сам делал такой патч.
breeze
Спасибо! Наверное, все-таки придется в будущем взять в руки STS и самому посмотреть, как работал 4.01. Но реального Profi у меня уже не осталось, поэтому смогу это сделать только в эмуляторе.
Alex Rider
11.04.2014, 23:41
Вроде бы такой (http://ivr.webzone.ru/articles/port_1f/index.htm) код умеет читать #1f без патча TR-DOS.
Вроде бы такой (http://ivr.webzone.ru/articles/port_1f/index.htm) код умеет читать #1f без патча TR-DOS.
Реализация алгоритма MOA, которую привел Рощин полностью нивелирует всю прелесть независимости от системных переменных. Сколько я перепробовал процедур работы с диском, от всяческих лоадеров, до специфических процедур, типа контроля наличия дискеты или определения типа дисковода, ни разу не столкнулся с ситуацией, когда 0-й бит регистра состояния был равен 1 (контроллер занят выполнением какой-либо команды) в момент чтения #1f. Это, наверное, какие-то очень частные случаи. К тому же, проверить выполнилась команда или нет очень легко, через соответствующую процедуру в ПЗУ Tr-dos.
А есть программы, которые используют или пытаются использовать "в ПЗУ TR-DOS 5.03 по адресу #09BF стоит последовательность команд IN A,(#1F) и RET не подтвердилась"?
В принципе, сейчас пропатчить ПЗУ ТР-ДОС недолго, программаторы есть у многих, может добавить эти три байтика?
программаторы есть у многих, может добавить эти три байтика?
Самый правильный вариант. А не плодить кучу версий софтины.
Тем более даже не нужно стирать ПЗУ, достаточно просто добавить эти три байта.
Самый правильный вариант. А не плодить кучу версий софтины.
Тем более даже не нужно стирать ПЗУ, достаточно просто добавить эти три байта.
Вот это точно. И оставить всех остальных людей, у которых стандартное ПЗУ с разбитым корытом)
Когда делают демки, заточенные под пентагон, не беспокоятся, что у этого корыта остаются все остальные.
Когда делают демки, заточенные под пентагон, не беспокоятся, что у этого корыта остаются все остальные.
Пентагонов большинство. А людей с модифицированной подобным образом ПЗУ'шкой раз-два и обчелся.
Тем более, правильно было выше замечено, что доступ ко всем фичам ВГ-шки уже давно научились делать без использования специальных патчей.
---------- Post added at 12:03 ---------- Previous post was at 12:02 ----------
Я когда первый раз столкнулся с хоней коммандером очень плевался от него возмущаясь - что за фигня, все умеют работать с вг-шкой безо всяких патчей ПЗУ, а он нет.
В принципе, сейчас пропатчить ПЗУ ТР-ДОС недолго, программаторы есть у многих, может добавить эти три байтика?
В скорпионе это сделали так:
#3ff0 out (c),a
ret
#3ff3 in a,(c)
ret
Вообще следует определиться, если ты хочешь, чтобы твой софт работал только у тебя, то патчить можешь что угодно и где угодно, а если софт для массового пользователя, то алгоритм МОА прекрасно работает и безо всяких патчей.
Когда делают демки, заточенные под пентагон, не беспокоятся, что у этого корыта остаются все остальные.
Это бесконечный холивар, который уже не настолько актуален, в виду наличия хороших эмуляторов. Де-факто пентагон всегда позиционировался как демо-машина. Хотя, как пользователь Scorpion'а, я от этого особо не страдал. :)
Faster, а есть где прочитать про внесённые изменения в дос или пзу на скорпионе по сравнению с обычными версиями?
Faster, а есть где прочитать про внесённые изменения в дос или пзу на скорпионе по сравнению с обычными версиями?
Емнип, в Scorpion'е чистый 5.03 + вот тот патч выше.
Alex Rider
14.04.2014, 17:28
Емнип, в Scorpion'е чистый 5.03 + вот тот патч выше.
В скопе с ProfROM TR-DOS перепахана мама не горюй...
Реализация алгоритма MOA, которую привел Рощин полностью нивелирует всю прелесть независимости от системных переменных.
Очень редко когда нельзя выделить несколько ячеек памяти для этого вызова. Держать в памяти полный комплект переменных и буфер для чтения по-прежнему не надо.
ни разу не столкнулся с ситуацией, когда 0-й бит регистра состояния был равен 1
Это не значит, что оно так будет всегда и у всех. А что будет, если он равен 1? Запорченная дискета?
В принципе, сейчас пропатчить ПЗУ ТР-ДОС недолго, программаторы есть у многих, может добавить эти три байтика?
Ради вашего софта пользователи не побегут за программатором. "Почти у всех" - это у железячников. Кстати, сколько драгоценной памяти займет детектор этих байтиков? Или ваша софтина будет позволять себе виснуть / сбрасываться / портить диски на непропатченных машинах?
Alex Rider
14.04.2014, 17:28
Емнип, в Scorpion'е чистый 5.03 + вот тот патч выше.
В скопе с ProfROM TR-DOS перепахана мама не горюй...
Реализация алгоритма MOA, которую привел Рощин полностью нивелирует всю прелесть независимости от системных переменных.
Очень редко когда нельзя выделить несколько ячеек памяти для этого вызова. Держать в памяти полный комплект переменных и буфер для чтения по-прежнему не надо.
ни разу не столкнулся с ситуацией, когда 0-й бит регистра состояния был равен 1
Это не значит, что оно так будет всегда и у всех. А что будет, если он равен 1? Запорченная дискета?
В принципе, сейчас пропатчить ПЗУ ТР-ДОС недолго, программаторы есть у многих, может добавить эти три байтика?
Ради вашего софта пользователи не побегут за программатором. "Почти у всех" - это у железячников. Кстати, сколько драгоценной памяти займет детектор этих байтиков? Или ваша софтина будет позволять себе виснуть / сбрасываться / портить диски на непропатченных машинах?
В скопе с ProfROM TR-DOS перепахана мама не горюй...
Ниче там не перепахано. Посмотри ПЗУ Tr-dos'а и приведи пример...
Очень редко когда нельзя выделить несколько ячеек памяти для этого вызова. Держать в памяти полный комплект переменных и буфер для чтения по-прежнему не надо.
Я так отвечу, во всех процедурах работы с диском, окромя Рощинских, разумеется, что я видел прекрасно работает тот алгоритм, что предложил MOA. Без этого нехилого навеса, связанного с сохранением системных переменных.
Это не значит, что оно так будет всегда и у всех. А что будет, если он равен 1? Запорченная дискета?Да ниче там не испортится. Рощин же написал, какие могут быть последствия. Почему-то кроме самого Рощина ни у кого таких проблем не возникало, судя потому, что никто кроме него самого не указывал на ту проблему. Еще раз повторю, всегда можно отследить выполнилась команда или нет - #3fe5 в помощь. Не надо писать *****код и все будет работать, в этом случае бит 0 всегда будет 0.
Ниче там не перепахано. Посмотри ПЗУ Tr-dos'а и приведи пример...
А для чего тогда контроль INTRQ и DRQ заведены на порт кемпстона?
Ниче там не перепахано. Посмотри ПЗУ Tr-dos'а и приведи пример...
Взял TR-DOS от ПрофРОМ Скорпа, посмотрел, нашел в бинарниках 29 мест с отличиями, в общей сложности отличия занимают 15-20%. В большинстве своем они располагаются в местах накрытых кодами #FF в прошивке TR-DOS 5.03, но так же имеют место и среди кода.
---------- Post added at 15:35 ---------- Previous post was at 15:30 ----------
Прошивка TR-DOS неПрофПЗУ Скорпиона имеет чуть меньше отличий от 5.03. Всего 15 сегментов с различиями.
В скопе с ProfROM TR-DOS перепахана мама не горюй...
сравнил версии - отличий много
503/OLD-4706
503/NEW-4903
OLD/NEW-3856
А для чего тогда контроль INTRQ и DRQ заведены на порт кемпстона?
Поподробнее можно?
http://zx.pk.ru/showpost.php?p=409948&postcount=17
На сколько мне помниться, способ чтения регистра #1F стандартной TR-DOS был описан в журнале ZX-Ревю 97/1+2
Alex Rider
17.04.2014, 18:00
На сколько мне помниться, способ чтения регистра #1F стандартной TR-DOS был описан в журнале ZX-Ревю 97/1+2
ЕМНИП, это та же статься Ивана Рощина, что я приводил. С тем же исследованием по поводу бита готовности.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot