|
|
1.1 root 1: /* These are optimized x86 assembly versions of pfield_linetoscr.
2: * Feel free to send me Sparc/PPC/Alpha versions of this... :)
3: */
4:
5: #ifdef __DOS__
6: #define SYM(NAME) _##NAME
7: #define _color_regs _bpl_info
8: #else
9: #define SYM(NAME) NAME
10: #endif
11:
12: /* Urgl... */
13: #define color_regs bpl_info
14:
15: #ifndef __DOS__
16: .local lastcolor
17: .comm lastcolor,2
18: .align 16
19: #else
20: .comm lastcolor,2
21: .align 8
22: #endif
23: .globl pfield_linetoscr_full8
24: pfield_linetoscr_full8:
25: pushl %ebp
26: pushl %edi
27: pushl %esi
28: pushl %ebx
29: movl 20(%esp),%esi
30: movl 24(%esp),%edi
31:
32: xorl %edx,%edx
33: movl SYM(diwfirstword),%eax
34: cmpl $4,%eax
35: jc .Loops1
36: movl %edx,SYM(pixdata)-4(%eax)
37: movl %edx,SYM(spixstate)-4(%eax)
38: .Loops1:
39: movl SYM(diwlastword),%eax
40: movl %edx,SYM(pixdata)(%eax)
41: movl %edx,SYM(spixstate)(%eax)
42:
43: movl SYM(acolors),%edx
44: movb %dl,%dh
45: movw %dx,%ax
46: bswapl %eax
47: movw %dx,%ax
48:
49: movl SYM(xlinebuffer),%ecx
50: jmp .L71
51: .L8:
52: cmpl 24(%esp),%esi
53: jge .L5
54: movl %eax,(%ecx)
55: addl $4,%ecx
56: movl %edx,%esi
57: .L71:
58: leal 4(%esi),%edx
59: cmpl %edx,SYM(diwfirstword)
60: jg .L8
61: .L5:
62: movl %ecx,SYM(xlinebuffer)
63:
64: cmpl $0,SYM(bplham)
65: je .L9
66: cmpl $6,SYM(bplplanecnt)
67: jne .L9
68:
69: /* HAM */
70: /* This is invalid in pfield_linetoscr, but it's OK here */
71: movw SYM(color_regs),%ax
72: movw %ax,lastcolor
73: .L73:
74: cmpl %esi,SYM(diwlastword)
75: jle .L27
76: cmpl 24(%esp),%esi
77: jge .L27
78: movzbl SYM(pixdata)(%esi),%eax
79: movl %eax,%edx
80: andl $48,%edx
81: cmpl $16,%edx
82: je .L16
83: jg .L21
84: testl %edx,%edx
85: je .L15
86: jmp .L14
87: .L21:
88: cmpl $32,%edx
89: je .L17
90: cmpl $48,%edx
91: je .L18
92: jmp .L14
93: .L15:
94: movw SYM(color_regs)(,%eax,2),%ax
95: movw %ax,lastcolor
96: jmp .L14
97: .L16:
98: movw lastcolor,%dx
99: andw $4080,%dx
100: andw $15,%ax
101: jmp .L72
102: .L17:
103: movzbw lastcolor,%dx
104: andw $15,%ax
105: salw $8,%ax
106: jmp .L72
107: .L18:
108: movw lastcolor,%dx
109: andw $3855,%dx
110: andw $15,%ax
111: salw $4,%ax
112: .L72:
113: orw %ax,%dx
114: movw %dx,lastcolor
115: .L14:
116: cmpb $0,SYM(spixstate)(%esi)
117: je .L22
118: movsbl SYM(spixels)(%esi),%eax
119: movl SYM(acolors)+64(,%eax,4),%edx
120: movl SYM(xlinebuffer),%eax
121: movb %dl,(%eax)
122: incl SYM(xlinebuffer)
123: movb $0,SYM(spixstate)(%esi)
124: movb $0,SYM(spixels)(%esi)
125: jmp .L24
126: .L22:
127: movzwl lastcolor,%eax
128: movl SYM(xcolors)(,%eax,4),%edx
129: movl SYM(xlinebuffer),%eax
130: movb %dl,(%eax)
131: incl SYM(xlinebuffer)
132: .L24:
133: incl %esi
134: jmp .L73
135: .L9:
136: cmpl $0,SYM(bpldualpf)
137: je .L74
138:
139: /* Dual Playfield */
140:
141: movl $SYM(dblpf_ind1),%ebp
142: movl $SYM(dblpf_2nd1),%edi
143: cmpl $0,SYM(bpldualpfpri)
144: je .L29
145: movl $SYM(dblpf_ind2),%ebp
146: movl $SYM(dblpf_2nd2),%edi
147: .L29:
148: cmpl %esi,SYM(diwlastword)
149: jle .L27
150:
151: cmpl 24(%esp),%esi
152: jge .L27
153:
154: xorl %edx,%edx
155: movl SYM(pixdata)(%esi),%eax
156: movl SYM(spixstate)(%esi),%ebx
157: testl %ebx,%ebx
158: jne .L101
159:
160: /* no sprites */
161:
162: movb %al,%dl
163: movb (%ebp,%edx,4),%dl
164: movb SYM(acolors)(,%edx,4),%cl
165: movb %ah,%dl
166: movb (%ebp,%edx,4),%dl
167: movb SYM(acolors)(,%edx,4),%ch
168: bswapl %eax
169: bswapl %ecx
170: movb %al,%dl
171: movb (%ebp,%edx,4),%dl
172: movb SYM(acolors)(,%edx,4),%cl
173: movb %ah,%dl
174: movb (%ebp,%edx,4),%dl
175: movb SYM(acolors)(,%edx,4),%ch
176: bswapl %ecx
177:
178: movl SYM(xlinebuffer),%eax
179: movl %ecx,(%eax)
180: addl $4,SYM(xlinebuffer)
181: addl $4,%esi
182: jmp .L29
183:
184: .L101:
185:
186: /* dual playfield with sprites */
187:
188: testb %bl,%bl
189: je .La3
190: movb %al,%dl
191: movl (%edi,%edx,4),%edx
192: testl %edx,%edx
193: je .La2
194: pushl %ebp
195: movl %edx,%ebp
196: movb %bl,%dl
197: cmpl plfpri(,%ebp,4),%edx
198: popl %ebp
199: jge .La3
200: .La2:
201: movb SYM(spixels)(%esi),%dl
202: movb SYM(acolors)+64(,%edx,4),%cl
203: jmp .La1
204: .La3:
205: movb %al,%dl
206: movb (%ebp,%edx,4),%dl
207: movb SYM(acolors)(,%edx,4),%cl
208: .La1:
209:
210: testb %bh,%bh
211: je .La6
212: movb %ah,%dl
213: movl (%edi,%edx,4),%edx
214: testl %edx,%edx
215: je .La5
216: pushl %ebp
217: movl %edx,%ebp
218: movb %bh,%dl
219: cmpl plfpri(,%ebp,4),%edx
220: popl %ebp
221: jge .La6
222: .La5:
223: movb SYM(spixels)+1(%esi),%dl
224: movb SYM(acolors)+64(,%edx,4),%ch
225: jmp .La4
226: .La6:
227: movb %ah,%dl
228: movb (%ebp,%edx,4),%dl
229: movb SYM(acolors)(,%edx,4),%ch
230: .La4:
231: bswapl %ecx
232: bswapl %eax
233: bswapl %ebx
234:
235: testb %bl,%bl
236: je .La9
237: movb %al,%dl
238: movl (%edi,%edx,4),%edx
239: testl %edx,%edx
240: je .La8
241: pushl %ebp
242: movl %edx,%ebp
243: movb %bl,%dl
244: cmpl plfpri(,%ebp,4),%edx
245: popl %ebp
246: jge .La9
247: .La8:
248: movb SYM(spixels)+3(%esi),%dl
249: movb SYM(acolors)+64(,%edx,4),%cl
250: jmp .La7
251: .La9:
252: movb %al,%dl
253: movb (%ebp,%edx,4),%dl
254: movb SYM(acolors)(,%edx,4),%cl
255: .La7:
256:
257: testb %bh,%bh
258: je .La12
259: movb %ah,%dl
260: movl (%edi,%edx,4),%edx
261: testl %edx,%edx
262: je .La11
263: pushl %ebp
264: movl %edx,%ebp
265: movb %bh,%dl
266: cmpl plfpri(,%ebp,4),%edx
267: popl %ebp
268: jge .La12
269: .La11:
270: movb SYM(spixels)+2(%esi),%dl
271: movb SYM(acolors)+64(,%edx,4),%ch
272: jmp .La10
273: .La12:
274: movb %ah,%dl
275: movb (%ebp,%edx,4),%dl
276: movb SYM(acolors)(,%edx,4),%ch
277: .La10:
278: movl $0,SYM(spixstate)(%esi)
279: movl $0,SYM(spixels)(%esi)
280: addl $4,%esi
281:
282: bswapl %ecx
283:
284: movl SYM(xlinebuffer),%eax
285: movl %ecx,(%eax)
286: addl $4,SYM(xlinebuffer)
287:
288: jmp .L29
289:
290: /* normal case */
291:
292: .L65:
293: cmpl 24(%esp),%esi
294: jge .L27
295:
296: xorl %edx,%edx
297: movl SYM(pixdata)(%esi),%eax
298: movl SYM(spixstate)(%esi),%ebx
299: testl %ebx,%ebx
300: jne .L100
301:
302: /* no sprites */
303:
304: movb %al,%dl
305: movb SYM(acolors)(,%edx,4),%cl
306: movb %ah,%dl
307: movb SYM(acolors)(,%edx,4),%ch
308: bswapl %eax
309: bswapl %ecx
310: movb %al,%dl
311: movb SYM(acolors)(,%edx,4),%cl
312: movb %ah,%dl
313: movb SYM(acolors)(,%edx,4),%ch
314: bswapl %ecx
315:
316: movl SYM(xlinebuffer),%eax
317: movl %ecx,(%eax)
318: addl $4,SYM(xlinebuffer)
319: addl $4,%esi
320: jmp .L74
321:
322: .L100:
323: /* Here, we have to deal with sprites, too. */
324:
325: testb %bl,%bl
326: je .L46
327: testb %al,%al
328: je .L47
329: movb %bl,%dl
330: cmpl SYM(plfpri)+8,%edx
331: jge .L46
332: .L47:
333: movb SYM(spixels)(%esi),%dl
334: movb SYM(acolors)+64(,%edx,4),%cl
335: jmp .L75
336: .L46:
337: movb %al,%dl
338: movb SYM(acolors)(,%edx,4),%cl
339: .L75:
340:
341: testb %bh,%bh
342: je .L51
343: testb %ah,%ah
344: je .L52
345: movb %bh,%dl
346: cmpl SYM(plfpri)+8,%edx
347: jge .L51
348:
349: .L52:
350: movb SYM(spixels)+1(%esi),%dl
351: movb SYM(acolors)+64(,%edx,4),%ch
352: jmp .L76
353: .L51:
354: movb %ah,%dl
355: movb SYM(acolors)(,%edx,4),%ch
356: .L76:
357:
358: bswapl %ebx
359: bswapl %ecx
360: bswapl %eax
361:
362: testb %bl,%bl
363: je .L56
364: testb %al,%al
365: je .L55
366: movb %bl,%dl
367: cmpl SYM(plfpri)+8,%edx
368: jge .L56
369: .L55:
370: movb SYM(spixels)+3(%esi),%dl
371: movb SYM(acolors)+64(,%edx,4),%cl
372: jmp .L57
373: .L56:
374: movb %al,%dl
375: movb SYM(acolors)(,%edx,4),%cl
376: .L57:
377:
378: testb %bh,%bh
379: je .L58
380: testb %ah,%ah
381: je .L59
382: movb %bh,%dl
383: cmpl SYM(plfpri)+8,%edx
384: jge .L58
385: .L59:
386: movb SYM(spixels)+2(%esi),%dl
387: movb SYM(acolors)+64(,%edx,4),%ch
388: jmp .L60
389: .L58:
390: movb %ah,%dl
391: movb SYM(acolors)(,%edx,4),%ch
392: .L60:
393: movl $0,SYM(spixstate)(%esi)
394: movl $0,SYM(spixels)(%esi)
395: addl $4,%esi
396:
397: bswapl %ecx
398:
399: movl SYM(xlinebuffer),%eax
400: movl %ecx,(%eax)
401: addl $4,SYM(xlinebuffer)
402: .L74:
403: cmpl %esi,SYM(diwlastword)
404: jg .L65
405: .L27:
406:
407: /* Finish off the line */
408:
409: movl SYM(acolors),%edx
410: movb %dl,%dh
411: movw %dx,%ax
412: bswapl %eax
413: movw %dx,%ax
414:
415: movl SYM(xlinebuffer),%ecx
416: movl 24(%esp),%edi
417: .L70:
418: cmpl %edi,%esi
419: jge .L66
420:
421: movl %eax,(%ecx)
422: addl $4,%ecx
423: addl $4,%esi
424: jmp .L70
425: .L66:
426: movl %ecx,SYM(xlinebuffer)
427:
428: popl %ebx
429: popl %esi
430: popl %edi
431: popl %ebp
432: ret
433: .Lfe2:
434:
435: #ifndef __DOS__
436: .align 16
437: #else
438: .align 8
439: #endif
440: .globl pfield_linetoscr_full16
441: pfield_linetoscr_full16:
442: pushl %edi
443: pushl %esi
444: pushl %ebx
445: pushl %ebp
446:
447: xorl %edx,%edx
448: movl SYM(diwfirstword),%eax
449: cmpl $4,%eax
450: jc .Loops2
451: movl %edx,SYM(pixdata)-4(%eax)
452: movl %edx,SYM(spixstate)-4(%eax)
453: .Loops2:
454: movl SYM(diwlastword),%eax
455: movl %edx,SYM(pixdata)(%eax)
456: movl %edx,SYM(spixstate)(%eax)
457:
458: movl 20(%esp),%esi
459:
460: movw SYM(acolors),%ax
461: sall $16,%eax
462: movw SYM(acolors),%ax
463:
464: movl SYM(xlinebuffer),%ecx
465: jmp .L2443
466: .L2447:
467: cmpl 24(%esp),%esi
468: jge .L2400
469: movl %eax,(%ecx)
470: movl %eax,4(%ecx)
471: addl $8,%ecx
472: movl %edx,%esi
473: .L2443:
474: leal 4(%esi),%edx
475: cmpl %edx,SYM(diwfirstword)
476: jg .L2447
477: .L2400:
478: movl %ecx,SYM(xlinebuffer)
479:
480: cmpl $0,SYM(bplham)
481: je .L2448
482: cmpl $6,SYM(bplplanecnt)
483: jne .L2448
484:
485: /* HAM */
486:
487: /* This is invalid in pfield_linetoscr, but it's OK here */
488: movw SYM(color_regs),%ax
489: movw %ax,lastcolor
490: .L2499:
491: cmpl %esi,SYM(diwlastword)
492: jle .L2027
493: cmpl 24(%esp),%esi
494: jge .L2494
495: movzbl SYM(pixdata)(%esi),%eax
496: movl %eax,%edx
497: andl $48,%edx
498: cmpl $16,%edx
499: je .L2455
500: jg .L2460
501: testl %edx,%edx
502: je .L2454
503: jmp .L2453
504: .L2460:
505: cmpl $32,%edx
506: je .L2456
507: cmpl $48,%edx
508: je .L2457
509: jmp .L2453
510: .L2454:
511: movw SYM(color_regs)(,%eax,2),%ax
512: movw %ax,lastcolor
513: jmp .L2453
514: .L2455:
515: movw lastcolor,%dx
516: andw $4080,%dx
517: andw $15,%ax
518: jmp .L2498
519: .L2456:
520: movzbw lastcolor,%dx
521: andw $15,%ax
522: salw $8,%ax
523: jmp .L2498
524: .L2457:
525: movw lastcolor,%dx
526: andw $3855,%dx
527: andw $15,%ax
528: salw $4,%ax
529: .L2498:
530: orw %ax,%dx
531: movw %dx,lastcolor
532: .L2453:
533: cmpb $0,SYM(spixstate)(%esi)
534: je .L2461
535: movsbl SYM(spixels)(%esi),%eax
536: movl SYM(acolors)+64(,%eax,4),%edx
537: movl SYM(xlinebuffer),%eax
538: movw %dx,(%eax)
539: addl $2,SYM(xlinebuffer)
540: movb $0,SYM(spixstate)(%esi)
541: movb $0,SYM(spixels)(%esi)
542: jmp .L2463
543: .L2461:
544: movzwl lastcolor,%eax
545: movl SYM(xcolors)(,%eax,4),%edx
546: movl SYM(xlinebuffer),%eax
547: movw %dx,(%eax)
548: addl $2,SYM(xlinebuffer)
549: .L2463:
550: incl %esi
551: jmp .L2499
552: .L2448:
553: cmpl $0,SYM(bpldualpf)
554: je .L2500
555:
556: /* Dual Playfield */
557:
558: xorl %edx,%edx
559:
560: movl $SYM(dblpf_ind1),%ebp
561: movl $SYM(dblpf_2nd1),%edi
562: cmpl $0,SYM(bpldualpfpri)
563: je .L2468
564: movl $SYM(dblpf_ind2),%ebp
565: movl $SYM(dblpf_2nd2),%edi
566: .L2468:
567: cmpl %esi,SYM(diwlastword)
568: jle .L2027
569: cmpl 24(%esp),%esi
570: jge .L2494
571:
572: movl SYM(pixdata)(%esi),%eax
573: movl SYM(spixstate)(%esi),%ebx
574: testl %ebx,%ebx
575: jne .Lb0
576:
577: /* Dual Playfield, no sprites */
578:
579: movl SYM(xlinebuffer),%ebx
580:
581: movb %ah,%dl
582: movb (%ebp,%edx,4),%dl
583: movw SYM(acolors)(,%edx,4),%cx
584: sall $16,%ecx
585: movb %al,%dl
586: movb (%ebp,%edx,4),%dl
587: movw SYM(acolors)(,%edx,4),%cx
588: movl %ecx,(%ebx)
589:
590: bswapl %eax
591: movb %al,%dl
592: movb (%ebp,%edx,4),%dl
593: movw SYM(acolors)(,%edx,4),%cx
594: sall $16,%ecx
595: movb %ah,%dl
596: movb (%ebp,%edx,4),%dl
597: movw SYM(acolors)(,%edx,4),%cx
598: movl %ecx,4(%ebx)
599: addl $8,SYM(xlinebuffer)
600: addl $4,%esi
601: jmp .L2468
602:
603: /* Dual Playfield with sprites */
604:
605: .Lb0:
606: testb %bh,%bh
607: je .Lb3
608: movb %ah,%dl
609: movl (%edi,%edx,4),%edx
610: testl %edx,%edx
611: je .Lb2
612: pushl %ebp
613: movl %edx,%ebp
614: movb %bh,%dl
615: cmpl plfpri(,%ebp,4),%edx
616: popl %ebp
617: jge .Lb3
618: .Lb2:
619: movb SYM(spixels)+1(%esi),%dl
620: movw SYM(acolors)+64(,%edx,4),%cx
621: jmp .Lb1
622: .Lb3:
623: movb %ah,%dl
624: movb (%ebp,%edx,4),%dl
625: movw SYM(acolors)(,%edx,4),%cx
626: .Lb1:
627: sall $16,%ecx
628:
629: testb %bl,%bl
630: je .Lb6
631: movb %al,%dl
632: movl (%edi,%edx,4),%edx
633: testl %edx,%edx
634: je .Lb5
635: pushl %ebp
636: movl %edx,%ebp
637: movb %bl,%dl
638: cmpl plfpri(,%ebp,4),%edx
639: popl %ebp
640: jge .Lb6
641: .Lb5:
642: movb SYM(spixels)(%esi),%dl
643: movw SYM(acolors)+64(,%edx,4),%cx
644: jmp .Lb4
645: .Lb6:
646: movb %al,%dl
647: movb (%ebp,%edx,4),%dl
648: movw SYM(acolors)(,%edx,4),%cx
649: .Lb4:
650: pushl %eax
651: movl SYM(xlinebuffer),%eax
652: movl %ecx,(%eax)
653: popl %eax
654:
655: bswapl %ebx
656: bswapl %eax
657:
658: testb %bl,%bl
659: je .Lb9
660: movb %al,%dl
661: movl (%edi,%edx,4),%edx
662: testl %edx,%edx
663: je .Lb8
664: pushl %ebp
665: movl %edx,%ebp
666: movb %bl,%dl
667: cmpl plfpri(,%ebp,4),%edx
668: popl %ebp
669: jge .Lb9
670: .Lb8:
671: movb SYM(spixels)+3(%esi),%dl
672: movw SYM(acolors)+64(,%edx,4),%cx
673: jmp .Lb7
674: .Lb9:
675: movb %al,%dl
676: movb (%ebp,%edx,4),%dl
677: movw SYM(acolors)(,%edx,4),%cx
678: .Lb7:
679: sall $16,%ecx
680:
681: testb %bh,%bh
682: je .Lb12
683: movb %ah,%dl
684: movl (%edi,%edx,4),%edx
685: testl %edx,%edx
686: je .Lb11
687: pushl %ebp
688: movl %edx,%ebp
689: movb %bh,%dl
690: cmpl plfpri(,%ebp,4),%edx
691: popl %ebp
692: jge .Lb12
693: .Lb11:
694: movb SYM(spixels)+2(%esi),%dl
695: movw SYM(acolors)+64(,%edx,4),%cx
696: jmp .Lb10
697: .Lb12:
698: movb %ah,%dl
699: movb (%ebp,%edx,4),%dl
700: movw SYM(acolors)(,%edx,4),%cx
701: .Lb10:
702: movl $0,SYM(spixstate)(%esi)
703: movl $0,SYM(spixels)(%esi)
704: addl $4,%esi
705:
706: movl SYM(xlinebuffer),%eax
707: movl %ecx,4(%eax)
708: addl $8,SYM(xlinebuffer)
709:
710: jmp .L2468
711: #if 0
712:
713: movsbl SYM(spixels)(%esi),%eax
714: movl SYM(acolors)+64(,%eax,4),%edx
715: movl SYM(xlinebuffer),%eax
716: movw %dx,(%eax)
717: addl $2,SYM(xlinebuffer)
718: movb $0,SYM(spixstate)(%esi)
719: movb $0,SYM(spixels)(%esi)
720: jmp .L2476
721: .L2474:
722: movzbl SYM(pixdata)(%esi),%eax
723: movl (%ebp,%eax,4),%eax
724: movl SYM(acolors)(,%eax,4),%edx
725: movl SYM(xlinebuffer),%eax
726: movw %dx,(%eax)
727: addl $2,SYM(xlinebuffer)
728: .L2476:
729: incl %esi
730: jmp .L2468
731: #endif
732:
733: /* Normal case */
734: .L2492:
735: cmpl 24(%esp),%esi
736: jge .L2027
737:
738: xorl %edx,%edx
739: movl SYM(pixdata)(%esi),%eax
740: movl SYM(spixstate)(%esi),%ebx
741: testl %ebx,%ebx
742: jne .L20100
743:
744: /* no sprites */
745:
746: movl SYM(xlinebuffer),%ebp
747:
748: movb %ah,%dl
749: movw SYM(acolors)(,%edx,4),%cx
750: sall $16,%ecx
751: movb %al,%dl
752: movw SYM(acolors)(,%edx,4),%cx
753: movl %ecx,(%ebp)
754:
755: bswapl %eax
756:
757: movb %al,%dl
758: movw SYM(acolors)(,%edx,4),%cx
759: sall $16,%ecx
760: movb %ah,%dl
761: movw SYM(acolors)(,%edx,4),%cx
762: movl %ecx,4(%ebp)
763:
764: addl $8,%ebp
765: movl %ebp,SYM(xlinebuffer)
766: addl $4,%esi
767: jmp .L2500
768:
769: .L20100:
770: /* Here, we have to deal with sprites, too. */
771:
772: movl SYM(xlinebuffer),%ebp
773:
774: testb %bh,%bh
775: je .L2051
776: testb %ah,%ah
777: je .L2052
778: movb %bh,%dl
779: cmpl SYM(plfpri)+8,%edx
780: jge .L2051
781:
782: .L2052:
783: movb SYM(spixels)+1(%esi),%dl
784: movw SYM(acolors)+64(,%edx,4),%cx
785: jmp .L2076
786: .L2051:
787: movb %ah,%dl
788: movw SYM(acolors)(,%edx,4),%cx
789: .L2076:
790: sall $16,%ecx
791:
792: testb %bl,%bl
793: je .L2046
794: testb %al,%al
795: je .L2047
796: movb %bl,%dl
797: cmpl SYM(plfpri)+8,%edx
798: jge .L2046
799: .L2047:
800: movb SYM(spixels)(%esi),%dl
801: movw SYM(acolors)+64(,%edx,4),%cx
802: jmp .L2075
803: .L2046:
804: movb %al,%dl
805: movw SYM(acolors)(,%edx,4),%cx
806: .L2075:
807:
808: bswapl %ebx
809: bswapl %eax
810: movl %ecx,(%ebp)
811:
812: testb %bl,%bl
813: je .L2056
814: testb %al,%al
815: je .L2055
816: movb %bl,%dl
817: cmpl SYM(plfpri)+8,%edx
818: jge .L2056
819: .L2055:
820: movb SYM(spixels)+3(%esi),%dl
821: movw SYM(acolors)+64(,%edx,4),%cx
822: jmp .L2057
823: .L2056:
824: movb %al,%dl
825: movw SYM(acolors)(,%edx,4),%cx
826: .L2057:
827: sall $16,%ecx
828:
829: testb %bh,%bh
830: je .L2058
831: testb %ah,%ah
832: je .L2059
833: movb %bh,%dl
834: cmpl SYM(plfpri)+8,%edx
835: jge .L2058
836: .L2059:
837: movb SYM(spixels)+2(%esi),%dl
838: movw SYM(acolors)+64(,%edx,4),%cx
839: jmp .L2060
840: .L2058:
841: movb %ah,%dl
842: movw SYM(acolors)(,%edx,4),%cx
843: .L2060:
844:
845: movl %ecx,4(%ebp)
846: movl $0,SYM(spixstate)(%esi)
847: movl $0,SYM(spixels)(%esi)
848: addl $4,%esi
849:
850: addl $8,SYM(xlinebuffer)
851: .L2500:
852: cmpl %esi,SYM(diwlastword)
853: jg .L2492
854:
855: /* Finish off the line */
856:
857: .L2027:
858: movl 24(%esp),%edi
859: cmpl %edi,%esi
860: jnl .L2494
861: movl SYM(acolors),%edx
862: movl SYM(xlinebuffer),%eax
863: .L2495:
864: incl %esi
865: movw %dx,(%eax)
866: addl $2,%eax
867:
868: cmpl %edi,%esi
869: jl .L2495
870: movl %eax,SYM(xlinebuffer)
871: .L2494:
872: popl %ebp
873: popl %ebx
874: popl %esi
875: popl %edi
876: ret
877: .Lfe21:
878:
879: .ident "Crux CC 3.14.15"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.