RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Март 2024
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031

Календарь Календарь

Последние темы
» Вити больше нет!
автор bug19 Пн Фев 20 2023, 19:54

» Собираем оригинальный Орион 128
автор bug19 Пн Фев 20 2023, 19:47

» Проблема плющеного экрана ОРИОНА
автор kanzler Пн Ноя 28 2022, 12:05

» Орион 128 и его клоны возрождение 2019-2022 год
автор kanzler Пн Ноя 28 2022, 12:03

» Электроника КР-04. Информация, документы, фото.
автор kanzler Пн Ноя 28 2022, 12:02

» Новости форума
автор kanzler Пн Ноя 28 2022, 11:52

» Орион-128 НГМД запуск 2021 года
автор matrixplus Сб Сен 10 2022, 17:36

» ПЗУ F800 для РК86
автор ведущий_специалист Сб Сен 10 2022, 10:37

» Микропроцессорная лаборатория "Микролаб К580ИК80", УМК-80, УМПК-80 и др.
автор Электротехник Вт Июл 26 2022, 19:33

» Орион-128 SD карта в Орионе
автор matrixplus Чт Июн 02 2022, 09:00

» 7 Мая. День Радио!
автор Viktor2312 Чт Май 12 2022, 10:58

» Серия: Массовая радио библиотека. МРБ
автор Viktor2312 Ср Май 11 2022, 12:17

» Полезные книги
автор Viktor2312 Пн Май 09 2022, 15:07

» Орион 128 Стандарты портов и системной шины Х2
автор matrixplus Вс Май 08 2022, 23:08

» Орион-128 и Орион ПРО еще раз про блоки питания
автор matrixplus Вс Май 08 2022, 19:09

» Орион-128 Программаторы
автор matrixplus Вс Май 08 2022, 19:02

» Орион ПРО история сборки 2021 до 2022
автор matrixplus Вс Май 08 2022, 18:47

» Анонсы монет (New coin).
автор Viktor2312 Сб Май 07 2022, 23:11

» Хочу свой усилок для квартиры собрать не спеша
автор Viktor2312 Сб Май 07 2022, 19:33

» Амфитон 25у-002С
автор Viktor2312 Сб Май 07 2022, 09:38

» Майнер: T-Rex
автор Viktor2312 Вс Май 01 2022, 09:12

» GoWin. Изучение документации. SUG100-2.6E_Gowin Software User Guide. Среда разработки EDA.
автор Viktor2312 Пн Апр 25 2022, 01:01

» GoWin. Изучение документации. UG286-1.9.1E Gowin Clock User Guide.
автор Viktor2312 Сб Апр 23 2022, 18:22

» GoWin. Documentation Database. Device. GW2A.
автор Viktor2312 Ср Апр 20 2022, 14:08

» GOWIN AEC IP
автор Viktor2312 Ср Апр 20 2022, 12:08

Самые активные пользователи за месяц
Нет пользователей

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


Аппаратные прерывания в Специалисте

Перейти вниз

Аппаратные прерывания в Специалисте Empty Аппаратные прерывания в Специалисте

Сообщение  barsik Пн Дек 02 2019, 11:22

1
Прерывания в микропроцессорах придумали, чтобы сразу была реакция на какое-либо событие. В бытовых компьютерах из-за экономии прерывания обычно используют не по назначению. А именно для счёта времени и синхронизации с видеочастью. Вообще-то для счёта времени и работы в реальном времени есть специальная БИС, называемая 580ВИ53. Но и её в бытовых ЭВМ используют извращённо. А именно, - для выдачи звуковых тонов. Считается, что на ВИ53, якобы, можно поиметь музыку, хотя реальные музыкальные ноты это не чистый тон, а куча гармоник (что даёт красивую тембровую окраску) и у амплитуды есть огибающая (вибрато, атака и затухание).

При КР580 основной проблемой при введении прерываний в машину, где они изначально не предусмотрены, является отсутствие в КР580 прерывания в MODE 2, т.к без наличия БИС ВН59 нет возможности разместить обработчик прерывания в произвольном месте памяти. Из-за чего приходится использовать резисторы привязки на +5 вольт и RST 38.

Использование RST 38 для прерываний годится для машин, где ПЗУ стоит с адреса 0, а также годится для CP/M, т.к там область 0038...003A специально зарезервирована для этого. Но увы, во времена Специалиста никто не знал о CP/M, отчего программы работают с адреса 0 и при своей загрузке затирают адрес 0038.

Однако Специалист на КР580, благодаря наличию у него ПЗУ по адресам C000...CFFF, позволяет поиметь прерывания с обработчиком прерывания не на адресе $0038, а в произвольном месте, что может делать Z80 в MODE2.

