Как выглядит правильный матрац ?
Матрац состоит из повторяющихся полос таких цветов:
8 точек - черный цвет, 2 точки - белый, 3 точки - синий, 2 точки - белый, 1 точка - синий.
Примерный вид экрана с матрацем такой -- http://zx.pk.ru/showpost.php?p=188974&postcount=342
Как получается матрац ?
Матрац получается при включении Спектрума без ПЗУ. После включения или сброса Z80 выставляет на адресной шине начальный адрес #0000 и читает шину данных, поскольку ПЗУ не вставлено, то шина пустая - а на ней все единицы, что соответствует коду #FF, а это RST56 - команда вызова подпрограммы, поэтому Z80, выполняя эту команду, переходит по адресу #0038 и опять читает шину данных, там опять #FF, и опять переход на #0038 и так до бесконечности. Но при переходе к подпрограмме Z80 кладет на стек адрес возврата, а кроме самого первого адреса все остальные адреса возврата #0039 и стек растет, пока не заполнит всю память, в том числе и экран. А на экране нули отображаются как черные широкие полоски, а #39 (%00111001) как бело-синие полоски (0 - paper, 1 - inc). Ну и атрибуты устанавливаются тоже числом #39 (%00111001): inc = 1 (%001), paper = 7 (%111) поэтому цвет должен быть синий на белом фоне. После сброса вертикальные линии могут меняться местами - сначала бело-синяя полоска, потом черная. Это зависит от младшего бита регистровой пары SP после сброса. Значение SP после сброса может быть произвольным.
Осциллограммы на шине данных при изображении матраса. Взято оттуда.
Cигналы на битах D5, D4, D3, D0 шины данных при изображении матраса:
Cигналы на битах D7, D6, D2, D1 шины данных при изображении матраса:
Если представить, что сигналы на D5, D4, D3, D0 большую часть времени равны 1, а на остальных за 0 и сложить в байт, то получится 00111001, т.е. 39H. А это одно из чисел, которые записываются в ОЗУ при отображении матраса. Там еще пишется в ОЗУ число 00H и читается из ПЗУ число FFH.
Как посмотреть сигналы Z80 при изображении матраса в статическом режиме - собрать одну из схем для пошаговой отладки в теме.