Капля припоя - Дополнительные ОЗУ: кэш.

Deja Vu #07
AY-Track: MITCHELL/MITCHELL HOUSE/HWC     
__________________________________________


(C) Valeriy Kovalev
──────────────────────────────────────────
==========================================


              Привет, All !

   Ко мне тут PRUSAK принес свою новую ап-
паратную примочку,она стоит у него на Пен-
тагоне 512, и пока что глюков не было...

==========================================


          ┌════════════════════┐
Дополнительное ОЗУ 
          └════════════════════┘


   Суть сего девайса  состоит  в  том, что
вместо ПЗУшных BASIC 128 и TR DOS подстав-
ляется ОЗУ типа 62256 (32K), которое  эму-
лирует ПЗУ. Таким образом,вместо надоевшей
менюшки 128 Бейсика можно поставить собст-
венный коммандер или что-либо еще, а также
пользоваться собственными версиями  DOS'а.
Я, например, уже набрал коллекцию DOS'ов.
   Для постановки требуется:
а) Проверить способ дешифрации порта  кла-
виатуры #FE. Он должен выбираться при A0=0
и A7=1. В противном случае необходимо про-
извести доработку компьютера.
б) Необходимо  ОЗУ 62256-1шт, 1533ЛЛ1-2шт,
1533ЛН1, 1533ЛИ3, 1533ИР23.


   Данная схема приводится для машин с ПЗУ
27512. Под другие типы ПЗУ переделать схе-
му несложно, но приводиться не будет.
Схема представлена на рис.1



                                          RAM 62256 (32K)
                       ┌─┐                 ┌───────────┐
/WR  ──────────────────┤1├─────────────────O/WR        │
bit0 ──────────────────┤ │  ┌──────────────┤A14        │
                       └─┘  │              │           │
                       ┌─┐  │ ┌────────────O/CS        │
                +Up ───┤&│  │ │    /RD  ───O/OE        │
bit2 ────────┬─────────┤ ├──┘ │            │           │
DOS  ────────┼─────────┤ │    │            │           │
/ROMCS ──────┼─────┐   └─┘    │            │           │
             │     │   ┌─┐    │            │           │
        ┌─┐  │ ┌─┐ └─┬─┤1├────┘            └───────────┘
bit1───┬┤1├──┼─┤&├─┬─┼─┤ │
4bit───┼┤ │  └─┤ │ │ │ └─┘                 ROM 27512
#7FFD  │└─┘   ┌┤ │ │ │                     ┌────────────┐
       │┌─┐   │└─┘ │ └──┐ ┌─┐            22│            │
       └┤1├───┘    │┌─┐ └─┤1├──────────────O/CS         │
DOS ────┤ │        └┤1O───┤ │              │            │
        └─┘         └─┘   └─┘              │            │
                                           │            │
                                           │            │
                                           │            │
                                           └────────────┘


                  Рис.1


   Теперь опишу принцип работы схемы.

   bit0,bit1,bit2 - это биты порта, на ко-
