BUF♯
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
У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их. |
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |