Персональный компьютер 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-й бит цвета (инверсный)