Попробую ответить по порядку.
В Апогее, как и в других клонах Радио, ширина знакоместа 6 точек и старшие биты (7 и 8) в ПЗУ знакогенератора не используются (не выводятся на экран). При использовании в качестве знакогенератора микросхемы ОЗУ эти биты так же не будут задействованы при формировании изображения. Но физически они доступны и в них можно записать нули или единицы. Эту информацию можно использовать как раз для переключения старших адресов (А11 и А12) микросхемы ОЗУ.
Один из вариантов такой. В первой таблице у меня четыре пробела (коды $00, $10, $20 и $7F), но старшие биты во всех рядах этих пробелов равны 00b, 01b, 10b и 11b соответственно. При отображении такого пробела происходит "переключение" на другой набор символов путём изменения старших адресов знакогенератора. Так же все остальные символы в первой таблице и в трёх дополнительных содержат эти же значения (00b, 01b, 10b и 11b соответственно) для предотвращения отключения отображаемого набора раньше времени. В приведённом примере сначала отображается половина строки из первого набора, затем в середине строки стоит "пробел" с кодом $10 и поэтому дальше отображается вторая половина строки из второго. С картинками из Диззи тоже самое - в начале первых 4-х строк стоит пробел с кодом $30, а в начале последних - с кодом $7F. Эти картинки и есть содержимое третьего и четвертого наборов.
Логика работы JK-триггера следующая. По положительному фронту С(Clock) если (JK==00) то состояние Q не меняется, (JK==10) Q = 1, (JK==01) Q = 0, (JK==11) Q = !Q.
В данном случае сигналы С1 и С2 контроллера клавиатуры подключены к J и K триггера, а сигнал INTE работает в качестве Clock. При этом сами сигналы С1 и С2 в оригинальной схеме никак не задействованы и если их не трогать, то по INTE мы включим/выключим альтернативный набор "родного" знакогенератора (на Апогее) - то есть никак не повредим программам использующим его. Программы которые будут работать с новым знакогенератором могут самостоятельно выставлять значения для С1 и С2 и выполнять серию команд EI DI.
Сигнал R(Reset) JK-триггера подключён к RES процессора, что обеспечивает его начальную установку при включении или по сбросу. При Q=0 на мультиплексоре адреса активны адресные линии процессора. При попытке записать что-нибудь в область ПЗУ1 ($F800-$FFFF) будет происходить запись в знакогенератор. В режиме записи старшие биты адреса (А11 и А12) выставляются сигналами С1 и С2 контроллера клавиатуры (таким образом у них здесь двойная функция).
Запись в D-триггер (74HCT74 в моём случае) происходит по инвертированному сигналу CRT CLK (а не CRT VSP). Таким образом в триггер попадают значения уже для следующего символа.
CRT VSP (который надо не забыть отрезать от ROM3 /CS) выполняет тут свою изначальную функцию - отключает знакогенератор во время гашения изображения.
Все микросхемы я применял только из имеющихся в наличие дома. Именно поэтому JK-триггер отвечает за переключение мультиплексора. В свою очередь мультиплексор "собран" на микросхемах буфера из-за полного отсутствия у меня мультиплексоров. И с двунаправленными та же история. Аналогичную по функционалу схему можно собрать и на других элементах.
244-й элемент я отобразил так из-за удобства - так как он выполняет здесь функцию мультиплексора и так нагляднее видно что на входах и выходах.
Честно говоря, рисую схему третий раз в жизни и с ГОСТами не знаком. Делал по подобию схемы Апогея что идёт в комплекте с компьютером. Тоже подумал что с названиями было бы намного легче "ползать глазами" по схеме (и в оригинальной уж точно). Для меня главное было проверить на практике работоспособность "теории". Попробую исправить и выложу ещё раз.





Ответить с цитированием