ZX Ferrum #03
27 февраля 2005
  Железо  

Схемы - "Второе 'окно'" - окно верхней памяти по адресам #8000-#C000.

<b>Схемы</b> -
  Решил  поместить  статью  в этот номер. Хотя схема разработана
мной уже давно (то забуду о ней, то текст потеряю). Статья здесь
несколько дополнена и расширена.


                    Второе окно #8000-#bfff.

                                      (с) 2003 Терентьев Дмитрий

  Сперва  о  главном, зачем нужна эта схема? Нужна вот и все, об
остальном позже и подробнее!
  Данная   разработка  позволяет  обращаться  к  верхней  памяти
компьютера  (при  чем любого, где установлена данная разработка)
не  через окно в адресах #c000-#ffff, а в диапазоне #8000-#bfff.
То есть как бы открывается второе окно (не зря названа так стат-
ья).
  Что  это дает? Увеличение быстродействия программ, которые де-
лаю  пересылку  из одной страницы памяти в другую (за счет того,
что  не надо использовать нижнюю память под буфер, то есть уско-
рение  около  двух  раз),  или если нежелательно трогать обычные
порты  расширения  (здесь кстати получается некоторая унификация
стандартов памяти для машин > 128кб , сведение в один порт). Еще
пример,  в  странице #5 по адресам расположен диспетчер, который
открывает нужные страницы памяти и запускает программы.
  Ближе  к телу, вот схема. Состоит она из нескольких блоков.


                ┌──────────────────────────────┐
                │Вариант для 128-го компьютера.│
────────────────┴──────────────────────────────┴────────────────


                   Мультиплексирование окон.
                   ─────────────────────────

                                     ЛА3 или любой инвертор
          KП11                             v
        ┌──────┐                         ┌───┐
      14│ mux  │12                       │ & │
  2D0 ──┤B1│ Q1├── ND0          A15 ───┬─┤   │      ЛА3
      11│  │   │9                      │ │   o──┐  ┌───┐
  2D1 ──┤B2│ Q2├── ND1                 └─┤   │  │  │ & │
       5│  │   │7                        │   │  └──┤   │
  2D2 ──┤B3│ Q3├── ND2                   └───┘     │   o─── #80
       2│  │   │4               A16 ───────────────┤   │
  #80 ──┤B4│ Q4├── NEW#C0                          │   │
      13├──┤   │                                   └───┘
  OD0 ──┤A1│   │    OD0-2 - данные с порта #7FFD
      10│  │   │            с выводов TM9
  OD1 ──┤A2│   │    2D0-2 - данные с порта #78FD
       6│  │   │
  OD2 ──┤A3│   │    линии с порта #7FFD на мультиплексор (КП11)
       3│  │   │    разрезать,
  #C0 ──┤A4│   │    в разрыв вставить мультиплексор KП11
        │  │   │
       1├──┘   │    #C0 - старый сигнал выборки #C000
  #80 ──┤S     │    NEW#C0 - новый сигнал выборки #C000
        │      │    подать на вход мультиплексирования KП11 на
      15│      │    плате
      ┌─┤/E    │    старый сигнал отрезать
      │ │      │
      │ └──────┘    #80 - сигнал выборки второго окна
     ─┴─                  по адресам #8000-#BFFF
     GND



                      Выборка порта #78FD.
                      ────────────────────
         ЛА3
        ┌───┐               ЛЛ1
        │   │   VD1        ┌───┐
  A14 ──┤   │              │   │
        │ & o───┤>├──┬─────┤   │
  A13 ──┤   │        │     │ 1 ├───  #78FD
        │   │        │  ┌──┤   │
        └───┘        │  │  │   │
        ┌───┐        │  │  └───┘
        │   │   VD2  │  │
  A12 ──┤   │        │  │    VD1-VD2 - любые диоды
        │ & o───┤>├──┘  │    в случае глюков заменить
  A11 ──┤   │           │    на элемент ЛЛ1
        │   │           │
        └───┘           │
        ┌───┐           │
        │   │     ┌───┐ │   блокировка порта #7FFD
  A15 ──┤   │     │   │ │   ┌───┐    ┌───┐
        │ 1 ├─────┤   │ │   │   │    │   │
  A10 ──┤   │     │ 1 ├─┴───┤   │  ┌─┤   │
        │   │  ┌──┤   │     │ & o──┤ │ & o──> новый сигнал
        └───┘  │  │   │  ┌──┤   │  └─┤   │    выборки
        ┌───┐  │  └───┘  │  │   │    │   │    порта #7FFD
        │   │  │         │  └───┘    └───┘    подать вместо
  A9  ──┤   │  │         ^                    старого
        │ 1 ├──┘       старый сигнал
  A8  ──┤   │          выборки
        │   │          порта #7FFD
        └───┘


                          Порт #78FD.
                          ───────────


          ТМ8
        ┌──┬──┐
       4│  │  │2
  D0 ───┤D0│Q0├─── 2D0
       5│  │__│6       выход 2D1 инвертируется
  D1 ───┤D1│Q1o─── 2D1 для того чтобы при сбросе
      12│  │  │10      по адресу #8000 устанавливалась
  D2 ───┤D2│Q2├─── 2D2 страница номер 2.
      13│  │  │15
     ───┤D3│Q3├───
       9├──┤  │
