home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 267.img / RESIDNTC.ZIP / DEMOS.ZIP / LIBDEMO.C < prev    next >
C/C++ Source or Header  |  1990-02-12  |  2KB  |  72 lines

  1. /*
  2.    This example shows how to access the resident library functions
  3.    provided in RESLIB.EXE.  This program is set up to use small model.
  4. */
  5.   
  6. #include "tsr.h"
  7. #include "resproto.h"
  8. #include "stdio.h"
  9. #include "conio.h"
  10. #include "process.h"
  11. #include "dos.h"
  12.   
  13. int far *reslib_vector;
  14.   
  15. void main()
  16. {
  17. union REGS inregs, outregs;
  18. struct SREGS insregs;
  19. int i;
  20.   
  21. char *mystr1 = " /* Resident_C */ ";
  22. char *mystr2 = " LIBDEMO demo ! ";
  23.   
  24. /* Get address (offset) part of char pointers into dx and cx.         */
  25. /* The segment part of address is the default ds register because     */
  26. /* we are compiling in small model.  We get the default ds with the   */
  27. /* segread call below.  If we were large data model, we could use the */
  28. /* FP_SEG and FP_OFF macros in dos.h to get the segment and offset.   */
  29.   
  30. inregs.x.dx = (unsigned)mystr1;
  31. inregs.x.cx = (unsigned)mystr2;
  32.   
  33. segread(&insregs);
  34. insregs.es = insregs.ds;
  35.   
  36. /* find reslib vector using tsrshare() */
  37.   
  38. i = tsrshare(0x4757,(void far *) &reslib_vector);
  39. if( i != 0)
  40.     {
  41.     printf(" RESLIB not loaded!\n");
  42.     exit(1);
  43.     }
  44.   
  45. printf("call function 0 to print registers used\n");
  46. inregs.h.ah = 0;
  47. int86x(*reslib_vector, &inregs, &outregs, &insregs);
  48.   
  49. inregs.h.ah = 1;
  50. printf("string 1 =");
  51. int86x(*reslib_vector, &inregs, &outregs, &insregs);
  52.   
  53. inregs.h.ah = 2;
  54. printf("string 2 =");
  55. int86x(*reslib_vector, &inregs, &outregs, &insregs);
  56.   
  57. inregs.h.ah = 3;
  58. int86x(*reslib_vector, &inregs, &outregs, &insregs);
  59. printf("compare of strings = %d\n", outregs.x.ax);
  60.   
  61. inregs.h.ah = 4;
  62. int86x(*reslib_vector, &inregs, &outregs, &insregs);
  63. inregs.h.ah = 3;
  64. int86x(*reslib_vector, &inregs, &outregs, &insregs);
  65. printf("compare of strings after copy = %d\n", outregs.x.ax);
  66.   
  67. inregs.h.ah = 5;
  68. int86x(*reslib_vector, &inregs, &outregs, &insregs);
  69. printf("length of string 1 = %u\n", outregs.x.ax);
  70.   
  71. }
  72.