## Display Device Driver Reference for OS/2

[prev][next][parent][TOC]

### eddf_MESS

The following code from EDDHBBLT.ASM is similar to code found throughout the driver.

    ; ss:esp now points to the destination coordinates:
      pop these straight into
    ; the hardware
            pop     eax
            memregwrite     dest_map, eax

    ; write the pixel op to kick off the blt
            memregwrite     pixel_op, edx

    IFDEF HARD_DRAW

    ; see if the source is vram or not by checking vram marker
            IFDEF   _8514
            push    ebx
            mov     ebx, AIxfer.pbmhSrc
            mov     eax, [ebx].bit map_address
            and     eax, 0f0000000h
            cmp     eax, 0f0000000h
            pop     ebx
            jz      short @f
            call    SoftSrcSpecialist
            jmp     short soft_done

    @@:     call    SrcSpecialist

    soft_done:
            ENDIF   ;_8514

    ELSE

            saveregs
            call    _eddf_MESS
            restoreregs

    ENDIF

The following code from EDDHLNE.ASM shows the procedure for Soft-Draw mode. In this code, setup is created and calls eddf_MESS.

    ELSE ;SOFT_DRAW

    IFDEF _8514

            mov             eax,_SPad.ptsNewStart
            memregwrite     dest_map,eax

            mov             ax,_SPad.sK1
            memregwrite     sr_K1,ax

            mov             ax,_SPad.sK2
            memregwrite     sr_K2,ax

            mov             ax,_SPad.usErrorTerm
            memregwrite     Err_Term,ax

            mov             ax,_SPad.usMajorAxis
            memregwrite     dim1,ax

    ENDIF ;_8514

            saveregs
            call    _eddf_MESS
            restoreregs
    ENDIF

The S3 driver draws to bit maps by having eddf_MESS emulate certain XGA operations in software. The eddf_MESS routine interprets the Shadow8514Regs , based on the parameters therein, and the pel operation, then calls one of a number of routines to perform the requested drawing operation. For the most part, eddf_MESS is a collection of jump tables to routines that do the work. Each case and each pel depth are broken out into special cased routines. To some extent, this explains the size of the code. Individually , the routines themselves are not complex, although many of them are implemented as macros. The following is a list of the files that comprise the MESS, and the functions they perform.