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