]> wirehaze git hosting - MS-DOS.git/blob - v4.0/src/MAPPER/SCROLLUP.ASM

wirehaze git hosting

MZ is back!
[MS-DOS.git] / v4.0 / src / MAPPER / SCROLLUP.ASM
1 ;
2 page 60,132
3 ;
4 title CP/DOS VioScrollUp mapper
5 ;
6 vioxxx segment byte public 'vio'
7 assume cs:vioxxx,ds:nothing,es:nothing,ss:nothing
8 ;
9 ; ************************************************************************* *
10 ; *
11 ; * MODULE: VioScrollUp
12 ; *
13 ; * FILE NAME: scrollup.asm
14 ; *
15 ; * CALLING SEQUENCE:
16 ; *
17 ; *
18 ; * push word toprow
19 ; * push word leftcol
20 ; * push word botrow
21 ; * push word rightcol
22 ; * push word lines
23 ; * push@ dword cell
24 ; * push word vio handle
25 ; * call vioscrollup
26 ; *
27 ; * MODULES CALLED: BIOS Int 10h
28 ; *
29 ; *
30 ; *
31 ; *************************************************************************
32
33 public vioscrollup
34 .sall
35 .xlist
36 include macros.inc
37 .list
38
39 error_bvs_parameter equ 0002h
40
41 str struc
42 old_bp dw ?
43 return dd ?
44 handle dw ? ; vio handle
45 cell dd ? ; cell to be written
46 lines dw ? ; number of blank lines
47 rightcol dw ? ; right column
48 botrow dw ? ; bottom row
49 leftcol dw ? ; left column
50 toprow dw ? ; top row
51 str ends
52
53 vioscrollup proc far
54 Enter VioScrollUp ; save registers
55
56 mov bx,[bp].lines ; get number of blank lines
57 cmp bl,25 ; check for validity
58 jg error ; jump if invalid
59
60 mov al,bl
61 jmp ar02
62
63 ar01: mov al,00h
64 ar02: mov ah,06h ; set scroll up function code
65
66 mov bx,[bp].rightcol ; get right col number
67 cmp bl,80 ; check the validity
68 jg error ; branch if error
69 mov dl,bl ; right column number in DL
70
71 mov bx,[bp].botrow ; get bottom row
72 cmp bl,25 ; check for validity
73 jg error ; branch if error
74 mov dh,bl ; bottom row in DH
75
76 mov bx,[bp].leftcol ; get left column number
77 mov cl,bl ; left column in CL
78
79 mov bx,[bp].toprow ; get top row number
80 mov ch,bl ; top row in CH
81
82 lds si,[bp].cell ; Set up cell in BX
83 mov bx,ds:[si] ; *****************
84 ; cmp bl,15 ; check validity ** assume good **
85 ; jg error ; branch if error ** attribute! **
86 ; *****************
87 mov bh,bl ; filler attribute in BH
88 pushal ; Save registers in case int 10h
89 ; messes them up
90 int 10h ; scrollup the display
91
92 popal
93 sub ax,ax ; set no error code
94 jmp exit ; return
95
96 error: mov ax,error_bvs_parameter ; set error code
97
98 exit: Mexit ; pop registers
99 ret size str - 6 ; return
100
101 vioscrollup endp
102 vioxxx ends
103 end