1 Отредактировано Voldemar0 (14-02-2017 20:51)

Тема: Мелкие программки на ассемблере для сисмона

Привет!

На разных форумах и тут тоже бывают всякие истории о ремонтах агатов. Вы ведь часто используете всякие самописные мелкие (байт на 10-40) программки, которые позволяют из сисмона проверить разные блоки машины. Ну там дисководу головки погонять, экран полосками изрисовать, память как нибудь заполнить и т.д.

Есть мысль: собрать такие программки в одной теме.

Если не знаете как что-то сделать, есть только идея или черновик, всё равно напишите - я подправлю и проверю. Желательно, если программка будет без изменений работать на обеих архитектурах.

2 Отредактировано Wierzbowsky (14-02-2017 21:21)

Re: Мелкие программки на ассемблере для сисмона

Проверка режима экрана Эппла.

Команды:

400:A0
401<400.7FFM
1800:A2 00 8A 9D 00 04 E8 D0 F9 2C 54 C0 2C 51 C0 60
1800G

Результат работы:

http://podrezov.com/temp/done.jpg

Автор:  avivanov76

3 Отредактировано Wierzbowsky (15-02-2017 16:27)

Re: Мелкие программки на ассемблере для сисмона

Проверка работы графики Агата-9.

Команды:

1800:A9 40 85 81 A0 00 84 80 98 91 80 C8 D0 FB E6 81 A5 81 C9 80 F0 0C 4A 4A 4A 29 03 AA BD 23 18 4C 09 18 60 00 55 AA FF
1800G
C720

Результаты работы:

http://www.podrezov.com/agat/test1.jpg

4 Отредактировано Wierzbowsky (14-02-2017 21:21)

Re: Мелкие программки на ассемблере для сисмона

Простой тест экранного ОЗУ.

Команды:

1800:A9 00 AA A8 9D 00 14 E8 D0 FA DD 00 14 F0 03 2C 30 C0 E8 D0 F5 C8 D0 F2 18 69 01 4C 04 18
1800G

Описание:

Программа пишет байт в 256 ячеек (посреди отображаемого экрана), а потом 256 раз читает эти 256 ячеек и сравнивает, тот ли байт прочелся. Если не тот, дергает бипер. Потом берет следующее число и все с начала. Одно значение проверяется где-то полсекунды, если чтение неустойчивое, должны быть слышны странные звуки (правда, если совсем не повезет, может уйти в ультразвук).

Автор:  avivanov76

5 Отредактировано Wierzbowsky (14-02-2017 21:21)

Re: Мелкие программки на ассемблере для сисмона

Различные тестилки для установки вместо Монитора.

Шьём соответствующий объектник в ПЗУ (D6), ставим в панельку вместо Монитора. В процессе работы anykey - пауза/возобновление работы.

DgnRamWO - диагностика записи.
DgnRAMWR - диагностика записи и чтения.

TstMMU - читаем содержимое маппера до инициализации после включения питания, затем маппим 0-7 на 0-7, и опять читаем.

CGVRWO28.zip
CGVRWR28.zip
На сегменты 2-3 подключаем банки 8-9 и отображаем их в ЦГВР и тестируем их. Одна только запись, вторая - запись с последующим чтением.

Запустите эти прошивки в эмуляторе чтобы посмотреть как должно выглядеть на исправной плате.

Автор:  LeoN65816

Post's attachments

Attachment icon CGVRWO28.zip 1.33 kb, 424 downloads since 2017-02-14 

Attachment icon CGVRWR.zip 1.46 kb, 418 downloads since 2017-02-14 

Attachment icon CGVRWR28.zip 1.47 kb, 450 downloads since 2017-02-14 

Attachment icon DgnRamWO.zip 785 b, 443 downloads since 2017-02-14 

Attachment icon DgnRamWR.zip 855 b, 550 downloads since 2017-02-14 

Attachment icon TstMMU.zip 1.06 kb, 419 downloads since 2017-02-14 

6

Re: Мелкие программки на ассемблере для сисмона

Ой, я халявщик. Всю трудную работу по оформлению моих тестов за меня уже сделали. Спасибо, Wierzbowsky!
Единственно, надо дополнить, что "проверка работы графики Агата" предназначена для девятки.
А "простой тест экранного ОЗУ" оказался бестолковым из-за маленького объема проверяемой области и того, что каждое чтение вызывает регенерацию соответствующей строки. Поэтому по факту проверяется хранение данных между моментом записи и первым чтением, а это всего около 2,6 миллисекунд, что конечно мало.

7

Re: Мелкие программки на ассемблере для сисмона

avivanov76 пишет:

Ой, я халявщик. Всю трудную работу по оформлению моих тестов за меня уже сделали. Спасибо, Wierzbowsky!
Единственно, надо дополнить, что "проверка работы графики Агата" предназначена для девятки.
А "простой тест экранного ОЗУ" оказался бестолковым из-за маленького объема проверяемой области и того, что каждое чтение вызывает регенерацию соответствующей строки. Поэтому по факту проверяется хранение данных между моментом записи и первым чтением, а это всего около 2,6 миллисекунд, что конечно мало.

:) Это вам спасибо. Поправил описание графтеста для девятки. Что поправить в записи про тест экранного ОЗУ?

8

Re: Мелкие программки на ассемблере для сисмона

Wierzbowsky пишет:

Что поправить в записи про тест экранного ОЗУ?

Ладно пусть пока так останется, предупреждение, что тест не слишком полезный я сделал :) Может, когда время свободное появится, подумаю, как сделать нормальный тест, работающий из ПЗУ.

9 Отредактировано Voldemar0 (25-02-2017 11:10)

Re: Мелкие программки на ассемблере для сисмона

Проверка графики 128x128x16, обе архитектуры

Выводит 16 цветных горизонтальных полос

4000:A9 60 85 81 A0 00 84 80
4008:A5 81 4A 29 0F 85 E0 0A
4010:0A 0A 0A 05 E0 91 80 C8
4018:D0 FB E6 81 A5 81 C9 80
4020:D0 E6 8D 31 C7 60 00 00
4000G

Тест клавиатуры 2, обе архитектуры

Нажимайте клавиши, любая клавиша будет выведена как символ, включая специальные.

РЕГ/Shift меняют алфавит, РУС/LAT переключают регистр

4000:A0 00 AD 03 C0 10 FB 2C
4008:16 C0 0A 0E 63 C0 6A 91
4010:28 C8 C8 4C 02 40 00 00
C110:0    ; на семёрке не обязательно
4000G

Тест клавиатуры 1

Нажимайте клавиши, коды будет отображаться

Семёрка:

4000:20 09 40 20 c1 fd 4C 00
4008:40 6c 38 00 00 00 00 00

Девятка:

4000:20 09 40 20 cb fd 4C 00
4008:40 6c 38 00 00 00 00 00

4000G

10 Отредактировано avivanov76 (11-11-2018 20:54)

Re: Мелкие программки на ассемблере для сисмона

Проверка графики Агат-9 в режиме Apple HGR.

1800: A2 00 8A 0A 0A 29 1C 85
1808: 81 8A 4A 4A 4A 85 80 4A
1810: 85 82 29 03 05 81 09 20
1818: 85 81 A5 80 29 18 90 02
1820: 69 7F 85 80 0A 0A 05 80
1828: 85 80 8A 48 A5 82 29 0E
1830: AA A0 27 BD 4D 18 91 80
1838: 88 BD 4C 18 91 80 88 10
1840: F2 68 AA E8 E0 C0 90 BA
1848: 8D 50 C0 60 00 00 55 2A
1850: 2A 55 D5 AA AA D5 7F 7F
1800G
Post's attachments

AppleHGR.png, 2.48 kb, 560 x 384
AppleHGR.png 2.48 kb, 320 downloads since 2018-11-11 

