Files
Digital-Research-Source-Code/CPM OPERATING SYSTEMS/CPM 86/CONCURRENT/CCPM-86 3.1 SOURCE/D6/UTILDEF.H
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

156 lines
6.1 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*----------------------------------------------------------------------*\
| NAME : utildef.h |
| FUNCTION : This is a header file used by the utilities |
| for the Portable Concurrent CP/M 4.0. |
| |
| CREATED : 26-July-83 LAST MODIFIED: 16-September-83 |
| AUTHOR : Kim S. Ouye |
| |
| COPYRIGHT (c) Digital Research 1983 |
| all rights reserved |
\*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*\
| Conditional compile flags |
\*----------------------------------------------------------------------*/
#define CCPM2 1 /* 1 CCP/M 2.0 0 not CCPM 2.0 */
#define CCPM4 0 /* 1 PCCP/M 4.0 0 not CCPM 4.0 */
#define CPM68K 0 /* 1 CP/M 68K 1.1 0 not CP/M 68K 1.1 */
#define CPU_8086 1 /* 1 8086 CPU 0 not 8086 CPU */
#define CPU_68K 0 /* 1 68K CPU 0 not 68K CPU */
#define CPU_286 0 /* 1 80286 CPU 0 not 80286 CPU */
#define CPU_Z8000 0 /* 1 Z8000 CPU 0 not Z8000 CPU */
/*----------------------------------------------------------------------*\
| Max. & min. length, sizes, values |
\*----------------------------------------------------------------------*/
#define FCB_LEN 36 /* FCB buffer length */
#define DMA_LEN 128 /* DMA buffer length */
#define PW_LEN 8 /* file password length */
#define SEC_LEN 128 /* sector length */
#define MAX_MSEC 128 /* max. mutl-sector count */
#define FNAME_LEN 12 /* FCB name field length */
#define FILESPEC_LEN 15 /* max. filespec length */
#define MAX_FILESPEC 16 /* max. list of filespec */
#define PAGE_LEN 23 /* default page length */
#define MAX_USER_NUM 15 /* max. user number */
#define NUM_DIR_COL 4 /* # column DIR display */
/*----------------------------------------------------------------------*\
| Masks |
\*----------------------------------------------------------------------*/
#define BDOS_MASK 0x00ff /* BDOS version mask */
#define OS_MASK 0xff00 /* CP/M system version mask */
#define RO_MASK 0x0080 /* set F6' (read only) attrib. */
/*----------------------------------------------------------------------*\
| CP/M specific misc. defines |
\*----------------------------------------------------------------------*/
#if (CCPM2 & CPU_8086)
#define BDOS_VER 0x0031 /* BDOS Ver. 3.1 */
#define OS_TYPE 0x1400 /* CCP/M on 8086 cpu */
#endif
#if (CCPM4 & CPU_68K)
#define BDOS_VER 0x0040 /* BDOS Ver. 4.0 */
#define OS_TYPE 0x2400 /* CCP/M on 68K cpu */
#endif
#if (CPM68K)
#define BDOS_VER 0x0022 /* BDOS Ver. 2.2 */
#define OS_TYPE 0x2000 /* CCP/M Ver. 2.0 */
#endif
#define WILDCARD "*.*" /* CP/M full filespec wildcard */
#define RET_DISP 0x00fe /* f_errmode, return & display */
#define NO_RET 0x0000 /* f_errmode, no return */
#define FPAR_ERR 0xffff /* f_parse error return code */
#define CR_FIELD 32 /* CR FCB field index */
#define EX_FIELD 12 /* EX FCB field index */
#define F6_FIELD 6 /* F6' attribute (READ ONLY) */
/*----------------------------------------------------------------------*\
| Misc. defines |
\*----------------------------------------------------------------------*/
#define CR '\015' /* carriage return */
#define LF '\012' /* line feed */
#define FF '\014' /* form feed */
#define SP '\040' /* space */
#define HT '\011' /* horizontal tab */
#define ERROR -1 /* error found return code */
#define MATCH 0 /* sting compare match code */
#define YES 1 /* condition met */
#define NO 0 /* condition not met */
#define OK 1 /* boolean truth */
#define NOT_OK 0 /* boolen false */
#define INVALID_FILE -2 /* invalid filespec */
/*----------------------------------------------------------------------*\
| Macro definitions |
\*----------------------------------------------------------------------*/
#define islower(c) ('a' <= (c) && (c) <= 'z')
#define isupper(c) ('A' <= (c) && (c) <= 'Z')
#define isdigit(c) ('0' <= (c) && (c) <= '9')
#define isalpha(c) (islower(c) | isupper(c))
#define tolower(c) (isupper(c) ? ((c)+0x20):(c))
#define toupper(c) (islower(c) ? ((c)-0x20):(c))
/*----------------------------------------------------------------------*\
| Valid Command Line Options |
\*----------------------------------------------------------------------*/
#define OP_GROUP "GROUP" /* User group/number option */
#define OP_PAGE "PAGE" /* Page mode/length option */
#define OP_NOPAGE "NOPAGE" /* No page mode option */
#define OP_SYSTEM "SYSTEM" /* System files option */
#define OP_DIRECTORY "DIRECTORY" /* Directory files option */
#define OP_XFCB "XFCB" /* XFCB only option */
#define OP_CONFIRM "CONFIRM" /* Confirm option */
#define OP_GET "GET" /* Get information option */
#define OP_FILE "FILE" /* FILE option (not) XFCB */
#define OP_NOCONFIRM "NOCONFIRM" /* No confirm option */
#define OP_TAB "TAB" /* Expand tabs option */
/*----------------------------------------------------------------------*\
| Global structure definitions |
\*----------------------------------------------------------------------*/
struct _cbuf /* BDOS c_readstr buffer */
{
BYTE max_char; /* max. char. to read */
BYTE nchar; /* actual # char. read */
BYTE buffer[DMA_LEN+2]; /* line buffer */
};
struct _pfcb /* BDOS F_PARSE file cont. blk */
{
BYTE *fname; /* ASCII file spec. */
BYTE *fcbaddr; /* FCB address */
};
struct _fcblst /* expfcb link list entry of FCB's */
{
BYTE fcb_buff[FCB_LEN]; /* FCB buffer */
struct _fcblst *next_fcb; /* ptr to next entry */
};
struct _oplist
{
BYTE opname[14]; /* command option name */
WORD max_num; /* max. number spec. */
};
/*----------------------------------------------------------------------*\
| External Variables |
\*----------------------------------------------------------------------*/
EXTERN WORD _EXTERR; /* AX save area; kludge to get all of AX */
EXTERN WORD _SYSERR; /* CX save area; kludge to get CX error codes */