mirror of
https://github.com/open-simh/simtools.git
synced 2026-02-02 14:52:29 +00:00
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.
88 lines
3.0 KiB
C
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;
|