1 /* ====== BEGIN INCLUDE SEGMENT         apl_saved_ws.incl.pl1 ===================================== */
  2 
  3 /* This include file describes the format of a saved workspace. */
  4 
  5 /* all packed pointer items are "pseudo-pointers" to other data items within the saved ws, identifying
  6    the component and word offset within the MSF.
  7    all fixed binary (21) items are "bead numbers", representing indicies into the bead_description_table. */
  8 
  9 declare   current_save_version fixed binary internal static initial (4),
 10           saved_ws_info_pointer pointer;
 11 
 12 declare 1 saved_ws_info                 aligned based (saved_ws_info_pointer),
 13           2 save_version                fixed binary,       /* Version number of this declaration. */
 14           2 highest_segment             fixed binary,       /* number of internal segments in ws. */
 15           2 bead_table_pointer          pointer unaligned,  /* pointer to bead_description_table */
 16           2 total_beads                 fixed binary (24),  /* size of bead_description_table */
 17           2 padding                     fixed binary (35) dimension (4),        /* reserved just in case. */
 18           2 other_ws_info aligned,
 19             3 digits                    fixed bin,
 20             3 width                     fixed bin,
 21             3 index_origin              fixed bin,
 22             3 random_link               fixed bin (35),
 23             3 fuzz                      float,
 24             3 float_index_origin        float,
 25             3 number_of_symbols         fixed bin,
 26             3 current_parse_frame_ptr   pointer unaligned,
 27             3 time_saved                fixed binary (71),
 28             3 integer_fuzz              float,
 29             3 user_number               fixed bin (35),
 30             3 latent_expression         fixed bin (21),     /* bead number of latent expression */
 31             3 lock                      char (32),
 32             3 wsid                      char (100),
 33             3 user_name                 char (32);
 34 
 35 declare   saved_bead_count fixed bin,
 36           bead_description_pointer pointer;
 37 
 38 declare 1 bead_description_table        aligned based (bead_description_pointer) dimension (saved_bead_count),
 39           2 bead_pointer                pointer unaligned;  /* pseudo pointer to bead */
 40 
 41 declare   saved_bead_pointer pointer,
 42           (symbol_name_length, total_members) fixed binary;
 43 
 44 declare   1 saved_general_bead          aligned based (saved_bead_pointer),
 45             2 type                      unaligned like general_bead.type,
 46             2 size                      unaligned bit (18); /* N.B.: this is the # of words in the original bead, */
 47                                                             /* not the saved bead. */
 48 
 49 declare   1 saved_value_bead            aligned based (saved_bead_pointer),
 50             2 header                    aligned like saved_general_bead,
 51             2 total_data_elements       fixed binary (21),
 52             2 rhorho                    fixed binary,
 53             2 data_pointer              unaligned pointer,
 54             2 rho                       fixed binary (21) dimension (number_of_dimensions refer (saved_value_bead.rhorho));
 55 
 56 declare   saved_boolean_datum           bit (data_elements) aligned based;
 57 
 58 
 59 declare   1 saved_sb                    aligned based (saved_bead_pointer),
 60             2 header                    aligned like saved_general_bead,
 61             2 meaning_pointer           fixed binary (21),
 62             2 name_length               fixed binary,
 63             2 name                      character (symbol_name_length refer (saved_sb.name_length)) unaligned;
 64 
 65 
 66 
 67 declare   1 saved_lb                    aligned based (saved_bead_pointer),
 68             2 header                    aligned like saved_general_bead,
 69             2 number_of_members         fixed bin,
 70             2 members                   dim (total_members refer (saved_lb.number_of_members)) aligned,
 71               3 member_ptr              fixed binary (21),
 72               3 bits                    unaligned like operator_bead.bits_for_parse;
 73 
 74 
 75 
 76 declare   1 saved_gb                    aligned based (saved_bead_pointer),
 77             2 header                    aligned like saved_general_bead,
 78             2 number_of_members         fixed binary,
 79             2 member                    fixed binary (21) dimension (total_members refer (saved_gb.number_of_members));
 80 
 81 
 82 declare   1 saved_fb                    aligned based (saved_bead_pointer),
 83             2 header                    aligned like saved_general_bead,
 84             2 class                     fixed bin,
 85             2 stop_control_pointer      fixed bin (21),
 86             2 trace_control_pointer     fixed bin (21),
 87             2 text_length               fixed bin,
 88             2 text                      aligned char (data_elements refer (saved_fb.text_length));
 89 
 90 declare   (saved_frame_pointer, saved_reductions_pointer) pointer;
 91 
 92 declare
 93           1 saved_pf                    based(saved_frame_pointer) aligned,
 94             2 last_parse_frame_ptr      ptr unaligned,      /* pseudo-pointer to last parse frame, or null */
 95             2 parse_frame_type          fixed bin,
 96             2 function_bead_ptr         fixed bin (21),     /* pseudo-pointer to function bead */
 97             2 current_parseme           unal fixed bin (17),
 98             2 current_lexeme            unal fixed bin (17),
 99             2 current_line_number       unal fixed bin (17),