11 Отредактировано avivanov76 (06-03-2020 23:40)

Re: Мелкие программки на ассемблере для сисмона

Печать всех символов от 0 до 255
Обе архитектуры.

1800:A9 80 85 81 A0 00 84 80
1808:A2 08 98 C6 81 91 80 C8
1810:D0 FB CA D0 F6 8A 29 30
1818:0A 0A 85 80 D0 02 E6 81
1820:A0 1F A9 2F 91 80 88 8A
1828:49 0F 91 80 E8 88 10 F2
1830:8A D0 E2 8D 3E C7 60

1800G
Post's attachments

A7_charset.jpg, 88.9 kb, 640 x 510
A7_charset.jpg 88.9 kb, 256 downloads since 2020-02-11 

12 Отредактировано avivanov76 (06-03-2020 23:40)

Re: Мелкие программки на ассемблере для сисмона

Проверка интерфейса пультов и переключателя РУС/ЛАТ клавиатуры.
Выводит значения угла поворота ручек как шестнадцатеричные значения. Также удобно для проверки самих пультов, если они неправильно распаяны. Результат нажатия на кнопки не должен зависеть от угла поворота. Нажатие на одну кнопку не должно приводить к срабатыванию обеих.

Агат-7

1800:A9 8C 20 D4 FD A2 00 86
1808:25 A0 00 A9 10 20 4B 18
1810:20 64 18 E8 A0 00 A9 13
1818:20 4B 18 20 64 18 A0 05
1820:A9 10 20 4B 18 AD 61 C0
1828:20 5D 18 A0 05 A9 13 20
1830:4B 18 AD 62 C0 20 5D 18
1838:A0 0A 20 51 18 AD 63 C0
1840:20 5D 18 A9 1F 20 94 FB
1848:4C 05 18 48 20 51 18 68
1850:A8 B9 78 18 F0 06 20 D4
1858:FD C8 D0 F5 60 0A A9 58
1860:2A 4C D4 FD AD 70 C0 A0
1868:00 EA EA BD 64 C0 10 04
1870:C8 D0 F8 88 98 4C C1 FD
1878:8D D0 C4 CC 00 8D C2 D4
1880:CE 00 8D D2 AF CC BA 00
1888:B1 BA 00 B2 BA 00

1800G

Агат-9

1800:A9 8C 20 ED FD A2 00 86
1808:25 A0 00 A9 10 20 4B 18
1810:20 64 18 E8 A0 00 A9 13
1818:20 4B 18 20 64 18 A0 05
1820:A9 10 20 4B 18 AD 61 C0
1828:20 5D 18 A0 05 A9 13 20
1830:4B 18 AD 62 C0 20 5D 18
1838:A0 0A 20 51 18 AD 63 C0
1840:20 5D 18 A9 1F 20 A8 FC
1848:4C 05 18 48 20 51 18 68
1850:A8 B9 78 18 F0 06 20 ED
1858:FD C8 D0 F5 60 0A A9 58
1860:2A 4C ED FD AD 70 C0 A0
1868:00 EA EA BD 64 C0 10 04
1870:C8 D0 F8 88 98 4C CB FD
1878:8D D0 C4 CC 00 8D C2 D4
1880:CE 00 8D D2 AF CC BA 00
1888:B1 BA 00 B2 BA 00

1800G
Post's attachments

screen.png, 2.22 kb, 512 x 512
screen.png 2.22 kb, 255 downloads since 2020-02-27 

13 Отредактировано avivanov76 (20-03-2022 20:44)

Re: Мелкие программки на ассемблере для сисмона

Проверка прерываний на Агат-7
Программа очищает экран и выводит два счетчика: IRQ и NMI. Затем ставит два обработчика, выводит надпись INT ON и включает прерывания. Счетчики должны изменяться с частотой прерываний, причем IRQ в 10 раз быстрее, чем NMI.
При нажатии на любую клавишу прерывания выключаются и выводится надпись INT OFF.

