1

Тема: Вопросы по программированию Агата

Собственно несколько вопросов:

На реальном Агате 30 лет назад у меня не было доп. памяти и поэкспериментировать не получилось...

1. Как правильно программно определить наличие модуля доп. ОЗУ?
Я конечно знаю, как подключаются и отключаются банки памяти доп. ОЗУ. Я знаю о приоритете, если таких модулей несколько. Алгоритм в принципе прост, начать с 6-го слота, попытаться подключить банк модуля по какому-либо адресу, произвести операции чтения/записи/переключения банков и ежели результата нет, уменьшить слот и т.д.
Но тревожит вот вот что, а если там в слоте какое-то гипотетическое устройство? И мои операции записи по адресам CXYY, где X от 2 до 6, вызовут нештатное срабатывание этого устройства, тогда что?

Можно конечно сразу после старта пробежаться чтением по адресам СXky, от CX00 до CX7F, и если это доп. модуль, то по каждому адресу CXkz должно лежать значение kn, а по адресам СX(8+k)z, тоже kn т.е. k должно везде совпадать... Так что-ли?...

2. При подключении банка доп. модуля ОЗУ по адресам E000-FFFF меняется режим работы псевдо ПЗУ, в том числе и для адресов D000-DFFF где в тот момент подключен банк основного ОЗУ. При подключении банков доп. ОЗУ вне адресов D000-FFFF, режим работы псевдо ПЗУ не меняется... Конечно это не вопрос, можно произвести запись в регистр С080+XY, и все встанет на свои места, но так ли это на реальном железе?

3. Теоретически, к разным адресам можно подключать один и тот же банк ОЗУ. Хоть основного, хоть дополнительного. Грубо говоря, можно во всем пространстве адресов сделать подключенным один единственный банк памяти. Есть ли на это какие-либо реальные ограничения?

4. Как определить наличие контроллера дисковода 840кБ? Сравнивать что записано по адресам CX**? А прошивки контроллеров одинаковые были или различались? Аналогичный вопрос с контроллером принтера...

Извиняюсь, если где-то на сайте есть ответы на эти вопросы... информации очень много выложено, еще не успел все перечитать...

2

Re: Вопросы по программированию Агата

1) только озу реагирует на запись в регион сх00-схФФ, так что не перепутаешь.

2) да.

3) нет. А почему оно должно быть ? Так многие проги делают. Иногда для усложнения анализа, иногда еще зачем-то

4) прошивок есть две. Рекомендуется смотреть последние 4 байта - они у дисководов девятки как раз сигнатурные

3

Re: Вопросы по программированию Агата

А проще - напиши какие нибудь короткие тесты своих идей, я их могу погонять на реальных машинах

В виде исходника или сборки

4

Re: Вопросы по программированию Агата

Voldemar0 пишет:

А проще - напиши какие нибудь короткие тесты своих идей, я их могу погонять на реальных машинах

В виде исходника или сборки


Благодарю за ответы, так и сделаю, напишу тестовые программки...

5 Отредактировано USR (25-03-2018 00:07)

Re: Вопросы по программированию Агата

Вот пара простеньких тестов на наличие доп. модулей ОЗУ-128Кб для Агат-9 и перечень подключенных дисководов.

Загрузить ассемблер, выйти в отладчик.

Запуск поиска доп. модулей.
[RUN MEM

Запуск поиска дисководов
[RUN DRV

Тесты простенькие, память вообще ищу по совпадению битов.
Для дисководов, сначала по сигнатуре ищется контроллер, далее проверяются перемычки на подключение 2S2D дисковода и пытаемся запустить двигатель. Наверное светодиоды на дисководах будут мигать... или не будут))

Для теста памяти выводится список слотов с подключенными модулями в порядке снижения приоритета. Для дисководов выводится номер слота и номер привода.

На диске также есть исходники тестов.

ЗЫ. Ах да, я понятия не имею, будут ли эти программы работать на реальном Агате))

Post's attachments

Attachment icon TESTs.DSK 840 kb, 291 downloads since 2018-03-24 

t8.png, 2.16 kb, 512 x 512
t8.png 2.16 kb, 289 downloads since 2018-03-24 

6

Re: Вопросы по программированию Агата

работает
mem "2" пишет

drv пишет "5,0"  или "5.0/5.1", в зависимости от джампера

мигания не видно, наверное, слишком быстрое

7 Отредактировано USR (25-03-2018 20:08)

Re: Вопросы по программированию Агата

Voldemar0 пишет:

работает
mem "2" пишет

drv пишет "5,0"  или "5.0/5.1", в зависимости от джампера

мигания не видно, наверное, слишком быстрое

Благодарю! Только вот с джамперами вопрос.

Если джампер (на дисководе?) установлен так, что пишет 5.1, то как тогда удалось загрузиться?
Вроде как начальная загрузка только с накопителя-0 проходит...
Или джампер прямо на включенном меняли?

8 Отредактировано Voldemar0 (26-03-2018 08:14)

Re: Вопросы по программированию Агата

Загрузка всегда с нулевого.
Джамперы на шлейфе дисководов.

http://agatcomp.ru/Images/new_fl_ctrl.shtml
http://agatcomp.ru/Images/new_fl_ctrl/connect.jpg

(Джамперы вообще мало на что влияют: они только программно доступы, но никакой связи между ними и остальной частью контроллера нет. Т.е. если прога хочет их читать - она может это сделать, но если не хочет - её дело. ПЗУшный загрузчик на них вообще не смотрит. Это касается всех конфигурационных бит 840ки - число флопов, их тип....)