Редактирование: COPY

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''COPY''' (копировать, читается «копи») встроенное слово [[Каллисто]]. Копирует [[экран]] в новый [[блок]].
'''COPY''' — стандартное слово [[Каллисто]].
COPY          ( c1 c2 −− )                        Копировать блок c1 в блок c2.
[[Файл:CallistoIndexCopy.png|thumb|right|264px|Пример работы слова COPY]]
n m COPY копирует [[экран]] n на [[экран]] m
 
== Ввод слова COPY ==
В [[Режим ЛАТ|режиме ЛАТ]] последовательно нажмите четыре клавиши [[Клавиша С/П|{{Чёрная клавиша|С/П}}]] [[Клавиша 5|{{Серая клавиша|5}}]] [[Клавиша 6|{{Серая клавиша|6}}]] [[Клавиша ,|{{Серая клавиша|1=<span style="position:relative;bottom:3px"> , </span>}}]]
 
== Реализация ==
В некоторых Фортах это команда редактора, но её удобно иметь в ядре.
<pre>
3898 ;#COPY
3899 ; COPY            ( c1 c2 −− )                        Копировать блок c1 в блок c2.
3900 ; n m COPY копирует экран n на экран m
3901 ; Часто это команда редактора, но её удобно иметь в ядре.
3902 LCOPY:          .DB    4
3903                .TEXT  "COPY"                  ; ( откуда куда −− )
3904                .DW    LWORDS
3905 COPY:          .DW CALL, SWAP, BLOCK,TWOM,STORE, UPDAT, BRAN,RFLUSH
</pre>
 
=== Советская реализация ===
Юрий Семёнов приводит следующее определение слова COPY (стр. 33), как пример использования слова [[FLUSH]]:
<PRE>
: COPY ↔      ( в стеке m n )
        BLOCK  (        m и адрес первого байта буфера,
                        куда считан экран с номером n)
        2-    (        m и адрес ячейки, где лежит номер
                        экрана, хранящегося в буфере)
        !      ( очистка стека, номер экрана n заменён на m)
        UPDATE                ( установка флага "спасения")
        FLUSH ;                            ( запись на диск)
</PRE>
Определение слова COPY в FORTH ИТЭФ тоже использует [[FLUSH]]:
<PRE>
            HEAD    204Q,'COP',331Q,COPY,$COL            ; COPY
            DW  SWAP,BLOCK,CFA,STORE,UPDAT,FLUSH,SEMI
</PRE>
 
=== colorForth (cf2019.nasm 2019 Sep 14) ===
<PRE>
copy_:  ; ( blk -- )    \ copy the given block (and shadow) to the currently displayed block (and shadow)
    cmp _TOS_, byte 0x0C        ; below block 12 is machine code
    jc abort
    push edi
    push esi
    push ecx
    call blockToCellAddress    ; source block
    shl _TOS_, 0x02            ; convert cell address to byte address
    mov esi, _TOS_
    mov _TOS_, [ v_blk ]
    call blockToCellAddress    ; destination block
    shl _TOS_, 0x02            ; convert cell address to byte address
    mov edi, _TOS_
    mov ecx, 0x0200
    rep  movsd                  ; copy ecx 32 bit words from ds:esi to es:edi
    pop ecx
    pop esi
    pop edi
    _DROP_
    ret
</PRE>
 
== Ссылки ==
* {{Исходник|COPY|COPY}}
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\03.%20KAK%20RABOTATJ%20NA%20FORTE КАК РАБОТАТЬ НА ФОРТЕ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
 


{{нет иллюстраций}}
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
[[Категория:Слова высокого уровня]]
[[Категория:Работа с внешней памятью Каллисто]]
[[Категория:Работа с внешней памятью Каллисто]]
[[Категория:Средства отладки Каллисто]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/COPY