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, 169 downloads since 2017-02-14 

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

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

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

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

Attachment icon TstMMU.zip 1.06 kb, 168 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, 95 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, 17 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, 13 downloads since 2020-02-27 

13 Отредактировано avivanov76 (07-03-2020 00:03)

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 A0 0B 20 91
1820:18 A0 11 20 91 18 A2 00
1828:86 25 A2 04 20 7E 18 E6
1830:25 A2 08 20 7E 18 AD 00
1838:C0 10 EB 8D 50 C0 2C 10
1840:C0 A0 0B 20 91 18 A0 15
1848:4C 91 18 A9 90 38 E9 01
1850:D0 FB 20 5F 18 A5 45 58
1858:40 18 20 5F 18 58 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 59 18
18A0:4B 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. Если очень хочется увидеть результат в этом эмуляторе, можно заставить ее работать, исправив константу в ячейке 184C на 64.