BUF♯: различия между версиями
AtH (обсуждение | вклад) (Новая страница: «'''X''' — стандартное слово Каллисто. {{нет иллюстраций}} {{заготовка}} Категория:Слова Ка…») |
AtH (обсуждение | вклад) |
||
(не показано 35 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
''' | '''BUF#''' — родная переменная [[Каллисто]]. Номер загруженного [[блок]]а. | ||
BUF# ( −− a ) Переменная. Номер блока, загруженного в буфер. | |||
Переменная BUF# содержит номер загруженного [[блок]]а, а слово BUF# кладёт на стек число 15094 — её адрес. | |||
Старший (первый) байт переменной BUF# содержит флаг [[UPDATE]], а в младшем хранится номер [[блок]]а, содержимое которого расположено в [[буфер]]е. | |||
== Ввод слова BUF# == | |||
В [[Режим ЛАТ|режиме ЛАТ]] нажмите последовательно клавиши: [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша 3|{{Серая клавиша|3}}]] [[Клавиша П|{{Чёрная клавиша|П}}]] [[Клавиша P|{{Синяя клавиша|P}}]] [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша 3|{{Серая клавиша|3}}]] | |||
Эти нажатия оставляют клавиатуру в [[Режим NUM|режиме NUM]]. | |||
== История == | |||
Исторически в Форте переменная BUF# расположена в памяти сразу перед [[буфер]]ом, к которому относится. Поскольку адрес [[буфер]]а в МК-161 фиксирован, адрес BUF# тоже фиксирован и равен 15094. Измениться он может лишь с отказом от [[Единое адресное пространство|единой адресации]] в [[Каллисто 2.0]]. | |||
Если никакой [[блок]] в [[буфер]] не загружен, переменная BUF# равна нулю. Именно поэтому в Форте и [[Каллисто]] нет [[блок]]а номер ноль. | |||
== Реализация == | |||
<pre> | |||
66 rrBUFBLK .EQU 5094 ; 15094 = 3af6 Номер блока в буфере и признак UPDATE | |||
67 rlBUFBLK .EQU 5095 | |||
… | |||
2450 ;#BUFnum | |||
2451 ; BUF# ( −− a ) Переменная. Номер блока, загруженного в буфер. | |||
2452 LX: .DB 4 | |||
2453 .TEXT "BUF#" ; ( −− +n ) | |||
2454 .DW LUPDAT | |||
2455 BUFN: .DW SCONP | |||
2456 .DB 3aH,0f6H ; 15094 rrBUFBLK | |||
</pre> | |||
=== Советская реализация === | |||
Слово BUF# произошло от довольно странного [[примитив]]а X из FORTH ИТЭФ. На входе слово X требовало адрес, где хранится номер [[блок]]а, а в процессе работы сбрасывало флаг [[UPDATE]]. Вот его определение: | |||
<PRE> | |||
HEAD 201Q,,330Q,X ; X | |||
POP BX | |||
AND [BX], 77777Q | |||
PUSH [BX] | |||
NEXT | |||
</PRE> | |||
== Ссылки == | |||
* {{Исходник|BUFnum|BUF#}} | |||
* См. стандартную переменную [[BLK]] | |||
{{нет иллюстраций}} | {{нет иллюстраций}} | ||
{{заготовка}} | {{заготовка}} | ||
[[Категория:Слова Каллисто]] | [[Категория:Слова Каллисто]] | ||
[[Категория:Примитивы]] | |||
[[Категория:Работа с внешней памятью Каллисто]] |
Текущая версия от 17:30, 9 ноября 2017
BUF# — родная переменная Каллисто. Номер загруженного блока.
BUF# ( −− a ) Переменная. Номер блока, загруженного в буфер.
Переменная BUF# содержит номер загруженного блока, а слово BUF# кладёт на стек число 15094 — её адрес.
Старший (первый) байт переменной BUF# содержит флаг UPDATE, а в младшем хранится номер блока, содержимое которого расположено в буфере.
Ввод слова BUF#[править]
В режиме ЛАТ нажмите последовательно клавиши: В/О 3 П P F 3
Эти нажатия оставляют клавиатуру в режиме NUM.
История[править]
Исторически в Форте переменная BUF# расположена в памяти сразу перед буфером, к которому относится. Поскольку адрес буфера в МК-161 фиксирован, адрес BUF# тоже фиксирован и равен 15094. Измениться он может лишь с отказом от единой адресации в Каллисто 2.0.
Если никакой блок в буфер не загружен, переменная BUF# равна нулю. Именно поэтому в Форте и Каллисто нет блока номер ноль.
Реализация[править]
66 rrBUFBLK .EQU 5094 ; 15094 = 3af6 Номер блока в буфере и признак UPDATE 67 rlBUFBLK .EQU 5095 … 2450 ;#BUFnum 2451 ; BUF# ( −− a ) Переменная. Номер блока, загруженного в буфер. 2452 LX: .DB 4 2453 .TEXT "BUF#" ; ( −− +n ) 2454 .DW LUPDAT 2455 BUFN: .DW SCONP 2456 .DB 3aH,0f6H ; 15094 rrBUFBLK
Советская реализация[править]
Слово BUF# произошло от довольно странного примитива X из FORTH ИТЭФ. На входе слово X требовало адрес, где хранится номер блока, а в процессе работы сбрасывало флаг UPDATE. Вот его определение:
HEAD 201Q,,330Q,X ; X POP BX AND [BX], 77777Q PUSH [BX] NEXT
Ссылки[править]
- Исходный текст слова BUF# в Каллисто Классик 1.0
- См. стандартную переменную BLK
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |