亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? get_a_re.c

?? BC3.1編譯,小交換機計費系統.使用Dos做出如此好的界面,少有.
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include <fcntl.h>
#include <conio.h>
#include <stdio.h>
#include <io.h>
#include <dos.h>
#include <graphics.h>
#include <key.inc>
#include <bio.inc>
#include <menu.inc>
#include "feedef.h"
#include <bios.h>
#include <alloc.h>

void interrupt far (*old_com1)(void);
void interrupt far (*old_com2)(void);

/* function  : initialize the SIO port address, according to COM1 or COM2
 * called by : take_all_record()
 * date      : 1993.9.24
 */
void InitPortAdd(void)
{
    int i;

    SIO_INT[0]  = 0xc;      /* interrupt vector of COM1  */
    SIO_DATA[0] = 0x3f8;    /* data port address of COM1 */
    SIO_INT[1]  = 0xb;      /* interrupt vector of COM2  */
    SIO_DATA[1] = 0x2f8;    /* data port address of COM2 */

    for(i=0; i<2; i++) {
        SIO_IER[i] = SIO_DATA[i]+1;    /* interrupt enable register         */
    	SIO_IIR[i] = SIO_DATA[i]+2;    /* interrupt identification register */
    	SIO_LCR[i] = SIO_DATA[i]+3;    /* line control register             */
    	SIO_MCR[i] = SIO_DATA[i]+4;    /* modem control register            */
    	SIO_LSR[i] = SIO_DATA[i]+5;    /* line status register              */
    	SIO_MSR[i] = SIO_DATA[i]+6;    /* modem status register             */
    }
}

/* function  : new interrupt serve program
 * called by : SIOInit()
 * date      : 1993.9.25
 */
void far interrupt new_com1(void)
{
    new_com(0);
}

void far interrupt new_com2(void)
{
    new_com(1);
}

void new_com(UC port)
{
    UC  status;

    while((status = inportb(SIO_IIR[port])&0x07) != 1)   /* have interrupt */
    {
        disable();           /* disable further interrupt come in  */
        switch(status)
        {
            case 6:                    /* receiving line error     */
                inportb(SIO_LSR[port]);
                break;
            case 4:                    /* have received valid data */
                SIORecInt(port);
                break;
            case 2:                    /* sending buffer is empty  */
                inportb(SIO_IIR[port]);
                break;
            case 0:                    /* modem interrupt */
                inportb(SIO_MSR[port]);
                break;
            default:
                break;
        }
        outportb(0x20,0x20);           /* tell 8259 this is end of interupt*/
        enable();
    }
    return;
}

/* function  : data receiving handle
 * called by : new_com()
 * date      : 1993.9.25
 */
void SIORecInt(UC port)                            /*receive data*/
{
    UC ch;

    ch = SIORecBuf[port][SIORecTail[port]++] = inportb(SIO_DATA[port]);
    if(DEBUG)
    {
	int i;
	UC str[4];
	union REGS inregs, outregs;

	sprintf(str, "#%02x", ch);

	for(i=0; i<3; i++)
	{
	   // show the character
	   inregs.h.ah = 0x09;
	   inregs.h.al = str[i];
	   inregs.h.bh = 0;
	   inregs.h.bl = 7; // character color
	   inregs.x.cx = 1;
	   int86(0x10, &inregs, &outregs);

	   // get the cursor position
	   inregs.h.ah = 0x03;
	   inregs.h.bh = 0;
	   int86(0x10, &inregs, &outregs);

	   // set the curosr positon
	   inregs.h.ah = 0x02;
	   if(outregs.h.dl == 79)  // last one
	   {
	       inregs.h.dh = outregs.h.dh + 1; // the next row
	       inregs.h.dl = 0;
	   }
	   else
	   {
	       inregs.h.dh = outregs.h.dh; // the same row
	       inregs.h.dl = outregs.h.dl + 1;
	   }

	   inregs.h.bl = 0;  // page
	   int86(0x10, &inregs, &outregs);
       }
    }

    if( (ch==0xfd) || (ch==0xfc) || (ch==0xb4) || (ch==0xb7) || (ch==0xb8) )
        CmdCount[port]++;
    if(SIORecTail[port] >= SIO_BUF_SIZE)
        SIORecTail[port] -= SIO_BUF_SIZE;

    return;
}

/* function  : send a char to SIO port, that is,send data to Exchanger
 * date      : 1993.9.25
 */
