/*
 *  BLOCK.H
 *
 *  common references for block device driver
 */


/*
 *  status bits for the return code
 */

#define UNKNOWN_COMMAND 3
#define ERROR       0x8000
#define DONE        0x0100
#define BUSY        0x0200
#define BLK_NOT_FOUND   8

#define MAX_BLK     256 /* 256 blocks       */
#define BLK_SIZE    256 /* 256 bytes/block  */

/*------------- global variables -------------*/

                /* the transfer address specified in
                   the request header */
extern int far  *transfer;
                /* the count specified in the request header */
extern int  count;
                /* counter */
extern int  k1; 
                /* counter */
extern int  k2;
                /* offset for normalization */
extern unsigned offset;
                /* source pointer */
extern int far  *source;
                /* destination pointer */
extern int far  *dest;
                /* command specified in request header */
extern char command;
                /* start block specified in request header */
extern int  start;

extern struct parm_block    /* parameter block          */
    {
    unsigned    bps;    /* bytes per block          */
    char        spau;   /* blocks per allocation unit       */
    unsigned    nrs;    /* number of reserved blocks        */
    char        nfat;   /* number of file allocation tables */
    unsigned    rent;   /* number of root directory entries */
    unsigned    tns;    /* total number of blocks       */
    char        mdb;    /* media descriptor byte        */
    unsigned    nsfat;  /* number of blocks per FAT     */
    }   bpb,
        bpb_tab [ ];

/*
 * pointer to the request header
 */

extern struct   request_header
    {
    char        rlength;
    char        unit;
    char        command;
    unsigned    status;
    char        reserved    [ 8 ];
    char        data;
    union
        {
        char far        *transfer;
        char            media_change_code;
        }   b14;
    union
        {
        struct parm_block far   *bpb;
        struct
            {
            unsigned        count;
            unsigned        start;
            } io;
        }   b18;
    } far   *rh;

extern int ram_disk [ ];

