diff --git a/WEGA/contrib/cpm/cpm3/cpmfio.h b/WEGA/contrib/cpm/cpm3/cpmfio.h new file mode 100644 index 0000000..a45e189 --- /dev/null +++ b/WEGA/contrib/cpm/cpm3/cpmfio.h @@ -0,0 +1,30 @@ +/* cpmfio.h 1.5 83/05/13 */ + +#define C_NFILE 5 /* max number of concurrently open cp/m files */ + +typedef struct c_iobuf { + int c_cnt; /* bytes left in buffer */ + int c_blk; /* block number within the current extent */ + /* (starting at 0) */ + int c_seccnt; /* number of physical sectors left in */ + /* the current extent */ + int c_ext; /* current extent's directory index */ + int c_extno; /* extgnt number within current file */ + char *c_buf; /* next character position */ + char *c_base; /* location of buffer */ + short c_flag; /* access mode (READ or WRITE) */ + struct directory *c_dirp; /* pointer to the current */ + /* extent's directory entry */ +} C_FILE; +extern C_FILE c_iob[C_NFILE]; + +#define c_getc(p) (--(p)->c_cnt>=0 ? *(p)->c_buf++&0377 : c_fillbuf(p)) +#define c_putc(x,p) (--(p)->c_cnt>=0 ? ((int)(*(p)->c_buf++=(unsigned)(x))) : c_flsbuf((unsigned)(x), p)) + +C_FILE *c_open(), *c_creat(); + +#define READ 0x01 +#define WRITE 0x02 +#define RW 0x03 +#define MODFLG 0x08 +#define BINARY 0x10 diff --git a/WEGA/contrib/cpm/cpm3/ffc.c b/WEGA/contrib/cpm/cpm3/ffc.c new file mode 100644 index 0000000..55ab376 --- /dev/null +++ b/WEGA/contrib/cpm/cpm3/ffc.c @@ -0,0 +1,41 @@ +/* ffc.c 1.4 83/05/13 */ + +/* + * If used on a vax (i.e., VAX is defined), this routine simply executes + * the VAX find-first-set instruction. + * Usage: + * int startbit, field_lth, field, result; + * result = ffc(startbit,field_lth,field); + * + * startbit is the bit number of the field to start the search, + * the rightmost bit is number one. + * field_lth is the length of the field in bits. + * field is thg actual field + * result is the resulting bit number, + * e.g. the number of the first clear bit in the field. + * hs 10/29/82 + */ + +ffc(start, len, field) + +#ifndef VAX + register int field; + int start, len; +{ + register int i; + + for (i=start; i>= 1; + } + return (i); +} +#else + + int start, len, field; +{ + asm("ffc 4(ap),8(ap),12(ap),r0"); + return; +} +#endif