Оно на входе получает команду: прочитать или записать B секторов начиная с DE-го по адресу HL.
Т.е. оно просто тупо читает или пишет заданное количество секторов начиная с указанного от начала диска. Ровно то же делают другие драйвера.
Поэтому я не понимаю, как оно может "некорректно работать". Там просто нечему глючить.
Оно в чистом виде поддерживает CHS геометрию как она есть, т.е. максимальный сектор, который оно может прочитать - это 65535/15/255.
А максимальный размер диска, который оно понимает - это (65536*16*255)*512= 127,5 ГБ.
"Писишная" геометрия вида NNNN/255/63 - на самом деле виртуальная, и была придумана писателями писишных биосов. Ибо у диска не может быть 255 головок. А в регистре привода/головки только 4 бита отведено под номер головки.
И кстати, LBA режим включается установкой 6-го бита в этом же регистре (OR #40). Это я узнал уже позднее.
- - - Добавлено - - -
Было такое. Ошибка была в самом con.com (или sv.com ?). Подробностей не помню, но вроде бы оно всегда пыталось работать с диском А, а не с текущим.
Мне удалось полностью убрать из системы драйвер флопа, оставить только HDD и рамдиск. Это ядро надо сохранить и подключить к загрузчику системы. А драйвер флопа всегда можно подгрузить при необходимости.
- - - Добавлено - - -
Оно. Ка же давно всё это было.
Можно отказаться от "как бы деления" для пересчёта в архаичную CHS и использовать LBA, которая есть почти у всех дисков с 1995 года.
Было дело. Для борьбы с этой нехваткой я в те времена написал переноситель системного typ драйвера (t42.typ) в страницу. Это работало и давало +2к памяти. Могу найти, если интересно. Опционально, оно умело работать с экраном в 7-й банке, и тогда, при соблюдении ряда условий, освобождалось 6912 байт с адреса #4000.
Я дизассемблировал arzt+ и планировал переделать его под адрес загрузки #4000, но оказалось не нужно.
Я отработал технологию выгрузки-восстановления лишних уровней (shell и wind) на диск, и написал измеритель скорости дисков под такой "безоконный" режим. Чтение выполнялось кусками по 104 блока (26 кб). Реально было свободно около 28 кб с адреса 24000. Время бралось из RTC-часов. Всё это у меня где-то лежит, могу найти.
Максагор, NedoPC group
ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
[ZX rulezzz 4reva!!!]
http://atmturbo.nedopc.com
http://vk.com/atmturbo
http://maksagor.livejournal.com
http://moskprf.ru
[СССР][Коммунизм][КПРФ] ну [ZX], естественно...
Реального АТМ нет, поэтому только под эмулем. А что нужно? Вроде всё нужное есть.
Я против затачивания софта под какую-то одну версию системы, ибо всегда можно сделать так, чтобы работало у всех.
Кстати, моя fileshow работает на реальном АТМ?
И кстати, в обработчике прерываний tasis есть такое:
Это зачем? В обычном исдосе также.Код:FFB2 3A005C ld a,(5C00) FFB5 EEC9 xor C9 FFB7 CC0000 call z,0000
защита от кнопки `magic`
Написание новых утилит никто не отменял. Например, пока еще под TASiS нет прсмотрщика JPG и GIFок. Не в смысле, что япредлагаю тебе взять и сделать их, а как пример, что есть далеко не всё.
Это что касается текущей версии TASiS ядра v5.40
А на самом деле готовится принципиально новое ядро системы v6.x, и там будет много нового, в частности "прозрачная" подмена нижнего ядра по адресу #0000 подгружаемыми библиотеками, расширение менеджмента станиц (логическая, а не физическая нумерация страниц - можно формировать "своё поле памяти" для задач - с прицелом для многозадачности, где у каждой задачи будет "своя песочница" из страниц, но номера будут для программыф пользователя одни и те же, плюс защита "чуцжих" страниц от включения и проч.), непривязанность ядра системы к каким-то одним страницам (как сейчас - к странице #00) - т.е. перемещаемость в любую страницу, поддержка на уровне системных вызовов не только 64 страницы АТМ, а вплоть до всех 256 страниц ZX-Evo, поддержка расширенной палитры от DDp и многое другое.
Что касается упомянутых библиотек, то они могут перехватывать как обычных вызовы TASiS/iS-DOS, так и иметь свои дополнительные, но не через RST #10 (на ней по прежнему висит нижнее ядро исдоса, которое теперь является лишь одних из библиотек - "базовой"), а подключаться к остальным рестартам по необходимости - #RST #00,#08,#18,#20,#28,#30,#38.
Планируется как минимум графическая библиотека - чтобы уйти от привязки к одному "физическому" экрану (ZX ка в исдосе или консольный как в TASiS - будет реализована принципиальная возможность переключаемой поддержки с любым экраном (только меняй и дорабатывай библиотеки).
Плюс остро стоит вопрос о либо расширении файловой системы свыше 16Мб (как самый минимальный вариант), вплоть до поддержки FAT16/32 (как максимум) - тоже через дополнительную библиотеку.
Проекту много лет. Продвигался очень медленно с громадными перерывами на годы (у всех свои жизненные проблемы и обстоятельства), но сейчас выходит понемного на финишную прямую, и 2025 год, надеюсь, станет годом релиза нового ядра. А вот библиотеки и обвязку надо будет писать, писать и писать. Но это обещает быть очень интересным. Но чем больше светлых голов, тем лучше.
И да - FILESHOW работает!
- - - Добавлено - - -
Выше ответили - защита от MAGIC. Поискал - в 2019 году уже здесь на форуме обсуждали сабж:
https://zx-pk.ru/threads/30499-kolle...oj-knopki.html
Ячейка была #5C00, после отработки Magic туда гарантированно записывается число #C9.
А такая защита, которая не позволяет делать отгрузку вовсе, основана на том, что обработчик Magic из ПЗУ TR-DOS бездумно и активно пользуется стеком. В частности, в начале своей работы он сохраняет туда кучу значений, а потом делает множество вложенных вызовов подпрограмм.
Таким образом, если стек размещен в ПЗУ, то первый же возврат из подпрограммы в недрах TR-DOS приведёт к возврату на неправильный адрес (т.к. стек в ПЗУ, и правильный адрес возврата не может быть туда записан при выполнении команды CALL) и сбою.
Но этот сбой можно контролируемо перехватить. А именно, как верно написал goodboy выше: размещаем стёк близко к началу экранной области. Тем самым мы сами можем пользоваться стеком в некоторой мере. Когда срабатывает Magic, то в стек записывается куча значений, и он начинает указывать на ПЗУ. А там, в конце прошивки TR-DOS, размещено много #FF. Первый же возврат из подпрограммы происходит по адресу #FFFF, туда ставим команду JR, которая попадает на адрес #FFF4, ну а туда уже размещаем код обработчика Magic, где делаем что угодно (издеваемся над пользователем).
Последний раз редактировалось Максагор; 06.11.2024 в 20:23.
Максагор, NedoPC group
ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
[ZX rulezzz 4reva!!!]
http://atmturbo.nedopc.com
http://vk.com/atmturbo
http://maksagor.livejournal.com
http://moskprf.ru
[СССР][Коммунизм][КПРФ] ну [ZX], естественно...
Я изучал вопрос адаптации трдосной смотрелки JPG. Исходник без комментариев и не сразу всё понятно. Ей нужно много памяти, поэтому быстрой адаптации не получилось. Но если система выше #C000, то всё возможно.
С гифами проще. Моей гифосмотрелке нужно очень мало нижней памяти - под две строки растра и результат, т.е. для картинки шириной 1024 точки надо всего 2 кб + 128 байт памяти. Я ей смотрел и печатал картинки немыслимого для ZX размера 3000х2000 точек. Это были схемы телевизоров формата A2.
Можно довольно быстро сделать просмотр 16-цветных гифов. Но где взять 16-цветные гифы?
Текущая версия гифосмотрелки - 1.7, она до кучи умеет загружать scr, pic и pcx файлы. И prn, которые сама же создаёт. И может напечатать на бумаге произвольный кусок в разрешениях от 72х72 до 240х216 dpi. И умеет переводить тексты в растр любым шрифтом - вот так. Я уже начал забывать, что я там понаписал.
Там самое ценное - это исходники процедур для работы с разными экранами. Не самые быстрые, но универсальные. Скоро отдам в народ. У меня ещё лежит недоделанная tv512.com - это текстовая листалка для разных расширенных экранов при размере шрифта от 5х8 до 8х8. Дамп и дизассемблер тоже показывает, но оно всё недоделанное. Надо сделать wrap/unwrap при просмотре текста и hex-редактор. И при прокрутке назад оно иногда теряет указатель на текст, причём этот баг проявляется только в версии для экрана ATM.
Последний раз редактировалось Jason; 10.11.2024 в 07:08.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)