/*==========================================================================*\ | DESQDEMO.C ver 2.0, 12-03-88 | | | | Demo for DESQview interface routines | | | | It is assumed that you are an operator of DESQview and that you are | | familiar with its operation. | | | | TO TEST: | | 1. Build the project file DESQDEMO.PRJ. | | 2. Build the project file DESQLOOP.PRJ. | | 3. Add these programs to DV with Direct video = "N". | | 4. Run DESQloop in one or more windows, say 1 and 2. | | 5. Run this program in another one, say 3. | | 6. Observe results. | | | | TO USE: | | 1. Follow instruction provided by DESQview. | | 2. For high speed buffer writing to a DESQview window, use | | QWIKC20.ARC. | | | | by James H. LeMay | | | | converted to Turbo C by | | Jordan Gallagher | | for Eagle Performance Software | | TC Products | | P.O. Box 292786 | | Lewisville, TX 75029-2786 | | | | Conversion to Turbo C by Jordan Gallagher / Wisdom Research | \*==========================================================================*/ #include #include #include #include #include "desqc20.h" #define LO_CHAR(v) (v & 0x0f) #define HI_CHAR(v) (v >> 4) #define LO_INT(v) (v & 0xff) #define HI_INT(v) (v >> 8) char far *videomode=(char far *) 0x00400049L; int videoseg; int dv_version; char str[30]; /********************************| htoa |************************************\ Converts a long to a string. The target string contains the long in hexadecimal form, i.e. "21CF89A5". The parameter hcnt specifies the amount of characters the target string should contain. The return value is a pointer to the target string. \****************************************************************************/ char *htoa( long val, char hcnt, char *string ) { if(hcnt > 4) sprintf( string, "0x%*lX", hcnt, val ); else if(hcnt > 2) sprintf( string, "0x%0*X", hcnt, (int) val ); else if(hcnt <= 2) sprintf( string, "0x%0*hX", hcnt, (unsigned char) val ); return(string); } main() { directvideo=0; /* use BIOS writes */ if(*videomode == 7) { /* set to mono or color segment */ videoseg=0xB000; } else { videoseg=0xB800; } videoseg=dv_get_video_buffer( videoseg ); dv_version=dv_get_version(); /* Optional */ clrscr(); if(!in_dv) { printf( "DESQview not active\n" ); } else { sprintf( str, "%4.2f", (float) (HI_INT(dv_version) + (float) LO_INT(dv_version) / 100 ) ); printf( "DESQview version = %s\n", str ); printf( "Video Segment = %s\n", htoa( videoseg, 4, str ) ); printf( "First character in row 1 is = %c\n", peekb( videoseg, 0 ) ); printf( "All windows should now freeze for 3 seconds\n" ); delay(1000); dv_begin_critical(); delay(3000); dv_end_critical(); printf( "Now all windows will continue.\n" ); printf( "Test completed. Scroll back to see row 1." ); } return; }