Files
open-simh.simtools/extracters/rstsflx/silfmt.h
Paul Koning bf7c17ab4a Add RSTSFLX V2.6. This is a file system access utility for RSTS
file systems.  It supports reading and writing as well as a number
of other operations, such as octal dump, file system initialize,
and file system check ("clean").

This was originally maintained as a Subversion repository at
svn://akdesign.dyndns.org/flx/branches/V2.6.
as suggested by Timothe Litt on the SIMH mailing list.
2016-04-27 15:00:42 -04:00

88 lines
3.0 KiB
C

/*
* Edit history for SILFMT
*
* [RSTS V9_0]
* 000 WJS 22-Sep-83 Creation
*
* [RSTS V9_6]
* 001 KPH 13-Nov-87 Increase number of phases to 47
*
* 002 GPK 23-Aug-94 Convert from .mac to .h
* 003 GPK 29-Aug-94 Add definition for SAV format SIL index, add
* STB and overlay descriptor format.
*/
/* Set the number of SIL index blocks allowed for this release */
#define si_nbl 3 /* Maximum number of SIL index blocks */
/* Definitions of SIL Index entry */
typedef struct {
word16 se_nam[2]; /* Name of module */
word16 se_idn[2]; /* Ident of module */
word16 se_blk; /* Starting block of module */
word16 se_stb; /* Starting block of STB */
word16 se_stn; /* Number of entries in STB */
word16 se_lod; /* Load address of this module */
word16 se_siz; /* Size of module (in bytes) */
word16 se_xfr; /* Transfer address */
word16 se_szd; /* Size of module image of disk in blocks */
word16 se_ovb; /* Block offset to module's overlay descriptors */
word16 se_ovn; /* Number of overlay descriptors for module */
word16 se_off; /* Starting offset on disk for this module */
word16 filler; /* (reserved) */
word16 se_xxx; /* Reserved for SAV format SILs */
} silent;
#define se_len (sizeof (silent)) /* Size of SIL Index entry */
/* Derive the number of modules si_nbl SIL index blocks can contain */
#define si_oth (1000/se_len) /* Number of entries in a non-first block */
#define si_1st (si_oth-1) /* Number of entries in first block */
#define si_nmd ((si_nbl-1)*si_oth+si_1st) /* Maximum total no of index entries */
/* Layout for SIL index as it would be directly read from disk */
typedef struct {
word16 si_num; /* Number of modules in SIL */
silent si_ent[si_1st]; /* Space for first block's SIL Index entries */
word16 si_rsv[12]; /* Reserved */
word16 si_bls; /* Size of this SIL in blocks */
word16 si_chk; /* Checksum of SIL Index */
word16 si_sil; /* RAD50 "SIL" for identification */
silent si_mor[si_nmd - si_1st]; /* Space for non-first blocks' entries */
} silindex;
/* Layout for SIL index in the case of a .SAV file SIL */
typedef struct {
word16 si_num; /* Number of modules (must be 1) */
silent si_ent; /* One SIL index entry */
#define initpc si_ent.se_xxx /* Initial PC value lives here */
word16 initsp; /* Initial SP */
word16 rtjsw; /* Reserved for JSW in RT11 */
word16 rtusr; /* Reserved for USR ptr in RT11 */
word16 usertop; /* High address of program */
word16 si_rsv[(0774-052)/2]; /* Fill to end of block */
word16 si_chk; /* Checksum of SIL Index */
word16 si_sil; /* RAD50 "SIL" for identification */
} savsilindex;
/* Layout of SIL symbol table entry */
typedef struct {
word16 name[2]; /* Symbol name in RAD50 */
word16 ovnum; /* Overlay number */
word16 value; /* Symbol value */
} stbent;
/* Layout of overlay descriptor entry */
typedef struct {
word16 base; /* Base virtual address of overlay */
word16 size; /* Size in bytes of overlay */
word16 offset[2]; /* Offset (MSW, LSW) to overlay */
} ovrent;