[an error occurred while processing this directive]
3.1.2* Особенности IN/OUT
3.1.3* Создание слов- обработчиков ВВОДА/ВЫВОДА
ПРИМЕР1: МЫ ХОТИМ
Чтобы система подсчитывала кол- во выведенных
на консоль символов.
КАК ЭТО СДЕЛАТЬ?
0 Variable QSymbols ( Переменная для подсчета
:dev SymCount QSymbols 1+! ;dev
' SymCount OutSet
ЧТО БУДЕТ ДАЛЬШЕ?
При выводе любого символа переменная QSyblols
будет увеличиваться на 1.
ПРИМЕР2: МЫ ХОТИМ
Чтобы при ВВОДЕ( хотя бы при вводе строки )
на каждый введенный с устройства символ отобра-
жался в углу окна.
КАК ЭТО СДЕЛАТЬ?
:dev SymShow InWas ` If Dup BegPos ` c! Then ;dev
InReset
' SymShow InSet
' KbdIn InSet
ЧТО БУДЕТ ДАЛЬШЕ?
При вводе символа он будет отражаться в ЛевоВерх
углу окна.
( Чтобы снять всю эту бяку достаточно:
inreset ' kbdin inset )
ПРИМЕР3: Структура слова типа D( device )
Рассмотрим системное слово KBDIN( ввести с клави-
атуры 1 символ )
Kbdin dfb ¤85
asc "kbdiN" NFA
dw ??? LFA
jsr Device CFA
dw 0 PFA
( это поле введено для
оргганизации цепочки
потока ВВОДА/ВЫВОДА, в нем
содержится адрес след.
слова из цепочки )
dw ??? Здесь те слова, которые
будут выполнятся
..........
dw devout Слово-выход из слова
устройства
3.2.1.0.2* Системный набор ОБРАБОТЧИКОВ
ПРИМЕР1: Структура систеного ОБРАБОТЧИКА для TEAC
Для нотации ассемблера структура выглядит:
Teac
jsr Doe CFA Это структура <BUILDS DOES>
dw makechoice PFA Системный ветвитель
по номеру
dw TF0 PFA+2 Массив векторов для перехо-
dw TF1 дов по функциям устройства
....
dw TF11
3.2.1.3* Считать блок данных с устройства
ПРИМЕР1: МЫ ХОТИМ
Считать в память с адреса HERE весь 1 трек.
( 0 трек средствами BForth НЕ может быть счита
[an error occurred while processing this directive]