1 
 2 /* Begin include file ...... mstr.incl.pl1 */
 3 /* Modified 2/11/74 by N. I. Morris */
 4 /* Modified 12/30/80 by J. A. Bush for bootable tape labels */
 5 /* Modified 12/14/82 by J. A. Bush to add version number to the record header */
 6 
 7 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */
 8 dcl       mstrp                  ptr;                       /* pointer to MST record */
 9 
10 dcl       1 mstr                 based (mstrp) aligned,     /* Multics standard tape mstr */
11             2 head               like mstr_header,          /* tape record header */
12             2 data               bit (36864 refer (mstr.head.data_bit_len)),
13                                                             /* record body */
14             2 trail              like mstr_trailer;         /* record trailer */
15 
16 dcl       1 mst_label            based (mstrp) aligned,     /* bootable label structure */
17             2 xfer_vector        (4),                       /* bootload interrupt transfer vector */
18               3 lda_instr        bit (36),                  /* this will be a "LDA 4" instruction */
19               3 tra_instr        bit (36),                  /* a "TRA" instruction to start of boot pgm */
20             2 head               like mstr_header,          /* standard record header */
21             2 vid                like volume_identifier,    /* tape volume info */
22             2 fv_overlay         (0:31),                    /* overlay for fault vectors  when tape booted */
23               3 scu_instr        bit (36),                  /* an "SCU" instruction to address of fault_data */
24               3 dis_instr        bit (36),                  /* a "DIS" instruction, with Y field = to its own addr */
25             2 fault_data         (8) bit (36),              /* SCU data for unexpected faults goes here */
26             2 boot_pgm_path      char (168) unaligned,      /* path name of boot program */
27             2 userid             char (32) unaligned,       /* Storage for Person.Project.Instance of creator of tape */
28             2 label_version      fixed bin,                 /* defined by LABEL_VERSION constant below */
29             2 output_mode        fixed bin,                 /* mode in which tape was written with */
30             2 boot_pgm_len       fixed bin,                 /* length in words of boot program */
31             2 copyright          char (56),                 /* Protection notice goes here if boot pgm is written */
32             2 pad                (13) bit (36),             /* pad out to 192 (300 octal) */
33             2 boot_pgm           (0 refer (mst_label.boot_pgm_len)) bit (36),
34                                                             /* boot program */
35             2 trail              like mstr_trailer;         /* standard record trailer */
36 
37 dcl       1 mstr_header          based aligned,             /* Multics standard tape record header */
38           ( 2 c1                 bit (36),                  /* constant = 670314355245(8) */
39             2 uid                bit (72),                  /* unique ID */
40             2 rec_within_file    fixed bin (17),            /* phys. rec. # within phys. file */
41             2 phy_file           fixed bin (17),            /* phys. file # on phys. tape */
42             2 data_bits_used     fixed bin (17),            /* # of bits of data in record */
43             2 data_bit_len       fixed bin (17),            /* bit length of data space */
44             2 flags,                                        /* record flags */
45               3 admin            bit (1),                   /* admin record flag */
46               3 label            bit (1),                   /* label record flag */
47               3 eor              bit (1),                   /* end-of-reel record flag */
48               3 pad1             bit (11),
49               3 set              bit (1),                   /* ON if any of following items set */
50               3 repeat           bit (1),                   /* repeated record flag */
51               3 padded           bit (1),                   /* record contains padding flag */
52               3 eot              bit (1),                   /* EOT reflector encountered flag */
53               3 drain            bit (1),                   /* synchronous write flag */
54               3 continue         bit (1),                   /* continue on next reel flag */
55               3 pad2             bit (4),
56             2 header_version     fixed bin (3) unsigned,    /* current header version number */
57             2 repeat_count       fixed bin (8),             /* repetition count */
58             2 checksum           bit (36),                  /* checksum of header and trailer */
59             2 c2                 bit (36)
60             )                    unal;                      /* constant = 512556146073(8) */
61 
62 dcl       1 mstr_trailer         based aligned,             /* Multics standard tape record trailer */
63           ( 2 c1                 bit (36),                  /* constant = 107463422532(8) */
64             2 uid                bit (72),                  /* unique ID (matches header) */
65             2 tot_data_bits      fixed bin (35),            /* total data bits written on logical tape */
66             2 pad_pattern        bit (36),                  /* padding pattern */
67             2 reel_num           fixed bin (11),            /* reel sequence # */
68             2 tot_file           fixed bin (23),            /* phys. file number */
69             2 tot_rec            fixed bin (35),            /* phys. record # for logical tape */
70             2 c2                 bit (36)
71             )                    unal;                      /* constant = 265221631704(8) */
72 
73 dcl       1 volume_identifier    based aligned,             /* tape volume info */
74           ( 2 installation_id    char (32),                 /* installation that created tape */
75             2 tape_reel_id       char (32),                 /* tape reel name */
76             2 volume_set_id      char (32)
77             )                    unaligned;                 /* name of the volume set */
78 
79 dcl       (
80           header_c1              init ("670314355245"b3),
81           header_c2              init ("512556146073"b3),
82           trailer_c1             init ("107463422532"b3),
83           trailer_c2             init ("265221631704"b3),
84           label_c1               init ("000004235000"b3)
85           )                      bit (36) static;
86 
87 dcl       LABEL_VERSION          fixed bin static options (constant) init (3);
88                                                             /* current label version */
89 dcl       HEADER_VERSION         fixed bin static options (constant) init (1);
90                                                             /* current header version */
91 
92 /* End of include file ...... mstr.incl.pl1 */
93