void ToCPU(UC port, UC ch)
{
    if(DEBUG)
	printf("%02x",ch);

    if(port == 0 || port == 1) {
	while(!(inportb(SIO_LSR[port]) & 0x20));      /* THR is not empty */
        outportb(SIO_DATA[port],ch);
    }
    else
        comtxch(IRQNO,port-2,ch);

    delay(15);		/* delay 15 ms */

    return;
}

/* function  : initialize Port address, set Baud rate, preserve the
 *             old INT vector, and set the new one
 * date      : 1993.9.25
 */
void SIOInit(void)
{
    int i,j;

    InitPortAdd();

    for(j=0; j<2; j++) {
        outportb(SIO_LCR[j],0x83);       /* Access Divisor Latch      */
        outportb(SIO_DATA[j],0x30);      /* 2400 Baud Rate            */
        outportb(SIO_IER[j],0);          /* disable interrupt of UART */
        outportb(SIO_LCR[j],0x03);       /* set 3-bits data len       */
    }

    disable();
    old_com1 = getvect(SIO_INT[0]);   /* preserve the old interrupt vector */
    setvect(SIO_INT[0],new_com1);     /* and set the new one               */

    old_com2 = getvect(SIO_INT[1]);   /* preserve the old interrupt vector */
    setvect(SIO_INT[1],new_com2);     /* and set the new one               */

    for(j=0; j<2; j++) {
        outportb(SIO_IER[j],0x1);        /* Enable Receive Int */
        outportb(SIO_MCR[j],0xb);        /* must be set if want interruption  */
    }
    /* in 8259A interrupt mask regiter(0x21), if bit is set, then the
     * corresponding interrupt is disable. COM1(IRQ4) and COM2(IRQ3)
     * interrupts are bit 4 and bit 3, so set them to 0 to enable
     * interrupt
     */
    outportb(0x21, inportb(0x21)&0xe7);

    for(j=0; j<2; j++) {
        for(i = 0; i < 100; i++)
        {
            inportb(SIO_DATA[j]);
            inportb(SIO_LSR[j]);
            inportb(SIO_MSR[j]);
            inportb(SIO_IIR[j]);
        }
    }

    for(j=0; j<PORT_NUM; j++) {
        SIORecTail[j] = SIORecHead[j] = 0;
        CmdCount[j] = 0;
    }

    TRCount = ERRCount = ErrCount = 0;
    enable();

    return;
}

/* function  : set back the interrupt vector to the original one
 * called by : take_all_record()
 * date      : 1993.9.25
 */
void SIOEnd(void)
{
    setvect(SIO_INT[0],old_com1);     /* and set the new one               */
    setvect(SIO_INT[1],old_com2);     /* and set the new one               */
    return;
}

/* function  : take all telephone records from Exchanger
 * called by : phone_record_proc()   (record.c)
 * output    : 0 -- unsuccessful in receiving
 *             1 -- successful in receiving
 * procedure : (1) connect with Exchanger
 *             (2) take all the telephone records to pabx.dat, and inform
 *                 Exchanger to clear the record buffer
 *             (3) transfer the records to idd.dbf, ddd.dbf and
 *                 ldd.dbf
 *             (4) remove pabx.dat
 * date      : 1993.9.25
 */
UC take_all_record(void)
{
    UC    suc;
    int   handle;
    UL    len1,len2;
    FILE  *fp;
    UC    port;

    check_dat_tmp();
    handle = open("pabx.chg",O_RDONLY|O_BINARY);
    if(handle != -1)         /* the file exists, then transfer again   */
    {
	len1 = filelength(handle);
	close(handle);
	if(len1 != -1)
	{
	    fp = fopen("pabx.lth","rb");    /* length file of pabx.chg */
	    if(fp != NULL)
	    {
		if(fread(&len2,sizeof(UL),1,fp)==1)
		{
		    fclose(fp);
		    if(len1 == len2)
		    {
			message_disp(8,"正在分揀, 請稍候...");
			all_record_transfer();
			message_end();

			tmp_to_dat();
			remove("pabx.chg");
			remove("pabx.lth");

			if(Cashflg[PHONE_CASH])
			    overflow_cash(INQUIRE, PHONE_CASH,1,1); /* in overcash.c */
			if(Cashflg[AUTH_CASH])
			    overflow_cash(INQUIRE, AUTH_CASH,1,1);  /* in overcash.c */
		    }   /* if(len1 == len2)               */
		}  /* if(fread(&len2,sizeof(UL),1,fp)==1) */
	    } /* if(fp != NULL) */
	    remove("pabx.chg");
	}     /* if(len1 != -1) */
    }    /* if(handle != -1)    */

    pop_back(H_BX,H_BY,H_BX+3*H_XAD,H_BY+2*H_YAD,LIGHTGRAY);

    for(port=0; port<PORT_NUM; port++) {
	if(!Sys_mode.com_m[port]) continue;

	suc = ConnTermAndCPU(port);       /* connect with Exchanger */
	if(suc != 1)                  /* not successful */
	{
	    rid_pop();
	    return(suc);
	}
    }

    suc = take_record();
    if(suc == 1)                  /* successful           */
    {
	if(TRCount != 0)          /* backup               */
	    tmp_to_dat();
	remove("pabx.chg");
	remove("pabx.lth");

	if(Cashflg[PHONE_CASH])
	    overflow_cash(INQUIRE, PHONE_CASH, 1, 1); /* in overcash.c */
	if(Cashflg[AUTH_CASH])
	    overflow_cash(INQUIRE, AUTH_CASH, 1, 1);  /* in overcash.c */
    }

    rid_pop();

    return(suc);
}

