/* * Copyright 1982 UniSoft Corporation * Use of this material is subject to your disclosure agreement with * AT&T, Western Electric and UniSoft Corporation. * * Header file for standalone package */ /* * Debug control for standalone package */ extern int debug; #define D_INOUT 1 /* in/out routine trace */ #define D_SLOWO 2 /* slow printf output */ #define D_GETC 4 /* trace getc fetches */ #define D_RW 8 /* trace read and write blocks */ /* * io block: includes an * inode, cells for the use of seek, etc, * and a buffer. * A file name is (,) . * A device name is (,) . */ struct iob { char i_flgs; struct inode i_ino; int i_Fsdev; /* file system type */ int i_unit; /* physical unit number */ dev_t i_device; /* block major device number */ daddr_t i_boff; /* physical block offset */ daddr_t i_cyloff; /* used only with i_bn==0 (see below) */ off_t i_offset; /* byte offset from i_boff */ daddr_t i_bn; /* starting physical block number */ char *i_ma; /* memory address */ int i_cc; /* character count */ char i_buf[SBUFSIZE]; }; #define i_bblk i_cyloff /* flag for boot header field for block 0 */ #define BOOTDISK 0xFFAA /* i_bblk value for boot disk */ #define F_BOOT 020 /* flag value used only within driver */ #define F_READ 01 #define F_WRITE 02 #define F_ALLOC 04 #define F_FILE 010 #define PBSIZE 512 /* physical block size */ #define PBSHIFT 9 /* * dev switch */ struct devsw { char *dv_name; int (*dv_strategy)(); int (*dv_open)(); int (*dv_close)(); }; extern struct devsw devsw[]; /* * table of special boot blocks */ struct block0 { char *dv_name; int (*bblk)(); }; extern struct block0 block0[]; /* * table for streaming tape information */ struct streamer { char *dv_name; int (*szdisk)(); /* get size of disk */ int (*weof)(); /* write end-of-file mark */ int (*reof)(); /* read end-of-file mark */ int (*rewind)(); /* rewind tape */ int (*erase)(); /* erase tape */ int (*advance)(); /* advance file marks */ int (*reten)(); /* retension tape */ int (*totape)(); /* copy to tape */ int (*frtape)(); /* copy from tape */ }; extern struct streamer streamer[]; #define NBUFS 4 #define NFILES 4 char b[NBUFS][SBUFSIZE]; daddr_t blknos[NBUFS]; struct iob iob[NFILES]; #define READ F_READ #define WRITE F_WRITE #define VIDADDR *(char *)(STDIO+0xE800) /* Video address latch */ #define TOTMEM *(long *)(0x2A8) /* Total amount of RAM */ #define MEMSTART *(long *)(0x2A4) /* Phys mem start */ #define SBOOT 101 /* starting block for boot program */ #define NBLKS 100 /* number of blocks in boot or ser'n program */