spooling
驱动牛犊
驱动牛犊
  • 注册日期2002-05-25
  • 最后登录2002-08-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1082回复:5

dos内存驻留问题

楼主#
更多 发布于:2002-08-13 12:29
这个程序能够驻留,但为什么不能PrintScreen键激活呢?
请哪位大虾帮忙看看,我在tc30下编译
#include <stddef.h>
#include <dos.h>
#include <stdio.h>
void interrupt (*oldint)();
void interrupt music();
unsigned char stack[0x1000];
unsigned intsp,intss;
unsigned freq1[87],freq[87]={
196,262,262,262,330,394,262,294,330,294,262,
0,0,0,0,0,0.0};
int dely[87]={
25,38,12,25,25,38,12,25,12,12,56,25,25,50,25,
0,0,0,0,0,0,0};
main()
{
oldint=getvect(5);
setvect(5,music);
keep(0,(_SS+(_SP/16)-_psp));

}

void interrupt music(bp,di,si,ds,es,dx,cx,bc,ax,ip,cs,flags)
{
int i;
char orignalbits,bits;
disable();
intsp=_SP;
intss=_SS;
_SP=(unsigned)&stack[0x1000-2];
_SS=_DS;
enable();
clrscr();
printf(\"Singing a Song\");
for(i=0;i<87;i++)
{
outportb(0x43,0xb6);
freq1=0x1234dc/freq;
outportb(0x42,freq1&0x00ff);
freq1=freq1>>8;
outportb(0x42,freq1);
bits=orignalbits=inportb(0x61);
outportb(0x61,bits|3);
delay(dely*25);
outportb(0x61,orignalbits);
}
oldint();
disable();
_SP=intsp;
_SS=intss;
enable();
}
如果你认为对你有用,请给分!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-08-13 12:33
1、拦截键盘的中断。
2、不能在ISR用printf!
spooling
驱动牛犊
驱动牛犊
  • 注册日期2002-05-25
  • 最后登录2002-08-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-13 12:40
他只是用了中断5,不驻留的话,可以运行,就是驻留以后推出就无法再激活驻留程序了.
如果你认为对你有用,请给分!
spooling
驱动牛犊
驱动牛犊
  • 注册日期2002-05-25
  • 最后登录2002-08-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-13 12:41
他只是用了中断5,没有中断9啊,不驻留的话,可以运行,就是驻留以后推出就无法再激活驻留程序了.
如果你认为对你有用,请给分!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-08-13 13:47
你不是想用PrintScreen激活吗?不拦截,你怎么知道PrintScreen按了?
spooling
驱动牛犊
驱动牛犊
  • 注册日期2002-05-25
  • 最后登录2002-08-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-13 13:57
 按下PrintScreen会产生中断5,请再指点一下.
如果你认为对你有用,请给分!
游客

返回顶部