Pull to refresh

Comments 22

поправьте меня, если ошибаюсь.

В ассемблерной вставке у вас смещение в регистре BX увеличивается на 1, а элементы массива могут быть выравнены в памяти.
Предлагаю писать: Var MATRIX : PACKED Array [0..5] of Byte;

Это более универсальный вариант для low-level разработки, когда нужен доступ к последовательным участкам памяти (например, при работе с видеобуффером, областями BIOS или с DMA) исключающий зависимость от настроек этого самого алигна в проекте или при явном задании выравнивания директивой {$A}, что тоже может быть полезно для увеличения производительности всей программы.

В Turbo Pascal не используются разряженные массивы. По сути - они всегда packed.

Да, таймер ВИ53 в принципе неплохо может в музыку, ПК Вектор-06Ц тому подтверждение: https://www.youtube.com/watch?v=9Lxo2NIVpiQ

По поводу кода:

1) не обязательно использовать индексную адресацию с базой (или как там она, которая DI+BX). Достаточно только индексной, то есть lea di,MATRIX; mov al,[di], inc di, mov al,[di] ; inc di; mov al,[di] и тд. То есть увеличиваем только DI. Я точно не помню, но вроде оно по размеру кода меньше получится, а значит и быстрее.

2) можно загрузить смещение в SI, DS у нас и так настроен в пасцале на Data segment и юзать вообще lodsb, типа lea si,MATRIX; lodsb; out dx,al; lodsb; out dx,al и тд.

3) Ну и раз адреса портов идут почти подряд, не обязательно каждый раз перезагружать DX новым значением. Достаточно установить mov dx, PORT_1A, а в следующий раз просто увеличивать DX (inc dx). Inc dx будет быстрее, чем перезагрузка dx из памяти.

Всё это актуально для XT-системы, где в принципе, важен каждый такт. Поэтому вроде мелочи (особенно для какого-нибудь iP166 MMX), а на общем быстродействии сказывается.

И не только в музыку. Раз уж тут мигают светодиодами, то режим ШИМ у 8253 тоже можно было бы задействовать.

Да, 8253 неплохо звучит. Задумался сам сделать подобную плату с несколькими 8253. 10-голосую, по числу пальцев пианиста.

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

А если ВИ53 приправить еще полосовыми фильтрами, прикрутить генератор шума и генератор ударных, то получится почти что поливокс. Меня прямо очень радует звучание "музыкальной ячейки" от Агата: http://agatcomp.ru/agat/Hardware/SoundNCL/jzs52.shtml , вот тут в видео примеры: https://youtu.be/Pyzk-iZwCPE?t=66 , ваще прям лампово. Есть даже призрочная мысль повторить ее полностью, только на ISA шину. Пугает только полное отсутствие софта на PC.

Существует синтезатор RMIF TI-3, там восемь КР580ВИ53.

Ну вот, а хочется свою и в ISA. Охота пуще неволи.

Это точно, поэтому все-таки вроде запилил реализацию агатовской муз ячейки на ISA, немного допиленную:

Заказал платки у китайцев 5 штучек, может через месяцок приедет, попробуем бахнуть...

Агонь! Ждем рассказ!

Чип 8255 , в нашей стране больше известный как К580ВВ55 - достаточно распространеный чип для ввода вывода. Практически на всех восьмибитных компютерах(и не только) стоял такой чип. Очень удобно на одном таком чипе организовать чтение клавиатуры на 64 и более клавиш , сделать светодиодную индикацию режимов работы клавиатуры.

В Радио86РК , как и на этой плате, стояли два чипа К580ВВ55 и один К580ВИ53. Один К580ВВ55 работал с клавиатурой, а второй был отдан на нужды пользователя.

(зануда ON)
Штатно ВИ53 в "Радио-86РК" не было. Его подключали кто во что горазд - радиолюбители как положено, с использованием всех 3 каналов для звука, а редакция журнала "Радио" странным образом, с одним каналом на звук и другим - для управления длительностью звука.
Ну а штатно ВИ53 стоял в "Микроше".
(зануда OFF)

мышечную память, ответственную за Ctrl-K B, Ctrl-K K

Еще можно мнемонически - Ctrl-K B - Begin, Ctrl-K K - Конец.

Потрясающая статья. Спасибо за неё.

Единственная просьба на будущее картинки не класть под спойлеры.
Когда я слышу «светодиодная матрица» и «48 линий», я думаю о матрице 24 х 24. Почему всего 6 х 8?
Почему всего 6 х 8?

Потому что с матрицей 24х24 я бы разорился на светодиодах!

Это шутка, конечно. Мысль интересная, но на первый взгляд кажется, что это потребует совершенно других трудозатрат при написании софта.
UFO just landed and posted this here
Интересная ISA-карточка, а как она называлась, для чего первоначально предназначалась?

Да в принципе она небрендовая какая-то. Если загуглить "isa 8255 8253", то в разделе Images можно увидеть похожие, обозначенные как "8255 i/o card"

Например, вот такую монструозину (восемь 8255-х и две 8254-х):

И пять "костылей" с "полотенцами"... ничего себе :-)

Изиеда конечно автоматически разводит, но можно было бы слегка причесать потом (да, не топор...). В остальном - достойное развлечение.

Sign up to leave a comment.

Articles