#78FD───┤C │  │
       1│  │  │
     ┌──┤R │  │
     │  └──┴──┘
    ─┴─
    GND
────────────────────────────────────────────────────────────────

       ┌────────────────────────────────────────────────┐
       │Вариант для компьютеров с памятью больше 128 кб.│
───────┴────────────────────────────────────────────────┴───────

  В мультиплексоре окон добавить еще одну микросхему КП11.

          KП11
        ┌──────┐
      14│ mux  │12      ND3,ND4,ND5,ND6 соответствуют памяти
  2D3 ──┤D1│ Q1├── ND3  256, 512, 1024, 2048 килобайт.
      11│  │   │9       сигналы OD3-OD6 берутся с соответствую-
  2D4 ──┤D2│ Q2├── ND4  щих портов расширений (#1FFD,#DFFD и тд)
       5│  │   │7
  2D5 ──┤B3│ Q3├── ND5
       2│  │   │4
  2D6 ──┤B4│ Q4├── ND6
      13├──┤   │
  OD3 ──┤A1│   │
      10│  │   │
  OD4 ──┤A2│   │
       6│  │   │
  OD5 ──┤A3│   │
       3│  │   │
  OD5 ──┤A4│   │
        │  │   │
       1├──┘   │
  #80 ──┤S     │
        │      │
      15│      │
      ┌─┤/E    │
      │ │      │
      │ └──────┘
     ─┴─
     GND

  Порт #78FD можно сделать тогда по схеме:

          ИР23
        ┌──────┐
        │ reg  │
   D0 ──┤D0│ Q1├── 2D0    любой инвертор
        │  │   │        ┌──┐
   D1 ──┤D1│ Q2├────────┤  o── 2D1
        │  │   │        └──┘
   D2 ──┤D2│ Q3├── 2D2
        │  │   │
   D3 ──┤D3│ Q4├── 2D3
        │  │   │
   D4 ──┤D4│ Q5├── 2D4
        │  │   │
   D5 ──┤D5│ Q6├── 2D5
        │  │   │
   D6 ──┤D6│ Q7├── 2D6
        │  │   │
   D7 ──┤D7│ Q8├── 2D7
        ├──┘   │
 #78FD──┤CS    │
        │      │
      ┌─┤/E    │
      │ │      │
      │ └──────┘
      │
     ─┴─
     GND

───────────────────────────────────────────────────────────────

  Немного  поясню работу схемы. При попытке высветить по адресам
#8000-#BFFF  страницу номер 2, мултиплексор КП11 перехватит это,
и будет впечатывать по данным адресам страницу с номвром из пор-
та #78FD.


  Программа для проверки:

  ORG #6000 ;<#8000

  LD HL,#8000
  LD DE,#C000
  LD BC,#7FFD
  LD (HL),0
  LD A,#16
  OUT (C),A     ;включаем по адресу #c000 страницу #6
  LD (DE),A
  AND %111      ;преобразовываем
  XOR %010      ;номер страницы всегда надо ксорить по %10
                ;bit1 инверсный
  LD B,#78
  OUT (C),A     ;включаем по адресу #8000 старницу #6
  LD A,(DE)
  CP (HL)
  RET Z    ;все нормально, работает (есть доработка)
  RET      ;не работает (нет доработки)



Другие статьи номера:

От редактора - последние события из жизни издателя газеты.

Глюки - баг-репорты читателей газеты.

Железо - Подключение контроллера IDE (ц) Немо на Пентагоне.

Железо - Ремонт монитора цветного изображения "Электроника 32 ВТЦ 202".

Схемы - "Второе 'окно'" - окно верхней памяти по адресам #8000-#C000.

Аналитика - Проблемы развития Спектрума в 21-м веке! (по мнению железячника)

Схемы - Постоянные перепрограммируемые запоминающие устройства с ультрафиолетовым ститанием (ППЗУФ).

IS-DOS - "Эликон" вернулся? (фирма распротронитель компонентов для спектрума)

Приложение - Программа распаковки PK ZIP архивов в IBM.

Анонс - в следующем номере ждите...

Реклама - бесплатные обьявления и реклама.

Авторы - Адреса редакции.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Software - проигрыватель музыки A&B Player V4.2.
Обмен опытом - прямое программирование General Sound.
Байки из склепа - О лосенке по прозвищу FREE.
Во что играем? - обзор спектрумовских игр недели.
Набат - Конспект: Грани Агни Йоги.

В этот день...   21 ноября