ПК Кристалл 2
Процессор: КР580ВМ80А 2 Мгц
ОЗУ: статическое 1 Кб на основном модуле + динамическое 58 Кб на модуле ОЗУ
ПЗУ: ПЗУ 2 Кб (программа Монитор)
Видео ОЗУ: статическое 2 Кб
Видео: Черно белый текстовый режим 64x32 128 символов. Псевдографика 128x64
Разъемы на основном модуле: Блок питания, магнитофон, НЧ видео.
Разъемы на модуле интерфейса: КР580ВИ53 (таймер) + КР580ВВ51 (последовательный порт) + 2x КР580ВВ55 (два параллельных порта).
ОЗУ через порты ВВ: 64 Кб на модуле ОЗУ + 128 Кб на модуле "Квазидиск"
ПЗУ через порты ВВ: 32 Кб на модуле ОЗУ + 32 Кб на модуле "Квазидиск"
Звук: бипер
Разработан: 1987 год
Содержание
О компьютере
Этот компьютер участвовал на радиовыставке 1987 г. Авторы: Сугоняко В.П. (UV3DED), Виноградов А.С., Московская обл., г. Ногинск, 1987 г.
При включении компьютер выводит текст:
КРИСТАЛЛ-С *SVP-1987*
Компьютер очень похож по схемотехнике и характеристикам на компьютер Микро-80. Но благодаря применению более современных деталей, его схема значительно проще.
В компьютере используется черно белый текстовый видеоадаптер с разрешением 64x32 с размером знакоместа 6x8. Видеоадаптер собран на простых микросхемах. Знакогенератор прошит в ПЗУ. Используется знакогенератор Микро-80 с измененным символом СП (код 1Eh). Вместо этого символа находится изображение курсора. Видеоадаптер имеет собственную статическую память 2 Кб. Она доступна для записи и чтения по адресам E800-EFFF. (Микро-80 не поддерживал чтение из видеопамяти). Когда процессор записывает в память видеоадаптер, на экране появляются черные помехи. Видеоадаптер не поддерживает отображение курсора или инверсию знакоместа (Микро-80 поддерживал). В отличии от компьютеров Радио 86РК при загрузке с магнитофона экран не отключается.
В качестве контроллера клавиатуры используется микросхема КР580ВВ55. Клавиатура электрически и программно совместима с Микро-80, Радио 86РК и аналогичными. Но адрес порта ввода-вывода клавиатуры отличается от Микро-80, поэтому прошивка Микро-80 на этом компьютере не работает.
В конце прошивки этого компьютера много неиспользуемого места.
Ввод звука сделан через разрешение прерываний (как в Радио 86РК).
Загрузка и запись на магнитофон осуществляется через порты КР580ВВ55. Преобразователя аналог-ТТЛ, ТТЛ-аналог на основной плате нет. Компьютер использует собственный формат записи на магнитофон (но так же поддерживает формат РК-86). Собственный формат отличается от формата РК-86 тем, что при загрузке программы выводится её имя. В имени программы могут использоваться символы очистки экрана, перемещения курсора. Компьютер умеет автоматически определять скорость записи на магнитофон и корректно загружать программу.
С этим компьютером совместим язык программирования Бейсик для компьютера Микро-80.
Компьютер разделен на 5 модулей:
- Основной модуль. Тактовый генератор, процессор, видеоадаптер с статическим ОЗУ 2 Кб, контроллер клавиатуры, ПЗУ 2 Кб с программой Монитор, статическое ОЗУ 1 Кб.
- Модуль ОЗУ и ПЗУ. 58 Кб ОЗУ в адресном пространстве процессора. Еще 64 Кб ОЗУ + 32 Кб ПЗУ через порты ввода-вывода. Используется 64 микрсохемы К565РУ3.
- Модуль квазидиска. Идентичен прошлому. Используется та же печатная плата, но только теперь вся память через порты. Используется 64 микрсохемы К565РУ3.
- Модуль интерфейса. КР580ВИ53 (таймер) + КР580ВВ51 (последовательный порт) + 2x КР580ВВ55 (два параллельных порта).
- Отладочный модуль. Упрощенный отладочный модуль Микро-80.
Основной модуль является завершенным и работоспособным узлом. В документации присутствует только схема основного модуля. И более того, у самих авторов не было этих модулей. У них был модуль на 16 Кб ОЗУ с таймером ВИ53.
Большая часть документации повещена операционной системе "Дельта-A". Эта операционная система работает с квазидиском. Дампа этой системы в документации (и у нас) нет.
Сугоняко В.П. - это один из разработчиков компьютера Орион-128. Компьютер Кристалл-2 своей идей квазидиска и собственной операционной системой очень похож на компьютер Орион-128.
Версии прошивок
- 1978 - Оригинальная.
- 2012-05-28 - Исправлена ошибка при удалении символов в консоли (раньше выводился символ с кодом 3 вместо 8). Для совместимости с программами РК86 добавлена поддержка esc-последовательности установки положения курсора и добавлена новая директива X, которая отключает/включает отображение курсора.
- 2012-05-29 - Все доработки для совместимости с программами РК86. Добавлена поддержка всех точек входа РК-86, кроме функции загрузки с магнитофона (F824). Её вызов перезагружает компьютер. Исправлена функция вывода символа (F809), раньше она портила регистр A. Добавлена поддержка звука, теперь компьютер пищит при выводе в консоль символа с кодом 7. При очистке экрана (вывод в консоль кода 1Fh) курсор устанавливается в верхний левый угол.
Команды монитора
УС+S | Включение формата записи на магнитофонную ленту РК-86 (по умолчанию включен собственный формат). |
УС+T | При очистке экрана устанавливать курсор в верхнюю строку (в оригинальной прошивке в курсор устанавливается в нижнюю строку). |
R[начало] | Загружает область памяти с магнитофона с автоматическим определением плотности записи. Первый параметр можно не указывать. |
I[начало] | Загружает область памяти с магнитофона. Первый параметр можно не указывать. |
I, | Загружает область памяти с магнитофона и запускает. |
O[начало],[конец],[скорость] | Сохраняет область памяти на магнитофон. Третий параметр можно не указывать. |
J[адрес] | Запустить программу. |
E | Переход по адресу 0000. |
K | Выводит на экран все введенные с клавиатуры символы (выход из режима символом с кодом 0 или УС+;). |
С[начало],[конец],[начало 2] | Сравнивает области памяти. |
F[начало],[конец],[байт] | Заполняет область памяти байтом. |
S[начало],[конец],[байт] | Ищет байт в области памяти. |
S[начало],[конец],[2 байта] | Ищет 2 смежных байта в области памяти. |
P[из_начало],[из_конец],[куда начало] | Копирует область памяти. |
M[начало] | Последовательно просматривает память позволяя изменять значения. |
H[символ] | Отображение 16-ричного кода символа. |
L[начало],[конец] D[начало],[конец] | Выводит 16-ричный и текстовый дамп памяти. Директивы D и L идентичны. |
Z[число] | Передача управления в "зону". Число выбирает слот-ПЗУ. Управление передается по адресу F000h. (Эта директива отсутствует в прошивке приведенной в официальной документации) |
X | Только в прошивке от 2012-05-28. Отключение отображения курсора. Некоторые программы РК86 иначе не работают. |
пустая строка | Очистка экрана и вывод приветствия. |
Карта памяти
0000h - E7FFh | Используется дополнительными модулями. Обычно ОЗУ |
E800h - EFFFh | ОЗУ. Видео 64x30 |
F000h - F3FFh | Используется дополнительными модулями |
F400h - F7BFh | ОЗУ. Стек |
F7C0h - F7FFh | ОЗУ. Системные переменные |
F800h - FFFFh | ПЗУ. Монитор |
В документации указано, что по адресам D000h - E7FFh находится операционная система Дельта-А.
Карта УВВ
На основной плате присутствет только микросхема КР580ВВ55А, которая обслуживает клавиатуру и магнитофон. Микросхема занимает все порты у которых A2=0, то есть адреса 0-3,8-Bh,10h-13h,18-1Bh.
0 | Вывод на матрицу клавиатуры |
1 | Ввод с матрицы клавиатуры |
2 | чтение бита 0. Чтение с магнитофона. чтение бита 1. Клавиша СС. чтение бита 2. Клавиша УС. запись бита 7. Запись на магнитофон. |
3 | Управление КР580ВВ55A. Инициализируется значением 8Bh. |
Стандартный набор программ ввода-вывода
Адрес | Описание | Входные данные | Выходные данные |
F800h | Перезагрузка | ||
F803h | Ввод символа с клавиатуры с ожиданием | A - код символа | |
F806h | Чтение байта с магнитофона | А=FF - с поиском синхробайта A=08 - без поиска синхробайта | A - считанный байт |
F809h | Вывод символа на экран | С - символ | |
F80Сh | Запись байта на магнитофон | C - байт | |
F80Fh | Вывод символа на экран | A - символ | |
F812h | Опрос состояния клавиатуры 1 | A=FF - ни одна клавиша не нажата A<>FF - нажата | |
F815h | Вывод на экран 16-ричного числа | A - число | |
F818h | Вывод на экран текстовой строки | HL - адрес строки (код 0 конец строки) | |
F81Bh | Не используется | ||
F81Eh | Инициализация КР580ВВ55 |
В оригинальной прошивке только первые 9 точек входа совместимы с Микро-80, ЮТ-88 и Радио 86РК. В последней прошивке реализованы все точки входа, кроме загрузки программы с магнитофона.
Адрес | Описание | Входные данные | Выходные данные |
F81Bh | Опрос состояния клавиатуры 2 | A=FF - ни одна клавиша не нажата Иначе A - код клавиши | |
F81Eh | Запрос положения курсора | Н - номер строки L - номер позиции | |
F821h | Запрос символа под курсором | А - символ | |
F824h | Чтение блока с магнитофона не реализовано | ||
F827h | Вывод блока на магнитофон | HL - адрес начала DE - адрес конца ВС - контрольная сумма | |
F82Ah | Подсчет контрольной суммы блока | HL - адрес начала DE - адрес конца | ВС - контрольная сумма |
F82Dh | Инициализация видеоконтроллера | ||
F830h | Запрос верхней границы доступной памяти | HL - адрес | |
F833h | Установка верхней границы доступной памяти | HL - адрес |
Системные переменные
Адрес | Размер | Описание |
F7C0h | word | Адрес курсора после очистки экрана. В оригинальной прошивке EFC0h, в последней E800h. Изменяется по директиве УС+S на E800h. |
F7C2h | word | Адрес функции, которая запускается в случае ошибки загрузки с магнитофона. Инициализируется FD1Ah |
F7C4h | byte | Только в последней прошивке. Отключение отображения курсора, если не 0. Изменяется директивой X. |
F7C5h | byte | Только в последней прошивке. Используется в обработке esc-последовательности устанавливающей положение курсора. |
F7C6h | byte | Формат записи на магнитофон: 0-собственный, FFh-РК86. Директива УС+S записывает FFh. |
F7C7h | byte | Инициализируется значением 3 и не используется. |
F7C8h | byte | Длина имени введенная в директиве O (используется только директивой O). |
F7C9h | byte | Символ находящийся под курсором. |
F7CAh | word | Адрес курсора в видеопамяти. |
F7CCh | byte | Скорость записи на магнитофон. Инициализируется 15h. |
F7CDh | byte | Скорость загрузки с магнитофона. Инициализируется 1Fh. |
F7CEh | byte | Используется только функцией загрузки с магнитофона. Содержит 0 или FF. |
F7CFh | word | Адрес последнего символа введенной команды. |
F7D1h | word | Используется только директивой J. Она заносит сюда первый аргумент, если агрумент не указан, то использует это значение. |
F7D3h | word | Только в последней прошивке. Верхняя граница доступной памяти. Инициализируется E800h. |
F7D5h | word | Не используется. |
F7D7h | word | Используется только директивой L. Она заносит сюда первый аргумент, если агрумент не указан, то использует это значение. |
F7D9h | word | 3 параметр введенной команды. Заполняется так же директивой I. |
F7DBh | word | 2 параметр введенной команды. Заполняется так же директивой I. |
F7DDh | word | 1 параметр введенной команды. Заполняется так же директивой I. |
F7DFh | 33 | Командная строка длиной 33 байта. |
Ссылки
http://zx.pk.ru/showthread.php?t=18881 - Обсуждение на форуме
http://narod.ru/disk/46334826001.ee78ec8da7b58f796488f40322d22560/Kristall-2.rar.html - Документация, схемы, прошивки
http://s019.radikal.ru/i625/1204/c3/c93f13b116bf.png - Схема одним файлом