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