OSDN Git Service

update todo list with new stuff
[proj16/16.git] / 16 / xw_ / mxfb.asm
1                 PUBLIC  MXFILLBOX
2                 EXTRN   SUBCLIPBOX:BYTE
3                 EXTRN   SUBHORIZONTALLINEINFO:BYTE
4                 EXTRN   MX_VIDEOSEGMENT:BYTE
5                 EXTRN   MX_BYTESPERLINE:BYTE
6 MX_TEXT         SEGMENT PARA PUBLIC USE16 'CODE'
7                 ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
8 L$1:
9         mov             ah,al
10         shr             cx,1
11         rep stosw
12         rcl             cx,1
13         rep stosb
14         ret
15 L$2:
16         mov             byte ptr [bx],al
17         add             bx,dx
18         loop            L$2
19         ret
20 L$3:
21         mov             si,di
22 L$4:
23         mov             ah,byte ptr [si]
24         mov             byte ptr [si],al
25         inc             si
26         loop            L$4
27         ret
28 L$5:
29         mov             ah,byte ptr [bx]
30         mov             byte ptr [bx],al
31         add             bx,dx
32         loop            L$5
33         ret
34 MXFILLBOX:
35         push            bp
36         mov             bp,sp
37         sub             sp,8
38         push            ds
39         push            si
40         push            es
41         push            di
42         mov             bx,word ptr 10H[bp]
43         mov             ax,word ptr 0eH[bp]
44         mov             cx,word ptr 0cH[bp]
45         mov             dx,word ptr 0aH[bp]
46         call            near ptr MX_TEXT:SUBCLIPBOX
47         jae             L$6
48         jmp             near ptr L$12
49 L$6:
50         mov             word ptr 0aH[bp],dx
51         call            near ptr MX_TEXT:SUBHORIZONTALLINEINFO
52         mov             word ptr 0cH[bp],cx
53         mov             byte ptr -2[bp],al
54         mov             byte ptr -4[bp],ah
55         mov             ax,word ptr cs:MX_VIDEOSEGMENT
56         mov             es,ax
57         mov             ds,ax
58         cld
59         mov             word ptr -6[bp],offset L$2
60         mov             word ptr -8[bp],offset L$1
61         mov             ax,word ptr 6[bp]
62         cmp             al,3
63         ja              L$7
64         cmp             al,0
65         je              L$7
66         shl             al,1
67         shl             al,1
68         shl             al,1
69         mov             ah,al
70         mov             al,3
71         mov             dx,3ceH
72         out             dx,ax
73         mov             word ptr -6[bp],offset L$5
74         mov             word ptr -8[bp],offset L$3
75 L$7:
76         mov             ah,byte ptr -2[bp]
77         or              ah,ah
78         je              L$8
79         mov             dx,3c4H
80         mov             al,2
81         out             dx,ax
82         mov             dx,word ptr cs:MX_BYTESPERLINE
83         mov             cx,word ptr 0aH[bp]
84         mov             bx,di
85         mov             al,byte ptr 8[bp]
86         call            word ptr -6[bp]
87         inc             di
88 L$8:
89         mov             cx,word ptr 0cH[bp]
90         jcxz            L$10
91         mov             dx,3c4H
92         mov             ax,0f02H
93         out             dx,ax
94         mov             al,byte ptr 8[bp]
95         mov             bx,di
96         mov             dx,word ptr 0aH[bp]
97         push            di
98 L$9:
99         mov             di,bx
100         call            word ptr -8[bp]
101         mov             cx,word ptr 0cH[bp]
102         add             bx,word ptr cs:MX_BYTESPERLINE
103         dec             dx
104         jne             L$9
105         pop             di
106         add             di,word ptr 0cH[bp]
107 L$10:
108         mov             ah,byte ptr -4[bp]
109         or              ah,ah
110         je              L$11
111         mov             dx,3c4H
112         mov             al,2
113         out             dx,ax
114         mov             dx,word ptr cs:MX_BYTESPERLINE
115         mov             cx,word ptr 0aH[bp]
116         mov             bx,di
117         mov             al,byte ptr 8[bp]
118         call            word ptr -6[bp]
119 L$11:
120         mov             dx,3ceH
121         mov             ax,3
122         out             dx,ax
123 L$12:
124         xor             ax,ax
125         pop             di
126         pop             es
127         pop             si
128         pop             ds
129         mov             sp,bp
130         pop             bp
131         retf            0cH
132 MX_TEXT         ENDS
133                 END