Seq # *Modification Id* Act
----------------------------+
00001 M00S00001.tduout +++|*NOSEQ
00002 M00S00002.tduout +++|*WIDTH 95
00003 M00S00003.tduout +++|MODULE tduout;
00004 M00S00004.tduout +++|
00005 M00S00005.tduout +++|?? SET ( CHKALL := ON ), RIGHT := 110 ??
00006 M00S00006.tduout +++|
00007 M00S00007.tduout +++|{ Module : TDUOUT }
Line S00001 Modification History |
M01 (Added by) | 281l803 |
Seq # *Modification Id* Act
----------------------------+
00008 M01S00001.281l803 +++|{ Copyright Control Data Systems Inc. 1992. }
00009 M00S00008.tduout +++|{ Written: 1/84 by R. Lindsey }
00010 M00S00009.tduout +++|{ Version: Cyber 170, version 1 }
00011 M00S00010.tduout +++|{ Purpose: This is the output portion of the TDU program. }
00012 M00S00011.tduout +++|
00013 M00S00012.tduout +++| ?? PUSH ( LIST := OFF ) ?? { uncomment this line to suppress list }
00014 M00S00013.tduout +++|{ ?? PUSH ( LIST := ON ) ?? { uncomment this line to list }
00015 M00S00014.tduout +++|
00016 M00S00015.tduout +++|?? NEWTITLE := 'Utilities' ??
00017 M00S00016.tduout +++|
00018 M00S00017.tduout +++|{ integer to string conversion, ascii to ascii-64 conversion }
00019 M00S00018.tduout +++|*CALLC ZUTPI2S
00020 M00S00019.tduout +++|*CALL ZUTVCTT
00021 M00S00020.tduout +++|
00022 M00S00021.tduout +++|?? OLDTITLE ??
00023 M00S00022.tduout +++|?? NEWTITLE := 'ZTDTTAB' ??
00024 M00S00023.tduout +++|?? SKIP := 4 ??
00025 M00S00024.tduout +++|
00026 M00S00025.tduout +++|{ **************************** }
00027 M00S00026.tduout +++|{ common deck ZTDTTAB follows: }
00028 M00S00027.tduout +++|*CALL ZTDTTAB
00029 M00S00028.tduout +++|
00030 M00S00029.tduout +++|?? OLDTITLE ??
00031 M00S00030.tduout +++|?? NEWTITLE := 'tdu XREF''s, etc.' ??
00032 M00S00031.tduout +++|?? EJECT ??
00033 M00S00032.tduout +++|
00034 M00S00033.tduout +++|{ ***************** }
00035 M00S00034.tduout +++|{ tdu file handler: }
00036 M00S00035.tduout +++|*CALL ZTDPFIL
00037 M00S00036.tduout +++|
00038 M00S00037.tduout +++|{ ********************** }
00039 M00S00038.tduout +++|{ error handling routine }
00040 M00S00039.tduout +++|*CALL ZTDPERR
00041 M00S00040.tduout +++|
00042 M00S00041.tduout +++|{ ****************************** }
00043 M00S00042.tduout +++|{ table-handling dump procedures }
00044 M00S00043.tduout +++|*CALLC ZTDPTBD
00045 M00S00044.tduout +++|
00046 M00S00045.tduout +++| ?? EJECT ??
00047 M00S00046.tduout +++| ?? POP ??
00048 M00S00047.tduout +++|
00049 M00S00048.tduout +++| CONST
00050 M00S00049.tduout +++| target_wordsize = 60, { word size of target machine (170) }
00051 M00S00050.tduout +++| target_char_size = 7; { bit size of each character }
00052 M00S00051.tduout +++|
00053 M00S00052.tduout +++| VAR
00054 M00S00053.tduout +++| tdu_version_num: [XREF] INTEGER, { from main program }
00055 M00S00054.tduout +++|
00056 M00S00055.tduout +++| word_number: INTEGER := -1, { pre-decremented word counter }
00057 M00S00056.tduout +++| bits_left_in_word: INTEGER := 0, { bits remaining in word, start empty }
00058 M00S00057.tduout +++|
00059 M00S00058.tduout +++| stringrep_len: INTEGER, { used by all STRINGREP calls }
00060 M00S00059.tduout +++|
00061 M00S00060.tduout +++| parm_record: parameter_record, { terminal non-I/O parameters }
00062 M00S00061.tduout +++| in_node: ^input_node, { input table item }
00063 M00S00062.tduout +++| status: ost$status,
00064 M00S00063.tduout +++|
00065 M00S00064.tduout +++| outrec: PACKED RECORD { output buffer }
00066 M00S00065.tduout +++| CASE line_type: (whole_line, opcode_line, comment_line) OF
00067 M00S00066.tduout +++| = whole_line = { for output--write the whole line }
00068 M00S00067.tduout +++| line_buffer: STRING(72),
00069 M00S00068.tduout +++| = opcode_line = { for 'regular' opcode/param lines }
00070 M00S00069.tduout +++| filler1: STRING(1), { CHAR won't work here }
00071 M00S00070.tduout +++| label: STRING(9), { column 2 }
00072 M00S00071.tduout +++| opcode: STRING(7), { column 11 }
00073 M00S00072.tduout +++| parameters: STRING(20), { column 18, need lots of room here }
00074 M00S00073.tduout +++| comment: STRING(35), { column 38, non-standard, oh well }
00075 M00S00074.tduout +++| = comment_line = { for full-line comments }
00076 M00S00075.tduout +++| comment_indicator: STRING(6), { col. 1 '*' + filler }
00077 M00S00076.tduout +++| comment_text: STRING(66), { column 7, not to line up w/opcode }
00078 M00S00077.tduout +++| CASEND,
00079 M00S00078.tduout +++| RECEND;
00080 M00S00079.tduout +++|
00081 M00S00080.tduout +++| { Subtable labels table }
00082 M00S00081.tduout +++|
00083 M00S00082.tduout +++| CONST
00084 M00S00083.tduout +++| subtable_count = 5, { number of subtables defined }
00085 M00S00084.tduout +++| subtable_input = 1,
00086 M00S00085.tduout +++| subtable_names = 2,
00087 M00S00086.tduout +++| subtable_init = 3,
00088 M00S00087.tduout +++| subtable_appstr = 4,
00089 M00S00088.tduout +++| subtable_end = 5;
00090 M00S00089.tduout +++|
00091 M00S00090.tduout +++| VAR
00092 M00S00091.tduout +++| subtable_index: INTEGER,
00093 M00S00092.tduout +++| subtable_list: [STATIC] PACKED ARRAY [1..subtable_count] OF PACKED RECORD
00094 M00S00093.tduout +++| label: STRING(8), { the label itself }
00095 M00S00094.tduout +++| label_len: 0 .. 8, { significant length of label }
00096 M00S00095.tduout +++| RECEND
00097 M00S00096.tduout +++| := [ ['INPUT', 5],
00098 M00S00097.tduout +++| ['NAMES', 5],
00099 M00S00098.tduout +++| ['INIT', 4],
00100 M00S00099.tduout +++| ['APPSTR', 6],
00101 M00S00100.tduout +++| ['ENDTABL', 7] ];
00102 M00S00101.tduout +++|
00103 M00S00102.tduout +++| ?? NEWTITLE := 'write_tables' ??
00104 M00S00103.tduout +++| ?? EJECT ??
00105 M00S00104.tduout +++|
00106 M00S00105.tduout +++| PROCEDURE [XDCL] write_tables; { this is called to write entire table }
00107 M00S00106.tduout +++|
00108 M00S00107.tduout +++| ?? NEWTITLE := 'write_line' ??
00109 M00S00108.tduout +++| ?? SKIP := 4 ??
00110 M00S00109.tduout +++|
00111 M00S00110.tduout +++| PROCEDURE write_line;
00112 M00S00111.tduout +++| put_file(output_file_sel, outrec.line_buffer);
00113 M00S00112.tduout +++| PROCEND write_line;
00114 M00S00113.tduout +++| ?? OLDTITLE ??
00115 M00S00114.tduout +++|
00116 M00S00115.tduout +++| ?? NEWTITLE := 'write_opcode_line' ??
00117 M00S00116.tduout +++| ?? SKIP := 4 ??
00118 M00S00117.tduout +++|
00119 M00S00118.tduout +++| PROCEDURE write_opcode_line;
00120 M00S00119.tduout +++| outrec.line_type := whole_line;
00121 M00S00120.tduout +++| write_line;
00122 M00S00121.tduout +++| outrec.line_type := opcode_line;
00123 M00S00122.tduout +++| outrec.label := ''; { never want to save a label }
00124 M00S00123.tduout +++| PROCEND write_opcode_line;
00125 M00S00124.tduout +++| ?? OLDTITLE ??
00126 M00S00125.tduout +++|
00127 M00S00126.tduout +++| ?? NEWTITLE := 'write_comment' ??
00128 M00S00127.tduout +++| ?? SKIP := 4 ??
00129 M00S00128.tduout +++|
00130 M00S00129.tduout +++| PROCEDURE write_comment;
00131 M00S00130.tduout +++| outrec.comment_indicator := '*';
00132 M00S00131.tduout +++| outrec.line_type := whole_line;
00133 M00S00132.tduout +++| write_line;
00134 M00S00133.tduout +++| outrec.line_buffer := ''; { always return a blank line }
00135 M00S00134.tduout +++| outrec.line_type := comment_line;
00136 M00S00135.tduout +++| PROCEND write_comment;
00137 M00S00136.tduout +++| ?? OLDTITLE ??
00138 M00S00137.tduout +++|
00139 M00S00138.tduout +++| ?? NEWTITLE := 'write_vfd' ??
00140 M00S00139.tduout +++| ?? EJECT ??
00141 M00S00140.tduout +++|
00142 M00S00141.tduout +++| PROCEDURE write_vfd(bit_length, field_value: INTEGER; commnt: STRING(*));
00143 M00S00142.tduout +++| VAR
00144 M00S00143.tduout +++| temp_string,
00145 M00S00144.tduout +++| bit_length_string,
00146 M00S00145.tduout +++| field_value_string: STRING(4),
00147 M00S00146.tduout +++| bit_l_s_length,
00148 M00S00147.tduout +++| field_v_s_length: ost$string_length; { subrange for string size }
00149 M00S00148.tduout +++|
00150 M00S00149.tduout +++| outrec.opcode := 'VFD';
00151 M00S00150.tduout +++| utp$convert_integer_to_string(bit_length_string, bit_l_s_length,
00152 M00S00151.tduout +++| bit_length, 10);
00153 M00S00152.tduout +++| utp$convert_integer_to_string(field_value_string, field_v_s_length,
00154 M00S00153.tduout +++| field_value, 10);
00155 M00S00154.tduout +++|{ IF field_value = (-0) THEN
00156 M00S00155.tduout +++|{ STRINGREP(temp_string, field_v_s_length,
00157 M00S00156.tduout +++|{ '-', field_value_string(1,field_v_s_length));
00158 M00S00157.tduout +++|{ field_value_string := temp_string
00159 M00S00158.tduout +++|{ IFEND;
00160 M00S00159.tduout +++| outrec.parameters := '';
00161 M00S00160.tduout +++| STRINGREP(outrec.parameters, stringrep_len,
00162 M00S00161.tduout +++| bit_length_string(1,bit_l_s_length),
00163 M00S00162.tduout +++| '/': 1,
00164 M00S00163.tduout +++| field_value_string(1,field_v_s_length));
00165 M00S00164.tduout +++| outrec.comment := commnt;
00166 M00S00165.tduout +++| write_opcode_line;
00167 M00S00166.tduout +++| outrec.comment := '';
00168 M00S00167.tduout +++| bits_left_in_word := bits_left_in_word - bit_length;
00169 M00S00168.tduout +++| PROCEND write_vfd;
00170 M00S00169.tduout +++| ?? OLDTITLE ??
00171 M00S00170.tduout +++|
00172 M00S00171.tduout +++| ?? NEWTITLE := 'start_word_output' ??
00173 M00S00172.tduout +++| ?? EJECT ??
00174 M00S00173.tduout +++|
00175 M00S00174.tduout +++| PROCEDURE start_word_output;
00176 M00S00175.tduout +++| VAR
00177 M00S00176.tduout +++| integer_string: STRING(6),
00178 M00S00177.tduout +++| i_s_length: ost$string_length; { subrange of integer, str-len }
00179 M00S00178.tduout +++|
00180 M00S00179.tduout +++| IF bits_left_in_word < target_wordsize THEN { only if not already word}
00181 M00S00180.tduout +++| word_number := word_number + 1;
00182 M00S00181.tduout +++| bits_left_in_word := target_wordsize;
00183 M00S00182.tduout +++| outrec.line_type := comment_line;
00184 M00S00183.tduout +++| outrec.comment_text := '';
00185 M00S00184.tduout +++| utp$convert_integer_to_string(integer_string, i_s_length,
00186 M00S00185.tduout +++| word_number, 8); { STRINGREP can't do octal (!) }
00187 M00S00186.tduout +++| STRINGREP(outrec.comment_text, stringrep_len, 'WORD ': 5,
00188 M00S00187.tduout +++| integer_string: i_s_length);
00189 M00S00188.tduout +++| write_comment;
00190 M00S00189.tduout +++| IFEND;
00191 M00S00190.tduout +++| PROCEND start_word_output;
00192 M00S00191.tduout +++| ?? OLDTITLE ??
00193 M00S00192.tduout +++|
00194 M00S00193.tduout +++| ?? NEWTITLE := 'write_ordinals' ??
00195 M00S00194.tduout +++| ?? EJECT ??
00196 M00S00195.tduout +++|
00197 M00S00196.tduout +++| PROCEDURE write_ordinals (dump_procedure: dump_procedure_type);
00198 M00S00197.tduout +++| VAR
00199 M00S00198.tduout +++| ordinal_ndx: INTEGER,
00200 M00S00199.tduout +++| length: INTEGER,
00201 M00S00200.tduout +++| chars: ^STRING(*),
00202 M00S00201.tduout +++| total_characters,
00203 M00S00202.tduout +++| total_ordinals: INTEGER,
00204 M00S00203.tduout +++| node_returned: BOOLEAN,
00205 M00S00204.tduout +++| bit_count,
00206 M00S00205.tduout +++| word_count,
00207 M00S00206.tduout +++| remainder,
00208 M00S00207.tduout +++| remainder_chars,
00209 M00S00208.tduout +++| filler_bits,
00210 M00S00209.tduout +++| char_offset: INTEGER,
00211 M00S00210.tduout +++| integer_string: STRING(6),
00212 M00S00211.tduout +++| i_s_length: ost$string_length, { subrange of integer, str-len }
00213 M00S00212.tduout +++| comment: STRING(30);
00214 M00S00213.tduout +++|
00215 M00S00214.tduout +++| dump_procedure^(0, length, chars, total_ordinals, total_characters,
00216 M00S00215.tduout +++| node_returned);
00217 M00S00216.tduout +++| bit_count := ( ( total_ordinals + 2 ) * 12 );
00218 M00S00217.tduout +++| word_count := bit_count DIV 60;
00219 M00S00218.tduout +++| remainder := 60 - ( bit_count MOD 60 );
00220 M00S00219.tduout +++| char_offset := ( word_count * 8 ) + 8 - ( remainder DIV 7 );
00221 M00S00220.tduout +++| ordinal_ndx := 0;
00222 M00S00221.tduout +++| REPEAT
00223 M00S00222.tduout +++| dump_procedure^(ordinal_ndx, length, chars,
00224 M00S00223.tduout +++| total_ordinals, total_characters, node_returned);
00225 M00S00224.tduout +++| IF node_returned THEN
00226 M00S00225.tduout +++| IF bits_left_in_word < 12 THEN
00227 M00S00226.tduout +++| start_word_output
00228 M00S00227.tduout +++| IFEND;
00229 M00S00228.tduout +++| outrec.line_type := opcode_line;
00230 M00S00229.tduout +++| comment := '';
00231 M00S00230.tduout +++| utp$convert_integer_to_string(integer_string, i_s_length,
00232 M00S00231.tduout +++| ordinal_ndx, 10); { ordinal in string format }
00233 M00S00232.tduout +++| STRINGREP(comment, stringrep_len,
00234 M00S00233.tduout +++| 'ORDINAL ': 8, integer_string: i_s_length);
00235 M00S00234.tduout +++| write_vfd(12, char_offset, comment);
00236 M00S00235.tduout +++| char_offset := char_offset + length;
00237 M00S00236.tduout +++| ordinal_ndx := ordinal_ndx + 1
00238 M00S00237.tduout +++| IFEND
00239 M00S00238.tduout +++| UNTIL NOT node_returned;
00240 M00S00239.tduout +++| IF bits_left_in_word < 12 THEN
00241 M00S00240.tduout +++| start_word_output
00242 M00S00241.tduout +++| IFEND;
00243 M00S00242.tduout +++| outrec.line_type := opcode_line;
00244 M00S00243.tduout +++| write_vfd(12, char_offset, 'END OF ORDINALS');
00245 M00S00244.tduout +++| IF bits_left_in_word > 0 THEN
00246 M00S00245.tduout +++| remainder_chars := remainder DIV 7;
00247 M00S00246.tduout +++| filler_bits := remainder - ( remainder_chars * 7 );
00248 M00S00247.tduout +++| write_vfd(filler_bits, 0, 'FILLER')
00249 M00S00248.tduout +++| IFEND
00250 M00S00249.tduout +++| PROCEND write_ordinals;
00251 M00S00250.tduout +++|
00252 M00S00251.tduout +++| ?? OLDTITLE ??
00253 M00S00252.tduout +++| ?? NEWTITLE := 'write_char_sequences' ??
00254 M00S00253.tduout +++| ?? EJECT ??
00255 M00S00254.tduout +++|
00256 M00S00255.tduout +++| PROCEDURE write_char_sequences (dump_procedure: dump_procedure_type);
00257 M00S00256.tduout +++| VAR
00258 M00S00257.tduout +++| ordinal_ndx: INTEGER,
00259 M00S00258.tduout +++| length: INTEGER,
00260 M00S00259.tduout +++| chars: ^STRING(*),
00261 M00S00260.tduout +++| total_characters,
00262 M00S00261.tduout +++| total_ordinals: INTEGER,
00263 M00S00262.tduout +++| node_returned: BOOLEAN,
00264 M00S00263.tduout +++| integer_string: STRING(6),
00265 M00S00264.tduout +++| i_s_length: ost$string_length, { subrange of integer, str-len }
00266 M00S00265.tduout +++| char_ndx: INTEGER,
00267 M00S00266.tduout +++| comment: STRING(30);
00268 M00S00267.tduout +++|
00269 M00S00268.tduout +++| ordinal_ndx := 0;
00270 M00S00269.tduout +++| REPEAT
00271 M00S00270.tduout +++| dump_procedure^(ordinal_ndx, length, chars,
00272 M00S00271.tduout +++| total_ordinals, total_characters, node_returned);
00273 M00S00272.tduout +++| IF node_returned THEN
00274 M00S00273.tduout +++| IF bits_left_in_word = target_wordsize THEN { first word only }
00275 M00S00274.tduout +++| write_vfd(4, 0, 'FILLER');
00276 M00S00275.tduout +++| IFEND;
00277 M00S00276.tduout +++| comment := '';
00278 M00S00277.tduout +++| utp$convert_integer_to_string(integer_string, i_s_length,
00279 M00S00278.tduout +++| ordinal_ndx, 10); { ordinal in string format }
00280 M00S00279.tduout +++| STRINGREP(comment, stringrep_len,
00281 M00S00280.tduout +++| 'ORDINAL ': 8, integer_string: i_s_length);
00282 M00S00281.tduout +++| outrec.line_type := opcode_line;
00283 M00S00282.tduout +++| FOR char_ndx := 1 TO length DO
00284 M00S00283.tduout +++| IF bits_left_in_word < target_char_size THEN
00285 M00S00284.tduout +++| start_word_output;
00286 M00S00285.tduout +++| outrec.line_type := opcode_line;
00287 M00S00286.tduout +++| write_vfd(4, 0, 'FILLER')
00288 M00S00287.tduout +++| IFEND;
00289 M00S00288.tduout +++| write_vfd(target_char_size,
00290 M00S00289.tduout +++| ORD(chars^(char_ndx)), comment);
00291 M00S00290.tduout +++| comment := ''
00292 M00S00291.tduout +++| FOREND;
00293 M00S00292.tduout +++| ordinal_ndx := ordinal_ndx + 1
00294 M00S00293.tduout +++| IFEND
00295 M00S00294.tduout +++| UNTIL NOT node_returned;
00296 M00S00295.tduout +++| IF ( bits_left_in_word > 0 ) AND
00297 M00S00296.tduout +++| ( bits_left_in_word < target_wordsize ) THEN
00298 M00S00297.tduout +++| outrec.line_type := opcode_line;
00299 M00S00298.tduout +++| write_vfd(bits_left_in_word, 0, 'FILLER')
00300 M00S00299.tduout +++| IFEND
00301 M00S00300.tduout +++| PROCEND write_char_sequences;
00302 M00S00301.tduout +++|
00303 M00S00302.tduout +++| ?? OLDTITLE ??
00304 M00S00303.tduout +++|
00305 M00S00304.tduout +++| ?? NEWTITLE := 'write_tab_protect_parms' ??
00306 M00S00305.tduout +++| ?? EJECT ??
00307 M00S00306.tduout +++|
00308 M00S00307.tduout +++| PROCEDURE write_tab_protect_parms;
00309 M00S00308.tduout +++| VAR
00310 M00S00309.tduout +++| resv_ndx: INTEGER,
00311 M00S00310.tduout +++| loop_ndx: INTEGER,
00312 M00S00311.tduout +++| parm_ndx: INTEGER;
00313 M00S00312.tduout +++| loop_ndx := (cursor_behavior_div + 1);
00314 M00S00313.tduout +++|
00315 M00S00314.tduout +++| FOR parm_ndx := loop_ndx TO cursor_behavior_max DO
Line S00315 Modification History |
M01 (Removed by) | ns2348 |
Seq # *Modification Id* Act
----------------------------+
00316 M01S00315.ns2348 ---| write_vfd(4, ORD(parm_record.cursor_behavior[parm_ndx]),
00317 M01S00316.ns2348 ---| 'CURSOR BEHAVIOR');
Line S00001 Modification History |
M01 (Added by) | ns2348 |
Seq # *Modification Id* Act
----------------------------+
00318 M01S00001.ns2348 +++| IF (ORD(parm_record.cursor_behavior[parm_ndx]) = -1) THEN
00319 M01S00002.ns2348 +++| write_vfd(4, 0, 'CURSOR BEHAVIOR');
00320 M01S00003.ns2348 +++| ELSE
00321 M01S00004.ns2348 +++| write_vfd(4, ORD(parm_record.cursor_behavior[parm_ndx]),
00322 M01S00005.ns2348 +++| 'CURSOR BEHAVIOR');
00323 M01S00006.ns2348 +++| IFEND;
00324 M00S00317.tduout +++| FOREND;
00325 M00S00318.tduout +++|
00326 M00S00319.tduout +++| resv_ndx := 4 * ((cursor_behavior_max - cursor_behavior_div)- 1);
00327 M00S00320.tduout +++| write_vfd(resv_ndx, 0, 'RESERVED');
00328 M00S00321.tduout +++|
00329 M00S00322.tduout +++| PROCEND write_tab_protect_parms;
00330 M00S00323.tduout +++|
00331 M00S00324.tduout +++| ?? OLDTITLE ??
00332 M00S00325.tduout +++|
00333 M00S00326.tduout +++| ?? NEWTITLE := 'write_header' ??
00334 M00S00327.tduout +++| ?? EJECT ??
00335 M00S00328.tduout +++|
00336 M00S00329.tduout +++| PROCEDURE write_header;
00337 M00S00330.tduout +++| VAR
00338 M00S00331.tduout +++| junk_name: STRING(7),
00339 M00S00332.tduout +++| junk_len: INTEGER;
00340 M00S00333.tduout +++|
00341 M00S00334.tduout +++| dump_parameters(parm_record);
00342 M00S00335.tduout +++| junk_name := ' '; { concatenate 'Z' to start of name }
00343 M00S00336.tduout +++| STRINGREP(junk_name, junk_len, 'Z', { to ensure a valid NOS name }
00344 M00S00337.tduout +++| parm_record.model_name(1,parm_record.model_name_len));
00345 M00S00338.tduout +++| parm_record.model_name := junk_name;
00346 M00S00339.tduout +++| parm_record.model_name_len := junk_len;
00347 M00S00340.tduout +++|
00348 M00S00341.tduout +++| outrec.line_type := opcode_line;
00349 M00S00342.tduout +++| outrec.label := '';
00350 M00S00343.tduout +++| outrec.comment := '';
00351 M00S00344.tduout +++| outrec.opcode := 'IDENT';
00352 M00S00345.tduout +++| outrec.parameters := parm_record.model_name;
00353 M00S00346.tduout +++| write_opcode_line;
00354 M00S00347.tduout +++| outrec.opcode := 'LCC';
00355 M00S00348.tduout +++| outrec.parameters := 'GROUP(VIRTERM)';
00356 M00S00349.tduout +++| write_opcode_line;
00357 M00S00350.tduout +++| outrec.parameters := '';
00358 M00S00351.tduout +++| STRINGREP(outrec.parameters,stringrep_len, 'CAPSULE(':8,
00359 M00S00352.tduout +++| parm_record.model_name(1,parm_record.model_name_len),
00360 M00S00353.tduout +++| ')':1 );
00361 M00S00354.tduout +++| write_opcode_line;
00362 M00S00355.tduout +++| outrec.opcode := 'ENTRY';
00363 M00S00356.tduout +++| outrec.parameters := parm_record.model_name;
00364 M00S00357.tduout +++| write_opcode_line;
00365 M00S00358.tduout +++| start_word_output;
00366 M00S00359.tduout +++| outrec.line_type := opcode_line;
00367 M00S00360.tduout +++| outrec.label := parm_record.model_name;
00368 M00S00361.tduout +++| outrec.opcode := 'BSS';
00369 M00S00362.tduout +++| outrec.parameters := '0';
00370 M00S00363.tduout +++| write_opcode_line;
00371 M00S00364.tduout +++| outrec.line_type := comment_line;
00372 M00S00365.tduout +++| outrec.comment_text := '';
00373 M00S00366.tduout +++| write_comment;
00374 M00S00367.tduout +++| outrec.comment_text := 'HEADER';
00375 M00S00368.tduout +++| write_comment;
00376 M00S00369.tduout +++| write_comment;
00377 M00S00370.tduout +++| outrec.line_type := opcode_line;
00378 M00S00371.tduout +++| outrec.opcode := 'VFD';
00379 M00S00372.tduout +++| outrec.parameters := '';
00380 M00S00373.tduout +++| STRINGREP(outrec.parameters, stringrep_len,
00381 M00S00374.tduout +++| '42/0L': 5,
00382 M00S00375.tduout +++| parm_record.model_name(2,6)); { without leading 'Z' }
00383 M00S00376.tduout +++| write_opcode_line;
00384 M00S00377.tduout +++| bits_left_in_word := bits_left_in_word - 42;
00385 M00S00378.tduout +++| write_vfd(18, tdu_version_num, 'VERSION NUMBER')
00386 M00S00379.tduout +++| PROCEND write_header;
00387 M00S00380.tduout +++| ?? OLDTITLE ??
00388 M00S00381.tduout +++|
00389 M00S00382.tduout +++| ?? NEWTITLE := 'write_sub_table_pointers' ??
00390 M00S00383.tduout +++| ?? EJECT ??
00391 M00S00384.tduout +++|
00392 M00S00385.tduout +++| PROCEDURE write_sub_table_pointers;
00393 M00S00386.tduout +++| outrec.line_type := comment_line;
00394 M00S00387.tduout +++| outrec.comment_text := '';
00395 M00S00388.tduout +++| write_comment;
00396 M00S00389.tduout +++| outrec.comment_text := 'SUB-TABLE POINTERS';
00397 M00S00390.tduout +++| write_comment;
00398 M00S00391.tduout +++| write_comment; { comment_text was automatically blanked}
00399 M00S00392.tduout +++| start_word_output;
00400 M00S00393.tduout +++| FOR subtable_index := 1 TO subtable_count DO
00401 M00S00394.tduout +++| IF bits_left_in_word < 12 THEN
00402 M00S00395.tduout +++| start_word_output;
00403 M00S00396.tduout +++| IFEND;
00404 M00S00397.tduout +++| outrec.line_type := opcode_line;
00405 M00S00398.tduout +++| outrec.opcode := 'VFD';
00406 M00S00399.tduout +++| outrec.parameters := '';
00407 M00S00400.tduout +++| STRINGREP(outrec.parameters, stringrep_len,
00408 M00S00401.tduout +++| '12/',
00409 M00S00402.tduout +++| subtable_list[subtable_index].label:
00410 M00S00403.tduout +++| subtable_list[subtable_index].label_len,
00411 M00S00404.tduout +++| '-',
00412 M00S00405.tduout +++| parm_record.model_name(1,parm_record.model_name_len));
00413 M00S00406.tduout +++| write_opcode_line;
00414 M00S00407.tduout +++| bits_left_in_word := bits_left_in_word - 12;
00415 M00S00408.tduout +++| FOREND;
00416 M00S00409.tduout +++| outrec.line_type := opcode_line;
00417 M00S00410.tduout +++| IF bits_left_in_word > 0 THEN { make explicit filler }
00418 M00S00411.tduout +++| write_vfd(bits_left_in_word, 0, 'RESERVED');
00419 M00S00412.tduout +++| IFEND;
00420 M00S00413.tduout +++| start_word_output;
00421 M00S00414.tduout +++| outrec.line_type := opcode_line;
00422 M00S00415.tduout +++| { write_vfd(target_wordsize, 0, 'RESERVED') }
00423 M00S00416.tduout +++| write_tab_protect_parms;
00424 M00S00417.tduout +++| PROCEND write_sub_table_pointers;
00425 M00S00418.tduout +++| ?? OLDTITLE ??
00426 M00S00419.tduout +++|
00427 M00S00420.tduout +++| ?? NEWTITLE := 'write_parameters' ??
00428 M00S00421.tduout +++| ?? EJECT ??
00429 M00S00422.tduout +++|
00430 M00S00423.tduout +++| PROCEDURE write_parameters;
00431 M00S00424.tduout +++| VAR
00432 M00S00425.tduout +++| parm_ndx: INTEGER;
00433 M00S00426.tduout +++|
00434 M00S00427.tduout +++| outrec.line_type := comment_line;
00435 M00S00428.tduout +++| outrec.comment_text := '';
00436 M00S00429.tduout +++| write_comment;
00437 M00S00430.tduout +++| outrec.comment_text := 'PARAMETERS';
00438 M00S00431.tduout +++| write_comment;
00439 M00S00432.tduout +++| write_comment;
00440 M00S00433.tduout +++| start_word_output;
00441 M00S00434.tduout +++| outrec.line_type := opcode_line;
00442 M00S00435.tduout +++| write_vfd(6, parm_record.cursor_encoding,
00443 M00S00436.tduout +++| 'CURSOR ADDRESSING TYPE');
00444 M00S00437.tduout +++| write_vfd(8, parm_record.cursor_bias, 'CURSOR ADDRESSING BIAS');
00445 M00S00438.tduout +++|
00446 M00S00439.tduout +++| { FOR parm_ndx := 0 TO cursor_behavior_max DO }
00447 M00S00440.tduout +++| FOR parm_ndx := 0 TO cursor_behavior_div DO
00448 M00S00441.tduout +++| write_vfd(4, ORD(parm_record.cursor_behavior[parm_ndx]),
00449 M00S00442.tduout +++| 'CURSOR BEHAVIOR');
00450 M00S00443.tduout +++| FOREND;
00451 M00S00444.tduout +++|
00452 M00S00445.tduout +++| write_vfd(1, ORD(parm_record.cursor_pos_column_flag),
00453 M00S00446.tduout +++| 'COLUMNS BEFORE ROWS FLAG');
00454 M00S00447.tduout +++| FOR parm_ndx := 0 TO 1 DO
00455 M00S00448.tduout +++| write_vfd(3, parm_record.cursor_pos_length[parm_ndx],
00456 M00S00449.tduout +++| 'NUMBER OF DIGITS IN CURSOR POSITION');
00457 M00S00450.tduout +++| FOREND;
00458 M00S00451.tduout +++| write_vfd(bits_left_in_word, 0, 'RESERVED');
00459 M00S00452.tduout +++|
00460 M00S00453.tduout +++| start_word_output;
00461 M00S00454.tduout +++| outrec.line_type := opcode_line;
00462 M00S00455.tduout +++| FOR parm_ndx := 0 TO parm_flag_max DO
00463 M00S00456.tduout +++| write_vfd(1, ORD(parm_record.flag[parm_ndx]), 'FLAG');
00464 M00S00457.tduout +++| FOREND;
00465 M00S00458.tduout +++| write_vfd(3, parm_record.function_key_mark, 'FUNCTION KEY MARK')
00466 M00S00459.tduout +++| PROCEND write_parameters;
00467 M00S00460.tduout +++| ?? OLDTITLE ??
00468 M00S00461.tduout +++|
00469 M00S00462.tduout +++| ?? NEWTITLE := 'write_size_table' ??
00470 M00S00463.tduout +++| ?? EJECT ??
00471 M00S00464.tduout +++|
00472 M00S00465.tduout +++| PROCEDURE write_size_table;
00473 M00S00466.tduout +++| VAR
00474 M00S00467.tduout +++| size_ndx: INTEGER;
00475 M00S00468.tduout +++|
00476 M00S00469.tduout +++| outrec.line_type := comment_line;
00477 M00S00470.tduout +++| outrec.comment_text := '';
00478 M00S00471.tduout +++| write_comment;
00479 M00S00472.tduout +++| outrec.comment_text := 'SCREEN SIZES';
00480 M00S00473.tduout +++| write_comment;
00481 M00S00474.tduout +++| write_comment;
00482 M00S00475.tduout +++| start_word_output;
00483 M00S00476.tduout +++| outrec.line_type := opcode_line;
00484 M00S00477.tduout +++| FOR size_ndx := 0 TO 3 DO
00485 M00S00478.tduout +++| write_vfd(8, parm_record.size[size_ndx].cols, 'X SIZE (COLUMNS)');
00486 M00S00479.tduout +++| write_vfd(7, parm_record.size[size_ndx].rows, 'Y SIZE (ROWS)')
00487 M00S00480.tduout +++| FOREND
00488 M00S00481.tduout +++| PROCEND write_size_table;
00489 M00S00482.tduout +++| ?? OLDTITLE ??
00490 M00S00483.tduout +++|
00491 M00S00484.tduout +++| ?? NEWTITLE := 'write_subtable_start' ??
00492 M00S00485.tduout +++| ?? EJECT ??
00493 M00S00486.tduout +++|
00494 M00S00487.tduout +++| PROCEDURE write_subtable_start;
00495 M00S00488.tduout +++| outrec.line_type := comment_line;
00496 M00S00489.tduout +++| outrec.comment_text := '';
00497 M00S00490.tduout +++| write_comment;
00498 M00S00491.tduout +++| outrec.comment_text := 'START OF SUB-TABLES';
00499 M00S00492.tduout +++| write_comment;
00500 M00S00493.tduout +++| write_comment
00501 M00S00494.tduout +++| PROCEND write_subtable_start;
00502 M00S00495.tduout +++| ?? OLDTITLE ??
00503 M00S00496.tduout +++|
00504 M00S00497.tduout +++| ?? NEWTITLE := 'write_output_table' ??
00505 M00S00498.tduout +++| ?? EJECT ??
00506 M00S00499.tduout +++|
00507 M00S00500.tduout +++| PROCEDURE write_output_table;
00508 M00S00501.tduout +++|
00509 M00S00502.tduout +++| outrec.line_type := comment_line;
00510 M00S00503.tduout +++| outrec.comment_text := '';
00511 M00S00504.tduout +++| write_comment;
00512 M00S00505.tduout +++| outrec.comment_text := 'OUTPUT SUB-TABLE';
00513 M00S00506.tduout +++| write_comment;
00514 M00S00507.tduout +++| outrec.comment_text := ' OFFSETS BY ORDINAL';
00515 M00S00508.tduout +++| write_comment;
00516 M00S00509.tduout +++| write_comment;
00517 M00S00510.tduout +++| start_word_output;
00518 M00S00511.tduout +++| outrec.line_type := opcode_line;
00519 M00S00512.tduout +++| write_ordinals(^dump_output_node);
00520 M00S00513.tduout +++|
00521 M00S00514.tduout +++| outrec.line_type := comment_line;
00522 M00S00515.tduout +++| outrec.comment_text := '';
00523 M00S00516.tduout +++| write_comment;
00524 M00S00517.tduout +++| outrec.comment_text := ' OUTPUT CHARACTER SEQUENCES';
00525 M00S00518.tduout +++| write_comment;
00526 M00S00519.tduout +++| write_comment;
00527 M00S00520.tduout +++| outrec.line_type := opcode_line;
00528 M00S00521.tduout +++| write_char_sequences(^dump_output_node)
00529 M00S00522.tduout +++| PROCEND write_output_table;
00530 M00S00523.tduout +++| ?? OLDTITLE ??
00531 M00S00524.tduout +++|
00532 M00S00525.tduout +++| ?? NEWTITLE := 'write_input_table' ??
00533 M00S00526.tduout +++| ?? EJECT ??
00534 M00S00527.tduout +++|
00535 M00S00528.tduout +++| PROCEDURE write_input_table;
00536 M00S00529.tduout +++| VAR
00537 M00S00530.tduout +++| table_size: INTEGER,
00538 M00S00531.tduout +++| node_returned: BOOLEAN;
00539 M00S00532.tduout +++|
00540 M00S00533.tduout +++| ?? NEWTITLE := 'write_input_item' ??
00541 M00S00534.tduout +++| ?? SKIP := 4 ??
00542 M00S00535.tduout +++|
00543 M00S00536.tduout +++| PROCEDURE write_input_item (in_node: ^input_node);
00544 M00S00537.tduout +++|
00545 M00S00538.tduout +++| ?? NEWTITLE := 'write_char' ??
00546 M00S00539.tduout +++| ?? SKIP := 4 ??
00547 M00S00540.tduout +++|
00548 M00S00541.tduout +++| PROCEDURE write_char(char_value: INTEGER; comment: STRING(*));
00549 M00S00542.tduout +++|
00550 M00S00543.tduout +++| outrec.line_type := opcode_line;
00551 M00S00544.tduout +++| IF bits_left_in_word = target_wordsize THEN { first word only }
00552 M00S00545.tduout +++| write_vfd(4, 0, 'FILLER');
00553 M00S00546.tduout +++| IFEND;
00554 M00S00547.tduout +++| IF bits_left_in_word < target_char_size THEN
00555 M00S00548.tduout +++| start_word_output;
00556 M00S00549.tduout +++| outrec.line_type := opcode_line;
00557 M00S00550.tduout +++| write_vfd(4, 0, 'FILLER');
00558 M00S00551.tduout +++| IFEND;
00559 M00S00552.tduout +++| write_vfd(target_char_size, char_value, comment);
00560 M00S00553.tduout +++| PROCEND write_char;
00561 M00S00554.tduout +++| ?? OLDTITLE ??
00562 M00S00555.tduout +++|
00563 M00S00556.tduout +++| ?? NEWTITLE := 'write_action' ??
00564 M00S00557.tduout +++| ?? SKIP := 4 ??
00565 M00S00558.tduout +++|
00566 M00S00559.tduout +++| PROCEDURE write_action (action: input_action);
00567 M00S00560.tduout +++| VAR
00568 M00S00561.tduout +++| comment: STRING(30),
00569 M00S00562.tduout +++| integer_string: STRING(6),
00570 M00S00563.tduout +++| i_s_length: ost$string_length; { subrange of integer }
00571 M00S00564.tduout +++|
00572 M00S00565.tduout +++| IF action.ordinal = no_ordinal THEN { offset to next item }
00573 M00S00566.tduout +++| comment := '';
00574 M00S00567.tduout +++| utp$convert_integer_to_string(integer_string, i_s_length,
00575 M00S00568.tduout +++| action.next_offset, 10); { offset in string format }
00576 M00S00569.tduout +++| STRINGREP(comment, stringrep_len,
00577 M00S00570.tduout +++| 'OFFSET ': 8, integer_string: i_s_length);
00578 M00S00571.tduout +++| write_char(action.next_offset DIV 128, comment); { high_order}
00579 M00S00572.tduout +++| write_char(action.next_offset MOD 128, ''); { low-order}
00580 M00S00573.tduout +++| ELSE { ordinal }
00581 M00S00574.tduout +++| comment := '';
00582 M00S00575.tduout +++| utp$convert_integer_to_string(integer_string, i_s_length,
00583 M00S00576.tduout +++| action.ordinal, 10); { ordinal in string format }
00584 M00S00577.tduout +++| STRINGREP(comment, stringrep_len,
00585 M00S00578.tduout +++| 'ORDINAL ': 8, integer_string: i_s_length);
00586 M00S00579.tduout +++| write_char((16383-action.ordinal) DIV 128, comment);
00587 M00S00580.tduout +++| write_char((16383-action.ordinal) MOD 128, ''); { low-order }
00588 M00S00581.tduout +++| IFEND;
00589 M00S00582.tduout +++| PROCEND write_action;
00590 M00S00583.tduout +++| ?? OLDTITLE ??
00591 M00S00584.tduout +++|
00592 M00S00585.tduout +++| ?? NEWTITLE := 'write_fail_node' ??
00593 M00S00586.tduout +++| ?? SKIP := 4 ??
00594 M00S00587.tduout +++|
00595 M00S00588.tduout +++| PROCEDURE write_fail_node (in_node: ^input_node);
00596 M00S00589.tduout +++| write_char(0, '***** FAIL *****');
00597 M00S00590.tduout +++| PROCEND write_fail_node;
00598 M00S00591.tduout +++| ?? OLDTITLE ??
00599 M00S00592.tduout +++|
00600 M00S00593.tduout +++| ?? NEWTITLE := 'write_list_node' ??
00601 M00S00594.tduout +++| ?? SKIP := 4 ??
00602 M00S00595.tduout +++|
00603 M00S00596.tduout +++| PROCEDURE write_list_node (in_node: ^input_node);
00604 M00S00597.tduout +++| VAR
00605 M00S00598.tduout +++| char_ndx: INTEGER;
00606 M00S00599.tduout +++|
00607 M00S00600.tduout +++| write_char(1, '***** LIST *****');
00608 M00S00601.tduout +++| write_char(in_node^.list_character_count, 'LIST COUNT');
00609 M00S00602.tduout +++| FOR char_ndx := 1 to in_node^.list_character_count DO
00610 M00S00603.tduout +++| write_char(ORD(in_node^.list_pointer^[char_ndx].character),
00611 M00S00604.tduout +++| '');
00612 M00S00605.tduout +++| write_action(in_node^.list_pointer^[char_ndx].action);
00613 M00S00606.tduout +++| FOREND;
00614 M00S00607.tduout +++| PROCEND write_list_node;
00615 M00S00608.tduout +++| ?? OLDTITLE ??
00616 M00S00609.tduout +++|
00617 M00S00610.tduout +++| ?? NEWTITLE := 'write_range_node' ??
00618 M00S00611.tduout +++| ?? SKIP := 4 ??
00619 M00S00612.tduout +++|
00620 M00S00613.tduout +++| PROCEDURE write_range_node (in_node: ^input_node);
00621 M00S00614.tduout +++| VAR
00622 M00S00615.tduout +++| char_ndx: INTEGER;
00623 M00S00616.tduout +++|
00624 M00S00617.tduout +++| write_char(2, '***** RANGE *****');
00625 M00S00618.tduout +++| write_char(ORD(in_node^.range_lower_bound), 'LOWER BOUND');
00626 M00S00619.tduout +++| write_char(ORD(in_node^.range_upper_bound), 'UPPER BOUND');
00627 M00S00620.tduout +++| FOR char_ndx := ORD(in_node^.range_lower_bound) TO
00628 M00S00621.tduout +++| ORD(in_node^.range_upper_bound) DO
00629 M00S00622.tduout +++| write_action(in_node^.range_pointer^[char_ndx]);
00630 M00S00623.tduout +++| FOREND;
00631 M00S00624.tduout +++| PROCEND write_range_node;
00632 M00S00625.tduout +++| ?? OLDTITLE ??
00633 M00S00626.tduout +++|
00634 M00S00627.tduout +++| ?? NEWTITLE := 'write_sar_node' ??
00635 M00S00628.tduout +++| ?? SKIP := 4 ??
00636 M00S00629.tduout +++|
00637 M00S00630.tduout +++| PROCEDURE write_sar_node (in_node: ^input_node);
00638 M00S00631.tduout +++|
00639 M00S00632.tduout +++| write_char(3, '***** SINGLE-ACTION RANGE *****');
00640 M00S00633.tduout +++| write_char(ORD(in_node^.sar_lower_bound), 'LOWER BOUND');
00641 M00S00634.tduout +++| write_char(ORD(in_node^.sar_upper_bound), 'UPPER BOUND');
00642 M00S00635.tduout +++| write_action(in_node^.sar_action);
00643 M00S00636.tduout +++| PROCEND write_sar_node;
00644 M00S00637.tduout +++| ?? OLDTITLE ??
00645 M00S00638.tduout +++|
00646 M00S00639.tduout +++| ?? EJECT ??
00647 M00S00640.tduout +++|
00648 M00S00641.tduout +++| CASE in_node^.opcode OF
00649 M00S00642.tduout +++| = fail =
00650 M00S00643.tduout +++| write_fail_node(in_node);
00651 M00S00644.tduout +++| = list =
00652 M00S00645.tduout +++| write_list_node(in_node);
00653 M00S00646.tduout +++| = range =
00654 M00S00647.tduout +++| write_range_node(in_node);
00655 M00S00648.tduout +++| = single_action_range =
00656 M00S00649.tduout +++| write_sar_node(in_node);
00657 M00S00650.tduout +++| CASEND;
00658 M00S00651.tduout +++| PROCEND write_input_item;
00659 M00S00652.tduout +++| ?? OLDTITLE ??
00660 M00S00653.tduout +++|
00661 M00S00654.tduout +++| ?? EJECT ??
00662 M00S00655.tduout +++|
00663 M00S00656.tduout +++| outrec.line_type := comment_line;
00664 M00S00657.tduout +++| outrec.comment_text := '';
00665 M00S00658.tduout +++| write_comment;
00666 M00S00659.tduout +++| outrec.comment_text := 'INPUT SUB-TABLE';
00667 M00S00660.tduout +++| write_comment;
00668 M00S00661.tduout +++| write_comment;
00669 M00S00662.tduout +++| start_word_output;
00670 M00S00663.tduout +++| outrec.line_type := opcode_line;
00671 M00S00664.tduout +++| outrec.label := subtable_list[subtable_input].label;
00672 M00S00665.tduout +++| outrec.opcode := 'BSS';
00673 M00S00666.tduout +++| outrec.parameters := '0';
00674 M00S00667.tduout +++| outrec.comment := '';
00675 M00S00668.tduout +++| write_opcode_line;
00676 M00S00669.tduout +++| reset_input_table(table_size);
00677 M00S00670.tduout +++| dump_input_node(^write_input_item); { pass my procedure to dumper }
00678 M00S00671.tduout +++| IF ( bits_left_in_word > 0 ) AND
00679 M00S00672.tduout +++| ( bits_left_in_word < target_wordsize ) THEN
00680 M00S00673.tduout +++| outrec.line_type := opcode_line;
00681 M00S00674.tduout +++| write_vfd(bits_left_in_word, 0, 'FILLER');
00682 M00S00675.tduout +++| IFEND;
00683 M00S00676.tduout +++| PROCEND write_input_table;
00684 M00S00677.tduout +++| ?? OLDTITLE ??
00685 M00S00678.tduout +++|
00686 M00S00679.tduout +++| ?? NEWTITLE := 'write_key_name_table' ??
00687 M00S00680.tduout +++| ?? EJECT ??
00688 M00S00681.tduout +++|
00689 M00S00682.tduout +++| PROCEDURE write_key_name_table;
00690 M00S00683.tduout +++|
00691 M00S00684.tduout +++| outrec.line_type := comment_line;
00692 M00S00685.tduout +++| outrec.comment_text := '';
00693 M00S00686.tduout +++| write_comment;
00694 M00S00687.tduout +++| outrec.comment_text := 'KEY-NAME SUB-TABLE';
00695 M00S00688.tduout +++| write_comment;
00696 M00S00689.tduout +++| outrec.comment_text := ' ORDINALS BY KEY';
00697 M00S00690.tduout +++| write_comment;
00698 M00S00691.tduout +++| write_comment;
00699 M00S00692.tduout +++| start_word_output;
00700 M00S00693.tduout +++| outrec.line_type := opcode_line;
00701 M00S00694.tduout +++| outrec.label := subtable_list[subtable_names].label;
00702 M00S00695.tduout +++| outrec.opcode := 'BSS';
00703 M00S00696.tduout +++| outrec.parameters := '0';
00704 M00S00697.tduout +++| outrec.comment := '';
00705 M00S00698.tduout +++| write_opcode_line;
00706 M00S00699.tduout +++| write_ordinals(^dump_key_name_node);
00707 M00S00700.tduout +++|
00708 M00S00701.tduout +++| outrec.line_type := comment_line;
00709 M00S00702.tduout +++| outrec.comment_text := '';
00710 M00S00703.tduout +++| write_comment;
00711 M00S00704.tduout +++| outrec.comment_text := ' KEY NAMES';
00712 M00S00705.tduout +++| write_comment;
00713 M00S00706.tduout +++| write_comment;
00714 M00S00707.tduout +++| outrec.line_type := opcode_line;
00715 M00S00708.tduout +++| write_char_sequences(^dump_key_name_node)
00716 M00S00709.tduout +++| PROCEND write_key_name_table;
00717 M00S00710.tduout +++| ?? OLDTITLE ??
00718 M00S00711.tduout +++|
00719 M00S00712.tduout +++| ?? NEWTITLE := 'write_initialization_table' ??
00720 M00S00713.tduout +++| ?? EJECT ??
00721 M00S00714.tduout +++|
00722 M00S00715.tduout +++| PROCEDURE write_initialization_table;
00723 M00S00716.tduout +++| outrec.line_type := comment_line;
00724 M00S00717.tduout +++| outrec.comment_text := '';
00725 M00S00718.tduout +++| write_comment;
00726 M00S00719.tduout +++| outrec.comment_text := 'INITIALIZATION SUB-TABLE';
00727 M00S00720.tduout +++| write_comment;
00728 M00S00721.tduout +++| outrec.comment_text := ' LINE/SCREEN ORDINALS';
00729 M00S00722.tduout +++| write_comment;
00730 M00S00723.tduout +++| write_comment;
00731 M00S00724.tduout +++| start_word_output;
00732 M00S00725.tduout +++| outrec.line_type := opcode_line;
00733 M00S00726.tduout +++| outrec.label := subtable_list[subtable_init].label;
00734 M00S00727.tduout +++| outrec.opcode := 'BSS';
00735 M00S00728.tduout +++| outrec.parameters := '0';
00736 M00S00729.tduout +++| outrec.comment := '';
00737 M00S00730.tduout +++| write_opcode_line;
00738 M00S00731.tduout +++| write_ordinals(^dump_reset_sequence);
00739 M00S00732.tduout +++|
00740 M00S00733.tduout +++| outrec.line_type := comment_line;
00741 M00S00734.tduout +++| outrec.comment_text := '';
00742 M00S00735.tduout +++| write_comment;
00743 M00S00736.tduout +++| outrec.comment_text := ' INITIALIZATION SEQUENCES';
00744 M00S00737.tduout +++| write_comment;
00745 M00S00738.tduout +++| write_comment;
00746 M00S00739.tduout +++| outrec.line_type := opcode_line;
00747 M00S00740.tduout +++| write_char_sequences(^dump_reset_sequence)
00748 M00S00741.tduout +++| PROCEND write_initialization_table;
00749 M00S00742.tduout +++| ?? OLDTITLE ??
00750 M00S00743.tduout +++|
00751 M00S00744.tduout +++| ?? NEWTITLE := 'write_appstr_table' ??
00752 M00S00745.tduout +++| ?? EJECT ??
00753 M00S00746.tduout +++|
00754 M00S00747.tduout +++| PROCEDURE write_appstr_table;
00755 M00S00748.tduout +++| VAR
00756 M00S00749.tduout +++| length: INTEGER,
00757 M00S00750.tduout +++| chars: ^STRING(*),
00758 M00S00751.tduout +++| total_sequences,
00759 M00S00752.tduout +++| total_characters: INTEGER,
00760 M00S00753.tduout +++| node_returned: BOOLEAN,
00761 M00S00754.tduout +++| name: STRING(7);
00762 M00S00755.tduout +++|
00763 M00S00756.tduout +++| ?? NEWTITLE := 'write_appstr_names' ??
00764 M00S00757.tduout +++| ?? SKIP := 4 ??
00765 M00S00758.tduout +++|
00766 M00S00759.tduout +++| PROCEDURE write_appstr_names;
00767 M00S00760.tduout +++| VAR
00768 M00S00761.tduout +++| char_ndx: INTEGER,
00769 M00S00762.tduout +++| comment: STRING(30);
00770 M00S00763.tduout +++|
00771 M00S00764.tduout +++| start_word_output;
00772 M00S00765.tduout +++| outrec.line_type := opcode_line;
00773 M00S00766.tduout +++| comment := name(1,7);
00774 M00S00767.tduout +++| FOR char_ndx := 1 TO 7 DO
00775 M00S00768.tduout +++| write_vfd(6,
00776 M00S00769.tduout +++| utv$convert_ascii_to_ascii64[name(char_ndx)], comment);
00777 M00S00770.tduout +++| comment := ''
00778 M00S00771.tduout +++| FOREND;
00779 M00S00772.tduout +++| write_vfd(18, length, '')
00780 M00S00773.tduout +++| PROCEND write_appstr_names;
00781 M00S00774.tduout +++| ?? OLDTITLE ??
00782 M00S00775.tduout +++|
00783 M00S00776.tduout +++| ?? NEWTITLE := 'write_appstr_sequences' ??
00784 M00S00777.tduout +++| ?? EJECT ??
00785 M00S00778.tduout +++|
00786 M00S00779.tduout +++| PROCEDURE write_appstr_sequences;
00787 M00S00780.tduout +++| VAR
00788 M00S00781.tduout +++| char_ndx: INTEGER,
00789 M00S00782.tduout +++| comment: STRING(30);
00790 M00S00783.tduout +++|
00791 M00S00784.tduout +++| outrec.line_type := opcode_line;
00792 M00S00785.tduout +++| FOR char_ndx := 1 TO length DO
00793 M00S00786.tduout +++| IF bits_left_in_word < target_char_size THEN
00794 M00S00787.tduout +++| start_word_output;
00795 M00S00788.tduout +++| outrec.line_type := opcode_line;
00796 M00S00789.tduout +++| write_vfd(4, 0, 'FILLER')
00797 M00S00790.tduout +++| IFEND;
00798 M00S00791.tduout +++| write_vfd(target_char_size,
00799 M00S00792.tduout +++| ORD(chars^(char_ndx)), '');
00800 M00S00793.tduout +++| FOREND;
00801 M00S00794.tduout +++| IF bits_left_in_word > 0 THEN
00802 M00S00795.tduout +++| outrec.line_type := opcode_line;
00803 M00S00796.tduout +++| write_vfd(bits_left_in_word, 0, 'FILLER')
00804 M00S00797.tduout +++| IFEND
00805 M00S00798.tduout +++| PROCEND write_appstr_sequences;
00806 M00S00799.tduout +++| ?? OLDTITLE ??
00807 M00S00800.tduout +++| ?? EJECT ??
00808 M00S00801.tduout +++|
00809 M00S00802.tduout +++| outrec.line_type := comment_line;
00810 M00S00803.tduout +++| outrec.comment_text := '';
00811 M00S00804.tduout +++| write_comment;
00812 M00S00805.tduout +++| outrec.comment_text := 'APPLICATION STRING SUB-TABLE';
00813 M00S00806.tduout +++| write_comment;
00814 M00S00807.tduout +++| write_comment;
00815 M00S00808.tduout +++| start_word_output;
00816 M00S00809.tduout +++| outrec.line_type := opcode_line;
00817 M00S00810.tduout +++| outrec.label := subtable_list[subtable_appstr].label;
00818 M00S00811.tduout +++| outrec.opcode := 'BSS';
00819 M00S00812.tduout +++| outrec.parameters := '0';
00820 M00S00813.tduout +++| outrec.comment := '';
00821 M00S00814.tduout +++| write_opcode_line;
00822 M00S00815.tduout +++|
00823 M00S00816.tduout +++| reset_appstr_table;
00824 M00S00817.tduout +++| REPEAT
00825 M00S00818.tduout +++| dump_appstr_node(name, length, chars,
00826 M00S00819.tduout +++| total_sequences, total_characters, node_returned);
00827 M00S00820.tduout +++| IF node_returned THEN
00828 M00S00821.tduout +++| write_appstr_names;
00829 M00S00822.tduout +++| write_appstr_sequences
00830 M00S00823.tduout +++| IFEND
00831 M00S00824.tduout +++| UNTIL NOT node_returned;
00832 M00S00825.tduout +++| start_word_output;
00833 M00S00826.tduout +++| outrec.line_type := opcode_line;
00834 M00S00827.tduout +++| write_vfd(target_wordsize, 0, 'END OF NAMES')
00835 M00S00828.tduout +++| PROCEND write_appstr_table;
00836 M00S00829.tduout +++| ?? OLDTITLE ??
00837 M00S00830.tduout +++|
00838 M00S00831.tduout +++| ?? NEWTITLE := 'write_trailer' ??
00839 M00S00832.tduout +++| ?? EJECT ??
00840 M00S00833.tduout +++|
00841 M00S00834.tduout +++| PROCEDURE write_trailer;
00842 M00S00835.tduout +++| outrec.line_type := comment_line;
00843 M00S00836.tduout +++| outrec.comment_text := '';
00844 M00S00837.tduout +++| write_comment;
00845 M00S00838.tduout +++| outrec.comment_text := 'END OF TABLE';
00846 M00S00839.tduout +++| write_comment;
00847 M00S00840.tduout +++| write_comment;
00848 M00S00841.tduout +++| outrec.line_type := opcode_line;
00849 M00S00842.tduout +++| outrec.label := subtable_list[subtable_end].label;
00850 M00S00843.tduout +++| outrec.opcode := 'END';
00851 M00S00844.tduout +++| outrec.parameters := '';
00852 M00S00845.tduout +++| write_opcode_line;
00853 M00S00846.tduout +++| PROCEND write_trailer;
00854 M00S00847.tduout +++| ?? OLDTITLE ??
00855 M00S00848.tduout +++| ?? EJECT ??
00856 M00S00849.tduout +++|
00857 M00S00850.tduout +++| open_file(output_file_sel, output_sel, ascii64_sel);
00858 M00S00851.tduout +++| outrec.line_type := whole_line;
00859 M00S00852.tduout +++| outrec.line_buffer := '';
00860 M00S00853.tduout +++|
00861 M00S00854.tduout +++| write_header;
00862 M00S00855.tduout +++| write_sub_table_pointers;
00863 M00S00856.tduout +++| write_parameters;
00864 M00S00857.tduout +++| write_size_table;
00865 M00S00858.tduout +++| write_subtable_start;
00866 M00S00859.tduout +++|
00867 M00S00860.tduout +++| write_output_table;
00868 M00S00861.tduout +++| write_input_table;
00869 M00S00862.tduout +++| write_key_name_table;
00870 M00S00863.tduout +++| write_appstr_table;
00871 M00S00864.tduout +++| write_initialization_table;
00872 M00S00865.tduout +++| write_trailer;
00873 M00S00866.tduout +++|
00874 M00S00867.tduout +++| close_file(output_file_sel)
00875 M00S00868.tduout +++| PROCEND write_tables;
00876 M00S00869.tduout +++| ?? OLDTITLE ??
00877 M00S00870.tduout +++|
00878 M00S00871.tduout +++|MODEND tduout;