View Source Document

pageedit.s

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

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

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

SEGMENT .data

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

SEGMENT .bss

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

SEGMENT .text


        ; ax may be destroyed
EditModeOnly:   test    [flags], byte FLAG_EDIT
        jnz .Goodness
        call    BadLight
        pop ax
.Goodness:  ret


        ; ax may be destroyed
NotInEditMode:  test    [flags], byte FLAG_EDIT
        jz  .Goodness
        call    BadLight
        pop ax
.Goodness:  ret



ToggleHighBit:  call    EditModeOnly
        mov bx, [bufptr]
        mov cl, [cbuffer + bx]
        xor cl, 80h
        mov [cbuffer + bx], cl
        jmp ShowByte


        ; Enter into EditMode
EditMode:   or  [flags], byte FLAG_EDIT
        jmp EditLight

        ; Exit EditMode
NoEditMode: and [flags], byte ~FLAG_EDIT
        jmp NoEditLight


        ; IncByte
        ; al,cl,di=DESTROYED
IncByte:    mov al, 1
        jmp DeltaByte


        ; DecByte
        ; al,cl,di=DESTROYED
DecByte:    mov al, -1
        ; FALLTHROUGH
        ; DeltaByte
        ; al=delta
        ; cl,di=DESTROYED
DeltaByte:  call    EditModeOnly
        mov di, [bufptr]
        mov cl, [cbuffer + di]
        add cl, al
        jmp ShowByte


ShowByte:   call    WriteByte
        jmp UpdateCurByte


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