home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 210_01 / cxb.c < prev    next >
Text File  |  1979-12-31  |  1KB  |  61 lines

  1. /* cxb.c--checks for xbios modules.
  2.    Copyright 7/85 N.T.Carnevale.
  3.    Permission granted for nonprofit use only.
  4.    See my article in the July/August 1986 issue of 
  5.    Micro/Systems Journal pp.72-85.
  6. */
  7.  
  8. #include "printf.h"
  9.  
  10. /* vital definitions */
  11. #include "xb.h"
  12.  
  13. #define VERSION "v.1.2 7/16/85\n\n"
  14.  
  15. char *idstring=SIG;
  16. boolean found=FALSE;
  17.  
  18.  
  19. main()
  20. {
  21.     struct xbhdr *xbintro;
  22.     struct cpmhdr *cpmintro;
  23.     char *vers,*descr;
  24.     boolean xbexists;
  25.  
  26.     printf(VERSION);
  27.     xbexists=TRUE;    /* assume there is one */
  28.     /* find start of suspected module */
  29.     cpmintro=0;
  30.     xbintro=(struct xbhdr *)cpmintro->bdosloc;
  31.     while (xbexists) {
  32.         /* now see if the signature is where it should be */
  33.         if (compare(idstring,xbintro->signature,SIGLNTH)) {
  34.             found=TRUE;
  35.             printf("xbios present at %x\n",(int)xbintro);
  36.             vers = &xbintro->vstart;
  37.             descr = &vers[strlen(vers)+1];
  38.             printf("%s\n%s\n\n",vers,descr);
  39.             /* try for the next one */
  40.             xbintro=(struct xbhdr *)xbintro->oldbdos;
  41.         }
  42.         else xbexists=FALSE;
  43.     }
  44.     if (!found) printf("no xbios installed\n");
  45. }
  46.  
  47.  
  48. boolean compare(s1,s2,num)
  49. /* compare num bytes pointed to by s1 and s2
  50.    return TRUE if identical, otherwise return FALSE */
  51. char s1[],s2[];
  52. int num;
  53. {
  54.     int i;
  55.     boolean equal;
  56.  
  57.     for (i=0,equal=TRUE; (i<num) && equal; i++) 
  58.         equal = s1[i]==s2[i];
  59.     return (equal);
  60. }
  61.