]> 4ch.mooo.com Git - 16.git/blob - 16/xw_/mxfp.asm
code miraculously works on real hardware
[16.git] / 16 / xw_ / mxfp.asm
1                 PUBLIC  MXFADEPALETTE
2 MX_TEXT         SEGMENT PARA PUBLIC USE16 'CODE'
3                 ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
4         inc             bx
5         outsw
6         jo              L$5
7         jb              L$4
8         push            2074H
9         sub             byte ptr 29H[bp+di],ah
10         and             byte ptr [bx+di],dh
11         cmp             word ptr [bx+di],di
12         xor             ch,byte ptr [di]
13         xor             word ptr [bx+di],di
14         cmp             word ptr [si],si
15         and             byte ptr 52H[bx+di],al
16         push            sp
17         dec             cx
18         push            bx
19         and             byte ptr 2eH[bp+di],dh
20         jb              L$1
21         insb
22         and             byte ptr cs:6cH[bx+di],al
23         insb
24         and             byte ptr 69H[bp+si],dh
25         push            7374H
26         and             byte ptr 65H[bp+si],dh
27         jae             L$7
28         jb              L$9
29     DB  65H, 64H, 2eH
30 MXFADEPALETTE:
31         push            bp
32         mov             bp,sp
33         sub             sp,60aH
34         push            si
35         push            di
36         push            ds
37         push            es
38         mov             word ptr -608H[bp],1
39         mov             ax,word ptr 10H[bp]
40         and             ax,0ff00H
41 L$1:
42         je              L$2
43         mov             cl,8
44         shr             ax,cl
45         mov             word ptr -608H[bp],ax
46 L$2:
47         mov             ax,word ptr 10H[bp]
48         and             ax,0feH
49         mov             cl,1
50         shr             ax,cl
51         or              ax,ax
52         jne             L$3
53         mov             ax,30H
54 L$3:
55         mov             word ptr -60aH[bp],ax
56 L$4:
57         inc             ax
58         mov             byte ptr -606H[bp],al
59         mov             byte ptr -604H[bp],1
60     DB  0c6H, 86H, 0feH, 0f9H
61 L$5:
62         add             byte ptr 0e46H[bp+di],cl
63         cmp             ax,100H
64         jb              L$6
65         jmp             near ptr L$12
66 L$6:
67         add             ax,word ptr 0cH[bp]
68         cmp             ax,100H
69         jbe             L$8
70         mov             ax,100H
71         sub             ax,word ptr 0eH[bp]
72     DB  89H, 46H
73 L$7:
74         or              al,0bH
75         ????
76         jne             L$8
77         jmp             near ptr L$12
78 L$8:
79         mov             cx,word ptr 0cH[bp]
80         mov             ax,cx
81         shl             ax,1
82         add             cx,ax
83         mov             ax,ss
84 L$9:
85         mov             es,ax
86         lea             di,-300H[bp]
87         mov             ax,word ptr 0eH[bp]
88         mov             si,ax
89         shl             ax,1
90         add             ax,si
91         lds             si,dword ptr 12H[bp]
92         add             si,ax
93         cld
94         shr             cx,1
95         rep movsw
96         rcl             cx,1
97         rep movsb
98         test            word ptr 10H[bp],1
99         je              L$10
100         mov             ax,word ptr -60aH[bp]
101         mov             byte ptr -602H[bp],al
102         mov             byte ptr -604H[bp],0ffH
103         mov             ax,ss
104         mov             ds,ax
105         mov             es,ax
106         lea             di,-300H[bp]
107         mov             ax,word ptr 0eH[bp]
108         mov             cx,word ptr 0cH[bp]
109         call            near ptr L$19
110 L$10:
111         mov             bh,byte ptr 0aH[bp]
112         and             bh,3fH
113         mov             bl,byte ptr 8[bp]
114         and             bl,3fH
115         mov             dh,byte ptr 6[bp]
116         and             dh,3fH
117         mov             dl,byte ptr -602H[bp]
118         mov             ax,ss
119         mov             ds,ax
120         mov             es,ax
121 L$11:
122         mov             ax,word ptr 0cH[bp]
123         mov             cx,word ptr -60aH[bp]
124         lea             si,-300H[bp]
125         lea             di,-600H[bp]
126         call            near ptr L$13
127         push            bx
128         push            dx
129         lea             si,-600H[bp]
130         mov             ax,word ptr 0eH[bp]
131         mov             bx,word ptr 0cH[bp]
132         mov             cx,word ptr -608H[bp]
133         call            near ptr L$15
134         pop             dx
135         pop             bx
136         add             dl,byte ptr -604H[bp]
137         dec             byte ptr -606H[bp]
138         jne             L$11
139 L$12:
140         pop             es
141         pop             ds
142         pop             di
143         pop             si
144         mov             sp,bp
145         pop             bp
146         retf            10H
147 L$13:
148         cld
149         push            bp
150         mov             bp,ax
151 L$14:
152         lodsb
153         sub             al,bh
154         imul            dl
155         idiv            cl
156         add             al,bh
157         stosb
158         lodsb
159         sub             al,bl
160         imul            dl
161         idiv            cl
162         add             al,bl
163         stosb
164         lodsb
165         sub             al,dh
166         imul            dl
167         idiv            cl
168         add             al,dh
169         stosb
170         dec             bp
171         jne             L$14
172         pop             bp
173         ret
174 L$15:
175         mov             ah,al
176         mov             dx,3daH
177 L$16:
178         in              al,dx
179         test            al,8
180         jne             L$16
181 L$17:
182         in              al,dx
183         test            al,8
184         je              L$17
185         loop            L$16
186         mov             cx,bx
187         mov             dx,3c8H
188         mov             al,ah
189         out             dx,al
190         inc             dx
191         cld
192         cli
193 L$18:
194         lodsb
195         out             dx,al
196         lodsb
197         out             dx,al
198         lodsb
199         out             dx,al
200         loop            L$18
201         sti
202         ret
203 L$19:
204         mov             dx,3c7H
205         out             dx,al
206         inc             dx
207         inc             dx
208         cld
209 L$20:
210         in              al,dx
211         stosb
212         in              al,dx
213         stosb
214         in              al,dx
215         stosb
216         loop            L$20
217         ret
218 MX_TEXT         ENDS
219                 END