線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:9074
推到 Plurk!
推到 Facebook!

【TC++】【DOS】直接讀出倚天字型檔(15點陣字)

 
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-06 13:42:13 IP:61.231.xxx.xxx 未訂閱
/*---------------------------------------------------------------------------*/
/* ETFONT.CPP  use Mode 0x12 (graphics) 80x30 [640x480 (8x16)]    */
/*---------------------------------------------------------------------------*/
// #pragma inline    #include 
#include 
#include 
#include 
#include 
#include     void SetVideoMode(unsigned char videomode)
{
   asm   mov   ah,00h
   asm   mov   al,videomode
   asm   int   10h
}
void gotoxy0(unsigned char x,unsigned char y)
{
   x--;y--;
   asm   mov   ax,0200h
   asm   mov   bh,0
   asm   mov   dh,y        // Zero Base
   asm   mov   dl,x        // Zero Base
   asm   int   10h
}
void wherexy0(unsigned char *x,unsigned char *y)
{
   unsigned char xx,yy;
   asm   mov   ax,0300h
   asm   mov   bh,0
   asm   int   10h
   asm   mov   yy,dh       // Zero Base
   asm   mov   xx,dl       // Zero Base
   *x=xx 1;    *y=yy 1;
}    void ScrollUp(unsigned char lines_up,unsigned char attr,
           unsigned char upperleft_x,unsigned char upperleft_y,
           unsigned char loweright_x,unsigned char loweright_y)
{                                   // The Coord. is ZERO based
   asm   mov   ah,06h
   asm   mov   al,lines_up
   asm   mov   bh,attr
   asm   mov   ch,upperleft_y
   asm   mov   cl,upperleft_x
   asm   mov   dh,loweright_y
   asm   mov   dl,loweright_x
   asm   int   10h
}    void ScrollDown(unsigned char lines_down,unsigned char attr,
           unsigned char upperleft_x,unsigned char upperleft_y,
           unsigned char loweright_x,unsigned char loweright_y)
{
   asm   mov   ah,07h
   asm   mov   al,lines_down
   asm   mov   bh,attr
   asm   mov   ch,upperleft_y
   asm   mov   cl,upperleft_x
   asm   mov   dh,loweright_y
   asm   mov   dl,loweright_x
   asm   int   10h
}
void PutPixel(int x,int y,unsigned char attr,unsigned char page=0)
{
   asm   mov   ah,0Ch
   asm   mov   al,attr
   asm   mov   bh,page
   asm   mov   cx,x
   asm   mov   dx,y
   asm   int   10h
}
unsigned char GetPixel(int x,int y,unsigned char page=0)
{
   unsigned char attr;
   asm   mov   ah,0Dh
   asm   mov   bh,page
   asm   mov   cx,x
   asm   mov   dx,y
   asm   int   10h
   asm   mov   attr,al
   return attr;
}    void Get_Video_State0(void)
{
   unsigned char far *CurrentVideoMode =(unsigned char far *)0x00400049;
   unsigned int  far *NumberofColumns  =(unsigned int  far *)0x0040004A;
   unsigned int  far *VideoBufferSize  =(unsigned int  far *)0x0040004C;
   unsigned int  far *VideoBufferOffset=(unsigned int  far *)0x0040004E;
   unsigned char far *ActiveDisplayPage=(unsigned char far *)0x00400062;
   unsigned char far *NumberofRows     =(unsigned char far *)0x00400084;
   unsigned int  far *HeightofCharacter=(unsigned int  far *)0x00400085;       printf(" CurrentVideoMode  = %6u\n",*CurrentVideoMode );
   printf(" NumberofColumns   = %6u\n",*NumberofColumns  );
   printf(" VideoBufferSize   = %6u\n",*VideoBufferSize  );
   printf(" VideoBufferOffset = %6u\n",*VideoBufferOffset);
   printf(" ActiveDisplayPage = %6u\n",*ActiveDisplayPage);
   printf(" NumberofRows      = %6u\n",*NumberofRows     );
   printf(" HeightofCharacter = %6u\n",*HeightofCharacter);
}
void Set_Video_State0(void)
{
   unsigned char far *NumberofRows     =(unsigned char far *)0x00400084;
   unsigned int  far *HeightofCharacter=(unsigned int  far *)0x00400085;
   char c=*NumberofRows;
   int  i=*HeightofCharacter;       *NumberofRows     =(unsigned char)c/2;
   *HeightofCharacter=(unsigned int )i*2;
}    void FileOpenError(char *f,char flagexit=0)
{
   printf("\nFile Open Error : %s\n",f);
   if(flagexit)   { fcloseall(); exit(1); }
}
void ReadFileError(void)
{
   printf("\nReading File Error\n");
   fcloseall();
   exit(1);
}
void SeekFileError(void)
{
   printf("\nSEEK file ERROR\n");
   fcloseall();
   exit(1);
}
void MemoryNotEnough(void)
{
   printf("\nMemory Not Enough\n");
   exit(1);
}
void showOneChineseWord0(int *xx,int *yy,unsigned char *fbuf)
{
   int x=*xx,  y=*yy;
   int i,j;
   unsigned char mask;
   for(j=0;j<15;j  )
   {
      for(mask=0x80,i=0;i<8;i  ,mask>>=1) if(fbuf[j*2]&mask) PutPixel(x i,y j,0x0F);
      for(mask=0x80,i=0;i<8;i  ,mask>>=1) if(fbuf[j*2 1]&mask) PutPixel(x 8 i,y j,0x0F);
   }
   *xx =16;*xx%=640;
   if(x>*xx)
   {
      if(*yy 16>=480) ScrollUp(1,0x71,0,0,79,29);   // ScrollUp One Line
      else           { *yy =16;*yy%=480;  }
   }
}
void showOneChineseWord(int *xx,int *yy,unsigned char *fbuf)
{
   int x=*xx,  y=*yy;                                 // ZERO based
   char far *farptr=(char far *)0xA0000000L y*80 x;
   int j;
   for(j=0;j<15;j  )
   {
      farptr[j*80]  =fbuf[j*2];
      farptr[j*80 1]=fbuf[j*2 1];
   }
   *xx =2;*xx%=80;
   if(x>*xx)
   {
      if(*yy 16>=480) ScrollUp(1,0x71,0,0,79,29);   // ScrollUp One Line
      else           { *yy =16;*yy%=480;  }
   }
}    char *ETfontfile[5];
char *ETascfont ="c:\\c\\et35\\ascfont.15";
char *ETstdfont ="c:\\c\\et35\\stdfont.15";
char *ETspcfont ="c:\\c\\et35\\spcfont.15";
char *ETspcfsupp="c:\\c\\et35\\spcfsupp.15";
char *ETusrfont ="c:\\c\\et35\\usrfont.15m";
void showChineseWord(void)
{
   FILE *Ffile;
   unsigned char filebuf[2*15];
   int fontnumber[5];
   int scrx,scry;       ETfontfile[0]=ETascfont;   fontnumber[0]=256;
   ETfontfile[1]=ETstdfont;   fontnumber[1]=13094;
   ETfontfile[2]=ETspcfont;   fontnumber[2]=  408;
   ETfontfile[3]=ETspcfsupp;  fontnumber[3]=  365;
   ETfontfile[4]=ETusrfont;   fontnumber[4]= 5809;       scrx=0;scry=0;
   for(int j=1;j<5;j  )
   {
      ScrollUp(1,0x71,0,0,79,29);   // ScrollUp One Line
      scrx=0;          if((Ffile=fopen(ETfontfile[j],"rb"))==NULL)  FileOpenError(ETfontfile[j],1);
      if(j==4) fseek(Ffile,256,SEEK_SET);
      for(int i=0;i    沒空更新的網頁...
http://dllee.ktop.com.tw   C及指標教學,計算機概論,資訊管理導論... big5.to/吃軟也吃硬 dllee.adsldns.org  介紹Shells,LiteStep,GeoShell....
        
------
http://www.ViewMove.com
附加檔案:29996_ETFONT.CPP
91061014
一般會員


發表:0
回覆:1
積分:0
註冊:2005-06-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-20 13:31:29 IP:210.192.xxx.xxx 未訂閱
請問一下,程式中include 中的bios.h檔可以去那邊下載download. 可以告訴我嗎,謝謝幫忙.
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-03 21:17:55 IP:211.76.xxx.xxx 未訂閱
引言: 請問一下,程式中include 中的bios.h檔可以去那邊下載download. 可以告訴我嗎,謝謝幫忙.
這是在 Turbo C 2.0 下開發的,如果您有 TC 2.0 或 3.0 應該就會有 bios.h 檔。免費的 Borland C Compiler 5.x 應該也有。 要注意的是,這只能用於 DOS!! C# 初學者請多指教 < href="http://free.greenworld.com.tw/~dllee/" target="blank">吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ KTOP CAN Open
------
http://www.ViewMove.com
系統時間:2024-04-25 15:41:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!