С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
хорошо. есть такое предложение: внедрить в схему ОРИОН-СЕРВИСа порт #FF (получится такое?) и смикшировать оба выхода (OUT FFH + INTE) в один звуковой канал.
barsik, Вы сможете это сделать, нарисовать эту доработку так, чтобы всё понятно было?
просто я, например, не знаю, что и как там внедрять.
Чтобы получить звук по OUT FF надо иметь порт FF. Для это нужен дешифратор ИД7 из схемы Z80CARD-II или логика для дешифрации адреса FFxx. Часть дешифрации уже делает сигнал 112 (/F800), так что с его использованием остаётся только определить что 3 бита D10, D9, D8 равны 1. Подав на четырёх входовый ЛА1 (ЛА6) эти 3 адреса и инверсный сигнал 112 (D8/11) получаем искомый чип селект на адрес FF00. Объединив этот сигнал с выхода ЛА1 и /IORQ на ЛЛ1 или ЛЕ1 получим строб для входа C D-триггера.
Звук OUT FF это триггерный звук. По каждому стробу в порт FF состояние D-триггера меняется на обратное. Это сокращает объём программы вывода звука вдвое. Этот звук был заимствован из Apple-II.
Ставить столько деталей, когда следует наоборот сократить платку Z80, нежелательно. Поэтому можно попробовать использовать выдвинутую ранее идею использовать строб порта FB00 в качестве строба порта FF00, используя неполную дешифрацию портов в схеме ОРИОНА. Если я правильно разобрался в схеме (а я естественно, могу ошибаться), то при обращении по OUT FF мы попадаем в порт STA FB00. Это надо проверить на реале. Если по OUT FF на выходе D27/12 есть импульсы, то этот строб STA FB00 можно подавать на вход C триггера и он будет выдавать звук по OUT FF.
Если же это не работает, то надо ставить дешифратор ИД7 или вышеописанную ЛА1 формирующую чип-селект FF00 для его обьединения c /IORQ (при желании можно объединить и с /WR, хотя это и не важно, т.к порта FF на ввод нет).
Если триггера нет, то хоть какой-то звук по OUT FF слышно, если просто без триггера подать выход строба (в Z80CARD-II это выход ИД7) на динамик. А если поставить последовательный диод и ёмкость на +5В, то громкость возрастает (при стробе ёмкость быстро заряжается нулём через диод и после пропадания иголки строба сигнал 0 сохраняется на емкости). Понятно, что это не чистый тон, а хрип, но хоть что-то слышно.
Если вот этот код (это подпрограмма F83F в ПЗУ для Z80) даёт звук при подключении триггера на выход STA FB00 (D27/12), то значит порт FB в ОРИОНЕ склеен с портом FF и эта идея для вывода звука работает.
- - - Добавлено - - -Код:. CBEEP EQU 0F3E7H ; константа BEEP XBEEP: LD C,60 ; 15 BYTES BP1: OUT (0FFH),A LD A,(CBEEP) BP2: NOP DEC A JR NZ,BP2 DEC C JR NZ,BP1 RET
Резистор жалко тратить. 155-тая читает единицу от висящих входов, а 1533 допускает подключение входов на +5В. А те, кто поставит 555-тую ТМ2, пусть пропадают...Сообщение от Stampmaker
Последний раз редактировалось barsik; 12.05.2017 в 13:24.
выводы 1 и 4 лучше подтянуть к питанию через резистор?
add: резистор подтяжки поставил
теперь осталось только собрать![]()
Последний раз редактировалось Stampmaker; 11.05.2017 в 22:07.
Для проверки слипаемости портов FB00 и FF00 не надо ничего собирать. Для этого Z80 не нужен. Достаточно на обычном ОРИОНЕ с КР580 "на соплях" подключить D-триггер к выходу D27/12 и запустить в бесконечном цикле приведённую подпрограмму вывода звука.Сообщение от Stampmaker
Сообщите пожалуйста, результаты, такого теста звука OUT FF. Триггер можно даже не подключать, достаточно подключить динамик прямо на выход STA FB00 (D27/12). Если использовать пьезо излучатель, то даже буфер не нужен. Без триггера чистого тона, как при меандре не будет, но понять, что звук идёт можно - пьезоизлучатель будет хрипеть от иголок стробов.
Так как порт STA FB00 тогда занят для звука, то управлять включением большого ПЗУ в окне 0...3FFF придётся иначе. Т.к других портов больше нет, то придётся объединять управление ПЗУ с управлением ОЗУ, т.е с портом F9. Это, увы, намного менее удобно и создаёт проблемы, но куда деваться, если портов больше нет.
Бит D7 в порту F9 будет включать большое ПЗУ в окне 0...3FFF. 16 банок по 64К, т.е 1 мб надеюсь ОРИОНУ хватит, хотя бы на первое время. Тогда биты D4, D5, D6 будут задавать номер 16-ти килобайтного куска ПЗУ.
Некоторая сложность возникает при вызове подпрограмм F836/39 из ПЗУ включённого портом F9, т.к эти п/п-ммы всегда возвращаются по RET выдав в порт F9 байт 0. Таким образом напрямую вызывать подпрограммы F836/39 из большого ПЗУ в адресах 0...3FFF нельзя, т.к при возврате ПЗУ будет отключено. Выходом является, давно напрашивающаяся модернизация подпрограмм F836/39, заключающаяся в том, что они будут теперь делать возврат не в банку 0, а ту банку номер которой хранится в ячейке F3F9. Если в этой ячейке 0, то совместимость сохраняется. Благодаря такой модернизации ПЗУ F800, можно будет вызывать п/п-ммы F836/39 и из большого ПЗУ в адресах 0...3FFF. Впрочем и без модернизации ПЗУ F800 можно выкрутиться, вызывая п/п-раммы F836/39 всегда только из ОЗУ банки 0.
Надо решить как будет управляться большое ПЗУ. Тут есть 2 варианта. Большое ПЗУ работает только в банке 0, и второй вариант, когда большое ПЗУ закрывает область 0...3FFF во всех банках. Каждый вариант имеет свои плюсы и минусы.
Можно сделать так, чтобы большое ПЗУ включалось только в банке 0, отчего объединение управления ОЗУ и ПЗУ в одном порту не повредит. Но тогда программой в ROM-BIOS нельзя будет напрямую закрашивать плоскость цвета, а потребуется по-старинке закидывать п/п-раммы раскраски в некоммутируемую область выше F000. А также от этого утратится логическая совместимость с архитектурой Z80CARD-II, в которой включённое окно 16К не коммутируется портом F9.
Включение большого ПЗУ не только при текущей банке 0, но и во всех банках, даёт больше гибкости для ДОС в других банках ОЗУ, например позволяет подпрограммой ПЗУ читать с дискеты в дисковый буфер ДОС в банке 1 (а не только в банке 0) и даёт возможность из ПЗУ напрямую работать с плоскостью цвета. При таком включении ПЗУ также чуть меньший расход деталей.
Ввиду вышеописанного неудобства такого объёдинения управления ОЗУ и ПЗУ в одном порту, рассмотрим, как можно ввести реальный порт FF для звука, не растрачивая на это порт FB00.
Убрать "слипаемость" портов FB00 и FF00, как я писал ранее, очень просто. Достаточно двух диодов и резистора на ноге D27/15 (по схеме монтажное И). Резистор 150 ом, привязка входа на землю. А через 2 диода подаётся старый сигнал 112 (/F800) и адрес A10. На входе будет 0, только когда оба сигнала нулевые. Тогда при адресации выше FC00 (верхний) дешифратор D27 будет деактивирован сигналом A10=1. Такая простая переделка даёт полноценную дешифрацию портов вывода F800...FB00 и даёт возможность ввести порт FC00...FF00.
После такой переделки с двумя диодами по адресам FC00...FF00 ничего не стоИт. Остаётся получить чип селект на эти адреса. Для этого достаточно инверсный сигнал 112 (т.е D8/11) и адрес A10 объединить по 'И' на ЛА3. Это даёт выборку FC00...FFFF (/FC00). Чтобы был строб при OUT в эти адреса достаточно объединить на ЛЛ1 эту выборку /FC00 и /IORQ. Можно, используя 2 вентиля из ЛА3, проинвертировать /IORQ и чип селект /FC00 и объединить на 4-ом ЛА3. На выходе получится единичный строб по команде OUT FF. Т.е весь расход деталей на звук OUT FF составит ЛА3, ТМ2 и два диода..
Последний раз редактировалось barsik; 12.05.2017 в 11:31.
проверил, порты FB и FF слипаются. программа выдает меандр длительностью 1,4мс.
для КР580 программа получилась такая:
Код:CBEEP EQU 0F3E7H ; константа BEEP XBEEP: MVI C, 60 ; 15 BYTES BP1: OUT 0FFH LXI H, CBEEP MOV A, M BP2: NOP DCR A JNZ BP2 DCR C JNZ BP1 JMP XBEEP
Что Вы понимаете под длительностью? Полагаю, что это период (а не длительность импульсов)? Период в 1.4 МСЕК соответствует частоте 714 герц. Если бы Вы не применили загрузку через HL, а сразу LDA CBEEP, то получилось бы 800 герц, как и положено.Сообщение от Stampmaker
Если вводить дешифратор ИД7, то на основной плате надо делать доработку по устранению слипаемости портов, как я описал в своём предыдущем посте.
Может быть у Вас есть возможность и желание проверить и схему устранения слипаемости портов (только лучше вместо диодов применить вентиль ЛЛ1)?
Вообще-то не заметно, что много клонов 8-ми разрядок делают сразу для VGA (видел только РК86 с выходом на VGA).Сообщение от Denn
Входной клок видеогенератора с учётом соотношений частот строк и кадров придётся увеличить на (31.5:15.625)*(70:50)= 2.823 раза, т.е вместо 10 МГЦ кварц будет 28 МГЦ. Клок CPU и частота ОЗУ будет 28:4= 7 МГЦ, что даже Z80B потянут. Период доступа к ОЗУ будет 1:7= ~140 НСЕК, так что 100 наносекундные древние ОЗУ потянут.
Но поиск остальных деталей будет затруднителен. Где брать такие скоростные ИМС работающие на 28 МГЦ? Да и настройка будет не очень лёгкой.
Поставить статику в области вне экрана несложно. А чтобы ставить в экран придётся менять КП12 на КП11. И выигрыш по деталям будет только на ОЗУ. Поэтому применение SIMM (30 или 72 ноги) ничуть не хуже статики, но дешевле и проще.
Если не ставить целью VGA, то гораздо проще сделать клон ОРИОНА с таким же быстродействием в 6.5...7.1 МГЦ, используя базовую схемотехнику, ОЗУ на такте 5 МГЦ, Z80B с WAIT на такте 10 МГЦ и две планки SIMM-30 по 1 мб (что в сумме 2 мб). SIMM рассчитаны на такую скорость, поэтому перегрева ОЗУ на такте 5 МГЦ не будет (как происходит с РУ5-тыми), отчего надёжность будет высокой. А для достижения скорости, достаточно поставить в банки 0 и 1 в адресах 0...7FFF статику w24257 без WAIT, так что программы в младших адресах будут прогоняться на эффективной скорости в 10 МГЦ, тем самым делая такую версию ОРИОНА более выгодной, чем вариант для VGA.
А вместо подключения к VGA следует использовать подключение к целой IBM PC с установленной TV-картой, имеющей внешний вход VIDEO или китайский VGA-конвертор.
Последний раз редактировалось barsik; 12.05.2017 в 20:47.
Последний раз редактировалось Stampmaker; 12.05.2017 в 22:03.
100 нс чипы тянут только до 5 МГц... Для 7 МГц надо 70 нс (теоретический предел), а лучше 60 нс, но они (в DIP-е) уж совсем дефицит...
Указанное на чипах время - это время активного состояния сигнала выборки строк tRAS. Полный период произвольного доступа состоит из суммы этого времени и времени восстановления tRAS_Precharge, которое примерно равно этому же значению (иногда чуть меньше, указывается в шитах).
Последний раз редактировалось LeoN65816; 13.05.2017 в 12:15.
Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)