home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / cpm / cpm68k / kmince.lbr / CPM68K.CQ / CPM68K.C
Text File  |  1986-08-29  |  2KB  |  158 lines

  1. /* CPM68K.C    This is the CP/M-68K specialized routines.
  2.  
  3.     Copyright 1982 by Mark of the Unicorn, Inc.
  4.  
  5.     These imitate all the BDS C functions which the Digital Research
  6. supplied C compiler doesn't have (those which we use, that is). */
  7.  
  8. /* Notice we DON'T include mince.gbl. */
  9.  
  10. bios(call,arg)                    /* Do a BIOS call on CP/M-68K
  11.                             This is a hack because it will
  12.                             not accomodate all call forms,
  13.                             because "arg" is a char type.
  14.                             Done through *BDOS* call #50,
  15.                             recommended in DR documentation */
  16.     int call;
  17.     char arg;
  18. {
  19.     struct {                    /* BPB: BIOS Parameter Block */
  20.         int fnum;
  21.         long p1, p2;
  22.         } bpb;
  23.     int retcode;
  24.  
  25.     bpb.fnum=call;
  26.     bpb.p1=arg;
  27.     retcode=__BDOS(50,&bpb);
  28.     return(retcode);
  29. }
  30.  
  31. Xread(fd,buffer,bytes)
  32.     int    fd;
  33.     char    *buffer;
  34.     int    bytes;
  35. {
  36.     return(read(fd,buffer,bytes*128));
  37. }
  38.  
  39. Xwrite(fd,buffer,bytes)
  40.     int    fd;
  41.     char    *buffer;
  42.     int    bytes;
  43. {
  44.     return(write(fd,buffer,bytes*128));
  45. }
  46.  
  47. Xopen(name,mode)
  48.     char    *name;
  49.     int    mode;
  50. {
  51.     return(openb(name,mode));
  52. }
  53.  
  54. Xcreat(name,mode)
  55.     char    *name;
  56.     int    mode;
  57. {
  58.     return(creatb(name,mode));
  59. }
  60.  
  61. seek(fd,offset,ptrname)
  62.     int    fd;
  63.     int    offset;
  64.     int    ptrname;
  65. {
  66.     long    roffset;
  67.     long lseek();
  68.  
  69.     roffset=offset;
  70.     roffset=lseek(fd,roffset*128,ptrname);
  71.     if (roffset<0) return(-1); else return(0);
  72. }
  73.  
  74. int isalpha(c)
  75.     char    c;
  76. {
  77.     return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
  78. }
  79.  
  80. int isspace(c)
  81.     char    c;
  82. {
  83.     return (c == '\040' || c == '\011' || c == '\012' || c == '\015');
  84. }
  85.  
  86. int tolower(c)
  87.     char    c;
  88. {
  89.     return (isupper(c) ? c-'A'+'a' : c);
  90. }
  91.  
  92. int toupper(c)
  93.     char    c;
  94. {
  95.     return (islower(c) ? c-'a'+'A' : c);
  96. }
  97.  
  98. int isupper(c)
  99.     char    c;
  100. {
  101.     return (c >= 'A' && c <= 'Z');
  102. }
  103.  
  104. int islower(c)
  105.     char c;
  106. {
  107.     return (c >= 'a' && c <= 'z');
  108. }
  109.  
  110. int isdigit(c)
  111.     char c;
  112. {
  113.     return (c>='0' && c<='9');
  114. }
  115.  
  116. inp(n)
  117.     int n;
  118. {
  119.     return(0);
  120.     }
  121.  
  122. outp(n)
  123.     int n;
  124. {
  125.     return(0);
  126.     }
  127.  
  128. kbhit()
  129. {
  130.     return(bios(2));
  131.     }
  132.  
  133. setmem(addr,count,byte)
  134.     char *addr, byte;
  135.     int count;
  136. {
  137.     while (count--) *addr++=byte;
  138.     }
  139.  
  140. movmem(source, dest, count)
  141.     char *source, *dest;
  142.     int count;
  143. {
  144.     if (source > dest)
  145.         while (count--) *dest++ = *source++;
  146.     else {
  147.         source+=count;
  148.         dest+=count;
  149.         while (count--) *--dest = *--source;
  150.         }
  151.     }
  152.  
  153.  
  154. /* END OF CPM68K.C - CP/M-68K special routines */
  155. ount;
  156.         dest+=count;
  157.         while (count--) *--dest = *--source;
  158.