mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 16:34:07 +00:00
Upload
Digital Research
This commit is contained in:
254
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v102a/clib/cpm.h
Normal file
254
CPM OPERATING SYSTEMS/CPM 68K/1.0X SOURCES/v102a/clib/cpm.h
Normal file
@@ -0,0 +1,254 @@
|
||||
/***************************************************************************
|
||||
*
|
||||
* O S I F . H
|
||||
* -----------
|
||||
* Copyright 1982,1983 by Digital Research Inc. All rights reserved.
|
||||
*
|
||||
* Edits:
|
||||
* 17-Jan-84 whf Moved to 68K
|
||||
* 5-Jan-84 whf Moved MAXCCBS to channel.c
|
||||
* 29-Dec-83 whf Add F_TRUNC for tclose()
|
||||
* 12-Dec-83 whf Change from "CPM.H" to "OSIF.H"
|
||||
* 9-Dec-83 whf Handle PCDOS differences
|
||||
* 3-Nov-83 whf Add multi-sector i/o
|
||||
* 19-Oct-83 whf Add QUEUE handling info
|
||||
* 6-Oct-83 whf Redefine reserved area in fcb for parsefn() return
|
||||
* 25-June-83 sw Add user number to file "fd" structure.
|
||||
*
|
||||
* This file contains O.S. specific definitions for the
|
||||
* DRI CLEAR/C Run Time Library.
|
||||
* This file is intended only for inclusion with those functions
|
||||
* dealing directly with the O.S. interface, as well as any function
|
||||
* which has hardware dependent code (byte storage order, for
|
||||
* instance).
|
||||
*
|
||||
****************************************************************************/
|
||||
/*
|
||||
* "machine.h": to determine what kind of machine you want to run on.
|
||||
*/
|
||||
|
||||
#define MC68000 1 /* Motorola 68000 */
|
||||
#define CPM68K 1 /* CP/M 68000 ver 2.2 */
|
||||
#define CPM 1 /* CP/M version 2.2 */
|
||||
#define ALCYON 1 /* Alcyon C Compiler */
|
||||
|
||||
|
||||
/*#ifdef UNdefined*/ /* Unused DEFINEs */
|
||||
|
||||
/*** Processor ***/
|
||||
#define I8086 0 /* Intel 8086/8088 */
|
||||
#define VAX 0 /* DEC VAX */
|
||||
#define PDP11 0 /* DEC PDP-11 */
|
||||
#define Z8000 0 /* Zilog Z8000 */
|
||||
|
||||
/*** Operating System ***/
|
||||
#define PCDOS 0 /* IBM PC DOS */
|
||||
#define CCPM 0 /* Concurrent (multi-tasking) */
|
||||
#define CPM3 0 /* CP/M version 3.x (Concurrent & Plus) */
|
||||
#define CPM4 0 /* CP/M version 4.x (Portable Concurrent) */
|
||||
#define UNIX 0 /* UNIX */
|
||||
#define VMS 0 /* DEC VMS */
|
||||
|
||||
/*** Compiler ***/
|
||||
#define DRC 0 /* Digital Research C Compiler */
|
||||
|
||||
/*#endif */ /**********************/
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* CP/M FCB definition
|
||||
****************************************************************************/
|
||||
#if CPM /****************************/
|
||||
struct fcbtab /****************************/
|
||||
{ /* */
|
||||
BYTE drive; /* Disk drive field [0] */
|
||||
BYTE fname[8]; /* File name [1-8] */
|
||||
BYTE ftype[3]; /* File type [9-11] */
|
||||
BYTE extent; /* Current extent number[12]*/
|
||||
BYTE s1,s2; /* "system reserved" [13-14]*/
|
||||
BYTE reccnt; /* Record counter [15] */
|
||||
BYTE fpasswd[8]; /* Parsefn passwd area[16-23]*/
|
||||
BYTE fuser; /* Parsefn user# area [24] */
|
||||
BYTE resvd[7]; /* More "system reserved" */
|
||||
LONG record; /* Note -- we overlap [32-36]*/
|
||||
/* current record field to */
|
||||
/* make this useful. */
|
||||
}; /****************************/
|
||||
#endif /****************************/
|
||||
|
||||
/****************************************************************************
|
||||
* PC-DOS FCB definition
|
||||
****************************************************************************/
|
||||
#if PCDOS /****************************/
|
||||
struct fcbtab { /****************************/
|
||||
BYTE drive; /* Disk drive field [0] */
|
||||
BYTE fname[8]; /* File name [1-8] */
|
||||
BYTE ftype[3]; /* File type [9-11] */
|
||||
WORD fcb_curblk; /* Curr 128 byte blk [12-13]*/
|
||||
WORD fcb_lrecsiz; /* Logical record size[14-15]*/
|
||||
LONG fcb_filsiz; /* Num bytes in file [16-19]*/
|
||||
WORD fcb_date; /* Last updated [20-21] */
|
||||
BYTE fcb_resvd[10]; /* System reserved [22-31] */
|
||||
BYTE fcb_currec; /* Rel Rec# within curblk[32]*/
|
||||
LONG record; /* Rel Rec# from bgn file */
|
||||
/* [33-36] depends on lrecsiz*/
|
||||
}; /****************************/
|
||||
#endif /****************************/
|
||||
/* */
|
||||
#define SECSIZ 128 /* size of CP/M sector */
|
||||
/* to obtain nsecs on err */
|
||||
/****************************/
|
||||
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* Channel Control Block (CCB) */
|
||||
/* */
|
||||
/* One CCB is allocated (statically) for each of the 16 possible open */
|
||||
/* files under C (including STDIN, STDOUT, STDERR). Permanent data */
|
||||
/* regarding the channel is kept here. */
|
||||
/* */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
|
||||
struct ccb /************************************/
|
||||
{ /* */
|
||||
WORD flags; /*sw Flags byte */
|
||||
BYTE user; /*sw User # */
|
||||
BYTE chan; /* Channel number being used */
|
||||
LONG offset; /* File offset word (bytes) */
|
||||
LONG sector; /* Sector currently in buffer */
|
||||
LONG hiwater; /* High water mark */
|
||||
struct fcbtab fcb; /* File FCB (may have TTY info)*/
|
||||
BYTE buffer[SECSIZ]; /* Read/write buffer */
|
||||
}; /************************************/
|
||||
|
||||
extern struct ccb _fds[]; /* */ /* Declare storage */
|
||||
#define FD struct ccb /* FD Type definition */
|
||||
#define NULLFD ((FD *)0) /* NULLPTRs for FD */
|
||||
/************************************/
|
||||
/* Flags word bit definitions */
|
||||
/************************************/
|
||||
#define OPENED 0x01 /* Channel is OPEN */
|
||||
#define ISTTY 0x02 /* Channel open to TTT */
|
||||
#define ISLPT 0x04 /* Channel open to LPT */
|
||||
#define ISREAD 0x08 /* Channel open readonly */
|
||||
#define ISASCII 0x10 /* ASCII file attached */
|
||||
#define ATEOF 0x20 /* End of file encountered */
|
||||
#define DIRTY 0x40 /* Buffer needs writing */
|
||||
#define ISSPTTY 0x80 /* Special tty info */
|
||||
#define ISAUX 0x100 /*sw Auxiliary device */
|
||||
#define ISQUE 0x0200 /*whf Queue device */
|
||||
/************************************/
|
||||
#define READ 0 /* Read mode parameter for open */
|
||||
#define WRITE 1 /* Write mode */
|
||||
|
||||
/* CCB manipulation macros *************************************/
|
||||
#define _getccb(i) (&_fds[i]) /* Get CCB addr */
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* O S I F F u n c t i o n D e f i n i t i o n s */
|
||||
/* ------------------------------------------------- */
|
||||
/* */
|
||||
/* Following are OSIF function definitions used by the C runtime */
|
||||
/* library. */
|
||||
/* */
|
||||
/****************************************************************************/
|
||||
|
||||
/****************************/
|
||||
#if CPM68K /* */
|
||||
#define __OSIF(fn,arg) __BDOS((fn),(LONG)(arg)) /* CPM68K does it this way */
|
||||
#else /* */
|
||||
#define __OSIF(fn,arg) __BDOS((fn),(arg)) /* DRC does it this way */
|
||||
#endif /* */
|
||||
#if CPM /****************************/
|
||||
#define EXIT 0 /* Exit to BDOS */
|
||||
#define CONIN 1 /* direct echoing con input */
|
||||
#define CONOUT 2 /* Direct console output */
|
||||
#define LSTOUT 5 /* Direct list device output*/
|
||||
#define CONIO 6 /* Direct console I/O */
|
||||
#define C_WRITESTR 9 /* Console string output */
|
||||
#define CONBUF 10 /* Read console buffer */
|
||||
#define S_BDOSVER 12 /* Get System BDOS Ver Num */
|
||||
#define OPEN 15 /* OPEN a disk file */
|
||||
#define CLOSE 16 /* Close a disk file */
|
||||
#define SEARCHF 17 /* Search for first */
|
||||
#define SEARCHN 18 /* Search for next */
|
||||
#define DELETE 19 /* Delete a disk file */
|
||||
#define CREATE 22 /* Create a disk file */
|
||||
#define F_RENAME 23 /* Rename a disk file */
|
||||
#define SETDMA 26 /* Set DMA address */
|
||||
#define USER 32 /*sw Get / set user number */
|
||||
#define B_READ 33 /* Read Random record */
|
||||
#define B_WRITE 34 /* Write Random record */
|
||||
#define FILSIZ 35 /* Compute File Size */
|
||||
#define F_MULTISEC 44 /* Set Multi-Sector Count */
|
||||
#define P_CHAIN 47 /* Program Chain */
|
||||
#define SETVEC 61 /* Set exception vector */
|
||||
#define N_NETSTAT 68 /* Get Network Status */
|
||||
#define F_TRUNC 99 /* Truncate File function */
|
||||
#define S_OSVER 163 /* Get OS Version Number */
|
||||
#endif /****************************/
|
||||
#if PCDOS /****************************/
|
||||
#define EXIT 0 /* Exit to BDOS */
|
||||
#define CONIN 1 /* direct echoing con input */
|
||||
#define CONOUT 2 /* Direct console output */
|
||||
#define LSTOUT 5 /* Direct list device output*/
|
||||
#define CONIO 6 /* Direct console I/O */
|
||||
#define C_WRITESTR 9 /* Console string output */
|
||||
#define CONBUF 10 /* Read console buffer */
|
||||
#define OPEN 15 /* OPEN a disk file */
|
||||
#define CLOSE 16 /* Close a disk file */
|
||||
#define SEARCHF 17 /* Search for first */
|
||||
#define SEARCHN 18 /* Search for next */
|
||||
#define DELETE 19 /* Delete a disk file */
|
||||
#define CREATE 22 /* Create a disk file */
|
||||
#define F_RENAME 23 /* Rename a disk file */
|
||||
#define SETDMA 26 /* Set DMA address */
|
||||
#define B_READ 33 /* Read Random record */
|
||||
#define B_WRITE 34 /* Write Random record */
|
||||
#define FILSIZ 35 /* Compute File Size */
|
||||
#endif /****************************/
|
||||
/****************************************************************************/
|
||||
/* Other CP/M definitions */
|
||||
/****************************************************************************/
|
||||
#define TERM "CON:" /* Console file name */
|
||||
#define LIST "LST:" /* List device file name */
|
||||
#define EOFCHAR 0x1a /* End of file character-^Z */
|
||||
/****************************/
|
||||
|
||||
/****************************************************************************/
|
||||
/* Hardware dependencies */
|
||||
/****************************************************************************/
|
||||
/****************************/
|
||||
#if MC68000 | Z8000 /* 68K or Z8000 */
|
||||
#define HILO 1 /* used when bytes stored */
|
||||
#else /* */
|
||||
#define HILO 0 /* */
|
||||
#endif /* */
|
||||
/* */
|
||||
#if HILO /* Hi/Lo storage used in */
|
||||
struct long_struct{ /* 68K */
|
||||
BYTE lbhihi; /* Use this for accessing */
|
||||
BYTE lbhilo; /* ordered bytes in 32 bit*/
|
||||
BYTE lblohi; /* LONG qtys. */
|
||||
BYTE lblolo; /* */
|
||||
}; /* */
|
||||
struct word_struct{ /* Use this for accessing */
|
||||
WORD lwhi; /* ordered words in 32 bit*/
|
||||
WORD lwlo; /* LONG qtys. */
|
||||
}; /* */
|
||||
#else /****************************/
|
||||
struct long_struct{ /* Lo/Hi storage use on */
|
||||
BYTE lblolo; /* PDP-11, VAX, 8086,... */
|
||||
BYTE lblohi; /* */
|
||||
BYTE lbhilo; /* */
|
||||
BYTE lbhihi; /* */
|
||||
}; /* */
|
||||
struct word_struct{ /* */
|
||||
WORD lwlo; /* */
|
||||
WORD lwhi; /* */
|
||||
}; /* */
|
||||
#endif /****************************/
|
||||
/*************************** end of osif.h **********************************/
|
Reference in New Issue
Block a user