;@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." "VLX" 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="VLX" TASK.RESet IF (&nVariant==32.) ( PRINTF %ERROR "%s: No support for %ubit, please contact support@lauterbach.com." "VLX" &nVariant ) 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="VLX" 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.) ( PRINTF %ERROR "%s: No support for %ubit, please contact support@lauterbach.com." "VLX" &nVariant ) 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="VLX" IF ("&sName"!="") ( &sMachineName="&(sName)" ) IF ("&sMachine"!="") ( &sOptionMachine="/MACHINE &sMachine" ) GOSUB menu_delete "&sMachineName" GOSUB autoload_delete "&sOptionMachine" ) ENDDO extension_64bit: ; (options) ( PARAMETERS &sParameters &sOptions EXTension.LOAD &sParameters &sOptions ( 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfoAAAABgAA AA0AAABOAAAn0gAAB+gAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUWRVkxYAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA IAAAAF9fdDMyX21heF9jcHUAAABfX3R1bmFibGVfX2NvcmVfX21heF9jcHUAAAAAX190MzJfbWF4 X29zAAAAAF9fdHVuYWJsZV9fY29yZV9fbWF4X29zAG5rX3ZtcwAAX190MzJfdm1zAAAAX19ua192 bXMAAAAAX190MzJfdm1fc3RydWN0X3NpemUAAAAAX190MzJfdm1fcHJlc2VudF9vZmYAAAAAX190 MzJfdm1fdmNwdXNfb2ZmAABfX3QzMl92bV9tYXh2Y3B1c19vZmYAAABfX3QzMl92Y3B1X3Byb2Nf cmVnc19vZmYAAAAAX190MzJfdmNwdV9wcm9jX29mZgBfX3QzMl92Y3B1X2VjdHhfb2ZmAHZtAABF WFQuVk0gJXgAAABFWFQuVk0AACoAAAAlMmQuAAAAAERhdGEuZHVtcCAleAAAAAAgISEgZm9jdXMg b24gdm1pZCAlZC4gISEAAAAAdmNwdXM6CgAgICBtYWdpYyAgICAgICAgICAgICBpZAoAAAAAICUz ZC4KAAAgICBYJWQgICAgJTE2eCAgIFglZCAgICUxNnggCgAAACAgIFglZCAgICUxNnggICBYJWQg ICAlMTZ4IAoAAAAAICAgWDE1ICAgJTE2eCAgIFBDICAgICUxNnggCgAAAAAgICBFTDA6ICAgICAg ICAgICAgICAgICAgICAgRUwxOiAKAAAgICBTUCAgICAlMTZ4ICAgU1AgICAgJTE2eCAKAAAAACAg IEVMUiAgICUxNnggCgAgICBTUFNSICAlMTZ4IAoAICAgTU1VOiAKAAAAICAgU0NUTFJfRUwxICAg JTh4IAoAAAAAICAgVFRCUjBfRUwxICAgJTE2eCAKAAAAICAgVFRCUjFfRUwxICAgJTE2eCAKAAAA ICAgVENSX0VMMSAgICAgJTE2eCAKAAAAICAgQ1RYSURfRUwxICAgJTh4IAoAAAAAICAgVkU6IAoA AAAAICAgSENSX0VMMiAgICAgJTE2eCAKAAAAICAgVk1QSURSX0VMMiAgJTE2eCAKAAAAICAgVlRU QlJfRUwyICAgJTE2eCAKAAAAbWFnaWMgICAgICAgICAgICAAAABpZCAAdHRiICAgICAgAAAAX19S VE9TX0tWTV9fRVhUX1ZNAAB2bWlkAAAAAGZvY3VzIHNldCBvbiB2bWlkICVkLgAAAFNvcnJ5OiB2 bWlkIG5vdCBmb3VuZC4AAEZPQ1VTAAAARmN0Vm1GaWxlOiBwYXJhbWV0ZXIgMTogMHglMTZ4AABm aWxlAAAAAHN5bWJvbCBmaWxlIG9mIHZtaWQgJWQuIHNldCB0byAlcwAAAFNvcnJ5OiB2bWlkIHRv byBiaWcuAAAAAEVYVC5WTUZJTEUAAF9fUlRPU19NWVJUT1NfX0ZVTkMAU29ycnk6IG5vIHN5bWJv bCBmaWxlIGZvciB2bWlkICVkLiBkZWZpbmVkLgBcXCVzXC50ZXh0AABkaXNwbGF5UmVsb2FkOiAl cyAlcyAlcwB5LmQgXFwlcwAAAABkLmxvYWQuZWxmICVzIE46MCAvbm9jb2RlIC9ub2NsZWFyAABz eW1ib2wgZmlsZSBvZiB2bWlkICVkLiBsb2FkZWQAAFJFTE9BRAAAJUBjTVREIFZlcnNpb24gICVz ICAlcyAgJTAyZC4lMDJkLiUwNGQgKEJ1aWxkICVzKQoKAG5hbm9rZXJuZWxfdmVyc2lvbgAAVkxY IHZlcnNpb24gICAgICUxNnggIAAACiAgICAAAABudW0gY3B1cyAgICAgICAgJTh4CgAAAABudW0g dm1zICAgICAgICAgJTh4CgAAAAB2bSBhcnJheSAgICAgICAgJTE2eCAgJTE2eCAgAAAAAHZtIHNp emVvZiAgICAgICAlMTZ4ICAlOHggICAgICAgICAgAHZtIHByZXNlbnQgb2ZmcyAlMTZ4ICAlOHgg ICAgICAgICAgAFRFU1QAAAAAYXJndW1lbnQgICAgICAgIHZhbHVlICAgICAgICAgICAgIGNvbnRl bnQgICAgICAgICAgIHN5bWJvbAAATlMAAEhTUFIAAAAAcmVhZEN1cnJlbnRHdWVzdElkRnJvbVJl Z2lzdGVyOiB2dHRicj0weCUxNngsIGlkPTB4JXgAAAAhIUhhbHRlZCBpbiBndWVzdCB3aXRob3V0 IGZvY3VzIQAAAABnZXRDdXJyZW50R3Vlc3RJZDogaWQ9JWQuAAAAZ2V0Q3VycmVudE1hY2hpbmVJ ZCgpAAAAZ2V0Q3VycmVudFZjcHVJZCgpOiBndWVzdGlkID0gJWQuAAAAZ2V0Q3VycmVudFZjcHVJ ZCgpOiBndWVzdCA9ICUxNngAAAAAZ2V0Q3VycmVudFZjcHVJZCgpID0gJWQuAAAAAGdldE1hY2hp bmVMaXN0KCkAAAAAZ2V0TWFjaGluZUxpc3QoKTogbWlzc2luZyBzeW1ib2xzAAAAZ2V0TWFjaGlu ZUxpc3QoKSwgbnVtdm1zPSVkLgAAAABnZXRNYWNoaW5lSWQoKTogJTE2eAAAAABnZXRNYWNoaW5l SWQoKSA9ICVkLgAAAABnZXRNYWNoaW5lVnR0YigpIG1hZ2ljPSUxNngAZ2V0TWFjaGluZVZ0dGIo KSB2dHRiID0lMTZ4AGdldEFybTY0VmNwdUNvbnRleHQ6IGd1ZXN0PSUxNngsIHZjcHU9JTE2eAAA Z2V0QXJtNjRWY3B1Q29udGV4dDogdmNwdT0lMTZ4IGluIGNvcmU9JWQuAABTUFNSX0VMMQAAAABF TFJfRUwxAFNQX0VMMAAAU1BfRUwxAABnZXRBcm02NFZjcHVDb250ZXh0OiB2dHRiPSUxNngsIG9s ZGNvcmU9JWQuAGdldEFybTY0VmNwdUNvbnRleHQ6IHZjcHU9JTE2eCBpbiBtZW1vcnkAAAAAZ2V0 QXJtNjRWY3B1Q29udGV4dDogdnR0Yj0lMTZ4AABnZXRBcm02NFZjcHVDb250ZXh0OiAmcGM9JTE2 eAAAAGdldFZjcHVDb250ZXh0OiBtYWdpYz0lMTZ4LCB2Y3B1aWQ9JWQAAABnZXRWY3B1Q29udGV4 dDogZ3Vlc3Q9JTE2eCwgdmNwdWlkPSVkAAAAdnR0YnIAAABoY3IAbWFpcl9lbDEAAAAAdGNyX2Vs MQB0dGJyMF9lbDEAAAB0dGJyMV9lbDEAAABzY3Rscl9lbDEAAABzcHNyX2VsMQAAAAB2YmFyX2Vs MQAAAABlbHJfZWwxAHNwX2VsMAAAc3BfZWwxAAB4MAAAeDEAAHgyAAB4MwAAeDQAAHg1AAB4NgAA eDcAAHg4AAB4OQAAeDEwAHgxMQB4MTIAeDEzAHgxNAB4MTUAeDE2AHgxNwB4MTgAeDE5AHgyMAB4 MjEAeDIyAHgyMwB4MjQAeDI1AHgyNgB4MjcAeDI4AHgyOQB4MzAAcGMAAGNwc3IAAAAAc2N0bF9u cwB0Y3JfbnMAAHR0YnIwX25zAAAAAHR0YnIxX25zAAAAAEZjdEV4dENvbmZpZ1N0cjogcGFyYW1l dGVyIDE6ICVzAAAAAGV4dGZpbGUAZXh0ZGlyAABGY3RFeHRDb25maWdTdHIgZXh0c3RyWyVkXT0l cwAAAHVua25vd24gdG9waWMAAABFWFQuQ09ORklHU1RSAAAARmN0RXh0UGdkaXI6IHBhcmFtZXRl ciAxOiAlcwAAAABFWFQuQ1VSUkVOVABGY3RFeHRQZ2RpcjogcGFyYW1ldGVyIDE6IDB4JTE2eAAA AABFWFQuUEdESVIAAABGY3RFeHRWbU1hZ2ljOiBwYXJhbWV0ZXIgMTogMHglMTZ4AABFWFQuVk0u TUFHSUMAAAAAVkxYAEFSTTY0AERBVEEAAAADADwAAAAEADQAAAkAAAAAAwAyAAAABAA0AAAHhAAA M4QAADOEAAAzhAAANawAAAVoAAA1iAAANZwAADWgAAAAAAAAAAIAAAAAAAA14AAAAAAAAAACAAAA AAAAAAAAABCMAAA1+AAANfgAADX4AAA1PAAADkAAAAACAAAAAAAAAAAAABJAAAAAAgAAAAAAADZM AAAAAAAANmgAADZoAAA2aAAANTwAABHIAAA2ZAAAAAcAAAADAAAAAAAANnAAABFIAAAAAgAAAAAA AAAAAAATUAAAAAIAAAAAAAA2TAAAAAAAADckAAA3JAAANyQAADU8AAATEAAAAAEATAAAAAA4NAAA FVQAADgsAAA4LAAANTwAADU8AAAVIAAAAAAAADuUAAAAAAAAAAAAAAAAAAAACAAAAAAAADucAAAA AAAAAAAAAAAAAAAACAAAAAAAADugAAAAAAAAAAAAAAAAAAAACAAAAAAAADusAAAAAAAAAAAAAAAA AAAACAAAAAAAADu0AAAAAAAAAAAAAAAAAAAACAAAAAAAADvAAAAAAAAAAAAAAAAAAAAACAAAAAAA ADvMAAAAAAAAAAAAAAAAAAAACAAAAAAAADvYAAAAAAAAAAAAAAAAAAAACAAAAAAAADvkAAAAAAAA AAAAAAAAAAAACAAAAAAAADvwAAAAAAAAAAAAAAAAAAAACAAAAAAAADv4AAAAAAAAAAAAAAAAAAAA CAAAAAAAADwAAAAAAAAAAAAAAAAAAAAACAAAAAAAADwIAAAAAAAAAAAAAAAAAAAACAAAAAAAADwM AAAAAAAAAAAAAAAAAAAACAAAAAAAADwQAAAAAAAAAAAAAAAAAAAACAAAAAAAADwUAAAAAAAAAAAA AAAAAAAACAAAAAAAADwYAAAAAAAAAAAAAAAAAAAACAAAAAAAADwcAAAAAAAAAAAAAAAAAAAACAAA AAAAADwgAAAAAAAAAAAAAAAAAAAACAAAAAAAADwkAAAAAAAAAAAAAAAAAAAACAAAAAAAADwoAAAA AAAAAAAAAAAAAAAACAAAAAAAADwsAAAAAAAAAAAAAAAAAAAACAAAAAAAADwwAAAAAAAAAAAAAAAA AAAACAAAAAAAADw0AAAAAAAAAAAAAAAAAAAACAAAAAAAADw4AAAAAAAAAAAAAAAAAAAACAAAAAAA ADw8AAAAAAAAAAAAAAAAAAAACAAAAAAAADxAAAAAAAAAAAAAAAAAAAAACAAAAAAAADxEAAAAAAAA AAAAAAAAAAAACAAAAAAAADxIAAAAAAAAAAAAAAAAAAAACAAAAAAAADxMAAAAAAAAAAAAAAAAAAAA CAAAAAAAADxQAAAAAAAAAAAAAAAAAAAACAAAAAAAADxUAAAAAAAAAAAAAAAAAAAACAAAAAAAADxY AAAAAAAAAAAAAAAAAAAACAAAAAAAADxcAAAAAAAAAAAAAAAAAAAACAAAAAAAADxgAAAAAAAAAAAA AAAAAAAACAAAAAAAADxkAAAAAAAAAAAAAAAAAAAACAAAAAAAADxoAAAAAAAAAAAAAAAAAAAACAAA AAAAADxsAAAAAAAAAAAAAAAAAAAACAAAAAAAADxwAAAAAAAAAAAAAAAAAAAACAAAAAAAADx0AAAA AAAAAAAAAAAAAAAACAAAAAAAADx4AAAAAAAAAAAAAAAAAAAACAAAAAAAADx8AAAAAAAAAAAAAAAA AAAACAAAAAAAADyAAAAAAAAAAAAAAAAAAAAACAAAAAAAADyEAAAAAAAAAAAAAAAAAAAACAAAAAAA ADyIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADucAAAAAAAA AACAAAAAAAAAAAAAAAAAADyQAAAAAAAAAAAwxRg1AAAAAAAAAAAAADyYAAAAAAAAADK1GTUZAAAA AAAAAAAAADygAAAAAAAAAAAAAAAAAAAAAAAAAAAAADysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0cAAAABwAAABcAAAAAAAA2cAAAJsgAAD1MAAAAAwAAABcA AAAAAAA2cAAAJ/gAAD18AAAAAwAAAAMAAAAAAAA2cAAAKJQAAD2sAAAAAwAAAAMAAAAAAAA2cAAA KuAAADU8AAA9vAAAPcAAAAAAVDMyRQ== ) 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: VLX specific menu ; @Description: - ; @Author: DIE ; @Copyright: (c) 1989-2015 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: vlx.m 7861 2022-07-29 13:45:42Z amerkle $ NAME "TASK.&sMenuName" IF !MENU.EXIST("TASK.&sMenuName") ( add menu ( popup "&VLX" ( default menuitem "Display &VMs" "EXT.&(sInfix)VM" ;menuitem "Display &VCPUs" "EXT.&(sInfix)VCPU" SEPARATOR MENUITEM "Display Task Tree" "TASK.List.TREE" MENUITEM "Display Core Activity" "CORE.List" ) //popup "&Help" //( // MENUITEM "[:manual]OS Awareness Manual VLX" "HELP __RTOS_rtos_" //) ) //add //toolbar //( // toolitem "Host Mode" "H:,r" "EXTension.Focus Host" // toolitem "Guest Mode" "G:,b" "EXTension.Focus Guest" //) add menu "ext.&(sInfix)vm" ( default menuitem "Display detailed" ( PRIVATE &address &address=address.offset(track.address()) EXT.&(sInfix)VM &address ) //menuitem "Display vlx struct" //( // &address=address.offset(track.address()) // Var.View %Open (struct vlx*)(H:0x0:&address) //) menuitem "Dump vlx entry" ( PRIVATE &address &address=address.offset(track.address()) Data.dump H:0x0:&address /l /dialog ) ) ;add ;menu "ext.vcpu" ;( ; default ; menuitem "Display detailed" ; ( ; &address=address.offset(track.address()) ; EXT.VCPU &address ; ) ; menuitem "Display vcpu struct" ; ( ; &address=address.offset(track.address()) ; Var.View %Open (struct vcpu_vmx*)(H:0x0:&address) ; ) ; menuitem "Dump vcpu entry" ; ( ; &address=address.offset(track.address()) ; Data.dump H:0x0:&address /l /dialog ; ) ;) ) ) ) PMACRO.UNLOCK RETURN ) autoload_64bit: ;(options) ( PARAMETERS &sOptions sYmbol.AutoLOAD.CHECKEmBeDded &sOptions ( ; -------------------------------------------------------------------------------- ; @Title: VLX Symbol Autoloader Script ; @Description: Autoload script, called by TRACE32 if symbols are to be loaded ; @Keywords: VLX ; @Author: DIE ; @Copyright: (c) 1989-2014 Lauterbach GmbH, licensed for use with TRACE32(R) only ; -------------------------------------------------------------------------------- ; $Id: autoload.cmm 3546 2018-08-08 14:27:40Z rdienstbeck $ // Autoload script, called by TRACE32 if symbols are to be loaded // VLX version // define local macros local &filename &type &code &data &space local &filename &basename &progname &access local &symfilename1 &symfilename2 // get filename and relocation information // these parameters are passed from TRACE32 when calling this skript entry &filename &type &code &data &space //print "autoload: " &filename " " &type " " &code " " &data " " &space // &filename: name of process/file // &type: type of file: 1=process, 2=library, 3=kernel module // &code: text segment address // &data: data segment address // &space: space id of process // get symbol file name and program name &filepath="" &basename=string.cut(&filename,-string.len(os.file.extension(&filename))) if (&type==1) ( // processes &symfilename1="&basename" // without extension &symfilename2=&filename // as given in parameter if task.y.o.s(rootpath)!="" ( // root path option set, use target path local &magic &magic=task.proc.magic(&filename) &filepath=task.y.o.s(rootpath)+task.proc.path(&magic) ) ) if ((&type&0xffff)==2) ( // libraries &symfilename1=&filename &symfilename2="&basename"+".so" if task.y.o.s(rootpath)!="" ( // root path option set, use target path local &magic &magic=task.proc.sid2magic(&type>>16.) &filepath=task.y.o.s(rootpath)+task.lib.path(&filename,&magic) ) ) if (&type==3) ( // kernel modules &symfilename1="&basename"+".ko" // Linux converts dashes to underlines - try to reverse this local &ul &len &symfilename2="&basename"+".ko" &len=string.len("&symfilename2") &ul=string.scan("&symfilename2","_",0) while &ul!=-1 ( &symfilename2=string.cut("&symfilename2",&ul-&len)+"-"+string.cut("&symfilename2",&ul+1) &ul=string.scan("&symfilename2","_",0) ) ) // get program name &progname=os.file.name("&basename") // set space id to zero if not given if "&space"=="" &space=0 // get host/guest mode access &access=ext.vmaccess() // delete symbols if they already exist if y.exist("\\&progname") ( // create program path - due to possible special characters &progpath="`"+"\\"+"&progname"+"`" sYmbol.Delete &progpath ) GROUP.Delete "&progname" // check if preset file path is valid if !os.file("&filepath") &filepath=y.searchfile("&symfilename1") // search file in source search path and open dialog when not there if !os.file("&filepath") &filepath=y.searchfile("&symfilename2") if !os.file("&filepath") ( local &file &spath &file=os.file.name("&symfilename1") winpos ,,,,,, filebox normal "Searching symbols for &filename" dialog.file "*&file*" entry %line &filepath if "&filepath"=="" enddo &spath=os.file.path("&filepath") sYmbol.SourcePATH.Set "&spath" ) // load symbol file (options for sourcepath, e.g. /STRIPPART may need to be added when required) if (&type==1) // processes ( Data.LOAD.Elf "&filepath" &access:&space:0 /nocode /noclear GROUP.Create "&progname" &access:&space:0x0--0xffffffff /GREEN ) if (&type==3) // modules ( Data.LOAD.Elf "&filepath" &access:0:0 /nocode /noclear /name &progname /reloctype &type GROUP.Create "&progname" y.secrange(\\&progname\.text) /YELLOW ) if ((&type&0xffff)==2) // libraries ( Data.LOAD.Elf "&filepath" &access:&space:&code /nocode /noclear ) enddo ) 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 IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES) ( IF !SYStem.Option.MACHINESPACES() &sOptionMachine="" ) ELSE ( &sOptionMachine="" ) sYmbol.AutoLOAD.CHECKCoMmanD "DO autoload.cmm " &sOptionMachine RETURN )