home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Guide / c-cplusplus-interactive-guide.iso / c_ref / csource4 / 225_01 / pec.h < prev    next >
Text File  |  1987-06-10  |  7KB  |  116 lines

  1. /*-----------------------------------------------------------------*/
  2. /*  FILE  ==>  pec.h                                               */
  3. /*  Contains special purpose function numbers for use with the     */
  4. /*  "BDOS(c, de)" function of BDS C.                               */
  5. /*  Also some general purpose character translations.              */
  6. /*                                                                 */
  7. /*  Written:       15/11/86
  8.     -------                                                        */
  9. /*  Copyright 1986 - Cogar Computer Services Pty. Ltd.             */
  10. /*-----------------------------------------------------------------*/
  11. /*            BDOS FUNCTIONS                                       */
  12. /*-----------------------------------------------------------------*/
  13.  
  14. #define READ            1    /* Read console byte */
  15. #define WRITE           2    /* Write console byte */
  16. #define READER          3       /* Read logical "reader" byte      */
  17. #define PUNCH           4       /* Write logical "punch" byte      */
  18. #define LIST            5    /* Write list device (LPT) byte */
  19. #define DCIO            6    /* Direct console in - out */
  20. #define IOBYTE          7    /* Get IOBYTE setting */
  21. #define SET_IOBYTE      8    /* Set IOBYTE */
  22. #define PRT_STRING      9    /* Display "$" terminated string */
  23. #define READ_STRING    10    /* Read a string from the console */
  24. #define CON_STATUS     11    /* Read console status */
  25. #define CPM_NUM        12    /* Get CP/M Version No. */
  26. #define RESET          13    /* Reset the disk system */
  27. #define LOGICAL        14    /* Select logical disk */
  28. #define OPEN_FILE      15    /* Open file for read/write */
  29. #define CLOSE_FILE     16    /* Close the file */
  30. #define SEARCH_FIRST   17    /* Search for first name match */
  31. #define SEARCH_NEXT    18    /* Search for next name match */
  32. #define ERASE          19    /* Erase the named file */
  33. #define READ_SECT      20    /* Read a sequential sector */
  34. #define WRITE_SECT     21    /* Write a sequential sector */
  35. #define CREATE         22    /* Create (make) the named file */
  36. #define RENAME         23    /* Rename a file */
  37. #define ACTIVE         24       /* Get Log-In vector               */
  38. #define DEFAULT        25    /* Get current default disk */
  39. #define MAKEDMA        26    /* Set the DMA address */
  40. #define ALLOCATION     27       /* Get (block) Allocation vector   */
  41. #define READ_ONLY      28    /* Sets logical disk to R/O status */
  42. #define R_O            29       /* Gets R/O disks bit map          */
  43. #define SET_ATTRIBUTES 30    /* Set file attributes */
  44. #define DPB            31    /* Get the disk paramater block address */
  45. #define USER_ID        32    /* Set/get User No. */
  46. /*-----------------------------------------------------------------*/
  47. /*            CHARACTER TRANSLATIONS                               */
  48. /*-----------------------------------------------------------------*/
  49.  
  50. #define CR      13    /* ASCII carriage return                   */
  51. #define LF      10    /* ASCII line feed                         */
  52. #define SPACE   32    /* ASCII single space character            */
  53. #define HT       9    /* ASCII horizontal tab character          */
  54. #define NULL     0
  55. #define FF      12    /* ASCII form-feed character               */
  56. /*-----------------------------------------------------------------*/
  57. /*            SPECIAL PURPOSE TRANSLATIONS                         */
  58. /*-----------------------------------------------------------------*/
  59.  
  60. #define short   int    /* Creates a "short" definition            */
  61. #define TRUE      1
  62. #define FALSE     0
  63. /*-----------------------------------------------------------------*/
  64.  
  65. /*            TERMINAL FUNCTIONS                                   */
  66. /*            ------------------                                   */
  67. /*  For use with Hazeltine Esprit terminal                         */
  68. /*  Use with LEAD-IN as set by switches.   Change this setting if  */
  69. /*  different in your case.                                        */
  70. /*-----------------------------------------------------------------*/
  71. #define LEAD_IN 0x07e    /* Tilde selected by switches              */
  72. #define BRIGHT  0x01f    /* Needs to have foreground switch set     */
  73. #define DIM     0x019   /* Low intensity screen display            */
  74. #define CLEAR   0x01c
  75. /*******************************************************************/
  76. /*            DISK PARAMETER BLOCK                                 */
  77. /*******************************************************************/
  78. struct dpb {
  79.     int SPT;    /* Sectors per track                       */
  80.     char BSH;    /* Block shift factor                      */
  81.     char BLM;    /* Block mask                              */
  82.     char EXM;    /* Extent mask                             */
  83.     int DSM;    /* Drive capacity                          */
  84.     int DRM;    /* Directory size                          */
  85.     char AL0;    /* Allocation vector                       */
  86.     char AL1;    /* do                                      */
  87.     int CKS;    /* Check area size                         */
  88.     int OFF;    /* Count of reserved tracks                */
  89. };
  90. /*******************************************************************/
  91. /*            FILE CONTROL BLOCK                                   */
  92. /*******************************************************************/
  93.  
  94. struct fcb {
  95.  
  96.     char  DRIVE;    /* The drive code OR the user No.          */
  97.     char  NAME[8];    /* The file name                           */
  98.     char  TYPE[3];    /* The file extension                      */
  99.     char  EXTENT1;    /* The extent No. for range 0 - 31         */
  100.     char  FLAGS;    /* The BDOS flags                          */
  101.     char  EXTENT2;    /* The extent No. for range > 31           */
  102.     char  RECORDS;    /* Records in current extent               */
  103.     char  BLOCKS[16];  /* The list of allocation blocks        */
  104. /*-----------------------------------------------------------------*/
  105. /*            EXTENDED FCB                                         */
  106. /*-----------------------------------------------------------------*/
  107.  
  108.     char  CUR_REC;    /* The current record of the extent.   This
  109.                        is numbered from 0 to (RECORDS - 1)     */
  110.     unsigned  RAN_ADR; /* Direct address from 0x000000 to
  111.                        0x00ffff (0 to 65535)                   */
  112.     char  RAN_OFLOW;   /* Overflow byte for Random Record      */
  113.     } ;
  114. /*******************************************************************/
  115. RAMETER BLOCK                                 */
  116. /**********************************