]> 4ch.mooo.com Git - plz.git/blob - tweak.asm
dots for a simple port but damn it!
[plz.git] / tweak.asm
1                 IDEAL\r
2                 MODEL huge\r
3 .8087\r
4 \r
5 CODESEG\r
6 \r
7 PUBLIC  C tw_opengraph, C tw_putpixel, C tw_setpalette, C tw_setstart\r
8 PUBLIC  C tw_pictovmem, C tw_closegraph, C tw_waitvr, C tw_setrgbpalette\r
9 PUBLIC  C tw_clrscr, C tw_setpalarea, C tw_getpixel, C tw_opengraph2\r
10 \r
11 PUBLIC          C scr_seg               ; videomuistin alku segmentti\r
12 \r
13 planetau        db      1,2,4,8\r
14 scr_seg         dw      0a000h\r
15 \r
16 ;       avaa 320x200 tweak tilan, 4 sivua, 4 planea\r
17 \r
18 PROC    tw_opengraph\r
19 \r
20         mov     dx, 03c4h\r
21         mov     ax, 0f02h\r
22         out     dx, ax\r
23         mov     dx, 0a000h\r
24         mov     es, dx\r
25         xor     di, di\r
26         xor     ax, ax\r
27         mov     cx, 8000h\r
28         rep     stosw                   ; clear vmem\r
29 \r
30         mov     dx, 3d4h\r
31         mov     ax, 0209h\r
32         out     dx, ax                  ; 134 y\r
33 \r
34         mov     ax, 5013h\r
35         out     dx, ax                  ; 640 wide\r
36         ret\r
37 ENDP\r
38 \r
39 \r
40 PROC    tw_opengraph2\r
41 \r
42         mov     dx, 03c4h\r
43         mov     ax, 0604h\r
44         out     dx, ax                  ; chain4 off\r
45 \r
46         mov     ax, 0f02h\r
47         out     dx, ax\r
48         mov     dx, 0a000h\r
49         mov     es, dx\r
50         xor     di, di\r
51         xor     ax, ax\r
52         mov     cx, 8000h\r
53         rep     stosw                   ; clear vmem\r
54 \r
55         mov     dx, 03d4h\r
56         mov     ax, 0014h\r
57         out     dx, ax                  ; crtc long off\r
58 \r
59         mov     ax, 0e317h\r
60         out     dx, ax                  ; crtc byte on\r
61 \r
62         mov     ax, 0009h\r
63         out     dx, ax                  ; 400\r
64 \r
65         mov     ax, 3013h\r
66         out     dx, ax                  ; 384 wide\r
67 \r
68         ret\r
69 ENDP\r
70 \r
71 \r
72 \r
73 PROC    tw_clrscr\r
74 \r
75         mov     dx, 3c4h\r
76         mov     ax, 0f02h\r
77         out     dx, ax\r
78         mov     dx, [cs:scr_seg]\r
79         mov     es, dx\r
80         xor     di, di\r
81         xor     eax, eax\r
82         mov     cx, 1000h\r
83         rep     stosd                   ; clear vmem\r
84 \r
85         ret\r
86 ENDP\r
87 \r
88 PROC    tw_closegraph\r
89 \r
90         mov     ax, 03h\r
91         int     10h\r
92 \r
93         ret\r
94 ENDP\r
95 \r
96 ;       piirt\84\84 pisteen ruudulle\r
97 \r
98 PROC    tw_putpixel\r
99 \r
100         ARG     x:word, y:word, color:word\r
101 \r
102         push    bp\r
103         mov     bp, sp\r
104 \r
105         mov     ax, [cs:scr_seg]\r
106         mov     es, ax\r
107 \r
108         mov     dx, 03c4h\r
109         mov     bx, [x]\r
110         and     bx, 03h\r
111         mov     ah, [cs:planetau+bx]\r
112         mov     al, 02h\r
113         out     dx, ax              ; select plane\r
114 \r
115         mov     bx, [x]\r
116         shr     bx, 2\r
117         mov     ax, [y]\r
118         shl     ax, 4\r
119         add     bx, ax\r
120         shl     ax, 1\r
121         add     bx, ax\r
122         shl     ax, 2\r
123         add     bx, ax\r
124 \r
125         mov cx, [color]\r
126         mov     [es:bx], cl\r
127 \r
128         pop     bp\r
129         ret\r
130 ENDP\r
131 \r
132 PROC    tw_getpixel\r
133 \r
134         ARG     x:word, y:word\r
135 \r
136         push    bp\r
137         mov     bp, sp\r
138 \r
139         mov     ax, [scr_seg]\r
140         mov     es, ax\r
141 \r
142         mov     dx, 03ceh\r
143         mov     ax, [x]\r
144         and     ax, 03h\r
145         mov     ah, al\r
146         mov     al, 04h\r
147         out     dx, ax                          ; select plane\r
148 \r
149         mov     ax, [y]\r
150         shl     ax, 4\r
151         mov     bx, ax\r
152         shl     ax, 1\r
153         add     bx, ax\r
154         shl     ax, 2\r
155         add     bx, ax\r
156         mov     ax, [x]\r
157         shr     ax, 2\r
158         add     bx, ax\r
159 \r
160         xor     ax, ax\r
161         mov     al,[es:bx]\r
162 \r
163         pop     bp\r
164         ret\r
165 ENDP\r
166 ;       vaihtaa koko paletin\r
167 \r
168 PROC    tw_setpalette\r
169 \r
170         ARG     pal:dword\r
171 \r
172         push    bp\r
173         mov     bp, sp\r
174         push    si ds\r
175 \r
176         lds     si,[pal]\r
177         cld\r
178         mov     cx, 300h\r
179         mov     dx, 03c8h\r
180         mov     al, 0\r
181         out     dx, al\r
182         inc     dx\r
183 \r
184         rep     outsb\r
185 \r
186         pop     ds si\r
187         pop     bp\r
188         ret\r
189 ENDP\r
190 \r
191 PROC    C tw_setpalarea\r
192 \r
193         ARG     pal:dword, start:word, cnt:word\r
194 \r
195         push    si ds\r
196 \r
197         lds     si,[pal]\r
198         cld\r
199         mov     cx, [cnt]\r
200         mov     ax, cx\r
201         add     cx, ax\r
202         add     cx, ax\r
203         mov     dx, 03c8h\r
204         mov     ax, [start]\r
205         out     dx, al\r
206         inc     dx\r
207 \r
208         rep     outsb\r
209 \r
210         pop     ds si\r
211         ret\r
212 ENDP\r
213 \r
214 ;       asettaa videomuistin alun\r
215 \r
216 PROC    tw_setstart\r
217 \r
218         ARG     start:word\r
219 \r
220         push    bp\r
221         mov     bp,sp\r
222 \r
223         mov     bx, [start]\r
224         mov     dx, 03d4h\r
225         mov     al, 0dh\r
226         mov     ah, bl\r
227         out     dx, ax\r
228         mov     al, 0ch\r
229         mov     ah, bh\r
230         out     dx, ax\r
231 \r
232         pop     bp\r
233         ret\r
234 ENDP\r
235 \r
236 ; kopioi muistista unpacked 1bpl kuvan 4planen kuvaksi videomuistiin\r
237 ; void tw_pictovmem(char far *pic, unsigned int vstart, unsigned int bytes);\r
238 \r
239 PROC    tw_pictovmem\r
240 \r
241         ARG     pic:dword,to:word,len:word\r
242 \r
243         push    bp\r
244         mov     bp,sp\r
245         push    ds es si di\r
246 \r
247         mov     es, [scr_seg]\r
248         mov     di, [to]\r
249         lds     si, [pic]\r
250         mov     cx, [len]\r
251 \r
252         mov    dx,03ceh\r
253         mov    ax,4005h                 ; w-mode 0\r
254         out    dx,ax\r
255 \r
256         mov     dx, 03c4h\r
257         mov     al, 02h\r
258         mov     ah, 1h\r
259         out     dx, ax\r
260         shr     cx, 2\r
261 @@l1:\r
262         movsb\r
263         add     si, 3\r
264         loop    @@l1\r
265 \r
266 \r
267         lds     si, [pic]\r
268         add     si, 1d\r
269         mov     di, [to]\r
270         mov     cx, [len]\r
271 \r
272         mov     ax, 0202h\r
273         out     dx, ax\r
274         shr     cx, 2\r
275 @@l2:\r
276         movsb\r
277         add     si, 3\r
278         loop    @@l2\r
279 \r
280 \r
281         lds     si, [pic]\r
282         add     si, 2d\r
283         mov     di, [to]\r
284         mov     cx, [len]\r
285 \r
286         mov     ax, 0402h\r
287         out     dx, ax\r
288         shr     cx, 2\r
289 @@l3:\r
290         movsb\r
291         add     si, 3\r
292         loop    @@l3\r
293 \r
294 \r
295         lds     si, [pic]\r
296         add     si, 3d\r
297         mov     di, [to]\r
298         mov     cx, [len]\r
299 \r
300         mov     ax, 0802h\r
301         out     dx, ax\r
302         shr     cx, 2\r
303 @@l4:\r
304         movsb\r
305         add     si, 3\r
306         loop    @@l4\r
307 \r
308         pop     di si es ds\r
309         pop     bp\r
310         ret\r
311 ENDP\r
312 \r
313 PROC    tw_waitvr\r
314 \r
315         mov     dx, 03dah\r
316 \r
317 @@loop1:\r
318         in      al, dx\r
319         test    al, 08h\r
320         jnz     @@loop1\r
321 \r
322 @@loop2:\r
323         in      al, dx\r
324         test    al, 08h\r
325         jz      @@loop2\r
326 \r
327         ret\r
328 ENDP\r
329 \r
330 \r
331 PROC    C tw_setrgbpalette\r
332 \r
333         ARG     pal:word, r:word, g:word, b:word\r
334 \r
335         mov     dx, 3c8h\r
336         mov     ax, [pal]\r
337         out     dx, al\r
338 \r
339         inc     dx\r
340         mov     ax, [r]\r
341         out     dx, al\r
342         mov     ax, [g]\r
343         out     dx, al\r
344         mov     ax, [b]\r
345         out     dx, al\r
346 \r
347         ret\r
348 ENDP\r
349 \r
350 END\r