Входной буфер терминала: различия между версиями
AtH (обсуждение | вклад) (Новая страница: «'''Входной буфер терминала''' (''англ.'' Terminal Input Buffer, TIB) располагается в начале Регистры бай…») |
AtH (обсуждение | вклад) |
||
(не показано 16 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
'''Входной буфер терминала''' (''англ.'' Terminal Input Buffer, TIB) располагается в начале [[Регистры байтовых данных|области байтовых данных]] и предназначен для ввода слов [[Каллисто]] с клавиатуры ЭКВМ. Адрес начала | '''Входной буфер терминала''' (''англ.'' Terminal Input Buffer, TIB) располагается в начале [[Регистры байтовых данных|области байтовых данных]] и предназначен для ввода слов [[Каллисто]] с клавиатуры ЭКВМ. [[Единое адресное пространство|Адрес]] начала ''входного буфера'' даёт стандартное слово [[TIB]], в [[Каллисто|Каллисто 1.0]] он всегда равен 11000. | ||
Переключением входного потока на внешнюю память и обратно управляет стандартная переменная [[BLK]] (сокращение от англ. block — блок), значение которой проверяется каждый раз в слове [[WORD]]. Если это нуль, то в качестве входного потока служит буфер TIB, в противном случае это значение рассматривается, как номер | В [[Каллисто|Каллисто 1.0]] размер TIB равен 96 байт, чтобы вместить максимальную вводимую с пульта строку в 94 символа и два завершающих нуля. | ||
Данный ''буфер'' представляет собой входной поток, откуда слово [[WORD]] выбирает слова. По исчерпании входного потока [[Каллисто]] вводит в этот ''буфер'' новый текст, получаемый от программиста. Ввод в этот буфер осуществляется встроенным оператором [[QUERY]]. | |||
Переключением входного потока на внешнюю память и обратно управляет стандартная переменная [[BLK]] (сокращение от англ. block — блок), значение которой проверяется каждый раз в слове [[WORD]]. Если это нуль, то в качестве входного потока служит ''буфер TIB'', в противном случае это значение рассматривается, как номер [[блок]]а на электронном диске, который используется как входной поток (этот [[блок]] переносится в оперативную память словом [[BLOCK]]). Текущая позиция во входном потоке хранится в стандартной переменной [[⟩IN|>IN]] (от англ. in — вход). | |||
== Исчерпание входного потока == | |||
Конец входного потока в оперативной памяти отмечается [[Символ с кодом 0|нулевым кодом]]. Слово [[WORD]], «натыкаясь» на [[Символ с кодом 0|нулевой код]], возвращает в качестве результата пустую строку, при этом в список [[FORTH]] включена [[Пустое слово|словарная статья для такого «пустого» слова]]. Оно имеет признак [[IMMEDIATE|немедленного исполнения]] и поэтому [[INTERPRET|текстовый интерпретатор]] его всегда [[EXECUTE|исполняет]], независимо от [[STATE|своего состояния]]. Исполнение [[Пустое слово|«пустышки»]] состоит в прекращении [[INTERPRET|интерпретации]] данного входного потока и тем самым позволяет избежать дополнительных проверок на его исчерпание. | |||
Такая «кухня» — популярный в Форте трюк. От него постепенно избавляются в стандартах, предлагая более гибкий механизм EVALUATE, который намечен к реализации в [[Каллисто 2.0]]. | |||
[[Категория: Структуры данных Каллисто]] | [[Категория: Структуры данных Каллисто]] |
Текущая версия от 01:09, 18 июня 2016
Входной буфер терминала (англ. Terminal Input Buffer, TIB) располагается в начале области байтовых данных и предназначен для ввода слов Каллисто с клавиатуры ЭКВМ. Адрес начала входного буфера даёт стандартное слово TIB, в Каллисто 1.0 он всегда равен 11000.
В Каллисто 1.0 размер TIB равен 96 байт, чтобы вместить максимальную вводимую с пульта строку в 94 символа и два завершающих нуля.
Данный буфер представляет собой входной поток, откуда слово WORD выбирает слова. По исчерпании входного потока Каллисто вводит в этот буфер новый текст, получаемый от программиста. Ввод в этот буфер осуществляется встроенным оператором QUERY.
Переключением входного потока на внешнюю память и обратно управляет стандартная переменная BLK (сокращение от англ. block — блок), значение которой проверяется каждый раз в слове WORD. Если это нуль, то в качестве входного потока служит буфер TIB, в противном случае это значение рассматривается, как номер блока на электронном диске, который используется как входной поток (этот блок переносится в оперативную память словом BLOCK). Текущая позиция во входном потоке хранится в стандартной переменной >IN (от англ. in — вход).
Исчерпание входного потока[править]
Конец входного потока в оперативной памяти отмечается нулевым кодом. Слово WORD, «натыкаясь» на нулевой код, возвращает в качестве результата пустую строку, при этом в список FORTH включена словарная статья для такого «пустого» слова. Оно имеет признак немедленного исполнения и поэтому текстовый интерпретатор его всегда исполняет, независимо от своего состояния. Исполнение «пустышки» состоит в прекращении интерпретации данного входного потока и тем самым позволяет избежать дополнительных проверок на его исчерпание.
Такая «кухня» — популярный в Форте трюк. От него постепенно избавляются в стандартах, предлагая более гибкий механизм EVALUATE, который намечен к реализации в Каллисто 2.0.