|
|
1.1 ! root 1: /* ! 2: * Example of DOSWRITEASYNC. (DOSREADASYNC is not demonstrated, ! 3: * but has identical usage). ! 4: * ! 5: * In this example, the program uses DOSWRITEASYNC to write a ! 6: * large block of data to the screen asynchronously, while the ! 7: * main program sits in a loop beeping. ! 8: * ! 9: * Compile as: cl -AL -G2 -Lp async.c ! 10: * ! 11: * Copyright (C) Microsoft Corp. 1986 ! 12: */ ! 13: ! 14: #include <doscalls.h> ! 15: ! 16: #define FREQ 440 ! 17: #define DURATION 500L ! 18: ! 19: char cbuf[10 * 1024]; /* buffer to write from */ ! 20: long sem; /* ram semaphore */ ! 21: ! 22: main() ! 23: { ! 24: int i; ! 25: unsigned rc; /* return code */ ! 26: unsigned bytecount; /* bytes written */ ! 27: ! 28: for(i = 0; i < sizeof(cbuf); i++) /* init buffer */ ! 29: cbuf[i] = 'x'; ! 30: ! 31: sem = 0; ! 32: DOSSEMSET((unsigned long)&sem); /* set semaphore */ ! 33: DOSWRITEASYNC(1,&sem,&rc,cbuf,sizeof(cbuf),&bytecount); ! 34: ! 35: for(i = 0; i < 10; i++) { ! 36: DOSBEEP(FREQ, DURATION); ! 37: DOSSLEEP(DURATION); ! 38: } ! 39: ! 40: DOSSEMWAIT((unsigned long)&sem, -1L); ! 41: printf("return code = %d, bytes written = %d\n", rc, bytecount); ! 42: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.