GET "LIBHDR" MANIFEST $( mark=2; ISSUE=2; SUBISSUE='A'; // !!!!!!!!!!!!!!!!!!!! NIL=0 MAXCOMMANDS=200 // MAX COMMANDS INCLUDING // MACRO EXPANSION. C.CODE=0; C.LIM=1; C.TEXT=2; C.REPNO=3; C.FLAGS=4; C.SIZE=5 STAR=5000; max_no=MAXINT // max repetition. CLINEMAX=MAXCOMMANDS*C.SIZE; MACROMAX=4; MDEFMAX=80; // NO. OF CHARS/ MACRO DEF FSPECMAX=40 CNESTDEPTH=4 screen_width=80 screen_height = 24 cmd_max = 132 // notation: // _csz = size in cells // _bsz = size in bytes // _gsz = size in grabs // _lsz = size in lines // _psz = size in pages page_size = 256 // // Note: block_gsz*grab_bsz gives the transfer size used to read/write // workfile blocks. block_gsz = 256 grab_bsz = 8 line_bsz = 248 line_csz = line_bsz/bytesperword line_gsz = (line_bsz+2+grab_bsz-1)/grab_bsz block_bsz = block_gsz*grab_bsz block_csz = block_bsz/bytesperword null = 0 file_lsz = maxint m_over = 1 m_input_too_long = 2 case_flip = 0 case_upper = 1 case_lower = 2 CR.CODE = #X8D LF.CODE = #X0A FF.CODE = #X0C HOME.CODE = #X8B FWD.CODE = #X09 DEOL.CODE=#X93 BELL.CODE=#X87 COORD.CODE=#X0F ESC.CODE=#X1B highlight.on.code = #X05 highlight.off.code = #X06 inv.on.code = #X4C inv.off.code = #X4D flash.on.code = #X46 flash.off.code = #X47 half.on.code = #X58 half.off.code = #X59 under.on.code = #X4F under.off.code = #X40 graphic.code=#X95 blob.code=#X7F close_run = 0 exit_run = 1 abort_run = 2 // bit positions for 'flag' word in commands. bit_ignore = 0 bit_invert = 1 bit_tag = 2 // and associated mask values sbit_ignore = 1 << bit_ignore sbit_invert = 1 << bit_invert sbit_tag = 1 << bit_tag // set global bases gvb = global.base gpb = gvb+70 E1_gpb = gpb E2_gpb = E1_gpb+10 E3_gpb = E2_gpb+10 E4_gpb = E3_gpb+15 E5_gpb = E4_gpb+5 E6_gpb = E5_gpb+30 E7_gpb = E6_gpb+10 P_gpb = E7_gpb+10 sfo.base = P_gpb+2 // and the various segments seg.main = 1 seg.rare = 7 $) GLOBAL $( outstream: gvb toptr: gvb+1 WITHSTREAM: gvb+2 CUE: gvb+3 CONDCODE: gvb+4 MONFLAG: gvb+5 PARS.LEVEL: gvb+6 PARS.RETURN: gvb+7 PROMPTING: gvb+8 HORIZ.START: gvb+9 logstream: gvb+10 INPLACE: gvb+11 RETAIN: gvb+12 PROFORMA: gvb+13 cmd_pos: gvb+14 cmd_line: gvb+15 macroptr: gvb+16 mspos: gvb+17 macrostack: gvb+18 macrodef: gvb+19 type: gvb+20 chain: gvb+21 cptr: gvb+22 tptr: gvb+23 num: gvb+24 sym: gvb+25 code: gvb+26 searchlim: gvb+27 text: gvb+28 repno: gvb+29 validlast: gvb+30 work_stream: gvb+31 cmd_type: gvb+32 work_space: gvb+33 w_space: gvb+34 last_line: gvb+35 line: gvb+36 cur_tag: gvb+37 cur_line: gvb+38 fromstream: gvb+39 tostream: gvb+40 flags: gvb+41 stop_level: gvb+42 stop_lab: gvb+43 recover_lab: gvb+44 page_buffs: gvb+45 file_in_stream: gvb+46 file_out_stream:gvb+47 sin: gvb+48 fromptr: gvb+49 ml: gvb+50 cursor: gvb+51 altered: gvb+52 cur_len: gvb+53 monind: gvb+54 printed: gvb+55 sin_stream: gvb+56 so_stream: gvb+57 sys_line: gvb+58 undo_stack: gvb+59 uc_terminal: gvb+60 quote_pos: gvb+61 quote_text: gvb+62 tag_pos: gvb+63 tag_text: gvb+64 // procedures in E1 module PARSELINE: E1_gpb stop_prog: E1_gpb+1 recover: E1_gpb+2 // procedures in E2 start_e2: E2_gpb execute: E2_gpb+1 monitorline: E2_gpb+2 close_down: E2_gpb+3 set_line: E2_gpb+4 shuffle: E2_gpb+5 break_line: E2_gpb+6 write_file: E2_gpb+7 undo: E2_gpb+8 check_for_interrupt: E2_gpb+9 // procedures in E3 module start_e3: E3_gpb fetch_line: E3_gpb+1 make_space: E3_gpb+2 move_windows: E3_gpb+3 store_line: E3_gpb+4 copy_lines: E3_gpb+5 work_stats: E3_gpb+6 fetch_grab: E3_gpb+7 store_grab: E3_gpb+8 fetch_max_grab: E3_gpb+9 restore_max_grab:E3_gpb+10 // procedures in E4 module find_args: E4_gpb open_output: E4_gpb+1 close_streams: E4_gpb+2 set_defaults: E4_gpb+3 // procedures in PROFORMA module init_proforma: P_gpb get_arg: P_gpb+1 // procedures in E5 module get_line: E5_gpb copy_bytes: E5_gpb+1 warn: E5_gpb+2 copy_cells: E5_gpb+3 check_blocks: E5_gpb+4 restore_block: E5_gpb+5 save_block: E5_gpb+6 reset_byte_count: E5_gpb+7 add_byte_count: E5_gpb+8 print_byte_count: E5_gpb+9 readpackedline: E5_gpb+10 copy_and_unpack:E5_gpb+11 copy_and_pack: E5_gpb+12 readunpackedline: E5_gpb+13 filing_error: E5_gpb+14 null_stream: E5_gpb+15 getfilename: E5_gpb+16 WriteUnpackedLine: E5_gpb+17 report: E5_gpb+18 yes_reply: E5_gpb+19 print_fs_err: E5_gpb+20 vdu_stream: E5_gpb+21 sys_return: E5_gpb+22 sys_command: E5_gpb+23 print_filespec: E5_gpb+24 copy_string: E5_gpb+25 enable_interrupt: E5_gpb+26 interrupt_arrived: E5_gpb+27 disable_interrupt: E5_gpb+28 // procedures in E6 module start_e6: E6_gpb connect_sin: E6_gpb+1 switch_sin: E6_gpb+2 fetch_sin_line: E6_gpb+3 connect_so: E6_gpb+4 do_a: E6_gpb+5 do_n: E6_gpb+6 value_n: E6_gpb+7 // procedures in E7 module. undo_changes: E7_gpb reset_trail: E7_gpb+1 log_del: E7_gpb+2 log_cha: E7_gpb+3 log_ins: E7_gpb+4 log_pos: E7_gpb+5 $) EXTERNAL $( // procedures in E1 module PARSELINE: seg.main stop_prog: seg.main recover: seg.main // procedures in E2 start_e2: seg.main execute: seg.main monitorline: seg.main close_down: seg.main set_line: seg.main shuffle: seg.main break_line: seg.main write_file: seg.main undo: seg.main check_for_interrupt: seg.main // procedures in E3 start_e3: seg.main fetch_line: seg.main make_space: seg.main move_windows: seg.main store_line: seg.main copy_lines: seg.main work_stats: seg.main fetch_grab: seg.main store_grab: seg.main fetch_max_grab: seg.main restore_max_grab: seg.main // procedures in E4 find_args: seg.rare open_output: seg.rare close_streams: seg.rare set_defaults: seg.rare // procedures in PROFORMA module init_proforma: seg.rare get_arg: seg.rare // procedures in E5 get_line: seg.main copy_bytes: seg.main warn: seg.main copy_cells: seg.main check_blocks: seg.main restore_block: seg.main save_block: seg.main reset_byte_count: seg.main add_byte_count: seg.main print_byte_count: seg.main readpackedline: seg.main copy_and_unpack:seg.main copy_and_pack: seg.main readunpackedline: seg.main filing_error: seg.main null_stream: seg.main getfilename: seg.main WriteUnpackedLine: seg.main report: seg.main yes_reply: seg.main print_fs_err: seg.main vdu_stream: seg.main sys_return: seg.main sys_command: seg.main print_filespec: seg.main copy_string: seg.main enable_interrupt: seg.main interrupt_arrived: seg.main disable_interrupt: seg.main // procedures in E6 start_e6: seg.rare connect_sin: seg.rare switch_sin: seg.rare fetch_sin_line: seg.rare connect_so: seg.rare do_a: seg.rare do_n: seg.rare value_n: seg.rare // procedures in E7 undo_changes: seg.main reset_trail: seg.main log_del: seg.main log_cha: seg.main log_ins: seg.main log_pos: seg.main // Module PROFORMA init_proforma = SEG.RARE get_arg = SEG.RARE $)