home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / hitech-c / z80v309.exe / CPM.H < prev    next >
Encoding:
Text File  |  1993-06-19  |  3.5 KB  |  109 lines

  1. /* header file for CP/M i/o routines for Z-80 C */
  2.  
  3. /* get basic definitions */
  4.  
  5. #ifndef    _STDDEF
  6. typedef    int        ptrdiff_t;    /* result type of pointer difference */
  7. typedef    unsigned    size_t;        /* type yielded by sizeof */
  8. #define    _STDDEF
  9.  
  10. #ifndef    NULL
  11. #define    NULL    ((void *)0)
  12. #endif    NULL
  13.  
  14. extern int    errno;            /* system error number */
  15. #endif    _STDDEF
  16.  
  17. /*    hitech.h has definitions for uchar, ushort etc */
  18.  
  19. #include    <hitech.h>
  20. #if    z80
  21. #define    MAXFILE        8    /* max number of files open */
  22. #else    z80
  23. #define    MAXFILE        15    /* max number of files open */
  24. #endif    z80
  25. #define    SECSIZE        128    /* no. of bytes per sector */
  26.  
  27. extern struct    fcb {
  28.     uchar    dr;        /* drive code */
  29.     char    name[8];    /* file name */
  30.     char    ft[3];        /* file type */
  31.     uchar    ex;        /* file extent */
  32.     char    fil[2];        /* not used */
  33.     char    rc;        /* number of records in present extent */
  34.     char    dm[16];        /* CP/M disk map */
  35.     char    nr;        /* next record to read or write */
  36.     uchar    ranrec[3];    /* random record number (24 bit no. ) */
  37.     long    rwp;        /* read/write pointer in bytes */
  38.     uchar    use;        /* use flag */
  39.     uchar    uid;        /* user id belonging to this file */
  40. }    _fcb[MAXFILE];
  41.  
  42. extern char        bdos(int, ...);
  43. extern struct fcb *    getfcb(void);
  44. extern short        bdoshl(int, ...);    /* bdos call returning value in hl */
  45. extern uchar        getuid(void);
  46. extern void        setuid(int);
  47. extern uchar        setfcb(struct fcb *, char *);
  48.  
  49. /*     flag values in fcb.use */
  50.  
  51. #define    U_READ    1        /* file open for reading */
  52. #define    U_WRITE    2        /* file open for writing */
  53. #define    U_RDWR    3        /* open for read and write */
  54. #define    U_CON    4        /* device is console */
  55. #define    U_RDR    5        /* device is reader */
  56. #define    U_PUN    6        /* device is punch */
  57. #define    U_LST    7        /* list device */
  58.  
  59. /*     special character values */
  60.  
  61. #define    CPMETX    032        /* ctrl-Z, CP/M end of file for text */
  62. #define    CPMRBT    003        /* ctrl-C, reboot CPM */
  63.  
  64.  
  65. #define    MPM    0x100        /* bit to test for MP/M */
  66. #define    CCPM    0x400        /* bit to test for CCP/M */
  67.  
  68. #define    ISMPM()    (bdoshl(CPMVERS)&MPM)    /* macro to test for MPM */
  69.  
  70. /*     what to do after you hit return */
  71.  
  72. #define    EXIT    (*(int (*)())0)    /* where to go to reboot CP/M */
  73.  
  74. /*     bdos calls etc. */
  75.  
  76. #define    CPMRCON    1        /* read console */
  77. #define    CPMWCON    2        /* write console */
  78. #define    CPMRRDR    3        /* read reader */
  79. #define    CPMWPUN    4        /* write punch */
  80. #define    CPMWLST    5        /* write list */
  81. #define    CPMDCIO    6        /* direct console I/O */
  82. #define    CPMGIOB    7        /* get I/O byte */
  83. #define    CPMSIOB    8        /* set I/O byte */
  84. #define    CPMRCOB    10        /* read console buffered */
  85. #define    CPMICON    11        /* interrogate console ready */
  86. #define    CPMVERS    12        /* return version number */
  87.  
  88. /*    BDOS calls */
  89.  
  90. #define    CPMRDS    13        /* reset disk system */
  91. #define    CPMLGIN    14        /* log in and select disk */
  92. #define    CPMOPN    15        /* open file */
  93. #define    CPMCLS    16        /* close file */
  94. #define    CPMFFST    17        /* find first */
  95. #define    CPMFNXT    18        /* find next */
  96. #define    CPMDEL    19        /* delete file */
  97. #define    CPMREAD    20        /* read next record */
  98. #define    CPMWRIT    21        /* write next record */
  99. #define    CPMMAKE    22        /* create file */
  100. #define    CPMREN    23        /* rename file */
  101. #define    CPMILOG    24        /* get bit map of logged in disks */
  102. #define    CPMIDRV    25        /* interrogate drive number */
  103. #define    CPMSDMA    26        /* set DMA address for i/o */
  104. #define    CPMSUID    32        /* set/get user id */
  105. #define    CPMRRAN    33        /* read random record */
  106. #define    CPMWRAN    34        /* write random record */
  107. #define    CPMCFS    35        /* compute file size */
  108. #define    CPMDSEG    51        /* set DMA segment */
  109.