[Date Prev][Date Next][Subject Prev][Subject Next][ Date Index][ Subject Index]

Re: Memory problems--Carl?



Okay, great. Will try it. My mega-programs rarely cause crashes. I do get crashes when I run a pgm that I've done something very, very naughty in.

I wonder how difficult it would be for someone who really knows tech stuff to write an add-on to EDITOR.EXE that would expand the 64k limit to, say, 256k? I remember from reading _The Soul of a New Machine_ years ago that there are ways of fudging memory address calls (the story involves overcoming the addressability limit of 16 bit machines).

On Fri, Sep 23, 2011 at 11:56 PM, Carl Distefano mailto:cld@xxxxxxxx wrote:

Reply to note from Harry Binswanger mailto:hb@xxxxxxxx Fri, 23 Sep 2011
13:37:49 -0400

Harry:

No wonder Xy is getting loopy. I assume the whole session crashes
shortly thereafter?

Here's a frame, DUET, that you may want to play with. Never published,
but I use it all the time. What this frame does is to allow you to run
a big PM like yours -- the kind that breaks the memory bank -- in a
separate, throwaway XyWrite session, thus insulating the current
session from the destabilizing effects of running such a big PM. To be
clear: you use DUET to launch the PM in the current session; the PM
actually runs in a separate XyWrite session, which terminates after
the PM is finished. If the PM makes changes to the file in the current
window, those changes are exported back into the original XyWrite
session (see the Notes in the Help frame for wrinkles. Updating
doesn't work, by the way, if the file in the current window is
Untitled; give it a name before attempting to DUET a PM against the
file.)

DECODE both of the blocks below; the first one is the U2 frame (add to
U2 in the usual way); the second is the Help frame (MErge it into
XYWWWEB.INF).  Read the Help frame carefully before attempting to use
DUET. The only other person who's ever tested this is Robert. I'll be
curious to see what your results are.

Note that, for DUET to work, GOXY.EXE must be present in Editor's
directory. You can download it at XyWWWeb:
http://users.datarealm.com/xywwweb/Go.ZIP

XPLeNCODE v2.0
b-gin [UNTITLED]
{{;5duet*}} Run U2_frame|disk_PrograM in separate XyWrite ses
sion [CLD rev.1/11/09][cr|lf]{002}{<}SX01,{<}VA$CL{>}{>}{<}SX
02,@upr({<}VA$FR{>}){>}{<}SX03,{<}IS50{>}{>}{<}SX50,{<}VA$ED{
{062}}{>}[JM_]2.GetPath[Q2_]{<}SX89,{<}IS50{>}{>}{<}SX04,{<}IS50{
{062}}+"\"{>}{<}SX05,{<}IS04{>}+"DUET.OUT"{>}[BX_]exist {<}PV05{>
}[Q2_]{<}IF{<}IS02{>}{240}"/CA"{>}{<}IF@not({<}ER{>}){>}{<}SX
02,{<}VA$WA{>}{>}{<}IF{<}PV02{>}<1{>}{<}PRNo window{>}{<}EX{>
}{<}EI{>}[BX_]func #{<}PV02{>}[Q2_][BX_]ca/100 {<}PV05{>}[Q2_
]{<}EX{>}{<}EI{>}{<}SX03,{<}IS05{>}+" does not exist"{>}{<}PR
@03{>}{<}EX{>}{<}EI{>}{<}IF@not({<}ER{>}){>}[BX_]ernv {<}PV05
{>}[Q2_]{<}EI{>}{<}IF{<}VA|03{>}<1{>}{<}PRDUET[/K|/CA] framen
ame|d:\\path\\program_name[ arg(s)]{>}{<}EX{>}{<}EI{
{062}}{<}SV06,{>}{<}IF{<}IS03{>}{240}" "{>}{<}SV07, {>}{<}XS03,07
,07,,06{>}{<}SX03,{<}IS07{>}{>}{<}EI{>}[JM_]2.MyPID[Q2_]{<}SX
07,"{<}VA="+{<}IS04{>}+"MYPID.DAT,MyhWnd={>}"{>}{<}SX07,{<}PV
07{>}{>}{<}SX08,{<}VA$PA{>}{>}{<}IF{<}VA|08{>}<3{>}{<}SX08,{<
}IS08{>}+"\"{>}{<}EI{>}{<}SX09,{<}VA$DG{>}{>}{<}SX10,{<}VA$U2
{>}{>}{<}SX08,"[BX_]"+{<}VA@08:1{>}+":[Q2_][BX_]cd "+{<}IS08{
{062}}+"[Q2_][BX_]d dr="+{<}VADR{>}+"[Q2_][BX_]d nl="+{<}VANL{>}+
"[Q2_][BX_]d ol="+{<}VAOL{>}+"[Q2_][BX_]lp "+{<}VA$DL{>}+"[Q2
_][BX_]lp "+{<}VA$PR{>}+"[Q2_][BX_]load "+{<}IS09{>}+"+"+{<}I
S10{>}+"[Q2_]"{>}{<}SV09,{>}{<}IF{<}IS02{>}{240}"/K"{>}{<}SX0
9,"[BX_]ldkbd "+{<}VA$KB{>}+"[Q2_]"{>}{<}EI{>}{<}SX08,{<}IS08
{>}+{<}IS09{>}+"[BX_]wait[Q2_]"{>};*;[cr|lf]{<}SV99,DUET_Cust
om_Code{>}[JM_]2.RegData[Q2_]{<}IF{<}VA|99{>}>0{>}{<}SX08,{<}
IS08{>}+{<}IS99{>}{>}{<}EI{>};*;[cr|lf]{<}SX08,{<}IS08{>}+"[D
O_][FF_]{<}PR {>}[BC_]"{>}{<}IF{<}VA$WS{>}==1{>}{<}SX50,{<}CP
{>}{>}{<}SX09,{<}
VA$FP{>}{>}{<}SX10,{<}VA$DT{>}{>}{<}IF{<}PV10{>}<1{>}{<}SX10,
100{>}{<}EI{>}{<}SX08,{<}IS08{>}+"[BX_]es 1[Q2_]{<}SV97,"+{<}
IS09{>}+"{>}[BX_]gofile {<}PV97{>}[Q2_]{<}IF{<}ER{>}{>}[BX_]c
a/"+{<}IS10{>}+" {<}PV97{>}[Q2_]{<}EI{>}[BX_]wait[Q2_]"{>}[DZ
_]{<}IF{<}VA$DE{>}>0{>}{<}SX10,{<}VA$DS{>}{>}{<}SX11,{<}VA$DN
{>}{>}{<}SX08,{<}IS08{>}+"[BX_]jmp "+{<}IS11{>}+"[Q2_][DF_][B
X_]jmp "+{<}IS10{>}+"[Q2_][DF_]"{>}{<}EI{>}{<}SX08,{<}IS08{>}
+"{<}SX50,"+{<}IS50{>}+"{>}[JM_]2.ReJuMP[Q2_][BX_]es[Q2_][DO_
][FF_]"{>}{<}EI{>}{<}IF{<}VA$WS{>}==2{>}{<}SX09,{<}VA$DP{>}{>
}{<}SX08,{<}IS08{>}+"[BX_]dir "+{<}IS09{>}+"[Q2_]"{>}{<}EI{>}
{<}IF"/K"{238}{<}IS02{>}<0{>}{<}IF{<}IS03{>}{240}":"!{<}IS03{
{062}}{240}"\"{>}{<}SX08,{<}IS08{>}+"[BX_]run "+{<}IS03{>}{>}{<}I
F{<}VA|06{>}>0{>}{<}SX08,{<}IS08{>}+" "+{<}IS06{>}{>}{<}EI{>}
{<}EI{>}{<}IF("run "+{<}IS03{>}){238}{<}IS08{>}<0{>}{<}SX08,{
<}IS08{>}+"{<}SV50,"+{<}IS06{>}+"{>}[JM_]2."+{<}IS03{>}{>}{<}
EI{>}{<}SX08,{<}IS08{>}+"[Q2_][BX_]p 4[Q2_][BX_]wait[Q2_]{<}S
X50,{<}CP{>}{>}{<}SX97,""{<}SX50,""+{<}IS50{>}+""{>}[JM_]2.Re
JuMP[Q2_]""{>}{<}IF{<}VA$FP{>}{240}(""\BE\""+{<}VA$FI{>}){>}{
<}SV07,Q{>}{<}SV86,{>}{<}SX87,{<}IS50{>}{>}{<}SV89,"+{<}IS89{
{062}}+"{>}{<}SV90,P{>}[JM_]2.BEXC[Q2_]{<}SX97,""{<}SV07,Q{>}{<}S
V86,{>}{<}SV87,""+{<}IS50{>}+""{>}{<}SV89,""+{<}IS89{>}+""{>}
{<}SV90,{>}[JM_]2.BEXC[Q2_]""{>}{<}EI{>}{<}SX97,{<}IS97{>}+""
{<}SX98,{<}VA$DT{>}{>}{<}IF{<}PV98{>}<1{>}{<}SX98,100{>}{<}EI
{>}{<}SV99,"+{<}IS05{>}+"{>}[BX_]exist {<}PV99{>}[Q2_]{<}IF@n
ot({<}ER{>}){>}[BX_]es 1[Q2_][BX_]gofile {<}PV99{>}[Q2_]{<}IF
@not({<}ER{>}){>}[JM_]2.reca/{<}PV98{>}[Q2_]{<}LBb{>}[JM_]2.R
eJuMP[Q2_]{<}EX{>}{<}EI{>}[BX_]ca/{<}PV98{>}
 {<}PV99{>}[Q2_]{<}GLb{>}{<}EI{>}""{>}[BX_]sa %97,"+{<}IS04{>
}+"http://DUET.PM[Q2_][BX_]wait[Q2_][GT_]{<}IF{<}VA$MO{>}>0{>}[BX_]s
a/nv "+{<}IS05{>}+"[Q2_][BX_]wait[Q2_][BX_]ab/nv[Q2_]{<}EI{>}
[BX_]quit/nv[Q2_]"{>}{<}SX05," /KEY(F5[run "+{<}IS04{>}+"DUET
{046}PM]ETWT{;2000}F5["+{<}IS01{>}+"])"{>}{<}LBa{>}[BX_]sa %08,{<
}PV04{>}http://DUET.INT[Q2_][BX_]wait[Q2_]{<}SX09,{<}VA$SW{>}{>}{<}S
X10,{<}VA$SL{>}{>}{<}SX08,"@echo off[cr|lf]mode con: cols="+{
<}IS09{>}+" lines="+{<}IS10{>}+"[cr|lf]"+{<}IS04{>}+"editor.e
xe ,"+{<}IS04{>}+"http://DUET.INT[cr|lf]GoXy.exe W"+{<}IS07{>}+{<}IS
05{>}+"[cr|lf]::del "+{<}IS04{>}+"http://DUET.INT[cr|lf]::del "+{<}I
S04{>}+"http://DUET.PM[cr|lf]del "+{<}IS04{>}+"DUET.BAT&exit"{>}[BX_
]sa %08,{<}PV04{>}DUET.BAT[Q2_][BX_]wait[Q2_][BX_]dos/nv/z /c
 cmd.exe /c start /max {<}PV04{>}DUET.BAT[Q2_]{<}EX{>}{<}EI{>
}{<}IF{<}IS03{>}{240}":"!{<}IS03{>}{240}"\"{>}{<}SX03,"run "+
{<}IS03{>}{>}{<}EI{>}{<}SX08,{<}IS08{>}+"[BC_]"+{<}IS03{>}{>}
{<}IF{<}VA|06{>}>0{>}{<}SX08,{<}IS08{>}+" "+{<}IS06{>}{>}{<}E
I{>}{<}SX08,{<}IS08{>}+"{<}PRHit Helpkey|XC to launch{>}"{>}{
<}SV05,{>}{<}GLa{>}{002}[cr|lf][cr|lf]
-nd
XPLeNCODE

Here's the Help frame (for XYWWWEB.INF).

XPLeNCODE v2.0
b-gin [UNTITLED]
{duet, duet/ca, duet/k, duet*}[cr|lf][cr|lf]DUET: Run U2_fram
e|disk_PrograM in separate XyWrite session[cr|lf]C.L.Distefan
o rev. 1/11/09[cr|lf]For XyWrite 4 running under Windows (exc
ept Win9x)[cr|lf][cr|lf]{<}MDUL{>}Purpose{<}MDNM{>}[cr|lf]Big
 XPL routines can destabilize XyWrite by pushing its Save/Get
 memory capacity to the limit. DUET allows you to run these r
outines (U2 frame or RUN-style PM) -- in fact, any XPL routin
e -- in a separate, throwaway XyWrite session by issuing a co
mmand in the main session. The main session is updated to ref
lect any changes to the current file as a result of running t
he program -- as if you launched the routine in the main sess
ion itself.[cr|lf][cr|lf]{<}MDUL{>}Usage{<}MDNM{>}[cr|lf]Run{032}
U2 frame:[cr|lf]  DUET[/K] framename[ arg(s)][cr|lf][cr|lf]Ru
n disk-PM[cr|lf]  DUET[/K] d:\path\\program_name[ arg(s)] pkey>[cr|lf][cr|lf]Notes:[cr|lf]- Cursor position (CP) of the
 file in the current window is updated in the main session if
 CP changes after the remotely-executed routine has finished[
cr|lf]- When the launched routine makes changes to the file i
n the current window but does not SAve those changes, the cha
nges are displayed in a {<}MDIT{>}separate file{<}MDNM{>}, DU
ET.OUT (located in Editor's directory), in the main session.{032}
The current file remains unchanged in the alternate window (f
unc AS). DUET.OUT may be viewed at any time, by commmanding[c
r|lf]  DUET/CA [cr|lf]- Changes to the current file{032}
that are SAved in the second session are NOT automatically up
dated in the main session. Issue RECAll in the main{032}
session to update the file view.[cr|lf]- By default, the seco
nd session closes after the program executes. To keep the sec
ond session open, use framename DUET/K.[cr|lf][cr|lf]Note: Re
quires {<}MDSO{>}{<}LBLink{<}SV50,http://users.datarealm.com/Go.ZIP%7B}[JM_
]2.gethttp[Q2_]{>}GoXy.EXE{<}MDNM{>} in DOS Path[cr|lf][cr|lf
]{<}FC{>}[cr|lf]For use by RENUMBER.PM:[cr|lf]Renumber DUET i
n PACK mode[cr|lf]Defa
ult S/G range = 01-11; 50; 86-87; 89-90; 97-99[cr|lf]OPTIONs{032}
(2):[cr|lf]FREEZE 50; 86-87; 89-90; 97-99[cr|lf]LEFT$ (1):  %
[cr|lf]Do NOT Renumber to Range 86-99[cr|lf]{<}US0{>}[cr|lf]-
{tab}-{tab}-{tab}-{tab}-{tab}-{tab}-{tab}-{tab}-{tab}-[cr|lf]
{<}FL{>}[cr|lf]
-nd
XPLeNCODE

Have fun!

--
Carl Distefano
mailto:cld@xxxxxxxx