View Source Document

copypaste.s

;--- BEGIN ---------------------------------------------------;

;--- CONSTANTS -----------------------------------------------;

;--- DATA ----------------------------------------------------;

SEGMENT .data

coybyte:    db 01

;--- BSS -----------------------------------------------------;

SEGMENT .bss

;--- CODE ----------------------------------------------------;

SEGMENT .text

        ;;--------------------------------------------;
        ;; Copy page in memory to clipboard.
        ;; ax: * -> GARBAGE
        ;; di: * -> GARBAGE
CopyPage:   mov di, 0
.Copy:      mov ax, di
        mov al, [cbuffer + di]
        mov [bbuffer + di], al
        inc di
        cmp di, 2048
        jne .Copy
        jmp OKLight


        ;;--------------------------------------------;
        ;; Copy page in memory to clipboard and erase it.
        ;; ax: * -> GARBAGE
        ;; di: * -> GARBAGE
CutPage:    call    EditModeOnly
        call    CopyPage
        jmp FillPage



        ;;--------------------------------------------;
        ;; Copy clipboard contents to page buffer.
        ;; ax: * -> GARBAGE
        ;; di: * -> GARBAGE
PastePage:  call    EditModeOnly
        mov di, 0
.Copy:      mov ax, di
        mov al, [bbuffer + di]
        mov [cbuffer + di], al
        inc di
        cmp di, 2048
        jne .Copy
        jmp DisplayPage



        ;;--------------------------------------------;
        ;; Fill page buffer with current byte.
        ;; bl: * -> GARBAGE
        ;; di: * -> GARBAGE
        ;; *: * -> GARBAGE
FillPage:   call    EditModeOnly
        mov di, [bufptr]
        mov bl, [cbuffer + di]
        mov di, 0
.Fill:      mov [cbuffer + di], bl
        inc di
        cmp di, 2000
        jne .Fill
        jmp DisplayPage


        ;;--------------------------------------------;
        ;; Copy current byte from page to clipbyte.
        ;; al: * -> GARBAGE
        ;; di: * -> GARBAGE
CopyByte:   mov di, [bufptr]
        mov al, [cbuffer + di]
        mov [coybyte], al
        jmp OKLight


        ; PasteByte - copy byte from clipboard to page
        ; al,cl,di=DESTROYED
PasteByte:  call    EditModeOnly
        mov di, [bufptr]
        mov al, [coybyte]
        mov [cbuffer + di], al
        mov cl, al
        call    ShowByte
                jmp     Advance

;--- END -----------------------------------------------------;