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

📄 dspclock.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/* public domain TSR clock code. By Michelangelo Jones, 1:141/575 or// 1:1/124. Very little support available; this is a quick hack, not// an example of the best way to write a clock TSR! Use at own risk.// Runs under TC++/BC++. Your mileage may vary.*/#ifndef __HUGE__#error "Must be compiled using HUGE model-- for now"#endif#include <dos.h>extern unsigned _heaplen = 0;extern unsigned _stklen = 512;static char * screenbase =           (char *)                  MK_FP (0xb800, 0); /* change for mono */static const long int * volatile ticks =                /* to 0xb000, 0 */           (long int * volatile)     MK_FP (0, 0x046c);int calls, lastsec, lastmin, lasthr;const double tps = 18.20648;          /* found by experimentation! */void interrupt (*oldhandler)(void);void displayclock (void){    char *moveinto = screenbase + 300;    char *initwith = "      :     :       ";/* NOTE: This initializer only works because the attribute I want for the//       clock HAPPENS to be the same as the ASCII value for the SPACE char!//       Modify every alternate character if you want some other attribute.*/    while (*initwith)        *moveinto++ = *initwith++;    lastsec = -1;    lastmin = -1;    lasthr  = -1;    calls   = 20;}void interrupt clockproc(void){    static long seconds;    if (calls < 17)        calls++;    else    {        seconds = (long) ((double) *ticks / tps);        if (screenbase[301] != ' ') /* if the attribute has changed, */            displayclock();         /* the screen scrolled, so update. */        if (seconds % 60 != lastsec)        {            lastsec = seconds % 60;            calls = 0;            screenbase[314] = (char) (lastsec/10) + 48;            screenbase[316] = (char) (lastsec%10) + 48;            if ((! lastsec) || (lastmin < 0))            {                lastmin = (seconds % 3600) / 60;                screenbase[308] = (char) (lastmin/10) + 48;                screenbase[310] = (char) (lastmin%10) + 48;                if ((! lastmin) || (lasthr < 0))                {                    lasthr = ((seconds % 86400L) / 3600L);                    screenbase[302] = (char) (lasthr/10) + 48;                    screenbase[304] = (char) (lasthr%10) + 48;                }            }        }    }    oldhandler ();}main(){    oldhandler = getvect (0x1c);    displayclock();    setvect (0x1c, clockproc);    keep (0, (_SS + (_SP/16) - _psp));    return 0;}

⌨️ 快捷键说明

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