⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 singing.c

📁 TSR唱友谊天长地久的小程序
💻 C
字号:
#include <stdio.h> 
#include <stddef.h> 
#include <dos.h> 
#include <stdlib.h> 

void interrupt(*oldint)(); 
void interrupt music(); 

unsigned char stack[0x1000]; 
unsigned intsp,intss; 
unsigned freql[87]; 
unsigned freq[87]={196,262,262,262,330,294,262,294,330,294,262, 
                  330,394,440,440.394,330,330,262,294,262,294, 
                  330,294,262,230,230,196,262,440,394,330,330, 
                  262,294,262,294,440,394,330,330,394,440,523, 
                  394,330,330,262,294,262,294,330,294,262,230, 
                  230,196,262,440,394,330,330,262,294,262,294, 
                  440,394,330,330,394,440,523,394,330,330,262, 
                  294,262,294,330,294,262,230,230,196,262}; 
int dely[87]={25,38,12,25,25,38,12,25,12,12,56,25,25,50,25, 
              38,12,12,12,38,12,25,12,12,38,12,25,25,100,25, 
              38,12,12,12,38,12,25,25,38,12,25,25,100,25,38, 
              12,12,12,38,12,25,12,12,38,12,25,25,100,25,38, 
              12,12,12,38,12,25,25,38,12,25,25,100,25,38,12, 
              12,12,38,12,25,12,12,38,12,25,25,100}; 

void main() 
{ 
  oldint=getvect(0x1b); 
  setvect(0x1b,music); 
  keep(0,(_SS+(_SP/16)-_psp)); 
} 

void interrupt music(bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flags) 
{ 
  int i; 
  char orignalbits,bits; 
  disable(); 
  intsp=_SP; 
  intss=_SS; 
  _SP=(unsigned)&stack[0x1000-2]; 
  _SS=_DS; 
  enable(); 
  clrscr(); 
  printf("Sing a song!"); 
  for(i=0;i<87;i++) 
  { 
    outportb(0x43,0xb6); 
    freql[ i]=0x1234dc/freq[ i]; 
    outportb(0x42,freql[ i]&0x00ff); 
    freql[ i]=freql[ i]>>8; 
    outportb(0x42,freql[ i]); 
    bits=orignalbits=inportb(0x61); 
    outportb(0x61,bits|3); 
    delay(dely[ i]*25); 
    outportb(0x61,orignalbits); 
  } 
  oldint(); 
  disable(); 
  _SP=intsp; 
  _SS=intss; 
  enable(); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -