Нужно убрать эту "фичу" и сделать, чтобы эти пересчёты велись по !реальным! данным диска. Ибо. Я не поленился и проверил. И вот что получилось после удаления маленького файла с, как бы нестандарного, диска :( :
Скрытый текст
И это неправильно.
Вид для печати
Нужно убрать эту "фичу" и сделать, чтобы эти пересчёты велись по !реальным! данным диска. Ибо. Я не поленился и проверил. И вот что получилось после удаления маленького файла с, как бы нестандарного, диска :( :
Скрытый текст
И это неправильно.
Спасибо за проверку! Рузультат, конечно, был ожидаем. Нужно будет переработать данную процедуру и сделать её более умной. Думаю, что Grand поправит в одной из следующих версий.
Ух ты! Круто! 157 Метров теперь на дискетке свободно! Радоваться же надо!
CityAceE, еще вопрос по длине драйвера памяти и часов. В доках написано, что максимальная длина его - 256. Хотя TRDN пишет в 23388 при работе, т.е. получается, что портит драйвер. Ну и последняя строчка в примере драйвера DEFS #5B5D-$,0, тоже как бы намекаэ. ;)
Где правда и как быть, если драйвер больше #5D байт?
Пока что мысль сделать драйвер таким образом, чтобы он состоял из двух частей, которые лежат в #5B00-#5B5B и #5B5D-#5Bxx; т.е. с неиспользуемой 'дыркой' по адресу #5B5C.
Для нормальной работы со SMUC туда и вправду писать надо, чтобы у теневика не съезжала крыша и он номер экрана 7 не ставил во время загрузки с винта. Иначе экран мерцает.
Еще до кучи просьба. А можно сделать, чтобы имена SMUC дисков нормально отображались, а не как файлы - с пробелом после 8-го символа?
Ну и RUN вместо LOAD для запуска бейсиков, конечно.
Какой я занудный ;)
Нет, автостарт TRDN обрабатывает корректно. Иначе половина программ не запускалась бы.
- - - Добавлено - - -
Нет, TRDN в эту ячейку ничего не пишет.Цитата:
Сообщение от Evgeny Muchkin
Проблема в другом. Теневой монитор при возврате из RST 8 выставляет экран согласно биту 3 из 23388. Об этом написано в его Руководстве.
Драйвер действительно может иметь длину 256 батов, но если предполагается его использование на Scorpion'ах, то ячейку 23388 лучше обнулить.
- - - Добавлено - - -
Сейчас в качестве имен псевдодисков отображаются их реальные имена, заданные при инициализации. Разве это неудобно? В информационных строках (внизу панели) отображаются имена из каталога.Цитата:
Сообщение от Evgeny Muchkin
Я вставил в ассемблерный текст TRDN переменные цвета, и теперь можно задавать цвета по вкусу перед его компиляцией. Желающие могут разработать альтернативную палитру и олубликовать результат здесь :)Цитата:
Сообщение от Evgeny Muchkin
Во вложении ассемблерный текст ориентированний на SjASMPlus Z80 Cross-Assembler.
Инструкцимя по его использованию и все остальные поясняющие тексты в архиве исходников в первом сообщении темы.
Со строки 6718 в файле TRDNC.ASM находятся переменные цвета. Вот фрегмент:В качестве примера я привел во вложении откомпилированный вариант TRDN с черным paper.Код:/.../
;Цветовые переменные
;-ФП
COL_MAI EQU %01000000;маска атрибута:
;b7-мерц, b6-ярк,b5-b3-paper,b2-b0-0
;
COL_P EQU 5|COL_MAI;цв.панели
COL_PT EQU 6|COL_MAI;цв.назв.столбщов панели
COL_PH0 EQU 5|COL_MAI;цв.заголовка пассивной панели
COL_PH1 EQU #28|COL_MAI;цв.заголоака активной панели
COL_INP EQU 7|COL_MAI;цв.текста Info-панели
/.../
Вложение удалено после 21-го просмотра. Смотрите архив исходных ассемблерных текстов в первом сооющении темы.
Я вот о чем. Фото, как отображает имя диска TRDN (с пробелом, как файл), и при переименовании диска схожая ерунда, только с запятой :)
И для сравнения как отображает те же диски GRAND'S BOOT - нормально без пробелов:
Скрытый текст
- - - Добавлено - - -
Хм... а в коде вот это:
- - - Добавлено - - -Код:...
;
;Пров.на 128K
SET 5,(IY+54);b5=1 сигнал 48K
LD A,#10
LD HL,#D011;Адр.в.рабоч.обл.
LD BC,#7FFD
OUT (C),A
LD (HL),B
OUT (C),L
LD (HL),A
OUT (C),A
CP (HL);Z=0,если 128K
LD (23388),A
...
JR HDDOFF
sc_t2 LD A,#10
LD (23388),A;BANKM
...
L23613 LD SP,0000
LD (23613),SP;Восст.ERR_SP
PUSH HL
CALL CHDRV1
LD A,201
LD (23746),A
XOR A
LD (#5C44),A;NSPPS
OR #10
LD (23388),A
LD BC,65367
...
Ну не запускается из TRDN файл, который я дал. Из чего угодно запускается, а из сабжа нет. Значит, наверное, имеет место некорректность.
В первом фрагменте запись в 23388 идет до того как загружен драйвер. Во втором - только на Скорпионе, но драйвер уже загружен, и это не совсем правильно :) В третьем фрагменте запись в 23388 идет уже при выходе из TRDN и драйвер больше не вызывается.Цитата:
Сообщение от Evgeny Muchkin
Однако, я не прав. Драйвер загружается после установки 23388. И TRDN при работе в 23388 ничего не пишет.Цитата:
Сообщение от Grand
- - - Добавлено - - -
Это происходит потому-что объем всех файлов в секторах превышает объем стандартного диска, из которого он вычитается. (Кому интересно, смотрите процедуру "SECTOR9_" в тексте исходников). Объем нестандартного дмска неизвестен и правильно расчитать количество свободных секторов не представляется возможным.Цитата:
Сообщение от Evgeny Muchkin
Однако, возможно сделать поддержку дисков, отформатированных в прогрвмме DCU Н.Родионова, - там объем диска в секторах записывается в служебном секторе в ячейках +#DF, +#E0.
Во вложении тестовая версия X4.1, в которую я попробовал вставить поддержку дисков DCU. Проверяйте, но без важный данных на диске. :)
Справедливости ради следует заметить, что попытка сделать поддержку дисков DCU предпринималась до меня в версии TR-DOS Navigator'а V0.67b, но поддерживались только диски от 80 дорожек двухсторонние, и та процедура содержала ошибки. Когда я процедуру переписывал в 2006 году, то упростил до работы со стандартными дисками, но зато всех возможных в TR-DOS стандартных форматов.
Grand, не представляется возможным? А как же данные из Е5,Е6 в служебном секторе?
Количество cвободных секторов?Цитата:
Сообщение от Evgeny Muchkin
Оно учитываются до начала операции только, чтобы определить есть ли свободное место. Когда на диск
добавились/удалились файлы, это значение, как и остальные в сл. секторе, уже не актуально.
Попроюовал ли кто нибудь мою последнюю тестовую версию в работес дисками от DCU?
Оболочка TRDN отображает имена элементов в виде 8+3 - имя и тип в своем столбце. Когда элемент замаркирован, между именем и типом рисуется символ с кодом #FB. Конечно, сейчас имена прсевдодисков не маркируются, но в будущем - может быть.Цитата:
Сообщение от Evgeny Muchkin
Мне кажется вполне логичным, что дополнительные три символа к имени диска воспринимаются как
расширение.
В GB оболочка другая.
Да. Глюков не было. Записал диск под завязку, удалял файлы, добавлял, делал Move. Нормально.
Набросал драйвер для всех 2Мб GMX. Идея почти такая-же, как и в предыдущий раз - чтобы, и память юзалась вся доступная, и часы отображались в любой конфигурации GMX. Т.е. в режиме Скорпа видны 2Мб, а в режиме Пентагона и Композита - 128К.
Для работы часов порты SMUC открывать не обязательно, их чтение сделал через TR-DOS. Ну и прошивку теневика GMX не забываем обновить до G5.01, чтобы при чтении с винта через #3D13 не висло, если кто не в курсе. ;)
Драйвер сделан из драйвера от Grand (спасибо! :)) . 8 и 15 страницы не используются.
В аттаче скомпиленный драйвер и текстовый исходник.
Вложение 74035 (перекачайте, кто скачивал ранее, ошибочка вкралась, на работу не влияет, но для порядку... ;))
Текст:
Скрытый текст
Код:ORG #5B00,#6B00
JR MEM
JR CLOCK
DB 0,0
MEM CP #02
JR C,$+3
INC A
CP #05
JR C,$+3
INC A
PUSH HL
LD L,A
LD H,#08
LD A,(#08)
CP #C3
LD A,L
JR NZ,ZX128_1
CP H
LD HL,#F507; RLCA: PUSH AF
LD (ZX128_2),HL
LD H,#80
JR C,$+3
INC A
CP #0F
JR C,$+3
INC A
ZX128_1 CP H
POP HL
CCF
RET C
PUSH BC
LD BC,#7FFD
PUSH AF
AND #07
OR #10
OUT (C),A
POP AF
ZX128_2 POP BC; RLCA: PUSH AF
RET
AND #10
LD B,#1F
OUT (C),A
POP AF
RLCA
RLCA
RLCA
AND #07
LD B,#DF
OUT (C),A
POP BC
RET
DS #5B5D-$,#00
CLOCK LD BC,#DFBA
LD A,#04
CALL OUTIN
LD E,H
LD A,#02
CALL OUTIN
LD D,H
SUB A
CALL OUTIN
LD C,H
LD B,D
RET
OUTIN CALL OUTDOS
LD A,#D8
PUSH BC
LD C,#1F
CALL OUTDOS
POP BC
LD HL,#3EF3
JR JMPDOS
OUTDOS LD HL,#2A53
JMPDOS PUSH HL
JP #3D2F
[свернуть]
- - - Добавлено - - -
Я что-то все равно не врублюсь ;) Почему не актуально? Разве после записи файлов на диск эти значения не меняются?
Я всегда считал, что меняются, по крайней мере должны. Таким образом, чтобы узнать общий объем диска (хоть стандартного, хоть dcu'шного) достаточно сложить длины всех файлов с тем, что лежит в E5,E6 в 9-м секторе.
И DF,E0 трогать нет необходимости, т.к. нельзя исключать, что какой-нибудь 'социально ответственный' коммандер при копировании может затереть эти значения в соответствии со своими представлении о правильности формата диска. :)
Но при этом точно также приходится уповать на то, что значение в #E5 истинно.Цитата:
Сообщение от Evgeny Muchkin
Для TRDN такая переделка на практике обернется тем, что придется грубо вмешиваться в процедуру копирования/дефрагментации, а мне этого делать по многим причинам не хочется.
Grand, а почему оно неистинно должно быть? Есть хоть один копир, который не знает, что там должно лежать кол-во свободных секторов? И к DF E0 куда меньше доверия... про них то точно мало кто знает.
- - - Добавлено - - -
А если места мало для такой считалки дискового объема, уберите 'проверку на corruptnostь' каталога. Бесит жутко (почти как в STORM), половину trd'шников со снятой защитой не запустить из TRDN, т.к. они не отображаются.
Я тут поймал себя на мысли,что последние несколько лет мы только и делаем,что защищаем TRDN от 'нестандартых стандартов'. Твк уже есть:
- защита от диска формата IS-DOS (только для Скорпиона)
- защита от нулевого размера в элементе каталога
Вероятно будет защита от завышенного числа треков. Что на очереди?
Обсчет каталога возник не на пустом месте - это тоже защита, причем важная.
Может всем лучше пользоваться стандартным дисками???
АвторыTR-DOS предоставили большой простор для фантазий. Вот в других файловых системах я не встречал аналога "служебного сектора". И уже заморочек поменьше. :)
тут можно вспомнить с64, там каталог вообще в отдельном текстовом файле.
ну а если по-делу то лучше проверив тип дискеты (кол-во дорожек) выдать сообщение в случае нестандарта и не работать с ней.
Касательно количества дорожек готов согласиться. Это совсем некритично, особенно если гемор большой обучить навигатор делать то, что он должен был уметь с самого начала. ;)
А вот касательно всяких какбы 'corrupted' каталогов. Тут совсе другая ситуация. Так как таких дисков уже море.
Как вариант - не давать копировать 'НА' такие диски, но оставить возможность отображать каталог, запускать файлы и копировать 'С' них (если копируемый файл адекватно описан в каталоге, конечно).
Норм? :)
Интересный момент/глючек, называйте, как хотите ;)
Отображен диск D, жму A (диск типа коррумпированный тут вставлен), ругается, каталог не отображает, отображает по прежнему диск D, жму запустить boot на диске D, а запускается boot с диска A :)
По первоначальному замыслу так и должно было быть. И в V0.75.3b так и работало. Но сейчас почему-то разладилось.Цитата:
Сообщение от Evgeny Muchkin
Причины установлены и в следующей версии будут исправлены.Цитата:
Сообщение от Evgeny Muchkin
У меня вопрос: оставлять поддержку дисков DCU или нет? Отрицательное количество свободных секторов в любом случае будет приравниваться к нулю.
Grand, оставлять. И поддержку корруптед дисков обязательно тоже.
Grand, а можно еще сделать, чтобы проги, которые USR 0 хотят перед стартом запускались?
зачем подстраиваться под кривой софт ?
goodboy, такая 'подстройка' может как-то ухудшить TRDN?
да, перестанут работать программы которым нужен 128ой бейсик.
А такие есть вообще?
Можно сделать, чтобы по Enter запускалось в 48, а по Shift+Enter в 128 бейсике. Или наоборот, в зависимости от того, каких программ больше в природе.
у создателей фирменных игр не было машины времени и про наши кривые клоны они естественно не знали,
полная таблица делалась совсем по другой причине, наши тупо этот момент копировали не совсем понимая для чего это надо.
также тупо ставили DI в начале обработчика прерываний не зная что они уже запрещены (на железном уровне) и таких примеров много.
и для чего это по твоему нада?
в прессе всегда пишотсо про нестабильную шину на некоторых обвешанных мгтф-ом железках
а не про у буржаев так и мы будем это копировать
в придачу буржуйские "не ставить i в медленную память" наши как всегда игнорировали
так и продолжают игнорировать
а ты вообще говоришь про выкинуть 257 байт
- - - Добавлено - - -
а это качество описаний
я тоже об это в началае спотыкался
только на оборот у меня по приходу прерываний все зависало тк надо было делать ei перед выходом тк reti этого не делает...
да и не вспомню чтоб много где описывался этот момент ("все ж и так знают")
это потом узналось что пока сигнал прерывания висит обработчик может сработать 100500 раз подряд итд
и поэтому прерывания запрещаются сразу
и что при выходе их надо разрешать ручками...
так речь идёт про старт с ПЗУ48к и открытым портом.
это критично для кривых программ которые размещают код/данные в буфере принтера при разрешённых прерываниях.
у 128ого бейсика там хранится исполняемый код/переменные.