개발메모 & 프로그램/모니터 - MST705

- MST705 Border 관련수정사항

메가아재 2017. 5. 30. 17:21
반응형

#define OSD_LOAD_PALETTE_8  1

#define OSD_LOAD_PALETTE_16 0


void OsdInit(void)

{

// Load palette

 msOsdLoadColor( OSD_LOAD_PALETTE_8, tPalette );

}


code RegUnitType tOsdInit[] =

{

    {OSD_10, 0x02},

    {OSD_42, CP_TRANSPARENT}, // OSD color index for Transparency

    {_END_OF_TBL_, 0x00},

};

 

void msOsdSetWindowSize(BYTE ucWidth, BYTE ucHeight)

{

    g_ucOsdWindowWidth = ucWidth & 0x3f;

    g_ucOsdWindowHeight = ucHeight & 0x3f;

 

msOsdWriteByte(OSD_58, 0xff);

    while(msOsdReadByte(OSD_58)==1);

 

    msOsdWriteByte(OSD_06, g_ucOsdWindowWidth - 1);

    msOsdWriteByte(OSD_07, g_ucOsdWindowHeight - 1);

}

 

void msOsdDrawChar(BYTE ucX, BYTE ucY, BYTE ucCh)

{

    WORD wAddress; // OSD access address

BYTE ucBank;

   ucBank = msReadByte( BK0_00 );

   msWriteByte( BK0_00, REG_BANK_SCALER );

    wAddress = ((WORD)ucY * g_ucOsdWindowWidth) + ucX; // calculate OSD access address

 

msOsdSetCodeAttr9thBit( 1);

 

    // write OSD display code

    msWrite2Bytes(REG_OSD_DISPCA_L, wAddress);

    //msWriteByte(REG_OSD_DISPCD, ucCh);//ori

    msWriteByte(REG_OSD_DISPCD, ucCh&0x7f);

   

    // write OSD display attribute

    msWrite2Bytes(REG_OSD_DISPAA_L, wAddress);

    //msWriteByte(REG_OSD_DISPAD, g_ucOsdFontColor);//ori

    msWriteByte(REG_OSD_DISPAD, g_ucOsdFontColor&0x7f);.

}

 

void msOsdDrawStr(BYTE ucX, BYTE ucY, BYTE *pStr)

{

    WORD wAddress; // OSD access address

 

    BYTE ucDispChar;

    BYTE ucDispPtr;

BYTE ucBank;

    ucBank = msReadByte( BK0_00 );

    msWriteByte( BK0_00, REG_BANK_SCALER );

    wAddress = ((WORD)ucY * g_ucOsdWindowWidth) + ucX; // get real address

 

msOsdSetCodeAttr9thBit( 1);.

 

    // Write OSD Code

    msWrite2Bytes(REG_OSD_DISPCA_L, wAddress);

    ucDispPtr = 0; // initialize

    while(ucDispChar=*(pStr+ucDispPtr)) // display string font index

    {

        //msWriteByte(REG_OSD_DISPCD, ucDispChar); // code data port//ori

        msWriteByte(REG_OSD_DISPCD, ucDispChar&0x7f);.

        ucDispPtr++; // next

    } // while

 

    // Write OSD Attribute

    msWrite2Bytes(REG_OSD_DISPAA_L, wAddress);

    ucDispPtr = 0; // initialize

    while (ucDispChar=*(pStr+ucDispPtr))    // display string font index

    {

           //msWriteByte(REG_OSD_DISPAD, g_ucOsdFontColor); // attribute data port//ori

           msWriteByte(REG_OSD_DISPAD, g_ucOsdFontColor&0x7f);

        ucDispPtr++; // next

    } // while

}

반응형