BLANK: различия между версиями

Материал из ПМК вики
Перейти к навигации Перейти к поиску
Нет описания правки
 
(не показано 5 промежуточных версий этого же участника)
Строка 4: Строка 4:


== Ввод слова BLANK ==
== Ввод слова BLANK ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша -|{{Серая клавиша|−}}]] [[Клавиша ШГ влево|{{Чёрная клавиша|ШГ←}}]] [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша 9|{{Серая клавиша|9}}]]
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите клавиши [[Клавиша В/О|{{Чёрная клавиша|В/О}}]] [[Клавиша -|{{Серая клавиша|−}}]] {{ШГ←}} [[Клавиша 4|{{Серая клавиша|4}}]] [[Клавиша 9|{{Серая клавиша|9}}]]


== BLANK в стандарте ANS Forth ==
== BLANK в стандарте ANS Forth ==
Строка 13: Строка 13:


== История ==
== История ==
Слово BLANK взято из Форта, где получило своё настоящее имя в 1983 году и с тех пор не изменялось.
Слово BLANK взято из Форта, где получило своё настоящее имя в 1983 году и с тех пор не изменялось, переходя из стандарта в стандарт.


В программах, написанных для Форта-79 и более ранних диалектов, нужно исправить название слова на современное BLANK.
В программах, написанных для Форта-79 и более ранних диалектов, нужно исправить название слова на современное BLANK.
Строка 32: Строка 32:
         Fill an area of memory beginning at addr with blanks.
         Fill an area of memory beginning at addr with blanks.


== Реализация BLANK ==
== Реализация ==
<pre>
2013 JFILL2:        M8 1 + MA  1 + M3
2014                KRM8 M0 +/−  KX<09              ; Счётчик литер
2015                KRMA 1 EE 4 −  KX>=09  1 − M5 RMB
2016 FILL1:          KM5  FL0 FILL1
2017                KGOTO9
2018 JBLANK:                                        ; Обработчик FILL
2019                32
2020                .DB 59H                        ; FX>=0 aka пропустить 1 байт
2021 JERASE:        CX                              ; Обработчик ERASE
2022 JJFILL:        MB RM3  GOTO JFILL2
2031 ;#BLANK
2032 ; BLANK            ( a U −− )                          Опробелить. Записать U пробелов в память, начиная с адреса a.
2033 LBLANK:        .DB    5
2034                .TEXT  "BLANK"                ; ( где сколько −− )
2035                .DW    LERASE
2036 BLANK:          .DW    JBLANK                  ; Опробелить строку.
</pre>
Реализация из SP-Forth 4.20:
<pre>
: BLANK        ( addr len -- )    \ fill addr for len with spaces (blanks)
                BL FILL ;
</pre>
 
=== Советская реализация ===
Юрий Семёнов приводит следующее определение BLANK (стр. 27) через [[BL]] и более общее слово [[FILL]]:
Юрий Семёнов приводит следующее определение BLANK (стр. 27) через [[BL]] и более общее слово [[FILL]]:
  : BLANK  BL FILL ;
  : BLANK  BL FILL ;
Строка 79: Строка 105:
[[Категория:Примитивы]]
[[Категория:Примитивы]]
[[Категория:Работа с памятью Каллисто]]
[[Категория:Работа с памятью Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:1994 STRING]]
[[Категория:2012 STRING]]

Текущая версия от 17:58, 13 ноября 2017

BLANK (заполнить пробелами, читается «блэнк») — стандартное слово Каллисто. Заполнить массив пробелами.

BLANK          ( a u −− )                           Опробелить. Записать u пробелов в память, начиная с адреса a.

Слово BLANK записывает n кодов пробела (32) в память, начиная с адреса a.

Ввод слова BLANK[править]

В режиме ЛАТ последовательно нажмите клавиши  В/О      ШГ←   4   9 

BLANK в стандарте ANS Forth[править]

17.6.1.0780   BLANK                                                      STRING
           ( c-addr u -- )
           Если u больше чем нуль, сохраняет символьное значение пробела в u 
           последовательных символьных позициях, начинающихся с c-addr.

История[править]

Слово BLANK взято из Форта, где получило своё настоящее имя в 1983 году и с тех пор не изменялось, переходя из стандарта в стандарт.

В программах, написанных для Форта-79 и более ранних диалектов, нужно исправить название слова на современное BLANK.

BLANK в предыдущем стандарте Forth-83 (англ.)[править]

     BLANK        addr u --                     83
          u bytes of memory beginning at addr are set to the ASCII
          character value for space.  No action is taken if u is zero.

BLANKS в стандарте Forth-79 (англ.)[править]

BLANKS         addr n --                     152
    Fill  an area of memory over n bytes with the value for  ASCII
    blank,  starting at addr.  If n is less than or equal to zero,
    take no action.

BLANKS в fig-FORTH Release 1 glossary, май 1979 (англ.)[править]

BLANKS addr count --
       Fill an area of memory beginning at addr with blanks.

Реализация[править]

2013 JFILL2:         M8 1 + MA  1 + M3
2014                 KRM8 M0 +/−  KX<09              ; Счётчик литер
2015                 KRMA 1 EE 4 −  KX>=09  1 − M5 RMB
2016 FILL1:          KM5  FL0 FILL1
2017                 KGOTO9
2018 JBLANK:                                         ; Обработчик FILL
2019                 32
2020                 .DB 59H                         ; FX>=0 aka пропустить 1 байт
2021 JERASE:         CX                              ; Обработчик ERASE
2022 JJFILL:         MB RM3  GOTO JFILL2
…
2031 ;#BLANK
2032 ; BLANK            ( a U −− )                           Опробелить. Записать U пробелов в память, начиная с адреса a.
2033 LBLANK:         .DB     5
2034                 .TEXT   "BLANK"                 ; ( где сколько −− )
2035                 .DW     LERASE
2036 BLANK:          .DW     JBLANK                  ; Опробелить строку.

Реализация из SP-Forth 4.20:

: BLANK         ( addr len -- )     \ fill addr for len with spaces (blanks)
                BL FILL ;

Советская реализация[править]

Юрий Семёнов приводит следующее определение BLANK (стр. 27) через BL и более общее слово FILL:

: BLANK   BL FILL ;

Описание и определение слова BLANK в ядре ФОРТ-ЕС:

BLANK   +A,U-> ЗАСЛАТЬ ПРОБЕЛЫ В U БАЙТОВ ПО АДРЕСУ А           22

                     Экран номер 22
( 31.03.86   FILL ERASE BLANK COMPILE [ ] MIN MAX HEX DECIMAL)

: BLANK  ( A,U-> ) BL FILL ;

В FORTH ИТЭФ слово BLANK называлось BLANKS и было примитивом, который опирался на код примитива FILL. Вот их определения:

            HEAD     204Q,'FIL',314Q,FILL                 ; FILL
            POP  AX      ; Символ
   FLL:     POP  CX      ; Счетчик символов
            CMP  CX, 0
            JLE  DRP     ;
            POP  BX
   $REPE:   MOV  BYTE PTR [BX],  AL
            INC  BX

            LOOP $REPE
            NEXT
            ...
            HEAD     206Q,'BLANK',323Q,BLANK              ; BLANKS
            MOV  AX, 32
            JMP  FLL

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


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


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