100             2 return_point              unal fixed bin (17),
101             2 put_result                unal fixed bin (17),
102             2 print_final_value         unal bit,
103             2 re_lex_source             unal bit,           /* if 1, re-lex the source for this frame */
104             2 pad                       unal bit (16),
105             2 number_of_ptrs            fixed bin,
106             2 old_meaning_ptrs          dim (number_of_ptrs refer (saved_pf.number_of_ptrs)) fixed bin (21);
107                                                             /* old meanings for local variables */
108 
109 declare
110           1 v3_saved_pf                 based (saved_frame_pointer) aligned,
111             2 last_parse_frame_ptr      ptr unaligned,      /* pseudo-pointer to last parse frame, or null */
112             2 parse_frame_type          fixed bin,
113             2 function_bead_ptr         fixed bin (21),     /* pseudo-pointer to function bead */
114             2 current_parseme           unal fixed bin (17),
115             2 current_lexeme            unal fixed bin (17),
116             2 current_line_number       unal fixed bin (17),
117             2 return_point              unal fixed bin (17),
118             2 put_result                unal fixed bin (17),
119             2 print_final_value         unal bit,
120             2 re_lex_source             unal bit,           /* if 1, re-lex the source for this frame */
121             2 pad                       unal bit (16),
122             2 old_meaning_ptrs          dim (number_of_ptrs) fixed bin (21);
123                                                             /* old meanings for local variables */
124 
125 declare
126           1 saved_rs                    dim(1000) aligned based(saved_reductions_pointer),
127             2 type                      fixed bin,          /* type of parseme */
128             2 bits                      unaligned like operator_bead.bits_for_parse,
129             2 semantics                 fixed bin (21),     /* pseudo-pointer */
130             2 lexeme                    fixed bin,
131 
132           1 saved_rs_for_op             dim(1000) aligned based(saved_reductions_pointer),
133             2 type                      fixed bin,
134             2 bits                      unaligned like operator_bead.bits_for_parse,
135             2 semantics                 fixed bin,
136             2 lexeme                    fixed bin;
137 
138 
139 declare   1 saved_sf                    aligned based (saved_frame_pointer),
140             2 last_frame_pointer        pointer unaligned,  /* pointer to last parse frame, or null */
141             2 frame_type                fixed binary,       /* = save_frame_type */
142             2 saved_symbol_count        fixed binary (29),
143             2 symbol_list               aligned dimension (total_symbols refer (saved_sf.saved_symbol_count)),
144               3 symbol_pointer          fixed binary (21),  /* bead number of each symbol bead */
145               3 saved_meaning_pointer   fixed binary (21);  /* bead number of meaning at the time frame is created */
146 
147 /* ------ END INCLUDE SEGMENT           apl_saved_ws.incl.pl1 ------------------------------------- */