BUF♯

Материал из ПМК вики
Версия от 17:30, 9 ноября 2017; AtH (обсуждение | вклад) (→‎Реализация)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

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

Ссылки[править]


  У этой статьи нет иллюстраций. Вы можете помочь проекту, добавив их.


  Это заготовка статьи. Вы можете помочь проекту, дополнив её.