led.cdb
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:1014k
源码类别:

DSP编程

开发平台:

C/C++

  1.     param iComment :: "This Software ISR executes all configured PRD functions"
  2.     param iIsUsed :: 0
  3.     param iId :: 0
  4.     param iDelUser :: "PRD"
  5.     param iDelMsg :: "This object is automatically deleted when all PRD objects are deleted"
  6.     param function :: @PRD_F_swi
  7.     param pri :: 1
  8.     param mailbox :: 0
  9.     param arg0 :: 0
  10.     param arg1 :: 0
  11.     param dorta :: 1
  12.     param Order :: 1
  13. }
  14. object PRD_clock :: CLK {
  15.     param iComment :: "This clock function calls PRD_tick from within the on-chip timer ISR"
  16.     param iIsUsed :: 1
  17.     param iId :: 0
  18.     param iDelUser :: "PRD"
  19.     param iDelMsg :: "This object is automatically deleted by disabling the 'Use CLK Manager to drive PRD' option of PRD"
  20.     param function :: @FXN_F_nop
  21.     param Order :: 1
  22.     param iPri :: 0
  23. }
  24. type RTDX {
  25.     isa ObjectMgr
  26.     prop Label :: "RTDX - Real-Time Data Exchange Settings"
  27.     prop name :: "RTDX"
  28.     prop IsConfMod :: self.USERTDX
  29.     prop IsContainedIn :: IOF
  30.     prop GlobalIcon :: 145
  31.     prop InstanceIcon :: 146
  32.     prop GlobalHelpTopic :: (113)
  33.     prop InstanceHelpTopic :: (213)
  34.     prop InstancePropertyPage :: ("{f80273c0-3838-11d2-a32c-006097656921}")
  35.     prop GlobalPropertyPage :: ("{050a0600-3839-11d2-a32c-006097656921}")
  36.     prop AllocType :: (if self.USERTDX {"2, _rtdxDataAllocDesc, _rtdxDataSeg, _placement,
  37.      _rtdxTextAllocDesc, _rtdxTextSeg, _placement"} else {""})
  38.     prop _rtdxDataAllocDesc :: (" .%1L_data: {} , name")
  39.     prop _rtdxTextAllocDesc :: (if (MEM.ENABLELOADSEG == 1) {if (MEM.RTDXTEXTMEMSEG == MEM.LOADRTDXTEXTMEMSEG) {" .%1L_text: {} , name"} else {" .%1L_text: {} load > %2s, run , name, _loadRtdxTextMemSeg"}} else {" .%1L_text: {} , name"})
  40.     prop _rtdxDataSeg :: RTDX.DATAMEMSEG
  41.     prop _rtdxTextSeg :: MEM.RTDXTEXTMEMSEG
  42.     prop _loadRtdxTextMemSeg :: MEM.LOADRTDXTEXTMEMSEG
  43.     prop _placement :: (0x7fffffff / 2)
  44.     prop _objSize :: RTDX.BUFMEMSIZE
  45.     prop GenLinkPrologue :: (if self.USERTDX {"_RTDX_interrupt_mask = 0x%1x;n, _interruptMask"} else {""})
  46.     prop _interruptMask :: RTDX.MASK
  47.     prop cGen :: 1
  48.     prop noObjectAlias :: 1
  49.     prop cHeaderName :: if self.gNumOf > 0 {"rtdx.h"} else {""}
  50.     prop cGenHInst :: (if (GBL.DSPTYPE == 62) {if (self.iChannelMode == "output") {"extern far RTDX_outputChannel %0r;n"} else {"extern far RTDX_inputChannel %0r;n"}} else {if (self.iChannelMode == "output") {"extern RTDX_outputChannel %0r;n"} else {"extern RTDX_inputChannel %0r;n"}})
  51.     prop cGenCInst :: (if (self.iChannelMode == "output") {"RTDX_CreateOutputChannel(%0r);n"} else {"RTDX_CreateInputChannel(%0r);n"})
  52.     prop dataSize :: ($d = 0, if (self.USERTDX) {$d = RTDX.BUFMEMSIZE} else {$d = 0}, scan ($a; RTDX) {if ($a.iChannelMode == "output") {$d += 1} else {$d += 3}}, $d)
  53.     prop localCanCreate :: ($e = "ok", if (RTDX.USERTDX != 1) {$e = self.error("RTDX manager not enabled")} , $e)
  54.     global gUser :: "USER" { 
  55.         prop Visible :: 0
  56.         prop Writable :: 0
  57.         prop NoGen :: 1
  58.     }
  59.     global gSetOf :: 0 { 
  60.         prop Visible :: 0
  61.         prop Writable :: 0
  62.         prop NoGen :: 1
  63.     }
  64.     global gNumOf :: 0 { 
  65.         prop Visible :: 0
  66.         prop Writable :: 0
  67.         prop NoGen :: 1
  68.     }
  69.     global gDirty :: 0 { 
  70.         prop Visible :: 0
  71.         prop Writable :: 0
  72.         prop NoGen :: 1
  73.     }
  74.     global gInitFlag :: 1 { 
  75.         prop Visible :: 0
  76.         prop Writable :: 0
  77.         prop NoGen :: 1
  78.     }
  79.     global gInit :: = ($a = 0, $b = 0, scan ($i; self) {if ($i.IsConfObj()) {$a += 1, if (self.isFinite) {$b |= 1 << $i.iId} } }, self.gNumOf = $a, self.gSetOf = $b, if (self.gInitFlag == 0) {self.localInit()} , self.gInitFlag = 1) { 
  80.         prop Visible :: 0
  81.         prop Writable :: 0
  82.         prop NoGen :: 1
  83.     }
  84.     global USERTDX :: 1 { 
  85.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  86.         prop Label :: "Enable Real-Time Data Exchange (RTDX)"
  87.         prop JSName :: "ENABLERTDX"
  88.         prop Visible :: 1
  89.         prop Writable :: 1
  90.         prop NoGen :: 0
  91.         prop Set :: (if ($1 == 0) {if (HST.LNKTYPE == "RTDX") {self.error("RTDX is being used by HST; select a different host link type before attempting to disable RTDX")} else {if (self.gNumOf > 0) {self.error("Cannot disable RTDX until all RTDX objects are deleted.")} else {GlobalStatus.gDirty = 1, self.USERTDX = $1, if (RTDX.CALLBACKOBJ != nil) {RTDX.CALLBACKOBJ.call()} , "ok"}}} else {GlobalStatus.gDirty = 1, self.USERTDX = $1, if (RTDX.CALLBACKOBJ != nil) {RTDX.CALLBACKOBJ.call()} , "ok"})
  92.     }
  93.     global USERTEXECUTION :: = 0 { 
  94.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  95.         prop Label :: "Enable Real-Time Execution Control"
  96.         prop Visible :: 0
  97.         prop Writable :: 0
  98.         prop NoGen :: 0
  99.     }
  100.     global RTDXTYPE :: "JTAG" { 
  101.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  102.         prop Enum :: "JTAG,HSRTDX,Simulator"
  103.         prop Label :: "RTDX Mode"
  104.         prop JSName :: "MODE"
  105.         prop Visible :: 1
  106.         prop Writable :: self.USERTDX
  107.         prop NoGen :: 1
  108.         prop Set :: (self.RTDXTYPE = $1, if (RTDX.CALLBACKOBJ != nil) {RTDX.CALLBACKOBJ.call()} , "ok")
  109.     }
  110.     global DATAMEMSEG :: ISRAM { 
  111.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  112.         prop MemberType :: MEM
  113.         prop MemberTest :: MEM.dataMember($1)
  114.         prop Label :: "RTDX Data Segment (.rtdx_data)"
  115.         prop JSName :: "RTDXDATASEG"
  116.         prop Visible :: 1
  117.         prop Writable :: self.USERTDX
  118.         prop NoGen :: 0
  119.     }
  120.     global BUFMEMSIZE :: = (256 + 2) * (GBL.DSPWORDSIZE / GBL.DSPCHARSIZE) { 
  121.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  122.         prop Style :: 0x02
  123.         prop Label :: "RTDX Buffer Size (MAUs)"
  124.         prop JSName :: "BUFSIZE"
  125.         prop Visible :: 1
  126.         prop Writable :: self.USERTDX
  127.         prop NoGen :: 0
  128.         prop Set :: (if (HST.RTDX == 0) {self.BUFMEMSIZE = $1, GlobalStatus.gDirty = 1, "ok"} else {if ($1 < (HST.MAXFRAMESET + 2) * (GBL.DSPWORDSIZE / GBL.DSPCHARSIZE)) {self.error("size (in MAUs) must be at least: (largest configured HST channel framesize in words + 2) * (MAUs per word)")} else {self.BUFMEMSIZE = $1, GlobalStatus.gDirty = 1, if (HST.LNKTYPE == "RTDX") {HST.MAXFRAMEALLOWED = (self.BUFMEMSIZE / (GBL.DSPWORDSIZE / GBL.DSPCHARSIZE)) - 2, "ok"} else {"ok"}}})
  129.     }
  130.     global TEXTMEMSEG :: ISRAM { 
  131.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  132.         prop MemberType :: MEM
  133.         prop MemberTest :: MEM.codeMember($1)
  134.         prop Label :: "RTDX Text Segment (.rtdx_text)"
  135.         prop Visible :: 0
  136.         prop Writable :: self.USERTDX
  137.         prop NoGen :: 1
  138.     }
  139.     global MASK :: 0 { 
  140.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  141.         prop Format :: "0x%08x"
  142.         prop Style :: 0x02
  143.         prop Label :: "RTDX Interrupt Mask"
  144.         prop JSName :: "INTERRUPTMASK"
  145.         prop Visible :: 1
  146.         prop Writable :: self.USERTDX
  147.         prop NoGen :: 1
  148.         prop Set :: (self.MASK = $1, "ok")
  149.     }
  150.     global CALLBACKOBJ :: HWI { 
  151.         prop Visible :: 0
  152.         prop Writable :: 0
  153.         prop NoGen :: 1
  154.     }
  155.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  156.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  157.         prop Label :: "comment"
  158.         prop JSName :: "comment"
  159.         prop Visible :: 1
  160.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  161.         prop NoGen :: 1
  162.     }
  163.     inst iIsUsed :: 0 { 
  164.         prop Visible :: 0
  165.         prop Writable :: 0
  166.         prop NoGen :: 1
  167.     }
  168.     inst iId :: 0 { 
  169.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  170.         prop Style :: 0x01
  171.         prop Visible :: 0
  172.         prop Writable :: 1
  173.         prop NoGen :: 1
  174.     }
  175.     inst iDelUser :: "USER" { 
  176.         prop Visible :: 0
  177.         prop Writable :: 0
  178.         prop NoGen :: 1
  179.     }
  180.     inst iDelMsg :: "ok" { 
  181.         prop Visible :: 0
  182.         prop Writable :: 0
  183.         prop NoGen :: 1
  184.     }
  185.     inst iChannelMode :: "output" { 
  186.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  187.         prop Label :: "Channel Mode"
  188.         prop JSName :: "channelMode"
  189.         prop Enum :: "input,output"
  190.         prop Visible :: 1
  191.         prop Writable :: 1
  192.         prop NoGen :: 0
  193.         prop Set :: (GlobalStatus.gDirty = 1, self.iChannelMode = $1, "ok")
  194.     }
  195. }
  196. type HST {
  197.     isa ObjectMgr
  198.     prop name :: "HST"
  199.     prop Label :: "HST - Host Channel Manager"
  200.     prop IsContainedIn :: IOF
  201.     prop FileStream :: 1
  202.     prop GlobalIcon :: 107
  203.     prop InstanceIcon :: 108
  204.     prop GlobalHelpTopic :: (104)
  205.     prop InstanceHelpTopic :: (204)
  206.     prop maxObjs :: (GBL.DSPWORDSIZE)
  207.     prop dataSize :: ($b = 0, scan ($i; HST) {if ($i.IsConfObj()) {$b += (12 + $i.framesize) * $i.numframes + 100 + (5 * 4)} }, $b)
  208.     prop InstancePropertyPage :: ("{B7240DEA-AA51-11cf-9BFE-0000C0AC14C8}")
  209.     prop GlobalPropertyPage :: ("{B7240DEB-AA51-11cf-9BFE-0000C0AC14C8}")
  210.     prop DependsOn :: "HWI"
  211.     prop localCreate :: (PIP.gNumEmbed += 1, if (self.gNumOf == 0) {(LNK_dataPump.Create("HST"))} , "ok")
  212.     prop localDelete :: (PIP.gNumEmbed -= 1, $b = 0, scan ($i; HST) {if ($i != self) {if ($i.IsConfObj()) {if ($i.framesize > $b) {$b = $i.framesize} } } }, self.MAXFRAMESET = $b, if (self.gNumOf == 1) {(LNK_dataPump.Delete("HST"))} , "ok")
  213.     prop AllocType :: ("2, _globalAllocDesc, _memSeg, _placement, 
  214.       _dsmAllocDesc, _dsmMemSeg, _placement")
  215.     prop _globalAllocDesc :: ("%8t .%1L: {%12tn  %1U_A_TABBEG = .;n _%1U_A_TABBEG = .;n %2Sn %1U_A_TABEND = .;n _%1U_A_TABEND = .;n  %1U_A_TABLEN = (. - _%1U_A_TABBEG) / %3d;n _%1U_A_TABLEN = (. - _%1U_A_TABBEG) / %3d;%8tn }, name, _linkString, _objSize")
  216.     prop _dsmAllocDesc :: ("%8t .dsm: {}")
  217.     prop _placement :: (0x7fffffff / 2)
  218.     prop AllocInst :: ("1, _instAllocDesc, _objMemSeg, _placement")
  219.     prop _instAllocDesc :: ("/* %0s buffer */n.hst%2d: %3S, name, _objId, _alignString, _objAlign")
  220.     prop _alignString :: if self.bufalign > 1 {"align = 0x%4x {}"} else {""}
  221.     prop _objId :: self.iId
  222.     prop _objAlign :: self.bufalign
  223.     prop _objMemSeg :: self.bufseg
  224.     prop _linkString :: if (self.gNumOf + self.gNumEmbed) > 0 {"*(.%1L)"} else {"/* no %1U objects */"}
  225.     prop _memSeg :: HST.OBJMEMSEG
  226.     prop _dsmMemSeg :: HST.DSMBUFSEG
  227.     prop _objSize :: (5 * 4)
  228.     prop cGen :: 1
  229.     prop cHeaderName :: if self.gNumOf > 0 {"hst.h"} else {""}
  230.     prop cGenHInst :: (if (GBL.DSPTYPE == 62) {"extern far HST_Obj %0r;n"} else {"extern HST_Obj %0r;n"})
  231.     prop modifiable :: ((if self.iDelUser == "USER" {1} else {0}))
  232.     global gUser :: "USER" { 
  233.         prop Visible :: 0
  234.         prop Writable :: 0
  235.         prop NoGen :: 1
  236.     }
  237.     global gSetOf :: 3 { 
  238.         prop Visible :: 0
  239.         prop Writable :: 0
  240.         prop NoGen :: 1
  241.     }
  242.     global gNumOf :: 2 { 
  243.         prop Visible :: 0
  244.         prop Writable :: 0
  245.         prop NoGen :: 1
  246.     }
  247.     global gDirty :: 1 { 
  248.         prop Visible :: 0
  249.         prop Writable :: 0
  250.         prop NoGen :: 1
  251.     }
  252.     global gInitFlag :: 1 { 
  253.         prop Visible :: 0
  254.         prop Writable :: 0
  255.         prop NoGen :: 1
  256.     }
  257.     global gInit :: = ($a = 0, $b = 0, scan ($i; self) {if ($i.IsConfObj()) {$a += 1, if (self.isFinite) {$b |= 1 << $i.iId} } }, self.gNumOf = $a, self.gSetOf = $b, if (self.gInitFlag == 0) {self.localInit()} , self.gInitFlag = 1) { 
  258.         prop Visible :: 0
  259.         prop Writable :: 0
  260.         prop NoGen :: 1
  261.     }
  262.     global gNumEmbed :: 0 { 
  263.         prop NoGen :: 1
  264.     }
  265.     global OBJMEMSEG :: ISRAM { 
  266.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  267.         prop MemberType :: MEM
  268.         prop MemberTest :: MEM.dataMember($1)
  269.         prop Label :: "Object Memory"
  270.         prop JSName :: "OBJMEMSEG"
  271.         prop Visible :: 1
  272.         prop Writable :: 1
  273.         prop NoGen :: 1
  274.     }
  275.     global LNKTYPE :: "RTDX" { 
  276.         prop Label :: "Host Link Type"
  277.         prop JSName :: "HOSTLINKTYPE"
  278.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  279.         prop Enum :: "RTDX,NONE"
  280.         prop Visible :: 1
  281.         prop Writable :: 1
  282.         prop NoGen :: 1
  283.         prop Set :: (if ($1 == "RTDX") {if (RTDX.USERTDX == 0) {self.error("RTDX module must be enabled before it can be used by HST")} else {if ((RTDX.BUFMEMSIZE / (GBL.DSPWORDSIZE / GBL.DSPCHARSIZE)) - 2 < self.MAXFRAMESET) {self.error("RTDX buffer size too small for largest configured HST channel")} else {if (self.LNKTYPE == "NONE") {GlobalStatus.gDirty = 1, self.LNKTYPE = $1, $b = 0, scan ($i; HST) {if ($i.IsConfObj()) {if ($i.framesize > $b) {$b = $i.framesize} } }, self.MAXFRAMESET = $b, self.MAXFRAMEALLOWED = (RTDX.BUFMEMSIZE / (GBL.DSPWORDSIZE / GBL.DSPCHARSIZE)) - 2, "ok"} else {self.LNKTYPE = $1, self.MAXFRAMEALLOWED = (RTDX.BUFMEMSIZE / (GBL.DSPWORDSIZE / GBL.DSPCHARSIZE)) - 2, "ok"}}}} else {if ($1 == "Shared Memory") {if ((self.DSMMEMSIZE / 4) < self.MAXFRAMESET) {self.error("Shared memory buffer too small for largest configured HST channel")} else {if (self.LNKTYPE == "NONE") {GlobalStatus.gDirty = 1, self.LNKTYPE = $1, $b = 0, scan ($i; HST) {if ($i.IsConfObj()) {if ($i.framesize > $b) {$b = $i.framesize} } }, self.MAXFRAMESET = $b, self.MAXFRAMEALLOWED = self.DSMMEMSIZE / 4, "ok"} else {self.LNKTYPE = $1, self.MAXFRAMEALLOWED = self.DSMMEMSIZE / 4, "ok"}}} else {GlobalStatus.gDirty = 1, self.LNKTYPE = $1, "ok"}})
  284.     }
  285.     global RTDX :: = if self.LNKTYPE == "RTDX" {1} else {0} { 
  286.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  287.         prop Label :: "Use RTDX for host link"
  288.         prop Visible :: 0
  289.         prop Writable :: 0
  290.         prop NoGen :: 0
  291.     }
  292.     global DSM :: = if self.LNKTYPE == "Shared Memory" {1} else {0} { 
  293.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  294.         prop Label :: "Use Shared Memory for host link"
  295.         prop Visible :: 0
  296.         prop Writable :: 0
  297.         prop NoGen :: 0
  298.     }
  299.     global EVM54 :: = if self.LNKTYPE == "EVM54" {1} else {0} { 
  300.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  301.         prop Label :: "Use EVM54's I/O ports for host link"
  302.         prop Visible :: 0
  303.         prop Writable :: 0
  304.         prop NoGen :: 1
  305.     }
  306.     global NONE :: = if self.LNKTYPE == "NONE" {1} else {0} { 
  307.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  308.         prop Label :: "No host link"
  309.         prop Visible :: 0
  310.         prop Writable :: 0
  311.         prop NoGen :: 0
  312.     }
  313.     global MAXFRAMESET :: = ($b = 0, scan ($i; HST) {if ($i.IsConfObj()) {if ($i.framesize > $b) {$b = $i.framesize} } }) { 
  314.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  315.         prop Label :: "MAXFRAMESET"
  316.         prop Visible :: 0
  317.         prop Writable :: 1
  318.         prop NoGen :: 0
  319.     }
  320.     global MAXFRAMEALLOWED :: 256 { 
  321.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  322.         prop Label :: "MAXFRAMEALLOWED"
  323.         prop Visible :: 0
  324.         prop Writable :: 1
  325.         prop NoGen :: 0
  326.     }
  327.     global DSMBUFSEG :: = self.OBJMEMSEG { 
  328.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  329.         prop MemberType :: MEM
  330.         prop MemberTest :: MEM.dataMember($1)
  331.         prop Label :: "Shared Memory Segment"
  332.         prop Visible :: 0
  333.         prop Writable :: self.DSM
  334.         prop NoGen :: 0
  335.     }
  336.     global DSMMEMSIZE :: = 1024 { 
  337.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  338.         prop Style :: 0x01 | 0x02
  339.         prop Label :: "Shared Memory Frame Size (MAUs)"
  340.         prop Visible :: 0
  341.         prop Writable :: self.DSM
  342.         prop NoGen :: 0
  343.         prop Set :: (if ($1 < HST.MAXFRAMESET * 4) {self.error("size (in MAUs) must be at least: 4 * largest configured HST channel framesize (in words)")} else {self.DSMMEMSIZE = $1, GlobalStatus.gDirty = 1, if (self.LNKTYPE == "Shared Memory") {self.MAXFRAMEALLOWED = self.DSMMEMSIZE / 4, "ok"} else {"ok"}})
  344.     }
  345.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  346.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  347.         prop Label :: "comment"
  348.         prop JSName :: "comment"
  349.         prop Visible :: 1
  350.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  351.         prop NoGen :: 1
  352.     }
  353.     inst iIsUsed :: 0 { 
  354.         prop Visible :: 0
  355.         prop Writable :: 0
  356.         prop NoGen :: 1
  357.     }
  358.     inst iId :: 0 { 
  359.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  360.         prop Style :: 0x01
  361.         prop Visible :: 0
  362.         prop Writable :: 1
  363.         prop NoGen :: 1
  364.     }
  365.     inst iDelUser :: "USER" { 
  366.         prop Visible :: 0
  367.         prop Writable :: 0
  368.         prop NoGen :: 1
  369.     }
  370.     inst iDelMsg :: "ok" { 
  371.         prop Visible :: 0
  372.         prop Writable :: 0
  373.         prop NoGen :: 1
  374.     }
  375.     inst mode :: "output" { 
  376.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  377.         prop JSName :: "mode"
  378.         prop Enum :: "input,output"
  379.         prop Visible :: 1
  380.         prop Writable :: self.modifiable()
  381.         prop NoGen :: 0
  382.     }
  383.     inst bufseg :: = self.OBJMEMSEG { 
  384.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  385.         prop Label :: "bufseg"
  386.         prop JSName :: "bufSeg"
  387.         prop MemberType :: MEM
  388.         prop MemberTest :: MEM.dataMember($1)
  389.         prop Visible :: 1
  390.         prop Writable :: 1
  391.         prop NoGen :: 1
  392.     }
  393.     inst bufalign :: 4 { 
  394.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  395.         prop Style :: 0x01 | 0x02
  396.         prop JSName :: "bufAlign"
  397.         prop Visible :: 1
  398.         prop Writable :: self.modifiable()
  399.         prop NoGen :: 1
  400.         prop Set :: (if ($1 < 4) {self.error("Alignment must be greater than or equal to 4")} else {if (($1 % 2) != 0) {self.error("Alignment must be a power of 2")} else {$i = $1, while ((($i % 2) == 0) && ($i != 2)) {$i = $i / 2}, if (($i % 2) != 0) {self.error("Alignment must be a power of 2")} else {self.bufalign = $1, "ok"}}})
  401.     }
  402.     inst buf :: "<NULL>" { 
  403.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  404.         prop Visible :: 0
  405.         prop Writable :: 0
  406.         prop NoGen :: 0
  407.     }
  408.     inst framesize :: 0x80 { 
  409.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  410.         prop Label :: "framesize (words)"
  411.         prop JSName :: "frameSize"
  412.         prop Style :: 0x01 | 0x02
  413.         prop Visible :: 1
  414.         prop Writable :: 1
  415.         prop NoGen :: 0
  416.         prop Set :: (if ($1 < 1) {self.error("framesize must be >= 1.")} else {if (($1 > self.MAXFRAMEALLOWED) && ((self.RTDX == 1) || (self.DSM == 1))) {if (self.RTDX == 1) {self.error("size (in words) is limited to: (RTDX buffer size in MAUs) / (MAUs per word) - 2")} else {self.error("size (in words) is limited to: shared memory frame size (in MAUs)/4")}} else {self.framesize = $1, $b = 0, scan ($i; HST) {if ($i.IsConfObj()) {if ($i.framesize > $b) {$b = $i.framesize} } }, self.MAXFRAMESET = $b, GlobalStatus.gDirty = 1, "ok"}})
  417.     }
  418.     inst numframes :: 2 { 
  419.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  420.         prop Style :: 0x01
  421.         prop JSName :: "numFrames"
  422.         prop Visible :: 1
  423.         prop Writable :: self.modifiable()
  424.         prop NoGen :: 0
  425.         prop Set :: (if ($1 < 1) {self.error("Channels must contain at least 1 frame.")} else {GlobalStatus.gDirty = 1, self.numframes = $1, "ok"})
  426.     }
  427.     inst stsflg :: 0 { 
  428.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  429.         prop Label :: "statistics"
  430.         prop JSName :: "statistics"
  431.         prop Visible :: 1
  432.         prop Writable :: 1
  433.         prop NoGen :: 0
  434.     }
  435.     inst notify :: @_FXN_F_nop { 
  436.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  437.         prop JSName :: "notifyFxn"
  438.         prop Visible :: 1
  439.         prop Writable :: (if self.iDelUser == "DHL" || self.iDelUser != "USER" {0} else {1})
  440.         prop NoGen :: 0
  441.         prop TabName :: "Notify Function"
  442.     }
  443.     inst arg0 :: 0 { 
  444.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  445.         prop JSName :: "arg0"
  446.         prop Visible :: 1
  447.         prop Writable :: (if self.iDelUser == "DHL" || self.iDelUser != "USER" {0} else {1})
  448.         prop NoGen :: 0
  449.         prop TabName :: "Notify Function"
  450.     }
  451.     inst arg1 :: 0 { 
  452.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  453.         prop JSName :: "arg1"
  454.         prop Visible :: 1
  455.         prop Writable :: (if self.iDelUser == "DHL" || self.iDelUser != "USER" {0} else {1})
  456.         prop NoGen :: 0
  457.         prop TabName :: "Notify Function"
  458.     }
  459.     inst lnk :: = if self.RTDX {"RTDX"} else {"NOTRTDX"} { 
  460.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  461.         prop Label :: "link type"
  462.         prop Visible :: 0
  463.         prop Writable :: 0
  464.         prop NoGen :: 0
  465.     }
  466.     inst iDHLAvailable :: 0 { 
  467.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  468.         prop Label :: "Make this channel available for a new DHL device"
  469.         prop JSName :: "availableForDHL"
  470.         prop Set :: (if (($1 == 0) && (self.iDHLAvailable == 1)) {DHL.gChannelsAvailable--} else {if (($1 == 1) && (self.iDHLAvailable == 0)) {DHL.gChannelsAvailable++} }, self.iDHLAvailable = $1, "ok")
  471.         prop Writable :: self.modifiable()
  472.         prop Visible :: 1
  473.         prop NoGen :: 1
  474.     }
  475.     inst bufFrameAlign :: = self.bufalign { 
  476.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  477.         prop Visible :: 0
  478.         prop Writable :: 0
  479.         prop NoGen :: 0
  480.     }
  481. }
  482. object LNK_dataPump :: IDL {
  483.     param iComment :: "This object cannot be deleted"
  484.     param iIsUsed :: 1
  485.     param iId :: 0
  486.     param iDelUser :: "HST"
  487.     param iDelMsg :: "This object cannot be deleted"
  488.     param function :: @LNK_F_dataPump
  489.     param cycles :: 0
  490.     param calibration :: 1
  491.     param Order :: 1
  492.     param iPri :: 0
  493. }
  494. object RTA_dispatcher :: IDL {
  495.     param iComment :: "This object cannot be deleted"
  496.     param iIsUsed :: 1
  497.     param iId :: 0
  498.     param iDelUser :: "HST"
  499.     param iDelMsg :: "This object cannot be deleted"
  500.     param function :: @RTA_F_dispatch
  501.     param cycles :: 0
  502.     param calibration :: 1
  503.     param Order :: 2
  504.     param iPri :: 0
  505. }
  506. object RTA_fromHost :: HST {
  507.     param iComment :: "Used to access LOG and STS data"
  508.     param iIsUsed :: 1
  509.     param iId :: 1
  510.     param iDelUser :: "HST"
  511.     param iDelMsg :: "This object cannot be deleted"
  512.     param mode :: "input"
  513.     param bufalign :: 4
  514.     param buf :: "<NULL>"
  515.     param framesize :: 4
  516.     param numframes :: 1
  517.     param stsflg :: 0
  518.     param notify :: @_FXN_F_nop
  519.     param arg0 :: 0
  520.     param arg1 :: 0
  521.     param iDHLAvailable :: 0
  522. }
  523. object RTA_toHost :: HST {
  524.     param iComment :: "Used to access LOG and STS data"
  525.     param iIsUsed :: 1
  526.     param iId :: 0
  527.     param iDelUser :: "HST"
  528.     param iDelMsg :: "This object cannot be deleted"
  529.     param mode :: "output"
  530.     param bufalign :: 4
  531.     param buf :: "<NULL>"
  532.     param framesize :: 64
  533.     param numframes :: 1
  534.     param stsflg :: 0
  535.     param notify :: @_FXN_F_nop
  536.     param arg0 :: 0
  537.     param arg1 :: 0
  538.     param iDHLAvailable :: 0
  539. }
  540. type HWI {
  541.     isa ObjectMgr
  542.     prop name :: "HWI"
  543.     prop Label :: "HWI - Hardware Interrupt Service Routine Manager"
  544.     prop IsContainedIn :: SCH
  545.     prop SortChildHierView :: 0
  546.     prop GlobalIcon :: 109
  547.     prop InstanceIcon :: 110
  548.     prop InstanceHelpTopic :: (205)
  549.     prop GlobalHelpTopic :: (105)
  550.     prop dataSize :: (0 * HWI.gNumOf)
  551.     prop localCanCreate :: (self.error("New hardware interrupt objects cannot be created"))
  552.     prop InstancePropertyPage :: ("{B7240DE6-AA51-11cf-9BFE-0000C0AC14C7}")
  553.     prop GlobalPropertyPage :: ("{B7240DE7-AA51-11cf-9BFE-0000C0AC14C7}")
  554.     prop DependsOn :: "GBL,OBJ,CLK,IDL,LCK,LOG,MBX,MEM,PIP,PRD,QUE,RTDX,SEM,STS,SYS"
  555.     prop AllocType :: (if self.ZEROTAB {"1, _stubsAllocDesc, _memSeg, _placement"} else {if ((MEM.ENABLELOADSEG) && (MEM.VECMEMSEG != MEM.LOADVECMEMSEG)) {"2, _stubsAllocDesc, _memSeg, _placement,
  556.     _vectAllocDesc, _loadvecSeg, _minplace"} else {"2, _stubsAllocDesc, _memSeg, _placement,
  557. _vectAllocDesc, _vecSeg, _minplace"}})
  558.     prop _stubsAllocDesc :: (if ((MEM.ENABLELOADSEG) && (MEM.STUBMEMSEG != MEM.LOADSTUBMEMSEG)) {"%8t .%1L: {} load > %2s, run, name, _loadstubSeg"} else {"%8t .%1L: {} , name"})
  559.     prop _vectAllocDesc :: (if ((MEM.ENABLELOADSEG) && (MEM.VECMEMSEG != MEM.LOADVECMEMSEG)) {"%8t .%1L_vec: {%12tn %1U_A_VECS = .;n *(.hwi_vec)%8tn } run > %2s align = 0x400, load , name, _vecSeg"} else {"%8t .%1L_vec: {%12tn %1U_A_VECS = .;n *(.hwi_vec)%8tn } align = 0x400, name"})
  560.     prop _placement :: (0x7fffffff / 2)
  561.     prop _minplace :: 0
  562.     prop GenLinkPrologue :: (if self.ZEROTAB {if ((MEM.ENABLELOADSEG) && (MEM.VECMEMSEG != MEM.LOADVECMEMSEG)) {"SECTIONS {%4tn .%1L_vec: {%8tn %1U_A_VECS = .;n *(.hwi_vec)%4tn }  load >  %2s, run = 0x0 %0tn}n , name, _loadvecSeg"} else {"SECTIONS {%4tn .%1L_vec: 0x0 {%8tn %1U_A_VECS = .;n *(.hwi_vec)%4tn }%0tn}n, name"}} else {if self.GENERATE_RESET_VEC {"SECTIONS {%4tn .%1L_reset: 0x0 {}%0tn}n, name"} else {""}})
  563.     prop localInit :: (if (RTDX.CALLBACKOBJ != nil) {self.error("HWI initialization failure.")} , RTDX.CALLBACKOBJ = HWI)
  564.     prop call :: (if (RTDX.USERTDX == 0) {HWI_RESERVED1.function = @HWI_unused, HWI_RESERVED1.iUseDispatcher = 0, if (HWI_INT9.iSource == JTAGRTDX9 && HWI_INT9.function == @_RTDX_Poll) {HWI_INT9.iSource = MCSP_0_Transmit, HWI_INT9.iReMappable = 1, HWI_INT9.function = @HWI_unused, HWI_INT9.iUseDispatcher = 0, HWI_INT9.iIntrMask = "self", HWI_INT9.IntrMask = 0x200, HWI_INT9.client = "USER"} , if (HWI_INT11.iSource == HSRTDX11 && HWI_INT11.function == @_HSRTDX_xmt) {HWI_INT11.iSource = MCSP_0_Receive, HWI_INT11.iReMappable = 1, HWI_INT11.function = @HWI_unused, HWI_INT11.iUseDispatcher = 0, HWI_INT11.iIntrMask = "self", HWI_INT11.IntrMask = 0x800, HWI_INT11.client = "USER"} , if (HWI_INT12.iSource == HSRTDX12 && HWI_INT12.function == @_HSRTDX_rec) {HWI_INT12.iSource = MCSP_1_Transmit, HWI_INT12.iReMappable = 1, HWI_INT12.function = @HWI_unused, HWI_INT12.iUseDispatcher = 0, HWI_INT12.iIntrMask = "self", HWI_INT12.IntrMask = 0x1000, HWI_INT12.client = "USER"} } else {HWI_RESERVED1.function = @_RTDX_Poll, HWI_RESERVED1.iUseDispatcher = 1, if (RTDX.RTDXTYPE == "HSRTDX") {if (HWI_INT9.iSource == JTAGRTDX9 && HWI_INT9.function == @_RTDX_Poll) {HWI_INT9.iSource = MCSP_0_Transmit, HWI_INT9.iReMappable = 1, HWI_INT9.function = @HWI_unused, HWI_INT9.iUseDispatcher = 0, HWI_INT9.iIntrMask = "self", HWI_INT9.IntrMask = 0x200, HWI_INT9.client = "USER"} , HWI_INT11.iSource = HSRTDX11, HWI_INT11.iReMappable = 0, HWI_INT11.function = @_HSRTDX_xmt, HWI_INT11.iUseDispatcher = 1, HWI_INT11.iIntrMask = "bitmask", HWI_INT11.IntrMask = 0x1808, HWI_INT11.client = "RTDX", HWI_INT12.iSource = HSRTDX12, HWI_INT12.iReMappable = 0, HWI_INT12.function = @_HSRTDX_rec, HWI_INT12.iUseDispatcher = 1, HWI_INT12.iIntrMask = "bitmask", HWI_INT12.IntrMask = 0x1808, HWI_INT12.client = "RTDX"} else {HWI_INT9.iSource = JTAGRTDX9, HWI_INT9.iReMappable = 0, HWI_INT9.function = @_RTDX_Poll, HWI_INT9.iUseDispatcher = 1, HWI_INT9.iIntrMask = "self", HWI_INT9.IntrMask = 0x208, HWI_INT9.client = "RTDX", if (HWI_INT11.iSource == HSRTDX11 && HWI_INT11.function == @_HSRTDX_xmt) {HWI_INT11.iSource = MCSP_0_Receive, HWI_INT11.iReMappable = 1, HWI_INT11.function = @HWI_unused, HWI_INT11.iUseDispatcher = 0, HWI_INT11.iIntrMask = "self", HWI_INT11.IntrMask = 0x800, HWI_INT11.client = "USER"} , if (HWI_INT12.iSource == HSRTDX12 && HWI_INT12.function == @_HSRTDX_rec) {HWI_INT12.iSource = MCSP_1_Transmit, HWI_INT12.iReMappable = 1, HWI_INT12.function = @HWI_unused, HWI_INT12.iUseDispatcher = 0, HWI_INT12.iIntrMask = "self", HWI_INT12.IntrMask = 0x1000, HWI_INT12.client = "USER"} }})
  565.     prop _memSeg :: MEM.STUBMEMSEG
  566.     prop _loadstubSeg :: MEM.LOADSTUBMEMSEG
  567.     prop _linkString :: ($b = 0, scan ($a; HWI) {if ($a.monitor != "Nothing") {$b = 1} }, if ($b == 1) {"*(.hwi)"} else {"/* no HWI stubs are necessary */"})
  568.     prop name2addr :: ($i = 0, $b = nil, scan ($a; {"Nothing", "Data Value", "Stack Pointer", "Top of SW Stack", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13", "B14", "B15"}) {if ($b == nil) {if ($a == $1) {$b = {0, 0, 0, @GBL_stackbeg, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}[$i]} , $i++} }, if ($b == nil) {$b = 0} , $b)
  569.     prop name2type :: ($i = 0, $b = nil, scan ($a; {"Nothing", "Data Value", "Stack Pointer", "Top of SW Stack", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "A10", "A11", "A12", "A13", "A14", "A15", "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B11", "B12", "B13", "B14", "B15"}) {if ($b == nil) {if ($a == $1) {if ($i < 5) {$b = {"unsigned", "signed", "unsigned", "unsigned", "unsigned"}[$i]} } , $i++} }, if ($b == nil) {$b = "unsigned"} , $b)
  570.     prop _vecSeg :: MEM.VECMEMSEG
  571.     prop _loadvecSeg :: MEM.LOADVECMEMSEG
  572.     global gUser :: "USER" { 
  573.         prop Visible :: 0
  574.         prop Writable :: 0
  575.         prop NoGen :: 1
  576.     }
  577.     global gSetOf :: 65535 { 
  578.         prop Visible :: 0
  579.         prop Writable :: 0
  580.         prop NoGen :: 1
  581.     }
  582.     global gNumOf :: 16 { 
  583.         prop Visible :: 0
  584.         prop Writable :: 0
  585.         prop NoGen :: 1
  586.     }
  587.     global gDirty :: 1 { 
  588.         prop Visible :: 0
  589.         prop Writable :: 0
  590.         prop NoGen :: 1
  591.     }
  592.     global gInitFlag :: 1 { 
  593.         prop Visible :: 0
  594.         prop Writable :: 0
  595.         prop NoGen :: 1
  596.     }
  597.     global gInit :: = ($a = 0, $b = 0, scan ($i; self) {if ($i.IsConfObj()) {$a += 1, if (self.isFinite) {$b |= 1 << $i.iId} } }, self.gNumOf = $a, self.gSetOf = $b, if (self.gInitFlag == 0) {self.localInit()} , self.gInitFlag = 1) { 
  598.         prop Visible :: 0
  599.         prop Writable :: 0
  600.         prop NoGen :: 1
  601.     }
  602.     global STUBMEMSEG :: ISRAM { 
  603.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  604.         prop MemberType :: MEM
  605.         prop MemberTest :: MEM.codeMember($1)
  606.         prop Label :: "Function Stub Memory"
  607.         prop Visible :: 0
  608.         prop Writable :: 1
  609.         prop NoGen :: 1
  610.     }
  611.     global ZEROTAB :: = MEM.VECMEMSEG.base == 0 { 
  612.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  613.         prop Writable :: 0
  614.         prop Visible :: 0
  615.     }
  616.     global VECMEMSEG :: ISRAM { 
  617.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  618.         prop MemberType :: MEM
  619.         prop Label :: "Interrupt Service Table Memory"
  620.         prop Visible :: 0
  621.         prop Writable :: 1
  622.         prop NoGen :: 1
  623.         prop MemberTest :: MEM.codeMember($1)
  624.         prop Set :: (self.VECMEMSEG = $1, if ($1.base == 0) {self.GENERATE_RESET_VEC = 0} , "ok")
  625.     }
  626.     global GENERATE_RESET_VEC :: 0 { 
  627.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  628.         prop Label :: "Generate RESET vector at address 0 "
  629.         prop JSName :: "RESETVECTOR"
  630.         prop Writable :: self.ZEROTAB == 0
  631.         prop Visible :: 1
  632.         prop NoGen :: 0
  633.     }
  634.     global EXT4_POLARITY :: "low-to-high" { 
  635.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  636.         prop Enum :: "low-to-high,high-to-low"
  637.         prop Label :: "External Interrupt Pin 4 Polarity"
  638.         prop JSName :: "EXTPIN4POLARITY"
  639.         prop Visible :: 1
  640.         prop Writable :: 1
  641.         prop NoGen :: 1
  642.     }
  643.     global EXT5_POLARITY :: "low-to-high" { 
  644.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  645.         prop Enum :: "low-to-high,high-to-low"
  646.         prop Label :: "External Interrupt Pin 5 Polarity"
  647.         prop JSName :: "EXTPIN5POLARITY"
  648.         prop Visible :: 1
  649.         prop Writable :: 1
  650.         prop NoGen :: 1
  651.     }
  652.     global EXT6_POLARITY :: "low-to-high" { 
  653.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  654.         prop Enum :: "low-to-high,high-to-low"
  655.         prop Label :: "External Interrupt Pin 6 Polarity"
  656.         prop JSName :: "EXTPIN6POLARITY"
  657.         prop Visible :: 1
  658.         prop Writable :: 1
  659.         prop NoGen :: 1
  660.     }
  661.     global EXT7_POLARITY :: "low-to-high" { 
  662.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  663.         prop Enum :: "low-to-high,high-to-low"
  664.         prop Label :: "External Interrupt Pin 7 Polarity"
  665.         prop JSName :: "EXTPIN7POLARITY"
  666.         prop Visible :: 1
  667.         prop Writable :: 1
  668.         prop NoGen :: 1
  669.     }
  670.     global POLARITYMASK :: = (if self.EXT4_POLARITY == "high-to-low" {1} else {0}) | (if self.EXT5_POLARITY == "high-to-low" {1} else {0}) << 1 | (if self.EXT6_POLARITY == "high-to-low" {1} else {0}) << 2 | (if self.EXT7_POLARITY == "high-to-low" {1} else {0}) << 3 { 
  671.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  672.         prop Visible :: 0
  673.         prop Writable :: 0
  674.         prop NoGen :: 0
  675.     }
  676.     global INTRMULTLOW :: = (HWI_INT4.iSource.iIntrSelectNum) | (HWI_INT5.iSource.iIntrSelectNum << 5) | (HWI_INT6.iSource.iIntrSelectNum << 10) | (HWI_INT7.iSource.iIntrSelectNum << 16) | (HWI_INT8.iSource.iIntrSelectNum << 21) | (HWI_INT9.iSource.iIntrSelectNum << 26) { 
  677.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  678.         prop Style :: 0x02
  679.         prop Writable :: 0
  680.         prop Visible :: 0
  681.         prop NoGen :: 0
  682.     }
  683.     global INTRMULTHIGH :: = (HWI_INT10.iSource.iIntrSelectNum) | (HWI_INT11.iSource.iIntrSelectNum << 5) | (HWI_INT12.iSource.iIntrSelectNum << 10) | (HWI_INT13.iSource.iIntrSelectNum << 16) | (HWI_INT14.iSource.iIntrSelectNum << 21) | (HWI_INT15.iSource.iIntrSelectNum << 26) { 
  684.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  685.         prop Style :: 0x02
  686.         prop Writable :: 0
  687.         prop Visible :: 0
  688.         prop NoGen :: 0
  689.     }
  690.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  691.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  692.         prop Label :: "comment"
  693.         prop JSName :: "comment"
  694.         prop Visible :: 1
  695.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  696.         prop NoGen :: 1
  697.     }
  698.     inst iIsUsed :: 0 { 
  699.         prop Visible :: 0
  700.         prop Writable :: 0
  701.         prop NoGen :: 1
  702.     }
  703.     inst iId :: 0 { 
  704.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  705.         prop Style :: 0x01
  706.         prop Visible :: 0
  707.         prop Writable :: 1
  708.         prop NoGen :: 1
  709.     }
  710.     inst iDelUser :: "USER" { 
  711.         prop Visible :: 0
  712.         prop Writable :: 0
  713.         prop NoGen :: 1
  714.     }
  715.     inst iDelMsg :: "ok" { 
  716.         prop Visible :: 0
  717.         prop Writable :: 0
  718.         prop NoGen :: 1
  719.     }
  720.     inst iSource :: Reset { 
  721.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  722.         prop MemberType :: ISRC
  723.         prop MemberTest :: 1
  724.         prop Label :: "interrupt source"
  725.         prop JSName :: "interruptSource"
  726.         prop Visible :: 1
  727.         prop Writable :: self.iReMappable
  728.         prop NoGen :: 1
  729.         prop Set :: ($a = $1, if ($a == Reset) {self.error("The Reset interrupt source cannot be remapped")} else {if ($a == Non_Maskable) {self.error("The Non-Maskable interrupt source cannot be remapped")} else {if ($a == Reserved) {self.error("The Reserved interrupt source cannot be remapped")} else {if (CLK.WHICHHWI == self && $a != self.iSource && CLK.USETIMER) {self.error("This interrupt is in use by CLK, settings may be changed in the CLK Manager")} else {if ($a == CLK.WHICHHWI.iSource && CLK.USETIMER == 1) {self.error("Interrupt source is in use by CLK, settings may be changed in the CLK Manager.")} else {$a.iHwi = self, self.iSource.iHwi = HWI_UNUSED, self.iSource = $1, "ok"}}}}})
  730.     }
  731.     inst iReMappable :: 1 { 
  732.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  733.         prop Visible :: 0
  734.         prop Writable :: 0
  735.         prop NoGen :: 1
  736.     }
  737.     inst iIntrEnableMask :: 0 { 
  738.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  739.         prop Style :: 0x02
  740.         prop Visible :: 0
  741.         prop Writable :: 0
  742.         prop NoGen :: 1
  743.     }
  744.     inst function :: @HWI_unused { 
  745.         prop JSName :: "fxn"
  746.         prop Visible :: 1
  747.         prop Writable :: if ((self.function == @RESERVED) || (self.client != "USER")) {0} else {1}
  748.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  749.         prop NoGen :: 0
  750.         prop Set :: (self.function = $1, GlobalStatus.gDirty = 1, "ok")
  751.     }
  752.     inst iSTSObj :: HWI_RESETSTS { 
  753.         prop Visible :: 0
  754.         prop Writable :: 0
  755.         prop NoGen :: 1
  756.     }
  757.     inst monitor :: "Nothing" { 
  758.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  759.         prop Enum :: "Nothing,Data Value,Stack Pointer,Top of SW Stack,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15"
  760.         prop JSName :: "monitor"
  761.         prop Visible :: 1
  762.         prop Writable :: ((self.function != @HWI_unused && self.function != @RESERVED) && (self.iId != 0))
  763.         prop NoGen :: 0
  764.         prop Set :: (if ($1 != self.monitor) {$e = "ok", if ($1 == "Nothing") {if (($e = self.iSTSObj.Delete("HWI")) == "ok") {self.monitor = "Nothing", self.addr = self.name2addr(self.monitor), self.dataType = self.name2type(self.monitor)} } else {if (self.iSTSObj.iIsUsed || ($e = self.iSTSObj.Create("HWI")) == "ok") {self.monitor = $1, if (self.monitor == "Data Value") {self.addr = self.saveAddr, self.dataType = self.saveType} else {self.addr = self.name2addr(self.monitor), self.dataType = self.name2type(self.monitor)}} else {self.monitor = "Nothing"}}, $e} else {"ok"})
  765.     }
  766.     inst saveAddr :: 0 { 
  767.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  768.         prop Visible :: 0
  769.         prop Writable :: 0
  770.         prop NoGen :: 1
  771.     }
  772.     inst saveType :: "signed" { 
  773.         prop Visible :: 0
  774.         prop Writable :: 0
  775.         prop NoGen :: 1
  776.     }
  777.     inst addr :: 0 { 
  778.         prop JSName :: "addr"
  779.         prop Visible :: 1
  780.         prop Writable :: (if self.monitor == "Data Value" {1} else {0})
  781.         prop NoGen :: 0
  782.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  783.         prop Format :: if GBL.DSPTYPE == 62 {"0x%08x"} else {"0x%04x"}
  784.         prop Set :: (self.addr = $1, self.saveAddr = $1, "ok")
  785.     }
  786.     inst dataType :: "signed" { 
  787.         prop Visible :: 1
  788.         prop Writable :: (if self.monitor == "Nothing" {0} else {1})
  789.         prop NoGen :: 0
  790.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  791.         prop Enum :: "signed,unsigned"
  792.         prop Label :: "type"
  793.         prop JSName :: "dataType"
  794.         prop Set :: (if (self.monitor != "Nothing") {self.dataType = $1, self.saveType = $1, "ok"} else {self.error("The monitor field must set to modify this field")})
  795.     }
  796.     inst operation :: "STS_add(*addr)" { 
  797.         prop Visible :: 1
  798.         prop Writable :: (if self.monitor == "Nothing" {0} else {1})
  799.         prop NoGen :: 0
  800.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  801.         prop JSName :: "operation"
  802.         prop Enum :: "STS_add(*addr),STS_delta(*addr),STS_add(-*addr),STS_delta(-*addr),STS_add(|*addr|),STS_delta(|*addr|)"
  803.         prop Set :: (if (self.monitor != "Nothing") {self.operation = $1, "ok"} else {self.error("The monitor field must set to modify this field")})
  804.     }
  805.     inst client :: "USER" { 
  806.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  807.         prop Visible :: 0
  808.         prop Writable :: 0
  809.         prop NoGen :: 0
  810.     }
  811.     inst iUseDispatcher :: 0 { 
  812.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  813.         prop Label :: "Use Dispatcher"
  814.         prop JSName :: "useDispatcher"
  815.         prop Visible :: 1
  816.         prop Writable :: if (self.client == "USER") {1} else {0}
  817.         prop NoGen :: 0
  818.         prop TabName :: "Dispatcher"
  819.         prop Set :: (if (self == HWI_NMI) {self.error("HWI dispatcher can't be used for  NMI")} else {self.iUseDispatcher = $1, "ok"})
  820.     }
  821.     inst iArg :: 0 { 
  822.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  823.         prop Label :: "Arg"
  824.         prop JSName :: "arg"
  825.         prop Visible :: 1
  826.         prop Writable :: if ((self.iUseDispatcher == 1) && (self.client == "USER")) {1} else {0}
  827.         prop NoGen :: 0
  828.         prop TabName :: "Dispatcher"
  829.         prop Set :: (self.iArg = $1, "ok")
  830.     }
  831.     inst iIntrMask :: "self" { 
  832.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  833.         prop Label :: "Interrupt Mask"
  834.         prop JSName :: "interruptMask"
  835.         prop Enum :: "all,none,self,bitmask"
  836.         prop Visible :: 1
  837.         prop Writable :: if (self.iUseDispatcher == 1) {1} else {0}
  838.         prop NoGen :: 1
  839.         prop TabName :: "Dispatcher"
  840.         prop Set :: (if ($1 == "all") {self.IntrMask = 0xffff} else {if ($1 == "self") {self.IntrMask = 1 << self.iId} else {if ($1 == "none") {self.IntrMask = 0} }}, self.iIntrMask = $1, "ok")
  841.     }
  842.     inst IntrMask :: (1 << self.iId) { 
  843.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  844.         prop Format :: "0x%04x"
  845.         prop Style :: 0x02
  846.         prop Label :: "Interrupt Bit Mask"
  847.         prop JSName :: "interruptBitMask"
  848.         prop Visible :: 1
  849.         prop Writable :: if ((self.iUseDispatcher == 1) && (self.iIntrMask == "bitmask")) {1} else {0}
  850.         prop NoGen :: 0
  851.         prop TabName :: "Dispatcher"
  852.         prop Set :: (if ($1 > 0xffff) {self.error("Invalid Number")} else {self.IntrMask = $1, "ok"})
  853.     }
  854.     inst iCacheControl :: 1 { 
  855.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  856.         prop Label :: "Don't modify cache control"
  857.         prop JSName :: "cacheControl"
  858.         prop Visible :: 1
  859.         prop Writable :: if (self.iUseDispatcher == 1) {1} else {0}
  860.         prop NoGen :: 1
  861.         prop TabName :: "Dispatcher"
  862.         prop Set :: (if ($1 == 1) {self.iCCBitMask = 0x1} else {self.iCCBitMask = (self.iPCCBitMask | self.iDCCBitMask)}, self.iCacheControl = $1, "ok")
  863.     }
  864.     inst iPCCMask :: (if (GBL.DSPSUBTYPE == 6200 || GBL.DSPSUBTYPE == 6700) {"mapped"} else {"cache enable"}) { 
  865.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  866.         prop Enum :: "mapped,cache enable,cache freeze,cache bypass"
  867.         prop Label :: "Program Cache Control Mask"
  868.         prop JSName :: "progCacheMask"
  869.         prop Visible :: 1
  870.         prop Writable :: if ((self.iUseDispatcher == 1) && (self.iCacheControl == 0)) {1} else {0}
  871.         prop NoGen :: 1
  872.         prop TabName :: "Dispatcher"
  873.         prop Set :: (if ((GBL.DSPSUBTYPE == 6211 || GBL.DSPSUBTYPE == 6711 || GBL.DSPSUBTYPE == 6400) && $1 != "cache enable") {self.error("unsupported cache mode for 6x1x/64x device (cache enable must be selected)")} else {if ($1 == "mapped") {self.iPCCBitMask = 0x0000} else {if ($1 == "cache enable") {self.iPCCBitMask = 0x0040} else {if ($1 == "cache freeze") {self.iPCCBitMask = 0x0060} else {self.iPCCBitMask = 0x0080}}}, self.iPCCMask = $1, self.iCCBitMask = self.iPCCBitMask | self.iDCCBitMask, "ok"})
  874.     }
  875.     inst iPCCBitMask :: 0x0000 { 
  876.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  877.         prop Visible :: 0
  878.         prop Writable :: 0
  879.         prop NoGen :: 1
  880.     }
  881.     inst iDCCMask :: (if (GBL.DSPSUBTYPE == 6200 || GBL.DSPSUBTYPE == 6700) {"mapped"} else {"cache enable"}) { 
  882.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  883.         prop Enum :: "mapped,cache enable,cache freeze,cache bypass"
  884.         prop Label :: "Data Cache Control Mask"
  885.         prop JSName :: "dataCacheMask"
  886.         prop Visible :: 1
  887.         prop Writable :: if ((self.iUseDispatcher == 1) && (self.iCacheControl == 0)) {1} else {0}
  888.         prop NoGen :: 1
  889.         prop TabName :: "Dispatcher"
  890.         prop Set :: (if ((GBL.DSPSUBTYPE == 6211 || GBL.DSPSUBTYPE == 6711 || GBL.DSPSUBTYPE == 6400) && $1 != "cache enable") {self.error("unsupported cache mode for 6x1x/64x device (cache enable must be selected)")} else {if ($1 == "mapped") {self.iDCCBitMask = 0x0000} else {if ($1 == "cache enable") {self.iDCCBitMask = 0x0008} else {if ($1 == "cache freeze") {self.iDCCBitMask = 0x000C} else {self.iDCCBitMask = 0x0010}}}, self.iDCCMask = $1, self.iCCBitMask = self.iPCCBitMask | self.iDCCBitMask, "ok"})
  891.     }
  892.     inst iDCCBitMask :: 0x0000 { 
  893.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  894.         prop Visible :: 0
  895.         prop Writable :: 0
  896.         prop NoGen :: 1
  897.     }
  898.     inst iCCBitMask :: 1 { 
  899.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  900.         prop Visible :: 0
  901.         prop Writable :: 0
  902.         prop NoGen :: 0
  903.     }
  904. }
  905. object HWI_RESET_STS :: STS {
  906.     param iComment :: "provides statistics for the RESET ISR"
  907.     param iIsUsed :: 0
  908.     param iId :: 0
  909.     param iDelUser :: "HWI"
  910.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  911.     param prev :: 0
  912.     param format :: "%g"
  913.     param unittype :: "Not time based"
  914.     param operation :: "Nothing"
  915.     param iA :: 1
  916.     param iB :: 0
  917.     param iC :: 1
  918.     param prevhigh :: 0
  919.     param prevlow :: 0
  920. }
  921. object HWI_RESET :: HWI {
  922.     param iComment :: "defines function for the RESET ISR"
  923.     param iIsUsed :: 1
  924.     param iId :: 0
  925.     param iDelUser :: "HWI"
  926.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  927.     param iSource :: Reset
  928.     param iReMappable :: 0
  929.     param iIntrEnableMask :: 1
  930.     param function :: @_c_int00
  931.     param iSTSObj :: HWI_RESET_STS
  932.     param monitor :: "Nothing"
  933.     param saveAddr :: 0
  934.     param saveType :: "signed"
  935.     param addr :: 0
  936.     param dataType :: "signed"
  937.     param operation :: "STS_add(*addr)"
  938.     param client :: "USER"
  939.     param iUseDispatcher :: 0
  940.     param iArg :: 0
  941.     param iIntrMask :: "self"
  942.     param IntrMask :: 1
  943.     param iCacheControl :: 1
  944.     param iPCCMask :: "cache enable"
  945.     param iPCCBitMask :: 0
  946.     param iDCCMask :: "cache enable"
  947.     param iDCCBitMask :: 0
  948.     param iCCBitMask :: 1
  949. }
  950. object HWI_NMI_STS :: STS {
  951.     param iComment :: "provides statistics for the NMI ISR"
  952.     param iIsUsed :: 0
  953.     param iId :: 0
  954.     param iDelUser :: "HWI"
  955.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  956.     param prev :: 0
  957.     param format :: "%g"
  958.     param unittype :: "Not time based"
  959.     param operation :: "Nothing"
  960.     param iA :: 1
  961.     param iB :: 0
  962.     param iC :: 1
  963.     param prevhigh :: 0
  964.     param prevlow :: 0
  965. }
  966. object HWI_NMI :: HWI {
  967.     param iComment :: "defines function for the NMI ISR"
  968.     param iIsUsed :: 1
  969.     param iId :: 1
  970.     param iDelUser :: "HWI"
  971.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  972.     param iSource :: Non_Maskable
  973.     param iReMappable :: 0
  974.     param iIntrEnableMask :: 2
  975.     param function :: @HWI_unused
  976.     param iSTSObj :: HWI_NMI_STS
  977.     param monitor :: "Nothing"
  978.     param saveAddr :: 0
  979.     param saveType :: "signed"
  980.     param addr :: 0
  981.     param dataType :: "signed"
  982.     param operation :: "STS_add(*addr)"
  983.     param client :: "USER"
  984.     param iUseDispatcher :: 0
  985.     param iArg :: 0
  986.     param iIntrMask :: "self"
  987.     param IntrMask :: 2
  988.     param iCacheControl :: 1
  989.     param iPCCMask :: "cache enable"
  990.     param iPCCBitMask :: 0
  991.     param iDCCMask :: "cache enable"
  992.     param iDCCBitMask :: 0
  993.     param iCCBitMask :: 1
  994. }
  995. object HWI_RESERVED0_STS :: STS {
  996.     param iComment :: "This STS object is being used by a HWI object and cannot be deleted"
  997.     param iIsUsed :: 0
  998.     param iId :: 0
  999.     param iDelUser :: "HWI"
  1000.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1001.     param prev :: 0
  1002.     param format :: "%g"
  1003.     param unittype :: "Not time based"
  1004.     param operation :: "Nothing"
  1005.     param iA :: 1
  1006.     param iB :: 0
  1007.     param iC :: 1
  1008.     param prevhigh :: 0
  1009.     param prevlow :: 0
  1010. }
  1011. object HWI_RESERVED0 :: HWI {
  1012.     param iComment :: "RESERVED for RTDX"
  1013.     param iIsUsed :: 1
  1014.     param iId :: 2
  1015.     param iDelUser :: "HWI"
  1016.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1017.     param iSource :: Reserved
  1018.     param iReMappable :: 0
  1019.     param iIntrEnableMask :: 4
  1020.     param function :: @RESERVED
  1021.     param iSTSObj :: HWI_RESERVED0_STS
  1022.     param monitor :: "Nothing"
  1023.     param saveAddr :: 0
  1024.     param saveType :: "signed"
  1025.     param addr :: 0
  1026.     param dataType :: "signed"
  1027.     param operation :: "STS_add(*addr)"
  1028.     param client :: "RTDX"
  1029.     param iUseDispatcher :: 0
  1030.     param iArg :: 0
  1031.     param iIntrMask :: "self"
  1032.     param IntrMask :: 4
  1033.     param iCacheControl :: 1
  1034.     param iPCCMask :: "cache enable"
  1035.     param iPCCBitMask :: 0
  1036.     param iDCCMask :: "cache enable"
  1037.     param iDCCBitMask :: 0
  1038.     param iCCBitMask :: 1
  1039. }
  1040. object HWI_RESERVED1_STS :: STS {
  1041.     param iComment :: "This STS object is being used by a HWI object and cannot be deleted"
  1042.     param iIsUsed :: 0
  1043.     param iId :: 0
  1044.     param iDelUser :: "HWI"
  1045.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1046.     param prev :: 0
  1047.     param format :: "%g"
  1048.     param unittype :: "Not time based"
  1049.     param operation :: "Nothing"
  1050.     param iA :: 1
  1051.     param iB :: 0
  1052.     param iC :: 1
  1053.     param prevhigh :: 0
  1054.     param prevlow :: 0
  1055. }
  1056. object HWI_RESERVED1 :: HWI {
  1057.     param iComment :: "RESERVED for RTDX"
  1058.     param iIsUsed :: 1
  1059.     param iId :: 3
  1060.     param iDelUser :: "HWI"
  1061.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1062.     param iSource :: Reserved
  1063.     param iReMappable :: 0
  1064.     param iIntrEnableMask :: 8
  1065.     param function :: @_RTDX_Poll
  1066.     param iSTSObj :: HWI_RESERVED1_STS
  1067.     param monitor :: "Nothing"
  1068.     param saveAddr :: 0
  1069.     param saveType :: "signed"
  1070.     param addr :: 0
  1071.     param dataType :: "signed"
  1072.     param operation :: "STS_add(*addr)"
  1073.     param client :: "RTDX"
  1074.     param iUseDispatcher :: 1
  1075.     param iArg :: 0
  1076.     param iIntrMask :: "self"
  1077.     param IntrMask :: 8
  1078.     param iCacheControl :: 1
  1079.     param iPCCMask :: "cache enable"
  1080.     param iPCCBitMask :: 0
  1081.     param iDCCMask :: "cache enable"
  1082.     param iDCCBitMask :: 0
  1083.     param iCCBitMask :: 1
  1084. }
  1085. object HWI_INT4_STS :: STS {
  1086.     param iComment :: "provides statistics for the INT4 ISR"
  1087.     param iIsUsed :: 0
  1088.     param iId :: 0
  1089.     param iDelUser :: "HWI"
  1090.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1091.     param prev :: 0
  1092.     param format :: "%g"
  1093.     param unittype :: "Not time based"
  1094.     param operation :: "Nothing"
  1095.     param iA :: 1
  1096.     param iB :: 0
  1097.     param iC :: 1
  1098.     param prevhigh :: 0
  1099.     param prevlow :: 0
  1100. }
  1101. object HWI_INT4 :: HWI {
  1102.     param iComment :: "defines the INT4 Interrupt"
  1103.     param iIsUsed :: 1
  1104.     param iId :: 4
  1105.     param iDelUser :: "HWI"
  1106.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1107.     param iSource :: External_Pin_4
  1108.     param iReMappable :: 1
  1109.     param iIntrEnableMask :: 16
  1110.     param function :: @HWI_unused
  1111.     param iSTSObj :: HWI_INT4_STS
  1112.     param monitor :: "Nothing"
  1113.     param saveAddr :: 0
  1114.     param saveType :: "signed"
  1115.     param addr :: 0
  1116.     param dataType :: "signed"
  1117.     param operation :: "STS_add(*addr)"
  1118.     param client :: "USER"
  1119.     param iUseDispatcher :: 0
  1120.     param iArg :: 0
  1121.     param iIntrMask :: "self"
  1122.     param IntrMask :: 16
  1123.     param iCacheControl :: 1
  1124.     param iPCCMask :: "cache enable"
  1125.     param iPCCBitMask :: 0
  1126.     param iDCCMask :: "cache enable"
  1127.     param iDCCBitMask :: 0
  1128.     param iCCBitMask :: 1
  1129. }
  1130. object HWI_INT5_STS :: STS {
  1131.     param iComment :: "provides statistics for the INT5 ISR"
  1132.     param iIsUsed :: 0
  1133.     param iId :: 0
  1134.     param iDelUser :: "HWI"
  1135.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1136.     param prev :: 0
  1137.     param format :: "%g"
  1138.     param unittype :: "Not time based"
  1139.     param operation :: "Nothing"
  1140.     param iA :: 1
  1141.     param iB :: 0
  1142.     param iC :: 1
  1143.     param prevhigh :: 0
  1144.     param prevlow :: 0
  1145. }
  1146. object HWI_INT5 :: HWI {
  1147.     param iComment :: "defines the INT5 Interrupt"
  1148.     param iIsUsed :: 1
  1149.     param iId :: 5
  1150.     param iDelUser :: "HWI"
  1151.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1152.     param iSource :: External_Pin_5
  1153.     param iReMappable :: 1
  1154.     param iIntrEnableMask :: 32
  1155.     param function :: @HWI_unused
  1156.     param iSTSObj :: HWI_INT5_STS
  1157.     param monitor :: "Nothing"
  1158.     param saveAddr :: 0
  1159.     param saveType :: "signed"
  1160.     param addr :: 0
  1161.     param dataType :: "signed"
  1162.     param operation :: "STS_add(*addr)"
  1163.     param client :: "USER"
  1164.     param iUseDispatcher :: 0
  1165.     param iArg :: 0
  1166.     param iIntrMask :: "self"
  1167.     param IntrMask :: 32
  1168.     param iCacheControl :: 1
  1169.     param iPCCMask :: "cache enable"
  1170.     param iPCCBitMask :: 0
  1171.     param iDCCMask :: "cache enable"
  1172.     param iDCCBitMask :: 0
  1173.     param iCCBitMask :: 1
  1174. }
  1175. object HWI_INT6_STS :: STS {
  1176.     param iComment :: "provides statistics for the INT6 ISR"
  1177.     param iIsUsed :: 0
  1178.     param iId :: 0
  1179.     param iDelUser :: "HWI"
  1180.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1181.     param prev :: 0
  1182.     param format :: "%g"
  1183.     param unittype :: "Not time based"
  1184.     param operation :: "Nothing"
  1185.     param iA :: 1
  1186.     param iB :: 0
  1187.     param iC :: 1
  1188.     param prevhigh :: 0
  1189.     param prevlow :: 0
  1190. }
  1191. object HWI_INT6 :: HWI {
  1192.     param iComment :: "defines the INT6 Interrupt"
  1193.     param iIsUsed :: 1
  1194.     param iId :: 6
  1195.     param iDelUser :: "HWI"
  1196.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1197.     param iSource :: External_Pin_6
  1198.     param iReMappable :: 1
  1199.     param iIntrEnableMask :: 64
  1200.     param function :: @HWI_unused
  1201.     param iSTSObj :: HWI_INT6_STS
  1202.     param monitor :: "Nothing"
  1203.     param saveAddr :: 0
  1204.     param saveType :: "signed"
  1205.     param addr :: 0
  1206.     param dataType :: "signed"
  1207.     param operation :: "STS_add(*addr)"
  1208.     param client :: "USER"
  1209.     param iUseDispatcher :: 0
  1210.     param iArg :: 0
  1211.     param iIntrMask :: "self"
  1212.     param IntrMask :: 64
  1213.     param iCacheControl :: 1
  1214.     param iPCCMask :: "cache enable"
  1215.     param iPCCBitMask :: 0
  1216.     param iDCCMask :: "cache enable"
  1217.     param iDCCBitMask :: 0
  1218.     param iCCBitMask :: 1
  1219. }
  1220. object HWI_INT7_STS :: STS {
  1221.     param iComment :: "provides statistics for the INT7 ISR"
  1222.     param iIsUsed :: 0
  1223.     param iId :: 0
  1224.     param iDelUser :: "HWI"
  1225.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1226.     param prev :: 0
  1227.     param format :: "%g"
  1228.     param unittype :: "Not time based"
  1229.     param operation :: "Nothing"
  1230.     param iA :: 1
  1231.     param iB :: 0
  1232.     param iC :: 1
  1233.     param prevhigh :: 0
  1234.     param prevlow :: 0
  1235. }
  1236. object HWI_INT7 :: HWI {
  1237.     param iComment :: "defines the INT7 Interrupt"
  1238.     param iIsUsed :: 1
  1239.     param iId :: 7
  1240.     param iDelUser :: "HWI"
  1241.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1242.     param iSource :: External_Pin_7
  1243.     param iReMappable :: 1
  1244.     param iIntrEnableMask :: 128
  1245.     param function :: @HWI_unused
  1246.     param iSTSObj :: HWI_INT7_STS
  1247.     param monitor :: "Nothing"
  1248.     param saveAddr :: 0
  1249.     param saveType :: "signed"
  1250.     param addr :: 0
  1251.     param dataType :: "signed"
  1252.     param operation :: "STS_add(*addr)"
  1253.     param client :: "USER"
  1254.     param iUseDispatcher :: 0
  1255.     param iArg :: 0
  1256.     param iIntrMask :: "self"
  1257.     param IntrMask :: 128
  1258.     param iCacheControl :: 1
  1259.     param iPCCMask :: "cache enable"
  1260.     param iPCCBitMask :: 0
  1261.     param iDCCMask :: "cache enable"
  1262.     param iDCCBitMask :: 0
  1263.     param iCCBitMask :: 1
  1264. }
  1265. object HWI_INT8_STS :: STS {
  1266.     param iComment :: "provides statistics for the INT8 ISR"
  1267.     param iIsUsed :: 0
  1268.     param iId :: 0
  1269.     param iDelUser :: "HWI"
  1270.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1271.     param prev :: 0
  1272.     param format :: "%g"
  1273.     param unittype :: "Not time based"
  1274.     param operation :: "Nothing"
  1275.     param iA :: 1
  1276.     param iB :: 0
  1277.     param iC :: 1
  1278.     param prevhigh :: 0
  1279.     param prevlow :: 0
  1280. }
  1281. object HWI_INT8 :: HWI {
  1282.     param iComment :: "defines the INT8 Interrupt"
  1283.     param iIsUsed :: 1
  1284.     param iId :: 8
  1285.     param iDelUser :: "HWI"
  1286.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1287.     param iSource :: EDMA_Controller
  1288.     param iReMappable :: 1
  1289.     param iIntrEnableMask :: 256
  1290.     param function :: @HWI_unused
  1291.     param iSTSObj :: HWI_INT8_STS
  1292.     param monitor :: "Nothing"
  1293.     param saveAddr :: 0
  1294.     param saveType :: "signed"
  1295.     param addr :: 0
  1296.     param dataType :: "signed"
  1297.     param operation :: "STS_add(*addr)"
  1298.     param client :: "USER"
  1299.     param iUseDispatcher :: 0
  1300.     param iArg :: 0
  1301.     param iIntrMask :: "self"
  1302.     param IntrMask :: 256
  1303.     param iCacheControl :: 1
  1304.     param iPCCMask :: "cache enable"
  1305.     param iPCCBitMask :: 0
  1306.     param iDCCMask :: "cache enable"
  1307.     param iDCCBitMask :: 0
  1308.     param iCCBitMask :: 1
  1309. }
  1310. object HWI_INT9_STS :: STS {
  1311.     param iComment :: "provides statistics for the INT9 ISR"
  1312.     param iIsUsed :: 0
  1313.     param iId :: 0
  1314.     param iDelUser :: "HWI"
  1315.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1316.     param prev :: 0
  1317.     param format :: "%g"
  1318.     param unittype :: "Not time based"
  1319.     param operation :: "Nothing"
  1320.     param iA :: 1
  1321.     param iB :: 0
  1322.     param iC :: 1
  1323.     param prevhigh :: 0
  1324.     param prevlow :: 0
  1325. }
  1326. object HWI_INT9 :: HWI {
  1327.     param iComment :: "defines the INT9 Interrupt"
  1328.     param iIsUsed :: 1
  1329.     param iId :: 9
  1330.     param iDelUser :: "HWI"
  1331.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1332.     param iSource :: JTAGRTDX9
  1333.     param iReMappable :: 0
  1334.     param iIntrEnableMask :: 520
  1335.     param function :: @_RTDX_Poll
  1336.     param iSTSObj :: HWI_INT9_STS
  1337.     param monitor :: "Nothing"
  1338.     param saveAddr :: 0
  1339.     param saveType :: "signed"
  1340.     param addr :: 0
  1341.     param dataType :: "signed"
  1342.     param operation :: "STS_add(*addr)"
  1343.     param client :: "RTDX"
  1344.     param iUseDispatcher :: 1
  1345.     param iArg :: 0
  1346.     param iIntrMask :: "self"
  1347.     param IntrMask :: 520
  1348.     param iCacheControl :: 1
  1349.     param iPCCMask :: "cache enable"
  1350.     param iPCCBitMask :: 0
  1351.     param iDCCMask :: "cache enable"
  1352.     param iDCCBitMask :: 0
  1353.     param iCCBitMask :: 1
  1354. }
  1355. object HWI_INT10_STS :: STS {
  1356.     param iComment :: "provides statistics for the INT10 ISR"
  1357.     param iIsUsed :: 0
  1358.     param iId :: 0
  1359.     param iDelUser :: "HWI"
  1360.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1361.     param prev :: 0
  1362.     param format :: "%g"
  1363.     param unittype :: "Not time based"
  1364.     param operation :: "Nothing"
  1365.     param iA :: 1
  1366.     param iB :: 0
  1367.     param iC :: 1
  1368.     param prevhigh :: 0
  1369.     param prevlow :: 0
  1370. }
  1371. object HWI_INT10 :: HWI {
  1372.     param iComment :: "defines the INT10 Interrupt"
  1373.     param iIsUsed :: 1
  1374.     param iId :: 10
  1375.     param iDelUser :: "HWI"
  1376.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1377.     param iSource :: EMIF_SDRAM_Timer
  1378.     param iReMappable :: 1
  1379.     param iIntrEnableMask :: 1024
  1380.     param function :: @HWI_unused
  1381.     param iSTSObj :: HWI_INT10_STS
  1382.     param monitor :: "Nothing"
  1383.     param saveAddr :: 0
  1384.     param saveType :: "signed"
  1385.     param addr :: 0
  1386.     param dataType :: "signed"
  1387.     param operation :: "STS_add(*addr)"
  1388.     param client :: "USER"
  1389.     param iUseDispatcher :: 0
  1390.     param iArg :: 0
  1391.     param iIntrMask :: "self"
  1392.     param IntrMask :: 1024
  1393.     param iCacheControl :: 1
  1394.     param iPCCMask :: "cache enable"
  1395.     param iPCCBitMask :: 0
  1396.     param iDCCMask :: "cache enable"
  1397.     param iDCCBitMask :: 0
  1398.     param iCCBitMask :: 1
  1399. }
  1400. object HWI_INT11_STS :: STS {
  1401.     param iComment :: "provides statistics for the INT11 ISR"
  1402.     param iIsUsed :: 0
  1403.     param iId :: 0
  1404.     param iDelUser :: "HWI"
  1405.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1406.     param prev :: 0
  1407.     param format :: "%g"
  1408.     param unittype :: "Not time based"
  1409.     param operation :: "Nothing"
  1410.     param iA :: 1
  1411.     param iB :: 0
  1412.     param iC :: 1
  1413.     param prevhigh :: 0
  1414.     param prevlow :: 0
  1415. }
  1416. object HWI_INT11 :: HWI {
  1417.     param iComment :: "defines the INT11 Interrupt"
  1418.     param iIsUsed :: 1
  1419.     param iId :: 11
  1420.     param iDelUser :: "HWI"
  1421.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1422.     param iSource :: MCSP_0_Receive
  1423.     param iReMappable :: 1
  1424.     param iIntrEnableMask :: 2048
  1425.     param function :: @HWI_unused
  1426.     param iSTSObj :: HWI_INT11_STS
  1427.     param monitor :: "Nothing"
  1428.     param saveAddr :: 0
  1429.     param saveType :: "signed"
  1430.     param addr :: 0
  1431.     param dataType :: "signed"
  1432.     param operation :: "STS_add(*addr)"
  1433.     param client :: "USER"
  1434.     param iUseDispatcher :: 0
  1435.     param iArg :: 0
  1436.     param iIntrMask :: "self"
  1437.     param IntrMask :: 2048
  1438.     param iCacheControl :: 1
  1439.     param iPCCMask :: "cache enable"
  1440.     param iPCCBitMask :: 0
  1441.     param iDCCMask :: "cache enable"
  1442.     param iDCCBitMask :: 0
  1443.     param iCCBitMask :: 1
  1444. }
  1445. object HWI_INT12_STS :: STS {
  1446.     param iComment :: "provides statistics for the INT12 ISR"
  1447.     param iIsUsed :: 0
  1448.     param iId :: 0
  1449.     param iDelUser :: "HWI"
  1450.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1451.     param prev :: 0
  1452.     param format :: "%g"
  1453.     param unittype :: "Not time based"
  1454.     param operation :: "Nothing"
  1455.     param iA :: 1
  1456.     param iB :: 0
  1457.     param iC :: 1
  1458.     param prevhigh :: 0
  1459.     param prevlow :: 0
  1460. }
  1461. object HWI_INT12 :: HWI {
  1462.     param iComment :: "defines the INT12 Interrupt"
  1463.     param iIsUsed :: 1
  1464.     param iId :: 12
  1465.     param iDelUser :: "HWI"
  1466.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1467.     param iSource :: MCSP_1_Transmit
  1468.     param iReMappable :: 1
  1469.     param iIntrEnableMask :: 4096
  1470.     param function :: @HWI_unused
  1471.     param iSTSObj :: HWI_INT12_STS
  1472.     param monitor :: "Nothing"
  1473.     param saveAddr :: 0
  1474.     param saveType :: "signed"
  1475.     param addr :: 0
  1476.     param dataType :: "signed"
  1477.     param operation :: "STS_add(*addr)"
  1478.     param client :: "USER"
  1479.     param iUseDispatcher :: 0
  1480.     param iArg :: 0
  1481.     param iIntrMask :: "self"
  1482.     param IntrMask :: 4096
  1483.     param iCacheControl :: 1
  1484.     param iPCCMask :: "cache enable"
  1485.     param iPCCBitMask :: 0
  1486.     param iDCCMask :: "cache enable"
  1487.     param iDCCBitMask :: 0
  1488.     param iCCBitMask :: 1
  1489. }
  1490. object HWI_INT13_STS :: STS {
  1491.     param iComment :: "provides statistics for the INT13 ISR"
  1492.     param iIsUsed :: 0
  1493.     param iId :: 0
  1494.     param iDelUser :: "HWI"
  1495.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1496.     param prev :: 0
  1497.     param format :: "%g"
  1498.     param unittype :: "Not time based"
  1499.     param operation :: "Nothing"
  1500.     param iA :: 1
  1501.     param iB :: 0
  1502.     param iC :: 1
  1503.     param prevhigh :: 0
  1504.     param prevlow :: 0
  1505. }
  1506. object HWI_INT13 :: HWI {
  1507.     param iComment :: "defines the INT13 Interrupt"
  1508.     param iIsUsed :: 1
  1509.     param iId :: 13
  1510.     param iDelUser :: "HWI"
  1511.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1512.     param iSource :: Host_Port_Host_to_DSP
  1513.     param iReMappable :: 1
  1514.     param iIntrEnableMask :: 8192
  1515.     param function :: @HWI_unused
  1516.     param iSTSObj :: HWI_INT13_STS
  1517.     param monitor :: "Nothing"
  1518.     param saveAddr :: 0
  1519.     param saveType :: "signed"
  1520.     param addr :: 0
  1521.     param dataType :: "signed"
  1522.     param operation :: "STS_add(*addr)"
  1523.     param client :: "USER"
  1524.     param iUseDispatcher :: 0
  1525.     param iArg :: 0
  1526.     param iIntrMask :: "self"
  1527.     param IntrMask :: 8192
  1528.     param iCacheControl :: 1
  1529.     param iPCCMask :: "cache enable"
  1530.     param iPCCBitMask :: 0
  1531.     param iDCCMask :: "cache enable"
  1532.     param iDCCBitMask :: 0
  1533.     param iCCBitMask :: 1
  1534. }
  1535. object HWI_INT14_STS :: STS {
  1536.     param iComment :: "provides statistics for the INT14 ISR"
  1537.     param iIsUsed :: 0
  1538.     param iId :: 0
  1539.     param iDelUser :: "HWI"
  1540.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1541.     param prev :: 0
  1542.     param format :: "%g"
  1543.     param unittype :: "Not time based"
  1544.     param operation :: "Nothing"
  1545.     param iA :: 1
  1546.     param iB :: 0
  1547.     param iC :: 1
  1548.     param prevhigh :: 0
  1549.     param prevlow :: 0
  1550. }
  1551. object HWI_INT14 :: HWI {
  1552.     param iComment :: "defines the INT14 Interrupt"
  1553.     param iIsUsed :: 1
  1554.     param iId :: 14
  1555.     param iDelUser :: "HWI"
  1556.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1557.     param iSource :: Timer_0
  1558.     param iReMappable :: 1
  1559.     param iIntrEnableMask :: 16384
  1560.     param function :: @CLK_F_isr
  1561.     param iSTSObj :: HWI_INT14_STS
  1562.     param monitor :: "Nothing"
  1563.     param saveAddr :: 0
  1564.     param saveType :: "signed"
  1565.     param addr :: 0
  1566.     param dataType :: "signed"
  1567.     param operation :: "STS_add(*addr)"
  1568.     param client :: "CLK"
  1569.     param iUseDispatcher :: 1
  1570.     param iArg :: @CLK_A_TABBEG
  1571.     param iIntrMask :: "self"
  1572.     param IntrMask :: 16384
  1573.     param iCacheControl :: 1
  1574.     param iPCCMask :: "cache enable"
  1575.     param iPCCBitMask :: 0
  1576.     param iDCCMask :: "cache enable"
  1577.     param iDCCBitMask :: 0
  1578.     param iCCBitMask :: 1
  1579. }
  1580. object HWI_INT15_STS :: STS {
  1581.     param iComment :: "provides statistics for the INT15 ISR"
  1582.     param iIsUsed :: 0
  1583.     param iId :: 0
  1584.     param iDelUser :: "HWI"
  1585.     param iDelMsg :: "This STS object is being used by a HWI object and cannot be deleted"
  1586.     param prev :: 0
  1587.     param format :: "%g"
  1588.     param unittype :: "Not time based"
  1589.     param operation :: "Nothing"
  1590.     param iA :: 1
  1591.     param iB :: 0
  1592.     param iC :: 1
  1593.     param prevhigh :: 0
  1594.     param prevlow :: 0
  1595. }
  1596. object HWI_INT15 :: HWI {
  1597.     param iComment :: "defines the INT15 Interrupt"
  1598.     param iIsUsed :: 1
  1599.     param iId :: 15
  1600.     param iDelUser :: "HWI"
  1601.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1602.     param iSource :: Timer_1
  1603.     param iReMappable :: 1
  1604.     param iIntrEnableMask :: 32768
  1605.     param function :: @HWI_unused
  1606.     param iSTSObj :: HWI_INT15_STS
  1607.     param monitor :: "Nothing"
  1608.     param saveAddr :: 0
  1609.     param saveType :: "signed"
  1610.     param addr :: 0
  1611.     param dataType :: "signed"
  1612.     param operation :: "STS_add(*addr)"
  1613.     param client :: "USER"
  1614.     param iUseDispatcher :: 0
  1615.     param iArg :: 0
  1616.     param iIntrMask :: "self"
  1617.     param IntrMask :: 32768
  1618.     param iCacheControl :: 1
  1619.     param iPCCMask :: "cache enable"
  1620.     param iPCCBitMask :: 0
  1621.     param iDCCMask :: "cache enable"
  1622.     param iDCCBitMask :: 0
  1623.     param iCCBitMask :: 1
  1624. }
  1625. object HWI_UNUSED :: HWI {
  1626.     param iComment :: "a dummy DSP interrupt for unused sources"
  1627.     param iIsUsed :: 0
  1628.     param iId :: 16
  1629.     param iDelUser :: "HWI"
  1630.     param iDelMsg :: "Hardware interrupt objects cannot be deleted"
  1631.     param iSource :: Reset
  1632.     param iReMappable :: 1
  1633.     param iIntrEnableMask :: 0
  1634.     param function :: @HWI_unused
  1635.     param iSTSObj :: HWI_INT15_STS
  1636.     param monitor :: "Nothing"
  1637.     param saveAddr :: 0
  1638.     param saveType :: "signed"
  1639.     param addr :: 0
  1640.     param dataType :: "signed"
  1641.     param operation :: "STS_add(*addr)"
  1642.     param client :: "USER"
  1643.     param iUseDispatcher :: 0
  1644.     param iArg :: 0
  1645.     param iIntrMask :: "self"
  1646.     param IntrMask :: 65536
  1647.     param iCacheControl :: 1
  1648.     param iPCCMask :: "cache enable"
  1649.     param iPCCBitMask :: 0
  1650.     param iDCCMask :: "cache enable"
  1651.     param iDCCBitMask :: 0
  1652.     param iCCBitMask :: 1
  1653. }
  1654. type SWI {
  1655.     isa ObjectMgr
  1656.     prop name :: "SWI"
  1657.     prop Label :: "SWI - Software Interrupt Manager"
  1658.     prop IsContainedIn :: SCH
  1659.     prop GlobalIcon :: 123
  1660.     prop InstanceIcon :: 124
  1661.     prop InstanceHelpTopic :: (211)
  1662.     prop GlobalHelpTopic :: (111)
  1663.     prop HighTimeBased :: (if CLK.HIRES == 1 {1} else {0})
  1664.     prop LowTimeBased :: (if CLK.HIRES == 1 {0} else {1})
  1665.     prop STSGetMaxFmt :: (if (SWI.STSUNITS == "raw") {if CLK.HIRES {"%g inst"} else {"%g ints"}} else {if SWI.STSUNITS == "microseconds" {"%.1f us"} else {"%.2f ms"}})
  1666.     prop STSGetSumFmt :: (SWI.STSGetMaxFmt())
  1667.     prop STSGetAvgFmt :: (if (SWI.STSUNITS == "raw") {if CLK.HIRES {"%.2f inst"} else {"%.2f ints"}} else {if SWI.STSUNITS == "microseconds" {"%.1f us"} else {"%.2f ms"}})
  1668.     prop STSFilterMax :: ($a = if (CLK.HIRES) {$1 * CLK.INSTRPERCLK} else {$1}, $a = $a * (CLK.TDDR + 1), $a)
  1669.     prop STSFilterSum :: (SWI.STSFilterMax($1))
  1670.     prop GetPriority :: (self.pri)
  1671.     prop GenLinkPrologue :: ("SECTIONS {%4tn.%1L: {%8tn %1U_A_TABBEG = .;n %4Sn %1U_A_TABEND = .;n %1U_A_TABLEN = (. - %1U_A_TABBEG) / %2d;%4tn} > %3s%5s, name, objSize, memSeg, linkString, pageString")
  1672.     prop GenLinkEpilogue :: ("%0t}n")
  1673.     prop linkString :: if self.gNumOf > 0 {"*(.%1L)"} else {"/* no %1U objects */"}
  1674.     prop pageString :: if GBL.DSPTYPE == 62 {""} else {if GBL.DSPTYPE == 55 {""} else {" PAGE 1"}}
  1675.     prop memSeg :: SWI.OBJMEMSEG
  1676.     prop objSize :: if GBL.DSPTYPE == 55 {(2 * (11 * 4))} else {(11 * 4)}
  1677.     prop maxObjs :: (32767)
  1678.     prop dataSize :: ((11 * 4) * SWI.gNumOf)
  1679.     prop localCanCreate :: (if (GlobalStatus.MinStackSize >= MEM.STACKSIZE) {self.error("System stack size (see MEM) is too small to support a new SWI priority level.")} else {"ok"})
  1680.     prop localCreate :: (STS.gNumEmbed += 1, SWI.EXECFXN = @SWI_F_iexec, SWI.RUNFXN = @SWI_F_run, "ok")
  1681.     prop localDelete :: (STS.gNumEmbed -= 1, if (self.gNumOf == 1) {SWI.EXECFXN = @FXN_F_nop, SWI.RUNFXN = @FXN_F_nop} , "ok")
  1682.     prop SortByField :: "pri"
  1683.     prop SortGroups :: 15
  1684.     prop InstancePropertyPage :: ("{B7240DEC-AA51-11cf-9BFE-0000C0AC14C7}")
  1685.     prop GlobalPropertyPage :: ("{B7240DED-AA51-11cf-9BFE-0000C0AC14C7}")
  1686.     prop DependsOn :: "HWI,SIO"
  1687.     prop cGen :: 1
  1688.     prop cHeaderName :: if self.gNumOf > 0 {"swi.h"} else {""}
  1689.     prop cGenHInst :: (if (GBL.DSPTYPE == 62) {"extern far SWI_Obj %0r;n"} else {"extern SWI_Obj %0r;n"})
  1690.     global gUser :: "USER" { 
  1691.         prop Visible :: 0
  1692.         prop Writable :: 0
  1693.         prop NoGen :: 1
  1694.     }
  1695.     global gSetOf :: 0 { 
  1696.         prop Visible :: 0
  1697.         prop Writable :: 0
  1698.         prop NoGen :: 1
  1699.     }
  1700.     global gNumOf :: 0 { 
  1701.         prop Visible :: 0
  1702.         prop Writable :: 0
  1703.         prop NoGen :: 1
  1704.     }
  1705.     global gDirty :: 1 { 
  1706.         prop Visible :: 0
  1707.         prop Writable :: 0
  1708.         prop NoGen :: 1
  1709.     }
  1710.     global gInitFlag :: 1 { 
  1711.         prop Visible :: 0
  1712.         prop Writable :: 0
  1713.         prop NoGen :: 1
  1714.     }
  1715.     global gInit :: = ($a = 0, $b = 0, scan ($i; self) {if ($i.IsConfObj()) {$a += 1, if (self.isFinite) {$b |= 1 << $i.iId} } }, self.gNumOf = $a, self.gSetOf = $b, if (self.gInitFlag == 0) {self.localInit()} , self.gInitFlag = 1) { 
  1716.         prop Visible :: 0
  1717.         prop Writable :: 0
  1718.         prop NoGen :: 1
  1719.     }
  1720.     global EHOOKFXN :: @GBL_NULL { 
  1721.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  1722.         prop Label :: "Enable Scheduler and Return to Idle Function"
  1723.         prop Visible :: 0
  1724.         prop Writable :: 1
  1725.         prop NoGen :: 0
  1726.     }
  1727.     global IHOOKFXN :: @GBL_NULL { 
  1728.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  1729.         prop Label :: "Exit Scheduler and Return to Idle Function"
  1730.         prop Visible :: 0
  1731.         prop Writable :: 1
  1732.         prop NoGen :: 0
  1733.     }
  1734.     global EXECFXN :: @FXN_F_nop { 
  1735.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  1736.         prop Label :: "Configured SWI executive"
  1737.         prop Visible :: 0
  1738.         prop Writable :: 0
  1739.         prop NoGen :: 0
  1740.     }
  1741.     global RUNFXN :: @FXN_F_nop { 
  1742.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  1743.         prop Label :: "Configured SWI executive body"
  1744.         prop Visible :: 0
  1745.         prop Writable :: 0
  1746.         prop NoGen :: 0
  1747.     }
  1748.     global OBJMEMSEG :: ISRAM { 
  1749.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1750.         prop MemberType :: MEM
  1751.         prop MemberTest :: MEM.dataMember($1)
  1752.         prop Label :: "Object Memory"
  1753.         prop JSName :: "OBJMEMSEG"
  1754.         prop Visible :: 1
  1755.         prop Writable :: 1
  1756.         prop NoGen :: 1
  1757.     }
  1758.     global STSUNITS :: "raw" { 
  1759.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  1760.         prop Enum :: "raw,milliseconds,microseconds"
  1761.         prop Label :: "Statistics Units"
  1762.         prop Visible :: 0
  1763.         prop Writable :: 1
  1764.         prop NoGen :: 1
  1765.     }
  1766.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  1767.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  1768.         prop Label :: "comment"
  1769.         prop JSName :: "comment"
  1770.         prop Visible :: 1
  1771.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  1772.         prop NoGen :: 1
  1773.     }
  1774.     inst iIsUsed :: 0 { 
  1775.         prop Visible :: 0
  1776.         prop Writable :: 0
  1777.         prop NoGen :: 1
  1778.     }
  1779.     inst iId :: 0 { 
  1780.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1781.         prop Style :: 0x01
  1782.         prop Visible :: 0
  1783.         prop Writable :: 1
  1784.         prop NoGen :: 1
  1785.     }
  1786.     inst iDelUser :: "USER" { 
  1787.         prop Visible :: 0
  1788.         prop Writable :: 0
  1789.         prop NoGen :: 1
  1790.     }
  1791.     inst iDelMsg :: "ok" { 
  1792.         prop Visible :: 0
  1793.         prop Writable :: 0
  1794.         prop NoGen :: 1
  1795.     }
  1796.     inst priority :: = (self.pri + 1) { 
  1797.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1798.         prop Label :: "priority"
  1799.         prop JSName :: ""
  1800.         prop Visible :: 0
  1801.         prop Writable :: 0
  1802.         prop NoGen :: 1
  1803.     }
  1804.     inst function :: @_FXN_F_nop { 
  1805.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  1806.         prop JSName :: "fxn"
  1807.         prop Visible :: 1
  1808.         prop Writable :: (if self.iDelUser == "USER" {1} else {0})
  1809.         prop NoGen :: 0
  1810.     }
  1811.     inst pri :: 1 { 
  1812.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  1813.         prop Enum :: "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14"
  1814.         prop Label :: "priority"
  1815.         prop JSName :: "priority"
  1816.         prop Visible :: 1
  1817.         prop Writable :: 1
  1818.         prop NoGen :: 0
  1819.         prop Set :: ($a = self.pri, self.pri = $1, if (self == KNL_swi) {if ($1 != 0) {self.pri = $a, self.error("KNL_swi must remain at Priority 0.")} else {"ok"}} else {if ($1 == 0 && KNL_swi.iIsUsed == 1) {self.pri = $a, self.error("Priority 0 reserved for KNL_swi only.")} else {GlobalStatus.gDirty = 1, if (GlobalStatus.MinStackSize >= MEM.STACKSIZE) {self.pri = $a, self.error("System stack size (see MEM) is too small to support a new SWI priority level.")} else {if ($1 > 14) {self.pri = $a, self.error("SWI can only support 15 priority levels.")} else {"ok"}}}})
  1820.     }
  1821.     inst mailbox :: 0 { 
  1822.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1823.         prop Style :: 0x01 | 0x02
  1824.         prop JSName :: "mailbox"
  1825.         prop Visible :: 1
  1826.         prop Writable :: (if self.iDelUser == "USER" {1} else {0})
  1827.         prop NoGen :: 0
  1828.     }
  1829.     inst arg0 :: 0 { 
  1830.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  1831.         prop JSName :: "arg0"
  1832.         prop Visible :: 1
  1833.         prop Writable :: (if self.iDelUser == "USER" {1} else {0})
  1834.         prop NoGen :: 0
  1835.     }
  1836.     inst arg1 :: 0 { 
  1837.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  1838.         prop JSName :: "arg1"
  1839.         prop Visible :: 1
  1840.         prop Writable :: (if self.iDelUser == "USER" {1} else {0})
  1841.         prop NoGen :: 0
  1842.     }
  1843.     inst dorta :: 1 { 
  1844.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1845.         prop Visible :: 0
  1846.         prop Writable :: 0
  1847.         prop NoGen :: 0
  1848.     }
  1849.     inst Order :: 0 { 
  1850.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1851.         prop JSName :: "order"
  1852.         prop NoGen :: 1
  1853.         prop Writable :: 1
  1854.     }
  1855. }
  1856. type TSK {
  1857.     isa ObjectMgr
  1858.     prop name :: "TSK"
  1859.     prop Label :: "TSK - Task Manager"
  1860.     prop IsConfMod :: self.USETSK
  1861.     prop IsContainedIn :: SCH
  1862.     prop DependsOn :: "SWI,HOOK"
  1863.     prop GlobalIcon :: 143
  1864.     prop InstanceIcon :: 144
  1865.     prop GlobalHelpTopic :: (314)
  1866.     prop InstanceHelpTopic :: (414)
  1867.     prop InstancePropertyPage :: ("{473C4A64-B1A8-11d0-9885-0020AFEE33C6}")
  1868.     prop GlobalPropertyPage :: ("{473C4A65-B1A8-11d0-9885-0020AFEE33C6}")
  1869.     prop SortByField :: "iPRI"
  1870.     prop SortGroups :: 17
  1871.     prop AllocType :: (if (self.USETSK) {"1,    _bssAllocDesc, _bssmemSeg, _placement"} else {""})
  1872.     prop _objAllocDesc :: ("%8t .TSK$obj: {}")
  1873.     prop _bssAllocDesc :: ("%8t .tsk: {%12tn *(.tsk)%8tn }")
  1874.     prop _bssmemSeg :: self.OBJMEMSEG
  1875.     prop _objmemSeg :: MEM.CFGOBJSEG
  1876.     prop AllocInst :: (if self.iAUTOSTK {"1, _instStackDesc, _instStackSeg, _placement"} else {"0"})
  1877.     prop _instStackDesc :: (if (GBL.DSPTYPE == 40) {"%8t .%0s$stk: fill = 0xC0FFEE {%12tn %0s$stack = .;n . += %1d;%8tn }, _instStackSize"} else {"%8t .%0s$stk: {%12tn *(.%0s$stk)%8tn }"})
  1878.     prop _self :: self
  1879.     prop _instStackSize :: self.iSTKSZ * (GBL.DSPWORDSIZE / GBL.DSPCHARSIZE)
  1880.     prop _instStackSeg :: self.iSTKSEG
  1881.     prop _placement :: (0x7fffffff / 2)
  1882.     prop localInit :: (KNL_swi.Create("SWI"), if (self.STACKSEG.iAllocHeap == 1) {self.STACKSEG.iReqHeapCount++, "ok"} else {self.error("TSK default stack segment must be a memory segment with a heap")})
  1883.     prop HighTimeBased :: (if CLK.HIRES == 1 {1} else {0})
  1884.     prop LowTimeBased :: (if CLK.HIRES == 1 {0} else {1})
  1885.     prop STSGetMaxFmt :: (if (TSK.STSUNITS == "raw") {if CLK.HIRES {"%g inst"} else {"%g ints"}} else {if TSK.STSUNITS == "microseconds" {"%.1f us"} else {"%.2f ms"}})
  1886.     prop STSGetSumFmt :: (TSK.STSGetMaxFmt())
  1887.     prop STSGetAvgFmt :: (if (TSK.STSUNITS == "raw") {if CLK.HIRES {"%.2f inst"} else {"%.2f ints"}} else {if TSK.STSUNITS == "microseconds" {"%.1f us"} else {"%.2f ms"}})
  1888.     prop STSFilterMax :: ($a = if (CLK.HIRES) {$1 * CLK.INSTRPERCLK} else {$1}, $a = $a * (CLK.TDDR + 1), $a)
  1889.     prop STSFilterSum :: (TSK.STSFilterMax($1))
  1890.     prop localCreate :: (STS.gNumEmbed += 1, "ok")
  1891.     prop localCanCreate :: ($e = "ok", if (TSK.USETSK != 1) {$e = self.error("TSK manager not enabled")} , $e)
  1892.     prop localDelete :: (STS.gNumEmbed -= 1, "ok")
  1893.     prop GenLinkPrologue :: (if (self.USETSK == 0) {"_KNL_swi = 0;"} )
  1894.     prop cGen :: 1
  1895.     prop cHeaderName :: if self.gNumOf > 0 {"tsk.h"} else {""}
  1896.     prop cGenHInst :: (if (GBL.DSPTYPE == 62) {"extern far TSK_Obj %0r;n"} else {"extern TSK_Obj %0r;n"})
  1897.     prop _objId :: self.iId
  1898.     prop dataSize :: ($d = 0, scan ($i; TSK) {$d += ($i.iSTKSZ + (3 + 21) * (GBL.DSPWORDSIZE / GBL.DSPCHARSIZE))}, $d)
  1899.     prop minStackSize :: ($a = self.STACKSIZE, scan ($i; TSK) {if ($i.STACKSIZE < $a) {$a = $i.STACKSIZE} }, $a)
  1900.     prop maxObjs :: (32767)
  1901.     prop GetPriority :: (self.iPRI)
  1902.     global gUser :: "USER" { 
  1903.         prop Visible :: 0
  1904.         prop Writable :: 0
  1905.         prop NoGen :: 1
  1906.     }
  1907.     global gSetOf :: 0 { 
  1908.         prop Visible :: 0
  1909.         prop Writable :: 0
  1910.         prop NoGen :: 1
  1911.     }
  1912.     global gNumOf :: 0 { 
  1913.         prop Visible :: 0
  1914.         prop Writable :: 0
  1915.         prop NoGen :: 1
  1916.     }
  1917.     global gDirty :: 1 { 
  1918.         prop Visible :: 0
  1919.         prop Writable :: 0
  1920.         prop NoGen :: 1
  1921.     }
  1922.     global gInitFlag :: 1 { 
  1923.         prop Visible :: 0
  1924.         prop Writable :: 0
  1925.         prop NoGen :: 1
  1926.     }
  1927.     global gInit :: = ($a = 0, $b = 0, scan ($i; self) {if ($i.IsConfObj()) {$a += 1, if (self.isFinite) {$b |= 1 << $i.iId} } }, self.gNumOf = $a, self.gSetOf = $b, if (self.gInitFlag == 0) {self.localInit()} , self.gInitFlag = 1) { 
  1928.         prop Visible :: 0
  1929.         prop Writable :: 0
  1930.         prop NoGen :: 1
  1931.     }
  1932.     global USETSK :: 0 { 
  1933.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1934.         prop Label :: "Enable TSK Manager"
  1935.         prop JSName :: "ENABLETSK"
  1936.         prop Visible :: 1
  1937.         prop Writable :: if GBL.DSPSUBTYPE == 0x55DA200 {0} else {1}
  1938.         prop NoGen :: 1
  1939.         prop Set :: (if ($1 == 0) {if (self.gNumOf > 1) {self.error("Cannot disable TSK until all TSK objects are deleted.")} else {self.STACKSEG.iReqHeapCount--, TSK.STACKSEG = MEM_NULL, TSK.OBJMEMSEG = MEM_NULL, TSK_idle.iSTKSEG = MEM_NULL, TSK_idle.Delete("TSK"), KNL_swi.Delete("TSK"), PRD.THOOKFXN = @FXN_F_nop, if (PRD.gNumOf == 0) {if (PRD_clock.iIsUsed == 1) {PRD_clock.function = @FXN_F_nop} } , self.USETSK = $1, "ok"}} else {$e = "ok", GlobalStatus.gDirty = 1, if (GlobalStatus.MinStackSize >= MEM.STACKSIZE) {$e = self.error("Current stack size inadequate to enable TSK"), break} , scan ($a; SWI) {if ($a != KNL_swi && $a.pri == 0 && $a.iIsUsed == 1) {$e = self.error("Cannot enable TSK when there are SWI objects at Priority 0."), break} }, if ($e == "ok") {TSK.STACKSEG = MEM_NULL, scan ($b; MEM) {if ($b.iAllocHeap && $b != MEM_NULL) {TSK.STACKSEG = $b, break} }, self.STACKSEG.iReqHeapCount++, self.USETSK = $1, TSK.OBJMEMSEG = SWI.OBJMEMSEG, TSK_idle.iSTKSEG = self.OBJMEMSEG, TSK_idle.Create("TSK"), KNL_swi.Create("TSK"), PRD.THOOKFXN = PRD.DEFAULT_THOOKFXN, if (TSK.TSKTICK == "PRD") {if (PRD_clock.iIsUsed == 1) {PRD_clock.function = @PRD_F_tick} } , if (MEM.NOHEAPS) {self.STACKSEG.iReqHeapCount++, $e = "No Memory Heaps Are Allocated for Dynamic TSK creation"} , $e} else {$e}})
  1940.     }
  1941.     global OBJMEMSEG :: MEM_NULL { 
  1942.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1943.         prop JSName :: "OBJMEMSEG"
  1944.         prop MemberType :: MEM
  1945.         prop MemberTest :: MEM.dataNullMember($1)
  1946.         prop Label :: "Object Memory"
  1947.         prop Visible :: 1
  1948.         prop Writable :: self.USETSK
  1949.         prop NoGen :: 1
  1950.     }
  1951.     global CALLBACKOBJ :: nil { 
  1952.         prop Visible :: 0
  1953.         prop Writable :: 0
  1954.         prop NoGen :: 1
  1955.     }
  1956.     global STACKSIZE :: 1024 { 
  1957.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1958.         prop Style :: 0x01
  1959.         prop Label :: "Default stack size (MAUs)"
  1960.         prop JSName :: "STACKSIZE"
  1961.         prop Visible :: 1
  1962.         prop Writable :: self.USETSK
  1963.     }
  1964.     global STACKSEG :: MEM_NULL { 
  1965.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1966.         prop MemberType :: MEM
  1967.         prop MemberTest :: MEM.dataNullMember($1) && $1.iAllocHeap
  1968.         prop Label :: "Stack segment for dynamic tasks"
  1969.         prop JSName :: "STACKSEG"
  1970.         prop Visible :: 1
  1971.         prop Writable :: self.USETSK && (MEM.NOHEAPS == 0)
  1972.         prop Set :: (if (self.STACKSEG.iReqHeapCount > 0) {self.STACKSEG.iReqHeapCount--} , self.STACKSEG = $1, self.STACKSEG.iReqHeapCount++, "ok")
  1973.     }
  1974.     global PRIORITY :: 1 { 
  1975.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  1976.         prop JSName :: "PRIORITY"
  1977.         prop Enum :: "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15"
  1978.         prop Label :: "Default task priority"
  1979.         prop Visible :: 1
  1980.         prop Writable :: self.USETSK
  1981.     }
  1982.     global CREATEFXN :: @_FXN_F_nop { 
  1983.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  1984.         prop Label :: "Create function"
  1985.         prop JSName :: "CREATEFXN"
  1986.         prop Visible :: 1
  1987.         prop Writable :: self.USETSK
  1988.         prop TabName :: "Function Hooks"
  1989.         prop Set :: (self.CREATEFXN = $1, HOOK_KNL.createFxn = self.CREATEFXN, "ok")
  1990.         prop NoGen :: 1
  1991.     }
  1992.     global VCREATEFXN :: = if HOOK_KNL.iIsUsed == 1 {@__HOOK_doCreate} else {self.CREATEFXN} { 
  1993.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  1994.         prop Visible :: 0
  1995.     }
  1996.     global DELETEFXN :: @_FXN_F_nop { 
  1997.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  1998.         prop Label :: "Delete function"
  1999.         prop JSName :: "DELETEFXN"
  2000.         prop Visible :: 1
  2001.         prop Writable :: self.USETSK
  2002.         prop TabName :: "Function Hooks"
  2003.         prop Set :: (self.DELETEFXN = $1, HOOK_KNL.deleteFxn = self.DELETEFXN, "ok")
  2004.         prop NoGen :: 1
  2005.     }
  2006.     global VDELETEFXN :: = if HOOK_KNL.iIsUsed == 1 {@__HOOK_doDelete} else {self.DELETEFXN} { 
  2007.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2008.         prop Visible :: 0
  2009.     }
  2010.     global EXITFXN :: @_FXN_F_nop { 
  2011.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2012.         prop Label :: "Exit function"
  2013.         prop JSName :: "EXITFXN"
  2014.         prop Visible :: 1
  2015.         prop Writable :: self.USETSK
  2016.         prop TabName :: "Function Hooks"
  2017.         prop Set :: (self.EXITFXN = $1, HOOK_KNL.exitFxn = self.EXITFXN, "ok")
  2018.         prop NoGen :: 1
  2019.     }
  2020.     global VEXITFXN :: = if HOOK_KNL.iIsUsed == 1 {@__HOOK_doExit} else {self.EXITFXN} { 
  2021.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2022.         prop Visible :: 0
  2023.     }
  2024.     global DOSWITCH :: 0 { 
  2025.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2026.         prop Label :: "Call switch function"
  2027.         prop JSName :: "CALLSWITCHFXN"
  2028.         prop Writable :: self.USETSK
  2029.         prop Visible :: 1
  2030.         prop NoGen :: 1
  2031.         prop Set :: (self.DOSWITCH = $1, HOOK_KNL.callSwitchFxn = self.DOSWITCH, "ok")
  2032.         prop TabName :: "Function Hooks"
  2033.     }
  2034.     global VSWFXN :: @_FXN_F_nop { 
  2035.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2036.         prop Label :: "Switch function"
  2037.         prop JSName :: "SWITCHFXN"
  2038.         prop Visible :: 1
  2039.         prop NoGen :: 1
  2040.         prop Writable :: self.DOSWITCH && self.USETSK
  2041.         prop Set :: (self.VSWFXN = $1, HOOK_KNL.switchFxn = self.VSWFXN, "ok")
  2042.         prop TabName :: "Function Hooks"
  2043.     }
  2044.     global SWITCHFXN :: = if self.DOSWITCH {(if HOOK_KNL.iIsUsed == 1 {@__HOOK_doSwitch} else {self.VSWFXN})} else {0} { 
  2045.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  2046.         prop JSName :: ""
  2047.         prop TabName :: "Function Hooks"
  2048.     }
  2049.     global DOREADY :: 0 { 
  2050.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2051.         prop Label :: "Call ready function"
  2052.         prop JSName :: "CALLREADYFXN"
  2053.         prop Writable :: self.USETSK
  2054.         prop Visible :: 1
  2055.         prop NoGen :: 1
  2056.         prop Set :: (self.DOREADY = $1, HOOK_KNL.callReadyFxn = self.DOREADY, "ok")
  2057.         prop TabName :: "Function Hooks"
  2058.     }
  2059.     global VRDYFXN :: @_FXN_F_nop { 
  2060.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2061.         prop Label :: "Ready function"
  2062.         prop JSName :: "READYFXN"
  2063.         prop Visible :: 1
  2064.         prop Writable :: self.DOREADY && self.USETSK
  2065.         prop NoGen :: 1
  2066.         prop Set :: (self.VRDYFXN = $1, HOOK_KNL.readyFxn = self.VRDYFXN, "ok")
  2067.         prop TabName :: "Function Hooks"
  2068.     }
  2069.     global READYFXN :: = if self.DOREADY {(if HOOK_KNL.iIsUsed == 1 {@__HOOK_doReady} else {self.VRDYFXN})} else {0} { 
  2070.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  2071.         prop JSName :: ""
  2072.         prop TabName :: "Function Hooks"
  2073.     }
  2074.     global NUM_HOOKS :: = HOOK.gNumOf { 
  2075.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2076.         prop Visible :: 0
  2077.     }
  2078.     global STSUNITS :: "raw" { 
  2079.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  2080.         prop Enum :: "raw,milliseconds,microseconds"
  2081.         prop Label :: "Statistics Units"
  2082.         prop Visible :: 0
  2083.         prop Writable :: self.USETSK
  2084.         prop NoGen :: 1
  2085.     }
  2086.     global TSKTICK :: "PRD" { 
  2087.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  2088.         prop Enum :: "PRD,User"
  2089.         prop Label :: "TSK tick driven by"
  2090.         prop JSName :: "DRIVETSKTICK"
  2091.         prop Visible :: 1
  2092.         prop Writable :: self.USETSK
  2093.         prop NoGen :: 1
  2094.         prop Set :: (if ($1 != self.TSKTICK) {if ($1 == "PRD") {PRD.THOOKFXN = PRD.DEFAULT_THOOKFXN, if (TSK.USETSK == 1) {if (PRD_clock.iIsUsed == 1) {PRD_clock.function = @PRD_F_tick} } } , if ($1 == "User") {PRD.THOOKFXN = @_FXN_F_nop, if (PRD.gNumOf == 0) {if (PRD_clock.iIsUsed == 1) {PRD_clock.function = @FXN_F_nop} } } , if ($1 != "PRD" && $1 != "User") {self.error("Invalid TSK tick driver selection")} } , self.TSKTICK = $1, "ok")
  2095.     }
  2096.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  2097.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  2098.         prop Label :: "comment"
  2099.         prop JSName :: "comment"
  2100.         prop Visible :: 1
  2101.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  2102.         prop NoGen :: 1
  2103.     }
  2104.     inst iIsUsed :: 0 { 
  2105.         prop Visible :: 0
  2106.         prop Writable :: 0
  2107.         prop NoGen :: 1
  2108.     }
  2109.     inst iId :: 0 { 
  2110.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2111.         prop Style :: 0x01
  2112.         prop Visible :: 0
  2113.         prop Writable :: 1
  2114.         prop NoGen :: 1
  2115.     }
  2116.     inst iDelUser :: "USER" { 
  2117.         prop Visible :: 0
  2118.         prop Writable :: 0
  2119.         prop NoGen :: 1
  2120.     }
  2121.     inst iDelMsg :: "ok" { 
  2122.         prop Visible :: 0
  2123.         prop Writable :: 0
  2124.         prop NoGen :: 1
  2125.     }
  2126.     inst iFXN :: @_FXN_F_nop { 
  2127.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2128.         prop Label :: "Task function"
  2129.         prop JSName :: "fxn"
  2130.         prop Visible :: 1
  2131.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2132.         prop TabName :: "Function"
  2133.     }
  2134.     inst iARG0 :: 0 { 
  2135.         prop Type :: "{E91790E0-0456-11d2-B8D0-006008BDB66F}"
  2136.         prop Label :: "Task function argument 0"
  2137.         prop JSName :: "arg0"
  2138.         prop Visible :: 1
  2139.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2140.         prop TabName :: "Function"
  2141.     }
  2142.     inst iARG1 :: 0 { 
  2143.         prop Type :: "{E91790E0-0456-11d2-B8D0-006008BDB66F}"
  2144.         prop Label :: "Task function argument 1"
  2145.         prop JSName :: "arg1"
  2146.         prop Visible :: 1
  2147.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2148.         prop TabName :: "Function"
  2149.     }
  2150.     inst iARG2 :: 0 { 
  2151.         prop Type :: "{E91790E0-0456-11d2-B8D0-006008BDB66F}"
  2152.         prop Label :: "Task function argument 2"
  2153.         prop JSName :: "arg2"
  2154.         prop Visible :: 1
  2155.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2156.         prop TabName :: "Function"
  2157.     }
  2158.     inst iARG3 :: 0 { 
  2159.         prop Type :: "{E91790E0-0456-11d2-B8D0-006008BDB66F}"
  2160.         prop Label :: "Task function argument 3"
  2161.         prop JSName :: "arg3"
  2162.         prop Visible :: 1
  2163.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2164.         prop TabName :: "Function"
  2165.     }
  2166.     inst iARG4 :: 0 { 
  2167.         prop Type :: "{E91790E0-0456-11d2-B8D0-006008BDB66F}"
  2168.         prop Label :: "Task function argument 4"
  2169.         prop JSName :: "arg4"
  2170.         prop Visible :: 1
  2171.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2172.         prop TabName :: "Function"
  2173.     }
  2174.     inst iARG5 :: 0 { 
  2175.         prop Type :: "{E91790E0-0456-11d2-B8D0-006008BDB66F}"
  2176.         prop Label :: "Task function argument 5"
  2177.         prop JSName :: "arg5"
  2178.         prop Visible :: 1
  2179.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2180.         prop TabName :: "Function"
  2181.     }
  2182.     inst iARG6 :: 0 { 
  2183.         prop Type :: "{E91790E0-0456-11d2-B8D0-006008BDB66F}"
  2184.         prop Label :: "Task function argument 6"
  2185.         prop JSName :: "arg6"
  2186.         prop Visible :: 1
  2187.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2188.         prop TabName :: "Function"
  2189.     }
  2190.     inst iARG7 :: 0 { 
  2191.         prop Type :: "{E91790E0-0456-11d2-B8D0-006008BDB66F}"
  2192.         prop Label :: "Task function argument 7"
  2193.         prop JSName :: "arg7"
  2194.         prop Visible :: 1
  2195.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2196.         prop TabName :: "Function"
  2197.     }
  2198.     inst iAUTOSTK :: 1 { 
  2199.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2200.         prop Label :: "Automatically allocate stack"
  2201.         prop JSName :: "autoAllocateStack"
  2202.         prop Set :: (if (($1 == 1) && (self.iAUTOSTK == 0)) {self.iSTKSZ = TSK.STACKSIZE} , self.iAUTOSTK = $1, "ok")
  2203.         prop Visible :: 1
  2204.         prop Writable :: if self.iDelUser == "TSK" {0} else {1}
  2205.     }
  2206.     inst iMANSTK :: @null { 
  2207.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2208.         prop Label :: "Manually allocated stack"
  2209.         prop JSName :: "manualStack"
  2210.         prop Visible :: 1
  2211.         prop Writable :: self.iAUTOSTK == 0
  2212.     }
  2213.     inst iSTKSZ :: TSK.STACKSIZE { 
  2214.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2215.         prop Style :: 0x01
  2216.         prop Label :: "Stack size (MAUs)"
  2217.         prop JSName :: "stackSize"
  2218.         prop Visible :: 1
  2219.         prop Writable :: 1
  2220.         prop Set :: ($a = $1, if ($a < 32) {if (GBL.DSPSUBTYPE == 62) {self.error("Task stack size is too small.")} else {if ($a < 32) {self.error("Task stack size is too small.")} else {self.iSTKSZ = ($1 - ($1 - 1) % 8 + 7), GlobalStatus.gDirty = 1, "ok"}}} else {self.iSTKSZ = ($1 - ($1 - 1) % 8 + 7), GlobalStatus.gDirty = 1, "ok"})
  2221.     }
  2222.     inst iSTKSEG :: = self.OBJMEMSEG { 
  2223.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  2224.         prop MemberType :: MEM
  2225.         prop MemberTest :: $1 == MEM_NULL || MEM.dataMember($1)
  2226.         prop Label :: "Stack Memory Segment"
  2227.         prop JSName :: "stackMemSeg"
  2228.         prop Visible :: 1
  2229.         prop Writable :: 1
  2230.     }
  2231.     inst iPRI :: TSK.PRIORITY { 
  2232.         prop Label :: "Priority"
  2233.         prop JSName :: "priority"
  2234.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  2235.         prop Enum :: "-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15"
  2236.         prop Visible :: 1
  2237.         prop Writable :: 1
  2238.         prop Set :: (if (self == TSK_idle) {if ($1 == 0) {"ok"} else {self.error("Cannot change the priority of the idle task.")}} else {if ($1 == 0) {self.error("Priority 0 is reserved for the system idle task")} else {self.iPRI = $1, "ok"}})
  2239.     }
  2240.     inst iENV :: 0 { 
  2241.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  2242.         prop Label :: "Environment pointer"
  2243.         prop JSName :: "envPointer"
  2244.         prop Visible :: 1
  2245.         prop Writable :: self.iDelUser != "TSK"
  2246.         prop TabName :: "Advanced"
  2247.     }
  2248.     inst iEXITFLAG :: 1 { 
  2249.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2250.         prop Label :: "Don't shut down system while this task is still running"
  2251.         prop JSName :: "exitFlag"
  2252.         prop Visible :: 1
  2253.         prop Writable :: 1
  2254.         prop TabName :: "Advanced"
  2255.     }
  2256.     inst iUSETSKNAME :: 0 { 
  2257.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2258.         prop Label :: "Allocate Task Name on Target"
  2259.         prop JSName :: "allocateTaskName"
  2260.         prop Visible :: 1
  2261.         prop Writable :: 1
  2262.         prop TabName :: "Advanced"
  2263.     }
  2264.     inst iSTATREG :: = GBL.CACHE { 
  2265.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  2266.         prop Format :: "0x%08x"
  2267.         prop Label :: "Initial Status Register value"
  2268.         prop Visible :: 0
  2269.         prop Writable :: 1
  2270.     }
  2271.     inst Order :: 0 { 
  2272.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2273.         prop JSName :: "order"
  2274.         prop NoGen :: 1
  2275.         prop Writable :: 1
  2276.     }
  2277. }
  2278. object TSK_idle :: TSK {
  2279.     param iComment :: "This is the idle task; it only runs when no other task is ready"
  2280.     param iIsUsed :: 0
  2281.     param iId :: 0
  2282.     param iDelUser :: "TSK"
  2283.     param iDelMsg :: "This task executes all IDL functions and cannot be deleted"
  2284.     param iFXN :: @IDL_F_loop
  2285.     param iARG0 :: 0
  2286.     param iARG1 :: 0
  2287.     param iARG2 :: 0
  2288.     param iARG3 :: 0
  2289.     param iARG4 :: 0
  2290.     param iARG5 :: 0
  2291.     param iARG6 :: 0
  2292.     param iARG7 :: 0
  2293.     param iAUTOSTK :: 1
  2294.     param iMANSTK :: @null
  2295.     param iSTKSZ :: 1024
  2296.     param iSTKSEG :: MEM_NULL
  2297.     param iPRI :: 0
  2298.     param iENV :: 0
  2299.     param iEXITFLAG :: 1
  2300.     param iUSETSKNAME :: 0
  2301.     param Order :: 1
  2302. }
  2303. object KNL_swi :: SWI {
  2304.     param iComment :: "This Software Interrupt calls the TSK scheduler"
  2305.     param iIsUsed :: 0
  2306.     param iId :: 0
  2307.     param iDelUser :: "TSK"
  2308.     param iDelMsg :: "This object cannot be deleted in DSP/BIOS."
  2309.     param function :: @_KNL_run
  2310.     param pri :: 0
  2311.     param mailbox :: 0
  2312.     param arg0 :: 0
  2313.     param arg1 :: 0
  2314.     param dorta :: 1
  2315.     param Order :: 2
  2316. }
  2317. type IDL {
  2318.     isa ObjectMgr
  2319.     prop Label :: "IDL - Idle Function Manager"
  2320.     prop name :: "IDL"
  2321.     prop IsContainedIn :: SCH
  2322.     prop GlobalIcon :: 111
  2323.     prop InstanceIcon :: 112
  2324.     prop GlobalHelpTopic :: (106)
  2325.     prop InstanceHelpTopic :: (206)
  2326.     prop InstancePropertyPage :: ("{586735F1-770B-11d0-A61F-0000C070F3E9}")
  2327.     prop GlobalPropertyPage :: ("{586735F0-770B-11d0-A61F-0000C070F3E9}")
  2328.     prop GenLinkPrologue :: ("SECTIONS {%4tn.%1L: {%8tn %1U_A_TABBEG = .;n %3Sn %1U_A_TABEND = .;n %1U_A_TABLEN = (. - %1U_A_TABBEG) / %2d;, name, _objSize, _linkString")
  2329.     prop GenLinkEpilogue :: ("%8t %1U_A_CALBEG = .;n %4Sn %1U_A_CALEND = .;n %1U_A_CALLEN = (. - %1U_A_CALBEG) / %2d;%4tn} > %3s%5s%0tn}n%6Sn, name, _objSize, _memSeg, _linkCalString, _pageString, _nilBusyObj")
  2330.     prop _linkString :: "*(.%1L)"
  2331.     prop _linkCalString :: "*(.%1Lcal)"
  2332.     prop _pageString :: if GBL.DSPTYPE == 62 {""} else {if GBL.DSPTYPE == 55 {""} else {" PAGE 1"}}
  2333.     prop _nilBusyObj :: (if ((IDL.USEIDLBUSYOBJ == 0) && (GBL.ROM == 1)) {"IDL_busyObj = 0;n"} else {""})
  2334.     prop _memSeg :: IDL.OBJMEMSEG
  2335.     prop _objSize :: if GBL.DSPTYPE == 55 {(2 * (2 * 4))} else {(2 * 4)}
  2336.     prop dataSize :: ((2 * 4) * (IDL.gNumOf + 1))
  2337.     prop maxObjs :: (32767)
  2338.     prop SortByField :: "iPri"
  2339.     prop SortGroups :: 1
  2340.     prop idlFxnSum :: ($a = 0, scan ($i; IDL) {$a += $i.cycles}, $a)
  2341.     global gUser :: "USER" { 
  2342.         prop Visible :: 0
  2343.         prop Writable :: 0
  2344.         prop NoGen :: 1
  2345.     }
  2346.     global gSetOf :: 0 { 
  2347.         prop Visible :: 0
  2348.         prop Writable :: 0
  2349.         prop NoGen :: 1
  2350.     }
  2351.     global gNumOf :: 3 { 
  2352.         prop Visible :: 0
  2353.         prop Writable :: 0
  2354.         prop NoGen :: 1
  2355.     }
  2356.     global gDirty :: 1 { 
  2357.         prop Visible :: 0
  2358.         prop Writable :: 0
  2359.         prop NoGen :: 1
  2360.     }
  2361.     global gInitFlag :: 1 { 
  2362.         prop Visible :: 0
  2363.         prop Writable :: 0
  2364.         prop NoGen :: 1
  2365.     }
  2366.     global gInit :: = ($a = 0, $b = 0, scan ($i; self) {if ($i.IsConfObj()) {$a += 1, if (self.isFinite) {$b |= 1 << $i.iId} } }, self.gNumOf = $a, self.gSetOf = $b, if (self.gInitFlag == 0) {self.localInit()} , self.gInitFlag = 1) { 
  2367.         prop Visible :: 0
  2368.         prop Writable :: 0
  2369.         prop NoGen :: 1
  2370.     }
  2371.     global OBJMEMSEG :: ISRAM { 
  2372.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  2373.         prop MemberType :: MEM
  2374.         prop MemberTest :: MEM.dataMember($1)
  2375.         prop Label :: "Object Memory"
  2376.         prop JSName :: "OBJMEMSEG"
  2377.         prop Visible :: 1
  2378.         prop Writable :: 1
  2379.         prop NoGen :: 1
  2380.     }
  2381.     global AUTOCALCULATE :: 1 { 
  2382.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2383.         prop Label :: "Auto calculate idle loop instruction count"
  2384.         prop JSName :: "AUTOCALCULATE"
  2385.         prop Visible :: 1
  2386.         prop Writable :: CLK.USETIMER
  2387.         prop Set :: (if ($1 == 1 && CLK.USETIMER == 0) {self.error("CLK must be enabled to do idle loop intruction count")} else {if ($1 == 1 && GBL.ENABLEINST == 0) {self.error("Real Time Analysis must be enabled to do idle loop instuction count")} else {self.AUTOCALCULATE = $1, "ok"}})
  2388.         prop NoGen :: 1
  2389.     }
  2390.     global USECLKIDLTIME :: = IDL.AUTOCALCULATE { 
  2391.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2392.         prop Visible :: 0
  2393.         prop Writable :: 0
  2394.         prop NoGen :: 0
  2395.     }
  2396.     global USEIDLBUSYOBJ :: 1 { 
  2397.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2398.         prop Visible :: 0
  2399.         prop Writable :: 0
  2400.         prop NoGen :: 1
  2401.     }
  2402.     global CALIBRFXN :: = (if (IDL.AUTOCALCULATE == 1) {if TSK.USETSK {(if GBL.DSPSUBTYPE == 5502 {@IDL_F_stub5502} else {@IDL_F_stub})} else {if (GBL.DSPSUBTYPE == 5502) {@IDL_F_calibrate5502} else {@IDL_F_calibrate}}} else {@GBL_NULL}) { 
  2403.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2404.         prop Label :: "Idle Loop Auto-Calibrate Function"
  2405.         prop Visible :: 0
  2406.         prop Writable :: 1
  2407.         prop NoGen :: 0
  2408.     }
  2409.     global CALIBRERROR :: = (if (GBL.DSPTYPE == 62 && IDL.CALIBRFXN == @IDL_F_stub) {6} else {0}) { 
  2410.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2411.         prop Label :: "Idle Loop Auto-Calibrate Error"
  2412.         prop Visible :: 0
  2413.         prop Writable :: 1
  2414.         prop NoGen :: 1
  2415.     }
  2416.     global LOOPOVERHEAD :: 0 { 
  2417.         prop Label :: "Idle Loop Instruction Count"
  2418.         prop JSName :: "LOOPINSTCOUNT"
  2419.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2420.         prop Visible :: 1
  2421.         prop Writable :: self.AUTOCALCULATE == 0
  2422.         prop NoGen :: 1
  2423.     }
  2424.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  2425.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  2426.         prop Label :: "comment"
  2427.         prop JSName :: "comment"
  2428.         prop Visible :: 1
  2429.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  2430.         prop NoGen :: 1
  2431.     }
  2432.     inst iIsUsed :: 0 { 
  2433.         prop Visible :: 0
  2434.         prop Writable :: 0
  2435.         prop NoGen :: 1
  2436.     }
  2437.     inst iId :: 0 { 
  2438.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2439.         prop Style :: 0x01
  2440.         prop Visible :: 0
  2441.         prop Writable :: 1
  2442.         prop NoGen :: 1
  2443.     }
  2444.     inst iDelUser :: "USER" { 
  2445.         prop Visible :: 0
  2446.         prop Writable :: 0
  2447.         prop NoGen :: 1
  2448.     }
  2449.     inst iDelMsg :: "ok" { 
  2450.         prop Visible :: 0
  2451.         prop Writable :: 0
  2452.         prop NoGen :: 1
  2453.     }
  2454.     inst function :: @_FXN_F_nop { 
  2455.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2456.         prop JSName :: "fxn"
  2457.         prop Visible :: 1
  2458.         prop Writable :: (if self.iDelUser == "USER" {1} else {0})
  2459.         prop NoGen :: 0
  2460.     }
  2461.     inst cycles :: 0 { 
  2462.         prop Label :: "CPU cycles"
  2463.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2464.         prop Visible :: 0
  2465.         prop Writable :: if (self.iDelUser == "USER") {1} else {0}
  2466.         prop NoGen :: 1
  2467.     }
  2468.     inst calibration :: 1 { 
  2469.         prop Label :: "Include in CPU load calibration"
  2470.         prop JSName :: "calibration"
  2471.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2472.         prop Visible :: 1
  2473.         prop Writable :: if (self.iDelUser == "USER") {1} else {0}
  2474.         prop NoGen :: 0
  2475.     }
  2476.     inst Order :: 0 { 
  2477.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2478.         prop JSName :: "order"
  2479.         prop NoGen :: 1
  2480.         prop Writable :: 1
  2481.     }
  2482.     inst iPri :: 0 { 
  2483.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  2484.         prop Visible :: 0
  2485.         prop NoGen :: 1
  2486.     }
  2487. }
  2488. object IDL_cpuLoad :: IDL {
  2489.     param iComment :: "This object is required by the system to acquire CPU load data"
  2490.     param iIsUsed :: 1
  2491.     param iId :: 0
  2492.     param iDelUser :: "IDL"
  2493.     param iDelMsg :: "This object is required to compute CPU load and can't be deleted"
  2494.     param function :: @IDL_F_busy
  2495.     param cycles :: 0
  2496.     param calibration :: 1
  2497.     param Order :: 3
  2498.     param iPri :: 0
  2499. }
  2500. object IDL_busyObj :: STS {
  2501.     param iComment :: "This object is required by the system to accumulate CPU load statistics"
  2502.     param iIsUsed :: 1
  2503.     param iId :: 0
  2504.     param iDelUser :: "IDL"
  2505.     param iDelMsg :: "This object is required to accumulate CPU load data and can't be deleted"
  2506.     param prev :: 0
  2507.     param format :: "%g"
  2508.     param unittype :: "Not time based"
  2509.     param operation :: "Nothing"
  2510.     param iA :: 1
  2511.     param iB :: 0
  2512.     param iC :: 1
  2513.     param prevhigh :: 0
  2514.     param prevlow :: 0
  2515. }
  2516. type ISRC {
  2517.     isa ObjectMgr
  2518.     prop name :: "ISRC"
  2519.     prop Label :: "ISRC - Interrupt Sources"
  2520.     prop IsConfMod :: 1
  2521.     prop Visible :: 0
  2522.     prop InstancePropertyPage :: ("{91BA37C0-98C3-11d1-988B-0020AFEE33C6}")
  2523.     prop GlobalPropertyPage :: ("{91BA37C1-98C3-11d1-988B-0020AFEE33C6}")
  2524.     global gUser :: "USER" { 
  2525.         prop Visible :: 0
  2526.         prop Writable :: 0
  2527.         prop NoGen :: 1
  2528.     }
  2529.     global gSetOf :: 0 { 
  2530.         prop Visible :: 0
  2531.         prop Writable :: 0
  2532.         prop NoGen :: 1
  2533.     }
  2534.     global gNumOf :: 0 { 
  2535.         prop Visible :: 0
  2536.         prop Writable :: 0
  2537.         prop NoGen :: 1
  2538.     }
  2539.     global gDirty :: 0 { 
  2540.         prop Visible :: 0
  2541.         prop Writable :: 0
  2542.         prop NoGen :: 1
  2543.     }
  2544.     global gInitFlag :: 1 { 
  2545.         prop Visible :: 0
  2546.         prop Writable :: 0
  2547.         prop NoGen :: 1
  2548.     }
  2549.     global gInit :: = ($a = 0, $b = 0, scan ($i; self) {if ($i.IsConfObj()) {$a += 1, if (self.isFinite) {$b |= 1 << $i.iId} } }, self.gNumOf = $a, self.gSetOf = $b, if (self.gInitFlag == 0) {self.localInit()} , self.gInitFlag = 1) { 
  2550.         prop Visible :: 0
  2551.         prop Writable :: 0
  2552.         prop NoGen :: 1
  2553.     }
  2554.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  2555.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  2556.         prop Label :: "comment"
  2557.         prop JSName :: "comment"
  2558.         prop Visible :: 1
  2559.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  2560.         prop NoGen :: 1
  2561.     }
  2562.     inst iIsUsed :: 0 { 
  2563.         prop Visible :: 0
  2564.         prop Writable :: 0
  2565.         prop NoGen :: 1
  2566.     }
  2567.     inst iId :: 0 { 
  2568.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2569.         prop Style :: 0x01
  2570.         prop Visible :: 0
  2571.         prop Writable :: 1
  2572.         prop NoGen :: 1
  2573.     }
  2574.     inst iDelUser :: "USER" { 
  2575.         prop Visible :: 0
  2576.         prop Writable :: 0
  2577.         prop NoGen :: 1
  2578.     }
  2579.     inst iDelMsg :: "ok" { 
  2580.         prop Visible :: 0
  2581.         prop Writable :: 0
  2582.         prop NoGen :: 1
  2583.     }
  2584.     inst iHwi :: HWI_UNUSED { 
  2585.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  2586.         prop MemberType :: HWI
  2587.         prop MemberTest :: 1
  2588.         prop Visible :: 1
  2589.         prop Writable :: 1
  2590.         prop NoGen :: 1
  2591.     }
  2592.     inst iIntrSelectNum :: 0 { 
  2593.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2594.         prop Visible :: 0
  2595.         prop Writable :: 0
  2596.         prop NoGen :: 1
  2597.     }
  2598. }
  2599. object Reset :: ISRC {
  2600.     param iComment :: "<add comments here>"
  2601.     param iIsUsed :: 0
  2602.     param iId :: 0
  2603.     param iDelUser :: "USER"
  2604.     param iDelMsg :: "ok"
  2605.     param iHwi :: HWI_RESET
  2606.     param iIntrSelectNum :: -1
  2607. }
  2608. object Non_Maskable :: ISRC {
  2609.     param iComment :: "<add comments here>"
  2610.     param iIsUsed :: 0
  2611.     param iId :: 0
  2612.     param iDelUser :: "USER"
  2613.     param iDelMsg :: "ok"
  2614.     param iHwi :: HWI_NMI
  2615.     param iIntrSelectNum :: -1
  2616. }
  2617. object Reserved :: ISRC {
  2618.     param iComment :: "<add comments here>"
  2619.     param iIsUsed :: 0
  2620.     param iId :: 0
  2621.     param iDelUser :: "USER"
  2622.     param iDelMsg :: "ok"
  2623.     param iHwi :: HWI_RESERVED0
  2624.     param iIntrSelectNum :: -1
  2625. }
  2626. object Host_Port_Host_to_DSP :: ISRC {
  2627.     param iComment :: "<add comments here>"
  2628.     param iIsUsed :: 0
  2629.     param iId :: 0
  2630.     param iDelUser :: "USER"
  2631.     param iDelMsg :: "ok"
  2632.     param iHwi :: HWI_INT13
  2633.     param iIntrSelectNum :: 0
  2634. }
  2635. object Timer_0 :: ISRC {
  2636.     param iComment :: "<add comments here>"
  2637.     param iIsUsed :: 0
  2638.     param iId :: 0
  2639.     param iDelUser :: "USER"
  2640.     param iDelMsg :: "ok"
  2641.     param iHwi :: HWI_INT14
  2642.     param iIntrSelectNum :: 1
  2643. }
  2644. object Timer_1 :: ISRC {
  2645.     param iComment :: "<add comments here>"
  2646.     param iIsUsed :: 0
  2647.     param iId :: 0
  2648.     param iDelUser :: "USER"
  2649.     param iDelMsg :: "ok"
  2650.     param iHwi :: HWI_INT15
  2651.     param iIntrSelectNum :: 2
  2652. }
  2653. object EMIF_SDRAM_Timer :: ISRC {
  2654.     param iComment :: "<add comments here>"