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

872 lines
41 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." "Riot OS"
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)
(
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="Riot OS"
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.)
(
PRINTF %ERROR "%s: No support for %ubit, please contact support@lauterbach.com." "Riot OS" &nVariant
)
)
ELSE IF (&bExtLoad)
(
PRIVATE &sMachineName &sInfix &sOptionName &sOptionMachine
&sInfix=""
&sMachineName="Riot OS"
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.)
(
PRINTF %ERROR "%s: No support for %ubit, please contact support@lauterbach.com." "Riot OS" &nVariant
)
)
ELSE IF (&bCleanup)
(
PRIVATE &sMachineName &sOptionMachine
&sMachineName="Riot OS"
IF ("&sName"!="")
(
&sMachineName="&(sName)"
)
IF ("&sMachine"!="")
(
&sOptionMachine="/MACHINE &sMachine"
)
GOSUB menu_delete "&sMachineName"
GOSUB autoload_delete "&sOptionMachine"
)
ENDDO
extension_32bit: ; (options)
(
PARAMETERS &sParameters &sOptions
EXTension.LOAD &sParameters &sOptions
(
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
AAAAAGJhdW1laXN0ZXIAAAAAAABlZGstbGludXg2NGJpdC03AAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR0NDIDkuNS4wAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfoAAAABgAAAA0AAABO
AAAn0gAAB+gAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUJJUmlvdCBPUwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACEh
QVJNIENvbnRleHQ6IFVwZGF0ZSBuZWVkZWQhAAAAQ09SVEVYTQByNAAAcjUAAHI2AAByNwAAcjgA
AHI5AAByMTAAcjExAHIxNAByMAAAcjEAAHIyAAByMwAAcjEyAHBjAAB4cHNyAAAAAHBzcABjcHNy
AAAAAHI4X3VzcgAAcjlfdXNyAAByMTBfdXNyAHIxMV91c3IAcjEyX3VzcgByMTNfdXNyAHIxNF91
c3IAaGFyZHdhcmV0aHJlYWQAADxNYWlsQm9YPgAAAFRBU0suTWFpbEJvWCAleABSSU9ULk1CT1hM
AAAgICAgICAgJThkLgBPdmVyZmxvdwAAAABNYWlsYm94IERldGFpbHMgOgAAAE1hZ2ljICAgICAg
ICAgOiAlOHggIAAAAFZhcmlhYmxlIG5hbWUgOiAlMTZzAAAAAFF1ZXVlIFNpemUgICAgOiAlOGQu
AAAAAEJsb2NrZWQgVGhyZWFkcyA6AAAAUmVjZWl2ZSAoZ2V0KSBCbG9ja2VkIHRocmVhZHM6ICVk
LgoAICAgICU4eCAgAAAAUmVjZWl2ZSAoZ2V0KSBCbG9ja2VkIHRocmVhZHM6IE9WRVJGTE9XAFNl
bmQgKHB1dCkgQmxvY2tlZCB0aHJlYWRzOiAgICAlZC4KAFNlbmQgKHB1dCkgQmxvY2tlZCB0aHJl
YWRzOiBPVkVSRkxPVwAAAABNZXNzYWdlcyA6AAAgICAgU2VuZGVyIFBJRCAgICAgIFR5cGUgICAg
ICBDb250ZW50CgAAICAgICAgICAgJTRkLiAgICAgJTRkLiAgICAgJTh4CgBtYWdpYyAgICAAAABW
YXJpYWJsZSAgICAgICAgAAAAAFF1ZXVlIFNpemUAAE5vLiBTZW5kIHRocmVhZHMAAAAATm8uIFJl
Y3YgVGhyZWFkcwAAAABTb3JyeTogQ291bGRuJ3QgZmluZCBhbnkgTWFpbGJveGVzAABTb3JyeTog
TWFpbGJveCBub3QgZm91bmQuAAAATUFJTEJPWABNQlgATWFpbEJvWABAKD0pX19SVE9TX1JJT1Rf
X1RBU0tfTUJYAAAAPG11dGV4PgBUQVNLLk11VGVYICV4AAAAUklPVC5NTABObyB0aHJlYWRzIGJs
b2NrZWQAACAgICAgICAgICAlNGQuAAAgICAgICBPdmVyZmxvdwAAQmxvY2tlZCB0aHJlYWRzOgAA
AABWYXIuVmlldyAlJU9wZW4gKHRocmVhZF90ICopJXgAACAgJTh4ICA6LSAgIAAAAABOYW1lL1Zh
cmlhYmxlIAAATmFtZS9WYXJpYWJsZSAgIAAAAABOby4gQmxvY2tlZCBUaHJlYWRzAFNvcnJ5OiBD
b3VsZG4ndCBmaW5kIGFueSBtdXRleGVzAAAAAFNvcnJ5OiBtdXRleCBub3QgZm91bmQuAE1VVEVY
AAAATVRYAE11VGVYAAAAQCg9KV9fUlRPU19SSU9UX19UQVNLX01UWAAAACAgICAgICAgRm91bmQg
TXV0ZXggYXQgOiAleAAgICAgICAgIEZvdW5kIFJtdXRleCBhdCA6ICV4AAAAACEhTnVtYmVyIG9m
IGFsbG93ZWQgUk11dGV4ZXMgZXhjZWVkZWQuIFBsZWFzZSBjb250YWN0IExhdXRlcmJhY2ggc3Vw
cG9ydCEAAAAgICAgICAgIEZvdW5kIE1haWxib3ggYXQgOiAleAAAACEhTnVtYmVyIG9mIGFsbG93
ZWQgTWFpbGJveGVzIGV4Y2VlZGVkLiBQbGVhc2UgY29udGFjdCBMYXV0ZXJiYWNoIHN1cHBvcnQh
AAAgICAgICAgIEZvdW5kIFNlbWFwaG9yZSBhdCA6ICV4ACEhTnVtYmVyIG9mIGFsbG93ZWQgU2Vt
YXBob3JlcyBleGNlZWRlZC4gUGxlYXNlIGNvbnRhY3QgTGF1dGVyYmFjaCBzdXBwb3J0IQAgICAg
ICAgIEZvdW5kIFJpbmdCdWZmZXIgYXQgOiAleAAAAAAhIU51bWJlciBvZiBhbGxvd2VkIFJpbmdC
dWZmZXJzIGV4Y2VlZGVkLiBQbGVhc2UgY29udGFjdCBMYXV0ZXJiYWNoIHN1cHBvcnQhAAAAAG11
dGV4X3QAKgAAAHJtdXRleF90AAAAAG1ib3hfdAAAc2VtYV90AAByaW5nYnVmZmVyX3QAAAAAICAg
ICAgICBGb3VuZCBNc2cgUSBhdCA6ICV4AHNjaGVkX251bV90aHJlYWRzAAAAdGhyZWFkX3Quc3AA
dGhyZWFkX3Quc3RhdHVzAHRocmVhZF90LnByaW9yaXR5AAAAdGhyZWFkX3QucGlkAAAAAHRocmVh
ZF90LmZsYWdzAAB0aHJlYWRfdC5ycV9lbnRyeQAAAHRocmVhZF90LndhaXRfZGF0YQAAdGhyZWFk
X3QubXNnX3dhaXRlcnMAAAAAdGhyZWFkX3QubXNnX3F1ZXVlAAB0aHJlYWRfdC5tc2dfYXJyYXkA
AHRocmVhZF90Lm5hbWUAAAB0aHJlYWRfdC5zdGFja19zdGFydAAAAAB0aHJlYWRfdC5zdGFja19z
aXplAG11dGV4X3QucXVldWUAAABybXV0ZXhfdC5tdXRleAAAcm11dGV4X3QucmVmY291bnQAAABy
bXV0ZXhfdC5vd25lcgAAcHJpb3JpdHlfcXVldWVfbm9kZV90Lm5leHQAAHByaW9yaXR5X3F1ZXVl
X25vZGVfdC5wcmlvcml0eQAAcHJpb3JpdHlfcXVldWVfbm9kZV90LmRhdGEAAG1ib3hfdC5yZWFk
ZXJzAABtYm94X3Qud3JpdGVycwAAbWJveF90LmNpYgAAbWJveF90Lm1zZ19hcnJheQAAAABtc2df
dC5zZW5kZXJfcGlkAAAAAG1zZ190LnR5cGUAAG1zZ190LmNvbnRlbnQucHRyAAAAbXNnX3QuY29u
dGVudC52YWx1ZQBtc2dfdAAAAHJpbmdidWZmZXJfdC5idWYAAAAAcmluZ2J1ZmZlcl90LnNpemUA
AAByaW5nYnVmZmVyX3Quc3RhcnQAAHJpbmdidWZmZXJfdC5hdmFpbAAAc2VtYV90LnZhbHVlAAAA
AHNlbWFfdC5zdGF0ZQAAAABzZW1hX3QubXV0ZXgAAAAAeHRpbWVyX3QubmV4dAAAAHh0aW1lcl90
LnRhcmdldAB4dGltZXJfdC5sb25nX3RhcmdldAAAAAB4dGltZXJfdC5jYWxsYmFjawAAAHh0aW1l
cl90LmFyZwAAAABjaWJfdC5yZWFkX2NvdW50AAAAAGNpYl90LndyaXRlX2NvdW50AAAAY2liX3Qu
bWFzawAAQ2hlY2tpbmcgZm9yIE11dGV4ZXMAAAAAQ2hlY2tpbmcgZm9yIFJtdXRleGVzAAAAQ2hl
Y2tpbmcgZm9yIE1haWxib3hlcwAAQ2hlY2tpbmcgZm9yIFNlbWFwaG9yZXMAQ2hlY2tpbmcgZm9y
IFJpbmdCdWZmZXJzAAAAAHNjaGVkX3RocmVhZHMAAAA8UmluZ0J1ZmZlcj4AAAAAVmFyLlZpZXcg
JSVPcGVuIChyaW5nYnVmZmVyX3QgKikleAAAUklPVC5SQkwAAAAAIDB4JTh4AAAgICAgICAgICAg
MHglOHgAICAgICAgJThkLgoAIEJ1ZmZlciAqICAgIAAAACBCdWZmZXIgc2l6ZSAgAAAgUmVhZCBQ
b2ludGVyIE9mZnNldCAAAAAgTm8uIEF2YWlsYWJsZSAgAAAAAE5vIFJpbmcgQnVmZmVycyBoYXZl
IGJlZW4gZm91bmQuAAAAAFJJTkdCVUZGRVIAAFJCAABSaW5nQnVmZmVyAABAKD0pX19SVE9TX1JJ
T1RfX1RBU0tfUkIAAAAAc2NoZWRfYWN0aXZlX3RocmVhZABtYWdpYwAAAC0tLSBUQVNLID0gJTh4
ID0gAAAAVEFTSy5TVEFDSy5QQVRURVJOIDB4NUEAVEFTSy5DT05GSUcAPFJNdXRleD4AAAAAVmFy
LlZpZXcgJSVPcGVuIChybXV0ZXhfdCAqKSV4AABSSU9ULlJNTAAAAAAgICAgICU4ZC4AAAAlNmQu
ICA6LSAAAAAgTm8gVGhyZWFkIAoAAAAAIE5vdCBGb3VuZAoAQ3VycmVudCBDb3VudAAAAE93bmVy
ICAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAAE5vIFJlY3Vyc2l2ZSBNdXRleGVzIGZvdW5k
LgBSTVVURVgAAFJNAABSTXV0ZXgAAEAoPSlfX1JUT1NfUklPVF9fVEFTS19STQAAAAA8c2VtYXBo
b3JlPgBUQVNLLlNFTWFwaG9yZSAleAAAAFJJT1QuU0VNTAAAACAgICAgICAgT0sAACBERVNUUk9Z
RUQAACAgICBVS05PV04AACAgICAgICAgIE5vbmUuAAAgICAgICAgICAlNGQuAAAATmFtZSAgICAg
ICAgICAgICAAAABWYWx1ZSAgICAgIABTdGF0dXMgICAgIAAgTm8uIEJsb2NrZWQgdGhyZWFkcwAA
AABTb3JyeTogQ291bGRuJ3QgZmluZCBhbnkgc2VtYXBob3JlcwBTb3JyeTogU2VtYXBob3JlIG5v
dCBmb3VuZC4AU0VNQVBIT1JFAAAAU0VNAFNFTWFwaG9yZQAAAEAoPSlfX1JUT1NfUklPVF9fVEFT
S19TRU0AAAA8dGFzaz4AAEJhc2ljIHRocmVhZCBkZXRhaWxzOgAAAE5hbWUgICAgICAgICAgICAg
ICA6IAAAAApQSUQgICAgICAgICAgICAgICAgOiAAACU4ZCAKAAAAUHJpb3JpdHkgICAgICAgICAg
IDogAAAAU3RhdHVzICAgICAgICAgICAgIDogAAAAJXMKAFN0YWNrIEJhc2UgQWRkcmVzcyA6ICU4
eAoAAABTdGFjayBzaXplICAgICAgICAgOiAlOGQKAAAARXh0cmEgSW5mb3JtYXRpb246AABGTEFH
UyAgICAgICA6IE1PRFVMRV9DT1JFX1RIUkVBRF9GTEFHUyBub3QgZGVmaW5lZCBpbiB0aGlzIGJ1
aWxkCgAAAEZMQUdTOiAgICAgICU0eAoAAAAAICAgIEJJVF8lZAAAIChUSFJFQURfRkxBR19NU0df
V0FJVElORykgACAgKFRIUkVBRF9GTEFHX1RJTUVPVVQpICAAAAAgIChVTktOT1dOIEZMQUcpICAg
AE1FU1NBR0lORyAgIDogTU9EVUxFX0NPUkVfTVNHIG5vdCBkZWZpbmVkIGluIHRoaXMgYnVpbGQu
CgAAAEJsb2NrZWQgVGhyZWFkczoAAAAAIE5vIGJsb2NrZWQgdGhyZWFkcwoAAAAAICAgICAgJTh4
ICggAAAAACBuYW1lID0gJTh4CgAAAAAgKQoAICAgIE9WRVJGTE9XCgAAAFRBU0suVGFza0xpc3Qg
JXgAAAAAUklPVC5UTAAlOHggICAAACU4ZCAgAAAAJXMAACU0ZCAAAAAAU1RPUFBFRCAgICAgICAg
ICAAAABTTEVFUElORyAgICAgICAgIAAAAE1VVEVYIGJsb2NrZWQgICAgAAAAUkVDRUlWRSBibG9j
a2VkICAAAABTRU5EIGJsb2NrZWQgICAgIAAAAFJFUExZIGJsb2NrZWQgICAgAAAARkxBRyBBTlkg
YmxvY2tlZCAAAABGTEFHIEFMTCBibG9ja2VkIAAAAE1CT1ggYmxvY2tlZCAgICAgAAAAUlVOTklO
RyAgICAgICAgICAAAABQRU5ESU5HICAgICAgICAgIAAAAFVua25vd24gICAgICAgICAgAAAAbWFn
aWMgICAgICBwaWQgICAgICAgbmFtZSAgICAgICAgICAgICAgICAgc3RhdGUgICAgICAgICAgICBw
cmlvAERldGFpbGVkIFRhc2sgSW5mb3JtYXRpb24AAABTb3JyeTogQ291bGRuJ3QgZ2V0IHN5bWJv
bCBhZGRyZXNzZXMAAAAAVEFTS0xJU1QAAAAAVEwAAFRhc2tMaXN0AAAAAEAoPSlfX1JUT1NfUklP
VF9fVEFTS19UTAAAAAAAAEocAABKMAAASkQAAEpYAABKbAAASoAAAEqUAABKqAAASrwAAErQAABK
5AAASvhNVEQgVmVyc2lvbiAlcyAgJXMgICVzICAKCgAAVGhyZWFkIERldGFpbHM6CgAAAAAgICAg
U3RhY2sgUG9pbnRlciBvZmZzZXQgICAgID0gJWQKAAAgICAgU3RhdHVzIG9mZnNldCAgICAgICAg
ICAgID0gJWQKAAAgICAgUHJpb3JpdHkgb2Zmc2V0ICAgICAgICAgID0gJWQKAAAgICAgVGhyZWFk
IFBJRCBvZmZzZXQgICAgICAgID0gJWQKAAAgICAgVGhyZWFkIEZMQUdTIG9mZnNldCAgICAgID0g
JWQKAAAgICAgUnVuIHF1ZXVlIGVudHJ5IG9mZnNldCAgID0gJWQKAAAgICAgVGhyZWFkIFdhaXRf
RGF0YSBvZmZzZXQgID0gJWQKAAAgICAgTVNHIHdhaXRpbmcgb2Zmc2V0ICAgICAgID0gJWQKAAAg
ICAgTVNHIHF1ZXVlIGFycmF5IG9mZnNldCAgID0gJWQKAAAgICAgU3RhY2sgYmFzZSBvZmZzZXQg
ICAgICAgID0gJWQKAAAgICAgU3RhY2sgU2l6ZSBvZmZzZXQgICAgICAgID0gJWQKAAAgICAgVGhy
ZWFkIE5hbWUgb2Zmc2V0ICAgICAgID0gJWQKAABNdXRleCBEZXRhaWxzOgoAICAgIFN1c3BlbmRl
ZCBRIG9mZnNldCAgICAgICA9ICVkCgAAUm11dGV4IERldGFpbHM6CgAAAAAgICAgTG9jayBNdXRl
eCBvZmZzZXQgICAgICAgID0gJWQKAAAgICAgT3duZXIgUmVmIGNvdW50IG9mZnNldCAgID0gJWQK
AAAgICAgT3duZXIgUElEIG9mZnNldCAgICAgICAgID0gJWQKAABNYWlsYm94IERldGFpbHM6CgAA
AE1lc3NhZ2UgRGV0YWlsczoKAAAAICAgIFNlbmRlciBQSUQgb2Zmc2V0ICAgICAgICA9ICVkCgAA
ICAgIE1lc3NhZ2UgVHlwZSBvZmZzZXQgICAgICA9ICVkCgAAICAgIFBvaW50ZXIgdG8gZGF0YSBv
ZmZzZXQgICA9ICVkCgAAICAgIE1lc3NhZ2UgZGF0YSB2YWx1ZSBvZmZzZXQ9ICVkCgAAU2VtYXBo
b3JlIERldGFpbHM6CgAgICAgU2VtYXBob3JlIFZhbHVlIG9mZnNldCAgID0gJWQKAAAgICAgU3Rh
dGUgb2Zmc2V0ICAgICAgICAgICAgID0gJWQKAAAgICAgU2VtYXBob3JlIG11dGV4IG9mZnNldCAg
ID0gJWQKAABUaW1lciBEZXRhaWxzOgoAICAgIENhbGxiYWNrIGZ1bmMgb2Zmc2V0ICAgICA9ICVk
CgAAICAgIENhbGxiYWNrIGRhdGEgb2Zmc2V0ICAgICA9ICVkCgAAICAgIExvd2VyIDMyYml0cyBv
ZiB0aW1lICAgICA9ICVkCgAAICAgIFVwcGVyIDMyYml0cyBvZiB0aW1lICAgICA9ICVkCgAAICAg
IFB0ciB0byBuZXh0IHRpbWVyIG9mZnNldCA9ICVkCgAAVGVzdCBEYXRhICAgIAAAAFRFU1QAAAAA
PHRpbWVyPgB0aW1lcl9saXN0X2hlYWQAVi5WaWV3ICh4dGltZXJfdCAqKSV4AAAAUklPVC5USU1M
AAAAJTE5ZC4AAAAlcyAAICAgICAgICAgICAgTk9ORSAAAAAgICAgICAgICU4eCAAAAAAVmFyLlZp
ZXcgJSVPcGVuIChBVE9NX1RJTUVSICopJXgAAAAAQVQuVElNTABSZW1haW5pbmcgdGlja3MgICAg
ICAgICAgAAAAQ2FsbGJhY2sgZnVuY3Rpb24gICAgIAAAQ2FsbGJhY2sgRGF0YSBQdHIAAABTb3Jy
eTogTm8gVGltZXJzIGRlZmluZWQAAAAAU29ycnk6IFRpbWVyIG5vdCBmb3VuZC4AVElNRVIAAABU
SU0AVElNZXIAAABAKD0pX19SVE9TX1JJT1RfX1RBU0tfVElNAAAAUklPVCBPUwBBUk0AREFUQQAA
OlgAAAAAAAAABAAAOjQAAAAAAAAABAAAOjgAAAAAAAAABAAAOjwAAAAAAAAABAAAOkAAAAAAAAAA
BAAAOhAAAAAAAAAABAAAOhQAAAAAAAAABAAAOhgAAAAAAAAABAAAOhwAAAAAAAAABAAAOmAAAAAA
AAAABAAAOmgAAAAAAAAABAAAOnAAAAAAAAAABAAAOngAAAAAAAAABAAAOoAAAAAAAAAABAAAOogA
AAAAAAAABAAAOpAAAAAAAAAABAAAOkgAAAAAAAAABAAAAAAAAAAAAAAAAAAAOhAAAAAAAAAABAAA
OhQAAAAAAAAABAAAOhgAAAAAAAAABAAAOhwAAAAAAAAABAAAOiAAAAAAAAAABAAAOiQAAAAAAAAA
BAAAOigAAAAAAAAABAAAOiwAAAAAAAAABAAAOjAAAAAAAAAABAAAOjQAAAAAAAAABAAAOjgAAAAA
AAAABAAAOjwAAAAAAAAABAAAOkAAAAAAAAAABAAAOkQAAAAAAAAABAAAOkgAAAAAAAAABAAAOkwA
AAAAAAAABAAAOlQAAAAAAAAABAAAAAAAAAAAAAAAAAAAOpgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAIAAAAAAAA8pAAAAAAAAAADKEgAAAAEBMgAAASkAAAAAgAAAAAAADzIAAAAAAAAAAMKSAAAAAQC
HAAAAnwAADzkAAA87AAAPPAAADz4AAACRAAAPFAAADxcAAA8cAAAPHwAADyQAAAAAAAAAAIAAAAA
AAA95AAAAAAAAAADAEYAAAAEAogAAArcAAAAAgAAAAAAAD4IAAAAAAAAAAMARgAAAAQClAAACWAA
AD4gAAA+KAAAPiwAAD40AAAJKAAAPFAAAD2sAAAAAAAAPFAAAD28AAA90AAAAAAAAAACAAAAAAAA
RPgAAAAAAAAAAw9QAAAABALYAAAVqAAARRwAAEUoAABFLAAARTgAABVwAAA8UAAARKwAAES8AABE
zAAAROQAAAAAAAAblAAAG/AAAEWcAAAAAwAAABcAAAAAAABGBAAAGywAAEYEAAAZPAAARgQAABmQ
AABGBAAAGjwAAAACAAAAAAAARkgAAAAAAAAAAwBGAAAABANcAAAeyAAARmQAAEZsAABGcAAARngA
AB6QAAA8UAAARhQAAEYkAAAAAAAAAAIAAAAAAABHSAAAAAAAAAADKDwAAAAEA9gAACGcAAAAAgAA
AAAAAEdsAAAAAAAAAAMUUAAAAAQDwAAAI1QAAEeIAABHlAAAR5gAAEekAAAhZAAAPFAAAEcEAABH
GAAARyQAAEcwAAAAAAAAPFAAAD2sAAAAAAAAAAEAUAAAAABLTAAAJrQAAAACAAAAAAAAS2gAAAAA
AAAAAQBQAAAAAEsMAAAq2AAAS5AAAEucAABLoAAAS6wAACWYAAAAAQBGAAAABARMAAAs2AAAUJgA
AFCYAABQmAAARgQAACzAAABQiAAAAAAAAAACAAAAAAAAUZwAAAAAAAAAAgAAAAAAAFGAAAAAAAAA
AAMUWgAAAAQEmAAAMhQAAFG0AABRvAAAUcAAAFHIAAAxdAAAPFAAAFE4AABRVAAAUWwAAAAAAABG
BAAAUeQAAFHsAAAAAFQzMkU=
)
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: RIOT OS specific menu
; @Description: -
; @Keywords: riot riot-os menu awareness
; @Author: RIC
; @Copyright: (c) 1989-2018 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: riot.m 6805 2021-08-11 07:28:55Z amerkle $
NAME "TASK.&(sMenuName)"
IF !MENU.EXIST("TASK.&(sMenuName)")
(
add
menu
(
popup "&sHeader"
(
default
MENUITEM "Display &Tasks" "TASK.&(sInfix)TaskList"
MENUITEM "Display M&ailboxes"
(
TASK.&(sInfix)MailBoX
)
MENUITEM "Display &Mutexes"
(
TASK.&(sInfix)MuTeX
)
MENUITEM "Display &Recursive Mutexes"
(
TASK.&(sInfix)RMutex
)
MENUITEM "Display Ring &Buffers"
(
TASK.&(sInfix)RingBuffer
)
MENUITEM "Display &Semaphores"
(
TASK.&(sInfix)SEMaphore
)
MENUITEM "Display &Timers"
(
TASK.&(sInfix)TIMer
)
separator
popup "&Stack Coverage"
(
menuitem "&List Stacks"
(
TASK.STacK.PATtern 0x5A
TASK.STacK.view
)
menuitem "Add Task" "TASK.STacK.ADD"
menuitem "Remove Task" "TASK.STacK.RM"
enable icd()||simulator()
menuitem "&Reset Coverage"
(
DIALOG.YesNo "Overwrite unused stack space" "with stack fill pattern?"
entry &yn
if !&yn
(
enddo
)
TASK.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
)
if a.mode.flow()
(
Break.Delete /TraceEnable
Break.Set task.&(sInfix)config(magic) /TraceEnable
)
)
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
)
if a.mode.flow()
(
Break.Delete /TraceData
Break.Set task.&(sInfix)config(magic) /TraceData
)
)
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 "&Help"
(
MENUITEM "[:manual]OS Awareness Manual RIOT OS" "HELP __RTOS_RIOT_"
)
)
// Timer right-click menu
MENU "RIOT.TIML"
(
default
MENUITEM "Display Timer Structure"
(
&address=track.address()
&struct="xtimer_t"
Var.View %Open %String (&struct *)(&address)
)
SEPARATOR
MENUITEM "Dump Memory"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
SEPARATOR
MENUITEM "Show Callback Function"
(
&magic=address.offset(track.address())
&address=Var.Value(((xtimer_t*)&magic)->callback)
List &address
)
)
// Mailbox Window right-click menu
MENU "RIOT.MBOXL"
(
default
MENUITEM "Display Detailed Information"
(
&address=TRACK.ADDRESS()
TASK.&(sInfix)MailBoX &address
)
MENUITEM "Display Mailbox Structure"
(
&address=track.address()
&struct="mbox_t"
Var.View %Open %String (&struct *)(&address)
)
SEPARATOR
MENUITEM "Dump Memory"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
// Recursive Mutex right-click menu
MENU "RIOT.RML"
(
default
MENUITEM "Display Recursive Mutex Structure"
(
&address=track.address()
&struct="rmutex_t"
Var.View %Open %String (&struct *)(&address)
)
SEPARATOR
MENUITEM "Dump Memory"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
// Semaphore right-click menu
MENU "RIOT.SEML"
(
default
MENUITEM "Display Detailed Information"
(
&address=track.address()
TASK.&(sInfix)SEMaphore &address
)
SEPARATOR
MENUITEM "Display Semaphore Structure"
(
&address=track.address()
&struct="sema_t"
Var.View %Open %String (&struct *)(&address)
)
SEPARATOR
MENUITEM "Dump Memory"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
// RingBuffer right-click menu
MENU "RIOT.RBL"
(
default
MENUITEM "Display RingBuffer Structure"
(
&address=track.address()
&struct="ringbuffer_t"
Var.View %Open %String (&struct *)(&address)
)
SEPARATOR
MENUITEM "Dump Memory"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
// Mutex right-click menu
MENU "RIOT.ML"
(
default
MENUITEM "Display Detailed Information"
(
&address=track.address()
TASK.&(sInfix)MuTeX &address
)
SEPARATOR
MENUITEM "Display Mutex Structure"
(
&address=track.address()
&struct="mutex_t"
Var.View %Open %String (&struct *)(&address)
)
SEPARATOR
MENUITEM "Dump Memory"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
// Task List right-click menu
menu "RIOT.TL"
(
default
menuitem "Display Detailed Info"
(
&address=address.offset(track.address())
TASK.&(sInfix)TaskList &address
)
separator
menuitem "Display task struct"
(
&address=track.address()
;&struct=task.&(sInfix)struct(tcb)
&struct="thread_t"
Var.View %Open %String (&struct*)(&address)
)
separator
menuitem "Display Stack Frame"
(
&address=address.offset(track.address())
Var.Frame /Locals /Caller /Task &address
)
menuitem "Display Registers"
(
&address=address.offset(track.address())
Register /Task &address
)
menuitem "Switch Context" "Register.TASK address.offset(track.address())"
separator
menuitem "Add to Stack Cov" "TASK.STK.ADD address.offset(track.address())"
menuitem "Rm from Stack Cov" "TASK.STK.RM address.offset(track.address())"
separator
menuitem "Dump task entry"
(
&address=address.offset(track.address())
Data.dump &address /l /dialog
)
)
)
)
)
PMACRO.UNLOCK
RETURN
)
autoload_32bit: ;(options)
(
PARAMETERS &sOptions
RETURN
)
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
RETURN
)