]> 4ch.mooo.com Git - plz.git/blob - asmyt.asm
==== compiles but crashes... wwww ====
[plz.git] / asmyt.asm
1         IDEAL\r
2         MODEL huge\r
3 8087\r
4 \r
5 EXTRN C l1:word, C l2:word, C l3:word, C l4:word, C k1:word, C k2:word, C k3:word, C k4:word\r
6 EXTRN C m1:word, C m2:word, C m3:word, C m4:word, C n1:word, C n2:word, C n3:word, C n4:word\r
7 \r
8 SEGMENT poro para private 'CODE'\r
9 \r
10 ASSUME cs:poro\r
11 \r
12 PUBLIC C plzline, C setplzparas, C psini, C lsini4, C lsini16\r
13 \r
14 LABEL psini BYTE\r
15 INCLUDE 'psini.inc'\r
16 ;         db     16384 dup(?)\r
17 \r
18 LABEL lsini4 WORD\r
19 INCLUDE 'lsini4.inc'\r
20 ;         db     16384 dup(?)\r
21 \r
22 LABEL lsini16 WORD\r
23 INCLUDE 'lsini16.inc'\r
24 ;         db     16384 dup(?)\r
25 \r
26 PROC    C plzline\r
27 \r
28         ARG     y1:word, vseg:word\r
29 \r
30         push    ds es si di\r
31 \r
32         push    [vseg]\r
33         pop     es\r
34         push    cs\r
35         pop     ds\r
36         mov     si, [y1]\r
37 ;         and   si, 0fffeh\r
38         shl     si, 1d\r
39         mov     di, si\r
40 \r
41         IRP ccc, <3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12,19,18,17,16,23,22,21,20,27,26,25,24,31,30,29,28,35,34,33,32,39,38,37,36,43,42,41,40,47,46,45,44,51,50,49,48,55,54,53,52,59,58,57,56,63,62,61,60,67,66,65,64,71,70,69,68,75,74,73,72,79,78,77,76,83,82,81,80>\r
42 \r
43 IF (ccc AND 1) EQ 1\r
44 \r
45 lc2_&ccc=$+2\r
46         mov     bx, [ds:si+0c200h]\r
47 lc1_&ccc=$+2\r
48         ccc*32\r
49         mov     ah, [(ds:ccc) + bx + 0c100h]\r
50 lc4_&ccc=$+2\r
51         ccc*64\r
52         mov     bx, [ds:ccc + di + 0c400h]\r
53 lc3_&ccc=$+2\r
54         add     ah, [ds:bx + di + 0c300h]\r
55 ELSE\r
56 lc2_&ccc=$+2\r
57         mov     bx, [ds:si+0c200h]\r
58 lc1_&ccc=$+2\r
59         ccc*32\r
60         mov     al, [ds:ccc + bx + 0c100h]\r
61 lc4_&ccc=$+2\r
62         ccc*64\r
63         mov     bx, [ds:ccc + di + 0c400h]\r
64 lc3_&ccc=$+2\r
65         add     al, [ds:bx + di + 0c300h]\r
66 ENDIF\r
67 IF (ccc AND 3) EQ 2\r
68         shl     ax, 1d\r
69         shl     ax, 1d\r
70         shl     ax, 1d\r
71         shl     ax, 1d\r
72         shl     ax, 1d\r
73         shl     ax, 1d\r
74         shl     ax, 1d\r
75         shl     ax, 1d\r
76         shl     ax, 1d\r
77         shl     ax, 1d\r
78         shl     ax, 1d\r
79         shl     ax, 1d\r
80         shl     ax, 1d\r
81         shl     ax, 1d\r
82         shl     ax, 1d\r
83         shl     ax, 1d\r
84 ENDIF\r
85 IF (ccc AND 3) EQ 0\r
86         mov     [es:ccc], ax\r
87 ENDIF\r
88         ENDM\r
89         pop     di si es ds\r
90         ret\r
91 ENDP\r
92 \r
93 PROC    C setplzparas\r
94 \r
95         arg     c1:word, c2:word, c3:word, c4:word\r
96 \r
97         IRP ccc, <0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83>\r
98         mov     ax, [c1]\r
99         add     ax, OFFSET psini+ccc*8\r
100         mov     [word (cs:lc1_&ccc)], ax\r
101         mov     ax, [c2]\r
102         shl     ax, 1d\r
103         add     ax, OFFSET lsini16-ccc*8+80*8\r
104         mov     [word (cs:lc2_&ccc)], ax\r
105         mov     ax, [c3]\r
106         add     ax, OFFSET psini-ccc*4+80*4\r
107         mov     [word (cs:lc3_&ccc)], ax\r
108         mov     ax, [c4]\r
109         shl     ax, 1d\r
110         add     ax, OFFSET lsini4+ccc*32\r
111         mov     [word (cs:lc4_&ccc)], ax\r
112         ENDM\r
113         ret\r
114 ENDP\r
115 \r
116 PUBLIC C set_plzstart\r
117 \r
118 PROC    C set_plzstart\r
119 \r
120         ARG     start:word\r
121 \r
122         mov     dx, 3d4h\r
123         mov     al, 18h         ; linecompare\r
124         mov     ah, [Byte start]\r
125         out     dx, ax\r
126         mov     al, 07h\r
127         mov     ah, [Byte start+1]\r
128         shl     ah, 4d\r
129         and     ah, 10h\r
130         or      ah, 0fh\r
131         out     dx, ax                  ; 8th bit\r
132         ret\r
133 \r
134 ENDP\r
135 \r
136 \r
137 ENDS\r
138 END\r