Просмотр полной версии : TR-DOS: Чтение каталога вызывает запись?
Отлаживаю код ВГ93 на верилоге и обнаружил что чтение каталога в TR-DOS (в коммандной строке или в како либо проге) вызывает еще и запись. Читаются, например, сектора 0-7 нулевой дорожки и каждый сектор после чтения записывается обратно на диск.
Это у меня какой-то глюк или это фича TR-DOS?
Когда загружается тело файла, то записи нет, что наталкивает на мысль что всё таки это не глюк в моем коде (так как запись была бы и при чтении файла).
Saar, Конечно глюк, иначе при защищенном от записи диске всегда выдавало бы ошибку. А у вас что происходит если поставить защиту от записи ?
Если поставить защиту от записи то при команде LIST выдает:
Read Only
Trk 0 sec 9
Retry,Abort,Ignore?
То есть сам спектрум пытается писать...
Хотя, не исключаю что это может быть и глюк в моем коде, а спектрум тупо реагирует на ошибку вне зависимости от текущей комманды.
Странно это...
Если поставить защиту от записи то при команде LIST выдает:
Read Only
Trk 0 sec 9
Retry,Abort,Ignore?
На реале с защищенным диском так не происходит, да и в эмулях при (read only) тоже нет такой ошибки, смотрите ваш код.
версия TR-DOS 5.04T
Проверил, как и писал с защищенным диском НЕ выдает -
Read Only
Trk 0 sec 9
Retry,Abort,Ignore?
Ошибка в вашем коде 100%
null_device
28.04.2017, 02:45
Это у меня какой-то глюк или это фича TR-DOS?
Первый вариант. Ибо, при любых операциях чтения, на диск в принципе не должно ничего записываться.
Правда, в более ранних версиях содержалась ошибка приводящая к зависанию по команде LIST (при определенных обстоятельствах, что-то связанное с порчей содержимого регистров).
polikarpov76
28.04.2017, 08:53
Если бы это был глюк TR-DOS, то все пользователи дискет с заклеенным от записи окошком получали бы такую ошибку при команде LIST. А я такого никогда не наблюдал.
TR-DOS выдает комманду F8 - что это?
Мой код по ошибке интерпретирует это как Fx, хотя после внимательного изучения бит 3 должен быть в нуле. А про F8 в WD1793 ничего не написано.
SAM style
28.04.2017, 16:15
Команды ВГ93:
0000xxxx - restore
0001xxxx - seek
001xxxxx - step
010xxxxx - step forward
011xxxxx - step back
100xxxx0 - read sectors
101xxxxx - write sectors
11000x00 - read address
11100x00 - read track
11110x00 - write track
other - do nothing
Неизвестные команды просто пропускаются
Не всё так просто... Третий бит используется в некоторых разновидностях WD179x/WD177x и в целом F8 это тоже комманда записи трэка.
Даже если предположить, что данная комманда должна пропускаться (хотя, не факт - ВГ93 скорее всего просто не учитывает 4 младших бита при выборе операции), почему TR-DOS вообще это безобразие посылает в ВГ93?
[QUOTE=Saar;910842]Отлаживаю код ВГ93 на верилоге
вы ВГ93 делаете на основе Сырок FDC1772 в VHDL
Нет. Я брал за основу код Viacheslav Slavinsky. Там, правда мало что от него осталось уже.
Сейчас он выглядит так: https://github.com/sorgelig/ZX_Spectrum-128K_MIST/blob/master/wd1793.sv
Если поставить защиту от записи то при команде LIST выдает:
Read Only
Trk 0 sec 9
Retry,Abort,Ignore?
То есть сам спектрум пытается писать...
Хотя, не исключаю что это может быть и глюк в моем коде, а спектрум тупо реагирует на ошибку вне зависимости от текущей комманды.
Странно это...
я делал ZX на FPGA ALTEERA за основу ВГ93 взял Сырок FDC1772 в VHDL.
была проблеме с командой LIST (Если поставить защиту от записи то при команде LIST выдавал READ ONLY )
исправил инвертировав седьмой бит в регистре статуса (MOTOT ON для FDC 1772)
О, полезное замечание! Я свой код писал под несколько разных эмуляторов: Sam Coupe, Vector 06, Специалист. Получился такой вот винегрет из всех модификаций WD179x/177x. Возможно, получилась такая же коллизия как у вас.
- - - Updated - - -
@Vad,
расскажите как вы обнаружили эту проблему? Я так понял где-то в TR-DOS читается статус FDC и смешивается с коммандой предполагая что определенные биты должны быть в определенном состоянии? Или где-то цепочка комманд выполняется согласно статусу вместо жестко заданной схемы?
- - - Updated - - -
Я пока убрал Fx комманду из поддерживаемых моим модулем. Теперь LIST работает быстро и не пытается писать.
Конечно, хотелось бы разобраться в чем проблема, но пока в сложно вот так с наскоку разобраться в том спагетти TR-DOS кода.
- - - Updated - - -
skip_t1:
;тут не установили регистр B, в нем 19h после первчиной проверки и F0 если
;проверку пропустили
call Get_Real_Cylinder ;Актуализация номера цилиндра в ВГ93
;код его берется с дискеты, командой "чтение адреса"
где-то тут собака порылась, как мне кажется.
Думаю, так происходит:
Из-за бага в коде TR-DOS происходит выдача комманды F8 (F0 | 18) даже на реальном железе. Комманда Fx (форматирование) требует ввода дополнительных данных для форматировния и отваливается по ошибке на реальном железе если эти данные не поступили до прохода дырки под сенсором.
Если эмулятор тоже ждет эти данные, то он так же выдаст ошибку.
Тут надо заметить, что при этой ошибке реальное форматирование не происходит и сигнала о наличие write_protect тоже не поступает (отсюда и работа LIST на защищенных дисках не прерывается).
Если эмулятор пытается схалтурить (как у меня) и не ждет данные, а делает вид что форматирует (на самом деле у меня сделано чтение с последующей записью на то же место тех же данных - для эмуляции задержки) при любом раскладе, то получается форматирование которого не должно было быть. И соответственно защита записи отрабатывает если диск защищен.
Вот.. вроде всё встало на свои места.
Навреное, вопрос можно считать закрытым.
Еще одно странное поведение обнаружил.
Команда CAT набранная в TR-DOS приглашении вызывает зависание системы, когда как LIST работает. Есть идеи почему такое разное поведение очень похожих команд? TR-DOS 5.04T
shurik-ua
23.06.2017, 11:47
Посмотрите уже что в ПЗУ тырдоса действительно отсылается на ВГ-шку.
У тырдоса ж пожизненная бета.
Да там в ПЗУ такая каша.. Просто может быть уже известны какие-то особенности CAT команды.
Alex Rider
24.06.2017, 19:26
Просто может быть уже известны какие-то особенности CAT команды.
Все баги TR-DOS давно описаны, есть исходники с русскими комментариями. А вот где я их видел - ума не приложу, мож кто подскажет?
polikarpov76
24.06.2017, 22:24
Все баги TR-DOS давно описаны, есть исходники с русскими комментариями. А вот где я их видел - ума не приложу, мож кто подскажет?
http://zx-pk.ru/threads/16592-tr-dos-5-04t-polnoe-opisanie-i-polnyj-dizassembler-(pavel-fedin).html
Большинство тех кто мог бы подсказать ты сам выпилил с форума.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot