Files
2025-10-14 09:52:32 +09:00

2954 lines
145 KiB
Plaintext

;@Extension.Container.Version.1
;-- DO NOT CHANGE THE LINE ABOVE --
IF (VERSION.BUILD.BASE()<138311.)
(
PRINTF %ERROR "%s: Software too old, please contact support@lauterbach.com." "LynxOS"
ENDDO
)
PMACRO.EXPLICIT
PRIVATE &sParamline &sPpf &sCmd &sParameters &sAccess &sAccessSpaces &sAccessMachine &sOptionAccess &sOptionAccessMisc &sName &sMachine &sArguments &nVariant
PRIVATE &bTaskConfig &bExtLoad &bCleanup
ENTRY &sCmd %LINE &sParamline
&sParameters=STRing.SCANAndExtract("&sParamline","PARAMETERS=","")
&sAccess=STRing.SCANAndExtract("&sParamline","ACCESS=","")
&sAccessSpaces=STRing.SCANAndExtract("&sParamline","ACCESSSPACES=","")
&sAccessMachine=STRing.SCANAndExtract("&sParamline","ACCESSMACHINE=","")
&sName=STRing.SCANAndExtract("&sParamline","NAME=","")
&sMachine=STRing.SCANAndExtract("&sParamline","MACHINE=","")
&sArguments=STRing.SCANAndExtract("&sParamline","ARGUMENTS=","")
&sParameters=STRing.Replace("&sParameters","""","",0.)
IF ("&sArguments"!="")
&sArguments=&sArguments
IF ("&sAccess"!="")
&sOptionAccess="/ACCESS &sAccess"
IF ("&sAccessSpaces"!="")
&sOptionAccessMisc="/ACCESSSPACES &sAccessSpaces"
IF ("&sAccessMachine"!="")
&sOptionAccessMisc="&(sOptionAccessMisc) /ACCESSMACHINE &sAccessMachine"
&sName=STRing.Replace("&sName","""","",0.)
&bTaskConfig=STRing.SCAN("task.config,ext.config",STRing.LoWeR("&sCmd"),0.)>=0.
&bExtLoad=STRing.SCAN("ext.load",STRing.LoWeR("&sCmd"),0.)>=0.
&bCleanup=STRing.SCAN("task.res,ext.res,ext.delete",STRing.LoWeR("&sCmd"),0.)>=0.
&sPpf=OS.PresentPracticeFile()
IF (&bTaskConfig||&bExtLoad)
(
GOSUB execute_container_selection "&sParameters" "&sAccess" "&sMachine" "&sArguments"
RETURNVALUES &nVariant
IF ("&nVariant"!="32.")&&("&nVariant"!="64.")
(
IF CPUIS64BIT()
&nVariant="64."
ELSE
&nVariant="32."
)
IF STRing.ComPare("&sArguments","*32BIT*")
&nVariant="32."
ELSE IF STRing.ComPare("&sArguments","*64BIT*")
&nVariant="64."
)
IF (&bTaskConfig)
(
PRIVATE &sMachineName
&sMachineName="LynxOS"
TASK.RESet
IF (&nVariant==32.)
(
GOSUB extension_32bit "&sParameters" "&sOptionAccess"
IF !STRing.Compare("&sArguments","*MENU=NONE*")
GOSUB menu_32bit "&sMachineName" ""
GOSUB autoload_32bit ""
)
ELSE IF (&nVariant==64.)
(
GOSUB extension_64bit "&sParameters" "&sOptionAccess"
IF !STRing.Compare("&sArguments","*MENU=NONE*")
GOSUB menu_64bit "&sMachineName" ""
GOSUB autoload_64bit ""
)
)
ELSE IF (&bExtLoad)
(
PRIVATE &sMachineName &sInfix &sOptionName &sOptionMachine
&sInfix=""
&sMachineName="LynxOS"
IF ("&sName"!="")
(
&sInfix=STRing.UPpeR("&(sName).")
&sMachineName="&(sName)"
&sOptionName="/NAME &sMachineName"
)
ELSE IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES)
(
IF SYStem.Option.MACHINESPACES()
&sInfix=TASK.TRANSPOSE.INFIX(OS.FILE.BASENAME("&sPpf",".**"))+"."
)
IF ("&sMachine"!="")
(
&sOptionMachine="/MACHINE &sMachine"
)
IF (&nVariant==32.)
(
GOSUB extension_32bit "&sParameters" "&sOptionAccess &sOptionAccessMisc &sOptionName &sOptionMachine"
IF !STRing.Compare("&sArguments","*MENU=NONE*")
GOSUB menu_32bit "&sMachineName" "&sInfix"
GOSUB autoload_32bit "&sOptionMachine"
)
ELSE IF (&nVariant==64.)
(
GOSUB extension_64bit "&sParameters" "&sOptionAccess &sOptionAccessMisc &sOptionName &sOptionMachine"
IF !STRing.Compare("&sArguments","*MENU=NONE*")
GOSUB menu_64bit "&sMachineName" "&sInfix"
GOSUB autoload_64bit "&sOptionMachine"
)
)
ELSE IF (&bCleanup)
(
PRIVATE &sMachineName &sOptionMachine
&sMachineName="LynxOS"
IF ("&sName"!="")
(
&sMachineName="&(sName)"
)
IF ("&sMachine"!="")
(
&sOptionMachine="/MACHINE &sMachine"
)
IF STRing.SCAN(HELP.FILTER(),"rtoslynx",0.)>=0.
HELP.FILTER.Delete rtoslynx
GOSUB menu_delete "&sMachineName"
GOSUB autoload_delete "&sOptionMachine"
)
ENDDO
extension_32bit: ; (options)
(
PARAMETERS &sParameters &sOptions
EXTension.LOAD &sParameters &sOptions
(
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
eDY0Yml0LTcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH
Q0MgOS41LjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAB+gAAAAGAAAADQAAAE4AACfSAAAH6AAAAAYAAAAAAAAAAAAAAAAAAAAA
AAAAAAABPTZMeW54T1MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAATWFnaWNUb0lkOiBtYWdpYz0lOHgsIGlkPSVkLgAA
AABBbHBoYSBCcmVha3BvaW50cyBzZXQgb24gJWQgdGFzayBzdGF0ZSB3b3JkcwAAAAAtLS0gVGhy
ZWFkIGlkID0gJWQuLCBuYW1lID0gAAAAAGN1cnJ0cHRyAAAAAGNwdV9kYXRhAAAAAEdldE1hZ2lj
OiBtYWdpY2FkZHI9JTh4AHBhcmFtZXRlciAxOiAweCU4eCA9ICVzAG1hZ2ljAAAAbWFnaWNzaXpl
AAAAdW5rbm93biB0b3BpYwAAAGx5bnhfcmVsZWFzZQAAAABjdXJycHB0cgAAAABwcm9jdGFiAHN5
c3RlbV9ucHJvYwAAAABucHJvYwAAAHN0X3RhYmxlAAAAAG5zdGFza3MAbWF4X251bV92bXMAcGFn
ZV90YWJsZXMAX19wYWdlX3RhYmxlcwAAAHN0cnVjdCBwZW50cnkAAAAucHN0YXRlAC5qb2IAAAAA
LmkAAC5wbmFtZQAALnBpZAAAAAAucGdyb3VwAC5wcGlkAAAAc3RydWN0IHN0X2VudHJ5AC50c3Rh
dGUALnRpZAAAAAAudG5hbWUAAC5wcHJpbwAALnN0YWNrcAAuc2VtAAAAAC5zdGFjawAALnN0YWNr
bGVuAAAALnNpZ25hbHMAAAAALnNpZ25tYXNrAAAALnByb2Nlc3MAAAAALnZtX293bmVyAAAAZHJp
dmVycwBzdHJ1Y3QgZHJpdmVyX2VudHJ5AC51c2Vjb3VudAAAAC5kZXZfdHlwZQAAAC5uYW1lAAAA
Lm9wZW4AAAAuY2xvc2UAAC5yZWFkAAAALndyaXRlAAAuc2VsZWN0AC5pb2N0bAAALmluc3RhbGwA
AAAALnVuaW5zdGFsbAAALm0uc3RhcnQAAAAALm0uc2l6ZQAubS50ZXh0AC50ZXh0AAAALm0uZGF0
YQAuZGF0YQAAAC5tLmJzcwAALmJzcwAAAABwYXJhbWV0ZXJzOiAweCU4eCwgMHglOHgAAAAAdmVy
c2lvbgBTb3JyeTogQ291bGRuJ3QgZ2V0IHN5bWJvbCBhZGRyZXNzZXMAAAAAX19FTVhYWF9BVAAA
X19FTVhYWF9BUwAAX19FTVhYWF9BTAAAVEFTSy5MT0cyUEhZUwAAAF9fRU1MWU5YX0ZVTkMAAABU
QVNLLkxZTlhPUwBUQVNLLlBST0MuU1BBQ0UAVEFTSy5DT05GSUcAVEFTS1NUQVRFAAAAVEFTS1MA
AABUQVNLU3RhdGUAAABAKD0pX19SVE9TX0xZTlhfX1RBU0tfVEFTS1MASnVuIDEzIDIwMjQATHlu
eE9TAABBUk0A//+OCP//jcD//44I//+N2P//jfj//43o//+N+Dxwcm9jZXNzPgAAAHZtAABUYXNr
LlByb2Nlc3MgJXgAVEFTSy5QAAAqAAAAJTRkLiAAAAAlM2QuIAAAACAlNHgAAAAAY3VycmVudCAg
IAAAZnJlZSAgICAgIAAAcmVhZHkgICAgIAAAc3RvcHBlZCAgIAAAd2FpdGluZyAgIAAAc3VzcGVu
ZGVkIAAAem9tYmllICAgIAAAZXJyb3IoJTJkKSAAbWFnaWMgICAgAAAAcGlkICAAAABwcGlkAAAA
AHByaW8AAAAAc3BhY2VpZABzaWduYWxzIAAAAABtYXNrICAgIAAAAABzZW0gICAgICAAAABzdGF0
ZSAgICAAAABuYW1lAAAAAFBST0NFU1MAUHJvY2VzcwBAKD0pX19SVE9TX0xZTlhfX1RBU0tfUAD/
/6ZE//+lgP//peT//6X0//+mBP//phT//6Yk//+mNDx0aHJlYWQ+AAAAAFRhc2suVGhyZWFkICV4
AABUQVNLLlQAACU0ZC4AAAAAJTNkLgAAAAAlNWQuAAAAADoAAAB0aWQgIAAAAHBpZCAAAAAAc3Rr
bGVuAABUSFJFQUQAAFRocmVhZAAAQCg9KV9fUlRPU19MWU5YX19UQVNLX1QA//+q9P//qgz//6qU
//+qpP//qrT//6rE//+q1P//quQ8ZHJpdmVyPgAAAABUYXNrLkRyaXZlciAleAAAVEFTSy5EAABj
aGFyAAAAAGJsb2NrAAAAdW51c2VkAAAoJWQuKQAAACVzAABuZHJpdnMAACVzICAAAAAARGF0YS5M
aXN0ICV4AAAAAGZ1bmN0aW9uICAgYWRkcmVzcyAgICBsYWJlbAoAAAAAb3BlbiAgICAgAAAAY2xv
c2UgICAgAAAAcmVhZCAgICAgAAAAd3JpdGUgICAgAAAAc2VsZWN0ICAgAAAAaW9jdGwgICAgAAAA
aW5zdGFsbCAgAAAAdW5pbnN0YWxsAAAAbWFnaWMgICAAAAAAIGlkIAAAAAB0eXBlIAAAAHVzZSAA
AAAAc3RhcnQgICAgAAAAc2l6ZSAgICAgAAAAbmFtZSAAAABTb3JyeTogQ291bGRuJ3QgZmluZCBk
cml2ZXIAVEFTSy5EUklWRVIuSU5TVEFMTABfX1JUT1NfTFlOWF9fRlVOQwAAAFRBU0suRFJJVkVS
LkJTUwBUQVNLLkRSSVZFUi5EQVRBAAAAAFRBU0suRFJJVkVSLlRFWFQAAAAAVEFTSy5EUklWRVIu
U1RBUlQAAABEUklWRVIAAEQAAABEcml2ZXIAAEAoPSlfX1JUT1NfTFlOWF9fVEFTS19EADxrZXk+
AAAAPGJhc2U+AAA8c2l6ZT4AACAgICAgICAgICAgJTh4ICAocGFnZV90YWJsZXMpCgAATU1VLkNJ
RCAweCV4OjAgMHgleAAlM2QuICAgICAlOHgAAAAAICAlNHg6eHh4eHh4eHgKACUzZC4gICAlOHgA
ACAgJTR4OiUzeHh4eHh4CgAgICAgICAgICAAAAAlM2QuICU4eCAgAAAlNHg6JTV4eHh4AAAgICU4
eAoAAE1NVS5DIDB4JXg6MHgleCsrMEZGRiAleAAAAAAgICAgICAgICAgICU4eCAgKF9fcGFnZV90
YWJsZXMpCgAAAABzcGFjZSBpZCAlZC4gc2Nhbm5lZAAAAAB0YXNrIG1tdSBzY2FubmVkAAAAAHBy
b2Nlc3Mgbm90IGZvdW5kAAAAa2V5IG1pc3NpbmcAVklFVwAAAABTQ0FOAAAAAE1NVQBAKD0pX19S
VE9TX0xZTlhfX1RBU0tfTU1VX1NDQU4AACAgICAgICAjICAgICAgZW50cnkgICAgICAgaWQ6ZWEg
ICAgICAgIHJhAAAAcHJvY2VzcwA8b3B0aW9uPgAAAAA8Y29tbWFuZD4AAABjb21wb25lbnQAAAA8
b24vb2ZmPgAAAABhdXRvbG9hZAAAAABtbXVzY2FuAHkuYWwuY2hlY2sAAHkuYWwudG91Y2ggIiVz
IgBTeW1ib2wgbG9hZCBvZiBwcm9jZXNzICVzIHRyaWdnZXJlZC4AAAAAXFwlc1wudGV4dAAAZG9E
ZWxQcm9jOiBhcmdzdHJpbmc9JXMgc3BhY2VpZD0lZC4AU3ltYm9scyBvZiBwcm9jZXNzICVzIG5v
dCBmb3VuZC4AAAAATU1VLkQgJXg6MC0tMHhmZmZmZmZmZgAAeS5kIFxcJXMAAAAAeS5hbC5jbGVh
ciAiJXMiAFByb2Nlc3MgJXMgc3ltYm9scyBkZWxldGVkLgAhIUNvdWxkIG5vdCBnZXQgTHlueE9T
IHZlcnNpb24hAEQuTE9BRC5FTEYgJXMgJXg6MCAvY3BwIC9ub2NvZGUgL25vY2xlYXIgAAAARC5M
T0FELlhDT0ZGICVzICV4OjAgL2NwcCAvbm9jb2RlIC9ub2NsZWFyIABrZXk6IExPQURDTUR8QXV0
b0xvYWR8TU1VU0NBTgAAAE1NVSBzY2FuIG9wdGlvbiBzZXQuAAAAAGF1dG9sb2FkZXIgc2V0LgBs
b2FkIGNvbW1hbmQgc2V0LgAAAHBhcmFtZXRlciBtaXNzaW5nAAAAU29ycnk6IHByb2Nlc3Mgbm90
IGZvdW5kLgAAAE9GRgBEUlYATk9QUk9DRVNTAAAATlAAAE5PRFJJVkVSAAAAAE5EUlYAAAAATk9O
RQAAAABMT0FEQ01EAEFVVE9MT0FEAAAAAE1NVVNDQU4AREVMRVRFAABERUwAT1BUSU9OAABPAAAA
VEFTSy5ZLk8AAAAAX1JUT1NfTFlOWF9fRlVOQwAAAABTWU1CT0wAAFkAAABzWW1ib2wAAEAoPSlf
X1JUT1NfTFlOWF9fVEFTS19ZAP//vaT//72U//+9zP//veD//72k//+99P//vgj//74Y//++LP//
vkD//75UQCg9KV9fUlRPU19MWU5YX19UQVNLX1lfTwAAAEAoPSlfX1JUT1NfTFlOWF9fVEFTS19Z
X0RFTABAKD0pX19SVE9TX0xZTlhfX1RBU0tfWV9MT0FEAAAAAEQuTE9BRC5YQ09GRiAlcyAleDow
IC9jcHAgL25vY29kZSAvbm9jbGVhciAARC5MT0FELkVMRiAlcyAleDowIC9jcHAgL25vY29kZSAv
bm9jbGVhciAAAABgLmV4ZWN1c2VyYABgLmN0eF9leGVjdXNlcmAAYGN0eF9leGVjdXNlcmAAAFxc
JXNcR2xvYmFsXG1haW4AAAAAXFwlc1wlc1xtYWluAAAAAGIuZCAweCV4AAAAAGIucyAweCV4AAAA
AEdvAABiAAAAUHJvY2VzcyB3YXRjaCB2aWV3IG5vdCBvcGVuZWQAAABQbGVhc2Ugc3BlY2lmeSBh
IHByb2Nlc3MAAAAATWF4LiBudW1iZXIgb2Ygd2F0Y2hlZCBwcm9jZXNzZXMgcmVhY2hlZAAAAABQ
cm9jZXNzIGFscmVhZHkgaW4gd2F0Y2ggbGlzdAAAAGFkZFdhdGNoOiBhZGRlZCAlOHgAYi5zIDB4
JXggAAAAUHJvY2VzcyAlcyBhZGRlZCB0byB3YXRjaCBsaXN0AABQcm9jZXNzICU4eCBhZGRlZCB0
byB3YXRjaCBsaXN0AFRBU0suUHJvY2VzcyAleABUQVNLLlcAACAgLS0AAAAAbm8gcHJvY2VzcwAA
IC0tAG5vIHN5bWJvbHMAAGxvYWRlZAAAPz8/AFBsZWFzZSBzcGVjaWZ5IGEgcHJvY2VzcyBuYW1l
AAAAUHJvY2VzcyAlOHggcmVtb3ZlZCBmcm9tIHdhdGNoIGxpc3QAUHJvY2VzcyAlcyByZW1vdmVk
IGZyb20gd2F0Y2ggbGlzdAAAYi5kIDB4JXggAAAAQnV0dG9uIERJU2FibGVCUAAAAABCdXR0b24g
RElTYWJsZQAAQnV0dG9uIEVOYWJsZUJQAEJ1dHRvbiBFTmFibGUAAABwcm9jZXNzICAgIABzdGF0
ZSAgICAgAABlbnRyeSAAAEVOYWJsZQAARElTYWJsZQBFTmFibGVCUAAAAABESVNhYmxlQlAAAABw
cm9jZXNzIGV4ZWN1dGlvbiBicmVha3BvaW50IG5vdCBmb3VuZC4AVgAAAEFERABESVNBQkxFAERJ
UwBFTkFCTEUAAEVOAABESVNBQkxFQlAAAABESVNCUAAAAEVOQUJMRUJQAAAAAEVOQlAAAAAAV0FU
Q0gAAABXAAAAV2F0Y2gAAABAKD0pX19SVE9TX0xZTlhfX1RBU0tfVwD//8DE///CkP//wHT//8CE
///AlP//wKT//8C0QCg9KV9fUlRPU19MWU5YX19UQVNLX1dfRU5CUAAAAABAKD0pX19SVE9TX0xZ
TlhfX1RBU0tfV19FTgAAQCg9KV9fUlRPU19MWU5YX19UQVNLX1dfRElTQlAAAABAKD0pX19SVE9T
X0xZTlhfX1RBU0tfV19ESVMAQCg9KV9fUlRPU19MWU5YX19UQVNLX1dfREVMAEAoPSlfX1JUT1Nf
TFlOWF9fVEFTS19XX0FERABAKD0pX19SVE9TX0xZTlhfX1RBU0tfV19WAAAATVREIEx5bnhPUyBW
ZXJzaW9uICVzICAlcyAgCgoAAABtYWdpYyAgICAgICAgICAgICU4eCAgJTh4ICAACmN1cnJlbnQg
cHJvY2VzcyAgJTh4ICAlOHggIAAAAABwcm9jZXNzIHRhYmxlICAgICU4eCAgAAAlOHggIAAAAD8g
ICAgICAgICAAAG51bSBwcm9jcyAgICAgICAgJTh4ICAlOHggIAAKdGhyZWFkIHRhYmxlICAgICAl
OHggICU4eCAgAAAAAG51bSB0aHJlYWRzICAgICAgJTh4ICAAAG51bSB2bXMgICAgICAgICAgJTh4
ICAAAHBhZ2UgdGFibGVzICAgICAgJTh4ICAgICAgICAgICAgAAAAAHBhZ2UgdGFibGVzIDIgICAg
JTh4ICAgICAgICAgICAgAAAAAGRyaXZlcnMgICAgICAgICAgJTh4ICAAAHNpemVvZiBkcml2ZXIg
ICAgJTh4ICAAACAgICAgICAgICAKAGx5bnhfb3NuYW1lAEx5bnhPUyBuYW1lICAgICAgJTh4ICAg
ICAgICAgICAgAAAAAApMeW54T1MgdmVyc2lvbiAgICU4eCAgICAgICglMmQpICAAAFRFU1QAAAAA
YXJndW1lbnQgICAgICAgICB2YWx1ZSAgICAgY29udGVudCAgIHN5bWJvbAAuJWQAZ2V0VGFza1Ry
YWNlSWQ6IG1hZ2ljPSU4eCwgam9iPSU4eAAAVHJhbnNsYXRpb25MaXN0OiBlbnRyeQAAVHJhbnNs
YXRpb25MaXN0OiBwYXJfc2V0dXAgZmFpbGVkAAAAVHJhbnNsYXRpb25MaXN0OiBzeW1ib2wgcGFn
ZV90YWJsZXMgbWlzc2luZwBUcmFuc2xhdGlvbkxpc3Q6IGpvYj0lZABUcmFuc2xhdGlvbkxpc3Q6
IHBndGFiKHBhcl9wYWdldGFiKT09JTh4AAAAAFRyYW5zbGF0aW9uTGlzdDogcGd0YWIocGFyX3Bh
Z2V0YWIyKT09JTh4AAAAVHJhbnNsYXRpb25MaXN0OiBqb2I9JTh4LCBMMVRCPSU4eAAAVHJhbnNs
YXRpb25MaXN0OiBleGl0AAAAc3RydWN0IHN0X2VudHJ5LnJlZ19zdGFja3AAAGdldEFybUNvbnRl
eHQ6IGZyYW1lb2Zmc2V0PSU4eCwgZnJhbWU9JTh4AAAAcjAAAHIxAAByMgAAcjMAAHI0AAByNQAA
cjYAAHI3AAByOF91c3IAAHI5X3VzcgAAcjEwX3VzcgByMTFfdXNyAHIxMl91c3IAcjEzX3VzcgBy
MTRfdXNyAHBjAABjcHNyAAAAAGhhcmR3YXJldGhyZWFkAABpbml0TW9kdWxlTGlzdDogZW50cnkA
AABpbml0TW9kdWxlTGlzdDogZXhpdAAAAABnZXRNb2R1bGVJbmZvOiBtYWdpYz0weCU4eCwgdHlw
ZT0lZC4AAAAAc3RydWN0IHBlbnRyeS5pAHN0X3QucGFkZHIAAHN0X3QucGxpbWl0AGdldE1vZHVs
ZUluZm86IG1hZ2ljICU4eCwgY29kZWFkZHIgJTh4LCBzcGFjZWlkICV4LCBuYW1lICVzAGdldE1v
ZHVsZUxpc3Q6IHN1cGVybWFnaWM9JTh4AAAAZ2V0TW9kdWxlTGlzdDogcHJvY2Vzcz0leCwgaV9t
b2Q9JWQAZ2V0TW9kdWxlTGlzdDogbGlicmFyaWVzIGZvciBwcm9jZXNzPSV4AGdldE1vZHVsZUxp
c3Q6IGRyaXZlcnMuAGdldE1vZHVsZUxpc3Q6IGRyaXZlcj0leCwgaV9tb2Q9JWQAREFUQQAAdmgA
AHZ0AAB2fAAAdogAAAAkAAB2XAAAAAMAAAAXAAAAAAAAdjAAAAf4AAB2TAAAAAMAAAAXAAAAAAAA
djAAABmAAAB2QAAAAAMAAAAXAAAAAAAAdjAAABVwAAB2IAAAAAMAAAADAAAAAwAAdjAAABUYAAB2
FAAAFHAAAHYIAAAUnAAAdfwAABTwAAB2pAAAdrAAAHa4AAAAAAAAAAIAAAAAAAB11AAAAAAAAAAC
AAAAAAAAAAAAAAE4AAACQAAAApwAAAACAAAAAAAAddQAAAAAAAAAAwBaAAAABAD0AAAehAAAAAMA
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
)
HELP.FILTER.Add rtoslynx
RETURN
)
menu_32bit: ;(header, infix)
(
PMACRO.LOCK
(
PRIVATE &sHeader &sInfix &sMenuName
PARAMETERS &sHeader &sInfix
&sMenuName=TASK.TRANSPOSE.INFIX("&sHeader")
IF MENU.EXIST("TASK.&(sMenuName)")
MENU.Delete.NAME TASK.&(sMenuName)
IF MENU.EXIST("EXT.&(sMenuName)")
MENU.Delete.NAME EXT.&(sMenuName)
MENU.ReProgram
(&+
; --------------------------------------------------------------------------------
; @Title: Menu File for TRACE32 LynxOS Awareness
; @Description: -
; @Keywords: LynxOS menu awareness
; @Author: DIE
; @Copyright: (c) 1989-2024 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: lynx.m 10155 2024-05-28 13:02:40Z rdienstbeck $
NAME "TASK.&sMenuName"
IF !MENU.EXIST("TASK.&sMenuName")
(
add
menu
(
popup "&sHeader"
(
default
menuitem "Display &Processes" "TASK.&(sInfix)Process"
menuitem "Display &Threads" "TASK.&(sInfix)Thread"
menuitem "Display &Drivers" "TASK.&(sInfix)Driver"
separator
popup "&Process Debugging"
(
menuitem "[:symbols]&Load Symbols..."
(
dialog
(
header "TASK.&(sInfix)sYmbol.LOAD"
pos 0. 0. 26. 3.
box "Process name"
pos 1. 1. 16. 1.
procl: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*"
ENTRY %line &file
dialog.set procl "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &procl
&procl=dialog.string(procl)
TASK.&(sInfix)sYmbol.LOAD "&procl"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "DIALOG.END"
)
)
menuitem "[:symbols]&Delete Symbols..."
(
dialog
(
header "TASK.&(sInfix)sYmbol.DELete"
pos 0. 0. 26. 3.
box "Process name"
pos 1. 1. 16. 1.
procd: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*"
ENTRY %line &file
dialog.set procd "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &procd
&procd=dialog.string(procd)
TASK.&(sInfix)sYmbol.DELete "&procd"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
popup "&Watch Processes"
(
menuitem "[:plus]&Add..."
(
dialog
(
header "Add Process to Watch"
pos 0. 0. 24. 3.
box "Process name"
pos 1. 1. 22. 1.
wproca: defedit "" ""
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &wproca
&wproca=dialog.string(wproca)
TASK.&(sInfix)Watch.View "&wproca"
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "[:remove]&Remove..."
(
dialog
(
header "Delete Process from Watch"
pos 0. 0. 24. 3.
box "Process name"
pos 1. 1. 22. 1.
wprocd: defedit "" ""
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &wprocd
&wprocd=dialog.string(wprocd)
TASK.&(sInfix)Watch.DELete "&wprocd"
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
)
)
separator
menuitem "Debug Driver on install..."
(
dialog
(
header "Debug Driver on install"
pos 0. 0. 24. 3.
box "Driver name (without .dldd)"
pos 1. 1. 22. 1.
ddrv: defhotedit ""
(
if dialog.string(ddrv)!=""
dialog.enable bok
else
dialog.disable bok
)
pos 2. 3. 8.
bok: defbutton "Ok"
(
PRIVATE &ddrv &script
&ddrv=dialog.string(ddrv)
&script=OS.FILE.JOINPATH(TASK.&(sInfix)GETDIR(),"drv_debug.cmm")
DO "&script" &ddrv
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
separator
popup "S&ymbol Autoloader"
(
menuitem "[:symbols]List Components" "sYmbol.AutoLoad.List"
menuitem "[:init]Check Now!" "sYmbol.AutoLoad.CHECK"
menuitem "[:config]Config..." "sYmbol.AutoLOAD.config"
menuitem "[:objects]Components..."
(
dialog
(
header "TASK.sYmbol.Option AutoLoad"
pos 0. 0. 25.
proc: checkbox "Process (Processes)"
(
if dialog.boolean(proc)
TASK.&(sInfix)sYmbol.Option AutoLoad Process
else
TASK.&(sInfix)sYmbol.Option AutoLoad NoProcess
)
;lib: checkbox "Library (All Libraries)"
;(
; if dialog.boolean(lib)
; TASK.sYmbol.Option AutoLoad Library
; else
; TASK.sYmbol.Option AutoLoad NoLibrary
; dialog.set clib "FALSE"
;)
;clib: checkbox "CurrLib (Libraries of Current Process)"
;(
; if dialog.boolean(clib)
; TASK.sYmbol.Option AutoLoad CurrLib
; else
; TASK.sYmbol.Option AutoLoad NoLibrary
; dialog.set lib "FALSE"
;)
driv: checkbox "DRiVer (Drivers)"
(
if dialog.boolean(driv)
TASK.&(sInfix)sYmbol.Option AutoLoad DRiVer
else
TASK.&(sInfix)sYmbol.Option AutoLoad NoDRiVer
)
)
dialog.set proc ((task.&(sInfix)y.o(autoload)&0x1)!=0)
;dialog.set lib ((task.&(sInfix)y.o(autoload)&0x2)!=0)
;dialog.set clib ((task.&(sInfix)y.o(autoload)&0x4)!=0)
dialog.set driv ((task.&(sInfix)y.o(autoload)&0x8)!=0)
)
)
;separator
;popup "&Stack Coverage"
;(
; menuitem "&List Stacks"
; (
; TASK.&(sInfix)STacK.PATtern 0xff
; TASK.&(sInfix)STacK
; )
; menuitem "Add Thread" "TASK.&(sInfix)STacK.ADD"
; menuitem "Remove Thread" "TASK.&(sInfix)STacK.ReMove"
; menuitem "Reset Coverage"
; (
; PRIVATE &yes
; DIALOG.YESNO "Overwrite unused stack space" "with stack fill pattern?"
; ENTRY &yes
; IF !&yes
; ENDDO
; TASK.&(sInfix)STacK.Init
; )
;)
)
popup "Trace"
(
popup "List"
(
separator
menuitem "&Task Switches" "Trace.List List.TASK"
menuitem "&Default and Tasks" "Trace.List List.TASK DEFault"
)
)
popup "Perf"
(
separator
popup "&Task Runtime"
(
menuitem "&Prepare"
(
if t.method.analyzer()
(
Analyzer.AutoInit on
)
Break.Delete /Alpha
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
)
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASK"
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASK"
menuitem "[:achart]Tracking with Trace &List"
(
Trace.List List.TASK DEFault /Track
Trace.CHART.TASK /Track
)
)
popup "Task &Function Runtime"
(
menuitem "&Prepare"
(
if t.method.analyzer()
(
Analyzer.AutoInit on
Analyzer.STATistic.PreFetch on
)
Break.Delete /Alpha /Beta /Charly
Break.SetFunc
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
)
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASKFUNC"
menuitem "[:perf]Show as &Tree" "Trace.STATistic.TASKTREE"
menuitem "[:perf]Show &Detailed Tree" "Trace.STATistic.TASKTREE ALL"
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASKFUNC"
menuitem "[:alist]Show N&esting" "Trace.List List.TASK FUNC TI.FUNC"
)
popup "Task &Status"
(
menuitem "&Prepare"
(
if t.method.analyzer()
(
Analyzer.AutoInit on
)
Break.Delete /Alpha
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
TASK.TASKState
)
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASKSTATE"
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASKSTATE"
menuitem "[:achart]Tracking with Trace &List"
(
Trace.List List.TASK DEFault /Track
Trace.CHART.TASKSTATE /Track
)
)
)
popup "&Help"
(
MENUITEM "[:manual]OS Awareness Manual LynxOS" "HELP __RTOS_LYNX_"
)
)
menu "task.&(sInfix)p"
(
default
menuitem "Display detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.&(sInfix)Process &magic
)
menuitem "Display process struct"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (struct pentry*)(&address)
)
separator
menuitem "Load Process Symbols" "TASK.&(sInfix)sYmbol.LOAD track.address()"
menuitem "Delete Process Symbols" "TASK.&(sInfix)sYmbol.DELete track.address()"
menuitem "Add to Watched Processes"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.&(sInfix)Watch.View &address
)
menuitem "Delete from Watched Processes" "TASK.&(sInfix)Watch.DELete track.address()"
separator
menuitem "Dump process entry"
(
PRIVATE &address
&address=track.address()
Data.dump &address /Long /DIALOG
)
)
menu "task.&(sInfix)t"
(
default
menuitem "Display detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.&(sInfix)Thread &magic
)
menuitem "Display thread struct"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (struct st_entry*)(&address)
)
separator
menuitem "Display Stack Frame"
(
PRIVATE &magic
&magic=address.offset(track.address())
Var.Frame /Locals /Caller /TASK &magic
)
menuitem "Display Registers"
(
PRIVATE &magic
&magic=address.offset(track.address())
Register /TASK &magic
)
menuitem "Switch Context"
(
PRIVATE &magic
&magic=address.offset(track.address())
Register.TASK &magic
)
;separator
;menuitem "Add to Stack Cov"
;(
; PRIVATE &thread
; &thread=address.offset(track.address())
; TASK.&(sInfix)STacK.ADD &thread
;)
;menuitem "Rm from Stack Cov"
;(
; PRIVATE &thread
; &thread=address.offset(track.address())
; TASK.&(sInfix)STacK.ReMove &thread
;)
separator
menuitem "Dump thread entry"
(
PRIVATE &address
&address=track.address()
Data.dump &address /Long /DIALOG
)
)
menu "task.&(sInfix)d"
(
default
menuitem "Display detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.Driver &magic
)
menuitem "Display driver struct"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (struct driver_entry*)&address
)
menuitem "Dump driver entry"
(
PRIVATE &address
&address=track.address()
Data.dump &address /Long /DIALOG
)
)
menu "task.&(sInfix)w"
(
default
menuitem "Display Process"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.&(sInfix)Process &magic
)
menuitem "Delete from List" "TASK.Watch.DELete track.address()"
)
)
)
)
PMACRO.UNLOCK
RETURN
)
autoload_32bit: ;(options)
(
PARAMETERS &sOptions
sYmbol.AutoLOAD.CHECKEmBeDded &sOptions
(
; --------------------------------------------------------------------------------
; @Title: Lynx Symbol Autoloader Script
; @Description:
; Symbol Autoloader script, called by TRACE32 if symbols are to be loaded.
; This script is part of the TRACE32 LynxOS Awareness.
;
; @Keywords: LynxOS autoloader awareness
; @Author: DIE
; @Copyright: (C) 1989-2024 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: autoload.cm 10188 2024-06-11 14:59:28Z rdienstbeck $
// define local macros
PRIVATE &sLine
PRIVATE &sParamName &nParamCodeAddress &nParamDataAddress &nParamSpace &nParamType &nParamMachine
PRIVATE &sBasename &sSymbolFilepath &sSymbolFilename &sProgramName
// get filename and relocation information
// these parameters are passed from TRACE32 when calling this skript
ENTRY %LINE &sLine
&sParamName=STRing.SCANandExtract("&sLine","NAME=","")
&nParamType=STRing.SCANandExtract("&sLine","TYPE=","0.")
&nParamCodeAddress="0x"+STRing.SCANandExtract("&sLine","CODEADDRESS=0x","0")
&nParamDataAddress="0x"+STRing.SCANandExtract("&sLine","DATAADDRESS=0x","0")
&nParamSpace="0x"+STRing.SCANandExtract("&sLine","SPACEID=0x","0")
&nParamMachine=STRing.SCANandExtract("&sLine","MACHINE=","")
// strip quotes
&sParamName=STRing.Replace("&sParamName","""","",0.)
&nParamType=&nParamType
&nParamCodeAddress=&nParamCodeAddress
&nParamDataAddress=&nParamDataAddress
&nParamSpace=&nParamSpace
IF ("&nParamMachine"!="")
&nParamMachine=&nParamMachine
//PRINT "autoload: " &sParamName " " &nParamType " " &nParamCodeAddress " " &nParamDataAddress " " &nParamSpace " " &nParamMachine
// &sParamName: name of process/file
// &nParamType: type of file: 0=kernel, 1=process, 2=library, 3=driver
// &nParamCodeAddress: text segment address
// &nParamDataAddress: data segment address
// &nParamSpace: space id of process
// &nParamMachine: machine id of process
// no processing for kernel
IF (&(nParamType)==0.)
ENDDO
// check prerequisites
IF !SYStem.Option.MMUSPACES()
(
PRINT %ERROR "Error: autoloader requires SYStem.Option MMUSPACES ON as a prerequisite"
ENDDO
)
IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES)
(
IF SYStem.Option.MACHINESPACES()&&("&nParamMachine"=="")
(
PRINT %ERROR "Error: error in autoloader, please contact support@lauterbach.com"
ENDDO
)
)
// set space id to zero if not given
IF "&nParamSpace"==""
&nParamSpace=0
// get symbol file name and program name
&sBasename=STRing.CUT("&sParamName",-STRing.LENgth(OS.FILE.EXTENSION(&sParamName)))
IF (&(nParamType)==1.) // processes
(
&sProgramName=OS.FILE.NAME("&sParamName")
&sSymbolFilename="&sParamName"
)
IF ((&nParamType&0xff)==2.) // libraries
(
&sProgramName=OS.FILE.NAME("&sBasename")
&sSymbolFilename="&sParamName"
if &nParamSpace!=0.
SPRINTF &sProgramName "%s_%d" "&sProgramName" &nParamSpace
)
// delete program if it already exists or other code is already there
IF sYmbol.EXIST("\\&sProgramName")
(
LOCAL &sProgramNameQuoted
&sProgramNameQuoted="`\\&sProgramName`"
sYmbol.Delete &sProgramNameQuoted
)
GROUP.Delete "&sProgramName"
// search file in source search path and open dialog when not there
IF OS.FILE.EXTENSION("&sSymbolFilename")==""
(
// try .sym file
&sSymbolFilepath=sYmbol.SEARCHFILE("&sSymbolFilename.sym")
)
IF !OS.FILE("&sSymbolFilepath")
(
// try plain process name
&sSymbolFilepath=sYmbol.SEARCHFILE("&sSymbolFilename")
)
IF !OS.FILE("&sSymbolFilepath")
(
// file not found, ask for it
LOCAL &sDialogFile &sSourcePath
&sDialogFile=OS.FILE.NAME("&sSymbolFilename")
WinPOS ,,,,,, filebox normal "Searching symbols for &sParamName"
DIALOG.File "*\&sDialogFile.*"
ENTRY %LINE &sSymbolFilepath
IF "&sSymbolFilepath"==""
ENDDO
&sSourcePath=OS.FILE.PATH("&sSymbolFilepath")
sYmbol.SourcePATH.Set &sSourcePath
)
// load symbol file
IF (&(nParamType)==1.) // process
(
PRIVATE &version &sAccess &sRange
&version=task.lynxos(version)
GOSUB getAccess "&nParamType" "&nParamSpace" "&nParamMachine"
RETURNVALUES &sAccess
IF (CPUFAMILY()=="POWERPC")&&((&version==31.)||(&version==20.)||(&version==21.)||(&version==22.))
(
; LynxOS 3.1 or LynxOS-178 2.x on PowerPC
Data.LOAD.XCOFF "&sSymbolFilepath" &sAccess /nocode /noclear /name &sProgramName
)
ELSE
(
; LynxOS 4.x or LynxOS 5.0 or LynxOS-178 on Arm
Data.LOAD.Elf "&sSymbolFilepath" &sAccess /cpp /nocode /noclear /name &sProgramName
)
;IF task.y.o(mmuscan)==1 // scan only if MMU.TABLEWALK not configured
; MMU.TaskPageTable.SCAN &space:0
&sRange="&sAccess"+"--0xffffffff"
GROUP.Create "&sProgramName" &sRange /GREEN
)
IF ((&nParamType&0xff)==2.) // libraries
(
PRIVATE &sAccess
GOSUB getAccess "(&nParamType&0xff)" "&nParamSpace" "&nParamMachine" "&nParamCodeAddress"
RETURNVALUES &sAccess
Data.LOAD.Elf "&sSymbolFilepath" &sAccess /nocode /noclear /name &sProgramName
)
ENDDO
; --------------------------------------------------------------------------------
getAccess: ;(type, space, machine, [nOffset])
(
PRIVATE &sAccess
PARAMETERS &nType &nSpace &nMachine &nOffset
IF "&nOffset"==""
&nOffset=0x0
IF (&nType==(1.||2.))
(
; Process OR Library
IF "&nMachine"!=""
(
&sAccess=TASK.MACHINE.ACCESS(&nMachine)
IF STRing.ComPare("&sAccess", "Z*")
&sAccess="ZU" // running in Secure
ELSE IF STRing.ComPare("&sAccess", "N*")||STRing.ComPare("&sAccess", "H*")
&sAccess="NU" // running in NonSecure EL1 / NonSecure EL2 with VHE
ELSE
&sAccess="U" // no Trustzone with iAMP
SPRINTF &sAccess "%s:%#x:::" "&sAccess" &nMachine
)
ELSE
(
IF STATE.MONITOR.RUN()
(
&sAccess="U"
)
ELSE IF PRACTICE.FUNCtion.AVAILable(TASK.ACCESS.ZONE)
(
&sAccess=TASK.ACCESS.ZONE()
IF STRing.ComPare("&sAccess", "Z*")
&sAccess="ZU" // running in Secure
ELSE IF STRing.ComPare("&sAccess", "N*")||STRing.ComPare("&sAccess", "H*")
&sAccess="NU" // running in NonSecure EL1 / NonSecure EL2 with VHE
ELSE
&sAccess="U"
)
ELSE
(
&sAccess="U"
)
&sAccess="&(sAccess):"
)
IF (&nType==(2.))&&("&nSpace"=="")
SPRINTF &sAccess "%s%#x" "&sAccess" &nOffset
ELSE
SPRINTF &sAccess "%s%#x::%#x" "&sAccess" &nSpace &nOffset
)
ELSE IF (&nType==3.)
(
; Modules
IF "&nMachine"!=""
(
&sAccess=TASK.MACHINE.ACCESS(&nMachine)
IF STRing.ComPare("&sAccess", "ZH*")
&sAccess="ZH" // running in Secure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "Z*")
&sAccess="ZS" // running in Secure EL2
ELSE IF STRing.ComPare("&sAccess", "*H*")&&(ARMARCHVERSION()>=0x84)
&sAccess="NH" // running in NonSecure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "*H*")
&sAccess="H" // running in NonSecure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "N*")
&sAccess="NS" // running in NonSecure EL1
ELSE
&sAccess="S" // no Trustzone with iAMP
SPRINTF &sAccess "%s:%#x:::" "&sAccess" &nMachine
)
ELSE
(
IF PRACTICE.FUNCtion.AVAILable(TASK.ACCESS.ZONE)
(
&sAccess=TASK.ACCESS.ZONE()
IF STRing.ComPare("&sAccess", "ZH*")
&sAccess="ZH" // running in Secure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "Z*")
&sAccess="ZS" // running in Secure EL2
ELSE IF STRing.ComPare("&sAccess", "*H*")&&(ARMARCHVERSION()>=0x84)
&sAccess="NH" // running in NonSecure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "*H*")
&sAccess="H" // running in NonSecure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "N*")
&sAccess="NS" // running in NonSecure EL1
ELSE
&sAccess="S"
)
ELSE
(
&sAccess="S"
)
&sAccess="&(sAccess):"
)
SPRINTF &sAccess "%s0x0::%#x" "&sAccess" &nOffset
)
RETURN "&sAccess"
)
)
RETURN
)
extension_64bit: ; (options)
(
PARAMETERS &sParameters &sOptions
EXTension.LOAD &sParameters &sOptions
(
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
QIIBDDxgAAE4Y4EYSAAcgUgAHNE9IAAEgSkGLCwJAABBggDgPGAAAThjgRRIABxhPGAAAThjg9BI
ABxVO5wAATv/ADg9IAAEgSk65HwJ4ABAgQEcgT0GMCwJAABBgv9If/77eICfACR/Q9N4SAAc4X9j
23hIABzliT8AACwJAABBgv8wf+P7eEgAHAVIABxVgT0GMCwJAABBgv8oSAAdQSwDAANAgv8kS///
GH8Dw3hIABvdS///KDhgAH5IABwZS///LDxgAAE4Y4EISAAbwUgAHBE9IAAEgSkGLCwJAABBggAU
PGAAAThjgRRIABuhS///QDhgAH5IABvdS///6DhgAH5IABvRS///HH7Ds3hIABt9SAAbzT0gAASB
KQYsLAkAAEGCADCBPgAwLAn//0GCADCAfgA0SAAbPTiAABCAfgAwSAAbYThgAABIABspS//+4Dhg
AH5IABt9S///zH6jq3hIABspS///1IKhABSCwQAYguEAHIMBACCDIQAkg0EAKINhACyDgQAwg6EA
NIABAER8CAOmg8EAOIPhADw4IQBAToAAIJQh/8B8CAKmkAEARD0gAASBKTroLAkAAEGCAJg9IAAE
gSk6vCwJAABBggCYk+EAPD0gAASBKTrkLAkAAECBAeiSgQAQkqEAFJLBABiS4QAckwEAIJMhACST
QQAok2EALJOBADCToQA0k8EAOD9AAAQ7WgeEO1oABH9e03g7oAAAf1nTeD9gAAQ7ezsAPuAAATr3
gXQ/AAABOxiBUD6gAAA6tXzEPsAAADrWfKxIAAB0PGAAAThjgABIABotSAABuD0gAASJKTsALAkA
AECC/2A8YAABOGOBMEgAGg1IAAGYfsOzeEgAG0VIAACEf+T7eH6jq3hIABs1SAAAgH9k23h+47t4
SAAZ4Tu9AAE9IAAEgSk65DveADh8CegAQIEA3D0gAASBKTq8LAkAAEGCABCBXgAkfAlQAEGCACSJ
OwAALAkAAEGC/8R/ZNt4f8PzeEgAF3UsAwAAQIL/sH/f83iAngA0LAQAAECC/3iBPwAsLAkAAECC
/3g9IAAEgok65Dk9AAF8FEgAQIEAMB+UADg5Ov/If5xKFH/D83g74wA4OKAAOH/k+3hIABb5f+P7
eHwf4EBAgv/oPGAABDqU//+SgzrkOIAABDhjOuRIABqBOIACMH8jy3hIABp1PSAABICJOrwsBAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfoAAAABgAAAA0A
AABOAAAn0gAAB+gAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT02THlueE9TAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAA
AE1hZ2ljVG9JZDogbWFnaWM9JTh4LCBpZD0lZC4AAAAAQWxwaGEgQnJlYWtwb2ludHMgc2V0IG9u
ICVkIHRhc2sgc3RhdGUgd29yZHMAAAAALS0tIFRocmVhZCBpZCA9ICVkLiwgbmFtZSA9IAAAAABj
dXJydHB0cgAAAABjcHVfZGF0YQAAAABHZXRNYWdpYzogbWFnaWNhZGRyPSU4eABwYXJhbWV0ZXIg
MTogMHglOHggPSAlcwBtYWdpYwAAAG1hZ2ljc2l6ZQAAAHVua25vd24gdG9waWMAAABseW54X3Jl
bGVhc2UAAAAAY3VycnBwdHIAAAAAcHJvY3RhYgBzeXN0ZW1fbnByb2MAAAAAbnByb2MAAABzdF90
YWJsZQAAAABuc3Rhc2tzAG1heF9udW1fdm1zAHBhZ2VfdGFibGVzAF9fcGFnZV90YWJsZXMAAABz
dHJ1Y3QgcGVudHJ5AAAALnBzdGF0ZQAuam9iAAAAAC5pAAAucG5hbWUAAC5waWQAAAAALnBncm91
cAAucHBpZAAAAHN0cnVjdCBzdF9lbnRyeQAudHN0YXRlAC50aWQAAAAALnRuYW1lAAAucHByaW8A
AC5zdGFja3AALnNlbQAAAAAuc3RhY2sAAC5zdGFja2xlbgAAAC5zaWduYWxzAAAAAC5zaWdubWFz
awAAAC5wcm9jZXNzAAAAAC52bV9vd25lcgAAAGRyaXZlcnMAc3RydWN0IGRyaXZlcl9lbnRyeQAu
dXNlY291bnQAAAAuZGV2X3R5cGUAAAAubmFtZQAAAC5vcGVuAAAALmNsb3NlAAAucmVhZAAAAC53
cml0ZQAALnNlbGVjdAAuaW9jdGwAAC5pbnN0YWxsAAAAAC51bmluc3RhbGwAAC5tLnN0YXJ0AAAA
AC5tLnNpemUALm0udGV4dAAudGV4dAAAAC5tLmRhdGEALmRhdGEAAAAubS5ic3MAAC5ic3MAAAAA
cGFyYW1ldGVyczogMHglOHgsIDB4JTh4AAAAAHZlcnNpb24AU29ycnk6IENvdWxkbid0IGdldCBz
eW1ib2wgYWRkcmVzc2VzAAAAAF9fRU1YWFhfQVQAAF9fRU1YWFhfQVMAAF9fRU1YWFhfQUwAAFRB
U0suTE9HMlBIWVMAAABfX0VNTFlOWF9GVU5DAAAAVEFTSy5MWU5YT1MAVEFTSy5QUk9DLlNQQUNF
AFRBU0suQ09ORklHAFRBU0tTVEFURQAAAFRBU0tTAAAAVEFTS1N0YXRlAAAAQCg9KV9fUlRPU19M
WU5YX19UQVNLX1RBU0tTAEp1biAxMyAyMDI0AEx5bnhPUwAAQVJNNjQAAAD//46Q//+OSP//jpD/
/45g//+OgP//jnD//46APHByb2Nlc3M+AAAAdm0AAFRhc2suUHJvY2VzcyAleABUQVNLLlAAACoA
AAAlNGQuIAAAACUzZC4gAAAAICU0eAAAAABjdXJyZW50ICAgAABmcmVlICAgICAgAAByZWFkeSAg
ICAgAABzdG9wcGVkICAgAAB3YWl0aW5nICAgAABzdXNwZW5kZWQgAAB6b21iaWUgICAgAABlcnJv
ciglMmQpIABtYWdpYyAgICAAAABwaWQgIAAAAHBwaWQAAAAAcHJpbwAAAABzcGFjZWlkAHNpZ25h
bHMgAAAAAG1hc2sgICAgAAAAAHNlbSAgICAgIAAAAHN0YXRlICAgIAAAAG5hbWUAAAAAUFJPQ0VT
UwBQcm9jZXNzAEAoPSlfX1JUT1NfTFlOWF9fVEFTS19QAP//psz//6YI//+mbP//pnz//6aM//+m
nP//pqz//6a8PHRocmVhZD4AAAAAVGFzay5UaHJlYWQgJXgAAFRBU0suVAAAJTRkLgAAAAAlM2Qu
AAAAACU1ZC4AAAAAOgAAAHRpZCAgAAAAcGlkIAAAAABzdGtsZW4AAFRIUkVBRAAAVGhyZWFkAABA
KD0pX19SVE9TX0xZTlhfX1RBU0tfVAD//6t8//+qlP//qxz//6ss//+rPP//q0z//6tc//+rbDxk
cml2ZXI+AAAAAFRhc2suRHJpdmVyICV4AABUQVNLLkQAAGNoYXIAAAAAYmxvY2sAAAB1bnVzZWQA
ACglZC4pAAAAJXMAAG5kcml2cwAAJXMgIAAAAABEYXRhLkxpc3QgJXgAAAAAZnVuY3Rpb24gICBh
ZGRyZXNzICAgIGxhYmVsCgAAAABvcGVuICAgICAAAABjbG9zZSAgICAAAAByZWFkICAgICAAAAB3
cml0ZSAgICAAAABzZWxlY3QgICAAAABpb2N0bCAgICAAAABpbnN0YWxsICAAAAB1bmluc3RhbGwA
AABtYWdpYyAgIAAAAAAgaWQgAAAAAHR5cGUgAAAAdXNlIAAAAABzdGFydCAgICAAAABzaXplICAg
ICAAAABuYW1lIAAAAFNvcnJ5OiBDb3VsZG4ndCBmaW5kIGRyaXZlcgBUQVNLLkRSSVZFUi5JTlNU
QUxMAF9fUlRPU19MWU5YX19GVU5DAAAAVEFTSy5EUklWRVIuQlNTAFRBU0suRFJJVkVSLkRBVEEA
AAAAVEFTSy5EUklWRVIuVEVYVAAAAABUQVNLLkRSSVZFUi5TVEFSVAAAAERSSVZFUgAARAAAAERy
aXZlcgAAQCg9KV9fUlRPU19MWU5YX19UQVNLX0QAPGtleT4AAAA8YmFzZT4AADxzaXplPgAAICAg
ICAgICAgICAlOHggIChwYWdlX3RhYmxlcykKAABNTVUuQ0lEIDB4JXg6MCAweCV4ACUzZC4gICAg
ICU4eAAAAAAgICU0eDp4eHh4eHh4eAoAJTNkLiAgICU4eAAAICAlNHg6JTN4eHh4eHgKACAgICAg
ICAgIAAAACUzZC4gJTh4ICAAACU0eDolNXh4eHgAACAgJTh4CgAATU1VLkMgMHgleDoweCV4Kysw
RkZGICV4AAAAACAgICAgICAgICAgJTh4ICAoX19wYWdlX3RhYmxlcykKAAAAAHNwYWNlIGlkICVk
LiBzY2FubmVkAAAAAHRhc2sgbW11IHNjYW5uZWQAAAAAcHJvY2VzcyBub3QgZm91bmQAAABrZXkg
bWlzc2luZwBWSUVXAAAAAFNDQU4AAAAATU1VAEAoPSlfX1JUT1NfTFlOWF9fVEFTS19NTVVfU0NB
TgAAICAgICAgICMgICAgICBlbnRyeSAgICAgICBpZDplYSAgICAgICAgcmEAAABwcm9jZXNzADxv
cHRpb24+AAAAADxjb21tYW5kPgAAAGNvbXBvbmVudAAAADxvbi9vZmY+AAAAAGF1dG9sb2FkAAAA
AG1tdXNjYW4AeS5hbC5jaGVjawAAeS5hbC50b3VjaCAiJXMiAFN5bWJvbCBsb2FkIG9mIHByb2Nl
c3MgJXMgdHJpZ2dlcmVkLgAAAABcXCVzXC50ZXh0AABkb0RlbFByb2M6IGFyZ3N0cmluZz0lcyBz
cGFjZWlkPSVkLgBTeW1ib2xzIG9mIHByb2Nlc3MgJXMgbm90IGZvdW5kLgAAAABNTVUuRCAleDow
LS0weGZmZmZmZmZmAAB5LmQgXFwlcwAAAAB5LmFsLmNsZWFyICIlcyIAUHJvY2VzcyAlcyBzeW1i
b2xzIGRlbGV0ZWQuACEhQ291bGQgbm90IGdldCBMeW54T1MgdmVyc2lvbiEARC5MT0FELkVMRiAl
cyAleDowIC9jcHAgL25vY29kZSAvbm9jbGVhciAAAABELkxPQUQuWENPRkYgJXMgJXg6MCAvY3Bw
IC9ub2NvZGUgL25vY2xlYXIgAGtleTogTE9BRENNRHxBdXRvTG9hZHxNTVVTQ0FOAAAATU1VIHNj
YW4gb3B0aW9uIHNldC4AAAAAYXV0b2xvYWRlciBzZXQuAGxvYWQgY29tbWFuZCBzZXQuAAAAcGFy
YW1ldGVyIG1pc3NpbmcAAABTb3JyeTogcHJvY2VzcyBub3QgZm91bmQuAAAAT0ZGAERSVgBOT1BS
T0NFU1MAAABOUAAATk9EUklWRVIAAAAATkRSVgAAAABOT05FAAAAAExPQURDTUQAQVVUT0xPQUQA
AAAATU1VU0NBTgBERUxFVEUAAERFTABPUFRJT04AAE8AAABUQVNLLlkuTwAAAABfUlRPU19MWU5Y
X19GVU5DAAAAAFNZTUJPTAAAWQAAAHNZbWJvbAAAQCg9KV9fUlRPU19MWU5YX19UQVNLX1kA//++
LP//vhz//75U//++aP//viz//758//++kP//vqD//760//++yP//vtxAKD0pX19SVE9TX0xZTlhf
X1RBU0tfWV9PAAAAQCg9KV9fUlRPU19MWU5YX19UQVNLX1lfREVMAEAoPSlfX1JUT1NfTFlOWF9f
VEFTS19ZX0xPQUQAAAAARC5MT0FELlhDT0ZGICVzICV4OjAgL2NwcCAvbm9jb2RlIC9ub2NsZWFy
IABELkxPQUQuRUxGICVzICV4OjAgL2NwcCAvbm9jb2RlIC9ub2NsZWFyIAAAAGAuZXhlY3VzZXJg
AGAuY3R4X2V4ZWN1c2VyYABgY3R4X2V4ZWN1c2VyYAAAXFwlc1xHbG9iYWxcbWFpbgAAAABcXCVz
XCVzXG1haW4AAAAAYi5kIDB4JXgAAAAAYi5zIDB4JXgAAAAAR28AAGIAAABQcm9jZXNzIHdhdGNo
IHZpZXcgbm90IG9wZW5lZAAAAFBsZWFzZSBzcGVjaWZ5IGEgcHJvY2VzcwAAAABNYXguIG51bWJl
ciBvZiB3YXRjaGVkIHByb2Nlc3NlcyByZWFjaGVkAAAAAFByb2Nlc3MgYWxyZWFkeSBpbiB3YXRj
aCBsaXN0AAAAYWRkV2F0Y2g6IGFkZGVkICU4eABiLnMgMHgleCAAAABQcm9jZXNzICVzIGFkZGVk
IHRvIHdhdGNoIGxpc3QAAFByb2Nlc3MgJTh4IGFkZGVkIHRvIHdhdGNoIGxpc3QAVEFTSy5Qcm9j
ZXNzICV4AFRBU0suVwAAICAtLQAAAABubyBwcm9jZXNzAAAgLS0Abm8gc3ltYm9scwAAbG9hZGVk
AAA/Pz8AUGxlYXNlIHNwZWNpZnkgYSBwcm9jZXNzIG5hbWUAAABQcm9jZXNzICU4eCByZW1vdmVk
IGZyb20gd2F0Y2ggbGlzdABQcm9jZXNzICVzIHJlbW92ZWQgZnJvbSB3YXRjaCBsaXN0AABiLmQg
MHgleCAAAABCdXR0b24gRElTYWJsZUJQAAAAAEJ1dHRvbiBESVNhYmxlAABCdXR0b24gRU5hYmxl
QlAAQnV0dG9uIEVOYWJsZQAAAHByb2Nlc3MgICAgAHN0YXRlICAgICAAAGVudHJ5IAAARU5hYmxl
AABESVNhYmxlAEVOYWJsZUJQAAAAAERJU2FibGVCUAAAAHByb2Nlc3MgZXhlY3V0aW9uIGJyZWFr
cG9pbnQgbm90IGZvdW5kLgBWAAAAQUREAERJU0FCTEUARElTAEVOQUJMRQAARU4AAERJU0FCTEVC
UAAAAERJU0JQAAAARU5BQkxFQlAAAAAARU5CUAAAAABXQVRDSAAAAFcAAABXYXRjaAAAAEAoPSlf
X1JUT1NfTFlOWF9fVEFTS19XAP//wUz//8MY///A/P//wQz//8Ec///BLP//wTxAKD0pX19SVE9T
X0xZTlhfX1RBU0tfV19FTkJQAAAAAEAoPSlfX1JUT1NfTFlOWF9fVEFTS19XX0VOAABAKD0pX19S
VE9TX0xZTlhfX1RBU0tfV19ESVNCUAAAAEAoPSlfX1JUT1NfTFlOWF9fVEFTS19XX0RJUwBAKD0p
X19SVE9TX0xZTlhfX1RBU0tfV19ERUwAQCg9KV9fUlRPU19MWU5YX19UQVNLX1dfQUREAEAoPSlf
X1JUT1NfTFlOWF9fVEFTS19XX1YAAABNVEQgTHlueE9TIFZlcnNpb24gJXMgICVzICAKCgAAAG1h
Z2ljICAgICAgICAgICAgJTh4ICAlOHggIAAKY3VycmVudCBwcm9jZXNzICAlOHggICU4eCAgAAAA
AHByb2Nlc3MgdGFibGUgICAgJTh4ICAAACU4eCAgAAAAPyAgICAgICAgIAAAbnVtIHByb2NzICAg
ICAgICAlOHggICU4eCAgAAp0aHJlYWQgdGFibGUgICAgICU4eCAgJTh4ICAAAAAAbnVtIHRocmVh
ZHMgICAgICAlOHggIAAAbnVtIHZtcyAgICAgICAgICAlOHggIAAAcGFnZSB0YWJsZXMgICAgICAl
OHggICAgICAgICAgICAAAAAAcGFnZSB0YWJsZXMgMiAgICAlOHggICAgICAgICAgICAAAAAAZHJp
dmVycyAgICAgICAgICAlOHggIAAAc2l6ZW9mIGRyaXZlciAgICAlOHggIAAAICAgICAgICAgIAoA
bHlueF9vc25hbWUATHlueE9TIG5hbWUgICAgICAlOHggICAgICAgICAgICAAAAAACkx5bnhPUyB2
ZXJzaW9uICAgJTh4ICAgICAgKCUyZCkgIAAAVEVTVAAAAABhcmd1bWVudCAgICAgICAgIHZhbHVl
ICAgICBjb250ZW50ICAgc3ltYm9sAC4lZABnZXRUYXNrVHJhY2VJZDogbWFnaWM9JTh4LCBqb2I9
JTh4AABUcmFuc2xhdGlvbkxpc3Q6IGVudHJ5AABUcmFuc2xhdGlvbkxpc3Q6IHBhcl9zZXR1cCBm
YWlsZWQAAABUcmFuc2xhdGlvbkxpc3Q6IHN5bWJvbCBwYWdlX3RhYmxlcyBtaXNzaW5nAFRyYW5z
bGF0aW9uTGlzdDogam9iPSVkAFRyYW5zbGF0aW9uTGlzdDogcGd0YWIocGFyX3BhZ2V0YWIpPT0l
OHgAAAAAVHJhbnNsYXRpb25MaXN0OiBwZ3RhYihwYXJfcGFnZXRhYjIpPT0lOHgAAABUcmFuc2xh
dGlvbkxpc3Q6IGpvYj0lOHgsIEwxVEI9JTh4AABUcmFuc2xhdGlvbkxpc3Q6IGV4aXQAAABoYXJk
d2FyZXRocmVhZAAAaW5pdE1vZHVsZUxpc3Q6IGVudHJ5AAAAaW5pdE1vZHVsZUxpc3Q6IGV4aXQA
AAAAZ2V0TW9kdWxlSW5mbzogbWFnaWM9MHglOHgsIHR5cGU9JWQuAAAAAHN0cnVjdCBwZW50cnku
aQBzdF90LnBhZGRyAABzdF90LnBsaW1pdABnZXRNb2R1bGVJbmZvOiBtYWdpYyAlOHgsIGNvZGVh
ZGRyICU4eCwgc3BhY2VpZCAleCwgbmFtZSAlcwBnZXRNb2R1bGVMaXN0OiBzdXBlcm1hZ2ljPSU4
eAAAAGdldE1vZHVsZUxpc3Q6IHByb2Nlc3M9JXgsIGlfbW9kPSVkAGdldE1vZHVsZUxpc3Q6IGxp
YnJhcmllcyBmb3IgcHJvY2Vzcz0leABnZXRNb2R1bGVMaXN0OiBkcml2ZXJzLgBnZXRNb2R1bGVM
aXN0OiBkcml2ZXI9JXgsIGlfbW9kPSVkAERBVEEAAHXcAAB16AAAdfAAAHX8AAAAJAAAddAAAAAD
AAAAFwAAAAAAAHWkAAAH+AAAdcAAAAADAAAAFwAAAAAAAHWkAAAZgAAAdbQAAAADAAAAFwAAAAAA
AHWkAAAVcAAAdZQAAAADAAAAAwAAAAMAAHWkAAAVGAAAdYgAABRwAAB1fAAAFJwAAHVwAAAU8AAA
dhgAAHYkAAB2LAAAAAAAAAACAAAAAAAAdUgAAAAAAAAAAgAAAAAAAAAAAAABOAAAAkAAAAKcAAAA
AgAAAAAAAHVIAAAAAAAAAAMAWgAAAAQA9AAAHoQAAAADAFoAAAAEAPQAAB7UAAB29AAAdwAAAHcI
AAB3EAAAdxgAAHcgAAB3LAAAdzgAAHdEAAB3UAAAAAAAAAAAAAB3WAAAgoAAAHdgAAB3aAAAGtQA
AAACAAAAAAAAdUgAAAAAAAAAAwBaAAAABAFoAAAkJAAAAAMAWgAAAAQBaAAAJHQAAHb0AAB34AAA
d+gAAHcQAAB38AAAdyAAAHcsAAB3OAAAd0QAAHdQAAAAAAAAAAAAAHf4AAB5+AAAeAAAAHgIAAAg
AAAAefwAAHoEAAB6CAAAehAAACXwAAB56AAAAAMAAAAHAAAAAAAAeZwAACiYAAB51AAAAAMAAAAH
AAAAAAAAeZwAACjkAAB5wAAAAAMAAAAHAAAAAAAAeZwAACkwAAB5sAAAAAMAAAAHAAAAAAAAeZwA
ACl8AAB5iAAAAAMAAAAHAAAAAAAAeZwAACnIAAAAAwBQAAAABAJ4AAAt7AAAAAIAAAAAAAB1SAAA
AAAAAAADAFAAAAAEAngAACvMAAAAAgAAAAAAAHlsAAAAAAAAeSgAAHk0AAB5PAAAeUQAAHlMAAB5
WAAAeWQAAAAAAAB7aAAAAAEAAHtwAAAAAgAAAAAAAAAAAAAAAgAAAAAAAHtIAAAAAAAAAAEAPAAA
AAB7nAAAOfQAAAACAAAAAAAAe1wAAAAAAAAAAgAAAAAAAAAAAAA59AAAe3gAAHt4AAB7eAAAe3wA
AC+4AAB+QAAAAAEAAH5QAAAAAgAAflgAAAACAAB+XAAAAAcAAH5kAAAABwAAAAAAAAAAAAB+NAAA
AAEAAH48AAAAAwAAdZAAAAADAAB+SAAAAAQAAAAAAAAAAAAAd1gAAAABAACCgAAAAAEAAHn8AAAA
BQAAfgQAAAAFAAB5mAAAAAYAAH4IAAAABwAAfhQAAAAHAAB+GAAAAAkAAH4kAAAACQAAfiwAAAAK
AAAAAAAAAAAAAH5gAAAAAQAAfgAAAAACAAAAAAAAAAAAAAACAAAAAAAAfXQAAAAAAAAAAgAAAAAA
AH28AAAAAAAAAAIAAAAAAAB9rAAAAAAAAAACAAAAAAAAfdAAAAAAAAAAAgAAAAAAAH2UAAAAAAAA
fogAAH6QAAB+lAAAfpwAADqwAAB+aAAAAAMAAAAXAAAAAAAAfnQAAD4AAAAAAgAAAAAAAHtcAAAA
AAAAAAIAAAAAAAB95AAAAAAAAAACAAAAAAAAfdAAAAAAAAAAAgAAAAAAAAAAAAA/RAAAAAIAAAAA
AAAAAAAAQCgAAHtoAAAAAAAAglgAAAAAAACCXAAAAAEAAH5YAAAAAgAAflAAAAACAACCYAAAAAMA
AIJoAAAAAwAAgmwAAAAEAACCdAAAAAQAAIJ4AAAABQAAgoQAAAAFAACCjAAAAAYAAIKYAAAABgAA
AAAAAAAAAAAAAgAAAAAAAAAAAABNWAAAAAIAAAAAAACCMAAAAAAAAAACAAAAAAAAAAAAAFfcAAAA
AgAAAAAAAAAAAABZgAAAAAIAAAAAAAAAAAAAVswAAAACAAAAAAAAAAAAAFhgAAAAAgAAAAAAAAAA
AABTLAAAAAMKKAAAAAQF1AAAUBwAAAACAAAAAAAAexgAAAAAAACCCAAAWdgAAIIQAABYNAAAghgA
AFlUAACCJAAAV7AAAAAAAAAAAAAAgqAAAIKoAACCrAAAgrQAAEMsAACB6AAAdxgAAIH0AACCAAAA
AAAAAAABADwAAAAAhYgAAFpkAACFgAAAhYAAAHsYAAB7GAAAWjAAAIbwAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAGdgAABlmAAAAAEAAAABAAAAAVQzMkU=
)
HELP.FILTER.Add rtoslynx
RETURN
)
menu_64bit: ;(header, infix)
(
PMACRO.LOCK
(
PRIVATE &sHeader &sInfix &sMenuName
PARAMETERS &sHeader &sInfix
&sMenuName=TASK.TRANSPOSE.INFIX("&sHeader")
IF MENU.EXIST("TASK.&(sMenuName)")
MENU.Delete.NAME TASK.&(sMenuName)
IF MENU.EXIST("EXT.&(sMenuName)")
MENU.Delete.NAME EXT.&(sMenuName)
MENU.ReProgram
(&+
; --------------------------------------------------------------------------------
; @Title: Menu File for TRACE32 LynxOS Awareness
; @Description: -
; @Keywords: LynxOS menu awareness
; @Author: DIE
; @Copyright: (c) 1989-2024 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: lynx.m 10155 2024-05-28 13:02:40Z rdienstbeck $
NAME "TASK.&sMenuName"
IF !MENU.EXIST("TASK.&sMenuName")
(
add
menu
(
popup "&sHeader"
(
default
menuitem "Display &Processes" "TASK.&(sInfix)Process"
menuitem "Display &Threads" "TASK.&(sInfix)Thread"
menuitem "Display &Drivers" "TASK.&(sInfix)Driver"
separator
popup "&Process Debugging"
(
menuitem "[:symbols]&Load Symbols..."
(
dialog
(
header "TASK.&(sInfix)sYmbol.LOAD"
pos 0. 0. 26. 3.
box "Process name"
pos 1. 1. 16. 1.
procl: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*"
ENTRY %line &file
dialog.set procl "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &procl
&procl=dialog.string(procl)
TASK.&(sInfix)sYmbol.LOAD "&procl"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "DIALOG.END"
)
)
menuitem "[:symbols]&Delete Symbols..."
(
dialog
(
header "TASK.&(sInfix)sYmbol.DELete"
pos 0. 0. 26. 3.
box "Process name"
pos 1. 1. 16. 1.
procd: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*"
ENTRY %line &file
dialog.set procd "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &procd
&procd=dialog.string(procd)
TASK.&(sInfix)sYmbol.DELete "&procd"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
popup "&Watch Processes"
(
menuitem "[:plus]&Add..."
(
dialog
(
header "Add Process to Watch"
pos 0. 0. 24. 3.
box "Process name"
pos 1. 1. 22. 1.
wproca: defedit "" ""
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &wproca
&wproca=dialog.string(wproca)
TASK.&(sInfix)Watch.View "&wproca"
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "[:remove]&Remove..."
(
dialog
(
header "Delete Process from Watch"
pos 0. 0. 24. 3.
box "Process name"
pos 1. 1. 22. 1.
wprocd: defedit "" ""
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &wprocd
&wprocd=dialog.string(wprocd)
TASK.&(sInfix)Watch.DELete "&wprocd"
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
)
)
separator
menuitem "Debug Driver on install..."
(
dialog
(
header "Debug Driver on install"
pos 0. 0. 24. 3.
box "Driver name (without .dldd)"
pos 1. 1. 22. 1.
ddrv: defhotedit ""
(
if dialog.string(ddrv)!=""
dialog.enable bok
else
dialog.disable bok
)
pos 2. 3. 8.
bok: defbutton "Ok"
(
PRIVATE &ddrv &script
&ddrv=dialog.string(ddrv)
&script=OS.FILE.JOINPATH(TASK.&(sInfix)GETDIR(),"drv_debug.cmm")
DO "&script" &ddrv
dialog.end
)
pos 15. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
separator
popup "S&ymbol Autoloader"
(
menuitem "[:symbols]List Components" "sYmbol.AutoLoad.List"
menuitem "[:init]Check Now!" "sYmbol.AutoLoad.CHECK"
menuitem "[:config]Config..." "sYmbol.AutoLOAD.config"
menuitem "[:objects]Components..."
(
dialog
(
header "TASK.sYmbol.Option AutoLoad"
pos 0. 0. 25.
proc: checkbox "Process (Processes)"
(
if dialog.boolean(proc)
TASK.&(sInfix)sYmbol.Option AutoLoad Process
else
TASK.&(sInfix)sYmbol.Option AutoLoad NoProcess
)
;lib: checkbox "Library (All Libraries)"
;(
; if dialog.boolean(lib)
; TASK.sYmbol.Option AutoLoad Library
; else
; TASK.sYmbol.Option AutoLoad NoLibrary
; dialog.set clib "FALSE"
;)
;clib: checkbox "CurrLib (Libraries of Current Process)"
;(
; if dialog.boolean(clib)
; TASK.sYmbol.Option AutoLoad CurrLib
; else
; TASK.sYmbol.Option AutoLoad NoLibrary
; dialog.set lib "FALSE"
;)
driv: checkbox "DRiVer (Drivers)"
(
if dialog.boolean(driv)
TASK.&(sInfix)sYmbol.Option AutoLoad DRiVer
else
TASK.&(sInfix)sYmbol.Option AutoLoad NoDRiVer
)
)
dialog.set proc ((task.&(sInfix)y.o(autoload)&0x1)!=0)
;dialog.set lib ((task.&(sInfix)y.o(autoload)&0x2)!=0)
;dialog.set clib ((task.&(sInfix)y.o(autoload)&0x4)!=0)
dialog.set driv ((task.&(sInfix)y.o(autoload)&0x8)!=0)
)
)
;separator
;popup "&Stack Coverage"
;(
; menuitem "&List Stacks"
; (
; TASK.&(sInfix)STacK.PATtern 0xff
; TASK.&(sInfix)STacK
; )
; menuitem "Add Thread" "TASK.&(sInfix)STacK.ADD"
; menuitem "Remove Thread" "TASK.&(sInfix)STacK.ReMove"
; menuitem "Reset Coverage"
; (
; PRIVATE &yes
; DIALOG.YESNO "Overwrite unused stack space" "with stack fill pattern?"
; ENTRY &yes
; IF !&yes
; ENDDO
; TASK.&(sInfix)STacK.Init
; )
;)
)
popup "Trace"
(
popup "List"
(
separator
menuitem "&Task Switches" "Trace.List List.TASK"
menuitem "&Default and Tasks" "Trace.List List.TASK DEFault"
)
)
popup "Perf"
(
separator
popup "&Task Runtime"
(
menuitem "&Prepare"
(
if t.method.analyzer()
(
Analyzer.AutoInit on
)
Break.Delete /Alpha
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
)
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASK"
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASK"
menuitem "[:achart]Tracking with Trace &List"
(
Trace.List List.TASK DEFault /Track
Trace.CHART.TASK /Track
)
)
popup "Task &Function Runtime"
(
menuitem "&Prepare"
(
if t.method.analyzer()
(
Analyzer.AutoInit on
Analyzer.STATistic.PreFetch on
)
Break.Delete /Alpha /Beta /Charly
Break.SetFunc
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
)
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASKFUNC"
menuitem "[:perf]Show as &Tree" "Trace.STATistic.TASKTREE"
menuitem "[:perf]Show &Detailed Tree" "Trace.STATistic.TASKTREE ALL"
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASKFUNC"
menuitem "[:alist]Show N&esting" "Trace.List List.TASK FUNC TI.FUNC"
)
popup "Task &Status"
(
menuitem "&Prepare"
(
if t.method.analyzer()
(
Analyzer.AutoInit on
)
Break.Delete /Alpha
Break.Set task.config(magic)++(task.config(magicsize)-1) /Alpha
TASK.TASKState
)
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASKSTATE"
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASKSTATE"
menuitem "[:achart]Tracking with Trace &List"
(
Trace.List List.TASK DEFault /Track
Trace.CHART.TASKSTATE /Track
)
)
)
popup "&Help"
(
MENUITEM "[:manual]OS Awareness Manual LynxOS" "HELP __RTOS_LYNX_"
)
)
menu "task.&(sInfix)p"
(
default
menuitem "Display detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.&(sInfix)Process &magic
)
menuitem "Display process struct"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (struct pentry*)(&address)
)
separator
menuitem "Load Process Symbols" "TASK.&(sInfix)sYmbol.LOAD track.address()"
menuitem "Delete Process Symbols" "TASK.&(sInfix)sYmbol.DELete track.address()"
menuitem "Add to Watched Processes"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.&(sInfix)Watch.View &address
)
menuitem "Delete from Watched Processes" "TASK.&(sInfix)Watch.DELete track.address()"
separator
menuitem "Dump process entry"
(
PRIVATE &address
&address=track.address()
Data.dump &address /Long /DIALOG
)
)
menu "task.&(sInfix)t"
(
default
menuitem "Display detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.&(sInfix)Thread &magic
)
menuitem "Display thread struct"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (struct st_entry*)(&address)
)
separator
menuitem "Display Stack Frame"
(
PRIVATE &magic
&magic=address.offset(track.address())
Var.Frame /Locals /Caller /TASK &magic
)
menuitem "Display Registers"
(
PRIVATE &magic
&magic=address.offset(track.address())
Register /TASK &magic
)
menuitem "Switch Context"
(
PRIVATE &magic
&magic=address.offset(track.address())
Register.TASK &magic
)
;separator
;menuitem "Add to Stack Cov"
;(
; PRIVATE &thread
; &thread=address.offset(track.address())
; TASK.&(sInfix)STacK.ADD &thread
;)
;menuitem "Rm from Stack Cov"
;(
; PRIVATE &thread
; &thread=address.offset(track.address())
; TASK.&(sInfix)STacK.ReMove &thread
;)
separator
menuitem "Dump thread entry"
(
PRIVATE &address
&address=track.address()
Data.dump &address /Long /DIALOG
)
)
menu "task.&(sInfix)d"
(
default
menuitem "Display detailed"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.Driver &magic
)
menuitem "Display driver struct"
(
PRIVATE &address
&address=track.address()
Var.View %Open %String (struct driver_entry*)&address
)
menuitem "Dump driver entry"
(
PRIVATE &address
&address=track.address()
Data.dump &address /Long /DIALOG
)
)
menu "task.&(sInfix)w"
(
default
menuitem "Display Process"
(
PRIVATE &magic
&magic=address.offset(track.address())
TASK.&(sInfix)Process &magic
)
menuitem "Delete from List" "TASK.Watch.DELete track.address()"
)
)
)
)
PMACRO.UNLOCK
RETURN
)
autoload_64bit: ;(options)
(
PARAMETERS &sOptions
sYmbol.AutoLOAD.CHECKEmBeDded &sOptions
(
; --------------------------------------------------------------------------------
; @Title: Lynx Symbol Autoloader Script
; @Description:
; Symbol Autoloader script, called by TRACE32 if symbols are to be loaded.
; This script is part of the TRACE32 LynxOS Awareness.
;
; @Keywords: LynxOS autoloader awareness
; @Author: DIE
; @Copyright: (C) 1989-2024 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: autoload.cm 10188 2024-06-11 14:59:28Z rdienstbeck $
// define local macros
PRIVATE &sLine
PRIVATE &sParamName &nParamCodeAddress &nParamDataAddress &nParamSpace &nParamType &nParamMachine
PRIVATE &sBasename &sSymbolFilepath &sSymbolFilename &sProgramName
// get filename and relocation information
// these parameters are passed from TRACE32 when calling this skript
ENTRY %LINE &sLine
&sParamName=STRing.SCANandExtract("&sLine","NAME=","")
&nParamType=STRing.SCANandExtract("&sLine","TYPE=","0.")
&nParamCodeAddress="0x"+STRing.SCANandExtract("&sLine","CODEADDRESS=0x","0")
&nParamDataAddress="0x"+STRing.SCANandExtract("&sLine","DATAADDRESS=0x","0")
&nParamSpace="0x"+STRing.SCANandExtract("&sLine","SPACEID=0x","0")
&nParamMachine=STRing.SCANandExtract("&sLine","MACHINE=","")
// strip quotes
&sParamName=STRing.Replace("&sParamName","""","",0.)
&nParamType=&nParamType
&nParamCodeAddress=&nParamCodeAddress
&nParamDataAddress=&nParamDataAddress
&nParamSpace=&nParamSpace
IF ("&nParamMachine"!="")
&nParamMachine=&nParamMachine
//PRINT "autoload: " &sParamName " " &nParamType " " &nParamCodeAddress " " &nParamDataAddress " " &nParamSpace " " &nParamMachine
// &sParamName: name of process/file
// &nParamType: type of file: 0=kernel, 1=process, 2=library, 3=driver
// &nParamCodeAddress: text segment address
// &nParamDataAddress: data segment address
// &nParamSpace: space id of process
// &nParamMachine: machine id of process
// no processing for kernel
IF (&(nParamType)==0.)
ENDDO
// check prerequisites
IF !SYStem.Option.MMUSPACES()
(
PRINT %ERROR "Error: autoloader requires SYStem.Option MMUSPACES ON as a prerequisite"
ENDDO
)
IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES)
(
IF SYStem.Option.MACHINESPACES()&&("&nParamMachine"=="")
(
PRINT %ERROR "Error: error in autoloader, please contact support@lauterbach.com"
ENDDO
)
)
// set space id to zero if not given
IF "&nParamSpace"==""
&nParamSpace=0
// get symbol file name and program name
&sBasename=STRing.CUT("&sParamName",-STRing.LENgth(OS.FILE.EXTENSION(&sParamName)))
IF (&(nParamType)==1.) // processes
(
&sProgramName=OS.FILE.NAME("&sParamName")
&sSymbolFilename="&sParamName"
)
IF ((&nParamType&0xff)==2.) // libraries
(
&sProgramName=OS.FILE.NAME("&sBasename")
&sSymbolFilename="&sParamName"
if &nParamSpace!=0.
SPRINTF &sProgramName "%s_%d" "&sProgramName" &nParamSpace
)
// delete program if it already exists or other code is already there
IF sYmbol.EXIST("\\&sProgramName")
(
LOCAL &sProgramNameQuoted
&sProgramNameQuoted="`\\&sProgramName`"
sYmbol.Delete &sProgramNameQuoted
)
GROUP.Delete "&sProgramName"
// search file in source search path and open dialog when not there
IF OS.FILE.EXTENSION("&sSymbolFilename")==""
(
// try .sym file
&sSymbolFilepath=sYmbol.SEARCHFILE("&sSymbolFilename.sym")
)
IF !OS.FILE("&sSymbolFilepath")
(
// try plain process name
&sSymbolFilepath=sYmbol.SEARCHFILE("&sSymbolFilename")
)
IF !OS.FILE("&sSymbolFilepath")
(
// file not found, ask for it
LOCAL &sDialogFile &sSourcePath
&sDialogFile=OS.FILE.NAME("&sSymbolFilename")
WinPOS ,,,,,, filebox normal "Searching symbols for &sParamName"
DIALOG.File "*\&sDialogFile.*"
ENTRY %LINE &sSymbolFilepath
IF "&sSymbolFilepath"==""
ENDDO
&sSourcePath=OS.FILE.PATH("&sSymbolFilepath")
sYmbol.SourcePATH.Set &sSourcePath
)
// load symbol file
IF (&(nParamType)==1.) // process
(
PRIVATE &version &sAccess &sRange
&version=task.lynxos(version)
GOSUB getAccess "&nParamType" "&nParamSpace" "&nParamMachine"
RETURNVALUES &sAccess
IF (CPUFAMILY()=="POWERPC")&&((&version==31.)||(&version==20.)||(&version==21.)||(&version==22.))
(
; LynxOS 3.1 or LynxOS-178 2.x on PowerPC
Data.LOAD.XCOFF "&sSymbolFilepath" &sAccess /nocode /noclear /name &sProgramName
)
ELSE
(
; LynxOS 4.x or LynxOS 5.0 or LynxOS-178 on Arm
Data.LOAD.Elf "&sSymbolFilepath" &sAccess /cpp /nocode /noclear /name &sProgramName
)
;IF task.y.o(mmuscan)==1 // scan only if MMU.TABLEWALK not configured
; MMU.TaskPageTable.SCAN &space:0
&sRange="&sAccess"+"--0xffffffff"
GROUP.Create "&sProgramName" &sRange /GREEN
)
IF ((&nParamType&0xff)==2.) // libraries
(
PRIVATE &sAccess
GOSUB getAccess "(&nParamType&0xff)" "&nParamSpace" "&nParamMachine" "&nParamCodeAddress"
RETURNVALUES &sAccess
Data.LOAD.Elf "&sSymbolFilepath" &sAccess /nocode /noclear /name &sProgramName
)
ENDDO
; --------------------------------------------------------------------------------
getAccess: ;(type, space, machine, [nOffset])
(
PRIVATE &sAccess
PARAMETERS &nType &nSpace &nMachine &nOffset
IF "&nOffset"==""
&nOffset=0x0
IF (&nType==(1.||2.))
(
; Process OR Library
IF "&nMachine"!=""
(
&sAccess=TASK.MACHINE.ACCESS(&nMachine)
IF STRing.ComPare("&sAccess", "Z*")
&sAccess="ZU" // running in Secure
ELSE IF STRing.ComPare("&sAccess", "N*")||STRing.ComPare("&sAccess", "H*")
&sAccess="NU" // running in NonSecure EL1 / NonSecure EL2 with VHE
ELSE
&sAccess="U" // no Trustzone with iAMP
SPRINTF &sAccess "%s:%#x:::" "&sAccess" &nMachine
)
ELSE
(
IF STATE.MONITOR.RUN()
(
&sAccess="U"
)
ELSE IF PRACTICE.FUNCtion.AVAILable(TASK.ACCESS.ZONE)
(
&sAccess=TASK.ACCESS.ZONE()
IF STRing.ComPare("&sAccess", "Z*")
&sAccess="ZU" // running in Secure
ELSE IF STRing.ComPare("&sAccess", "N*")||STRing.ComPare("&sAccess", "H*")
&sAccess="NU" // running in NonSecure EL1 / NonSecure EL2 with VHE
ELSE
&sAccess="U"
)
ELSE
(
&sAccess="U"
)
&sAccess="&(sAccess):"
)
IF (&nType==(2.))&&("&nSpace"=="")
SPRINTF &sAccess "%s%#x" "&sAccess" &nOffset
ELSE
SPRINTF &sAccess "%s%#x::%#x" "&sAccess" &nSpace &nOffset
)
ELSE IF (&nType==3.)
(
; Modules
IF "&nMachine"!=""
(
&sAccess=TASK.MACHINE.ACCESS(&nMachine)
IF STRing.ComPare("&sAccess", "ZH*")
&sAccess="ZH" // running in Secure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "Z*")
&sAccess="ZS" // running in Secure EL2
ELSE IF STRing.ComPare("&sAccess", "*H*")&&(ARMARCHVERSION()>=0x84)
&sAccess="NH" // running in NonSecure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "*H*")
&sAccess="H" // running in NonSecure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "N*")
&sAccess="NS" // running in NonSecure EL1
ELSE
&sAccess="S" // no Trustzone with iAMP
SPRINTF &sAccess "%s:%#x:::" "&sAccess" &nMachine
)
ELSE
(
IF PRACTICE.FUNCtion.AVAILable(TASK.ACCESS.ZONE)
(
&sAccess=TASK.ACCESS.ZONE()
IF STRing.ComPare("&sAccess", "ZH*")
&sAccess="ZH" // running in Secure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "Z*")
&sAccess="ZS" // running in Secure EL2
ELSE IF STRing.ComPare("&sAccess", "*H*")&&(ARMARCHVERSION()>=0x84)
&sAccess="NH" // running in NonSecure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "*H*")
&sAccess="H" // running in NonSecure EL2 with VHE
ELSE IF STRing.ComPare("&sAccess", "N*")
&sAccess="NS" // running in NonSecure EL1
ELSE
&sAccess="S"
)
ELSE
(
&sAccess="S"
)
&sAccess="&(sAccess):"
)
SPRINTF &sAccess "%s0x0::%#x" "&sAccess" &nOffset
)
RETURN "&sAccess"
)
)
RETURN
)
execute_container_selection:
(
PARAMETERS &sParameters &sAccess &sMachine &sArguments
PRIVATE &ptrsize
IF !Var.EXIST(caddr_t)&&!sYmbol.EXIST(currtptr)&&!sYmbol.EXIST(proctab)
(
PRINT %WARNING "LynxOS: kernel symbol types not found, detect address width from CPU selection"
RETURN "0."
)
IF Var.EXIST(caddr_t)
&ptrsize=Var.SIZEOF(caddr_t)
ELSE IF sYmbol.EXIST(currtptr)
&ptrsize=sYmbol.SIZEOF(currtptr)
ELSE
&ptrsize=sYmbol.SIZEOF(proctab)
IF &ptrsize==4.
(
PRINT "LynxOS: detected 32bit address size"
RETURN "32."
)
ELSE IF &ptrsize==8.
(
PRINT "LynxOS: detected 64bit address size"
RETURN "64."
)
ELSE
(
PRINT %WARNING "QNX: unknown kernel symbol type size, detect address width from CPU selection"
RETURN "0."
)
RETURN "-1."
)
menu_delete: ;(header)
(
PRIVATE &sHeader &sMenuName
PARAMETERS &sHeader
&sMenuName=TASK.TRANSPOSE.INFIX("&sHeader")
IF MENU.EXIST("TASK.&(sMenuName)")
MENU.Delete.NAME TASK.&(sMenuName)
IF MENU.EXIST("EXT.&(sMenuName)")
MENU.Delete.NAME EXT.&(sMenuName)
RETURN
)
autoload_delete: ;(options)
(
PARAMETERS &sOptionMachine
IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES)
(
IF !SYStem.Option.MACHINESPACES()
&sOptionMachine=""
)
ELSE
(
&sOptionMachine=""
)
sYmbol.AutoLOAD.CHECKCoMmanD "DO autoload.cmm " &sOptionMachine
RETURN
)