![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 15:54 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » [原创]我写的键盘程序,呵呵,还很幼稚哦! |
| 可打印版本 1,216 / 6 |
| 第1楼 xy_god | 发表于 2003-10-26 00:00 |
| 中级用户 发帖 56 积分 276 | |
|
[原创]我写的键盘程序,呵呵,还很幼稚哦! /************************************************/
/* 通过8042芯片与键盘通信示例程序 */ /* 作者:xy_god */ /************************************************/ #include "dos.h" #include "stdio.h" #include "conio.h" int iCode=0; int blKey=0; void interrupt ( *oldhandler)(void);/*中断处理函数指针*/ void interrupt handler(void); int getbit(char c,int i); void getkeystate(); int main(void)/***********************主函数***********************/ { int a; oldhandler = getvect(0X09);/*取得原先键盘中断地址*/ setvect(0X09, handler);/*安装新的键盘中断*/ getkeystate(); printf("*********************************************\n" ;while (1) { if(blKey==1) { blKey=0; printf("%X",iCode); printf("****" ;getkeystate(); } } setvect(0X09, oldhandler);/*恢复键盘中断*/ return 0; }/*****************************************************************/ void interrupt handler(void)/*键盘中断处理程序*/ { blKey=1; iCode=inport(0x60); oldhandler(); } int getbit(char c,int i)/*获取字节的第i位的值*/ { int mi; mi=c<127) return 1; else return 0; } void getkeystate()/*获取键盘状态*/ { int i,ic=0,bitvalue; for(ic=0;ic<8;ic++) { i=inport(0x64); bitvalue=getbit(i,ic); switch(ic) { case 0: if(bitvalue) printf("OBF=TRUE\n" ; else printf("OBF=FALSE\n" ;break; case 1: if(bitvalue) printf("IBF=TRUE\n" ; else printf("IBF=FALSE\n" ;break; case 2: if(bitvalue) printf("SYS=TRUE\n" ; else printf("SYS=FALSE\n" ;break; case 3: if(bitvalue) printf("A2=TRUE\n" ; else printf("A2=FALSE\n" ;break; case 4: if(bitvalue) printf("INTH=TRUE\n" ; else printf("INH=FALSE\n" ;break; case 5: if(bitvalue) printf("TxTO=TRUE\n" ; else printf("TxTO=FALSE\n" ;break; case 6: if(bitvalue) printf("RxTO=TRUE\n" ; else printf("RxTO=FALSE\n" ;break; case 7: if(bitvalue) printf("PERR=TRUE\n" ; else printf("PERR=FALSE\n" ;break; } } } |
|
| 第2楼 xy_god | 发表于 2003-10-26 00:00 |
| 中级用户 发帖 56 积分 276 | |
|
这个程序是用TC2。0写的,开发环境是吴进的WIN-TC172,呵呵!
本来可读性是很好的,可是不知道怎么回事情发到论坛上就变了样,凑合看吧! 其实大家仔细看一看,这个程序和用SDK 开发WINDOWS程序是的结构很相似的,用他就可以实现DOS程序的多线程,注意,我说的是多线程,不是多任务哦,呵呵! 这是一个8042的PS2键盘的程序,等我看完关于鼠标的内容,我会写个鼠标的驱动给大家, 不过,现在真的很忙,没空写,所以要等一段时间了,真的很无奈!TMD! |
|
| 第3楼 lemonhall | 发表于 2003-10-27 00:00 |
| 高级用户 发帖 183 积分 639 | |
|
it's only a console program, but not a dos program.
|
|
| 第4楼 xy_god | 发表于 2003-10-27 00:00 |
| 中级用户 发帖 56 积分 276 | |
|
拜托啦,楼上的,我是用TC20写的,什么CONSOLE程序啊,纯粹的DOS程序好不啦!
你仔细看了没有啊,老天爷! 我是在模仿WIN32 SDK的程序结构啦! |
|
| 第5楼 lemonhall | 发表于 2003-10-27 00:00 |
| 高级用户 发帖 183 积分 639 | |
|
it's my fault, sorry.it's really a hardware programm
|
|
| 第6楼 xy_god | 发表于 2003-10-27 00:00 |
| 中级用户 发帖 56 积分 276 | |
|
我曾经用这个结构写过一个DOS图形系统,
定义了好多消息结构,也挺好玩的, 实现了多线程,不过要处理和初始化好多中断! 完全是以消息为基础的,我希望有人受到这个启发,开发一个函数库,以后开发DOS 程序的时候就有一个图形化标准了,而且程序的框架都是统一的! |
|
| 第7楼 alhan | 发表于 2004-05-12 00:00 |
| 初级用户 发帖 11 积分 125 | |
|
>我曾经用这个结构写过一个DOS图形系统
放上来,让我们看看. |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |