Reply to note from wbass@xxxxxxxx Sun, 25 Jan 2009 22:30:53 - 0700 (MST) Here are revised Xy4 helper frames, for use with the new interim release of XYENC|XYDEC v0.95. Main differences from before: Frame XYENC now accepts any valid XYENC.COM argument. If no line width is specified, the frame supplies a width of 65. (If you don't want newlines, it's a simple CHange command in XyWrite.) Frame XYENC does not zap the "~Z" EOF code from encoded matter if the C parameter is supplied. Upon decoding, the checksum will fail if the EOF isn't there. The EOF is still zapped, though, if the C param is omitted. These frames implement the embedded IV "ploy" that I described in my previous message. '%--_XYENCode_start-- ~~ ~ ~ '^'^For_XYWWWEB.INF'.'^'^{xyenc,xydec,xyrun, xyfmt,xytog,ifei2}'^{xyencl,xyench,xyenclh}'^{xyenc50,xydec50, xyrun50}'^'^~ XYENCode_Helper_Frames_for_XyWrite_IV~ _--_C.L.Distefano_rev._1/26/09'^Encode,_Decode,_Format_and_ Execute_XPL_using_Wally_Bass'`s_Amazing_XYENCode_and_XYDECode_ Programs'^'^Wally_Bass'`s_XYENCode_utility_(XYENC.COM)_transla tes_XPL_programs_into_pure_Ascii,_for_viewing_in_any_text_edit or_or_for_transmission_by_e-mail._Its_companion,_XYDECode_(XYD EC.COM),_returns_an_encoded_program_to_the_original_XPL._White _space_and_XyWrite_formatting_can_be_added_to_XYENCoded_progra ms_to_create_a_structured_listing_that_makes_XPL_easier_to_rea d_and_debug_--_all_without_affecting_decoding._Because_they'`r e_blazingly_fast,_these_assembly_language_utilities_can_be_tig htly_integrated_with_XyWrite'`s_command_line_(CMline),_as_exem plified_by_the_routines_described_below.'^'^~ Required_E xternal_Programs~ '^Download_Wally_Bass'`s_XYENCode_and_ XYDECode_package_here'.'^~I~ ~ 'JM2.ViewURL'Q2~>http'.//basspad.com/xywrite /~ '^As_of_this_writing,_the_current_version_was_v0.94_( xyenc094.zip)',_download_the_latest_available_version.'^Situat e_XYENC.COM_and_XYDEC.COM_in_the_directory_that_contains_~ '^~ '^~ CMline_Usage~ _(all_comman ds_launched_with_ )'^--------------------------------- ------------------'^XYENC______XYENCode_current_file_or_DeFine d_block'^XYENC/_____Same_as_XYENC,_except_omit_'`'/--'-XYENCod e'-start_and____'`'/--'-XYENCode'-end_delimiters'^XYDEC______X YDECode_current_file,_DeFined_block_or_code_bounded_by_'`'/--'- XYENCode'-start_and_'`'/--'-XYENCode'-end_delimiters'^XYFMT___ _2-Way_Toggle_XPL|Formatted_XYENCode_(entire_file_only)'^XYFMT 2___2-Way_Toggle_to_add|remove_(non-decodable)_embedded_IV_com mands_to|from_formatted_code_listing_(not_usually_needed_becau se_called_by_frame_XYFMT)'^XYTOG____3-Way_Toggle_XPL|Raw_XYENC ode|Formatted_XYENCode_(entire_file_only)'^XYRUN____Run_(execu te)_XYENCoded_file_or_DeFined_block'^IFEI2____Test_XPL_code_fo r_balanced_IF_and_EndIf_statements,_with_option_to_display_str uctured_XYENCoded_listing_(entire_file_only)'^'^Note_1'._Frame names_XYENC_and_XYENC/_accept_valid_XYENC.COM_arguments.'^~ Examples'.'^XYENC_45_C___Specify_45-char_line_width_ and_perform_checksum_after_encoding)'^XYENC_L_____Bypass_encod ing_of_low-order_Ascii_characters'^XYENC_H_____Bypass_encoding _of_high-order_Ascii_characters'^XYENC_B_____Bypass_encoding_o f_both_low-and_high-order_Ascii_characters'^~ '^Note_2'._I f_no_line_width_is_specified,_frame_XYENC*_supplies_a_width_of _65.'^'^Any_of_the_CMline_routines_above_can_be_called_as_a_ch ild_process_within_an_XPL_program._For_example'.'^'YD'DP'JM2.x ydec'Q2',*',_XYDECode_paragraph_under_cursor'^'YD'DL'≪SV50,'≫ 'JM2.xyenc/'Q2',*',_XYENCode_line_under_cursor'^Note_that_on_a _call_to_XYENC,_S/G_50_must_either_be_empty_or_contain_a_valid _XYENC.COM_argument'|'^See_also_"XPL_Usage",_below.'^'^~ XPL_Usage~ '^---------'^~ XYENC50_and_XYDEC50'._XY ENCode_or_XYDECode_the_string_in_Save/Get_50~ '^Examples '.'^'≪SV50,'BC'≫'JM2.xyenc50'Q2',*',_S/G_50_has_"'`BC"'^'≪S V50,'`BC'≫'JM2.xydec50'Q2',*',_S/G_50_has_"'BC"'^'^~ XY RUN50'._RUN_XYENCoded_XPL_in_Save/Get_50~ '^Example'.'^'≪ SV50,'`BCHello,'-World'≫'JM2.xyrun50'Q2',*','^(Decodes_"'`BCH ello,'-World"_to_"'BCHello,_World",_then_executes_it)'^'^~ XYRUN50'._CMline_Programming~ '^XYRUN50_can_also_exec ute_XYENCoded_XPL_from_the_CMline._This_is_useful_for_commands _that_include_hard-to-handle_characters.'^Example'.'^SEarch_fo r_1-byte_Ascii-8_(impossible_to_put_on_the_CMline_in_1-byte_fo rm'|)'.'^XYRUN50_'`BXse'-|:'?H|'`Q2 '^'^~ '^For_us e_by_RENUMBER.PM'.'^Renumber_all_XYENCode_helper_frames_in_PAC K_mode,'^with_OPTIONs_listed_below'.'^'^XYENC*,XYDEC'^Default_ S/G_range_=_01-07',_50'^FREEZE_50'^'^XYFMT'^Default_S/G_range_ =_01-08',_49-50'^FREEZE_49-50'^'^XYTOG'^No_S/Gs_used'^'^XYRUN'^ Default_S/G_range_=_01-04',_50'^FREEZE_50'^'^XYENC50,XYDEC50,X YRUN50'^Default_S/G_range_=_01-04',_50'^FREEZE_50'^LEFT$(1)'._ _'/'^'^IFEI2'^Default_S/G_range_=_01-05',_50',_96'^FREEZE_50_9 6'^LEFT$_(1)'.__RK'.'^~ '^-~I-~I-~I-~I-~I-~I-~I-~I-~I-'^~< IP~>'^For_XYWWWEB.U2'.'^'^{{5xyenc50,xydec50,xyrun50}}_Encode| Decode|RUN_XYENCoded_XPL_contained_in_S/G_50_[CLD_1/25/09]'^~B ~ <1~>~ ~ ~ ~>~ )~>~ ~>'JM2.GetPath'Q2~ +"\"~> ~ +~ +".IN"~>'BXsa_'/01,~ 'Q2'BXwt'Q2 ~ +~ +".OUT"~>'BXernv_~ 'Q2'BXwt'Q2~< SV04,DEC~>~ ~="EN"~>~ ~ 'BXdos/nv/x/z_ /c_~ XY~ .COM_._~ <~ 'Q2~ ~ 'BXexist_~ 'Q2~ )~>~ ~ 'BXp'Q2 ~ 'BXernv_~ 'Q2'BXwt'Q2~ <0~>~ ~>'JM2.SV50'Q2'BXernv_~ 'Q2'BXwt'Q2~ ~= "ENC"~>~ +"~N("~>~ ~ ~ ~ ~ 'FF'BXrun_~ 'Q2~B'^'^{{5xyenc*,x ydec}}_XYENCode|XYDECode_(DF_block_or_entire_file)_[CLD_rev.1/ 26/09]'^~B~ ==1~>'BXes_1'Q2'DX~ ~ )~>~ ~ ~="/"~>~ ~ ~>~ ~ ~ ~="ENC"~>~ )~>~ ~ ~ <1~> ~ +"_65"~>~ ~ ~ 'DZ~ <1~>'YD~ ~ ~ ~="DEC"~>'XP'BXch/1__;~ )~>'JM2.xy fmt2'Q2~ 'LB'BXse__~ start--'Q2~ )~>'LB ~ ~ '-'-end--;~['Q2~>~ ~ ~ 'DF~ 'DF~ ~ ~>'JM2.GetPath'Q2~< SX07,~ +"\"+~ +"."~>'DE'BXsad/nv_~ in'Q2~ ~>~ ~ ~ 'BXwt'Q2'DN'BXe rnv_~ out'Q2'BXwt'Q2'BXdos/nv/x/z_/c_~ com_~ <0~>._~ out<~ in~ ~ ~ in_ ~ out~ _~ 'Q2'BXwt'Q2~ ~ 'BXe xist_~ out'Q2~ )~>~ ~ 'BXp'Q2~ 'GT'DO'FF'DX~ ~="ENC"&~ <1~>~ +"start--'^'^"+~ +"'-'-end--'^"~>~ ~ 'LU'LU ~ ~ ~>'BXme_~ out'Q2'BXwt'Q2'BXernv_~ in'Q2'BXwt'Q2'BXernv_~ out'Q2'BXwt'Q2~ )~="ENC"&"C"~{~ <0~>~ ~ <> 8~>'TG~ ~ ~ ~>'BXseba__'?Z'Q2~ )&~ ==~ -2~>'RC'RC~ ~ ~ ~ ~>'JM2.ReJuMP'Q2'DO'FF~ ~ ~ ~ ~B'^'^{{5xyenc*,xydec}}_XYENCode|XYDECode_(DF_block_or_enti re_file)_[CLD_rev.1/26/09]'^~B~ ==1~>'BXes_1'Q2'DX~< PRWorking...~>~ )~>~ ~ ~=" /"~>~ ~ ~>~ ~ ~ ~= "ENC"~>~ )~>~ <1~>~ ~ ~ ~ 'DZ~ <1~>'YD~ ~~ ~="DEC"~>'XP'BXch/1__;~ )~>'JM2.xyfmt2'Q2~ 'LB'BXse__~ start--'Q2~
)~>'LB~ ~ '-'-end--;~['Q2~>~ ~ ~ 'DF~ 'DF~ ~ ~>'JM2.GetPath'Q2~ +"\"+~ +"."~>'DE'BXsad/nv_~ in'Q2~ ~>~ ~ ~ 'BXwt'Q2'DN'BXernv_~ out'Q2'BXwt'Q2 'BXdos/nv/x/z_/c_~ com_~ <0~>._~ ou t<~ in~ ~ ~ in_~ out~ _~ 'Q2'BXwt'Q2~ ~ 'BXexist_~ out'Q2~ )~>~ ~ 'BXp'Q2~ 'GT'DO'FF'DX~ ~= "ENC"&~ <1~>~ +"start--'^'^"+~ +"'-'- end--'^"~>~ ~ 'LU'LU~ ~ ~>'BXme_~< PV06~>out'Q2'BXwt'Q2'BXernv_~ in'Q2'BXwt'Q2'BXernv_~ out'Q2'BXwt'Q2~ )~="ENC"&"C"~{~ <1~>~< SV01,~>~ <>8~>'TG~ ~ ~ ~>'BXseba__'?Z'Q2~ )&~ ==~ -2~> 'RC'RC~ ~ ~ ~ ~>'JM2.ReJuMP'Q2'DO'FF ~ ~ ~ ~ ~B'^'^{{5xyrun}}_Run_XYENCo ded_XPL_(file_or_DF_block)_[CLD_1/26/09]'^~B'BXes_1'Q2'DX'DZ~< IF~ <0~>~ ~ ~ ~>~ ~>'JM2.GetPath'Q2~ +"\"~>~ +"XYRUN.I N"~>~ +"XYRUN.PM"~>~ <1~>~ <1~>~ ~>~ ~ ~ ~>~ ~