/* function  : check whether *.dat and *.tmp are the same, if not the same,
 *             copy *.dat to *.tmp
 * called by : take_all_record()
 * date      : 1993.10.18
 */
void check_dat_tmp(void)
{
    int   k;
    long  buff1,buff2;

    if ((k=open("idd.tmp",O_RDONLY|O_BINARY)) != -1)
    {
        buff1 = filelength(k);
        close(k);
	if((k=open("idd.dbf",O_RDONLY|O_BINARY)) != -1)
        {
            buff2 = filelength(k);
            close(k);
            if((buff1 != buff2) && (buff2 != 0))
                fcopy("idd.dbf","idd.tmp");
        }
    }

    if ((k=open("ddd.tmp",O_RDONLY|O_BINARY)) != -1)
    {
        buff1 = filelength(k);
        close(k);
        if((k=open("ddd.dat",O_RDONLY|O_BINARY)) != -1)
	{
            buff2 = filelength(k);
            close(k);
            if((buff1 != buff2) && (buff2 != 0))
                fcopy("ddd.dat","ddd.tmp");
        }
    }

    if ((k=open("ldd.tmp",O_RDONLY|O_BINARY)) != -1)
    {
        buff1 = filelength(k);
        close(k);
        if((k=open("ldd.dbf",O_RDONLY|O_BINARY)) != -1)
        {
            buff2 = filelength(k);
            close(k);
            if((buff1 != buff2) && (buff2 != 0))
                fcopy("ldd.dbf","ldd.tmp");
        }
    }
    return;
}


