TOGGLE

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Версия для печати больше не поддерживается и может содержать ошибки обработки. Обновите закладки браузера и используйте вместо этого функцию печати браузера по умолчанию.

TOGGLE — архаичное слово Каллисто.

TOGGLE         ( a c −− )                           Изменить байт с адресом a по xor−маске c.

При обращении adr c TOGGLE извлекается байт из ячейки с адресом adr, выполняется операция XOR (Исключающее ИЛИ) над этим байтом и байтом c, а результат записывается снова в ячейку с адресом adr.

У TOGGLE стандартный, но необычный порядок операндов. Будьте внимательны!

Ввод слова TOGGLE

В режиме ЛАТ последовательно нажмите клавиши  2   5   БП   БП      ИП 

TOGGLE в fig-FORTH Release 1 glossary, май 1979 (англ.)

TOGGLE       addr b --
       Complement the contents of addr by the bit pattern b.

История

Обратите внимание на необычный для Каллисто порядок аргументов у слова TOGGLE. Он противоречит принятой практике программирования на Форте, например порядку аргументов стандартного слова +!.

Возможно, именно по этой причине архаичное слово TOGGLE не вошло ни в один из стандартов.

Реализация

2135 ;#TOGGLE
2136 ; TOGGLE           ( a c −− )                           Изменить байт с адресом a по xor−маске c.
2137 ; У TOGGLE стандартный, но необычный порядок операндов. Будьте внимательны!
2138 LTOGL:          .DB     6
2139                 .TEXT   "TOGGLE"
2140                 .DW     LMMSTOR
2141 TOGL:           .DW     JTOGL
2142 JTOGL:          RM3 M8  1 + MA  1 + M3
2143                 KRMA 1 EE 4 −  KX>=09           ; Не менять ничего в памяти программ
2144                 MA KRM8 KRMA KXOR KMA
2145                 KGOTO9

Советская реализация

В FORTH ИТЭФ слово TOGGLE также было примитивом и называлось TOGL

Вот его определение:

            HEAD     204Q,'TOG',314Q.TOGL                 ; TOGGLE
   ; адр-байта маска =>XOR в байт памяти
            POP  CX         ; Маска
            POP  BX
            XOR  BYTE PTR [BX],CL
            NEXT

Ссылки


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


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