1

Тема: Сигнатура в ПЗУ контроллера загрузочного устройства

http://www.txbobsc.com/aal/1986/aal8606.html#a5

In order to use the protocol converter firmware, you need first to find it. The first step in finding it is to find which slot it is in. All of the cards with P/C firmware (so far) are also cards which control or emulate disk drives and have firmware supporting the ProDOS device driver protocol. Cards with ProDOS device driver firmware can be identified by four bytes: $Cs01 = $20, $Cs03 = $00, $Cs05 = $03, and $Cs07 = $00. The first three bytes in that list are the same for all disk drive controllers. The zero value at $Cs07 distinguishes it as a disk controller with protocol converter firmware.

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

2

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

LeoN пишет:

http://www.txbobsc.com/aal/1986/aal8606.html#a5

In order to use the protocol converter firmware, you need first to find it. The first step in finding it is to find which slot it is in. All of the cards with P/C firmware (so far) are also cards which control or emulate disk drives and have firmware supporting the ProDOS device driver protocol. Cards with ProDOS device driver firmware can be identified by four bytes: $Cs01 = $20, $Cs03 = $00, $Cs05 = $03, and $Cs07 = $00. The first three bytes in that list are the same for all disk drive controllers. The zero value at $Cs07 distinguishes it as a disk controller with protocol converter firmware.

Пока как-то туманно это относительно Агата.

"Для использования ПО конвертора протокола, вам сперва необходимо найти его. Первый шаг в поиске есть поиск слота, в который он установлен. Все карты с ПО конвертора протокола (P/C) являются  также картами управляющими или эмулирующими дисководы и имеют поддержку ProDOS device driver protocol."

Где тут агат ? Как агатовский сисмон ищет флопики и так хорошо видно из его кода (алгоритм похож на описанный, хотя, возможно, отличается сдвигом на байт). Как ищет продос и некоторые другие проги/ОС контроллер 140/840ки - тоже не секрет - не так как тут описано (у них сигнатура в последних 4 байтах ROM-загрузчика). У продоса вообще безумная логика работы: она часть кода ROM-лоадера загружает к себе в качестве куска кода.

3

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

Вот здесь вполне так сходится. ;)

Voldemar0 пишет:

Как агатовский сисмон ищет флопики и так хорошо видно из его кода (алгоритм похож на описанный, хотя, возможно, отличается сдвигом на байт).

Есть листинг? Можно взглянуть?

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

4 Отредактировано Voldemar0 (31-07-2018 14:32)

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

Так на любом компе типа Агат сбрасываешь загрузку и пишешь :
fffc.fffd
видишь вектор сброса
дальше пишешь этот вектор и букву L - ВВОД - получаешь листинг :)

Сперва идёт группа вызовов процедур настройки IOSub (окно, цвет, текстовый режим, вектора IO), а потом проверка векторов-флагов 3f2..3f4. Там есть проверка на *$3F3 % *$3F4 == $A5, по результату ветвление либо на JMP ($3F2) либо эта самая процедура вывода надписи "Агат", установка вектора-флага и поиск флоп-контроллера.
Я семёрку изучал когда-то очень подробно на эту тему, помню что там проверяются три байта в начале каждой ячейки, причем именно как тут описано: один через два. Но, возможно я ошибаюсь, это именно байты Cx00, Cx02, Cx04 == A2, A0, A2. Девятку подробно не копал, но, вроде бы, там отличие только в порядке поиска: у семёрки от 6 до 1, у девятки от 1(2?) до 6 слота. Если флоп не найден - переход на начало интерактивной части сисмона $FF69. Причем в семёрке это даже не переход, а просто такая последовательность команд - т.е. процедура поиска как раз расположена перед адресом $FF69.

Ты скажи, зачем оно тебе надо, тогда понятнее будет, о чём рассказывать.

5

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

Voldemar0 пишет:

Ты скажи, зачем оно тебе надо, тогда понятнее будет, о чём рассказывать.

Это получается как бы продолжение этого (кстати, Владимир, ты же вроде как root, может эту тему к той отпочковать, или наоборот, ту сюда?).
Листинг нужен для изучения анализа сигнатуры загрузочного контроллера (SD-картовод хочу прикрутить), и для изучения инициализации сисмоном ДопОЗУ.

Идой-6.5 пытаюсь дизасмить:
$FA36 - хардварный ресет,
$FAA0 - горячий ресет,
$FA45 - холодный ресет, здесь же начинается хитрый цикл, в котором и память (и на генплате и в слотах) обнюхивается и в $CxFE и $CxFF сигнатура (и памяти и контроллеров) анализируется. Пока особо не вкурил этот анализ...

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

6 Отредактировано Voldemar0 (02-08-2018 06:22)

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

Так бы сразу и сказал.

1) Исходники тебе не помогут, потому что там такой же код и будет, как с дизасма. Разве что немножко меток будет. Ни комментов, ничего. Всё и так просто и понятно (по мнению авторов кода).

2) Просто повтори первые 6 байт и последние 4 байта загрузочного ROM и он начнёт получать управление. Желательно последние 4 байта сделать изменяемыми: у разных 140ок и у 840ки они иногда тоже используются как сигнатуры - соответственно, если хочешь косить под разные типы контроллеров, их придётся менять.

3) Помни о входной точке Сx5C: до неё идёт инициализация устройства и счётчиков (адрес, сектор...), вывод голов в нулевой трек. После неё должен быть чистое чтение. Это касается всех версий всех контроллеров. Даже эпловских. Эта точка часто используется внешним кодом. Также учти, что на выходе из ROM-лоадера у тебя должны быть вполне конкретные значения регистров и флага C - это часто используется. В частности, C указывает на повторный вызов ROM-лоадера, но это нужно уточнить.

Так что морока у тебя будет не с сисмоном, а именно с ROM-лоадером. У сисмона всё просто.

ЗЫ Немного ещё неясно: у тебя всего два пути: или идеально совместимая со 140кой либо 840кой железка. Но тогда зачем вообще копаться в коде - оставь существующий и не усложняй жизнь. Либо пилить совсем свою железку, но тогда тебе придётся не только ковыряться в сисмоне, что не сложно, но и во всём том софте, который ты надеешся на ней запустить. Сможешь ?

7

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

Voldemar0 пишет:

1) Исходники тебе не помогут, потому что там такой же код и будет, как с дизасма.

Дык, про исходник я и не спрашивал (его и нет уже в природе даже у авторов...). А спрашивал о листинге (после дизасма), может кто-то дизасмил и у него сохранился... :)

Voldemar0 пишет:

2) Просто повтори первые 6 байт и последние 4 байта загрузочного ROM и он начнёт получать управление.

Да, управление контроллер получит. Но! Всё программьё (васик, Рапира, BTK, ИКП и т.д.) будут опознавать его как КНГМД, а работать-то с ним не умеют... (смотри ниже)

Voldemar0 пишет:

3) Помни о входной точке Сx5C

Тоже ни к чему... (смотри ниже)

Voldemar0 пишет:

Либо пилить совсем свою железку, но тогда тебе придётся не только ковыряться в сисмоне, что не сложно, но и во всём том софте, который ты надеешся на ней запустить. Сможешь ?

Нет, нет, и нет!
Размер сектор другой, количество секторов другое, файловая система другая (FAT16) и т.д.
"Лопатить" огромное количество программья и пакетов - УТОПИЯ!!!
Как я вижу SD-картовод версии 1: на ячейку принтера в разъём цепляю небольшую платку с конвертерами уровней и SD-слотом, бздуху меняю на адаптер большего объёма W27E257 с переклюком прошивки (стандарт принтер или загрузчик SD). Бздуха откликается на -IOSelect ($Cx00-$CxFF) и -IOStrobe ($C800-$CFFF), там загрузчик инитит карту, ищет в фате первый попавшийся файл типа *.aup (Auto Loading Programm) или что-то подобное, грузит его (а в нем в начале как и у B-файлов адрес загрузки и длина) и отдаётся ему... Это, к примеру, копировщик "Образ диска на SD" <-> "КНГМД+НГМД840".

Voldemar0 пишет:

у тебя всего два пути: или идеально совместимая со 140кой либо 840кой железка.

В мечтах еще "вынашиваю" версию 2 - эмулятор контроллера и флопа в одном флаконе, вот он будет полностью прозрачен для всего программья.

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

8

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

1) Ну хорошо, загрузил ты свою прогу с SD, а дальше ?
Она потащила образ с SD куда ? На обычный флопик ?

2) А кто эту прогу (*.aup) писать будет ? И на чём ?

9

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

Voldemar0 пишет:

1) Ну хорошо, загрузил ты свою прогу с SD, а дальше ?
Она потащила образ с SD куда ? На обычный флопик ?

Ну да, и наоборот.
А еще это могут быть гамы, демы, проги...

Voldemar0 пишет:

2) А кто эту прогу (*.aup) писать будет ? И на чём ?

Я. Ну никто не запрещает же никому это сделать самому...
На чём? На писи, конечно же!

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

10

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

LeoN пишет:

Ну да, и наоборот.
А еще это могут быть гамы, демы, проги...

То есть, если я правильно понимаю, при отсутствии флопа с SD карты можно будет загрузить только специально написанные программы, которые:

  • либо умещаются в оперативную память и могут быть считаны загрузчиком за один присест

  • либо содержат собственный ДОС, позволяющий догружать нужные программе данные с карты и при необходимости записывать данные обратно (например, сейвы игр)

Так?

11 Отредактировано Voldemar0 (03-08-2018 06:03)

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

LeoN пишет:

Я. Ну никто не запрещает же никому это сделать самому...
На чём? На писи, конечно же!

Я имел ввиду компилятор и язык.
У тебя уже выбран компилятор, который может собирать под архитектуру агата ?

-=-

Зачем делать копирование с SD-карты, если уже есть эмуляторы флопиков, которые напрямую работают с SD-картами ?

12

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

avivanov76 пишет:

Так?

Да.

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

13

Re: Сигнатура в ПЗУ контроллера загрузочного устройства

Voldemar0 пишет:

Я имел ввиду компилятор и язык.
У тебя уже выбран компилятор, который может собирать под архитектуру агата ?

Кросс-ассемблеры. Мне нравятся hxa и 64tass, изучаю.

Voldemar0 пишет:

Зачем делать копирование с SD-карты, если уже есть эмуляторы флопиков, которые напрямую работают с SD-картами ?

Может я что-то пропустил... Есть полноценный эмулятор 840К с записью?

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).