/* function  : connect with Exchanger

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99re这里都是精品| 五月婷婷综合网| 国产欧美日韩精品在线| 国产精品国产自产拍高清av| 亚洲色欲色欲www| 婷婷综合久久一区二区三区| 激情综合五月天| 91免费小视频| 精品少妇一区二区| 亚洲美女精品一区| 久久精品99国产国产精| 色综合久久88色综合天天 | 国产一区不卡视频| 91香蕉视频污在线| 精品福利av导航| 亚洲国产精品自拍| 国产一二三精品| 国产精品亚洲а∨天堂免在线| 91麻豆123| 欧美国产乱子伦| 日本不卡一区二区三区高清视频| 波多野结衣一区二区三区| 欧美精品久久99| 综合欧美一区二区三区| 久草热8精品视频在线观看| 在线视频一区二区三区| 制服丝袜av成人在线看| 精品国产乱码久久久久久免费| 一区二区三区久久久| 成人精品小蝌蚪| 久久久久9999亚洲精品| 日韩高清不卡一区二区| 日本丶国产丶欧美色综合| 国产欧美一区二区三区在线看蜜臀| 日韩经典一区二区| 欧美麻豆精品久久久久久| 亚洲视频一二三区| 免费在线观看视频一区| www.66久久| 中文字幕精品一区| 国产一区福利在线| 久久婷婷久久一区二区三区| 日本系列欧美系列| 欧美精品亚洲一区二区在线播放| 樱花影视一区二区| 91视视频在线直接观看在线看网页在线看| 精品国产乱码久久久久久老虎| 免费成人av在线| 欧美日本国产一区| 综合欧美亚洲日本| 99久久婷婷国产综合精品电影 | 欧美性猛片xxxx免费看久爱| 中文字幕亚洲欧美在线不卡| 成人av在线一区二区三区| 欧美极品xxx| 成人国产精品免费观看| 一区视频在线播放| 99视频有精品| 亚洲黄色在线视频| 99免费精品视频| 一区二区三区电影在线播| 欧美在线制服丝袜| 日韩高清在线不卡| 久久这里只精品最新地址| 国产乱人伦偷精品视频免下载| 国产视频一区二区在线观看| 国产精品资源在线| 2020国产精品自拍| 国产成人精品www牛牛影视| 中文子幕无线码一区tr | 蜜桃精品视频在线| 久久综合九色综合97_久久久| 成人免费看黄yyy456| 亚洲精品国产品国语在线app| 欧美日韩你懂得| 麻豆91精品视频| 精品少妇一区二区三区免费观看| 国产成人亚洲综合色影视| 亚洲人成在线播放网站岛国| 欧美日韩一区小说| 久久99久久精品欧美| 国产精品色噜噜| 欧美日本视频在线| 天堂久久一区二区三区| 欧美一级日韩免费不卡| 成人a区在线观看| 首页国产欧美日韩丝袜| 中文字幕第一页久久| 欧美性生交片4| 国产传媒日韩欧美成人| 亚洲一级二级在线| 久久久久久久综合日本| 欧美日韩视频在线一区二区 | 91精品国产欧美一区二区18| 成人网在线免费视频| 日韩中文字幕一区二区三区| 久久在线观看免费| 欧美区在线观看| 99久久99久久久精品齐齐| 欧美aⅴ一区二区三区视频| 亚洲欧洲精品天堂一级| 精品美女被调教视频大全网站| 色94色欧美sute亚洲线路一ni | 亚洲一区二区三区激情| 国产亚洲精品超碰| 日韩一级片在线播放| 在线看国产一区二区| 国产黄色精品视频| 日本欧美肥老太交大片| 亚洲女厕所小便bbb| 久久精品夜色噜噜亚洲a∨| 欧美电影一区二区| 日本久久电影网| 不卡视频免费播放| 国内精品不卡在线| 亚洲综合男人的天堂| 国产精品久久网站| 国产香蕉久久精品综合网| 91精品国产麻豆国产自产在线| 欧美影片第一页| 欧洲av一区二区嗯嗯嗯啊| www.性欧美| 麻豆精品一区二区三区| 亚洲色欲色欲www在线观看| 国产日韩欧美a| 2欧美一区二区三区在线观看视频| 91精品一区二区三区久久久久久 | 国产精品久久久久久亚洲毛片| 欧美日韩成人综合在线一区二区| 91麻豆精品一区二区三区| 99国产精品久| 91蝌蚪porny九色| 97久久超碰国产精品| 99re成人精品视频| 91国偷自产一区二区三区成为亚洲经典 | 国产精品一区二区在线看| 国产黑丝在线一区二区三区| 不卡av在线网| 91福利小视频| 欧美一区二区三区男人的天堂| 日韩午夜精品视频| 久久精品视频免费观看| 亚洲日本护士毛茸茸| 亚洲777理论| 国产综合色精品一区二区三区| 成人午夜免费av| 欧美性猛交xxxx黑人交| 91精品国产福利| 国产精品久久久久影视| 亚洲成人综合网站| 国产麻豆视频一区| 色婷婷综合视频在线观看| 欧美一区二区三区免费| 国产精品人妖ts系列视频| 亚洲成人av资源| 成人白浆超碰人人人人| 3d成人动漫网站| 自拍视频在线观看一区二区| 日韩专区在线视频| 99热国产精品| 欧美va亚洲va| 亚洲一级不卡视频| 国产尤物一区二区在线 | 国产成人av影院| 欧美性xxxxxxxx| 国产精品蜜臀av| 麻豆久久久久久久| 在线亚洲欧美专区二区| 国产欧美视频一区二区| 日韩国产成人精品| 色94色欧美sute亚洲线路一ni| 久久新电视剧免费观看| 亚洲妇女屁股眼交7| 不卡在线观看av| 精品国产一二三区| 亚洲国产另类精品专区| voyeur盗摄精品| 久久综合久久99| 日产国产欧美视频一区精品| 在线视频欧美区| 亚洲欧美在线视频观看| 国产福利一区二区| 精品国产1区二区| 美女一区二区在线观看| 欧美欧美欧美欧美首页| 一区二区三区欧美在线观看| 成人伦理片在线| 国产亚洲一区二区三区四区| 秋霞成人午夜伦在线观看| 欧美日韩中文国产| 亚洲在线免费播放| 91欧美一区二区| 亚洲免费在线观看视频| 成人精品电影在线观看| 久久久久高清精品| 国产麻豆午夜三级精品| 久久精品在这里| 粉嫩一区二区三区在线看| 国产亚洲一区二区三区在线观看 | 国产精品毛片无遮挡高清|