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

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


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


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