Annotation of uae/X86.S, revision 1.1.1.1

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"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.