]> 4ch.mooo.com Git - plz.git/blob - asmyt.asm
damn it!
[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         mov     ah, [(ds:ccc*32) + bx + 0c100h]\r
49 lc4_&ccc=$+2\r
50         mov     bx, [ds:ccc*64 + di + 0c400h]\r
51 lc3_&ccc=$+2\r
52         add     ah, [ds:bx + di + 0c300h]\r
53 ELSE\r
54 lc2_&ccc=$+2\r
55         mov     bx, [ds:si+0c200h]\r
56 lc1_&ccc=$+2\r
57         mov     al, [ds:ccc*32 + bx + 0c100h]\r
58 lc4_&ccc=$+2\r
59         mov     bx, [ds:ccc*64 + di + 0c400h]\r
60 lc3_&ccc=$+2\r
61         add     al, [ds:bx + di + 0c300h]\r
62 ENDIF\r
63 IF (ccc AND 3) EQ 2\r
64         shl     eax, 16d\r
65 ENDIF\r
66 IF (ccc AND 3) EQ 0\r
67         mov     [es:ccc], eax\r
68 ENDIF\r
69         ENDM\r
70         pop     di si es ds\r
71         ret\r
72 ENDP\r
73 \r
74 PROC    C setplzparas\r
75 \r
76         ARG     c1:word, c2:word, c3:word, c4:word\r
77 \r
78         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
79         mov     ax, [c1]\r
80         add     ax, OFFSET psini+ccc*8\r
81         mov     [word (cs:lc1_&ccc)], ax\r
82         mov     ax, [c2]\r
83         shl     ax, 1d\r
84         add     ax, OFFSET lsini16-ccc*8+80*8\r
85         mov     [word (cs:lc2_&ccc)], ax\r
86         mov     ax, [c3]\r
87         add     ax, OFFSET psini-ccc*4+80*4\r
88         mov     [word (cs:lc3_&ccc)], ax\r
89         mov     ax, [c4]\r
90         shl     ax, 1d\r
91         add     ax, OFFSET lsini4+ccc*32\r
92         mov     [word (cs:lc4_&ccc)], ax\r
93         ENDM\r
94         ret\r
95 ENDP\r
96 \r
97 PUBLIC C set_plzstart\r
98 \r
99 PROC    C set_plzstart\r
100 \r
101         ARG     start:word\r
102 \r
103         mov     dx, 3d4h\r
104         mov     al, 18h         ; linecompare\r
105         mov     ah, [Byte start]\r
106         out     dx, ax\r
107         mov     al, 07h\r
108         mov     ah, [Byte start+1]\r
109         shl     ah, 4d\r
110         and     ah, 10h\r
111         or      ah, 0fh\r
112         out     dx, ax                  ; 8th bit\r
113         ret\r
114 \r
115 ENDP\r
116 \r
117 \r
118 ENDS\r
119 END\r