TPD(4-SysV) RISC/os Reference Manual TPD(4-SysV)
NAME
tpd - format of MIPS boot tape directories
SYNTAX
#include <saio/tpd.h>
DESCRIPTION
Boot tapes that can be read by the MIPS prom monitor contain
a directory that allows the commands and records on the tape
to load by name rather than by physical record number. Boot
tape are produced by the command mkboottape(1M).
A boot tape consists of a number of physical tape files,
where each file may optionally contain a tpd directory
describing the contents of that physical file. The prom
monitor provides a syntax for referencing a named record on
a boot tape (see the MIPS PROM MONITOR documentation).
All binary values in the tpd directory are 2's complement,
big-endian regardless of target machine. The tpd checksum
is calculated by first zeroing the td_cksum field, then 2's
complement summing all 32 bit words in the struct tp_dir and
then assigning the 2's complement of the cksum to td_cksum.
Thus the checksum is verified by resumming the header and
verifing the sum to be zero. Each tape record is TP_BLKSIZE
bytes long, trailing bytes in a tape block (after the end of
the directory or an end of file) are unspecified (although
they should be zero). All files start on a tape block boun-
dry, the start of a particular file may be found by skipping
backward to the beginning of the file containing the tape
directory and then skipping forward tp_lbn records.
The format of the tpd directory is:
#define TP_NAMESIZE 16
#define TP_NENTRIES 20
#define TP_BLKSIZE 512
#define TP_MAGIC 0xaced1234
#ifdef LANGUAGE_C
/*
* tape directory entry
*/
struct tp_entry {
char te_name[TP_NAMESIZE]; /* file name */
unsigned te_lbn; /* tp record num */
/* 0 is tp_dir */
unsigned te_nbytes; /* file byte count */
};
/*
* boot tape directory block
Printed 1/15/91 Page 1
TPD(4-SysV) RISC/os Reference Manual TPD(4-SysV)
* WARNING: must not be larger than 512 bytes!
*/
struct tp_dir {
unsigned td_magic;
unsigned td_cksum; /* csum of tp_dir */
unsigned td_spare1;
unsigned td_spare2;
unsigned td_spare3;
unsigned td_spare4;
unsigned td_spare5;
unsigned td_spare6;
struct tp_entry td_entry[TP_NENTRIES]; /* directory */
};
union tp_header {
char th_block[TP_BLKSIZE];
struct tp_dir th_td;
};
#endif LANGUAGE_C
te_name is a null-terminated string. The td_magic field
contains TP_MAGIC to help verify the presence of a header.
SEE ALSO
mkboottape(1M)
MIPS PROM MONITOR manual
Page 2 Printed 1/15/91