]> 4ch.mooo.com Git - 16.git/blob - 16/xw__/mxsm.asm
^^ yay! i polished exmmtest and the memory reporter
[16.git] / 16 / xw__ / mxsm.asm
1 .387
2                 PUBLIC  MX_SCREENWIDTH
3                 PUBLIC  MX_SCREENHEIGHT
4                 PUBLIC  MX_BYTESPERLINE
5                 PUBLIC  MXSETMODE
6                 PUBLIC  MXCHANGEMODE
7                 PUBLIC  MXGETASPECT
8                 PUBLIC  MXGETSCREENSIZE
9                 EXTRN   MX_CODESEGMENT:BYTE
10                 EXTRN   MXSETSYSCLIPREGION:BYTE
11                 EXTRN   MX_VIDEOSEGMENT:BYTE
12 MX_TEXT         SEGMENT PARA PUBLIC USE16 'CODE'
13                 ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
14 MX_SCREENWIDTH:
15         add             byte ptr [bx+si],al
16 MX_SCREENHEIGHT:
17         add             byte ptr [bx+si],al
18 L$1:
19         add             byte ptr [bx+si],al
20 L$2:
21         add             byte ptr [bx+si],al
22 MX_BYTESPERLINE:
23         add             byte ptr [bx+si],al
24 L$3:
25         or              word ptr 14H[bx+si],ax
26         add             byte ptr [bx],dl
27         jcxz            L$4
28 L$4:
29     DB  0
30 L$5:
31         or              word ptr 14H[bx+di],ax
32         add             byte ptr [bx],dl
33         jcxz            L$6
34 L$6:
35     DB  0
36 L$7:
37         add             byte ptr 1[bx],bl
38         dec             di
39         add             dl,byte ptr 3[bx+si]
40         add             byte ptr [si],54H
41         add             ax,1380H
42         sub             byte ptr [bx+si],al
43     DB  0
44 L$8:
45         add             byte ptr 1[bp+di],ch
46         pop             cx
47         add             bl,byte ptr 3[bp+si]
48         mov             es,word ptr [si]
49         pop             si
50         add             ax,138aH
51         sub             ax,0
52         push            es
53         mov             di,1f07H
54         adc             byte ptr -7aefH[bp+di],al
55         adc             bl,byte ptr 15H[di]
56         arpl            word ptr ds:[0baH],dx
57     DB  0
58 L$9:
59         push            es
60     DD  ds:[7bfH]
61         pushf
62         adc             word ptr -70eeH[bp],cx
63         adc             ax,1696H
64         mov             cx,0
65 L$10:
66         push            es
67         or              ax,3e07H
68         adc             dl,ch
69         adc             word ptr -20eeH[si],cx
70         adc             ax,16e7H
71         push            es
72         add             byte ptr [bx+si],al
73 L$11:
74         add             byte ptr 1[si],dh
75         arpl            word ptr [bp+si],ax
76         add             dx,word ptr fs:6804H[bx]
77         add             ax,695H
78         xchg            byte ptr [bx],al
79         lock or         word ptr 0fH[bx+si],sp
80         xor             word ptr [bx+si],dx
81         pop             bx
82         adc             word ptr 5712H[di],cx
83         adc             si,word ptr [bp+si]
84         adc             al,0
85         adc             ax,1660H
86         adc             byte ptr [bx],0e3H
87         add             byte ptr [bx+si],al
88 L$12:
89         arpl            word ptr ds:[500H],ax
90         add             byte ptr 1[bx+si],al
91         enter           1a00H,0
92     DW  offset L$9
93     DW  offset L$5
94         add             byte ptr [bx+si],al
95         xor             ax,word ptr [bp+di]
96 L$13:
97         jcxz            L$14
98     DB  0
99 L$14:
100         add             word ptr [bx+si],ax
101         inc             ax
102         add             ax,si
103         add             byte ptr [bp+si],bl
104         add             byte ptr [bp+si],bl
105     DW  offset L$5
106         add             byte ptr [bx+si],al
107         xor             ax,word ptr [bp+di]
108 L$15:
109         arpl            word ptr ds:[0a00H],ax
110         add             byte ptr 1[bx+si],al
111         nop
112         add             word ptr [bp+si],bx
113         add             byte ptr [bp+si],cl
114     DW  offset L$3
115         add             byte ptr [bx+si],al
116         xor             ax,word ptr [bp+di]
117 L$16:
118         jcxz            L$17
119     DB  0
120 L$17:
121         add             al,byte ptr [bx+si]
122         inc             ax
123         add             ax,sp
124     DD  L$18
125 L$18:
126         add             byte ptr [bp+si],cl
127         add             byte ptr [bx+si],al
128         add             byte ptr [bp+di],dh
129     DB  3
130 L$19:
131         sbb             ax,word ptr [eax]
132         adc             al,0
133         push            0c801H
134         add             byte ptr [bp+si],ch
135         add             byte ptr [bp+si],cl
136     DW  offset L$5
137         add             byte ptr [bx+si],al
138         fadd            dword ptr [bp+si]
139 L$20:
140         out             9,ax
141         add             byte ptr [bx+si],cl
142         add             byte ptr 1[bx+si],ch
143         lock add        byte ptr [bp+si],ch
144         add             byte ptr [bp+si],bl
145     DW  offset L$5
146         add             byte ptr [bx+si],al
147         fadd            dword ptr [bp+si]
148 L$21:
149         sbb             ax,word ptr [eax]
150         sub             byte ptr [bx+si],al
151         push            9001H
152         add             word ptr [bp+si],bp
153         add             byte ptr [bp+si],cl
154     DW  offset L$3
155         add             byte ptr [bx+si],al
156         fadd            dword ptr [bp+si]
157 L$22:
158         out             9,ax
159         add             byte ptr [bx+si],dl
160         add             byte ptr 1[bx+si],ch
161         loopnz          L$23
162     DW  offset L$8
163 L$23 equ $-1
164     DW  offset L$10
165     DW  offset L$3
166         add             byte ptr [bx+si],al
167         fadd            dword ptr [bp+si]
168 L$24:
169         mov             word ptr ds:[0],ax
170         add             byte ptr [bx+si],al
171         inc             ax
172         add             word ptr 1a00H[bx],bp
173         add             byte ptr [bp+si],bh
174         add             byte ptr [bp+si],dl
175         add             byte ptr [bx+si],al
176         add             byte ptr [bp+di],dh
177     DB  3
178 L$25:
179         mov             word ptr 0,ax
180         add             byte ptr [bx+si],al
181         inc             ax
182         add             word ptr 1a00H[bx],bp
183         add             byte ptr [bp+si],bh
184         add             byte ptr [bp+si],cl
185         add             byte ptr [bx+si],al
186         add             byte ptr [bp+di],dh
187     DB  3
188 L$26:
189         cmpsw
190         add             byte ptr [bx+si],al
191         add             byte ptr [bx+si],al
192         push            0e001H
193         add             word ptr [bp+si],bp
194         add             byte ptr [bp+si],bh
195         add             byte ptr [bp+si],dl
196         add             byte ptr [bx+si],al
197         add             al,bl
198     DB  2
199 L$27:
200         cmpsw
201         add             byte ptr [bx+si],al
202         add             byte ptr [bx+si],al
203         push            0e001H
204         add             word ptr [bp+si],bp
205         add             byte ptr [bp+si],bh
206         add             byte ptr [bp+si],cl
207         add             byte ptr [bx+si],al
208         add             al,bl
209     DB  2
210 L$28:
211         out             1,ax
212         add             byte ptr [bp+si],al
213         add             byte ptr 5801H[bx+si],dl
214         add             ch,byte ptr [bp+si]
215         add             byte ptr [bx+si],al
216         pop             word ptr [bp+si]
217 L$29:
218     DW  offset L$24
219     DW  offset L$12
220     DW  offset L$13
221     DW  offset L$25
222     DW  offset L$15
223     DW  offset L$16
224     DW  offset L$26
225     DW  offset L$19
226     DW  offset L$20
227     DW  offset L$27
228     DW  offset L$21
229     DW  offset L$22
230     DW  offset L$28
231 L$30:
232         mov             ax,3
233         int             10H
234         mov             word ptr MX_SCREENHEIGHT,0
235         mov             word ptr MX_BYTESPERLINE,0
236         ret
237 MXSETMODE:
238         push            bp
239         mov             bp,sp
240         sub             sp,0
241         push            ds
242         push            si
243         push            es
244         push            di
245         mov             ds,word ptr cs:MX_CODESEGMENT
246         mov             si,word ptr 6[bp]
247         cmp             si,0dH
248         jbe             L$31
249         jmp             near ptr L$36
250 L$31:
251         test            si,si
252         jne             L$32
253         call            near ptr L$30
254         jmp             near ptr L$36
255 L$32:
256         dec             si
257         shl             si,1
258         mov             si,word ptr L$29[si]
259         cld
260         push            si
261         mov             ax,13H
262         int             10H
263         pop             si
264         mov             dx,3c4H
265         mov             ax,604H
266         out             dx,ax
267         mov             ax,100H
268         out             dx,ax
269         mov             dx,3c2H
270         lodsb
271         out             dx,al
272         mov             dx,3c4H
273         mov             ax,300H
274         out             dx,ax
275         mov             dx,3d4H
276         mov             al,11H
277         out             dx,al
278         inc             dx
279         in              al,dx
280         and             al,7fH
281         out             dx,al
282         lodsw
283         mov             word ptr L$1,ax
284         lodsw
285         mov             word ptr L$2,ax
286         lodsw
287         mov             word ptr MX_SCREENWIDTH,ax
288         shr             ax,1
289         shr             ax,1
290         mov             word ptr MX_BYTESPERLINE,ax
291         lodsw
292         mov             word ptr MX_SCREENHEIGHT,ax
293         mov             bx,si
294         mov             dx,3d4H
295 L$33:
296         mov             si,word ptr [bx]
297         inc             bx
298         inc             bx
299         test            si,si
300         je              L$35
301 L$34:
302         lodsw
303         test            ax,ax
304         je              L$33
305         out             dx,ax
306         jmp             L$34
307 L$35:
308         push            word ptr MX_SCREENWIDTH
309         push            word ptr [bx]
310         push            cs
311         call            near ptr MX_TEXT:MXSETSYSCLIPREGION
312         mov             dx,3c4H
313         mov             ax,0f02H
314         out             dx,ax
315         mov             es,word ptr MX_TEXT:MX_VIDEOSEGMENT
316         xor             di,di
317         mov             cx,8000H
318         xor             ax,ax
319         rep stosw
320         mov             dx,3d4H
321         mov             al,11H
322         out             dx,al
323         inc             dx
324         in              al,dx
325         or              al,80H
326         out             dx,al
327 L$36:
328         xor             ax,ax
329         mov             ax,word ptr MX_SCREENWIDTH
330         pop             di
331         pop             es
332         pop             si
333         pop             ds
334         mov             sp,bp
335         pop             bp
336         retf            2
337 MXCHANGEMODE:
338         push            bp
339         mov             bp,sp
340         sub             sp,0
341         push            ds
342         push            si
343         push            es
344         push            di
345         mov             ds,word ptr cs:MX_CODESEGMENT
346         mov             si,word ptr 6[bp]
347         cmp             si,0dH
348         ja              L$40
349         test            si,si
350         je              L$40
351         dec             si
352         shl             si,1
353         mov             si,word ptr L$29[si]
354         cld
355         mov             dx,3c4H
356         mov             ax,604H
357         out             dx,ax
358         mov             ax,100H
359         out             dx,ax
360         mov             dx,3c2H
361         lodsb
362         out             dx,al
363         mov             dx,3c4H
364         mov             ax,300H
365         out             dx,ax
366         mov             dx,3d4H
367         mov             al,11H
368         out             dx,al
369         inc             dx
370         in              al,dx
371         and             al,7fH
372         out             dx,al
373         lodsw
374         mov             word ptr L$1,ax
375         lodsw
376         mov             word ptr L$2,ax
377         lodsw
378         mov             word ptr MX_SCREENWIDTH,ax
379         lodsw
380         mov             word ptr MX_SCREENHEIGHT,ax
381         mov             bx,si
382         mov             dx,3d4H
383 L$37:
384         mov             si,word ptr [bx]
385         inc             bx
386         inc             bx
387         test            si,si
388         je              L$39
389 L$38:
390         lodsw
391         test            ax,ax
392         je              L$37
393         cmp             al,13H
394         je              L$38
395         out             dx,ax
396         jmp             L$38
397 L$39:
398         mov             dx,3d4H
399         mov             al,11H
400         out             dx,al
401         inc             dx
402         in              al,dx
403         or              al,80H
404         out             dx,al
405 L$40:
406         xor             ax,ax
407         mov             ax,word ptr MX_SCREENWIDTH
408         pop             di
409         pop             es
410         pop             si
411         pop             ds
412         mov             sp,bp
413         pop             bp
414         retf            2
415 MXGETASPECT:
416         push            bp
417         mov             bp,sp
418         sub             sp,0
419         push            ds
420         push            si
421         lds             si,dword ptr 0aH[bp]
422         mov             ax,word ptr cs:L$1
423         mov             word ptr [si],ax
424         lds             si,dword ptr 6[bp]
425         mov             ax,word ptr cs:L$2
426         mov             word ptr [si],ax
427         pop             si
428         pop             ds
429         mov             sp,bp
430         pop             bp
431         retf            8
432 MXGETSCREENSIZE:
433         push            bp
434         mov             bp,sp
435         sub             sp,0
436         push            ds
437         push            si
438         lds             si,dword ptr 0aH[bp]
439         mov             ax,word ptr cs:MX_SCREENWIDTH
440         mov             word ptr [si],ax
441         lds             si,dword ptr 6[bp]
442         mov             ax,word ptr cs:MX_SCREENHEIGHT
443         mov             word ptr [si],ax
444         pop             si
445         pop             ds
446         mov             sp,bp
447         pop             bp
448         retf            8
449 MX_TEXT         ENDS
450                 END