Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Тема: Эмулятор ДВК. Двк эмулятор


Эмулятор ДВК

Эмулятор терминала.

1. Основные сведения. ---------------------------

Для вывода информации в "эмуляторе ДВК" используется универсальный эмулятор терминала, предоставляемый объектом Terminal.

Терминал эмулирует систему команд VT52 и по своим особенностям наиболее близок к терминалу 15ИЭ-00-013.

...

Когда число строк, выведенных на экран терминала, превышает 24 - они уходят с экрана вверх и становятся доступны для просмотра при помощи скроллинга, осуществляемого перемещением слайдера ( находящегося сбоку от внутреннего окна терминала ), или вращением колеса мыши.

В буфере скроллинга находятся 1200 последних выведенных строк.

...

Настройки скорости порта BPS и CPS Лимит никак не связаны с работой терминала. При начале работы - терминал отправляет во входной поток байтов команды протокола ByteStream для определения характеристик и возможностей подключенного порта. Если подключенный порт допускает удалённую настройку характеристик - эта возможность реализуется терминалом. В противном случае - кнопки BPS и CPS Лимит блокируются:

Скрытый текст

[свернуть]

При непрерывном выводе информации на экран - терминал определяет скорость вывода в символах в секунду ( CPS ) и сообщает её в графе CPS полосы статуса внутреннего окна:

Скрытый текст

[свернуть]

...

При нажатии комбинации клавиш <Shift><Insert> - содержимое буфера обмена вставляется в клавиатурный ввод.

При нажатии клавиши <Print Screen> - в буфер обмена помещается текстовая копия текущего экрана ( и всех последующих экранов, если в результате скроллинга текущий экран не является последним ).

...

Четыре кнопки после BPS ( в конфигурации по-умолчанию это [Шрифт][Auto][В][Lc] ) позволяют настроить характеристики шрифта, используемого при выводе информации.

Если нажать кнопку [Lc] ( при этом она превратится в кнопку [LЦ] ) - маленькие буквы на экране станут большими буквами противоположного алфавита:

Скрытый текст

[свернуть]

Кнопка [В] позволяет изменять "жирность" шрифта, кнопка [Шрифт] - позволяет выбрать для отображения информации любой из установленных в системе моноширинных шрифтов:

Скрытый текст

При выборе шрифта, имеющего только один вариант размера - кнопка выбора размера шрифта блокируется. Во всех остальных случаях её значение по-умолчанию [Auto], что означает автоматический выбор максимально допустимого размера шрифта.

В этом режиме, если увеличить размера окна эмулятора - окно терминала также увеличится и размер шрифта в окне терминала станет больше:

Скрытый текст

[свернуть]

Нажав кнопку размера шрифта - можно установить любой фиксированный его размер, меньший автоматического:

Скрытый текст

При этом следует отметить, что варианты размеров выбранного шрифта могут весьма значительно отличаться, в зависимости от выбранной "жирности":

Скрытый текст

[свернуть]

Например, вот такой вариант шрифта Courier New доступен только в "жирном" режиме:

Скрытый текст

[свернуть]

...

По умолчанию использование сглаживания шрифтов в окне терминала запрещено. Для отмены этого запрета - нужно установить в 0 значение параметра bFontAntialiasDisable в ini-секции объекта типа Terminal в .cfg-файле эмулируемой конфигурации. Для "эмулятора ДВК" в конфигурации по-умолчанию - это секция [VT52.ini].

В таком случае, при включённом в Windows сглаживании шрифтов - они будут сглаживаться и в окне терминала, что также иногда приводит к радикальному изменению вида шрифта:

Скрытый текст

[свернуть]

Если фокус ввода находится в окне терминала, то при вращении колеса мыши с нажатой клавишей <Ctrl> - используемый размер шрифта будет увеличиваться или уменьшаться в зависимости от направления вращения.

...

При нажатой кнопке [Лог] - выводимые на экран строки копируются в файл с именем объекта и расширением .log Для "эмулятора ДВК" в конфигурации по-умолчанию - это файл VT52.log. Состояние Log объекта типа Terminal фиксируется в ini-секции объекта в файле конфигурации (строчка InitialStateOf[Log] ). Если установить там 1, то все строки, выведенные на экран с начала работы эмулятора - попадут в файл VT52.log.

Каждая выводимая на экран строка копируется в лог только при выводе символа конца строки. Поэтому, если при работе в мониторе RT-11 набрать команду, нажать кнопку [Лог] и клавишу <Enter> - набранная до нажатия кнопки [Лог] строка попадёт в лог целиком.

...

Индикатор RUS/LAT ( находящийся преимущественно в состоянии LAT ) - "кликабелен". При клике мышью на этом индикаторе - он изменяет состояние RUS/LAT без отправки каких-либо кодов в выходной поток. Эта возможность позволяет восстановить "синхронизацию с языком", когда из-за сбоя в выполняемой эмулятором программе ДВК ( или по иной причине ), при выходе из программы в монитор RT-11 - на экран не посылается код <Lat> ( 017 ):

Скрытый текст

[свернуть]

zx-pk.ru

Игра «LAND» для ДВК-3. Реинкарнация под Windows / Хабр

В далеком 1988 году, будучи шестиклассником, я впервые познакомился с компьютером. Тем, кто не знает ─ это был ДВК-3М с интегрированным черно-белым дисплеем и двумя пятидюймовыми дисководами. Но сейчас не о нём. Мое первое знакомство состоялось с играми от ASP corp. ─ тройке ребят-программистов, которые специализовались на компьютерах семейства ДВК.

Какие-то предприимчивые люди установили в нашей школе пару ДВК-3М и закрепили тариф в 1 советский рубль за 1 игровой час. Мы экономили на обедах, а кое-кто клянчил деньги у родителей, чтобы поиграть после уроков в Звездный патруль, Тетрис, Зону, Cat, Garden, Sheriff и конечно же LAND! С тех пор я испытываю сентиментальные чувства ко всему связанному с теми играми и компьютерами, прямо как Джон Коннор к Терминатору первой модели.

Особенной популярностью пользовалась игра LAND. Это был такой себе вариант Lode Runner, но мы были в восторге! Прошло много лет, эти компьютеры безнадежно устарели и перестали встречаться в природе, но ностальгические чувства периодически давали о себе знать и появлялось желание вспомнить детство и поиграть. Цель игры LAND состоит в том, чтобы собрать все сундуки на данном уровне и добраться до двери на следующий уровень. Остерегайтесь демонов и биомассы. Вы можете бегать, взбираться по лестницам, уничтожать кирпичные стены, стреляя в них. Обратите внимание, что разрушенные кирпичи восстанавливаются со временем. Демоны не могут быть убиты. Если демон умирает от попадания в биомассу, в верхней части экрана появляется новый.

Идея сделать Windows версию меня посещала достаточно давно и неоднократно, но все как-то не доходили руки. В итоге я твердо решил воплотить задуманное в жизнь и, первое что сделал ─ я попытался связаться с авторами игры, в надежде раздобыть хотя бы спрайты и тайминги всех актеров. Мне удалось связаться с хабраюзером Александром Гречишкиным, автором игры, но, к сожалению, никаких исходников не сохранилось. Игра была написана в 1986 году на ассемблере, поэтому даже наличие исходников мне врядли помогло бы. Хочу предупредить заранее, что далее я не буду глубоко вдаваться в технические детали.

Немного поразмыслив, я принял решение снимать скриншоты с эмулятора УКНЦ (совместимый с ДВК советский микрокомпьютер), самостоятельно резать спрайты и переносить уровни игры вручную, отрисовывая их в текстовом редакторе.

В качестве платформы для разработки игры был выбран XNA framework 4.0. Не секрет, что Microsoft отказался от дальнейшего развития этого фреймворка, но его open source реализация MonoGame живет и процветает. От себя добавлю, что несмотря на некоторые незначительные ошибки в MonoGame, я за 10 минут успешно перевел проект с XNA на MonoGame. Так же XNA оказался очень простой и понятной штукой, что касается 2D.

Скриншоты с эмулятора я обрабатывал в Photoshop, увеличивая нарезанный материал в 2 раза. Проект содержит 2 набора одинаковых спрайтов, под белый и черный фон, как было сделано в оригинальной игре.

Карты локаций представляют из себя массив 50 x 16 знакомест. Все карты хранятся в текстовых файлах и, при необходимости, могут быть отредактированы в текстовом редакторе с шрифтом фиксированной ширины. Так же я добавил возможность самостоятельно генерировать свои наборы карт и подключать их к игре. Для этого нужно создать свой банк карт в папке Content/Maps и наполнить картами по шаблону из файла map.template, который лежит там же. Игра включает 2 набора карт от оригинальных игр, которые встречаются в интернете.

Фактически, вся игра — это отображние изменяющейся во времени копии массива уровня, а актеры — комната, биомасса, демоны, пуля и герой, влияют на состояние этого массива. Независимо двигаются только демоны, пуля и герой.

Тайминги актеров пришлось подбирать вручную, «на глазок». Но получилось достаточно приближенно к оригиналу.

Управление простое, как во всех подобных играх:

  • Клавиши управления курсором — движение героя;
  • Z,X — выстрел влево и вправо;
  • Q — начать игру с начала;
  • R — начать уровень с начала с потерей одной жизни;
  • ; — следующий уровень;
  • F10 — переключиться на следующий набор карт;
  • F12 — игра в полный экран;
Видео гемплея

Исходники можно найти на github или скачать инсталятор с собранной игрой (к исходникам прошу сильно не придираться, писалось Just4Fun).

Ну, а теперь приглашаю всех ностальгировать вместе со мной.

habr.com

Эмулятор PDP-11 или просто о ДВК

Сегодня рассмотрим Эмулятор 16 битного компьютера PDP-11, познакомимся с отечественным ДВК и маленько по программируем на моем любимом Бэйсике.

❶ Что же такое ДВК? ДВК - это Отечественный Диалоговый вычислительный комплекс.

Как я узнал, ДВК - семейство советских ЭВМ середины 80-x и начала 90-x годов 20-го века. Первая модель разработана в 1981 году, но началась выпускаться с 82-го.

Архитектура ДВК повторяет мини-ЭВМ фирмы DEC PDC-11 и PDP-11, но на более современной элементной базе.

Как вы уже поняли, ДВК без проблем умещалась на письменном столе:

090829 1055503 300x200 Эмулятор PDP 11 или просто о ДВК

На фотографии изображен ДВК-2

Что мы видим? Монитор, клавиатура и "ящик" на котором стоит монитор, на котором еще имеются три переключателя, так называемые "клювики". Переводя на сегодняшний язык можно сказать, что это сам системник или грубо говоря компьютер. Монитор можно было подключать не только к ДВК, как процитировано ниже.

Все компьютеры семейства ДВК были программно и аппаратно (по шине МПИ) совместимы с серией управляющих Микро-ЭВМ Электроника-60, МС 1212 и СМ-1425.

Наш клон не ставил перед собой больших задач, по этому первая модель ДВК имела объем оперативной памяти всего 48 килобайт, в качестве накопителей использовались 5,25 дюймовые дисководы объемом 720 килобайт. Единственным его преимуществом перед Спектрумом был быстрый 16 битный процессор. В дальнейшем объем оперативной памяти компьютеров серии ДВК был увеличен до 265 килобайт, а так же добавлена поддержка жестких дисков MFM объемом до 10 мегабайт, что сделало их довольно серьезными персональными компьютерами для моделирования и разработок.

Главным минусом ДВК было отсутствие нормального графического контроллера. Точка могла иметь только два цвета – либо светиться, либо быть темной, что делало невозможным графически оценить построенную при проектировании модель и увидеть допущенные ошибки, ну и на этом судьба ДВК сразу была предрешена.

❷ Эмулятор PDP-11 - ДВК-1.

Как все это работало?

Пользователь вставлял в дисковод системную дискету, включал питание компьютера, после того, как операционная система RT-11 загружалась, человек вставлял во второй дисковод дискету с программами и начинал работать.

Давайте приступим. Скачиваем, распаковываем и запускаем pdp11.exe

При запуске мы увидим экран компьютера ДВК и процесс загрузки ОС RT-11 SB V05.07. Компьютер не имеет BIOS, то при загрузке попросит ввести дату и время, изменяется она стрелками вверх и вниз, после как установили жмем ввод (Enter). Вводить дату и время  не обязательно. После полной загрузки мы увидим такой экран:

ДВК1 300x225 Эмулятор PDP 11 или просто о ДВК

Приветствие начинается с точки. Команды вводятся после точки.

  • TIME: выводит время или устанавливает время
  • DATE: выводит или устанавливает дату
  • BASIC: вызывает интерпретатор BASIC
  • DELETE: стирает файл с устройства

