User Tag List

Результаты опроса: Префиксная адресация для РЛК

Голосовавшие
12. Вы ещё не участвовали в этом опросе
  • Любопытно глянуть на практике

    2 16.67%
  • Любопытно, не более

    3 25.00%
  • Опоздало лет на 40

    4 33.33%
  • Самая безрассудная доработка

    4 33.33%
Опрос с выбором нескольких вариантов ответа.
Страница 4 из 4 ПерваяПервая 1234
Показано с 31 по 39 из 39

Тема: РАДИО-86РМ

  1. #31

    Регистрация
    13.02.2022
    Адрес
    г. Уфа
    Сообщений
    706
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    82 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Есть такое.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от max232cpe Посмотреть сообщение
    Проблема в том что упрощенных пк на 8086 нет
    А как-же это: Радио-86РК на 8088 (или 8086) ?

    Этот пользователь поблагодарил b2m за это полезное сообщение:

    max232cpe(08.03.2024)

  4. #33

    Регистрация
    13.02.2022
    Адрес
    г. Уфа
    Сообщений
    706
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    82 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Не натыкался на это

  5. #34

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    182
    Спасибо Благодарностей отдано 
    57
    Спасибо Благодарностей получено 
    85
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Post Монитор от 2024.03.08

    Итак, основная работа над изменением Монитора практически завершена.

    Подпрограммы вывода на экран
    1. CALL F809 выводит символ на экран из регистра C
    2. CALL F80F выводит символ на экран из регистра A (как в «Орионе»)
    3. CALL F815 выводит байт на экран, сохраняя все регистры
    4. CALL F818 выводит текст на экран с утерей регистра A (завершение строки по 00 или >128)


    Код подпрограммы вывода символа на экран полностью переписан, поддерживает пользовательский буфер и оконность.
    Рабочие ячейки:
    Код:
    CONADR: EQU     07600H  ; Адрес символа под курсором в памяти;
    CONPOS: EQU     07602H  ; Координаты позиции X,Y курсора на экране;
    CON@PX: EQU     07602H  ; Консольная позиция курсора по X;
    CON@PY: EQU     07603H  ; Консольная позиция курсора по Y;
    CONSTA: EQU     07604H  ; Консольный статус в Escape-последовательности;
    CONLEN: EQU     0760FH  ; Ширина одного знакоряда в настройках ИМС ВГ75 (стандарт: 78);
    CONORG: EQU     07610H  ; Консольный организатор окна с позицией X1,Y1 относительно начала буфера;
    CON@XO: EQU     07610H  ; Консольная абсолютная позиция окна по горизонтали (стандарт: 8);
    CON@YO: EQU     07611H  ; Консольная абсолютная позиция окна по вертикали (стандарт: 3);
    CONBOX: EQU     07612H  ; Относительный размер бокса ограничителя окна на экране (стандарт: 63x24);
    CON@XS: EQU     07612H  ; Относительный размер окна по горизонтали с указанием крайнего правого столбца (стандарт: 63);
    CON@YS: EQU     07613H  ; Относительный размер окна по вертикали с указанием крайней нижней строки (стандарт: 24)
    Тем самым, подпрограмма Монитора уже поддерживает оконность (от 1x1 до 80x64) и может полноценно работать с буфером в любом месте ОЗУ. Исключения составляют только коды:
    • 19 - Перемещает позицию курсора лишь до верхней основной строки окна, затем - прокручивает область вниз;
    • 1B - Помимо установки курсора в нужную позицию по Escape-команде «Y», все остальные комбинации перенаправляет в драйвер пользователя, вызываемый через ловушку;
    • 1F/0C - Перезапускают ВТ57/ВГ75 в стандартный режим 78x30 в буфере 76D0…7FF3 с окном 64x25 в позиции 8,3;
    • 1F - Очищает буфер 76D0…7FFF и перезапускает ВТ57/ВГ75 на стандартный режим


    Подпрограмма управления режимом экрана
    Для переключения режима ВТ57 и ВГ75 достаточно в HL загрузить адрес на таблицу с описанием режима и вызвать подпрограмму F83C.
    Естественно, служебные ячейки с параметрами окна нужно корректировать непосредственно.

    Ниже - сам образ ПЗУ Монитора и подгружаемый файл с режимом 80x64.

    После запуска программы с переходом по G0 режим экрана переключается и управление возвращается Монитору, что позволяет использовать все директивы в установленном режиме: Даже директивы «I» и «O»!
    Выход из режима, как выше и говорилось, клавиша «Стр» или «Home»…

    P.S.: Пришлось пожертвовать директивами «X» и «C»… :roll:
    Для запуска игры «Volcano» следует сначала обнулить ячейки 03EA и 03EE…
    Вложения Вложения
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

  6. #35

    Регистрация
    13.02.2022
    Адрес
    г. Уфа
    Сообщений
    706
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    82 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  7. #36

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    182
    Спасибо Благодарностей отдано 
    57
    Спасибо Благодарностей получено 
    85
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от max232cpe Посмотреть сообщение
    Не совсем уместный вопрос...
    Сколько страниц памяти доступно для рк с минимальными изменениями?
    Минимальные изменения, предлагаемые здесь?
    Код:
    ПАМЯТЬ ПОД БСВВ / ДОС (PC>DFFF)            ПАМЯТЬ ПОЛЬЗОВАТЕЛЯ (PC<E000)
    
    FFFF +-------------------------+        FFFF +-------------------------+
         |   ПЗУ "МОНИТОР" / ПДП   |             |                         |
    F800 +-------------------------+             |          ОЗУ            |
         | ПЗУ #2 / РЕГИСТРЫ КНГМД |             |      ПОЛЬЗОВАТЕЛЯ       |
    F000 +-------------------------+             |     (ТОЛЬКО ДАННЫЕ)     |
         |        ПЗУ "ДОС"        |             |                         |
    E000 +-------------------------+        E000 +-------------------------+
         |           ВГ75          |             |                         |
    C000 +-------------------------+             |          ОЗУ            |
         |         D14 ВВ55        |             |      ПОЛЬЗОВАТЕЛЯ       |
    A000 +-------------------------+             |  (ПРОГРАММЫ И ДАННЫЕ)   |
         |         D20 ВВ55        |             |                         |
    8000 +-------------------------+        8000 +-------------------------+
         |       БУФЕР ЭКРАНА      |             |       БУФЕР ЭКРАНА      |
    76D0 +-------------------------+        76D0 +-------------------------+
         | РАБОЧИЕ ЯЧЕЙКИ МОНИТОРА |             | РАБОЧИЕ ЯЧЕЙКИ МОНИТОРА |
    7600 +-------------------------+        7600 +-------------------------+
         |                         |             |                         |
         |          ОЗУ            |             |          ОЗУ            |
         |                         |             |                         |
         |      ПОЛЬЗОВАТЕЛЯ       |             |      ПОЛЬЗОВАТЕЛЯ       |
         |                         |             |                         |
         |  (ПРОГРАММЫ И ДАННЫЕ)   |             |  (ПРОГРАММЫ И ДАННЫЕ)   |
         |                         |             |                         |
    0000 +-------------------------+        0000 +-------------------------+
    Конкретно данный вариант Монитора разрабатывается под одну страницу объёмом в 65536 байтов (пользователь имеет доступ ко всем 65536 ячейкам).
    То есть, код пользователя видит только одно сплошное ОЗУ и к УВВ прямого доступа не имеет. Только через вызовы подпрограмм Монитора F836/F839/F83C приложение может читать УВВ, писать в УВВ и менять режим ВТ57/ВГ75.

    С другой стороны, сам код Монитора не видит верхние 32 Кб непосредственно, но директивы D/F/L/S/T через трюковые механизмы получают доступ ко всем 64 Кб.
    (Директивы I и O пока ещё не переработал: Они не видят верхние 32 Кб ОЗУ. То есть «OF800,FFFF» выгрузит содержимое ПЗУ Монитора, а не ОЗУ…)
    Последний раз редактировалось Alikberov; 09.03.2024 в 08:50.
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

  8. #37

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,927
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alikberov Посмотреть сообщение
    Получается, что верхний ИД7 - системный на плате РЛК активируется только на командах, работающих по адресам выше 8000 и программа Монитор работает только с ним.
    Область 8000-DFFF заявлена как "программы и данные", однако триггер устанавливается по значению только одного бита А15. Какой будет использован дешифратор, если программа будет выполняться в данной области?
    Может необходимо добавить еще элемент И для А13-А15?

    - - - Добавлено - - -

    Может второй дешифратор и не нужен вовсе?

  9. #38

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    182
    Спасибо Благодарностей отдано 
    57
    Спасибо Благодарностей получено 
    85
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Область 8000-DFFF заявлена как "программы и данные", однако триггер устанавливается по значению только одного бита А15. Какой будет использован дешифратор, если программа будет выполняться в данной области?
    Может необходимо добавить еще элемент И для А13-А15?
    В рамках доработки rk86.ru я дополнил скрипт с проверкой на «cpu.pc < 0x8000»…
    Однако, Виктор Пыхонин помог в плане сборки Emu80 с поддержкой переключений и в рамках «ночной сборки Emu80» конфигурация позволяет использовать память 0000…DFFF полностью под код также, как и "заявленно".
    (В рамках rk86.ru я специально себя ограничил.)

    А так, элемент К155ЛИ3 может помочь получить исполнение кода до самых DFFF.
    Цитата Сообщение от b2m Посмотреть сообщение
    Может второй дешифратор и не нужен вовсе?
    Второй ИД7 упоминается лишь формально, так как с заменой РУ6 на РУ5 выборка ОЗУ должна производиться минуя ИД7, так как на ТМ2 перекладывается эта функция
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

  10. #39

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    182
    Спасибо Благодарностей отдано 
    57
    Спасибо Благодарностей получено 
    85
    Поблагодарили
    40 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb Набросок схему узла расширения до псевдопрефиксов

    Как известно, микропроцессор i8086/ВМ86 "эффективным адресом" способен адресовать лишь до 64 Кб памяти, так как в качестве указателей могут использоваться 16-битные регистры BX/BP/SP/SI/DI. Этим он мало чем отличается от i8080/z80/ВМ80.
    Главное его отличие - наличие сегментных регистров, которые тоже 16-разрядные, но при адресации их биты сдвигаются влево на четыре разряда и складываются с регистром-указателем, так как инженеры Intel посчитали, что суммарно 1 Мб - хватит всем!
    (Хотя могли бы сразу выделить под сегмент гранулярность не 16 байтов, а все 256, что позволило бы с самого начала иметь перспективу масштабирования системы до 16 Мб!)

    Но, это всё - лирика!

    Сегменты у ВМ80
    Конечно, не совсем сегменты в понимании ВМ86, но их подобие.

    Идея очень простая. Вместо того, чтобы разбивать адресацию в 64 Кб на отдельные мелкие параграфы/окна по 4 Кб или 8 Кб, переключая в них страницы расширенной памяти, а в случае с Орионом-128 - не обойтись без вызова подпрограмм Монитора, так как страницы переключаются всеми 64 Кб, мною давно рассматривался вопрос имитации сегментных префиксов в ВМ80 как у ВМ86 на период исполнения только одной инструкции.

    Вглядываясь в систему команд ВМ80, можно легко обнаружить семь документированных странных инструкций, который официально могли быть и недокументированными.
    • MOV B,B - код 40h
    • MOV C,C - код 49h
    • MOV D,D - код 52h
    • MOV E,E - код 5Bh
    • MOV H,H - код 64h
    • MOV L,L - код 6Dh
    • MOV A,A - код 7Fh
    Так как нормальные программы в нормальных условиях не могут и не будут изобиловать этими инструкциями, так как они работают как NOP'ы на 5 тактов, что нужно лишь в участках кода с жёсткой привязке к машинному времени, то их можно использовать за префиксы подмены сегмента памяти. Аналогично, как в ВМ86 префиксы «CS:»/«DS:»/«ES:»/«SS:» и «FS:»/«GS:» в более новых моделях процессоров x86.

    Вот, примерно такая аналогия:
    • «MOV A,A»+«LDAX B» => «LDAX AS:B»
    • «MOV B,B»+«LDAX B» => «LDAX BS:B»
    • «MOV C,C»+«LDAX B» => «LDAX CS:B»
    • «MOV D,D»+«LDAX B» => «LDAX DS:B»
    • «MOV E,E»+«LDAX B» => «LDAX ES:B»
    • «MOV H,H»+«LDAX B» => «LDAX HS:B»
    • «MOV L,L»+«LDAX B» => «LDAX LS:B»


    В этом ключе обобщённая запись всех доступных под префиксами расширяемых инструкций выглядит так:
    • «MOV x,x»+«LDAX YZ» => «LDAX xS:YZ»
    • «MOV x,x»+«STAX YZ» => «STAX xS:YZ»
    • «MOV x,x»+«MOV M,R» => «MOV xS:M,R»
    • «MOV x,x»+«MOV R,M» => «MOV R,xS:M»
    • «MOV x,x»+«ADD M» => «ADD xS:M»
    • «MOV x,x»+«ADC M» => «ADC xS:M»
    • «MOV x,x»+«SUB M» => «SUB xS:M»
    • «MOV x,x»+«SBB M» => «SBB xS:M»
    • «MOV x,x»+«ANA M» => «ANA xS:M»
    • «MOV x,x»+«XRA M» => «XRA xS:M»
    • «MOV x,x»+«ORA M» => «ORA xS:M»
    • «MOV x,x»+«CMP M» => «CMP xS:M»
    • «MOV x,x»+«R-CON» => «R-CON xS:»
    • «MOV x,x»+«RET» => «RET xS:»
    • «MOV x,x»+«PUSH YZ» => «PUSH xS:YZ»
    • «MOV x,x»+«POP YZ» => «POP xS:YZ»
    • «MOV x,x»+«XTHL» => «XTHL xS:SP»
    Если хотите получить более-менее понятное представление.
    • Префикс «MOV A,A» - код 7Fh, биты адреса A18_A17_A16 - «0_0_1»
    • Префикс «MOV H,H» - код 64h, биты адреса A18_A17_A16 - «0_1_0»
    • Префикс «MOV L,L» - код 6Ch, биты адреса A18_A17_A16 - «0_1_1»
    • Префикс «MOV D,D» - код 52h, биты адреса A18_A17_A16 - «1_0_0»
    • Префикс «MOV E,E» - код 5Bh, биты адреса A18_A17_A16 - «1_0_1»
    • Префикс «MOV B,B» - код 40h, биты адреса A18_A17_A16 - «1_1_0»
    • Префикс «MOV C,C» - код 49h, биты адреса A18_A17_A16 - «1_1_1»


    Схематически просто следует выявить в Цикле M1 на Шине Данных коды 40h/49h/52h/5Bh/64h/6Dh/7Fh и сохранить биты D0-D2 в промежуточном регистре.
    Сам процессор прочтёт этот код и выполнит холостую MOV-пересылку, затратив 5 тактов. Но схема на следующем цикле уже сможет подставить другую страницу памяти, преобразуя биты D0-D2 предыдущей MOV-инструкции в дополнительные разряды Шины Адреса - A16-A18.

    Так как необходимо перехватывать коды команд с симметричными битами (200₈/211₈/222₈/233₈/244₈/255₈/277₈), можно использовать схему сравнения на К155ЛП5, хотя проще обойтись К155СП1.

    На схеме:
    • ИР27 просто сохраняет слово состояние процессора о текущем Машинном Цикле
    • ИР1 левый служит для сохранения младших битов D0-D2 инструкции и флага-признака, что СП1 обнаружил MOV-префикс
    • ИР1 правый хранит статус предыдущей команды, чтобы влияние обнаруженного MOV-префикса передавалось следующей команде, а не срабатывало на самом же префиксе
    • промежуточные вентили НЕ между регистрами необходимы для дополнения кода с коррекцией до невозможного префикса «MOV M,M», что активен всегда по умолчанию
    • ЛИ1 необходима для подавления любого паразитного кода, если код предыдущей команды не был префиксом
    • ЛЕ4 управляет вентилями ЛИ1 и подавляет прохождение любого кода во время выборки команды, "начального пуска" и при отсутствии префикса
    • ИД7 дополнительный - лишь для примера для дешифрации именованных сигналов, соответствующих каждый своему префиксу


    P.S.: Схема не является принципиальной, так как не учитывается нагрузочная способность шим процессора с необходимостью буферного усиления, а всего лишь отображает базовый логический принцип к реализации поставленной задачи как вариант.
    P.P.S.: Схема не является пособием к расширению ОЗУ до 512 Кб, а всего лишь иллюстрирует принцип вырабатывания дополнительных битов адреса A16, A17 и A18 для адресации пространства до 512 Кб, что может служить для расширения ОЗУ в частности, а также и для подключения внешних устройств с полной непосредственной адресацией (ROM-Диск, PC-Карточка CGA, PC-Карточка EGA и т.п.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	RADIO-86RK_512Kb.jpg 
Просмотров:	21 
Размер:	21.6 Кб 
ID:	81311  
    Вложения Вложения
    Последний раз редактировалось Alikberov; 25.09.2024 в 00:29. Причина: Обновил эскиз схемы
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

Страница 4 из 4 ПерваяПервая 1234

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Радио-86РК по журналам радио (техническая часть)
    от Daniil Chislov 86 в разделе Радио-86РК
    Ответов: 61
    Последнее: 13.09.2019, 11:37
  2. Радио-86РК: По страницам журнала "Радио"
    от Viktor2312 в разделе Радио-86РК
    Ответов: 79
    Последнее: 13.02.2014, 08:34
  3. Радио-86
    от shapipovo в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 10.05.2012, 02:50

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •