1、 /* initialize graphics and local variables */ initgraph(&gdriver, &gmode, ); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ printf(Graphics error: %sn, grapherrormsg(errorcode);Press any key to halt: getch(); exit(1); /* terminate with
2、an error code */ maxx = getmaxx(); x = 0; y = getmaxy() / 2; /* draw the image to be grabbed */ draw_arrow(x, y); /* calculate the size of the image */ size = imagesize(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE); /* allocate memory to hold the image */ arrow = malloc(size); /* grab the image *
3、/ getimage(x, y-ARROW_SIZE, x+(4*ARROW_SIZE), y+ARROW_SIZE, arrow); /* repeat until a key is pressed */ while (!kbhit() /* erase old image */ putimage(x, y-ARROW_SIZE, arrow, XOR_PUT); x += ARROW_SIZE; if (x = maxx) /* plot new image */ /* clean up */ free(arrow); closegraph(); return 0;void draw_ar
4、row(int x, int y) /* draw an arrow on the screen */ moveto(x, y); linerel(4*ARROW_SIZE, 0); linerel(-2*ARROW_SIZE, -1*ARROW_SIZE); linerel(0, 2*ARROW_SIZE); linerel(2*ARROW_SIZE, -1*ARROW_SIZE); initgraph 初始化图形系统 void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver); /
5、* request auto detection */ /* initialize graphics mode */ /* return with error code */ /* draw a line */ line(0, 0, getmaxx(), getmaxy(); inport 从硬件端口中输入 int inp(int protid);dos.h int result; int port = 0; /* serial port 0 */ result = inport(port);Word read from port %d = 0x%Xn, port, result); insl
6、ine 在文本窗口中插入一个空行 void insline(void); clrscr(); cprintf(INSLINE inserts an empty line in the text windowrnat the cursor position using the current textrnbackground color. All lines below the empty onernmove down one line and the bottom line scrollsrnoff the bottom of the window.rnrnPress any key to c
7、ontinue: gotoxy(1, 3); insline(); installuserdriver 安装设备驱动程序到BGI设备驱动程序表中 int far installuserdriver(char far *name, int (*detect)(void);/* function prototypes */int huge detectEGA(void);void checkerrors(void); int gdriver, gmode; /* install a user written device driver */ gdriver = installuserdriver(
8、EGA, detectEGA); /* must force use of detection routine */ gdriver = DETECT; /* check for any installation errors */ checkerrors(); /* check for any initialization errors */* detects EGA or VGA cards */int huge detectEGA(void) int driver, mode, sugmode = 0; detectgraph(&driver, &mode); if (driver =
9、EGA) | (driver = VGA) /* return suggested video mode number */ return sugmode; else /* return an error code */ return grError;/* check for and report any graphics errors */void checkerrors(void) int errorcode; /* read result of last graphics operation */= grOk) installuserfont 安装未嵌入BGI系统的字体文件(CHR) i
10、nt far installuserfont(char far *name);/* function prototype */ int gdriver = DETECT, gmode; int userfont; int midx, midy; midx = getmaxx() / 2; midy = getmaxy() / 2; /* install a user defined font file */ userfont = installuserfont(USER.CHR /* select the user font */ settextstyle(userfont, HORIZ_DI
11、R, 4); /* output some text */ outtextxy(midx, midy, Testing! int86 通用8086软中断接口 int int86(int intr_num, union REGS *inregs, union REGS *outregs);#define VIDEO 0x10void movetoxy(int x, int y) union REGS regs; regs.h.ah = 2; /* set cursor postion */ regs.h.dh = y; regs.h.dl = x; regs.h.bh = 0; /* video
12、 page 0 */ int86(VIDEO, ®s, ®s); movetoxy(35, 10);Hellon int86x int int86x(int intr_num, union REGS *insegs, union REGS *outregs, struct SREGS *segregs);process.h char filename80; union REGS inregs, outregs; struct SREGS segregs;Enter filename: gets(filename); inregs.h.ah = 0x43; inregs.h.al =
13、 0x21; inregs.x.dx = FP_OFF(filename); segregs.ds = FP_SEG(filename); int86x(0x21, &inregs, &outregs, &segregs);File attribute: %Xn, outregs.x.cx); intdos 通用DOS接口 int intdos(union REGS *inregs, union REGS *outregs);/* deletes file name; returns 0 on success, nonzero on failure */int delete_file(char
14、 near *filename) int ret; regs.h.ah = 0x41; /* delete file */ regs.x.dx = (unsigned) filename; ret = intdos(& /* if carry flag is set, there was an error */ return(regs.x.cflag ? ret : 0); int err; err = delete_file(NOTEXIST.$ if (!err)Able to delete NOTEXIST.$nNot Able to delete NOTEXIST.$n intdosx
15、 通用DOS中断接口 int intdosx(union REGS *inregs, union REGS *outregs, struct SREGS *segregs);int delete_file(char far *filename) struct SREGS sregs; regs.x.dx = FP_OFF(filename); sregs.ds = FP_SEG(filename); ret = intdosx(&sregs); intr 改变软中断接口 void intr(int intr_num, struct REGPACK *preg);string.hdir.h#define CF 1 /* Carry flag */ char directory80; struct REGPACK reg;Enter directory to change to: gets(directory); reg.r_ax = 0x3B int stat; /* use func 8 to determine if the default drive is removable */ stat = ioctl(0, 8, 0, 0);stat)Drive %c is removable.n, getdisk() + ADrive %c is not removable.n
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1