]> 4ch.mooo.com Git - 16.git/blob - 16/xw__/mxgi.asm
16_ca needs huge amounts of work and I should remember what needs to be done soon...
[16.git] / 16 / xw__ / mxgi.asm
1 .387
2                 PUBLIC  MXGETIMAGE
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 MXGETIMAGE:
9         push            bp
10         mov             bp,sp
11         sub             sp,10H
12         push            ds
13         push            si
14         push            es
15         push            di
16         mov             bx,word ptr 0cH[bp]
17         mov             ax,word ptr 0aH[bp]
18         mov             cx,word ptr 8[bp]
19         mov             dx,word ptr 6[bp]
20         call            near ptr MX_TEXT:SUBCLIPIMAGE
21         jae             L$1
22         jmp             near ptr L$7
23 L$1:
24         mov             word ptr 6[bp],dx
25         add             word ptr 0eH[bp],si
26         mul             word ptr cs:MX_BYTESPERLINE
27         mov             si,bx
28         shr             si,1
29         shr             si,1
30         add             si,ax
31         mov             word ptr -0aH[bp],si
32         mov             ds,word ptr cs:MX_VIDEOSEGMENT
33         and             bl,3
34         mov             byte ptr -0eH[bp],bl
35         mov             bx,cx
36         shr             bx,1
37         shr             bx,1
38         and             cl,3
39         mov             al,8
40         shr             al,cl
41         mov             di,6
42 L$2:
43         mov             word ptr -8[bp+di],bx
44         shr             al,1
45         adc             bx,0
46         dec             di
47         dec             di
48         jge             L$2
49         cld
50         mov             byte ptr -10H[bp],4
51         lea             bx,-8[bp]
52         mov             es,word ptr 10H[bp]
53         mov             ah,byte ptr -0eH[bp]
54 L$3:
55         cmp             word ptr ss:[bx],0
56         je              L$7
57         mov             di,word ptr 0eH[bp]
58         mov             al,4
59         mov             dx,3ceH
60         out             dx,ax
61         mov             dx,word ptr 6[bp]
62         mov             si,word ptr -0aH[bp]
63 L$4:
64         push            si
65         push            di
66         mov             cx,word ptr ss:[bx]
67 L$5:
68         movsb
69         add             di,3
70         dec             cx
71         jne             L$5
72         pop             di
73         pop             si
74         add             di,word ptr 8[bp]
75         add             si,word ptr cs:MX_BYTESPERLINE
76         dec             dx
77         jne             L$4
78         inc             bx
79         inc             bx
80         inc             ah
81         test            ah,4
82         je              L$6
83         inc             word ptr -0aH[bp]
84         and             ah,3
85 L$6:
86         inc             word ptr 0eH[bp]
87         dec             byte ptr -10H[bp]
88         jne             L$3
89 L$7:
90         xor             ax,ax
91         pop             di
92         pop             es
93         pop             si
94         pop             ds
95         mov             sp,bp
96         pop             bp
97         retf            0cH
98 MX_TEXT         ENDS
99                 END