/* comnd.h Common (user and library) definitions for the COMND services. Copyright (C) 1984, 1985 Mark E. Mallett Permission is hereby granted to distribute this file indiscriminately. Edit history When Who What ------ --- -------------------------------- 84xxxx MEM Create file. */ #include "mem.h" /* Include my standard names */ /* Various constants, etc. */ /* CFB command function codes */ #define _CMINI 0x0000 /* Initialize the parse */ #define _CMKEY 0x0001 /* Keyword parse */ #define _CMNUM 0x0002 /* Number */ #define _CMNOI 0x0003 /* Noise words (guide string) */ #define _CMCFM 0x0004 /* Confirm */ #define _CMGSK 0x0005 /* General Storage Keyword */ #define _CMSWI 0x0006 /* Switch */ #define _CMTXT 0x0007 /* Text to end of line */ #define _CMTOK 0x0008 /* Token */ #define _CMUQS 0x0009 /* Unquoted string */ #define _CMDAT 0x000A /* Date and/or time */ #define _CMMAX 0x000A /* Maximum function code */ /* COMND result codes */ #define _CROK 0x0000 /* OK completion */ #define _CRNOP 0x0001 /* No-parse (no matching input) */ #define _CRRPT 0x0002 /* Reparse required */ #define _CRIFC 0x0003 /* Invalid function code */ #define _CRBOF 0x0004 /* Buffer overflow */ #define _CRBAS 0x0005 /* Invalid radix */ #define _CRAGN 0x0006 /* Try-again (for support mode only) */ /* Flags in the CSB_RFL element of the command state block */ #define _CFNOP 0x0001 /* No Parse */ #define _CFESC 0x0002 /* Terminated by escape */ #define _CFEOC 0x0004 /* Terminated by CR */ #define _CFRPT 0x0008 /* Reparse required */ #define _CFSWT 0x0010 /* Switch ended with colon */ #define _CFPFE 0x0020 /* Previous field term. with esc */ /* Flags in the CSB_PFL element of the command state block */ #define _CFRAI 0x0001 /* Raise lowercase to uppercase */ #define _CFNEC 0x0002 /* No echo if this is set */ /* Flags in the CFB_FLG element of the command function block */ #define _CFHPP 0x0001 /* User-supplied help string */ #define _CFDPP 0x0002 /* User-supplied default */ #define _CFSDH 0x0004 /* Suppress default help */ #define _CFCC 0x0008 /* CC table supplied */ #define _CFDTD 0x0040 /* Parse date (for _CMDAT) */ #define _CFDTT 0x0080 /* Parse time (for _CMDAT) */ /* *//* Structures */ /* CSB - The Command State Block */ typedef struct CSBs { BYTE CSB_PFL; /* Passed flags (from caller) */ BYTE CSB_RFL; /* Returned flags (to caller) */ struct setjmp *CSB_RSB; /* Reparse SETJMP buffer */ int (*CSB_INP)(); /* Addr of input-char routine */ int (*CSB_OUT)(); /* Addr of output-char routine */ BYTE *CSB_PMT; /* Prompt */ BYTE *CSB_BUF; /* Buffer address */ int CSB_BSZ; /* Buffer size */ BYTE *CSB_ABF; /* Atom buffer */ int CSB_ASZ; /* Atom buffer size */ int CSB_PRS; /* Parse index */ int CSB_FLN; /* Filled length (# chars filled) */ int CSB_RCD; /* Result code. */ union { /* Returned value */ int _INT; /* --for int value-- */ char *_ADR; /* --for address value-- */ } CSB_RVL; /* (returned value) */ struct CFBs *CSB_CFB; /* Addr of matching CFB, if any */ } CSB; /* CFB - the Command Function Block */ typedef struct CFBs { BYTE CFB_FNC; /* Function code */ BYTE CFB_FLG; /* Flags */ struct CFB *CFB_CFB; /* Addr of next CFB for parse resolution */ AITYPE CFB_DAT; /* Data, if any */ BYTE *CFB_HLP; /* Help string */ BYTE *CFB_DEF; /* Default string */ int *CFB_CC; /* Char characteristics table addr */ } CFB; /* CGK - Command General Keyword parsing block */ /* CGK is pointed to by CFB type _CMGSK. It specifies a routine to call to fetch each new candidate keyword. */ typedef struct CGKs { char *CGK_BAS; /* Base address to give to kfr */ char **(*CGK_KFR)(); /* Keyword fetch routine address */ } CGK;