торый будет повешено это  устройство (порт
126 или  #7E). Бит  0  разрешает/запрещает
запись в ОЗУ. Бит 1 включает/выключает са-
мо ОЗУ. Бит 2 принудительно включает в ОЗУ
банк, соответствующий DOS. Это  необходимо
для того, чтобы  при  установке DOS  в ОЗУ
можно было без проблем  записать  его. ОЗУ
выключается, если  работает  48 BASIC. Это
достигается  заведением  4-го  бита  порта
#7FFD на схему устройства.
   Теперь о реализации порта #7E. Порт де-
лается на одной 1533ЛЛ1 и  1533ИР23. Схема
приведена на рис.2


                                   ┌─┐
                                 ┌─┤1O── bit0
                     ┌───┬──┬──┐ │ └─┘
          D0      ───┤D0 │RG│Q0├─┘ ┌─┐
          D1      ───┤D1 │  │Q1├───┤1O── bit1
          D2      ───┤D2 │  │Q2├──┐└─┘
          D3      ───┤D3 │  │Q3│  │┌─┐
          D4      ───┤D4 │  │Q4│  └┤1O── bit2
          D5      ───┤D5 │  │Q5│   └─┘
          D6      ───┤D6 │  │Q6│
          D7      ───┤D7 │  │Q7│
                     ├───┤  │  │
        ┌─┐     ┌────/C  │  │  │
A0    ──┤1├┐    │ ┌──o/CS│  │  │
A7    ──┤ ││ ┌─┐│ ┴  └───┴──┴──┘
        └─┘└─┤1├┘
        ┌─┐ ┌┤ │
IORQ  ──┤1├─┘└─┘
WR    ──┤ │
        └─┘
                  Рис.2


   Инверторы на выходе регистра поставлены
для того, чтобы при включениии  компьютера
доработка была выключена. Включить  какой-
-либо бит можно, записав в  него  единицу.
Так, например,установка DOS и BASIC на ас-
семблере будет выглядеть так:

DI
LD  A,%00000111 ;включаем принудительно
                ;DOS и расрешение записи,
                ;причем, бит 1 можно не
                ;устанавливать.
OUT (126),A
LD  HL,DOS_ADRES ;по этому адресу в памяти
                 ;должен находиться DOS.
LD DE,0
LD BC,16384
LDIR


LD BC,#7FFD
IN A,(C)
PUSH  AF  ;сохраняем значение порта #7FFD
          ;(если он у вас не читается, то
          ;SORRY).
LD A,%00000000
OUT (C),A ;устанавливаем ПЗУ со 128 BASIC
          ;(потому что при BASIC 48 допол-
          ;нительная RAM отключается).
PUSH BC
LD A,%00000011 ;включаем разрешение записи
               ;в RAM и саму RAM.
OUT (126),A
LD HL,BASIC_ADRES ;пересылаем из памяти
                  ;BASIC 128 в RAM.
LD DE,0
LD BC,16384
LDIR
LD  A,%00000000 ;выключаем RAM(при желании
                ;можно установить первый
                ;бит).
OUT (126),A


POP BC
POP AF
OUT (C),A ;восстанавливаем значение порта
          ;расширения.
EI
RET


   Остальные биты  порта 126 (bit3-bit7) в
данной доработке не  используются, но  при
посылке числа в порт их лучше  занулять. У
меня на них повешено: на бите 3 - вкл/выкл
теневого ОЗУ (0-вкл), на бите 4 - вкл/выкл
записи в теневое ОЗУ (0-выкл), на бите 5 -
вкл/выкл  512K (0-вкл). Ставя  или  убирая
инверторы,можно подобрать необходимую кон-
фигурацию при включении машины.
   И напоследок даю раскладку выводов мик-
росхемы ОЗУ 62256:


              ┌───┬───┬───┐
           10─┤A0 │RAM│D0 ├─11
            9─┤A1 │   │D1 ├─12
            8─┤A2 │   │D2 ├─13
            7─┤A3 │   │D3 ├─15
            6─┤A4 │   │D4 ├─16
            5─┤A5 │   │D5 ├─17
            4─┤A6 │   │D6 ├─18
            3─┤A7 │   │D7 ├─19
           25─┤A8 │   │   │
           24─┤A9 │   │   │
           21─┤A10│   │   │
           23─┤A11│   │   │
            2─┤A12│   │   │
           26─┤A13│   │   │
            1─┤A14│   │   │
              ├───┤   │   │
           20─O/CS│   │   │
           22─O/OE│   │   │
           27─O/WR│   │GNDX─14
              │   │   │UccX─28
              └───┴───┴───┘


Раскладка порта 126 DEC; #7E HEX

bit0 - запись в ОЗУ (1-yes,0-no);
bit1 - ОЗУ (1-вкл,0-выкл);
bit2 - DOS принудительно (1-вкл,0-выкл);
bit3 - теневое ОЗУ (0-вкл,1-выкл);
bit4 - запись в теневое ОЗУ (1-вкл,0-выкл)
bit5 - 512K Mode (1-off,0-on);
bit6 - зарезервирован;
bit7 - зарезервирован.