Есть смысл запускать программу два раза. Первый раз остановить ее, когда счетчик IRQ досчитает до какого-то большого числа, например 5000, и сравнить значения счетчиков IRQ и NMI. Значение счетчика IRQ должно быть примерно в 10 раз больше, чем NMI.
Второй раз стоит дать программе поработать подольше, чтобы убедиться, что она не виснет. Если виснет, то вероятно что-то с самими сигналами прерываний или с ОЗУ.

1800:A0 00 20 91 18 A9 B0 A2
1808:07 95 80 CA 10 FB A0 04
1810:B9 9D 18 99 FB 03 88 10
1818:F7 8D 40 C0 58 A0 0B 20
1820:91 18 A0 11 20 91 18 A2
1828:00 86 25 A2 04 20 7E 18
1830:E6 25 A2 08 20 7E 18 AD
1838:00 C0 10 EB 78 8D 50 C0
1840:2C 10 C0 A0 0B 20 91 18
1848:A0 15 4C 91 18 A9 90 38
1850:E9 01 D0 FB 20 5F 18 A5
1858:45 40 18 20 5F 18 40 48
1860:8A 48 A2 04 90 02 A2 00
1868:F6 80 B5 80 C9 BA D0 0A
1870:A9 B0 95 80 E8 8A 29 03
1878:D0 EE 68 AA 68 60 20 2F
1880:FC A9 08 85 24 B5 7F 20
1888:D4 FD CA 8A 29 03 D0 F5
1890:60 B9 A2 18 F0 06 20 D4
1898:FD C8 D0 F5 60 4C 5A 18
18A0:4D 18 8C C9 D2 D1 BA 8D
18A8:CE CD C9 BA 00 8D C9 CE
18B0:D4 A0 00 CF CE 8D 00 CF
18B8:C6 C6 8D 00

1800G

!! Программа проверена на железной семерке. В эмуляторе Олега Одинцова версии 1.29 она работает неправильно, поскольку там, похоже, неверная частота IRQ. Если очень хочется увидеть результат в этом эмуляторе, можно заставить ее работать, исправив константу в ячейке 184E на 64.


Проверка прерываний на Агат-9
По сути все то же самое. Отличие в том, что на девятке IRQ вызываются в 39 раз чаще, чем NMI. Поэтому счетчик IRQ идет намного быстрее.

1800:A0 00 20 91 18 A9 B0 A2
1808:07 95 80 CA 10 FB A0 04
1810:B9 9D 18 99 FB 03 88 10
1818:F7 8D 40 C0 58 A0 0B 20
1820:91 18 A0 11 20 91 18 A2
1828:00 86 25 A2 04 20 7E 18
1830:E6 25 A2 08 20 7E 18 AD
1838:00 C0 10 EB 78 8D 20 C0
1840:2C 10 C0 A0 0B 20 91 18
1848:A0 15 4C 91 18 A9 09 38
1850:E9 01 D0 FB 20 5F 18 A5
1858:45 40 18 20 5F 18 40 48
1860:8A 48 A2 04 90 02 A2 00
1868:F6 80 B5 80 C9 BA D0 0A
1870:A9 B0 95 80 E8 8A 29 03
1878:D0 EE 68 AA 68 60 20 61
1880:FC A9 08 85 24 B5 7F 20
1888:ED FD CA 8A 29 03 D0 F5
1890:60 B9 A2 18 F0 06 20 ED
1898:FD C8 D0 F5 60 4C 5A 18
18A0:4D 18 8C C9 D2 D1 BA 8D
18A8:CE CD C9 BA 00 8D C9 CE
18B0:D4 A0 00 CF CE 8D 00 CF
18B8:C6 C6 8D 00

1800G

14 Отредактировано Prol (21-11-2020 13:48)

Re: Мелкие программки на ассемблере для сисмона

avivanov76 пишет:

Может, когда время свободное появится, подумаю, как сделать нормальный тест, работающий из ПЗУ.

Не появлялось?:) 28 килобайт свободного места в ПЗУ остается.

15

Re: Мелкие программки на ассемблере для сисмона

Я вот тут выкладывал промежуточный вариант: http://forum.agatcomp.ru//viewtopic.php?pid=2314#p2314
Но дальше дело застряло, потому что слишком много хотелок было: и не использовать никаких ячеек памяти, и работать под любой архитектурой, и весь объем памяти тестировать и при этом уместиться в стандартные 2 КБ.

16

Re: Мелкие программки на ассемблере для сисмона

Проверка ячейки последовательного и параллельного интерфейса (обе архитектуры)
Плата должна быть установлена в слот 5.

Проверка ВВ55. Все три порта инициализируются в режим вывода, после чего во все порты последовательно выводятся значения $FF и $00. Частота "мигания" около 30 кГц.

1800:A9 80 8D D3 C0 A9 FF 8D
1808:D0 C0 8D D1 C0 8D D2 C0
1810:49 FF 4C 07 18

Проверка ВВ51. Передатчик инициализируется в асинхронный режим с 8 битами данных, битом четности, одним стоп-битом и скоростью передачи 4800 бит/с (если перемычками не задана другая скорость). Далее передатчик непрерывно передает байт $55.

1800:A0 06 B9 18 18 8D D9 C0
1808:88 D0 F7 A9 55 8D D8 C0
1810:AD D9 C0 29 01 F0 F9 D0
1818:F2 33 7E 40 00 00 00

17

Re: Мелкие программки на ассемблере для сисмона

avivanov76 пишет:

Проверка ВВ51. Передатчик инициализируется в асинхронный режим с 8 битами данных, битом четности, одним стоп-битом и скоростью передачи 4800 бит/с (если перемычками не задана другая скорость). Далее передатчик непрерывно передает байт $55.

1800:A0 06 B9 18 18 8D D9 C0
1808:88 D0 F7 A9 55 8D D8 C0
1810:AD D9 C0 29 01 F0 F9 D0
1818:F2 33 7E 40 00 00 00

Может, добавить тест приёмного канала? Скажем, принятые на установленной скорости байты выводить прямо в экранную область. Или в виде hex-значений.

18

Re: Мелкие программки на ассемблере для сисмона

Хорошо бы, но тогда тест получается не автономный. Надо откуда-то брать принимаемые данные.

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

19

Re: Мелкие программки на ассемблере для сисмона

avivanov76 пишет:

Проверка ячейки последовательного и параллельного интерфейса (обе архитектуры)
Плата должна быть установлена в слот 5.

А если я вставлю ячейку в Агат 9 в 3й слот, какой бит нужно исправить, чтобы потестировать девайс с 9 Агатом ?

20

Re: Мелкие программки на ассемблере для сисмона

Вот для слота 3.
Тест ВВ55

1800:A9 80 8D B3 C0 A9 FF 8D
1808:B0 C0 8D B1 C0 8D B2 C0
1810:49 FF 4C 07 18

Тест ВВ51

1800:A0 06 B9 18 18 8D B9 C0
1808:88 D0 F7 A9 55 8D B8 C0
1810:AD B9 C0 29 01 F0 F9 D0
1818:F2 33 7E 40 00 00 00

21

Re: Мелкие программки на ассемблере для сисмона

Спасибо огромное!

22 Отредактировано avivanov76 (23-10-2021 00:56)

Re: Мелкие программки на ассемблере для сисмона

Расчет контрольных сумм
Назначение - проверка без выпайки прошивок ПЗУ, которые программно доступны процессору. Может быть полезна для поиска нестандартных прошивок.

Для расчета используется алгоритм CRC-16 с полиномом 0x1021 и начальным значением 0xFFFF. Такой же применяется при подсчете КС секторов контроллерами НГМД IBM PC.