Команд много, посмотреть можно тут#1 или тут#2

Теперь давайте напишем программу на языке программирования BASIC, который изучали в старших классах или в институтах.

В командную строку напишем команду:  BASIC

При запуске интерпретатора появится вопрос, использовать все функции или только необходимые. В ответ пишем ALL (все функции) и жмем Enter. В ответ мы увидим приглашение: READY

Если кто программировал в QBasic (лично я только там с этим познакомился), то ему будет знакомо, что каждая строка нумеруется с шагом 10 для случая если придется править программу.

Напишем программу, которая запросит ввести три числа. Два числа перемножаться, а третье прибавиться.

10 PRINT "A" 20 INPUT A 30 PRINT "B" 40 INPUT B 50 PRINT "C" 60 INPUT C 70 LET X=A*B+C 80 PRINT "X="; X 90 END

Запустить программу на исполнение можно командой RUN, которую напишем после: 90 END. Она является командой интерпретатора BASIC, а не командой ОС. После ввода команды RUN, нам придется ввести числа. После ввода чисел у нас выполнится вычисление A*B+C (сначала умножение, потом сложение) и результат будет записан в переменную X. После вывода результата появится сообщение READY, говорящее, что можно вводить команды или сохранить программу.

Первая программа при запуске на исполнение и после исполнения:

1111 Эмулятор PDP 11 или просто о ДВК

2222 Эмулятор PDP 11 или просто о ДВК

Разберем команды, которые мы использовали:

  • PRINT: выводит на экран сообщение
  • INPUT: считывает веденные данные с клавиатуры
  • LET: предназначена для арифметических операций
  • END: завершение программы

Список команд и примеры программ можно найти в Интернете.

Для прикола:

10 PRINT "V" 20 INPUT V 30 IF V <= 16 THEN PRINT "BAD" 40 IF V >= 18 THEN PRINT "GOOD" 50 IF V = 17 THEN PRINT "RELEASE ;D" 60 END

3333 Эмулятор PDP 11 или просто о ДВК

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

После READY, пишем: SAVE ABC.BAS и жмем Enter

Наша программа сохранится, только не понятно где, но при выключении эмулятора - файл не удаляется, то есть, мы сохранили, включили BASIC, прописали OLD ABC.BAS и наша программа будет загружена. После READY остается только написать команду RUN.

4444 Эмулятор PDP 11 или просто о ДВК

Чтобы выйти из Бэйсика, остается только прописать команду BYE и мы снова окажемся в командой строке ОС

Думаю на этом все. Буду дальше разбираться и учиться. Огромное спасибо этой статье.

Похожие записи:

ds-release.ru

Эмулятор ДВК

Эмулятор терминала.

1. Основные сведения. ---------------------------

Для вывода информации в "эмуляторе ДВК" используется универсальный эмулятор терминала, предоставляемый объектом Terminal.

Терминал эмулирует систему команд VT52 и по своим особенностям наиболее близок к терминалу 15ИЭ-00-013.

...

Когда число строк, выведенных на экран терминала, превышает 24 - они уходят с экрана вверх и становятся доступны для просмотра при помощи скроллинга, осуществляемого перемещением слайдера ( находящегося сбоку от внутреннего окна терминала ), или вращением колеса мыши.

В буфере скроллинга находятся 1200 последних выведенных строк.

...

Настройки скорости порта BPS и CPS Лимит никак не связаны с работой терминала. При начале работы - терминал отправляет во входной поток байтов команды протокола ByteStream для определения характеристик и возможностей подключенного порта. Если подключенный порт допускает удалённую настройку характеристик - эта возможность реализуется терминалом. В противном случае - кнопки BPS и CPS Лимит блокируются:

Spoiler

[hide]

При непрерывном выводе информации на экран - терминал определяет скорость вывода в символах в секунду ( CPS ) и сообщает её в графе CPS полосы статуса внутреннего окна:

Spoiler

[hide]

...

При нажатии комбинации клавиш <Shift><Insert> - содержимое буфера обмена вставляется в клавиатурный ввод.

При нажатии клавиши <Print Screen> - в буфер обмена помещается текстовая копия текущего экрана ( и всех последующих экранов, если в результате скроллинга текущий экран не является последним ).

...

Четыре кнопки после BPS ( в конфигурации по-умолчанию это [Шрифт][Auto][В][Lc] ) позволяют настроить характеристики шрифта, используемого при выводе информации.

Если нажать кнопку [Lc] ( при этом она превратится в кнопку [LЦ] ) - маленькие буквы на экране станут большими буквами противоположного алфавита:

Spoiler

[hide]

Кнопка [В] позволяет изменять "жирность" шрифта, кнопка [Шрифт] - позволяет выбрать для отображения информации любой из установленных в системе моноширинных шрифтов:При выборе шрифта, имеющего только один вариант размера - кнопка выбора размера шрифта блокируется. Во всех остальных случаях её значение по-умолчанию [Auto], что означает автоматический выбор максимально допустимого размера шрифта.

В этом режиме, если увеличить размера окна эмулятора - окно терминала также увеличится и размер шрифта в окне терминала станет больше:

Spoiler

[hide]

Нажав кнопку размера шрифта - можно установить любой фиксированный его размер, меньший автоматического:При этом следует отметить, что варианты размеров выбранного шрифта могут весьма значительно отличаться, в зависимости от выбранной "жирности":

Spoiler

[hide]

Например, вот такой вариант шрифта Courier New доступен только в "жирном" режиме:

Spoiler

[hide]

...

По умолчанию использование сглаживания шрифтов в окне терминала запрещено. Для отмены этого запрета - нужно установить в 0 значение параметра bFontAntialiasDisable в ini-секции объекта типа Terminal в .cfg-файле эмулируемой конфигурации. Для "эмулятора ДВК" в конфигурации по-умолчанию - это секция [VT52.ini].

В таком случае, при включённом в Windows сглаживании шрифтов - они будут сглаживаться и в окне терминала, что также иногда приводит к радикальному изменению вида шрифта:

Spoiler

[hide]

Если фокус ввода находится в окне терминала, то при вращении колеса мыши с нажатой клавишей <Ctrl> - используемый размер шрифта будет увеличиваться или уменьшаться в зависимости от направления вращения.

...

При нажатой кнопке [Лог] - выводимые на экран строки копируются в файл с именем объекта и расширением .log Для "эмулятора ДВК" в конфигурации по-умолчанию - это файл VT52.log. Состояние Log объекта типа Terminal фиксируется в ini-секции объекта в файле конфигурации (строчка InitialStateOf[Log] ). Если установить там 1, то все строки, выведенные на экран с начала работы эмулятора - попадут в файл VT52.log.

Каждая выводимая на экран строка копируется в лог только при выводе символа конца строки. Поэтому, если при работе в мониторе RT-11 набрать команду, нажать кнопку [Лог] и клавишу <Enter> - набранная до нажатия кнопки [Лог] строка попадёт в лог целиком.

...

Индикатор RUS/LAT ( находящийся преимущественно в состоянии LAT ) - "кликабелен". При клике мышью на этом индикаторе - он изменяет состояние RUS/LAT без отправки каких-либо кодов в выходной поток. Эта возможность позволяет восстановить "синхронизацию с языком", когда из-за сбоя в выполняемой эмулятором программе ДВК ( или по иной причине ), при выходе из программы в монитор RT-11 - на экран не посылается код <Lat> ( 017 ):

Spoiler

[hide]

vb4.zx-pk.ru

Эмулятор ДВК - Страница 2

Эмулятор терминала.

2. Настройки клавиатуры. ------------------------------

Базовые параметры объектов типа Terminal находятся в ini-файле класса - Terminal.ini.

Любой из этих параметров может быть переопределён для конкретного экземпляра объекта типа Terminal в ini-секции такого объекта в файле конфигурации.

Например.

В файле Terminal.ini из комплекта поставки эмулятора для клавиши <F12> задана такая подставляемая строка:

Код:

ANSI_STR_FOR_KEY[F12] = "F12 " А в секции [VT52.ini] файла default.cfg такая:

Код:

ANSI_STR_FOR_KEY[F12] = "f12 " Запустив эмулятор в конфигурации по-умолчанию и нажав клавишу <F12> можно проверить, какая из подстановок будет выполнена.

Всего можно определить в файле Terminal.ini и переопределить в ini-секциях объектов типа Terminal в файлах конфигурации подставляемые строки для следующих клавиш:

Код:

ANSI_STR_FOR_KEY[F1] = "Help me !!! " ANSI_STR_FOR_KEY[F2] = "Dir\015" ANSI_STR_FOR_KEY[F3] = "F3 " ANSI_STR_FOR_KEY[F4] = "F4 " ANSI_STR_FOR_KEY[F5] = "\033g" ANSI_STR_FOR_KEY[F6] = "\033h" ANSI_STR_FOR_KEY[F7] = "\033S" ANSI_STR_FOR_KEY[F8] = "\033c" ANSI_STR_FOR_KEY[F9] = "\033\024" ANSI_STR_FOR_KEY[F10] = "\033\010" ANSI_STR_FOR_KEY[F11] = "\033\023" ANSI_STR_FOR_KEY[F12] = "F12 " ANSI_STR_FOR_KEY[Insert] = "\033P" ANSI_STR_FOR_KEY[Delete] = "\033e" ANSI_STR_FOR_KEY[Home] = "\033Q" ANSI_STR_FOR_KEY[End] = "\033f" ANSI_STR_FOR_KEY[PageUp] = "\033R" ANSI_STR_FOR_KEY[PageDown] = "\033d" ANSI_STR_FOR_KEY[PF1] = "\033P" ANSI_STR_FOR_KEY[Pad_Slash] = "\033Q" ANSI_STR_FOR_KEY[Pad_Star] = "\033R" ANSI_STR_FOR_KEY[Pad_Minus] = "\033S" ANSI_STR_FOR_KEY[Pad_Plus] = "\012" ANSI_STR_FOR_KEY[LCtrl] = "\016" ANSI_STR_FOR_KEY[RCtrl] = "\017" ANSI_STR_FOR_KEY[LWin] = "\016" ANSI_STR_FOR_KEY[RWin] = "\017" ANSI_STR_FOR_KEY[LAlt] = "\016" ANSI_STR_FOR_KEY[RAlt] = "\017" ANSI_STR_FOR_KEY[Apps] = "\012" Легко заметить, что в конфигурации по-умолчанию - клавиши <Ctrl>, <Win> и <Alt>, расположенные слева от пробела - генерят код перехода на русский регистр ( 016 ), а расположенные справа - код перехода на латинский регистр ( 017 ).

Клавиша <Apps> генерит по-умолчанию код LF ( 012 ).

Код, назначенный для клавиши PF1 :

Код:

ANSI_STR_FOR_KEY[PF1] = "\033P" генерится при нажатии на клавишу <Num Lock>, но только в том случае, если параметр Use_NumLock_as_PF1 имеет действующее значение 1.

По умолчанию параметры управления клавиатурой таковы:

Код:

KeyboardControlling = 1 NumLockControlling = 1 NumpadSwapping = 1 Use_NumLock_as_PF1 = 0 Параметр KeyboardControlling разрешает или запрещает терминалу имитировать нажатия на клавиши <Num Lock>, <Caps Lock> и <Scroll Lock>.

Параметр NumLockControlling позволяет выборочно запретить терминалу имитировать нажатия на клавишу <Num Lock>.

Параметр NumpadSwapping отвечает за имитацию эмулятором терминала - цифрового и дополнительного клавиатурных блоков терминала 15ИЭ-00-013. При имитации терминала VT52 этот параметр лучше установить в 0, а при имитации 15ИЭ-00-013 - в 1.

Если NumpadSwapping = 1, то при включенном <Num Lock> - KEYPAD PC-шной клавиатуры имитирует NUMPAD терминалов VT52 и 15ИЭ-00-013, а стрелки PC-шной клавиатуры - имитируют стрелки терминалов VT52 и 15ИЭ-00-013 ( режим по-умолчанию ), тогда как при выключенном <Num Lock> - KEYPAD PC-шной клавиатуры имитирует KEYPAD клавиатуры 15ИЭ-00-013 ( отсутствующий у VT52 ), а стрелки PC-шной клавиатуры - имитируют клавиши 4, 5, 6 и 8 NUMPAD.

Поскольку большинство динамичных игр для PDP-11 управляются клавишами 4, 5, 6 и 8 NUMPAD - выключив <Num Lock> в режиме NumpadSwapping = 1 - можно передать эти функции стрелкам.

Но главное в том, что большинство программ для ДВК управляются кодами клавиш KEYPAD клавиатуры 15ИЭ-00-013. Поэтому, при выключенном <Num Lock> в режиме NumpadSwapping = 1 такие программы можно использовать более привычным и естественным образом.

...

В окне терминала клавиши <Alt>, <F10>, <Win> и <Apps> не выполняют своих системных функций, а генерят коды наравне с другими клавишами.

Клавиши <Ctrl> генерят назначенные им коды только при одиночном нажатии, тогда как при нажатии совместно с другими клавишами - обеспечивают генерацию управляющих кодов.

В режиме KeyboardControlling = 1:

1. При каждом получении фокуса ввода окном объекта типа Terminal - объект запоминает текущее состояние параметров <Num Lock>, <Caps Lock> и <Scroll Lock> клавиатуры и восстанавливает свой контекст, а при потере фокуса - осуществляет обратную операцию.

Каждый экземпляр терминала имеет свой собственный контекст состояний клавиатуры.

2. Одиночное нажатие на левую клавишу <Shift> всегда устанавливает <Caps Lock>, а одиночное нажатие на правую клавишу <Shift> - всегда сбрасывает <Caps Lock>.

3. Последовательные нажатия на клавишу <Scroll Lock> посылают в выходной поток коды <Ctrl/S> и <Ctrl/Q>.

zx-pk.ru

Эмулятор ДВК - Страница 155

Грядущее появление эмулятора интерфейса часов реального времени HClock, реализуемого в виде эмулятора привода дискового устройства, подключаемого к контроллеру HD - означает не только необходимость создания API эмуляции приводов, но и то, что вторым кандидатом на реализацию в виде "магического дискового привода" становится интерфейс монтирования HMount.

При реализации интерфейса монтирования в виде дискового устройства ( с номером привода 0432 = 282 ) принципиальным вопросом становится - отдавать пользователю весь список текущего монтирования одним "безразмерным блоком" с номером блока 0 или оформлять информацию о каждой точке монтирования отдельным блоком. Учитывая, что интерфейс монтирования допускает указание как относительных, так и абсолютных путей - превышение общим списком всех точек монтирования размера 64 Кб - выглядит вполне реальной возможностью, а раз так - есть смысл предусмотреть как возвращение пользователю всей информации монтирования одним блоком, так и возвращение информации о каждой точке монтирования отдельным блоком.

Тогда спецификация работы с приводом HMount через контроллер HD будет выглядеть так:

1. Для выбора интерфейса монтирования нужно задать контроллеру HD номер привода 282. Если контроллер HD не имеет доступа к интерфейсу монтирования - возвращается ошибка с кодом IE_OFL = "устройство offline".

2. Запрос размера устройства возвращает количество доступных точек монтирования + 3.

3. Все блоки HMount являются "безразмерными", поэтому содержат в первом слове размер блока в байтах. Правила чтения/записи блоков HMount совпадают с аналогичными правилами для таймблоков HClock.

4. Блок 0 доступен для чтения и записи. При чтении возвращается блок информации о текущем монтировании в виде последовательности команд монтирования, разделённых байтами <CR><LF>. Если какой-то привод не смонтирован - сразу за символом '=' идут байты <CR><LF> Например:

Код:

HD0=HDSYS.DSK<015><012>HD1=<015><012>HD2=C:\Documents and Settings\WORK_DIR\<000> Если размер блока >= 64 Кб - слово размера блока содержит 000. Уместно напомнить, что количество реально передаваемых пользователю слов не может превышать текущее значение счётчика слов WordCount, задаваемое командой контроллера HD "установить счётчик слов". При записи программа посылает контроллеру блок аналогичного формата, содержащий произвольное количество команд монтирования, разделённых байтами <CR><LF>. Для размонтирования привода - команда монтирования не должна иметь аргумента. Например: "MX1=".

5. Блок 1 предназначен для просмотра содержимого SD-карты ( подробнее ЗДЕСЬ ).

6. Блок 2 доступен только для чтения и содержит список всех доступных точек монтирования в виде последовательности символов ASCII, разделённых байтами <CR><LF>. Например:

Код:

HD0<015><012>HD1<015><012>HD2<015><012>HD3<000> 7. Все последующие блоки доступны только для чтения и содержат информацию о текущем монтировании точек из списка монтирования, возвращаемого при чтении блока 2, в порядке их присутствия в списке. Формат совпадает с форматом одиночной команды монтирования, если привод смонтирован, или команды размонтирования, если привод размонтирован. Например:

Код:

MX1=E:\ARHIV\PDP11.DSK\FRESH\MX40.DSK Нужно помнить, что все читаемые и записываемые блоки HMount имеют в первом слове размер блока в байтах.

При невозможности выполнить переданную команду монтирования - возвращается ошибка с кодом IE_OFL, если указанное устройство недоступно для монтирования или IE_NUM = "параметр вне диапазона" ( 0356 ), если нарушен формат команды, монтируемый путь не найден или тип пути ошибочен ( например, не все эмулируемые контроллеры позволяют монтировать каталоги, вместо DSK-образов ). Если переданный блок монтирования содержит более одной команды - команды монтирования выполняются последовательно, безотносительно к успешности выполнения предыдущей команды, но при наличии хотя бы одной ошибочной команды - в итоге возвращается ошибка.

- - - Добавлено - - -

Пробелы и табуляции между именем точки монтирования, символом '=' и путём монтирования должны игнорироваться, поэтому передаваемые контроллеру команды монтирования могут выглядеть так:

MX1 = E:\ARHIV\PDP11.DSK\FRESH\MX40.DSK

- - - Добавлено - - -

Если конкретный аппаратный контроллер, реализующий интерфейс HMount, может гарантировать, что размер нулевого блока с полным списком монтирования всегда может быть прочитан в буфер пользователя разумного размера - возможна сокращённая реализация интерфейса с обработкой только чтения и записи нулевого блока. В таком случае запрос размера устройства для привода 282 должен возвращать 1 ( если просмотр содержимого карты не поддерживается ) или 2 ( если блок 1 поддерживается ), а попытка задания больших номеров блока - возвращать ошибку "выход за пределы устройства".

zx-pk.ru

Эмулятор ДВК - Страница 40

Проверил сегодня тест правильности работы процессора ВМ2 для УКНЦ на эмуляторе ДВК, он практически замечательно там запускается. Единственные глюки - при ожидании ввода нажатия клавиши эмуль останавливается, загорается HOLD (почему?). И немножко лишних символов печатается.

Теперь по сути теста. Тест по сути - полный перебор всех сочетаний аргументов и флагов команд. На реальном УКНЦ, EmuStudio и UKNCBTL - полностью работает.

На эмуляторе ДВК (v 0.90), судя по тесту, неправильно эмулируется команда SBC. Что же касается команд деления и умножения, то их тестирование тоже проваливается, но, это, видимо, потому, что их попросту нет на ВМ1 (я с ним не очень знаком), и они эмулируются софтварно.

Исходник и тест можно взять тут.

Лог теста тут:

Скрытый текст

Код:

Тест процессора КР1801ВМ2 v0.1a (c) by dr.Titus Тестирование правильности выполнения команд процессора: Однооперандные байтовые команды: NOP - OK MOVB - OK CLRB - OK COMB - OK INCB - OK DECB - OK NEGB - OK TSTB - OK ROLB - OK RORB - OK ASRB - OK ASLB - OK ADCB - OK SBCB - OK SXT - OK Однооперандные словные команды: MOV - OK CLR - OK COM - OK INC - OK DEC - OK NEG - OK TST - OK ROL - OK ROR - OK ASR - OK ASL - OK ADC - OK SBC - ERROR: 0x92CB / 0xFA3A SWAB - OK Двухоперандные байтовые команды: CMPB - OK BITB - OK BICB - OK BISB - OK Двухоперандные словные команды (частичный тест): ADD - OK SUB - OK CMP - OK BIT - OK BIC - OK BIS - OK XOR - OK Команды работы с флагами: CLx - OK SEx - OK Команды условных переходов: Bcc - OK Команда умножения (частичный тест): MUL (even/even) - ERROR: 0x14B4 / 0x534D MUL (even/odd) - ERROR: 0xD23D / 0x7E18 MUL (odd/odd) - ERROR: 0xFD9A / 0x25ED MUL (odd/even) - ERROR: 0x35BA / 0xF453 MUL (table) - OK Команды сдвига (частичный тест): ASH (test 1) - OK ASH (test 2) - OK ASHC (even) - OK ASHC (odd) - OK Команда деления (частичный тест): DIV (even) - ERROR: 0x4B4E / 0x3AE8 DIV (odd) - ERROR: 0x7704 / 0x135F DIV (odd) - ERROR: 0x7704 / 0x135F

[свернуть]

zx-pk.ru


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..