
.model small
.code
.startup
push ds
pop es
mov ax, 0600h
mov dx, 0FFFFh
mov cx, 0
mov bh, 00000111b
int 10h
mov ax, 1300h
mov bx, 00011011b
mov cx, mes_len
mov dx, 090Fh
lea bp, message
int 10h
mov ax, 1300h
mov cx, mes_len
mov dx, 0A0fh
int 10h
mov ax, 1300h
mov cx, mes_len
mov dx, 0b0fh
int 10h
mov ax, 1300h
mov cx, mes_len
mov dx, 0c0fh
int 10h
mov ax, 1300h
mov cx, mes_len
mov dx, 0d0fh
int 10h
lNext: xor ax, ax
int 16h
cmp al, 27
je lExit
cmp al, 'q'
je lDown
cmp al, 'z'
je lUp
jmp lNext
lDown: xor cx, cx
mov dx, 1950h
mov ax, 0701h
mov bh, 00000111b
int 10h
jmp lNext
lUp: xor cx, cx
mov dx, 1950h
mov ax, 0601h
mov bh, 00000111b
int 10h
jmp lNext
lExit: .exit 0
.data
message db ' >*< scrolling text window on the screen >*< '
mes_len dw $-message
.stack 128
end