Прерывания в Специалисте нужны для мыши и для вывода одноголосной музыки программно и трёхголосной через ВИ53. При введении прерываний в машину, где они изначально не предусмотрены, выручает режим прерываний 2. Задача в том, чтобы придумать простую схему, как получить IM2 на КР580 аппаратно.

Для обслуживания прерываний в системе КР580 формируется сигнал INTA. ВК28 выдаёт его готовым. Но и без ВК28 цикл INTA для чтения кода прерывания легко фиксируется, т.к при обработке прерывания в слове состояния по стробу SYNC выдаётся бит D0=1. Защёлкнув его в триггере ТМ2, и добавив буфер АП6 можем заставить КР580 считать с шины код CD. Считав код CD процессор, обнаружив, что это код команды CALL, в следующих машинных циклах снова дважды читает память (адрес подпрограммы). Т.о в целом считаются три байта CD,CD,CD, что является кодом команды CALL CDCD.

А адрес CDCD это в Специалисте как раз область базового ПЗУ, куда можно навсегда прошить команду JMP в область ОЗУ чуть ниже RAMTOP или в верхнее ОЗУ (т.е выше ROM-BIOS), куда прикладные программы точно не лезут. Т.к в коде СD всего 3 нуля, то если часть шины данных привязать на +5В, то для выдачи кода CD, вместо АП6 можно применить более удобные 4-х разрядные буфера ЛН6, ЛП11 или 589 АП16.

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

машины где нет ПЗУ C000:

Наличие не использующих ОЗУ 0038...003A прерываний, позволяет встроить прерывания в ROM-BIOS для опроса клавиатуры и счёта времени, аналогично ZX-Spectrum. Особенно это выгодно для Специалиста, потому что у него самая быстрая процедура опроса клавиш среди всех известных в мире 8-ми разрядок с матричной клавиатурой. Т.е опрос клавиатуры 50 раз в секунду не тормознёт прогон программы.

Самый простой аппаратно это вариант с буфером выдающим на шину код CD. Это чисто теоретическая предпосылка, т.е практически не проверенная, хотя я не вижу препятствий для её работоспособности. Как всегда самое главное это наличие оригинальной идеи, а реализацию при желании может сделать каждый.

Препятствием по введению прерываний в Специалист с целью опроса клавиатуры можно считать желание пользователей иметь совместимость со всеми старыми программами. Т.е нельзя ввести в имеющееся ПЗУ опрос клавиш по прерываниям, т.к это нарушит совместимость. Но для мыши, для счёта времени при производстве музыки и в играх, т.е для применения в новых программах препятствий нет.

Т.к нет программ использующих прерывания и для прогона имеющихся программ нужен именно ROM-BIOS в ПЗУ совместимый со зверковским загрузчиком и орловским монитором, то пока видится возможным только встроить в ПЗУ загрузчика лишь одну команду JMP на вектор прерывания в системном ОЗУ по адресу CDCD. А опрос клавиш по прерываниям, естественно, откладывается до написания полностью нового несовместимого альтернативного ROM-BIOS для оконного ПЗУ 27256.

К сожалению, я не имею пока собственного эмулятора Специалиста и тем самым лишён возможности модернизировать эмулятор даже под мелкие доработки железа. Это не позволяет разрабатывать ПО использующее эти доработки. Эмулятор EMU80 поддерживает прерывания 50 ГЦ с обработчиком по RST 38, включаемые битом D7 порта F900. Этого достаточно, чтобы делать программы для вывода музыки с использованием прерываний. А вот драйвер обслуживания мыши с использованием прерываний можно отлаживать только в железе, т.к мышь не эмулируется.

Остаётся вопросом каким образом подключить к Специалисту и РК86 мышь так, чтобы это не создавало проблем тем, у кого мышь отсутствует, зато есть контактный джойстик. Т.е нужен такой интерфейс, чтобы драйвер мыши можно было заменить драйвером для реального джойстика, а если это возможно, то и драйвером джойстика из курсорных клавиш клавиатуры.

Возможно подойдёт такая идея. Для джойстика или любой мыши (будь то Microsoft-овская с последовательным интерефейсом или бэ-ка-шная или корветовская, у которых параллельный интерфейс) все события конвертируются в байт событий, расположенный в ОЗУ. Если мышь или джойстик работают по прерыванию, то в процедуре обслуги прерывания данные с устройства конвертируются и записываются в байт событий. Если прерываний нет (в этом случае Microsoft-овскую мышь использовать нельзя) и вместо них вызывается модернизированная подпрограмма C81B или F81B, которая теперь дополнена опросом параллельной мыши или джойстика у которого тоже параллельный интерфейс, то не по прерыванию, а лишь по CALL C81B делается то же самое, - заполняется байт событий. Кстати, из сигналов контактного джойстика тоже можно получать сигнал на запрос прерывания.

