Цитата Сообщение от forth32 Посмотреть сообщение
1. Тебе придется втиснуть весь код в щель размером 762 байта, судя по твоей таблице. Это не так уж и много как может показаться. Но тут будет видно, когда станем писать драйвер эмулируемых дисков.
только пробовать и пробовать

---------- Post added at 23:42 ---------- Previous post was at 23:39 ----------

Цитата Сообщение от forth32 Посмотреть сообщение
2. Тебе придется держать во вторичном загрузчике базу всех известных биосов, и идентифицировать загруженный биос по каким-либо признакам - сигнатуре, контрольной сумме, ну или что ты там уже придумал. С учетом того, что если биоса в базе не найдется, придется подставлять резервный, если я правильно понял твою мысль. А если биос идентифицируется неправильно - получим крах системы в самый непредсказуемый момент.
весь список уникальны на сегодня ты видел

если не найдется - в теории не сильно большая грабля
речь то идёт только про ЗАГРУЗКУ с этого диска,
загрузчик скажет - НЕСМОГЛА, выбери другой диск
и возьмет человек другой диск.
чтоб была очень жеская привязка - почти небыло

мало того, в теории можно выбирать биос отдельно из всех врзможных при старте

---------- Post added at 23:43 ---------- Previous post was at 23:42 ----------

Цитата Сообщение от forth32 Посмотреть сообщение
Пока в голову приходит только это, может к утру еще чего придумается. Вроде бы не так уж и много, но вот оно того стоит? Я не ною, и согласен вести разработку по любому пути, если это действительно даст какие-либо преимущества.
пока есть желание пробовать,
а там посмотрим как пойдет.

---------- Post added at 23:45 ---------- Previous post was at 23:43 ----------

Цитата Сообщение от forth32 Посмотреть сообщение
Впрочем, наши с тобой методы можно и скомбинировать - и свои биос сделать, и встраивалку в чужие. Тем более что ты уже берешься за этот этап работы.
имхо надо делать оба варианта
а там уж использовать более удобный
тогда не заморачивайся с "патчером", я эт она себя возьму.

---------- Post added at 23:48 ---------- Previous post was at 23:45 ----------

Цитата Сообщение от forth32 Посмотреть сообщение
Единственная тонкость - это убедиться, что в биосе там действительно дыра. Уж больно странная она. Беглый взгляд показал, что внутри лежат огрызки кода, в молодости бывшие куском явно какого-то отладчика. По крайней мере, все ссылки из этого кода ведут в младшие юзерские адреса типа E00. Твой эксперимент с заполнением области константой меня почти убедил, но я завтра попробую и сам, ты уж не обижайся.
было бы просто СУПЕР,
т.к. это была теория, теперь её надо проверить всесторонне.
хотя природа появления дырки понятна
блок под биос - фиксированного размера, а кода - сколько получилось
а асм мусором заполнил пустой блок, и наверное не сильно на это обратили внимание тогда

---------- Post added at 23:53 ---------- Previous post was at 23:48 ----------

Цитата Сообщение от forth32 Посмотреть сообщение
Далее. Ты предлагаешь перехватывать вызовы только 2 подпрограмм - чтения сектора и записи сектора. Сразу говорю, что этого мало. Как минимум SELDSK работает с дискетой напрямую, да и еще кое-где я видел обращение и к флопу, и к регистру выбора устройства. Или мне так только показалось? Вообщем, тут путь один - раскопать дисковую подсистему одного биоса полностью, до последнего байта. Я биос особо плотно не копал, меня больше BDOS интересовал. Теперь, похоже, пора заняться. Вот на выходных, на даче, и займусь.
да, про seldsk забыл, но посмотрел его код (он есть в исходниках для разных биосов что я выкладывал) посмотри INFO.MAC
там понятно что надо ловить,
по хорошему патчить там надо
Код:
;       DSETUP - Процедура, устанавливающая требуемый трек,
;                сектор, включает нужный диск, запускает
;                мотор.
будем пробовать

---------- Post added at 23:56 ---------- Previous post was at 23:53 ----------

Цитата Сообщение от forth32 Посмотреть сообщение
Я для себя наметил такой план.

2. Пишу для корвета загрузчик 1 уровня (тот который 256 байт) и поддержку в меге для него. Допаиваю от бокового порта к меге проводки порта С (там их потребуется штук 6, как я прикинул). Разбираюсь с двунаправленным режимом ВВ55 - я раньше с ним никогда не сталкивался, придется разбираться с нуля. В конце должна получиться система, умеющая загружать в корвет произвольный код с SD-карты, тот же КТДП к примеру, и запускать его.
mode2 и для меня второй "темный" момент, на бумаге красиво
а в жизни, ждём твоих результатов

---------- Post added at 23:57 ---------- Previous post was at 23:56 ----------

Цитата Сообщение от forth32 Посмотреть сообщение
Вот после этих трех шагов уже можно будет готовить различные варианты загрузчиков 2 уровня, биосов итд. Я думаю, что это займет пару недель, не меньше, мне же не только корветом заниматься приходится Надеюсь на активную помощь от сообщества и в первую очередь ESL как основного генератора идей.
всегда пожалуйста
после провеки MODE2 и стабилизации API надо будет сразу эмулятор запатчить под это дело,
ибо отладку это упростит....

---------- Post added 27.06.2014 at 00:01 ---------- Previous post was 26.06.2014 at 23:57 ----------

Цитата Сообщение от forth32 Посмотреть сообщение
Задача осложняется тем, что все драйвера vfat написаны на С. Мне бы очень не хотелось писать на С задачи реального времени типа начального загрузчика. Можно скомбинировать код на С и ассемблере, но для AVR я такого не делал никогда. Даже не представляю, какие там соглашения о связях, сохранении регистров, стеке итд. Придется разбираться, ну или все писать на С с риском не влезть по времени между стробом адреса и посылкой данных в порт.
я как раз собирался ВСЕ писать на C
как доедет всё мое - буду пробовать.

я проникся твоим кодом загрузчиков
асм АВР не знаю, но и так всё понятно
красиво
особенно проникся хранением адрессом следующего JMP в регистре

и порадовало что WAIT A0 таки сработал, это сильно упрощает требование к AVR?