中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 求救:dos下256色模式 上一主题 | 下一主题
wangqiuqiu
新手上路





积分 12
发帖 2
注册 2006-3-31
状态 离线
『楼 主』:  求救:dos下256色模式

这位大侠:
     我现在是在dos下使用的 640×480 256色的模式。
        g_mode =0x101; /*  Select VGA ( 640x480 ) Mode  256 color */
        regs.x.ax=0x4F02;               
        regs.x.bx=(short)g_mode;      
        int86(0x10,&regs,&regs);      
           if(regs.h.al !=0x4F)           
        {
                printf("VESA modes NOT supported! \n");   
        }   
                 
short  get_pale( unsigned char p_color[256][3] )

  {
      int     t,i;

          
          unsigned char  my_color[16][3]={  0, 0,  0,
                                               108,108,108,
                                               138,138,138,
                                               157,157,157,
                                                                           255,255,255,
                                                                           81,204,189,
                                                                           82,103,254,
                                                                           2,  28,202,
                                                                           247,223,142,
                                                                           187,187,0,
                                                                           63,143,39,
                                                                           193,168,49,
                                                                           255,255,0,
                                                                           210,0,210,
                                                                           202,0,0,
                                                                           151,0,0                    
          };
          
          for(t=0;t<256;t++)
          {
                  if(t<16)
                  {
                          for(i=0;i<3;i++)
                          {
                                p_color[t]=my_color[t];

                          }
                  }
                  else
                  {
                          for(i=0;i<3;i++)
                          {
                                p_color[t]=0;

                          }

                  }
          }
      return 1;
}
/* *******************************************
*  2006/4/14  设置色板 256 色
**********************************************/
void SetPalette(unsigned char pal[256][3])
{
union REGS r;
struct SREGS s;
r.h.ah=0x10;
r.h.al=0x12;
r.x.bx=0;
r.x.cx=256;
s.es=FP_SEG(pal);
r.x.dx=FP_OFF(pal);
int86x(0x10,&r,&r,&s);
}
      256色板只设置了16中颜色,由于我以前采用的是640×480 16色的标准模式,当我重新选择了256色的方式,设置完色板后,我得程序运行后是花屏的,所以我想原来的一些显示字符和象素的函数可能都要进行重新写,各位大侠,如果谁有类似的扩充显示模式的代码,给提供一点可以吗?
  先谢谢啦!!!
  dos下开发有时觉得好孤单,呵呵Sample Text

2006-4-17 13:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wl00560
银牌会员





积分 1384
发帖 709
注册 2005-10-29
状态 离线
『第 2 楼』:  

发错地方了吧,应该发到编程去啊。

2006-4-17 23:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: