ПК Кристалл 2

Материал из ZX-PK.ru
Перейти к: навигация, поиск

Процессор: КР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 - адрес 

Системные переменные

АдресРазмерОписание
F7C0hwordАдрес курсора после очистки экрана. В оригинальной прошивке EFC0h, в последней E800h. Изменяется по директиве УС+S на E800h.
F7C2hwordАдрес функции, которая запускается в случае ошибки загрузки с магнитофона. Инициализируется FD1Ah
F7C4hbyteТолько в последней прошивке. Отключение отображения курсора, если не 0. Изменяется директивой X.
F7C5hbyteТолько в последней прошивке. Используется в обработке esc-последовательности устанавливающей положение курсора.
F7C6hbyteФормат записи на магнитофон: 0-собственный, FFh-РК86. Директива УС+S записывает FFh.
F7C7hbyteИнициализируется значением 3 и не используется.
F7C8hbyteДлина имени введенная в директиве O (используется только директивой O).
F7C9hbyteСимвол находящийся под курсором.
F7CAhwordАдрес курсора в видеопамяти.
F7CChbyteСкорость записи на магнитофон. Инициализируется 15h.
F7CDhbyteСкорость загрузки с магнитофона. Инициализируется 1Fh.
F7CEhbyteИспользуется только функцией загрузки с магнитофона. Содержит 0 или FF.
F7CFhwordАдрес последнего символа введенной команды.
F7D1hwordИспользуется только директивой J. Она заносит сюда первый аргумент, если агрумент не указан, то использует это значение.
F7D3hwordТолько в последней прошивке. Верхняя граница доступной памяти. Инициализируется E800h.
F7D5hwordНе используется.
F7D7hwordИспользуется только директивой L. Она заносит сюда первый аргумент, если агрумент не указан, то использует это значение.
F7D9hword3 параметр введенной команды. Заполняется так же директивой I.
F7DBhword2 параметр введенной команды. Заполняется так же директивой I.
F7DDhword1 параметр введенной команды. Заполняется так же директивой I.
F7DFh33Командная строка длиной 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 - Схема одним файлом