ЮТ-88 на плис (Altera DE1)
ЮТ-88 на плис (Altera DE1)
Описание проекта
Для работы компьютера изначально мной была создана плата расширения. Схему и разводку платы можно скачать здесь. Эта плата содержит шесть 7-ми сегментных индикаторов и клавиатуру 4х4. Клавиатура была приобретена на ebay за $9. Подключается плата расширения через разъем GPIO_1 платы DE1 (рис. 1).
Рис. 1
Кроме этого плата содержит аудио вход и выход, “пищалку” и TV-выход. Сделано это было для моих экспериментов и не требуется для работы компьютера.
Более того, сейчас для запуска компьютера не требуется даже эта плата, т.к. 7-ми сегментные индикаторы дублируются на экране VGA монитора (отключается выключателем SW(0) на плате DE1), а подключенная PS/2 клавиатура может работать в режиме кейпада. Режим работы клавиатуры выбирается выключателем SW(1) на плате DE1.
Два правых 7-ми сегментных индикатора на плате DE1 используются для отображения скан-кода нажатой клавиши на клавиатуре.
Дисплей подключается к VGA выходу и отображает информацию в режиме 800х600 60Гц. Разрешение компьютера 384х224. Таким образом выполняется дублирование каждой точки по горизонтали и вертикали, т.е. одна точка компьютера занимает 4 точки дисплея. Но даже удвоения недостаточно чтобы покрыть весь дисплей (получается 768х448), поэтому остались неиспользуемые поля. Верхнее поле я использовал для вывода 7-ми сегментных индикаторов.
В качестве магнитофонного входа/выхода используются разъемы LINE IN и LINE OUT на плате DE1. В качестве магнитофона может выступать CD или MP3 плейер, компьютер или любое другое устройство способное проигрывать wav или mp3 файлы на выход наушников. Громкость сигнала с этих устройств подбирается экспериментально. Некоторые программы для загрузки в wav формате вы можете найти в разделе “СКАЧАТЬ”.
Кроме того, используется JTAG интерфейс для записи и чтения SRAM памяти. Т.к. микросхема SRAM памяти используется как ОЗУ (младшие 8 бит шины данных), так и квазидиск (старшие 8 бит шины данных), то этот интерфейс позволяет записать и восстановить состояние компьютера при помощи утилиты DE1 CONTROL PANEL, входящий в комплект платы DE1. В разделе “СКАЧАТЬ” также приводится пример образа сделанного при помощи этой утилиты, который позволяет быстро загрузить в компьютер ОС CP/M вместе с комплектом программ на квазидиске.
ЗАПУСК В МИНИМАЛЬНОЙ КОНФИГУРАЦИИ
Пространство памяти в минимальной конфигурации распределяется следующим образом:
0000 - 0FFF – ПЗУ с программой “Монитор-0” и библиотекой математических подпрограмм. Это ПЗУ может быть отключено и заменено областью ОЗУ выключателем SW[2] (положение “0”).
2000 - 23FF – ПЗУ с разными программами для миниконфигурации. Эти программы не могут быть запущены из ПЗУ, а должны быть скопированы в ОЗУ начиная с адреса С000 и запущены оттуда. Это ПЗУ также может быть отключено и заменено областью ОЗУ выключателем SW[4] (положение “0”). Перечень программ этого ПЗУ и инструкции по их запуску см. в разделе “МОНИТОР-0”.
С000 - С3FF – ОЗУ минимальной конфигурации. На самом деле в минимальной конфигурации данной реализации доступна вся область памяти с 1000 по FFFF (если ПЗУ “Монитора-F” отлючено выключателем SW[3]). Таким образом, если отключить еще и ПЗУ программ (выключатель SW[4] в положении “0”), то доступный объем ОЗУ составит 60Кб.
Кроме того, содержимое ячеек 9000, 9001 и 9002 выводится на 7-ми сегментные индикаторы платы расширения.
Выключатель SW[0] отвечает за включение индикации 6-ти семисегментных индикаторов на VGA дисплее, подключенном к плате DE1.
Выключатель SW[1] переключает клавиатуру в режим кейпада. Это означает, что если этот выключатель находится в положении “1”, то клавиатура PS/2, подключенная к плате DE1, работает как кейпад минимальной конфигурации. Иначе задействована клавиатура платы расширения.
В режиме работы с платой расширения, клавише “ШН” соответствует кнопка KEY[3] на плате DE1, а клавише “СБРОС” - кнопка KEY[0].
В режиме работы с клавиатурой PS/2, на клавиатуре задействованы все цифровые клавиши и клавиши A, B, C, D, E и F. В качестве клавиши “ШН” используется клавиша TAB, а клавиши “СБРОС” - ESC.
Таким образом, суммируя вышесказанное, для работы компьютера в минимальной конфигурации выключатели SW должны находиться в следующих положениях:
SW[0] - “0” для отображения 7-ми сегментных индикаторов только на плате расширения, “1” - дублирование их на VGA дисплее.
SW[1] - “0” для ввода информации с помощью кейпада на плате расширения, “1” - использование клавиатуры PS/2 для ввода в режиме кейпада.
SW[2] - “1”
SW[3] - “0”, если планируется использовать область оперативной памяти F400-FFFF.
SW[4] - “1” для включения ПЗУ с программами. После копирования программы в ОЗУ это ПЗУ можно отключить и использовать его адресное пространство как ОЗУ. Если записанные в это ПЗУ программы не нужны совсем, то этот выключатель можно оставить в положении “0”.
SW[6] - “1” включено прерывание от 1Гц таймера
SW[8] - “0”. Положение “1” переводит процессор в режим HOLD. Используется для работы с DE1 CONTROL PANEL.
SW[5], SW[7], SW[9] – положение этих выключателей не имеет значения в минимальной конфигурации.
ЗАПУСК В ПОЛНОЙ КОНФИГУРАЦИИ
Для включения компьютера в полной конфигурации необходимо подключить ПЗУ “Монитора-F” (выключатель SW[3] в положении “1”). Далее следует запустить Монитор-F командой 7 F800.
Чтобы в режиме полной конфигурации использовать всю доступную область ОЗУ, после запуска Монитора-F можно отключить уже ненужные ПЗУ с Монитором-0 и программами для минимальной конфигурации (выключатели SW[2] и SW[4] в положение “0”). В таком случае пространство памяти будет распределено следующим образом:
0000 – DFFF – область ОЗУ
E000 – E7FF – область видеопамяти
E800 – EFFF – дубль области памяти. Ввиду особенностей конфигурации компьютера ЮТ-88 эта область памяти дублирует основную область видеопамяти
Что в области F000-F3FF?
F400 – F7FF – служебная область ОЗУ, используемая Монитором-F для своих нужд.
F800 – FFFF – ПЗУ с Монитором-F.
При отключенных ПЗУ Монитора-0 доступный объем ОЗУ полной конфигурации составляет 56Кб.
Далее необходимо перевести клавиатуру PS/2 в режим работы с полной конфигурацией, переключив выключатель SW[1] в положение “1”. Можно также отключить отображение 7-ми сегментных индикаторов минимальной конфигурации на дисплее, переведя выключатель SW[0] в положение “0”.
Кроме того, я добавил в схему дополнительное ОЗУ с уже записанной там игрой “Тетрис”. При включении оно подставляется в область 3000 - 3FFF и заменяет собой стандартное ОЗУ. Включение этой ОЗУ производится переводом выключателя SW[5] в положение “1”. В целом это ОЗУ ведет себя идентично стандартному, поэтому оно никак не сказывается на работе компьютера даже если оставлено включенным. Для запуска игры надо перевести выключатель SW[5] в положение “1” и ввести команду G3000. При этом следует иметь ввиду, что т.к. это ОЗУ, а не ПЗУ, то игра может быть повреждена если была произведена запись в эту область памяти, когда она была включена. Тогда для ее восстановления потребуется загрузка игры с “магнитофона” или выключение и включение платы DE1.
Таким образом, для запуска компьютера в полной конфигурации выключатели должны находиться в следующих положениях:
SW[0] - “0” для отображения 7-ми сегментных индикаторов только на плате расширения, “1” - дублирование их на VGA дисплее.
SW[1] - “0” - использование клавиатуры PS/2 для ввода информации
SW[2] – перевести в “0” после запуска, чтобы освободить область памяти 0000-0FFF под ОЗУ. Убедитесь, что SW[6] переведен в “0” перед этим.
SW[3] - “1”
SW[4] - “0”, чтобы освободить область памяти 2000-23FF под ОЗУ
SW[5] – “1” если хотите использовать область ОЗУ 3000-3FFF с уже записанной игрой “Тетрис”, иначе “0”.
SW[6] – отвечает за прерывание таймера 1 Гц. Должен быть установлен в “0” перед отключением ПЗУ Монитора-0.
SW[7] – “0”. Этот выключатель отвечает за знакогенератор вывода ни дисплей компьютера. При значении “0” используется стандарнтный знакогенератор ЮТ-88 с только заглавными русскими и латинскими буквами. При работе с ОС CP/M некоторые программы используют символы из знакогенераторов иностранных компьютеров, которые содержат строчные латинские буквы на месте русских. В этом случае, для корректного отображения на дисплее, следует переключить знакогенератор на альтернативный (с латинскими строчными буквами вместо русских) путем установки этого выключателя в положение “1”. Делать это можно без перезагрузки компьютера.
SW[8] - “0”. Положение “1” переводит процессор в режим HOLD. Используется для работы с DE1 CONTROL PANEL.
SW[9] – положение этого выключателей не имеет значения.
КЛАВИАТУРА
В режиме кейпада для минимальной конфигурации (SW[1] установлен в положение “0”) задействованы только цифровые клавиши от ‘1’ до ‘0’, а также буквенные ‘A’, ‘B’, ‘C’, ‘D’, ‘E’ и ‘F’. В качестве клавиши ‘ШН’ выступает клавиша ‘Tab’ или кнопка KEY[3] на плате DE1. Сброс можно произвести клавишей ‘Esc’ или кнопкой KEY[0] платы DE1.
В режиме полной клавиатуры (SW[1] установлен в положение “1”) задействованы следующие клавиши:
Для получения символов выделенных синим надо удерживать клавишу SHIFT. Для получения символов выделенных зеленым - клавишу СС. Символ ‘*’ получается одновременным нажатием клавиш SHIFT + CC + ; . Раскладка не идеальна и является компромисом между соответствием клавиш оригиналу, существующими клавишами клавиатуры PS/2 и удобством реализации. Т.к. я прикладываю исходники вы можете переделать раскладку на свой вкус.
Раскладка при нажатой клавише ‘РУС’ выглядит следующим образом:
Так как я использую клавитуру без нанесенных русских символов, то такая раскладка мне даже удобнее - получается что-то вроде транслатиницы. Но если вы посчитаете необходимым, то можете дописать блок переключения раскладки сами используя исходные коды проекта.