Использование прерываний позволяет многоканальную музыку даже без использования ВИ53 или AY-8912. Идея заключается в том, что для каждого из трёх каналов вместо меандров выводятся лишь короткие импульсы. При этом три канала друг другу не мешают. Тона чётко слышны в сигнале, но громкость сигнала падает в десятки раз. Процессор при этом считает только время между фронтами нот, а возможности отсчитывать время темпа уже не остаётся (это конечно возможно, но резко усложняет программирование). А прерывания позволяют отсчитывать длительность нот аппаратно, даже не тратя ресурс процессора.

Ещё одним интересным применением прерываний является эмуляция на Специалисте компьютера РК86. К сожалению, Специалист подходит для этого меньше, чем ОРИОН, т.к у него ниже скорость, а главное несовместимая клавиатура. Потому на Специалисте можно попытаться сделать эмулятор только для системных программ и некоторых игр, что не лезут в матрицу клавиатуры напрямую через ППА $8000. Но такие программы, как текстов редактор МИКРОН-2, бейсик и программы на бейсике с выводом псевдографики, нортон и диск-доктор для RK-DOS и т.п. несложно визуализировать на прерываниях.

Как раз для этого полезны прерывания не через адрес $0038, а через адрес $CDCD, т.к многие программы РК работают с адреса 0. Прерывания при эмуляции используются только для визуализации экрана. Если прерывания вызываются с частотой 50 ГЦ, но нетрудно, примерно через каждые 15 вызовов обработчика прерываний запускать программу визуализации. Которая отображает на экране Специалиста содержимое экрана РК86. Объём ПО, что требуется при этом укладывается всего в несколько сотен байт. Т.к вывод символов в графический экран слишком медленен, то выполняется сравнение экрана РК и текстовой копией экрана Специалиста и лишь при несовпадении байтов выполняется вывод символа в экран Специалиста. Скорости Специалиста в 2.25 МГЦ может хватить, хотя и на пределе (учитывая, что в РК эффективный такт: ~1.3 МГЦ).

Тогда можно к оригиналу программы РК86 подключить заплатку, которая будет включать прерывания и обслуживать их подпрограммой визуализации. Тем самым игры от РК86 с примой записью в экранное ОЗУ РК будут видны на Специалисте. Единственное, что для некоторых игр придётся сделать, - это найти и откорректировать подпрограммы прямого опроса клавиш через ППА $8000.

Даже при процессоре Z80 в Специалисте для подобной эмуляции игр ZX-Spectrum у Специалиста слишком мало ОЗУ. Не меняя архитектуру Специалиста возможно можно сделать эмулятор для прогона только ZX-игр для ZX-16K. Такой вариант ZX-Spectrum выпускался в начальные годы Спектрума и под 16 кб есть игры. Их мало, но есть.
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия

Вернуться к началу Перейти вниз

Аппаратные прерывания в Специалисте Empty Тузик жив и будет жить вечно !

Сообщение  barsik Вт Дек 03 2019, 14:15

2
Admin, никто Тузика не забивал, он жив-здоров и никаких проблем с ним я не испытывал в течении последних почти 3-х лет.

Может у Вас вирус, и с вашего компьютера идёт атака, тогда сайты блокируют. Также может быть ваш провайдер дал вам компроментированный IP-адрес, - IP-адреса провайдеры периодически меняют (возможно с вашего текущего IP-адреса ранее были совершены акты вандализма, спам/DDOS-атаки, компьютерное мошенничество или распространение вирусов). А может в вашем регионе (или у вашего провайдера) какие-то сайты под запретом, в моём городе с доступом туда всё в порядке.

Вот смотрите, кладу. На что ушло 3 секунды (да и то это лишь на копирование ссылки):

Аппаратные прерывания в Специалисте INT_50_HzvSpec.1575308214


PS. А может Вы хотите грузить неразрешённый тип файла или превышаете лимит на размер файла. BMP нельзя грузить, только JPG, PNG и другие малоёмкие форматы.
barsik
barsik
Ветеран

Сообщения : 1032
Дата регистрации : 2016-11-10
Откуда : Россия

Вернуться к началу Перейти вниз

Аппаратные прерывания в Специалисте Empty Re: Аппаратные прерывания в Специалисте

Сообщение  Viktor2312 Вт Дек 03 2019, 17:31

3
Ничего из перечисленного вами у меня нет, ни вирусов в моей сети, ни .bmp я не пытался грузить, а вот провайдер да, шалит Мегафон IDS походу устанавливает, ну или какую ещё другую дичь.

Сейчас попробовал снова, результат тот же, да и IP сменил, он у меня динамический.

Viktor2312
RIP

Сообщения : 15492
Дата регистрации : 2012-08-10
Возраст : 45
Откуда : Пятигорск

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения