Ага, эта книга у меня есть, почитаю.
Надо думать, что при отжатии РЕД - управляющие коды начинают заноситься в буфер текста и отображаться как мигающие символы.
СДВ - при нажатии переводит терминал в режим настройки параметров управляющей строки.
ОЧС - ( надо думать ) - выполняет повторную инициализацию ( экран очищается ).
ДУП - при нажатии перестаёт посылать на экран локальное эхо нажимаемых клавиш
ЛИН - при нажатии подключает терминал к линии ( а при отжатии что делает - замыкает выход на вход ? )
... И вот что пишут в книге (hint: полностью описана служебная строка):
Скрытый текст
Характер взаимодействия дисплея с внешними устройствами определяется режимными (с фиксацией) клавишами «ЛИН», «ДУП», «ПЧ». Этим клавишам соответствуют следующие режимы работы:
«ЛИН» — «Линия» («Автономный»);
«ДУП» — «Дуплекс» («Полудуплекс»);
«ПЧ» —«Печать» («Передача»),
В скобках указаны режимы, соответствующие выключенной клавише. Включение клавиши обеспечивается ее нажатием до состояния фиксации и индицируется соответствующим светодиодом.
Автономный режим характеризуется отсутствием обмена информацией с внешним устройством. Коды с клавиатуры, соответствующие данным, запоминаются в ЗУ дисплея и отображаются; коды, соответствующие командам, отрабатываются согласно табл. 31. Отработка команд происходит только в режиме «Редактирование»: нажата клавиша «РЕД», при этом загорается соответствующий светодиод. Когда режим «Редактирование» выключен, коды команд записываются в ЗУ дисплея и на экране отображаются с мерцанием частотой 5 Гц. В режиме «Редактирование» символы, соответствующие кодам неотработанных команд, отображаются как «ПРОБЕЛ». Режим «Редактирование» отключается при блочной передаче массива данных.
Передача данных и команд с ЗУ дисплея во внешние устройства может осуществляться в знаковом и блочном режимах. В обоих случаях должны быть установлены режимы «Линия» и «Передача».
Знаковый режим — передача данных и команд только с клавиатуры. Блочный режим — передача данных и команд с ЗУ дисплея. Различие этих режимов для внешнего устройства в том, что они характеризуются разным темпом поступления информации. В первом случае она поступает в темпе работы оператора на клавиатуре, во втором случае обусловлена выбором скорости обмена.
Включение блочного режима производится командами «Передача строки» и «Передача страницы». Данные и команды с клавиатуры игнорируются до конца отра*ботки этих команд. Если в строке 25 установлен режим «Синхронизация обмена», внешнее устройство может прерывать передачу данных и кодов с ЗУ дисплея командами «Прекратить передачу» и «Возобновить передачу». При передаче данных и команд в блочном режиме в дисплее предусмотрена компрессия передачи, которая заключается в том, что пробелы в конце текущей передаваемой строки не передаются, также не передается строка, если она состоит из одних пробелов. При необходимости соблюдения формата передаваемого блока оператор может ввести в строке 25 режим «АВТО ПС, ВК при передаче».
Прием данных и команд в дисплей от внешнего устройства осуществляется только в режимах «Линия» и «Дуплекс».
В режимах «Линия» и «Полудуплекс» данные и команды принимаются как с линии, так и с клавиатуры.
На задней стенке дисплея установлены переключатели, которые могут коммутировать выходы передатчиков на линию с входами приемников с линии: в режиме «СТЫК 2» — положение «Т2», а в режиме «20 мА токовая петля» — положение «Т1».
Если отсутствует связь с внешним устройством в режимах «Линия», «Дуплекс», необходимо установить переключатели в соответствующие положения. При исправности передатчиков и приемников дисплея он будет работать в режиме, соответствующем режиму «Автономный».
Для выполнения дополнительных функций при работе с помощью клавиатуры устанавливаются II—V группы разрядов, отображаемых в служебной строке 25 экрана. Если в разряде стоит 0, то дополнительная функция выполняется, если стоит 1, то не выполняется. В составе служебной строки содержится шесть групп цифр.
Группа I определяет скорость обмена информацией по линиям связи (9600, 4800, 2400, 1200, 600, 300, 150, 75 бит/с).
Во II группе:
разряд 1 — сдвиг маркера;
разряд 2 — автоповтор клавиатуры (позволяет выдавать код нажатой клавиши с частотой 15 Гц, если она нажата более чем 1 с);
разряд 3 — резерв;
разряд 4 — вид маркера (0 — вид 1,1— вид 2).
В III группе:
разряд 1—звуковой сигнал 72 знака в строке (предупреждает оператора, что в строке осталось только восемь позиций);
разряд 2 — звуковой сигнал клавиатуры (сопровождает код нажатой клавиши и привлекает внимание оператора);
разряд 3 — система команд (0 — № 1, 1 —№2);
разряд 4 — синхронизация обмена.
В IV группе:
разряд 1 — резерв;
разряд 2 — фиксация маркера в крайних положениях строки (только для системы команд № 2) (0— нет, 1 — есть);
разряд 3 — АВТО ПС, ВК (0—нет, 1 — есть) для системы команд № 2, если установлена 1, то при нажатии клавиши ПС отрабатывается также и ВК, и наоборот; в любом случае маркер устанавливается на новую строку;
разряд 4 — резерв.
В V группе:
разряд 1—тип контроля (0 — четность, 1—нечетность);
разряд 2 — контроль (0 — нет, 1 — есть);
разряд 3 — АВТО ПС, ВК при передаче;
разряд 4 — индикация строки 25.
В последней VI группе разрядов отображается реальное время, прошедшее от момента включения дисплея или нажатия клавиши «ОЧС». 1-й, 2-й разряды индицируют часы, 3-й, 4-й — минуты, 5-й, 6-й — секунды.
Для изменения содержания служебной строки необходимо выполнить следующие операции:
- нажатием клавиши «СДВ» («Сдвиг») мигающий маркер переводится в начало служебной строки;
- при нажатии клавиши «->» («Маркер вправо») маркер перемещается вправо к необходимому разряду в группе (группы кроме I);
- при нажатии клавиши «[стрелка вниз с точкой]» («Фиксация») изменяется содержимое разряда справа от маркера (в II—V группах содержимое разрядов либо 0, либо 1, в I группе последовательный перебор скоростей обмена);
- при нажатии на клавишу «<-» («Маркер влево») маркер перемещается влево к необходимому разряду.
После отжатия клавиши «СДВ» маркер возвращается на прежнее место, причем в зависимости от установленной функции служебная строка может погаснуть.
Для проверки дисплея можно использовать тест-программу 012101 ТМОС 00011 — 0134 «Тест ДС» или перфоленту 8.842.001—01.
[свернуть]
Последний раз редактировалось shattered; 04.01.2015 в 23:14.
Состояние эмуляции:
- написано cpu core, нужно уточнить тонкости работы с триггером переноса и памятью (в какой момент данные попадают в память? -- типична конструкция ota #0, ota #0, ota #1)
- работает автономный режим. однако символы выводятся не в начале экрана.
- неизвестно, чем отличаются прошивки на 6 ПЗУ и на 5 ПЗУ, предположение -- наличичем режима генерации 7-битных кодов.
Пока не эмулируется:
- запись в порты 6, 14 (линия)
- чтение портов 1, 10
- чтение флага 3, запись флага 7 -- формирование семибитных кодов?
- курсор (в E60TO упоминается, что его может быть 2 вида)
- родная клавиатура с ее режимами и пр.
- звук (это проще всего, но нужно уточнить его частоту)
- линия
В MESS пока нет общего кода для подключения к реальному порту на хосте -- только к pseudo-tty (unix) или named pipe (windows). Есть специфичный код в драйвере TI-99/4 [1], насколько его можно использовать -- неясно.
Затем можно будет сделать украшения:
- пост-обработку для придания вида родного ЭЛТ
- "накладку" на экран с состоянием светодиодов на клавиатуре
[1] http://www.mess.org/people/mizapf/serial_connection
Последний раз редактировалось shattered; 27.02.2013 в 22:24.
А для чего надо знать момент попадания в память внутри этих ota?
---------- Post added at 22:30 ---------- Previous post was at 22:08 ----------
Эти ota, они как бы неразделяемые и формируют весь цикл записи. Формально запись выполняется второй ota#0, начинаясь в третьей четверти цикла выполнения второй команды ota#0 и выборки команды ota#1 (команды выполняются в цикле, следующем за циклом выборки этой команды) и заканчиваясь уже где-то во время цикла выполнения ota#1. Просто цикл записи в память длиннее, чем цикл процессора. А первая ota#0 формирует заранее сигнал включения микросхемы, чтобы она смогла сработать по второй ota#0.
Последний раз редактировалось yursav; 28.02.2013 в 23:32.
Ага, значит, мне надо переделать этот кусок. Сейчас я делаю запись в ota #1, из-за этого, видимо, и часы рисуются неверно, судя по
Код:00000060: D0 lda r0 00000061: F0 ota #$00 00000062: F0 ota #$00 00000063: F8 ota #$08 00000064: F0 ota #$00 00000065: F0 ota #$00 00000066: F1 ota #$01 00000067: F4 ota #$04
Вместо ota#1, в принципе, при записи может быть любая другая ota (ну, не связанная с работой памятью во избежание странных эффектов). ota#1 это как бы ota nop, дающая завершиться нормально циклу записи. В приведенном фрагменте ota#0, ota#0, ota#8 точно также выполнит запись в память и инкремент регистра адреса.
---------- Post added at 22:47 ---------- Previous post was at 22:43 ----------
Сигнал записи в микросхему памяти формируется прямо из ota#0, но первая ota#0 не срабатывает на запись, поскольку еще нет сигнала включения микросхемы памяти, который начинает формироваться от первой ota#0. А вторая ota#0 уже вызывает запись. Но поскольку цикл записи продолжается и после второй ota#0 (память медленная), нужна еще одна "левая" ota.
При этом свое обычное действие она (ota #8) тоже выполняет?
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)