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