OSDN Git Service

update todo list with new stuff
[proj16/16.git] / 16 / xw_ / mxbb.asm
1                 PUBLIC  MXBITBLT
2                 EXTRN   SUBHORIZONTALLINEINFO:BYTE
3                 EXTRN   MX_VIDEOSEGMENT:BYTE
4                 EXTRN   MX_BYTESPERLINE:BYTE
5 MX_TEXT         SEGMENT PARA PUBLIC USE16 'CODE'
6                 ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
7 MXBITBLT:
8         push            bp
9         mov             bp,sp
10         sub             sp,16H
11         push            ds
12         push            si
13         push            es
14         push            di
15         cmp             word ptr 0cH[bp],0
16         je              L$2
17         mov             ax,word ptr 10H[bp]
18         and             al,3
19         mov             dx,word ptr 8[bp]
20         and             dl,3
21         mov             bx,offset L$10
22         cmp             al,dl
23         jne             L$1
24         mov             bx,offset L$3
25 L$1:
26         call            bx
27 L$2:
28         xor             ax,ax
29         pop             di
30         pop             es
31         pop             si
32         pop             ds
33         mov             sp,bp
34         pop             bp
35         retf            0cH
36 L$3:
37         mov             bx,word ptr 8[bp]
38         mov             ax,word ptr 6[bp]
39         mov             cx,word ptr 0cH[bp]
40         call            near ptr MX_TEXT:SUBHORIZONTALLINEINFO
41         mov             byte ptr -14H[bp],al
42         mov             byte ptr -16H[bp],ah
43         mov             word ptr 0cH[bp],cx
44         mov             ax,word ptr cs:MX_VIDEOSEGMENT
45         mov             ds,ax
46         mov             es,ax
47         mov             ax,word ptr 0eH[bp]
48         mul             word ptr cs:MX_BYTESPERLINE
49         mov             si,word ptr 10H[bp]
50         shr             si,1
51         shr             si,1
52         add             si,ax
53         mov             dx,3ceH
54         mov             ax,4105H
55         out             dx,ax
56         cld
57         mov             ah,byte ptr -14H[bp]
58         or              ah,ah
59         je              L$5
60         mov             dx,3c4H
61         mov             al,2
62         out             dx,ax
63         mov             ax,word ptr cs:MX_BYTESPERLINE
64         dec             ax
65         mov             cx,word ptr 0aH[bp]
66         push            si
67         push            di
68 L$4:
69         movsb
70         add             si,ax
71         add             di,ax
72         dec             cx
73         jne             L$4
74         pop             di
75         pop             si
76         inc             si
77         inc             di
78 L$5:
79         mov             bx,word ptr 0cH[bp]
80         test            bx,bx
81         je              L$7
82         mov             dx,3c4H
83         mov             ax,0f02H
84         out             dx,ax
85         mov             ax,word ptr cs:MX_BYTESPERLINE
86         sub             ax,bx
87         mov             dx,word ptr 0aH[bp]
88         push            si
89         push            di
90 L$6:
91         mov             cx,bx
92         rep movsb
93         add             si,ax
94         add             di,ax
95         dec             dx
96         jne             L$6
97         pop             di
98         pop             si
99         add             si,bx
100         add             di,bx
101 L$7:
102         mov             ah,byte ptr -16H[bp]
103         or              ah,ah
104         je              L$9
105         mov             dx,3c4H
106         mov             al,2
107         out             dx,ax
108         mov             ax,word ptr cs:MX_BYTESPERLINE
109         dec             ax
110         mov             cx,word ptr 0aH[bp]
111 L$8:
112         movsb
113         add             si,ax
114         add             di,ax
115         dec             cx
116         jne             L$8
117 L$9:
118         mov             dx,3ceH
119         mov             ax,4005H
120         out             dx,ax
121         ret
122 L$10:
123         mov             cx,word ptr 0cH[bp]
124         mov             bx,cx
125         shr             bx,1
126         shr             bx,1
127         and             cl,3
128         mov             al,8
129         shr             al,cl
130         mov             si,6
131 L$11:
132         mov             word ptr -8[bp+si],bx
133         shr             al,1
134         adc             bx,0
135         dec             si
136         dec             si
137         jge             L$11
138         mov             ax,word ptr cs:MX_VIDEOSEGMENT
139         mov             ds,ax
140         mov             es,ax
141         mov             ax,word ptr 0eH[bp]
142         mul             word ptr cs:MX_BYTESPERLINE
143         mov             si,word ptr 10H[bp]
144         shr             si,1
145         shr             si,1
146         add             si,ax
147         mov             word ptr -0aH[bp],si
148         mov             ax,word ptr 6[bp]
149         mul             word ptr cs:MX_BYTESPERLINE
150         mov             di,word ptr 8[bp]
151         shr             di,1
152         shr             di,1
153         add             di,ax
154         mov             word ptr -0cH[bp],di
155         mov             ax,word ptr 10H[bp]
156         and             al,3
157         mov             byte ptr -10H[bp],al
158         mov             cx,word ptr 8[bp]
159         and             cl,3
160         mov             al,11H
161         shl             al,cl
162         mov             byte ptr -12H[bp],al
163         cld
164         mov             byte ptr -0eH[bp],4
165         lea             bx,-8[bp]
166 L$12:
167         cmp             word ptr ss:[bx],0
168         je              L$15
169         mov             ah,byte ptr -12H[bp]
170         and             ah,0fH
171         mov             al,2
172         mov             dx,3c4H
173         out             dx,ax
174         mov             ah,byte ptr -10H[bp]
175         mov             al,4
176         mov             dx,3ceH
177         out             dx,ax
178         mov             dx,word ptr 0aH[bp]
179         mov             ax,word ptr cs:MX_BYTESPERLINE
180         sub             ax,word ptr ss:[bx]
181 L$13:
182         mov             cx,word ptr ss:[bx]
183         shr             cx,1
184         rep movsw
185         rcl             cx,1
186         rep movsb
187         add             si,ax
188         add             di,ax
189         dec             dx
190         jne             L$13
191         inc             bx
192         inc             bx
193         inc             byte ptr -10H[bp]
194         and             byte ptr -10H[bp],3
195         jne             L$14
196         inc             word ptr -0aH[bp]
197 L$14:
198         rol             byte ptr -12H[bp],1
199         adc             word ptr -0cH[bp],0
200         mov             si,word ptr -0aH[bp]
201         mov             di,word ptr -0cH[bp]
202         dec             byte ptr -0eH[bp]
203         jne             L$12
204 L$15:
205         ret
206 MX_TEXT         ENDS
207                 END