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