[Date Prev][Date Next][Subject Prev][Subject Next][
Date Index][
Subject Index]
Re: Portable Xy4 made easy
- Subject: Re: Portable Xy4 made easy
- From: Harry Binswanger hb@xxxxxxxx
- Date: Fri, 29 Jun 2012 21:27:21 -0700
Carl,
I like the new approach. Could you explain this code?
[BX ]sa ,PP.PRN[Q2 ]
I don't understand the .
Thanks,
Harry
Making XyWrite 4 "portable" has just become a whole lot easier.
Download PORTABLE.PM here:
http://users.datarealm.com/xywwweb/portable.zip
Unzip it to any directory, RUN PORTABLE.PM (in Xy4-DOS only),
and follow the on-screen instructions. (Instructions are also in
PORTABLE.PM itself.) It's safe and easy, and should work out-of-the-
box for the vast majority of users. U2 is not required (but U2 users
can DECODE the program below).
The goal of portability, of course, is to be able to install XyWrite
on any computer by copying the program files to the directory of
your choice and then launching Editor without further ado. The
glitch in Xy4, often, is the presence of hard-coded path statements
in STARTUP.INT and/or SETTINGS.DFL. If the path location on the new
computer is different, you have to edit these files manually. It's a
pain -- the very opposite of portable.
PORTABLE.PM safely generates customized, path-free replacements for
your STARTUP.INT and SETTINGS.DFL files, based on your personal
settings. These new files are called PORTABL1.INT and PORTABL1.DFL.
Your existing files are NOT modified.
When you're ready to "go portable", you simply copy PORTABL1.INT to
STARTUP.INT and PORTABL1.DFL to SETTINGS.DFL, overwriting the
existing files; then quit and restart XyWrite. PORTABLE.PM even
makes backups of your original STARTUP.INT and SETTINGS.DFL (though
you should make your own backups as well).
I think you'll find that this is an incremental leap toward
portability for virtually all users of Xy4-DOS -- much easier than
the earlier template. Try it, please, and let me know how it works.
XPLeNCODE v2.0
b-gin [UNTITLED]
{<}GLa{>}[cr|lf]PORTABLE.PM for XyWrite 4 - C.L.Distefano rev
{046}6/29/12[cr|lf]Purpose: Create path-free versions of STARTUP.
INT and SETTINGS.DFL, enabling a "portable" XyWrite setup tha
t can be copied to any directory without the need to modify p
ath statements in these two key files.[cr|lf][cr|lf]Usage[cr|
lf]-----[cr|lf]RUN PORTABLE.PM[cr|lf]Two (2) available
windows are required.[cr|lf][cr|lf]How It Works[cr|lf]------
------[cr|lf]PORTABLE.PM safely generates personalized replac
ements for your STARTUP.INT and SETTINGS.DFL files, based on{032}
the settings in effect when you run PORTABLE.PM. These new fi
les are called PORTABL1.INT and PORTABL1.DFL. Your existing f
iles are NOT modified.[cr|lf][cr|lf]Before using the new file
s, be sure to BACK UP your existing STARTUP.INT and SETTINGS.
DFL. (The first time you run PORTABLE.PM, they are automatica
lly backed up to START_BK.INT and SETTI_BK.DFL.) When you're{032}
ready to "go portable", copy PORTABL1.INT to STARTUP.INT and{032}
PORTABL1.DFL to SETTINGS.DFL, overwriting the existing files;
then quit and restart XyWrite. [cr|lf][cr|lf]- - - - -[cr|lf
]{<}LBa{>}[ZT_][BX_]es 1[Q2_][DX_];*;[cr|lf]{<}IF{<}VA$VE{>}<
"V4.02"{>}{<}IF{<}VA$ST{>}{240}"\"&{<}VA$DL{>}{240}"\"{>}{<}I
F{<}VA$WA{>}>0{>};*;[cr|lf]{<}PRWorking{>}{<}SV01,{>}{<}SV02,
{>}{<}SV03,{>}{<}SV04,{>}{<}SV05,{>};*;[cr|lf]{<}SX06,{<}VA$S
T{>}{>}{<}SX07,{<}VA$DL{>}{>}[BX_]gofile {<}PV07{>}[Q2_]{<}IF
@not({<}ER{>}){>}[BX_]ab/nv[Q2_]{<}EI{>};*;[cr|lf]{<}SU01,{<}
SX02,{<}VA$WA{>}{>}[BX_]func #{<}PV02{>}[Q2_]{>}{<}GT01{>}[BX
_]ne/100[Q2_]{<}IF{<}VA$WA{>}>0{>}{<}GT01{>}[BX_]ca/100 {<}PV
07{>}[Q2_][BX_]wait[Q2_][AS_];*;[cr|lf]{<}SU08,{<}SX09,{<}IS1
0{>}{>}{<}SV10,{>}{<}SV11,\{>}{<}LBb{>}{<}XS09,11,12,,13{>}{<
}IF{<}VA|10{>}>0{>}{<}SX10,{<}IS10{>} "\"{>}{<}EI{>}{<}SX10,{
<}IS10{>} {<}IS12{>}{>}{<}IF{<}IS13{>}{240}"\"{>}{<}SX09,{<}I
S13{>}
{>}{<}GLb{>}{<}EI{>}{>};*; {<}SV10,dir{>}{<}SV13,filename{>}[
cr|lf]{<}SX10,{<}VA$ED{>}{>}{<}GT08{>}{<}SX14,{<}IS10{>}{>};*
; {<}SV14,Editor's dir{>}[cr|lf]{<}SX03,{<}VA@14:1{>}{>}[BX_]
{<}PV03{>}:[Q2_][BX_]cd {<}PV14{>}[Q2_];*;[cr|lf]{<}SV01,INT{
{062}}{<}LBc{>}[BX_]gofile {<}PV14{>}\PORTABL1.{<}PV01{>}[Q2_]{<}
IF@not({<}ER{>}){>}[BX_]ab/nv[Q2_]{<}EI{>}{<}IF{<}IS01{>}{240
}"I"{>}{<}SV01,DFL{>}{<}GLc{>}{<}EI{>};*;[cr|lf]{<}SV01,INT{>
}{<}LBd{>}[BX_]ernv {<}PV14{>}\PORTABL1.{<}PV01{>}[Q2_][BX_]w
ait[Q2_]{<}IF{<}IS01{>}{240}"I"{>}{<}SV01,DFL{>}{<}GLd{>}{<}E
I{>};*;[cr|lf];*; One-time backup of STARTUP.INT and SETTINGS
{046}DFL[cr|lf]{<}SV01,START_{>}{<}SV02,INT{>}{<}SX03,{<}IS06{>}{
{062}}{<}LBe{>}[BX_]exist {<}PV01{>}BK.{<}PV02{>}[Q2_]{<}IF{<}ER{
{062}}{>}[BX_]copy {<}PV03{>} {<}PV01{>}BK.{<}PV02{>}[Q2_][BX_]wa
it[Q2_]{<}EI{>}{<}IF{<}IS02{>}{240}"I"{>}{<}SV01,SETTI_{>}{<}
SV02,DFL{>}{<}SX03,{<}IS07{>}{>}{<}GLe{>}{<}EI{>};*;[cr|lf];*
; Create PORTABL1.INT:[cr|lf][GT_]{<}SX01,";*" "; PORTABL1.IN
T (""Pathless"" STARTUP.INT)[cr|lf];*" "; Created by PORTABLE
{046}PM (CLD) " {<}VA$DAd Mmm yyyy{>} " - " {<}VA$TM{>} "[cr|lf]
;*" "; -----[cr|lf];*" "; DO NOT MODIFY THIS SECTION (down to
""^^^^^^^^^^"").[cr|lf];*" "; This code switches to the dire
ctory with EDITOR.EXE[cr|lf];*" "; the directory name (minus{032}
the final ""\"") is saved to Save/Get 01.[cr|lf];*" "; Save/G
et 01 is used below (""[255 065 069]PV01[255 065 070]|{<}IS01
{>}"") to point to that directory[cr|lf];*" "; and its subd
irectories[cr|lf]"[cr|lf]{>}{<}GT01{>}{<}SX01,"{<}SV01,{>}{<}
SX02,{<}VA$ED{>}{>}{<}SV03,\{>}{<}LB {>}{<}XS02,03,04,,05{>}{
<}IF{<}VA|01{>}>0{>}{<}SX01,{<}IS01{>} ""\""{>}{<}EI{>}{<}SX0
1,{<}IS01{>} {<}IS04{>}{>}{<}IF{<}IS05{>}{240}""\""{>}{<}SX02
,{<}IS05{>}{>}
{<}GL {>}{<}EI{>}{<}SX02,{<}VA@01:1{>}{>}[BX_]{<}PV02{>}:[Q2_
][BX_]wait[Q2_][BX_]cd {<}PV01{>}[Q2_][BX_]wait[Q2_];*" ";[cr
|lf];*" "; ^^^^^^^^^^[cr|lf];*" "; [cr|lf];*" "; Logon routin
e[cr|lf]"{>}{<}GT01{>}{<}SX01,{<}VA$LG{>}{>}{<}IF{<}VA|01{>}<
1!{<}VA|01{>}>8{>}{<}SV01,DEFAULT{>}{<}EI{>}{<}SX01,"[BX_]exi
st " {<}IS01{>} ".LOG[Q2_]{<}IF{<}ER{>}{>}{<}SV02,{<}PRLogged
on with username " {<}IS01{>} "{>}{<}EX{>}{>}[BX_]sa ," {
<}IS01{>} ".log[Q2_][BX_]wait[Q2_]{<}EI{>}[BX_]logon " {<}IS0
1{>} "[Q2_]"{>}{<}GT01{>}{<}SX01,";*" ";[cr|lf];*" ";[cr|lf];
*" "; LOAD commands (edit filenames as necessary; omit paths!
)[cr|lf];*" "; Disable inapplicable commands with
"";" "*;""{032}
(no quotes)[cr|lf]"{>}{<}GT01{>};*;[cr|lf]{<}SX10,{<}IS07{>}{
{062}}{<}IF{<}IS10{>}{240}"\"{>}{<}GT08{>}{<}SX01,"[BX_]load " {<
}IS13{>} "[Q2_][BX_]wait[Q2_];" "*; Settings file[cr|lf]"{>}{
<}GT01{>}{<}EI{>};*;[cr|lf]{<}SX10,{<}VA$KB{>}{>}{<}IF{<}IS10
{>}{240}"\"{>}{<}GT08{>}{<}SX01,"[BX_]load " {<}IS13{>} "[Q2_
][BX_]wait[Q2_];" "*; Keyboard file[cr|lf]"{>}{<}GT01{>}{<}EI
{>};*;[cr|lf]{<}SX10,{<}VA$MN{>}{>}{<}IF{<}IS10{>}{240}"\"{>}
{<}GT08{>}{<}SX01,"[BX_]load " {<}IS13{>} "[Q2_][BX_]wait[Q2_
];" "*; MeNu file[cr|lf]"{>}{<}GT01{>}{<}EI{>};*;[cr|lf]{<}SX
10,{<}VA$DG{>}{>}{<}IF{<}IS10{>}{240}"\"{>}{<}GT08{>}{<}SX01,
"[BX_]load " {<}IS13{>} "[Q2_][BX_]wait[Q2_];" "*; DialoG fil
e[cr|lf]"{>}{<}GT01{>}{<}EI{>};*;[cr|lf]{<}SX10,{<}VA$HL{>}{>
}{<}IF{<}IS10{>}{240}"\"{>}{<}GT08{>}{<}SX01,"[BX_]load " {<}
IS13{>} "[Q2_][BX_]wait[Q2_];" "*; HeLp file[cr|lf]"{>}{<}GT0
1{>}{<}EI{>};*;[cr|lf]{<}SX10,{<}VA$HY{>}{>}{<}IF{<}IS10{>}{2
40}"\"{>}{<}GT08{>}{<}SX01,"[BX_]load " {<}IS13{>} "[Q2_][BX_
]wait[Q2_];" "*; Hyphenation dictionary[cr|lf]"{>}{<}GT01{>}{
<}
EI{>};*;[cr|lf]{<}SX10,{<}VA$SP{>}{>}{<}IF{<}IS10{>}{240}"\"{
{062}}{<}GT08{>}{<}SX01,"[BX_]load " {<}IS13{>} "[Q2_][BX_]wait[Q
2_];" "*; Personal spelling file[cr|lf]"{>}{<}GT01{>}{<}EI{>}
;*;[cr|lf]{<}SX10,{<}VA$U2{>}{>}{<}IF{<}IS10{>}{240}"\"{>}{<}
GT08{>}{<}SX01,"[BX_]load " {<}IS13{>} "[Q2_][BX_]wait[Q2_];"
"*; U2 file[cr|lf]"{>}{<}GT01{>}{<}EI{>};*;[cr|lf]{<}SX10,{<
}VA$SG{>}{>}{<}IF{<}IS10{>}{240}"\"{>}{<}GT08{>}{<}SX01,"[BX_
]ldsgt " {<}IS13{>} "[Q2_][BX_]wait[Q2_];" "*; Save/Gets (.SG
T) file[cr|lf]"{>}{<}GT01{>}{<}EI{>};*;[cr|lf]{<}SX01,{<}VA$S
D{>}{>}{<}SX01,";*" ";[cr|lf][BX_]dsort " {<}IS01{>} "[Q2_];"
"*; DIRectory Sort order[cr|lf]"{>}{<}GT01{>}{<}SX01,";*" ";
[cr|lf];*" "; Default paths[cr|lf]"{>}{<}GT01{>}{<}SX01,"[BX_
]d dr={<}PV01{>}\[Q2_];" "*; Directory for TeMP files[cr|lf][
BX_]d AOP={<}PV01{>}\[Q2_];" "*; Autosave path[cr|lf]"{>}{<}G
T01{>};*;[cr|lf]{<}SX01,{<}VAAOT{>}{>}{<}SX01,"[BX_]d AOT=" {
<}IS01{>} "[Q2_];" "*; Autosave time settings[cr|lf]"{>}{<}GT
01{>};*;[cr|lf]{<}SX01,"[BX_]d GP={<}PV01{>}\[Q2_];" "*; Grap
hics path[cr|lf][BX_]d NL={<}PV01{>}\[Q2_];" "*; Network log{032}
files[cr|lf][BX_]exist {<}PV01{>}\BTFONTS\*.*[Q2_]{<}IF@not({
<}ER{>}){>}[BX_]d OL={<}PV01{>}\BTFONTS\[Q2_];" "*; Outline s
creen fonts[cr|lf][BX_]d XY={<}PV01{>}\BTFONTS\[Q2_]{<}EI{>};
" "*; Location of SCRFONTS.BIN[cr|lf][BX_]d ZM=100[Q2_];*" ";
Zoom setting for graphical view[cr|lf][BX_]exist {<}PV01{>}\
FILTERS\*.*[Q2_]{<}IF@not({<}ER{>}){>}[BX_]d WW={<}PV01{>}\FI
LTERS\[Q2_]{<}EI{>};" "*; Conversion filters[cr|lf];" "*;[cr|
lf];" "*; Paths Used by XY4 Menu|DiaLoG files[cr|lf][BX_]d/nv
SG1900={<}PV01{>}\DOCS\[Q2_];" "*;[cr|lf][BX_]d/nv SG1906={<
}PV01{>}\[Q2_];" "*;[cr|lf][BX_]d/nv SG1908={<}PV01{>}\[Q2_];
"\"*;[cr|lf];*" ";[cr|lf];" "*; Create PP.PRN (printer file w
ith PP: t
able)[cr|lf]"{>}{<}GT01{>};*;[cr|lf];*; Construct PP: table f
or PP.PRN[cr|lf][AS_][BX_]se [wC]PP:[Q2_]{<}IF{<}ER{>}{>}{<}
SV01,PP:1[cr|lf]1{tab}STANDARD.PRN{tab}Standard printer file[
cr|lf];[cr|lf]{>}{<}GLg{>}{<}EI{>}{<}SX03,0{>}{<}SV01,{>}[YD_
]{<}LBf{>}[LD_][LB_][DF_][LE_][DF_]{<}SV02{>}[YD_]{<}IF{<}IS0
2{>}{240}"\"{>}{<}IF";"{238}{<}IS02{>}<>0{>}{<}SX10,{<}VA@02{
tab}2{>}{>}{<}GT08{>}{<}SX01,{<}IS01{>} {<}VA@02{tab}1{>} "{t
ab}" {<}IS13{>} "{tab}" {<}VA@02{tab}3{>} "[cr|lf]"{>}{<}SX03
,{<}PV03{>} 1{>}{<}EI{>}{<}GLf{>}{<}EI{>}{<}SX01,"PP:" {<}IS0
3{>} "[cr|lf]" {<}IS01{>} ";[cr|lf]"{>}{<}LBg{>}{<}SX01,"[BX_
]exist PP.PRN[Q2_]{<}IF@not({<}ER{>}){>}[BX_]ernv PP.PRN[Q2_]
[BX_]wait[Q2_]{<}EI{>};*" ";[cr|lf];*" ";[cr|lf];" "*; To add
/change printers, carefully modify the PP: table below[cr|lf]
;" "*; Header format:[cr|lf];" "*; PP:# [where ""#"" is
numbe
r of lines in table][cr|lf];" "*; Line format:[cr|lf];" "*; p
rinting_port[TAB]printer_filename[no path!][TAB]printer_name[
cr|lf];*" ";[cr|lf]{<}SV02,;PR;[cr|lf][cr|lf]" {<}IS01{>} "{>
}[BX_]sa ,PP.PRN[Q2_][BX_]wait[Q2_][BX_]load PP.PRN[Q2_][B
X_]wait[Q2_];" "*;[cr|lf]{<}SX02,{<}VALA{>}{>}[BX_]d la=850[Q
2_][BX_]setp 1[Q2_][BX_]wait[Q2_][BX_]d la={<}PV02{>}[Q2_];*"
";[cr|lf];" "*; [cr|lf]{<}EX{>}[cr|lf]"{>}[AS_]{<}GT01{>};*;
[cr|lf][BX_]st/nv PORTABL1.INT[Q2_]{<}IF{<}ER{>}{>}[TF_]{<}SV
01,Error writing PORTABL1.INT{>}{<}LBh{>}{<}SX01,{<}IS01{>} "
(Relax, no file has been modified)"{>}{<}PR@01{>}{<}EX{>}{<}
EI{>}[BX_]wait[Q2_];*;[cr|lf];*; Create PORTABL1.DFL:[cr|lf][
TF_]{<}LBi{>}[BX_]se :\[Q2_]{<}IF@not({<}ER{>}){>}[BX_]seb {032}
[wC][Q2_][CR_];[BX_]se [wC][Q2_]{<}GLi{>}{<}EI{>};*;[cr|lf][
TF_][BX_]ch [wC]PP: [wC];PP:[Q2_][BX_]wait[Q2_];*;[cr|lf]{<}
GT08{>}[BX_]st/nv {<}PV14{>}\PO
RTABL1.DFL[Q2_]{<}IF{<}ER{>}{>}[TF_]{<}SV01,Error writing POR
TABL1.DFL{>}{<}GLh{>}{<}EI{>}[BX_]wait[Q2_];*;[cr|lf];*; Gene
rate report:[cr|lf]{<}SX14,{<}VA$ET{>}{>}{<}SX14,{<}VA@14:3{>
}{>}{<}SX14,{<}PV14{>}{>}{<}SX01,{<}VA$WA{>}{>}[BX_]func #{<}
PV01{>}[Q2_][BX_]dir PORTABL1.*[Q2_][BX_]wait[Q2_][XP_][TF_][
BX_]ch [w<][wW][w>][Q2_][BX_]wait[Q2_][BX_]se [wC]____[Q2_]
{<}IF@not({<}ER{>}){>}[LB_][DF_][BF_][DF_][DN_]{<}EI{>}[TF_][
DF_][BF_][DF_]{<}SV04{>}[BX_]ab/nv[Q2_]{<}SX01,{<}VA$WA{>}{>}
[BX_]func #{<}PV01{>}[Q2_][BX_]ne/1[Q2_]{<}SX10,{<}IS06{>}{>}
{<}GT08{>}{<}SX02,{<}IS13{>}{>}{<}SX10,{<}IS07{>}{>}{<}GT08{>
}{<}SX03,{<}IS13{>}{>}{<}SX01,"{<}MDUL{>}PORTABLE.PM has crea
ted:{<}MDNM{>}[cr|lf]PORTABL1.{<}MDIT{>}INT{<}MDNM{>} (replac
ement for " {<}IS02{>} ") and[cr|lf]PORTABL1.{<}MDIT{>}DFL{<}
MDNM{>} (replacement for " {<}IS03{>} ")[cr|lf] in " {<}IS10
{>} ", as follows:[cr|lf][cr|lf]" {<}IS04{>} "[cr|lf]{<}MDIT{
{062}}No existing files were modified.{<}MDNM{>}[cr|lf][cr|lf]{<}
MDUL{>}To ""go portable"":{<}MDNM{>}[cr|lf]{<}MDBO{>}Make sur
e that you have good BACKUPS of your original " {<}IS02{>} "{032}
and " {<}IS03{>} "!{<}MDNM{>} (The first time you run PORTABL
E.PM, these files are automatically backed up to START_BK.INT
and SETTI_BK.DFL.)[cr|lf]{<}MDIT{>}Then:{<}MDNM{>}[cr|lf]Cop
y PORTABL1.{<}MDIT{>}INT{<}MDNM{>} to " {<}IS02{>} " (overwri
ting the existing file);[cr|lf]Copy PORTABL1.{<}MDIT{>}DFL{<}
MDNM{>} to " {<}IS03{>} " (overwriting the existing file); an
d[cr|lf]Quit and restart XyWrite.[cr|lf]"{>}{<}GT01{>}[TF_]{<
}SX01,"In all of " {<}IS14{>} " seconds..."{>}{<}PR@01{>}{<}E
X{>}[cr|lf]{<}EI{>}{<}EI{>}{<}PRTwo (2) available windows req
uired{>}{<}EX{>}[cr|lf]{<}EI{>}{<}PRUnexpected: Missing or in
active STARTUP|SETTI
NGS file - No operation{>}{<}EX{>}[cr|lf]{<}EI{>}{<}PRXyWrite
v4 for DOS only{>}{<}EX{>}[cr|lf]
-nd
XPLeNCODE
--
Carl Distefano
cld@xxxxxxxx