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