Inferno #02
01 мая 2001
  Железо  
  ATM Turbo  

For Coderz - Описание персонального компьютера ATM-TURBO 2+.

<b>For Coderz</b> - Описание персонального компьютера ATM-TURBO 2+.
    Персональный компьютер TURBO 2+
         Платы версии 7.00-7.10

          Техническое описание
                   и
       руководство программиста.

(C) MicroArt
(C) MaxSoft 1995 (?)

 Структура памяти и портов ввода вывода

           1. Системный порт
           Адрес доступа: #77
       Выборка: A0=1, A1=1, A2=1,
         A3=0, A4=1, A7=0, WR=0

Обращение к этому порту осуществляется в
режиме dosen=on или из режима CP/M.

D0 - RG0  \
D1 - RG1   - код видеорежима
D2 - RG2  /
D3 - TUR Частота процессора
     1-7MHz 0-3.5MHz
D4  -  Z_M  зарезервировано - необходимо
устанавливать в 0
D5 - Z_I прерывания от HSYNC (50 гц)
     1-разрешены 0- запрещены
D6  - VE1 1-запрет функционирования 8031
(все запросы идут к zx клавиатуре)
D7  -  VE0  в плате 7.10 не используется
(по умолчанию необходимо устанавливать в
1)
A8  -  PEN  0  - откл. диспетчера памяти
(системное  пзу включается во все окна),
1 - вкл. диспетчера памяти.
A9  - CPM 0 - включение dosen разрешение
записи в порт страниц, SYS ets. 1 - бло-
кировка dosen (запись в порты sys, pgwr,
fdd, hdd только из TR-DOS)
A14 - PEN2  0 - разрешение записи палит-
ры, 1 -запрет записи палитры

; Видеорежимы экрана RG2'&RG1'&RG0
;Sinclair      3
;640x200 GRAPH 2
;320x200 GRAPH 0
;640x200 Text  6

 Программистам  необходимо  помнить, что
при  переключении из режима Sinclair эк-
рана   и  экранов  высокого  разрешения,
перепутывается адресное пространство озу
а  именно A5, A6, A7 и A8, A9, A10 соот-
ветственно, т.е. если вы хотите переклю-
чить режим экрана - программа переключе-
ния  должна  занимать не более 32 байт и
располагаться  по  адресу  с одинаковыми
A5, A6, A7 и A8, A9, A10 соответственно,
иначе ваша программа зависнет!

        2. Мультиплексор страниц
           Адрес доступа: #F7
    Выборка:A0=1, A1=1, A2=1, A3=0,
            A4=1, A7=1,WR=0

 Обращение к  этому порту осуществляется
в режиме dosen-active или из режима CPM.
Применение  диспетчера позволило адресо-
вать в компьютере до 1024кб RAM и 1024кб
ROM.  При этом есть возможность включить
_ЛЮБУЮ_ страницу памяти (16кб) в _ЛЮБОЕ_
из   четырех   окон  памяти  (с  адреса:
#0000,  #4000,  #8000,  #C000)  по 16кб.
Диспетчер  разделен  на  две  части по 4
байта  каждая.  Эти части содержат карту
страниц при ROM2=0 и при ROM2=1.

D0 - RAM'&ROM invert PAGE 0
D1 - RAM'&ROM invert PAGE 1
D2 - RAM'&ROM invert PAGE 2
D3 - RAM'&ROM invert PAGE 3
D4 - RAM'&ROM invert PAGE 4
D5 - RAM'&ROM invert PAGE 5
В  этих  битах  задается инверсный номер
страницы
D6 - RAM/ROM 1-разрешение RAM, 0-ROM
D7  -  MX_A  1-разрешить подачу сигналов
(PAGE0-PAGE2) от порта #7FFD
A14 - window sel 0
A15 - window sel 1
Ну  а тут задается выборка окна 0-#0000,
1-#4000, 2-#8000, 3-#C000

Стандартная  карта  распределения памяти в различных режимах
работы компьютера:

┌─────┬────────────┬──────────┬───────┬──────────┬─────────┐
│mode │Spectrum-128│Spectrum48│TR- DOS│CPM-system│CPM-users│
│roms │   ROM2=1   │  ROM2=0  │ROM2= x│  ROM2=1  │  ROM2=0 │
├─────┼────────────┼──────────┼───────┼──────────┼─────────┤
│#0000│   ROM-#3E  │  ROM-#3C │ROM-#3D│  ROM-#3F │  RAM-0  │
│#4000│   RAM-5    │  RAM-5   │ RAM-5 │  RAM-5   │  RAM-4  │
│#8000│   RAM-2    │  RAM-2   │ RAM-2 │  RAM-2   │  RAM-2  │
│#C000│    см. состояние порта #7FFD  │RAM-1или 3│  RAM-3  │
└─────┴────────────┴──────────┴───────┴──────────┴─────────┘

 В  режиме  ZX-SPECTRUM  в окне с адреса
#C000 может быть включена любая страница
с 0 по 7 (это зависит от состояния порта
#7FFD)

CPM-system  -режим  когда  активно пзу с
монитором  (работа с экраном стандартные
процедуры  ввода/вывода  с дисков, опрос
клавиатуры, прерывания)

CPM-users -режим когда активна программа
пользователя (в окне 0 страница 0 озу)

 Примечание для  любителей  использовать
все  1024к оперативки в SPECTRUM режиме.
Ниже  приводится  стандартная  процедура
переключения    страниц    1024    к для
SPECTRUM.
 При  вызове  в  A  номер страницы 0-3FH
(необходимо  помнить,  что  стек и вызы-
вающая  программа  не должны находится в
адресах выше #C000)

SET_PAGE
        PUSH AF
        AND 7           ;выделяем млад-
                        ;шие 3 бита
        OR #10          ;по усмотрению
                        ;можно выбрать
                        ;пзу и экран.
        LD BC,#7FFD
        OUT (C),A
        POP AF
        AND     #38     ;маскируем все
                        ;биты, кроме
                        ;3-х старших
        CPL             ;инверсия
                        ;данных (бит
                        ;выборки озу
                        ;взводится)
        LD      BC,#2A53;в TR-DOS
                        ;OUT (C),A RET
        PUSH    BC
        LD      BC,#FFF7
        JP      #3D2F   ;переход в
                        ;TR-DOS

После  любой подобной команды порт #7FFD
отключается.  Если  вы  хотите корректно
вернутся в SPECTRUM режим - выполните:

EXIT_1024:
        LD      A,#FF
        LD      BC,#2A53
        PUSH    BC
        LD      BC,#FFF7
        JP      #3D2F
дальнейшее   управление  страницами  как
обычно по порту #7FFD

     3. SPECTRUM-128 Системный порт
          Адрес доступа: #7FFD
    Выборка: A15=0, A9=1, A1=0, WR=0

 Этот  порт  используется, в основном, в
режиме  SPECTRUM-128,  однако  в CP/M он
нужен  для  быстрой  смены  карты памяти
CPM-system<>CPM-users.  Разработчики пы-
тались сделать это место как можно более
совместимым  с  фирменным ZX, однако это
не совсем удалось.

D0 -PAGE0\  определяют какая страница
D1 -PAGE1 > впечатана в режиме
D2 -PAGE2/  Spectrum-128 с адреса #C000
D3 - SCREEN  -  этот разряд определяет в
какой странице будет находиться экранное
озу.
  в  режиме  "SPECTRUM":
  0 - 5-я страница (с адреса #4000)
  1 - 7-я страница.
  в режиме CP/M:
  0 - 5-я страница пикселы, 1-я атрибуты
  1 - 7-я страница пикселы, 3-я атрибуты
D4 - ROM2 - этот сигнал путем переключе-
ния  диспетчера  выбирает  BASIC-128 (1)
или  BASIC-48  (0).  В  CP/M переключает
CPM-system (1) или CPM-user (0)
D5  -  LOCK - записав в этот разряд "1",
мы  запрещаем дальнейшую работу с портом
#7FFD  (это сделано для полной совмести-
мости с SPECTRUM-48).

        4. Порт телефонной линии
          Адрес доступа: #7FFD
    Выборка: A15=0, A9=1, A1=0, RD=0

 Порт #7FFD  доступен по чтению как фла-
говый.

D7 - готовность ацп: 1 - ацп готово, 0 -
идет преобразование данных.
D6  -  1 указывает, что HDD закончил вы-
полнение последней команды (позициониро-
вание, запись и.т.п.)
D5 - в плате версии 7.0 не задействован
D4 - в плате версии 7.0 не задействован

           5. Порт чтения ацп
          Адрес доступа:#7DFD
    Выборка: A15=0, A9=0, A1=0, RD=0

 Используется  для чтения состояния АЦП.
(Данные  достоверны  только  в состоянии
АЦП "готово" (см. выше).

   6. Порты музыкального синтезатора
       Адрес доступа:#BFFD,#FFFD
       Выборка: A15=1, A9=1, A1=0

 Используются  для  программирования му-
зыкального синтезатора AY-8910(12).

        7. Порт принтера и цап.
           Адрес доступа:#FB
       Выборка: A0=1, A1=1, A2=0

 На  плате реализован стандартный интер-
фейс  CENTRONIX.  Он  не требует никакой
предварительной инициализации. По чтению
этот  порт  копирует  состояние  сигнала
BUSY принтера в BIT 7 аккумулятора.

Стандартный  драйвер  вывода  на принтер
символа из регистра C.

OUT_PRN  IN      A,(#FB)
         RLCA
         RET     C      ;C FLAG=1
                        ;возврат (прин-
                        ;тер не готов)
         LD      A,C
         OUT     (#FB),A;выводим данные
         OUT     (#7B),A;импульс строб
         OUT     (#FB),A;сброс строба
         RET            ;C FLAG=0  байт
                        ;послан

 Необходимо   помнить   что  к  этому-же
порту  подключен цифро-аналоговый преоб-
разователь.

            8. MISC I/O PORT
           Адрес доступа:#FA
       Выборка: A0=0, A1=1, A2=0

 Стробы  IOWR, IORD этого порта выведены
на  системный  разъем  компьютера. С по-
мощью  этого  порта  и порта CENTRONIX к
компьютеру    можно    подключить    256
устройств  ввода  и 256 устройств вывода
при  сохранении  полной  совместимости с
оригиналом.  При этом, адрес порта запи-
сывается  в  CENTRONIX  по  команде  OUT
(#FB),A, а данные считываются по команде
IN  A,(#FA)  или записываются по команде
OUT  (#FA),A. Шина данных на разъеме бу-
феризирована.  Для  сохранения совмести-
мости все новые разработки рекомендуется
подключать, используя исключительно этот
порт.

           9. Порт атрибутов
           Адрес доступа:#FF
    Выборка: A0=1, A1=1, A2=1, A3=1,
A4=1, A5=1, A6=1, A7=1, DOSEN=OFF, RD=0

 Этот  порт позволяет прочитать текущий,
выводимый на экран атрибут.

          10. Порт клавиатуры
           Адрес доступа:#FE
    Выборка: A0=0, A1=1, A2=1, RD=0

 Про  этот  порт следует рассказать под-
робнее.  В  стандартном  режиме (без IBM
клавиатуры)  этот  порт  имеет следующее
назначение.

D0 - KD1\
D1 - KD2 \
D2 - KD3  клавиатурные входы данных
D3 - KD4 /
D4 - KD5/
D5  - Z системный сигнал от ПЛМ, На этом
сигнале  построена защита от копирования
плат.  Сигнал активизируется через опре-
деленное количество тактов после прихода
прерывания (точно не помню какое). Прог-
рамма, подсчитывая это количество, полу-
чает  байт, который является ключем рас-
паковки  BIOS  и  BDOS... но в последней
версии с 8031 от этого отказались.
D6 - TIN сигнал чтения с магнитофона.
D7 - не используется

A8  - KA0\
A9  - KA1 \
A10 - KA2  \
A11 - KA3   \ адресные линии клавиатуры
A12 - KA4   /
A13 - KA5  /
A14 - KA6 /
A15 - KA7/

 Начиная  с  версии  7.00,  в компьютере
появилась  мс. 8031, что кардинально из-
менило  работу  порта #FE и дало возмож-
ность подключить IBM XT клавиатуру.

 При  попытке  прочитать содержимое кла-
виатуры,   процессор   дает  команду  IN
A,(#FE),  взводится спец. триггер и про-
цессор  останавливается  сигналом  WAIT.
При   этом   в   микроконтроллере   8031
генерируется прерывание. После необходи-
мых  процедур трансляции адресных линий,
микроконтроллер  выдает  на  шину данных
процессора  состояние клавиатуры, сигнал
WAIT сбрасывается и процессор продолжает
свою работу.
 Наличие   8031 и расширенной клавиатуры
(101  клавиша) позволило упростить опрос
клавиатуры в CP/M до простого чтения ко-
да клавиши, однако, это потребовало вве-
дения дополнительных команд для управле-
ния  8031,  и поскольку единственно воз-
можный  способ  передать  данные в 8031,
это  состояние старшей половины шины ад-
реса Z80 в момент чтения порта #FE, этот
способ и используется.

     Управляющие последовательности
              клавиатуры:

 #55 - указывает, что следующий байт яв-
ляется  кодом  команды для клавиатуры. В
ответ  клавиатура  возвращает  код #AA -
это  можно использовать для проверки на-
личия 8031.

  LD    A,#55
  IN    A,(#FE)
  CP    #AA
  JR    NZ,NO_XT
  LD    A,COMM  ;команда (см ниже)
  IN    A,(#FE)
  LD    A,ARG1  ;дополнительные
                ;параметры (могут
                ;отсутствовать)
  IN    A,(#FE)
  LD    A,ARG2  ;дополнительные
                ;параметры (могут
                ;отсутствовать)
  IN    A,(#FE)


 #00 - Читает код нажатой клавиши.

  XOR   A
  IN    A,(#FE)
  ;в  аккумуляторе  код  клавиши (список
кодов приводится ниже)

 #80 - читает 1-й байт флагов клавиатуры
 LD     A,#80
 IN     A,(#FE)

 #40 - читает 2-й байт флагов клавиатуры
 LD     A,#40
 IN     A,(#FE)

 Коды команд  (Внимание!  Перед  записью
кода  команды  необходимо  дать упр. код
#55  для перевода 8031 в режим ввода ко-
манды):

1        получить 1 байт  номера  версии
         программы
#41      получить 2 байт  номера  версии
         программы
#81      получить 3 байт  номера  версии
         программы
#C1      получить 4 байт  номера  версии
         программы
7        стереть буфер клавиатуры и  все
         флаги
8 DATA   установка режима работы:
         bit 0, 1 -устанавливается режим
         работы
         0 - эмуляция синклер клавиатуры
         1 - чтение кода клавиши  (флаги
             не обрабатываются)
         2 - режим CP/M
         3 - прямое чтение кода с после-
             довательного порта  клавиа-
             туры
         bit 7 - режим 0-lat 1-rus
                 (только для CP/M)

9        получить содержимое ячейки  па-
         мяти 1
#49      получить содержимое ячейки  па-
         мяти 2
#89      получить содержимое ячейки  па-
         мяти 3
#C9      получить содержимое ячейки  па-
         мяти 4
#0A      переключится  в   режим   ввода
         русских букв
#0B      переключится в режим ввода  ла-
         тинских букв
#0C      программная пауза
#0D      перезапуск компьютера
#10      получить секунды
#50      получить минуты
#90      получить часы
#11 DATA установить секунды
#51 DATA установить минуты
#91 DATA установить часы
#12      получить число
#52      получить месяц
#92      получить год
#13 DATA установить число
#53 DATA установить месяц
#93 DATA установить год
#14 DATA принудительно устанавливает не-
         которые сигналы (установка про-
         исходит,  если  соответствующий
         бит равен 1)
         bit 0 = 0
         bit 1 = 0
         bit 2 = 0
         bit 3 DTR
         bit 4 RTI
         bit 5 = 0
         bit 6 = 0
         bit 7 = 0
#15 DATA принудительно сбрасывает  неко-
         торые сигналы  (сброс  происхо-
         дит, если соответствующий   бит
         равен 1 (см. ком #14)
#16      прочитать содержимое порта P3
         bit 0  -
         bit 1  -
         bit 2  -
         bit 3  -
         bit 4  VE1
         bit 5  -
         bit 6  -
         bit 7  -
#17      прочитать состояние RS232
         bit 0  CD
         bit 1  CTS
         bit 2  RI
         bit 3  -
         bit 4  -
         bit 5  -
         bit 6  -
         bit 7  -

            11. Порт бордюра
           Адрес доступа:#FE
    Выборка: A0=0, A1=1, A2=1, WR=0

 Этот  порт    несколько   отличается от
стандартного  SPECTRUM. Дело в том что в
CP/M  бордюр  (как  и экран) может иметь
любой  из шестнадцати цветов (из палитры
64). Поэтому потребовался дополнительный
бит цвета, который был заведен на инвер-
сный A3.

D0 - BRD0\
D1 - BRD1 цвет бордюра
D2 - BRD2/
D3 - TAPEOUT Выход на магнитофон
D4 - SOUND   Выход на динамик
D5 - не используется
D6 - не используется
D7 - не используется
A3 - BRD3 - 3-й бит цвета (инверсный)



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

For Coderz - алгоритм перевода цветного Спекрумовского изображения в градации серого.

Inferno - Управление оболчкой журнала.

For Coderz - Апаратные ошибки компьютера ATM-TURBO.

For Coderz - Описание персонального компьютера ATM-TURBO 1.

For Coderz - Описание персонального компьютера ATM-TURBO 2+.

For Coderz - как программно определить количество тактов в строке у машины, оснащённой портом #FF.

Шелезяка - Приставка к телефону для устранения шумов и щелчков.

Шелезяка - Pagemaker: доработка отображающая ткущий номер страницы памяти.

Шелезяка - NEW BRIGHT: полноценно шестнадцати цветный режим.

Интервью - интервью с предводителем Самарских спектрумистов Unbel!ver/XTM.

Others - итоги несостоявшегося анкетирования.

Others - ROMкадром (юмор).

Others - Safemode: компьютерные преступления и информационная война.

Others - Мысли вслух: "Все ваши мысли о том, что Sрeccy уже загнулся, являются полнейшим бредом..."

Sofтинка - описание нового текстового редактора ZX-WinWord V3.0.

Sofтинка - описание нового текстового редактора ZX-WinWord V3.0 (Oberon Creative Pack).

Sofтинка - File Extractor: файловый извлекатель.

Gameland - Как написать игру. Том 3. Часть первая.

Gameland - Как написать игру. Том 3. Часть первая.

Gameland - последняя демоверсия спекрумовской версии знаминитой амижной игрушки WALKER.

Gameland - 3-я демоверсия игры Wolf 3D.

Самиздат - Dragonland: Презентация.

Самиздат - Dragonland: Дикий мед.

Самиздат - Dragonland: Когда идет дождь...

Самиздат - "Незаконнорождённый АльХимик доктор Фауст Пернатый Змей" №1.

Самиздат - "Незаконнорождённый АльХимик доктор Фауст Пернатый Змей" №2.

Самиздат - Нечто вроде Кашпировского....

Мыльница - Письмо в никуда.

Inferno - Авторы.

Inferno - Вступление.


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

Похожие статьи:
TOP TEN - Десяточка лучших игр.
Железо - схема Псевдо Турбо для Скорпиона (ускорение 3%).
Интервью - Первое интервью газеты с московским программистом NOMY.
Записки программиста - унивкрсальная библиотека для работы с графикой от Вячеслава Медноногова - Graphic Library v1.1
Credits - авторы газеты.

В этот день...   16 апреля