Чтобы посчитать КС ПЗУ нужно ввести в ячейки $1858 и $1859 адрес первого байта ПЗУ, а в ячейки $185A и $185B - адрес последнего байта. Младший байт адреса вводится первым.

Например, чтобы посчитать КС Монитора, нужно ввести:

1858:00 F8 FF FF

После чего запустить программу:

1800G

По умолчанию в ячейках $1858 - $185B задан адрес самой программы, поэтому можно легко проверить, правильно ли она введена в память. Нужно просто ввести 1800G и сравнить значение с эталонным.

Агат-7

1800:A0 01 BE 58 18 96 84 88
1808:10 F8 84 81 84 80 C8 AD
1810:5A 18 C5 84 AD 5B 18 E5
1818:85 90 0D B1 84 20 2F 18
1820:E6 84 D0 EB E6 85 D0 E7
1828:A5 81 A6 80 4C 32 F9 45
1830:81 85 82 4A 4A 4A 4A 45
1838:82 85 82 0A 0A 0A 0A 45
1840:80 85 81 A5 82 6A 6A 6A
1848:AA 6A 29 E0 45 82 85 80
1850:8A 29 1F 45 81 85 81 60
1858:00 18 57 18

КС: 5F98


Агат-9

1800:A0 01 BE 58 18 96 84 88
1808:10 F8 84 81 84 80 C8 AD
1810:5A 18 C5 84 AD 5B 18 E5
1818:85 90 0D B1 84 20 2F 18
1820:E6 84 D0 EB E6 85 D0 E7
1828:A5 81 A6 80 4C 21 F9 45
1830:81 85 82 4A 4A 4A 4A 45
1838:82 85 82 0A 0A 0A 0A 45
1840:80 85 81 A5 82 6A 6A 6A
1848:AA 6A 29 E0 45 82 85 80
1850:8A 29 1F 45 81 85 81 60
1858:00 18 57 18

КС: 2860


Контрольные суммы для некоторых ПЗУ

Монитор Агат 7: C189

Монитор Агат 9: 344D

Контроллер НГМД 140K для Агат 7: B666

Контроллер НГМД 140K для Агат 9: 8F68

Контроллер НГМД 840K (Волжский): 2833

Контроллер НГМД 840K (Загорский): 154B

Контроллер принтера для Агат 9
Область $C400 - $C4FF: 852F
Область $C800 - $CEFF (становится доступной после записи в адрес $C0C3 любого байта): 096E
Адреса указаны для случая, когда контроллер принтера установлен в слот 4.

23

Re: Мелкие программки на ассемблере для сисмона

Загрузка с магнитофонного порта на Агат-9

Такая программка есть тут http://agatcomp.ru/agat/DumpDsk/Link1/agat9-other.shtml, но мой вариант чуть короче и в нем удобнее задавать начальный и конечный адреса загрузки.

00E0:A0 03 B6 EC 96 3C 88 10
00E8:F9 4C 07 FF 00 18 FF 18

В самой программке 12 байт, последние 4 ячейки (с адреса $EC) - это начальный и конечный адреса загрузки. В данном случае адреса равны $1800 и $18FF. Младший байт адреса вводится первым.

24

Re: Мелкие программки на ассемблере для сисмона

Добрый день, а нет ли такой программки для проверки смешенного, текстографического режима Эпл?

25 Отредактировано alex1975 (20-03-2024 15:44)

Re: Мелкие программки на ассемблере для сисмона

Вот добавлю для удобства, D6 для теста 9-ки - http://agatcomp.ru/agat/Hardware/useful … pair.shtml и детали для 9-ки http://forum.agatcomp.ru//viewtopic.php?pid=5778#p5778 и ramtest -http://forum.agatcomp.ru//viewtopic.php?pid=2314#p2314

Post's attachments

Attachment icon D6 -рф2 - Debug-SysMon9.bin 2 kb, 49 downloads since 2024-03-20 

Attachment icon RAMTEST.bin 2 kb, 41 downloads since 2024-03-20