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