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

DSP编程

开发平台:

C/C++

  1. //! DM642 Base Seed
  2. //# c64xx.cdb 4.90.270
  3. object ISRAM :: MEM {
  4.     param iComment :: "This object defines space for the DSP's on-chip memory"
  5.     param iIsUsed :: 1
  6.     param iId :: 0
  7.     param iDelUser :: "USER"
  8.     param iDelMsg :: "ok"
  9.     param base :: 1024
  10.     param len :: 261120
  11.     param iAllocHeap :: 0
  12.     param iHeapSize :: 0
  13.     param iUserHeapId :: 0
  14.     param iHeapId :: @segment_name
  15.     param iReqHeapCount :: 0
  16.     param space :: "code/data"
  17.     param iIsModifiable :: 1
  18. }
  19. object CACHE_L2 :: MEM {
  20.     param iComment :: "Generated by Cache Settings in GBL"
  21.     param iIsUsed :: 0
  22.     param iId :: 0
  23.     param iDelUser :: "MEM"
  24.     param iDelMsg :: "L2 Cache cannot be deleted by user"
  25.     param base :: 0
  26.     param len :: 0
  27.     param iAllocHeap :: 0
  28.     param iHeapSize :: 32768
  29.     param iUserHeapId :: 0
  30.     param iHeapId :: @segment_name
  31.     param iReqHeapCount :: 0
  32.     param space :: "Cache"
  33.     param iIsModifiable :: 0
  34. }
  35. class Module {
  36.     prop Visible :: 1
  37.     prop Writable :: 1
  38.     prop IsConfMod :: (if self.gNumOf > 0 {1} else {0})
  39.     prop NoGen :: 0
  40.     prop IsDirty :: ($a = self.gDirty, self.gDirty = 0, $a)
  41.     prop dataSize :: 0
  42.     prop error :: # ("Error: ", self.name, $1)
  43.     prop warning :: ("Warning ...", self.name, $1)
  44.     prop minBit :: ($a = 0, while (($1 & (1 << $a)) && $a < 32) {++$a}, $a)
  45.     prop name :: ("<unnamed module>")
  46.     prop numBit :: ($a = $b = 0, while ($a < 32) {if ($1 & (1 << $a)) {++$b} }, $b)
  47. }
  48. class ObjectMgr {
  49.     isa Module
  50.     prop CanCreate :: (if (self.gNumOf < self.maxObjs()) {self.localCanCreate()} else {self.warning("Maximum number of objects already created")})
  51.     prop CanDelete :: (if (self.iDelMsg == "ok" || (self.iDelUser == self.gUser)) {if (self.iId >= 0 && self.iIsUsed) {self.localCanDelete()} else {self.warning("Object already deleted")}} else {self.warning(self.iDelMsg)})
  52.     prop Create :: ((self.gUser = (if $0 > 0 {$1} else {"USER"})), if (($a = self.CanCreate()) == "ok") {if (($a = self.localCreate()) == "ok") {if (self.iIsUsed == 0) {self.mkId(if $0 > 1 {$2} else {-1}), self.iIsUsed = 1, GlobalStatus.gDirty = 1, self.gDirty = 1} } } , (self.gUser = "USER"), $a)
  53.     prop Delete :: ((self.gUser = (if $0 > 0 {$1} else {"USER"})), if (($a = self.CanDelete()) == "ok") {if (($a = self.localDelete()) == "ok") {self.rmId(self.iId), self.iIsUsed = 0, GlobalStatus.gDirty = 1, self.gDirty = 1} } , (self.gUser = "USER"), $a)
  54.     prop GetSetOf :: (self.gSetOf)
  55.     prop GetNumOf :: (self.gNumOf)
  56.     prop GetObjId :: (self.iId)
  57.     prop GetPriority :: (self.iId)
  58.     prop SetPriority :: (self.iId = $1)
  59.     prop IsConfObj :: (self.iIsUsed)
  60.     prop localCanCreate :: ("ok")
  61.     prop localCanDelete :: ("ok")
  62.     prop localCreate :: ("ok")
  63.     prop localDelete :: ("ok")
  64.     prop localInit :: (0)
  65.     prop isFinite :: (if self.maxObjs() <= GBL.DSPWORDSIZE {1} else {0})
  66.     prop mkId :: (if (self.isFinite()) {if ($1 < 0) {self.iId = self.minBit(self.gSetOf)} else {self.iId = $1}, (self.gSetOf |= (1 << self.iId))} else {self.iId = 0}, ++self.gNumOf, self.iId)
  67.     prop rmId :: (if (self.isFinite()) {self.gSetOf &= ~(1 << self.iId)} , --self.gNumOf)
  68.     prop maxObjs :: (GBL.DSPWORDSIZE)
  69.     prop isDriver :: (0)
  70.     prop SortChildHierView :: (1)
  71. }
  72. type GlobalStatus {
  73.     prop NoGen :: 1
  74.     prop Visible :: 0
  75.     prop Writable :: 0
  76.     prop Label :: "Current Configuration Status"
  77.     prop GlobalIcon :: 101
  78.     prop InstanceIcon :: 101
  79.     prop GlobalHelpTopic :: (100)
  80.     prop GlobalPropertyPage :: ("{9D3AD931-847B-11d0-A621-0000C070F3E9}")
  81.     prop Status :: (# self.SeedVersion, # self.MinStackSize, # self.SysDataSize)
  82.     global GENLIB :: "bioscfg.dll" { 
  83.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  84.         prop Label :: "Generation Library"
  85.         prop NoGen :: 1
  86.         prop Visible :: 0
  87.         prop Writable :: 0
  88.     }
  89.     global DATE :: "Mon Mar 20 11:48:27 2006" { 
  90.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  91.         prop Visible :: 0
  92.         prop Writable :: 0
  93.         prop NoGen :: 1
  94.     }
  95.     global GCONFVERS :: "@(#)*** xdc-c37" { 
  96.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  97.         prop Visible :: 0
  98.         prop Writable :: 0
  99.         prop NoGen :: 1
  100.     }
  101.     global SysDataSize :: = ($a = 0, scan ($i; nil) {if ($i.dataSize() != nil) {$a = $a + $i.dataSize()} }, $a) { 
  102.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  103.         prop Format :: "Estimated Data Size: %d"
  104.         prop StatusField :: 1
  105.         prop NoGen :: 1
  106.     }
  107.     global MinStackSize :: = ($a = ((2 * (2)) * 4), $a = $a + ((2 * (5)) * 4), $a = $a + ((0) * 4), $b = 0, scan ($i; CLK) {if ($i.IsConfObj()) {$b |= 1} }, $a = $a + (((2 * (2)) * 4) * $b), $b = 0, scan ($i; HWI) {if ($i.IsConfObj()) {if (($i.function != @HWI_unused) && ($i.function != @RESERVED)) {$b++} } }, $a = $a + (((12 + 14 + 2) * 4) * $b), $b = 0, scan ($i; SWI) {if ($i.IsConfObj()) {if ($i.priority > $b) {$b = $i.priority} } }, $a = $a + ((((2 * 2) + 18 + (2 * 4)) * 4) * $b), $b = 0, scan ($i; PRD) {if ($i.IsConfObj()) {$b |= 1} }, $a = $a + (((2 * (3)) * 4) * $b), $a) { 
  108.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  109.         prop Format :: "Est. Min. Stack Size (MAUs): %d"
  110.         prop StatusField :: 1
  111.         prop Visible :: 0
  112.         prop Writable :: 0
  113.         prop NoGen :: 1
  114.     }
  115.     global ConfigWarnings :: = (if (self.MinStackSize > MEM.STACKSIZE) {"Application stack size is too small; decrease the number of SWI priorities or increase the stack in MEM."} else {"None"}) { 
  116.         prop Label :: "Warnings"
  117.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  118.         prop Visible :: 0
  119.         prop Writable :: 0
  120.         prop NoGen :: 1
  121.     }
  122.     global SeedVersion :: = "@(#)*** cuda-4.90.00.27" { 
  123.         prop Visible :: 0
  124.         prop Writable :: 0
  125.         prop NoGen :: 1
  126.     }
  127.     global gDirty :: 1 { 
  128.         prop Visible :: 0
  129.         prop Writable :: 0
  130.         prop NoGen :: 1
  131.     }
  132. }
  133. class EModule {
  134.     isa Module
  135.     prop IsXMod :: (1)
  136.     prop Vendor :: ("")
  137.     prop Version :: ("")
  138. }
  139. class EObjectMgr {
  140.     isa ObjectMgr
  141.     prop IsXMod :: (1)
  142.     prop Vendor :: ("")
  143.     prop Version :: ("")
  144. }
  145. class ModuleFolder {
  146.     isa Module
  147.     prop NoGen :: 1
  148. }
  149. type SYSTEM {
  150.     isa ModuleFolder
  151.     prop Label :: "System"
  152.     prop GlobalIcon :: 151
  153.     prop GlobalHelpTopic :: (500)
  154.     prop GlobalPropertyPage :: ("{B936FB91-52A5-11d4-947C-0050048381B7}")
  155.     global gUser :: "USER" { 
  156.         prop Visible :: 0
  157.         prop Writable :: 0
  158.         prop NoGen :: 1
  159.     }
  160.     global gSetOf :: 0 { 
  161.         prop Visible :: 0
  162.         prop Writable :: 0
  163.         prop NoGen :: 1
  164.     }
  165.     global gNumOf :: 0 { 
  166.         prop Visible :: 0
  167.         prop Writable :: 0
  168.         prop NoGen :: 1
  169.     }
  170.     global gDirty :: 0 { 
  171.         prop Visible :: 0
  172.         prop Writable :: 0
  173.         prop NoGen :: 1
  174.     }
  175.     global gInitFlag :: 1 { 
  176.         prop Visible :: 0
  177.         prop Writable :: 0
  178.         prop NoGen :: 1
  179.     }
  180.     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) { 
  181.         prop Visible :: 0
  182.         prop Writable :: 0
  183.         prop NoGen :: 1
  184.     }
  185. }
  186. type INS {
  187.     isa ModuleFolder
  188.     prop Label :: "Instrumentation"
  189.     prop GlobalIcon :: 152
  190.     prop GlobalHelpTopic :: (501)
  191.     prop GlobalPropertyPage :: ("{053C8F90-52A6-11d4-947C-0050048381B7}")
  192.     global gUser :: "USER" { 
  193.         prop Visible :: 0
  194.         prop Writable :: 0
  195.         prop NoGen :: 1
  196.     }
  197.     global gSetOf :: 0 { 
  198.         prop Visible :: 0
  199.         prop Writable :: 0
  200.         prop NoGen :: 1
  201.     }
  202.     global gNumOf :: 0 { 
  203.         prop Visible :: 0
  204.         prop Writable :: 0
  205.         prop NoGen :: 1
  206.     }
  207.     global gDirty :: 0 { 
  208.         prop Visible :: 0
  209.         prop Writable :: 0
  210.         prop NoGen :: 1
  211.     }
  212.     global gInitFlag :: 1 { 
  213.         prop Visible :: 0
  214.         prop Writable :: 0
  215.         prop NoGen :: 1
  216.     }
  217.     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) { 
  218.         prop Visible :: 0
  219.         prop Writable :: 0
  220.         prop NoGen :: 1
  221.     }
  222. }
  223. type SCH {
  224.     isa ModuleFolder
  225.     prop Label :: "Scheduling"
  226.     prop GlobalIcon :: 153
  227.     prop GlobalHelpTopic :: (502)
  228.     prop GlobalPropertyPage :: ("{053C8F91-52A6-11d4-947C-0050048381B7}")
  229.     global gUser :: "USER" { 
  230.         prop Visible :: 0
  231.         prop Writable :: 0
  232.         prop NoGen :: 1
  233.     }
  234.     global gSetOf :: 0 { 
  235.         prop Visible :: 0
  236.         prop Writable :: 0
  237.         prop NoGen :: 1
  238.     }
  239.     global gNumOf :: 0 { 
  240.         prop Visible :: 0
  241.         prop Writable :: 0
  242.         prop NoGen :: 1
  243.     }
  244.     global gDirty :: 0 { 
  245.         prop Visible :: 0
  246.         prop Writable :: 0
  247.         prop NoGen :: 1
  248.     }
  249.     global gInitFlag :: 1 { 
  250.         prop Visible :: 0
  251.         prop Writable :: 0
  252.         prop NoGen :: 1
  253.     }
  254.     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) { 
  255.         prop Visible :: 0
  256.         prop Writable :: 0
  257.         prop NoGen :: 1
  258.     }
  259. }
  260. type SYN {
  261.     isa ModuleFolder
  262.     prop Label :: "Synchronization"
  263.     prop GlobalIcon :: 154
  264.     prop GlobalHelpTopic :: (503)
  265.     prop GlobalPropertyPage :: ("{053C8F92-52A6-11d4-947C-0050048381B7}")
  266.     global gUser :: "USER" { 
  267.         prop Visible :: 0
  268.         prop Writable :: 0
  269.         prop NoGen :: 1
  270.     }
  271.     global gSetOf :: 0 { 
  272.         prop Visible :: 0
  273.         prop Writable :: 0
  274.         prop NoGen :: 1
  275.     }
  276.     global gNumOf :: 0 { 
  277.         prop Visible :: 0
  278.         prop Writable :: 0
  279.         prop NoGen :: 1
  280.     }
  281.     global gDirty :: 0 { 
  282.         prop Visible :: 0
  283.         prop Writable :: 0
  284.         prop NoGen :: 1
  285.     }
  286.     global gInitFlag :: 1 { 
  287.         prop Visible :: 0
  288.         prop Writable :: 0
  289.         prop NoGen :: 1
  290.     }
  291.     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) { 
  292.         prop Visible :: 0
  293.         prop Writable :: 0
  294.         prop NoGen :: 1
  295.     }
  296. }
  297. type IOF {
  298.     isa ModuleFolder
  299.     prop Label :: "Input/Output"
  300.     prop GlobalIcon :: 155
  301.     prop GlobalHelpTopic :: (504)
  302.     prop GlobalPropertyPage :: ("{053C8F93-52A6-11d4-947C-0050048381B7}")
  303.     global gUser :: "USER" { 
  304.         prop Visible :: 0
  305.         prop Writable :: 0
  306.         prop NoGen :: 1
  307.     }
  308.     global gSetOf :: 0 { 
  309.         prop Visible :: 0
  310.         prop Writable :: 0
  311.         prop NoGen :: 1
  312.     }
  313.     global gNumOf :: 0 { 
  314.         prop Visible :: 0
  315.         prop Writable :: 0
  316.         prop NoGen :: 1
  317.     }
  318.     global gDirty :: 0 { 
  319.         prop Visible :: 0
  320.         prop Writable :: 0
  321.         prop NoGen :: 1
  322.     }
  323.     global gInitFlag :: 1 { 
  324.         prop Visible :: 0
  325.         prop Writable :: 0
  326.         prop NoGen :: 1
  327.     }
  328.     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) { 
  329.         prop Visible :: 0
  330.         prop Writable :: 0
  331.         prop NoGen :: 1
  332.     }
  333. }
  334. type PROJ {
  335.     isa ObjectMgr
  336.     prop name :: "PROJ"
  337.     prop maxObjs :: 0
  338.     prop Label :: "Project Manager"
  339.     prop GlobalIcon :: 121
  340.     prop InstanceIcon :: 122
  341.     prop InstanceHelpTopic :: (201)
  342.     prop GlobalHelpTopic :: (101)
  343.     prop InstancePropertyPage :: ("{AC3C77D1-890B-11d0-A621-0000C070F3E9}")
  344.     prop GlobalPropertyPage :: ("{AC3C77D2-890B-11d0-A621-0000C070F3E9}")
  345.     prop NoGen :: 1
  346.     prop Visible :: 0
  347.     global gUser :: "USER" { 
  348.         prop Visible :: 0
  349.         prop Writable :: 0
  350.         prop NoGen :: 1
  351.     }
  352.     global gSetOf :: 0 { 
  353.         prop Visible :: 0
  354.         prop Writable :: 0
  355.         prop NoGen :: 1
  356.     }
  357.     global gNumOf :: 0 { 
  358.         prop Visible :: 0
  359.         prop Writable :: 0
  360.         prop NoGen :: 1
  361.     }
  362.     global gDirty :: 0 { 
  363.         prop Visible :: 0
  364.         prop Writable :: 0
  365.         prop NoGen :: 1
  366.     }
  367.     global gInitFlag :: 1 { 
  368.         prop Visible :: 0
  369.         prop Writable :: 0
  370.         prop NoGen :: 1
  371.     }
  372.     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) { 
  373.         prop Visible :: 0
  374.         prop Writable :: 0
  375.         prop NoGen :: 1
  376.     }
  377.     global ALIASALL :: 1 { 
  378.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  379.         prop Label :: "Generate C Names for All Objects"
  380.         prop Visible :: 1
  381.         prop Writable :: 1
  382.         prop NoGen :: 1
  383.     }
  384.     global IGNOREWARNING :: 0 { 
  385.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  386.         prop Label :: "Ignore Warnings"
  387.         prop Visible :: 1
  388.         prop Writable :: 1
  389.         prop NoGen :: 1
  390.     }
  391.     global LIBPATH :: ".;../../lib;$(BIOSROOT)/lib" { 
  392.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  393.         prop Label :: "Library Search Path"
  394.         prop Visible :: 0
  395.         prop Writable :: 1
  396.         prop NoGen :: 1
  397.     }
  398.     global INCPATH :: ".;../../include;$(BIOSROOT)/include" { 
  399.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  400.         prop Label :: "Include File Search Path"
  401.         prop Visible :: 0
  402.         prop Writable :: 1
  403.         prop NoGen :: 1
  404.     }
  405.     global OBJDIR :: "." { 
  406.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  407.         prop Label :: "Object file directory"
  408.         prop Visible :: 0
  409.         prop Writable :: 1
  410.         prop NoGen :: 1
  411.     }
  412.     global EXTEXE :: "out" { 
  413.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  414.         prop Label :: "Executable File Extension"
  415.         prop Visible :: 0
  416.         prop Writable :: 1
  417.         prop NoGen :: 1
  418.     }
  419.     global EXTLIB :: "lib" { 
  420.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  421.         prop Label :: "Library File Extension"
  422.         prop Visible :: 0
  423.         prop Writable :: 1
  424.         prop NoGen :: 1
  425.     }
  426.     global EXTASM :: "asm" { 
  427.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  428.         prop Label :: "Assembly Language Source File Extension"
  429.         prop Visible :: 0
  430.         prop Writable :: 1
  431.         prop NoGen :: 1
  432.     }
  433.     global EXTOBJ :: "obj" { 
  434.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  435.         prop Label :: "Object File Extension"
  436.         prop Visible :: 0
  437.         prop Writable :: 1
  438.         prop NoGen :: 1
  439.     }
  440.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  441.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  442.         prop Label :: "comment"
  443.         prop JSName :: "comment"
  444.         prop Visible :: 1
  445.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  446.         prop NoGen :: 1
  447.     }
  448.     inst iIsUsed :: 0 { 
  449.         prop Visible :: 0
  450.         prop Writable :: 0
  451.         prop NoGen :: 1
  452.     }
  453.     inst iId :: 0 { 
  454.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  455.         prop Style :: 0x01
  456.         prop Visible :: 0
  457.         prop Writable :: 1
  458.         prop NoGen :: 1
  459.     }
  460.     inst iDelUser :: "USER" { 
  461.         prop Visible :: 0
  462.         prop Writable :: 0
  463.         prop NoGen :: 1
  464.     }
  465.     inst iDelMsg :: "ok" { 
  466.         prop Visible :: 0
  467.         prop Writable :: 0
  468.         prop NoGen :: 1
  469.     }
  470.     inst projType :: "Executable" { 
  471.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  472.         prop Enum :: "Executable,Library"
  473.         prop Label :: "Target Type"
  474.         prop Visible :: 0
  475.         prop Writable :: 1
  476.         prop NoGen :: 1
  477.     }
  478.     inst projName :: "$(PROG)" { 
  479.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  480.         prop Label :: "Target File Name"
  481.         prop Visible :: 0
  482.         prop Writable :: 1
  483.         prop NoGen :: 1
  484.     }
  485.     inst useRpt :: 0 { 
  486.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  487.         prop Label :: "Use RPT Instruction"
  488.         prop Visible :: 0
  489.         prop Writable :: 1
  490.         prop NoGen :: 1
  491.     }
  492.     inst minimizeSpace :: 0 { 
  493.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  494.         prop Label :: "Optimize for Space over Time"
  495.         prop Visible :: 0
  496.         prop Writable :: 1
  497.         prop NoGen :: 1
  498.     }
  499.     inst tmx :: 0 { 
  500.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  501.         prop Label :: "Avoid TMX Silicon Bugs"
  502.         prop Visible :: 0
  503.         prop Writable :: 1
  504.         prop NoGen :: 1
  505.     }
  506. }
  507. type PROJ_FILE {
  508.     isa ObjectMgr
  509.     prop Visible :: 0
  510.     prop Label :: "Project File Manager"
  511.     prop InstanceHelpTopic :: (BIOSHELP_PROJ_FILE_INSTANCE)
  512.     prop GlobalHelpTopic :: (BIOSHELP_PROJ_FILE_GLOBAL)
  513.     prop InstancePropertyPage :: ("{AC3C77D3-890B-11d0-A621-0000C070F3E9}")
  514.     prop GlobalPropertyPage :: ("{AC3C77D4-890B-11d0-A621-0000C070F3E9}")
  515.     prop NoGen :: 1
  516.     global gUser :: "USER" { 
  517.         prop Visible :: 0
  518.         prop Writable :: 0
  519.         prop NoGen :: 1
  520.     }
  521.     global gSetOf :: 0 { 
  522.         prop Visible :: 0
  523.         prop Writable :: 0
  524.         prop NoGen :: 1
  525.     }
  526.     global gNumOf :: 0 { 
  527.         prop Visible :: 0
  528.         prop Writable :: 0
  529.         prop NoGen :: 1
  530.     }
  531.     global gDirty :: 0 { 
  532.         prop Visible :: 0
  533.         prop Writable :: 0
  534.         prop NoGen :: 1
  535.     }
  536.     global gInitFlag :: 1 { 
  537.         prop Visible :: 0
  538.         prop Writable :: 0
  539.         prop NoGen :: 1
  540.     }
  541.     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) { 
  542.         prop Visible :: 0
  543.         prop Writable :: 0
  544.         prop NoGen :: 1
  545.     }
  546.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  547.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  548.         prop Label :: "comment"
  549.         prop JSName :: "comment"
  550.         prop Visible :: 1
  551.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  552.         prop NoGen :: 1
  553.     }
  554.     inst iIsUsed :: 0 { 
  555.         prop Visible :: 0
  556.         prop Writable :: 0
  557.         prop NoGen :: 1
  558.     }
  559.     inst iId :: 0 { 
  560.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  561.         prop Style :: 0x01
  562.         prop Visible :: 0
  563.         prop Writable :: 1
  564.         prop NoGen :: 1
  565.     }
  566.     inst iDelUser :: "USER" { 
  567.         prop Visible :: 0
  568.         prop Writable :: 0
  569.         prop NoGen :: 1
  570.     }
  571.     inst iDelMsg :: "ok" { 
  572.         prop Visible :: 0
  573.         prop Writable :: 0
  574.         prop NoGen :: 1
  575.     }
  576.     inst elemType :: "C Source" { 
  577.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  578.         prop Enum :: "C Source,ASM Source,Library,Linker Command File"
  579.         prop Label :: "Input File Type"
  580.         prop Visible :: 0
  581.         prop Writable :: 1
  582.         prop NoGen :: 1
  583.     }
  584.     inst elemName :: "$(PROG)" { 
  585.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  586.         prop Label :: "Input File Name"
  587.         prop Visible :: 0
  588.         prop Writable :: 1
  589.         prop NoGen :: 1
  590.     }
  591.     inst optLevel :: "register+local+global" { 
  592.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  593.         prop Enum :: "register,register+local,register+local+global,register+local+global+file"
  594.         prop Label :: "Optimization Level"
  595.         prop Visible :: 0
  596.         prop Writable :: if self.elemType == "C Source" {1} else {0}
  597.         prop NoGen :: 1
  598.     }
  599.     inst inline :: 1 { 
  600.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  601.         prop Label :: "Inline Expansion"
  602.         prop Visible :: 0
  603.         prop Writable :: if self.elemType == "C Source" {1} else {0}
  604.         prop NoGen :: 1
  605.     }
  606.     inst definitions :: "" { 
  607.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  608.         prop Label :: "Additional Definitions"
  609.         prop Visible :: 0
  610.         prop Writable :: if self.elemType == "C Source" {1} else {0}
  611.         prop NoGen :: 1
  612.     }
  613.     inst iParent :: 0 { 
  614.         prop Visible :: 0
  615.         prop Writable :: 1
  616.         prop NoGen :: 1
  617.     }
  618. }
  619. type GBL {
  620.     isa Module
  621.     prop name :: "GBL"
  622.     prop Label :: "Global Settings"
  623.     prop IsContainedIn :: SYSTEM
  624.     prop cGen :: 1
  625.     prop GenLinkPrologue :: (if ((GBL.ROM == 1) && (GBL.DSPTYPE == 54)) {"%10SnSECTIONS {%4tn.vers (COPY): {} /* version information */%0tn}nn-priorityn%1S-lbios5402.o54%24t/* BIOS ROM library */%0tn-l%2S%3Sn%15S%4S%16S%5S%6S%12S%7S, _autoInitStr, _board, _librarySuffix, _devLibStr, _biosLibStr, _rtdxLibStr, _rtsLibStr, _librarySuffix, _compilerModel, _lnkCmdStr, _lnkCmdFile, _cslLibStr, _chipType, _devLibSuffix, _chipStr, _sioLibStr"} else {"%10SnSECTIONS {%4tn.vers (COPY): {} /* version information */%0tn}nn-priorityn%1S-l%2S%3Sn%15S%4S%16S%5S%6S%12S%7S, _autoInitStr, _board, _librarySuffix, _devLibStr, _biosLibStr, _rtdxLibStr, _rtsLibStr, _librarySuffix, _compilerModel, _lnkCmdStr, _lnkCmdFile, _cslLibStr, _chipType, _devLibSuffix, _chipStr, _sioLibStr"})
  626.     prop GenLinkEpilogue :: ("%0t_GBL_CACHE = GBL_CACHE;n")
  627.     prop ConfigurationClass :: "{2779A121-92CC-11d1-A63D-0000C070F3E9}"
  628.     prop GlobalIcon :: 105
  629.     prop InstanceIcon :: 106
  630.     prop GlobalHelpTopic :: (103)
  631.     prop InstanceHelpTopic :: (103)
  632.     prop InstancePropertyPage :: ("{B7240DE4-AA51-11cf-9BFE-0000C0AC14C7}")
  633.     prop GlobalPropertyPage :: ("{B7240DE5-AA51-11cf-9BFE-0000C0AC14C7}")
  634.     prop localInit :: (RTA_toHost.Create("HST"), RTA_fromHost.Create("HST"), RTA_dispatcher.Create("HST"), IDL_busyObj.Create("IDL"), IDL.USEIDLBUSYOBJ = 1, IDL_cpuLoad.Create("IDL"))
  635.     prop chipcall :: ("ok")
  636.     prop IsConfMod :: 1
  637.     prop L2Check :: (if (self.DSPSUBTYPE == 6211 || self.DSPSUBTYPE == 6711) {self.PCC = "mapped", if (self.C641XL2CONFIGURE == 1) {self.C641XL2CONFIGURE = 0, self.L2CONFIGALLOC = 0} } else {if (self.DSPSUBTYPE == 6400) {self.PCC = "mapped", if (self.C621XL2CONFIGURE == 1) {self.C621XL2CONFIGURE = 0} } else {if (self.C621XL2CONFIGURE == 1) {self.C621XL2CONFIGURE = 0} else {if (self.C641XL2CONFIGURE == 1) {self.C641XL2CONFIGURE = 0, self.L2CONFIGALLOC = 0} }}}, self.L2CacheSizeCheck())
  638.     prop C621xL2CacheSizeCheck :: ($e = "ok", $a = CACHE_L2.base, $b = CACHE_L2.len, if (self.C621XL2CONFIGURE == 0) {CACHE_L2.Delete("MEM")} else {if (self.L2MODEOPTS == "SRAM") {CACHE_L2.base = 0x0, CACHE_L2.len = 0x0, CACHE_L2.Delete("MEM")} else {if (self.L2MODEOPTS == "1-way cache") {CACHE_L2.Create("MEM"), CACHE_L2.base = if self.CHIPTYPE == "6713" || self.CHIPTYPE == "DA610" {0x3c000} else {0xc000}, CACHE_L2.len = 0x4000} else {if (self.L2MODEOPTS == "2-way cache") {CACHE_L2.Create("MEM"), CACHE_L2.base = if self.CHIPTYPE == "6713" || self.CHIPTYPE == "DA610" {0x38000} else {0x8000}, CACHE_L2.len = 0x8000} else {if (self.L2MODEOPTS == "3-way cache") {CACHE_L2.Create("MEM"), CACHE_L2.base = if self.CHIPTYPE == "6713" || self.CHIPTYPE == "DA610" {0x34000} else {0x4000}, CACHE_L2.len = 0xc000} else {if (self.L2MODEOPTS == "4-way cache") {CACHE_L2.Create("MEM"), CACHE_L2.base = if self.CHIPTYPE == "6713" || self.CHIPTYPE == "DA610" {0x30000} else {0x0000}, CACHE_L2.len = 0x10000} }}}}}, $e)
  639.     prop C641xL2CacheSizeCheck :: ($e = "ok", $a = CACHE_L2.base, $b = CACHE_L2.len, if (self.C641XL2CONFIGURE == 0) {CACHE_L2.Delete("MEM")} else {if (self.C641XL2MODEOPTS == "4-way cache (0k)") {CACHE_L2.base = 0x0, CACHE_L2.len = 0x0, CACHE_L2.Delete("MEM")} else {if (self.C641XL2MODEOPTS == "4-way cache (32k)") {CACHE_L2.Create("MEM"), CACHE_L2.base = if self.CHIPTYPE == "6412" || self.CHIPTYPE == "DM642" {0x38000} else {0xf8000}, CACHE_L2.len = 0x8000} else {if (self.C641XL2MODEOPTS == "4-way cache (64k)") {CACHE_L2.Create("MEM"), CACHE_L2.base = if self.CHIPTYPE == "6412" || self.CHIPTYPE == "DM642" {0x30000} else {0xf0000}, CACHE_L2.len = 0x10000} else {if (self.C641XL2MODEOPTS == "4-way cache (128k)") {CACHE_L2.Create("MEM"), CACHE_L2.base = if self.CHIPTYPE == "6412" || self.CHIPTYPE == "DM642" {0x20000} else {0xe0000}, CACHE_L2.len = 0x20000} else {if (self.C641XL2MODEOPTS == "4-way cache (256k)") {CACHE_L2.Create("MEM"), CACHE_L2.base = if self.CHIPTYPE == "6412" || self.CHIPTYPE == "DM642" {0x0} else {0xc0000}, CACHE_L2.len = 0x40000} }}}}}, $e)
  640.     prop L2CacheSizeCheck :: ($e = "ok", scan ($i; MEM) {if ($i == CACHE_L2) {if (self.C621XL2CONFIGURE) {$e = self.C621xL2CacheSizeCheck()} else {if (self.C641XL2CONFIGURE) {$e = self.C641xL2CacheSizeCheck()} else {if ((self.DSPSUBTYPE == 6211 || self.DSPSUBTYPE == 6711)) {$e = self.C621xL2CacheSizeCheck()} else {if (self.DSPSUBTYPE == 6400) {$e = self.C641xL2CacheSizeCheck()} else {CACHE_L2.base = 0x0, CACHE_L2.len = 0x0, CACHE_L2.Delete("MEM")}}}}} }, $e)
  641.     prop setCPUClock :: ($e = "ok", if ($1 != self.CPUCLOCK) {$a = self.CPUCLOCK, self.CPUCLOCK = $1, if (GBL.CALLBACKOBJ != nil) {$e = GBL.CALLBACKOBJ.call()} , if ($e != "ok") {self.CPUCLOCK = $a, GBL.CALLBACKOBJ.call()} } , if ($e == "ok") {"ok"} else {self.error($e)})
  642.     prop setCSLNAME :: (if (self.ENDIAN == "big") {if self.CHIPTYPE == "6201" {"csl6201e.lib"} else {if self.CHIPTYPE == "6202" {"csl6202e.lib"} else {if self.CHIPTYPE == "6203" {"csl6203e.lib"} else {if self.CHIPTYPE == "6204" {"csl6204e.lib"} else {if self.CHIPTYPE == "6205" {"csl6205e.lib"} else {if self.CHIPTYPE == "6211" {"csl6211e.lib"} else {if self.CHIPTYPE == "6701" {"csl6701e.lib"} else {if self.CHIPTYPE == "6711" {"csl6711e.lib"} else {if self.CHIPTYPE == "6712" {"csl6712e.lib"} else {if self.CHIPTYPE == "6713" {"csl6713e.lib"} else {if self.CHIPTYPE == "DA610" {"cslDA610e.lib"} else {if self.CHIPTYPE == "DM642" {"cslDM642e.lib"} else {if self.CHIPTYPE == "6412" {"csl6412e.lib"} else {if self.CHIPTYPE == "6414" {"csl6414e.lib"} else {if self.CHIPTYPE == "6415" {"csl6415e.lib"} else {if self.CHIPTYPE == "6416" {"csl6416e.lib"} else {""}}}}}}}}}}}}}}}}} else {if self.CHIPTYPE == "6201" {"csl6201.lib"} else {if self.CHIPTYPE == "6202" {"csl6202.lib"} else {if self.CHIPTYPE == "6203" {"csl6203.lib"} else {if self.CHIPTYPE == "6204" {"csl6204.lib"} else {if self.CHIPTYPE == "6205" {"csl6205.lib"} else {if self.CHIPTYPE == "6211" {"csl6211.lib"} else {if self.CHIPTYPE == "6701" {"csl6701.lib"} else {if self.CHIPTYPE == "6711" {"csl6711.lib"} else {if self.CHIPTYPE == "6712" {"csl6712.lib"} else {if self.CHIPTYPE == "6713" {"csl6713.lib"} else {if self.CHIPTYPE == "DA610" {"cslDA610.lib"} else {if self.CHIPTYPE == "DM642" {"cslDM642.lib"} else {if self.CHIPTYPE == "6412" {"csl6412.lib"} else {if self.CHIPTYPE == "6414" {"csl6414.lib"} else {if self.CHIPTYPE == "6415" {"csl6415.lib"} else {if self.CHIPTYPE == "6416" {"csl6416.lib"} else {""}}}}}}}}}}}}}}}}})
  643.     prop cGenCPrologue :: ("n#ifdef __cplusplusn#pragma CODE_SECTION(".text:CSL_cfgInit")n#elsen#pragma CODE_SECTION(CSL_cfgInit,".text:CSL_cfgInit")n#endifn
  644. n#ifdef __cplusplusn#pragma FUNC_EXT_CALLED()n#elsen#pragma FUNC_EXT_CALLED(CSL_cfgInit)n#endifn")
  645.     prop setL2MODE :: (if (self.L2MODEOPTS == "SRAM") {0x0} else {if (self.L2MODEOPTS == "1-way cache") {0x1} else {if (self.L2MODEOPTS == "2-way cache") {0x2} else {if (self.L2MODEOPTS == "3-way cache") {0x3} else {0x7}}}})
  646.     prop setC641XL2MODE :: (if (self.C641XL2MODEOPTS == "4-way cache (0k)") {0x0} else {if (self.C641XL2MODEOPTS == "4-way cache (32k)") {0x1} else {if (self.C641XL2MODEOPTS == "4-way cache (64k)") {0x2} else {if (self.C641XL2MODEOPTS == "4-way cache (128k)") {0x3} else {0x7}}}})
  647.     prop _cint00Str :: "-u_c_int00 %24t/* link with alternate boot.obj */%0tn"
  648.     prop _autoInitStr :: ""
  649.     prop _board :: (if (HST.RTDX == 1) {"lnkrtdx"} else {if (HST.DSM == 1) {"lnkdsm"} else {if (HST.EVM54 == 1) {"lnkevm54"} else {"lnknone"}}})
  650.     prop _dsptype :: GBL.DSPTYPE
  651.     prop _compilerModel :: if self.ENDIAN == "big" {"e"} else {""}
  652.     prop _librarySuffix :: (if (self.DSPSUBTYPE == 6400) {if (self.ENDIAN == "big") {".a64e"} else {".a64"}} else {if (self.ENDIAN == "big") {".a62e"} else {".a62"}})
  653.     prop _devLibSuffix :: (if (self.DSPSUBTYPE == 6700 || self.DSPSUBTYPE == 6711) {if (self.ENDIAN == "big") {".a67e"} else {".a67"}} else {if (self.DSPSUBTYPE == 6400) {if (self.ENDIAN == "big") {".a64e"} else {".a64"}} else {if (self.ENDIAN == "big") {".a62e"} else {".a62"}}})
  654.     prop _rtdxLibStr :: if RTDX.RTDXTYPE == "JTAG" {"-lrtdx64xx%9S.lib %24t/* RTDX support */%0tn"} else {if RTDX.RTDXTYPE == "Simulator" {"-lrtdxsim%9S.lib %24t/* RTDX support */%0tn"} else {"-lrtdxhs%9S.lib %24t/* RTDX support */%0tn"}}
  655.     prop _rtsLibStr :: (if (self.DSPSUBTYPE == 6700 || self.DSPSUBTYPE == 6711) {"-lrts6700%9S.lib%24t/* C and C++ run-time library support */%0tn"} else {if (self.DSPSUBTYPE == 6400) {"-lrts6400%9S.lib%24t/* C and C++ run-time library support */%0tn"} else {"-lrts6200%9S.lib%24t/* C and C++ run-time library support */%0tn"}})
  656.     prop _chipStr :: ""
  657.     prop _biosLibStr :: if self.ENABLEINST {"-lbiosi%8S %24t/* DSP/BIOS support */%0tn"} else {"-lbios%8S %24t/* DSP/BIOS support */%0tn"}
  658.     prop _sioLibStr :: if SIO.USEISSUERECLAIM == 1 {"-lsioir%8S %24t/* supports SIO Issue/Reclaim model only */%0tn"} else {"-lsioboth%8S %24t/* supports both SIO models */%0tn"}
  659.     prop _devLibStr :: "-ldrivers%14S %24t/* device drivers support */%0tn"
  660.     prop _lnkCmdFile :: MEM.LNKCMDFILE
  661.     prop _lnkCmdStr :: (if (MEM.LNKCMDFILE == "") {""} else {"-l%11S %24t/* User Specified Linker cmd file */%0tn"})
  662.     prop _cslLibStr :: if self.CSLNAME == "" {""} else {"-l%13Sn"}
  663.     prop _chipType :: self.CSLNAME
  664.     global gUser :: "USER" { 
  665.         prop Visible :: 0
  666.         prop Writable :: 0
  667.         prop NoGen :: 1
  668.     }
  669.     global gSetOf :: 0 { 
  670.         prop Visible :: 0
  671.         prop Writable :: 0
  672.         prop NoGen :: 1
  673.     }
  674.     global gNumOf :: 0 { 
  675.         prop Visible :: 0
  676.         prop Writable :: 0
  677.         prop NoGen :: 1
  678.     }
  679.     global gDirty :: 0 { 
  680.         prop Visible :: 0
  681.         prop Writable :: 0
  682.         prop NoGen :: 1
  683.     }
  684.     global gInitFlag :: 1 { 
  685.         prop Visible :: 0
  686.         prop Writable :: 0
  687.         prop NoGen :: 1
  688.     }
  689.     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) { 
  690.         prop Visible :: 0
  691.         prop Writable :: 0
  692.         prop NoGen :: 1
  693.     }
  694.     global PRODUCT :: 0 { 
  695.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  696.         prop NoGen :: 1
  697.         prop Visible :: 0
  698.         prop Writable :: 1
  699.         prop EnvField :: 1
  700.     }
  701.     global CALLBACKOBJ :: CLK { 
  702.         prop Visible :: 0
  703.         prop Writable :: 0
  704.         prop NoGen :: 1
  705.     }
  706.     global CHIPCHAIN :: hTimer { 
  707.         prop Visible :: 0
  708.         prop Writable :: 0
  709.         prop NoGen :: 1
  710.     }
  711.     global TRACE :: "CD-01234567" { 
  712.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  713.         prop Label :: "Trace Mask"
  714.         prop NoGen :: 1
  715.         prop Visible :: 0
  716.         prop Writable :: 0
  717.     }
  718.     global BOARD :: "c64xx" { 
  719.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  720.         prop Label :: "Target Board Name"
  721.         prop JSName :: "BOARDNAME"
  722.         prop Visible :: 1
  723.         prop Writable :: 1
  724.         prop NoGen :: 1
  725.     }
  726.     global ROM :: 0 { 
  727.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  728.         prop Label :: "Link to ROM Library"
  729.         prop Visible :: 0
  730.         prop Writable :: 0
  731.         prop NoGen :: 0
  732.     }
  733.     global CPUCLOCK :: 600.000000 { 
  734.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  735.         prop Visible :: 0
  736.         prop Writable :: 0
  737.         prop NoGen :: 1
  738.     }
  739.     global MIPS :: 600.000000 { 
  740.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  741.         prop Style :: 0x04
  742.         prop Format :: "%.4f"
  743.         prop Label :: "DSP Speed In MHz (CLKOUT)"
  744.         prop JSName :: "CLKOUT"
  745.         prop Visible :: 1
  746.         prop Writable :: 1
  747.         prop NoGen :: 1
  748.         prop Set :: ($a = self.MIPS, $b = if (GBL.DSPTYPE == 62) {$1} else {$1 * 2}, $e = "ok", self.MIPS = $1, if (($e = self.setCPUClock($b)) != "ok") {self.MIPS = $a} , $e)
  749.     }
  750.     global OSTYPE :: "BIOS" { 
  751.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  752.         prop Enum :: "BIOS"
  753.         prop Visible :: 0
  754.         prop Writable :: 0
  755.         prop NoGen :: 1
  756.     }
  757.     global DSPTYPE :: 62 { 
  758.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  759.         prop Label :: "DSP Major Type"
  760.         prop JSName :: "DSPTYPE"
  761.         prop Visible :: 0
  762.         prop Writable :: 0
  763.         prop NoGen :: 1
  764.     }
  765.     global DSPSUBTYPE :: 6400 { 
  766.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  767.         prop Enum :: "6400"
  768.         prop Label :: "DSP Type"
  769.         prop Visible :: 1
  770.         prop Writable :: self.CHIPTYPE == "other" || self.CHIPTYPE == "custom"
  771.         prop Set :: (self.DSPSUBTYPE = $1, self.L2Check(), "ok")
  772.         prop NoGen :: 1
  773.     }
  774.     global CHIPTYPE :: "DM642" { 
  775.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  776.         prop Enum :: "DM642,6412,6414,6415,6416,other"
  777.         prop Label :: "Chip Support Library (CSL)"
  778.         prop JSName :: "CHIPTYPE"
  779.         prop NoGen :: 1
  780.         prop Visible :: 1
  781.         prop Writable :: 1
  782.         prop Set :: (if ($1 == "6201" || $1 == "6202" || $1 == "6203" || $1 == "6204" || $1 == "6205") {self.DSPSUBTYPE = 6200} else {if ($1 == "6701") {self.DSPSUBTYPE = 6700} else {if ($1 == "6211") {self.DSPSUBTYPE = 6211} else {if ($1 == "6711" || $1 == "6712" || $1 == "6713" || $1 == "DA610") {self.DSPSUBTYPE = 6711} else {if ($1 == "DM642" || $1 == "6412" || $1 == "6414" || $1 == "6415" || $1 == "6416") {self.DSPSUBTYPE = 6400} }}}}, self.CHIPTYPE = $1, self.CSLNAME = self.setCSLNAME(), if (self.CHIPTYPE == "other" || self.CHIPTYPE == "custom") {self.C621XL2CONFIGURE = 0, self.C641XL2CONFIGURE = 0, self.L2CONFIGURE = 0} , self.L2Check(), $e = "ok", if (GBL.CHIPCHAIN != nil) {$e = GBL.CHIPCHAIN.chipcall()} , $e)
  783.     }
  784.     global CSLNAME :: "cslDM642.lib" { 
  785.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  786.         prop Label :: "Chip Support Library Name"
  787.         prop Visible :: 1
  788.         prop Writable :: self.CHIPTYPE == "custom"
  789.         prop NoGen :: 1
  790.     }
  791.     global DISPCALLCSLCFGINIT :: = (self.CHIPTYPE != "other" && self.CHIPTYPE != "custom") { 
  792.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  793.         prop Label :: "Call CSL_cfgInit Initialization routine"
  794.         prop Visible :: 0
  795.         prop Writable :: self.SUPPORTCSL
  796.         prop NoGen :: 1
  797.     }
  798.     global DSPNAME :: "TMS320C62XX" { 
  799.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  800.         prop Visible :: 0
  801.         prop Writable :: 0
  802.         prop NoGen :: 1
  803.     }
  804.     global DSPARITHMETIC :: = (if (GBL.DSPTYPE == 62 && (GBL.DSPSUBTYPE / 100) == 67) {"FLOAT"} else {"FIXED"}) { 
  805.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  806.         prop Enum :: "FIXED,FLOAT"
  807.         prop Visible :: 0
  808.         prop Writable :: 0
  809.         prop NoGen :: 1
  810.     }
  811.     global DSPWORDSIZE :: = (if (GBL.DSPTYPE == 30 || GBL.DSPTYPE == 40 || GBL.DSPTYPE == 62) {32} else {16}) { 
  812.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  813.         prop Label :: "DSP Word Size"
  814.         prop Visible :: 0
  815.         prop Writable :: 0
  816.         prop NoGen :: 1
  817.     }
  818.     global DSPCHARSIZE :: = (if GBL.DSPTYPE == 62 {8} else {GBL.DSPWORDSIZE}) { 
  819.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  820.         prop Label :: "DSP Byte Size"
  821.         prop Visible :: 0
  822.         prop Writable :: 0
  823.         prop NoGen :: 1
  824.     }
  825.     global DATAPTRSIZE :: = (if (GBL.DSPTYPE == 62) {32} else {if (GBL.DSPTYPE == 54) {16} else {if (GBL.DSPTYPE == 55) {if (GBL.MEMORYMODEL == "SMALL") {16} else {23}} else {if (GBL.DSPTYPE == 28) {22} else {0}}}}) { 
  826.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  827.         prop iComment :: "Size of the Data Pointer"
  828.         prop Visible :: 0
  829.         prop Writable :: 0
  830.         prop NoGen :: 1
  831.     }
  832.     global CODEPTRSIZE :: = (if (GBL.DSPTYPE == 62) {32} else {if (GBL.DSPTYPE == 54) {if (GBL.CALLMODEL == "near") {16} else {24}} else {if (GBL.DSPTYPE == 55) {24} else {if (GBL.DSPTYPE == 28) {22} else {0}}}}) { 
  833.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  834.         prop iComment :: "Size of Code Pointer"
  835.         prop Visible :: 0
  836.         prop Writable :: 0
  837.         prop NoGen :: 1
  838.     }
  839.     global ENDIAN :: "little" { 
  840.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  841.         prop Enum :: "little,big"
  842.         prop Label :: "DSP Endian Mode"
  843.         prop JSName :: "ENDIANMODE"
  844.         prop Visible :: 1
  845.         prop Writable :: 1
  846.         prop NoGen :: 1
  847.         prop Set :: (self.ENDIAN = $1, self.CSLNAME = self.setCSLNAME(), "ok")
  848.     }
  849.     global BIGENDIAN :: = if self.ENDIAN == "little" {0} else {1} { 
  850.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  851.         prop Visible :: 0
  852.         prop Writable :: 0
  853.         prop NoGen :: 0
  854.     }
  855.     global AUTOINIT :: "ROM" { 
  856.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  857.         prop Enum :: "ROM,RAM"
  858.         prop Label :: "C Autoinitialization Model"
  859.         prop Visible :: 0
  860.         prop Writable :: 1
  861.         prop NoGen :: 1
  862.     }
  863.     global USERINIT :: 0 { 
  864.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  865.         prop Label :: "Call User Init Function"
  866.         prop JSName :: "CALLUSERINITFXN"
  867.         prop Visible :: 1
  868.         prop Writable :: 1
  869.         prop NoGen :: 0
  870.         prop Set :: (if ($1 == 0) {self.USERINITFXN = @_FXN_F_nop, self.USERINIT = $1} else {self.USERINIT = $1}, "ok")
  871.     }
  872.     global USERINITFXN :: @_FXN_F_nop { 
  873.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  874.         prop Label :: "User Init Function"
  875.         prop JSName :: "USERINITFXN"
  876.         prop Visible :: 1
  877.         prop Writable :: self.USERINIT
  878.         prop NoGen :: 0
  879.     }
  880.     global OLDAUTOCALCULATE :: 1 { 
  881.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  882.         prop Label :: "previous value for autocalculate"
  883.         prop Visible :: 0
  884.         prop Writable :: 0
  885.         prop NoGen :: 1
  886.     }
  887.     global ENABLEINST :: 1 { 
  888.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  889.         prop Label :: "Enable Real Time Analysis"
  890.         prop JSName :: "ENABLEINST"
  891.         prop Visible :: 1
  892.         prop Writable :: 1
  893.         prop NoGen :: 0
  894.         prop Set :: (if ($1 != self.ENABLEINST) {if ($1) {RTA_toHost.Create("HST"), RTA_fromHost.Create("HST"), RTA_dispatcher.Create("HST"), IDL_busyObj.Create("IDL"), IDL.USEIDLBUSYOBJ = 1, IDL_cpuLoad.Create("IDL"), IDL.AUTOCALCULATE = self.OLDAUTOCALCULATE} else {RTA_toHost.Delete("HST"), RTA_fromHost.Delete("HST"), RTA_dispatcher.Delete("HST"), IDL_busyObj.Delete("IDL"), IDL.USEIDLBUSYOBJ = 0, IDL_cpuLoad.Delete("IDL"), self.OLDAUTOCALCULATE = IDL.AUTOCALCULATE, IDL.AUTOCALCULATE = 0}, self.ENABLEINST = $1} , "ok")
  895.     }
  896.     global CGENERATE :: 1 { 
  897.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  898.         prop Label :: "Do C Generation"
  899.         prop Visible :: 0
  900.         prop Writable :: 1
  901.         prop NoGen :: 1
  902.     }
  903.     global PCC :: "mapped" { 
  904.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  905.         prop Enum :: "mapped,cache enable,cache freeze,cache bypass"
  906.         prop Label :: "Program Cache Control - CSR(PCC)       "
  907.         prop JSName :: "CSRPCC"
  908.         prop Visible :: 1
  909.         prop Writable :: if (GBL.DSPSUBTYPE == 6211 || GBL.DSPSUBTYPE == 6711 || GBL.DSPSUBTYPE == 6400 || GBL.CHIPTYPE == "other" || GBL.CHIPTYPE == "custom") {0} else {1}
  910.         prop NoGen :: 1
  911.         prop TabName :: "620x/670x"
  912.     }
  913.     global DCC :: "mapped" { 
  914.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  915.         prop Enum :: "mapped,cache enable,cache freeze,cache bypass"
  916.         prop Label :: "Data Cache Control"
  917.         prop Visible :: 0
  918.         prop Writable :: 1
  919.         prop NoGen :: 1
  920.         prop TabName :: "620x/670x"
  921.     }
  922.     global PCACHE :: = (if (self.PCC == "mapped") {0x0000} else {if (self.PCC == "cache enable") {0x0040} else {if (self.PCC == "cache freeze") {0x0060} else {0x0080}}}) { 
  923.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  924.         prop Visible :: 0
  925.         prop Writable :: 0
  926.         prop NoGen :: 1
  927.     }
  928.     global DCACHE :: = (if (self.DCC == "mapped") {0x0000} else {if (self.DCC == "cache enable") {0x0008} else {if (self.DCC == "cache freeze") {0x000c} else {0x0010}}}) { 
  929.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  930.         prop Visible :: 0
  931.         prop Writable :: 0
  932.         prop NoGen :: 1
  933.     }
  934.     global CACHE :: = (self.PCACHE | self.DCACHE) { 
  935.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  936.         prop Visible :: 0
  937.         prop Writable :: 0
  938.         prop NoGen :: 0
  939.     }
  940.     global C621XL2CONFIGURE :: 0 { 
  941.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  942.         prop Label :: "621x/671x - Configure L2 Memory Settings"
  943.         prop JSName :: "C621XCONFIGUREL2"
  944.         prop Visible :: 1
  945.         prop Writable :: if (GBL.CHIPTYPE == "6211" || GBL.CHIPTYPE == "6711" || GBL.CHIPTYPE == "6712" || GBL.CHIPTYPE == "6713" || GBL.CHIPTYPE == "DA610") {1} else {0}
  946.         prop TabName :: "621x/671x"
  947.         prop Set :: ($e = "ok", self.C621XL2CONFIGURE = $1, self.L2CONFIGURE = $1, self.PCC = "mapped", $e = self.L2CacheSizeCheck(), $e)
  948.         prop NoGen :: 1
  949.     }
  950.     global C641XL2CONFIGURE :: 1 { 
  951.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  952.         prop Label :: "641x - Configure L2 Memory Settings"
  953.         prop JSName :: "C641XCONFIGUREL2"
  954.         prop Visible :: 1
  955.         prop Writable :: if (GBL.CHIPTYPE == "6414" || GBL.CHIPTYPE == "6415" || GBL.CHIPTYPE == "6416" || GBL.CHIPTYPE == "6412" || GBL.CHIPTYPE == "DM642") {1} else {0}
  956.         prop TabName :: "641x"
  957.         prop Set :: ($e = "ok", self.C641XL2CONFIGURE = $1, self.L2CONFIGURE = $1, self.PCC = "mapped", $e = self.L2CacheSizeCheck(), $e)
  958.         prop NoGen :: 1
  959.     }
  960.     global L2CONFIGURE :: = (self.C621XL2CONFIGURE | self.C641XL2CONFIGURE) { 
  961.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  962.         prop Label :: "Configure L2 Cache Control (c6x1x support)"
  963.         prop Visible :: 0
  964.         prop NoGen :: 0
  965.     }
  966.     global C621XPCC :: "Cache Enabled - Direct Mapped" { 
  967.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  968.         prop Enum :: "Cache Enabled - Direct Mapped"
  969.         prop Label :: "Program Cache Control - CSR(PCC)                     "
  970.         prop Visible :: 1
  971.         prop Writable :: 0
  972.         prop NoGen :: 1
  973.         prop TabName :: "621x/671x"
  974.     }
  975.     global C641XPCC :: "Cache Enabled - Direct Mapped" { 
  976.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  977.         prop Enum :: "Cache Enabled - Direct Mapped"
  978.         prop Label :: "641x - Program Cache Control - CSR(PCC)"
  979.         prop Visible :: 1
  980.         prop Writable :: 0
  981.         prop NoGen :: 1
  982.         prop TabName :: "641x"
  983.     }
  984.     global L2MODEOPTS :: = "SRAM" { 
  985.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  986.         prop Label :: "L2 Mode - CCFG(L2MODE)"
  987.         prop JSName :: "C621XCCFGL2MODE"
  988.         prop Enum :: "SRAM,1-way cache,2-way cache,3-way cache,4-way cache"
  989.         prop Visible :: 1
  990.         prop Writable :: if ((GBL.CHIPTYPE == "6211" || GBL.CHIPTYPE == "6711" || GBL.CHIPTYPE == "6712" || GBL.CHIPTYPE == "6713" || GBL.CHIPTYPE == "DA610") && GBL.L2CONFIGURE == 1) {1} else {0}
  991.         prop NoGen :: 1
  992.         prop TabName :: "621x/671x"
  993.         prop Set :: ($i = self.L2MODEOPTS, self.L2MODEOPTS = $1, $e = self.L2CacheSizeCheck(), if ($e != "ok") {self.L2MODEOPTS = $i} , $e)
  994.     }
  995.     global C641XL2MODEOPTS :: "4-way cache (0k)" { 
  996.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  997.         prop Label :: "641x L2 Mode - CCFG(L2MODE)"
  998.         prop Enum :: "4-way cache (0k),4-way cache (32k),4-way cache (64k),4-way cache (128k),4-way cache (256k)"
  999.         prop JSName :: "C641XCCFGL2MODE"
  1000.         prop Visible :: 1
  1001.         prop Writable :: if ((GBL.DSPSUBTYPE == 6400) && GBL.L2CONFIGURE == 1) {1} else {0}
  1002.         prop NoGen :: 1
  1003.         prop TabName :: "641x"
  1004.         prop Set :: ($i = self.C641XL2MODEOPTS, self.C641XL2MODEOPTS = $1, $e = self.L2CacheSizeCheck(), if ($e != "ok") {self.C641XL2MODEOPTS = $i} , $e)
  1005.     }
  1006.     global L2MODE :: = if (GBL.DSPSUBTYPE == 6400) {self.setC641XL2MODE()} else {self.setL2MODE()} { 
  1007.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  1008.         prop Label :: "L2 Mode - CCFG(L2MODE) Values"
  1009.         prop Enum :: "0,1,2,3,7"
  1010.         prop Visible :: 0
  1011.         prop Writable :: if ((GBL.CHIPTYPE == "6211" || GBL.CHIPTYPE == "6711" || GBL.CHIPTYPE == "6712" || GBL.CHIPTYPE == "6713" || GBL.CHIPTYPE == "DA610") && GBL.L2CONFIGURE == 1) {1} else {0}
  1012.         prop NoGen :: 0
  1013.     }
  1014.     global L2PRIORITY :: 0 { 
  1015.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  1016.         prop Label :: "L2 Requestor Priority - CCFG(P)"
  1017.         prop Enum :: "0,1"
  1018.         prop Visible :: 0
  1019.         prop Writable :: if ((GBL.CHIPTYPE == "6211" || GBL.CHIPTYPE == "6711" || GBL.CHIPTYPE == "6712" || GBL.CHIPTYPE == "6713" || GBL.CHIPTYPE == "DA610") && GBL.L2CONFIGURE == 1) {1} else {0}
  1020.         prop NoGen :: 0
  1021.     }
  1022.     global L2MARMASK :: 0 { 
  1023.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1024.         prop Label :: "L2 MAR0-15 - bitmask used to initialize MARs"
  1025.         prop JSName :: "C621XMAR"
  1026.         prop Format :: "0x%04x"
  1027.         prop Style :: 0x01 | 0x02
  1028.         prop Visible :: 1
  1029.         prop Writable :: if ((GBL.CHIPTYPE == "6211" || GBL.CHIPTYPE == "6711" || GBL.CHIPTYPE == "6712" || GBL.CHIPTYPE == "6713" || GBL.CHIPTYPE == "DA610") && GBL.L2CONFIGURE == 1) {1} else {0}
  1030.         prop NoGen :: 0
  1031.         prop TabName :: "621x/671x"
  1032.     }
  1033.     global SUPPORTCSL :: = self.CHIPTYPE != "other" { 
  1034.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1035.         prop NoGen :: 0
  1036.     }
  1037.     global ENABLEALLTRC :: 1 { 
  1038.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1039.         prop Label :: "Enable All TRC Trace Event Classes"
  1040.         prop JSName :: "ENABLEALLTRC"
  1041.         prop Visible :: 1
  1042.         prop Writable :: 1
  1043.         prop NoGen :: 1
  1044.         prop Set :: (if ($1) {self.TRCMASKVALUE = 0xDBEF} else {self.TRCMASKVALUE = 0x4000}, self.ENABLEALLTRC = $1, "ok")
  1045.     }
  1046.     global TRCMASKVALUE :: 56303 { 
  1047.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1048.         prop NoGen :: 0
  1049.     }
  1050.     global CALLCSLCFGINIT :: = self.DISPCALLCSLCFGINIT { 
  1051.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1052.         prop NoGen :: 0
  1053.     }
  1054.     global CDBPATH :: "" { 
  1055.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  1056.         prop Label :: "CDB search path in COFF file"
  1057.         prop JSName :: "CDBRELATIVEPATH"
  1058.         prop Visible :: 1
  1059.         prop Writable :: 1
  1060.         prop NoGen :: 1
  1061.     }
  1062.     global C641XL2PRIORITY :: 0 { 
  1063.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1064.         prop Visible :: 0
  1065.         prop Writable :: if ((GBL.DSPSUBTYPE == 6400) && GBL.L2CONFIGURE == 1) {1} else {0}
  1066.         prop NoGen :: 0
  1067.         prop TabName :: "641x"
  1068.     }
  1069.     global L2MARMASK1 :: 0 { 
  1070.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1071.         prop Label :: "MAR96-111 - bitmask controls EMIFB CE space"
  1072.         prop JSName :: "C641XMAREMIFB"
  1073.         prop Format :: "0x%04x"
  1074.         prop Style :: 0x01 | 0x02
  1075.         prop Visible :: 1
  1076.         prop Writable :: if ((GBL.DSPSUBTYPE == 6400) && GBL.L2CONFIGURE == 1) {1} else {0}
  1077.         prop NoGen :: 0
  1078.         prop TabName :: "641x"
  1079.     }
  1080.     global L2MARMASK2 :: 0 { 
  1081.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1082.         prop Label :: "MAR128-143 - bitmask controls EMIFA CE0 space"
  1083.         prop JSName :: "C641XMARCE0"
  1084.         prop Format :: "0x%04x"
  1085.         prop Style :: 0x01 | 0x02
  1086.         prop Visible :: 1
  1087.         prop Writable :: if ((GBL.DSPSUBTYPE == 6400) && GBL.L2CONFIGURE == 1) {1} else {0}
  1088.         prop NoGen :: 0
  1089.         prop TabName :: "641x"
  1090.     }
  1091.     global L2MARMASK3 :: 0 { 
  1092.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1093.         prop Label :: "MAR144-159 - bitmask controls EMIFA CE1 space"
  1094.         prop JSName :: "C641XMARCE1"
  1095.         prop Format :: "0x%04x"
  1096.         prop Style :: 0x01 | 0x02
  1097.         prop Visible :: 1
  1098.         prop Writable :: if ((GBL.DSPSUBTYPE == 6400) && GBL.L2CONFIGURE == 1) {1} else {0}
  1099.         prop NoGen :: 0
  1100.         prop TabName :: "641x"
  1101.     }
  1102.     global L2MARMASK4 :: 0 { 
  1103.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1104.         prop Label :: "MAR160-175 - bitmask controls EMIFA CE2 space"
  1105.         prop JSName :: "C641XMARCE2"
  1106.         prop Format :: "0x%04x"
  1107.         prop Style :: 0x01 | 0x02
  1108.         prop Visible :: 1
  1109.         prop Writable :: if ((GBL.DSPSUBTYPE == 6400) && GBL.L2CONFIGURE == 1) {1} else {0}
  1110.         prop NoGen :: 0
  1111.         prop TabName :: "641x"
  1112.     }
  1113.     global L2MARMASK5 :: 0 { 
  1114.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1115.         prop Label :: "MAR176-191 - bitmask controls EMIFA CE3 space"
  1116.         prop JSName :: "C641XMARCE3"
  1117.         prop Format :: "0x%04x"
  1118.         prop Style :: 0x01 | 0x02
  1119.         prop Visible :: 1
  1120.         prop Writable :: if ((GBL.DSPSUBTYPE == 6400) && GBL.L2CONFIGURE == 1) {1} else {0}
  1121.         prop NoGen :: 0
  1122.         prop TabName :: "641x"
  1123.     }
  1124.     global L2REQPRIORITY :: "urgent" { 
  1125.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  1126.         prop Label :: "641x L2 Requestor Priority Queue - CCFG(P)"
  1127.         prop JSName :: "C641XCCFGP"
  1128.         prop Enum :: "urgent,high,medium,low"
  1129.         prop Visible :: 1
  1130.         prop Writable :: if ((GBL.DSPSUBTYPE == 6400) && GBL.L2CONFIGURE == 1) {1} else {0}
  1131.         prop NoGen :: 1
  1132.         prop Set :: (self.L2REQPRIORITY = $1, if (self.L2REQPRIORITY == "urgent") {self.C641XL2PRIORITY = 0} else {if (self.L2REQPRIORITY == "high") {self.C641XL2PRIORITY = 1} else {if (self.L2REQPRIORITY == "medium") {self.C641XL2PRIORITY = 2} else {self.C641XL2PRIORITY = 3}}}, "ok")
  1133.         prop TabName :: "641x"
  1134.     }
  1135.     global L2CONFIGALLOC :: 0 { 
  1136.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1137.         prop Label :: "Configure Priority Queues"
  1138.         prop JSName :: "C641XSETL2ALLOC"
  1139.         prop Visible :: 1
  1140.         prop Writable :: (GBL.DSPSUBTYPE == 6400 && GBL.L2CONFIGURE == 1)
  1141.         prop NoGen :: 0
  1142.         prop TabName :: "641x"
  1143.     }
  1144.     global L2ALLOC0 :: 6 { 
  1145.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  1146.         prop Label :: "Max L2 Transfer Requests on URGENT Queue (L2ALLOC0)"
  1147.         prop JSName :: "C641XL2ALLOC0"
  1148.         prop Enum :: "0,1,2,3,4,5,6,7"
  1149.         prop Visible :: 1
  1150.         prop Writable :: if (GBL.DSPSUBTYPE == 6400 && GBL.L2CONFIGURE == 1 && GBL.L2CONFIGALLOC == 1) {1} else {0}
  1151.         prop NoGen :: 1
  1152.         prop TabName :: "641x"
  1153.     }
  1154.     global L2ALLOC1 :: 2 { 
  1155.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  1156.         prop Label :: "Max L2 Transfer Requests on HIGH Queue (L2ALLOC1)"
  1157.         prop JSName :: "C641XL2ALLOC1"
  1158.         prop Enum :: "0,1,2,3,4,5,6,7"
  1159.         prop Visible :: 1
  1160.         prop Writable :: if (GBL.DSPSUBTYPE == 6400 && GBL.L2CONFIGURE == 1 && GBL.L2CONFIGALLOC == 1) {1} else {0}
  1161.         prop NoGen :: 1
  1162.         prop TabName :: "641x"
  1163.     }
  1164.     global L2ALLOC2 :: 2 { 
  1165.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  1166.         prop Label :: "Max L2 Transfer Requests on MEDIUM Queue (L2ALLOC2)"
  1167.         prop JSName :: "C641XL2ALLOC2"
  1168.         prop Enum :: "0,1,2,3,4,5,6,7"
  1169.         prop Visible :: 1
  1170.         prop Writable :: if (GBL.DSPSUBTYPE == 6400 && GBL.L2CONFIGURE == 1 && GBL.L2CONFIGALLOC == 1) {1} else {0}
  1171.         prop NoGen :: 1
  1172.         prop TabName :: "641x"
  1173.     }
  1174.     global L2ALLOC3 :: 2 { 
  1175.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  1176.         prop Label :: "Max L2 Transfer Requests on LOW Queue (L2ALLOC3)"
  1177.         prop JSName :: "C641XL2ALLOC3"
  1178.         prop Enum :: "0,1,2,3,4,5,6,7"
  1179.         prop Visible :: 1
  1180.         prop Writable :: if (GBL.DSPSUBTYPE == 6400 && GBL.L2CONFIGURE == 1 && GBL.L2CONFIGALLOC == 1) {1} else {0}
  1181.         prop NoGen :: 1
  1182.         prop TabName :: "641x"
  1183.     }
  1184.     global L2ALLOC :: = ((self.L2ALLOC0) | (self.L2ALLOC1 << 4) | (self.L2ALLOC2 << 8) | (self.L2ALLOC3 << 12)) { 
  1185.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1186.         prop Visible :: 0
  1187.         prop NoGen :: 0
  1188.     }
  1189. }
  1190. type MEM {
  1191.     isa ObjectMgr
  1192.     prop Label :: "MEM - Memory Section Manager"
  1193.     prop name :: "MEM"
  1194.     prop DependsOn :: "SEM"
  1195.     prop IsContainedIn :: SYSTEM
  1196.     prop GlobalIcon :: 115
  1197.     prop InstanceIcon :: 116
  1198.     prop GlobalHelpTopic :: (108)
  1199.     prop InstanceHelpTopic :: (208)
  1200.     prop InstancePropertyPage :: ("{3D658E70-05E7-11d0-BD44-0020AFEE33C8}")
  1201.     prop GlobalPropertyPage :: ("{3D658E71-05E7-11d0-BD44-0020AFEE33C8}")
  1202.     prop GenLinkPrologue :: (if (GBL.DSPTYPE == 55) {"-stack 0x%1xn-sysstack 0x%2xnnSECTIONS { .sysstack : block(0x20000) fill = 0xfeeb {%12tnGBL_sysstackbeg = .;n*(.sysstack)nGBL_sysstackend = GBL_sysstackbeg + 0x%2x -1 ;%12tn _HWI_SYSSTKTOP = GBL_sysstackbeg; %12tn _HWI_SYSSTKBOTTOM =
  1203. (GBL_sysstackend+1);n%8t} > %3s}%0tnnMEMORY {%4t, _cmd55stksz, _cmd55systksz, _sysstackSeg"} else {"-stack 0x%1xnMEMORY {%4t, _stackSize"})
  1204.     prop _stackSize :: MEM.STACKSIZE
  1205.     prop AllocType :: (if (self.REUSE == 0 && self.USERCMD == 0) {"19, _argsString, _argsSeg, _midPlace, 
  1206. _sysdataString, _sysdataSeg, _thirdPlace, 
  1207. _trcinitString, _trcinitSeg, _midPlace, 
  1208. _gblinitString, _gblinitSeg, _midPlace, 
  1209. _memObjString, _memObjSeg, _midPlace, 
  1210. _sysinitString, _initSeg, _sysinitPlace, 
  1211. _sysregsString, _regsSeg, _midPlace, 
  1212. _bssString, _bssSeg, _firstPlace, 
  1213. _farString, _farSeg, _secondPlace, 
  1214. _cinitString, _cinitSeg, _midPlace, 
  1215. _pinitString, _pinitSeg, _midPlace, 
  1216. _dataString, _dataSeg, _midPlace, 
  1217. _constString, _constSeg, _midPlace, 
  1218. _switchString, _switchSeg, _midPlace, 
  1219. _cioString, _cioSeg, _midPlace, 
  1220. _textString, _textSeg, _midPlace, 
  1221. _frtString, _frtSeg, _midPlace, 
  1222. _biosString, _biosSeg, _midPlace, 
  1223. _stackString, _stackSeg, _midPlace"} else {if (self.REUSE == 0 && self.USERCMD == 1) {"9, _argsString, _argsSeg, _midPlace, 
  1224. _sysdataString, _sysdataSeg, _thirdPlace, 
  1225. _trcinitString, _trcinitSeg, _midPlace, 
  1226. _gblinitString, _gblinitSeg, _midPlace, 
  1227. _memObjString, _memObjSeg, _midPlace, 
  1228. _sysinitString, _initSeg, _sysinitPlace, 
  1229. _sysregsString, _regsSeg, _midPlace, 
  1230. _biosString, _biosSeg, _midPlace, 
  1231. _stackString, _stackSeg, _midPlace"} else {if (self.REUSE == 1 && self.USERCMD == 0) {"18, _argsString, _argsSeg, _midPlace, 
  1232. _sysdataString, _sysdataSeg, _thirdPlace, 
  1233. _trcinitString, _trcinitSeg, _midPlace, 
  1234. _gblinitString, _gblinitSeg, _midPlace, 
  1235. _memObjString, _memObjSeg, _midPlace, 
  1236. _sysregsString, _regsSeg, _midPlace, 
  1237. _bssString, _bssSeg, _firstPlace, 
  1238. _farString, _farSeg, _secondPlace, 
  1239. _cinitString, _cinitSeg, _midPlace, 
  1240. _pinitString, _pinitSeg, _midPlace, 
  1241. _dataString, _dataSeg, _midPlace, 
  1242. _constString, _constSeg, _midPlace, 
  1243. _switchString, _switchSeg, _midPlace, 
  1244. _cioString, _cioSeg, _midPlace, 
  1245. _textString, _textSeg, _midPlace, 
  1246. _frtString, _frtSeg, _midPlace, 
  1247. _biosString, _biosSeg, _midPlace, 
  1248. _stackString, _stackSeg, _midPlace"} else {"8, _argsString, _argsSeg, _midPlace, 
  1249. _sysdataString, _sysdataSeg, _thirdPlace, 
  1250. _trcinitString, _trcinitSeg, _midPlace, 
  1251. _gblinitString, _gblinitSeg, _midPlace, 
  1252. _memObjString, _memObjSeg, _midPlace, 
  1253. _sysregsString, _regsSeg, _midPlace, 
  1254. _biosString, _biosSeg, _midPlace, 
  1255. _stackString, _stackSeg, _midPlace"}}})
  1256.     prop _firstPlace :: 0
  1257.     prop _secondPlace :: 0 + 1
  1258.     prop _thirdPlace :: 0 + 2
  1259.     prop _midPlace :: (0x7fffffff / 2)
  1260.     prop _sysinitPlace :: (0x7fffffff / 2)
  1261.     prop _argsString :: ("%8t .args: fill=0 {%12tn *(.args)n . += 0x%1x;%8tn }, _argsSize")
  1262.     prop _bssString :: ("%8t .bss:     {}")
  1263.     prop _farString :: ("%8t .far:     {}")
  1264.     prop _cinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.CINITSEG == MEM.LOADCINITSEG) {"%8t .cinit:    {}"} else {"%8t .cinit:   {} load > %1s, run, _loadcinitSeg"}} else {"%8t .cinit:    {}"})
  1265.     prop _pinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.PINITSEG == MEM.LOADPINITSEG) {"%8t .pinit:   {}"} else {"%8t .pinit:   {} load > %1s, run, _loadpinitSeg"}} else {"%8t .pinit:   {}"})
  1266.     prop _trcinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.TRCINITSEG == MEM.LOADTRCINITSEG) {"%8t .trcdata:   {}"} else {"%8t .trcdata:   {} load > %1s, run, _loadtrcinitSeg"}} else {"%8t .trcdata:    {}"})
  1267.     prop _gblinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.BIOSINITSEG == MEM.LOADBIOSINITSEG) {"%8t .gblinit:   {}"} else {"%8t .gblinit:   {} load > %1s, run, _loadgblinitSeg"}} else {"%8t .gblinit:    {}"})
  1268.     prop _dataString :: ("%8t .data:    {}")
  1269.     prop _constString :: (if (self.ENABLELOADSEG == 1) {if (MEM.CONSTSEG == MEM.LOADCONSTSEG) {"%8t .const:   {}"} else {if ((62 == 54) || (62 == 28)) {"%8t .const:   {} load > %1s PAGE %2s, run, _loadconstSeg, _pg"} else {"%8t .const: {} load > %1s, run, _loadconstSeg"}}} else {"%8t .const:    {}"})
  1270.     prop _switchString :: (if (self.ENABLELOADSEG == 1) {if (MEM.SWITCHSEG == MEM.LOADSWITCHSEG) {"%8t .switch:   {}"} else {"%8t .switch:   {} load > %1s, run, _loadswitchSeg"}} else {"%8t .switch:    {}"})
  1271.     prop _sysmemString :: ("%8t .sysmem:  {}")
  1272.     prop _cioString :: ("%8t .cio:     {}")
  1273.     prop _memObjString :: ("%8t .mem:    {}")
  1274.     prop _sysdataString :: (if ((GBL.ROM == 0) && (GBL.DSPTYPE == 54)) {"%8t .sysdata: align = 128 {%12tn GBL_A_SYSPAGE = .;n GBL_A_SYSDP = GBL_A_SYSPAGE >> 7;n %8t }"} else {"%8t .sysdata: {}"})
  1275.     prop _sysinitString :: (if (self.ENABLELOADSEG == 1) {if (MEM.INITSEG == MEM.LOADINITSEG) {"%8t .sysinit:   {}"} else {"%8t .sysinit:   {} load > %1s, run, _loadinitSeg"}} else {"%8t .sysinit:    {}"})
  1276.     prop _sysregsString :: ("%8t .sysregs: {}")
  1277.     prop _textString :: (if (self.ENABLELOADSEG == 1) {if (MEM.TEXTSEG == MEM.LOADTEXTSEG) {"%8t .text:    {}"} else {"%8t .text:    {} load > %1s, run, _loadtextSeg"}} else {"%8t .text:    {}"})
  1278.     prop _frtString :: ("%8t frt:    {}")
  1279.     prop _biosString :: (if (self.ENABLELOADSEG == 1) {if (MEM.BIOSSEG == MEM.LOADBIOSSEG) {"%8t .bios:    {}"} else {"%8t .bios:    {} load > %1s, run, _loadbiosSeg"}} else {"%8t .bios:    {}"})
  1280.     prop _stackString :: (if (GBL.DSPTYPE == 62) {"%8t .stack: fill=0xc0ffee {%12tn GBL_stackbeg = .;n *(.stack)n GBL_stackend = GBL_stackbeg + 0x%1x - 1;%12tn _HWI_STKBOTTOM = GBL_stackbeg + 0x%1x - 4 & ~7;%12tn _HWI_STKTOP = GBL_stackbeg;%8tn }, _stackSize, _stackSize"} else {if (GBL.DSPTYPE == 54) {"%8t .stack: fill=0xbeef {%12tn GBL_stackbeg = .;n *(.stack)n GBL_stackend = ((GBL_stackbeg + 0x%1x - 1) & 0xfffe) ;%8tn _HWI_STKBOTTOM = GBL_stackend;%12tn _HWI_STKTOP = GBL_stackbeg;%8tn }, _stackSize"} else {if (GBL.DSPTYPE == 55) {"%8t .stack: block(0x20000) fill=0xbeef {%12tn GBL_stackbeg = .;n *(.stack)n GBL_stackend = (GBL_stackbeg + 0x%1x - 1) ;%12tn _HWI_STKBOTTOM = (GBL_stackend+1);%12tn _HWI_STKTOP = (GBL_stackbeg);%8tn }, _cmd55stksz"} else {"%8t .stack: fill=0xbeef {%12tn GBL_stackbeg = .;n *(.stack)n GBL_stackend = GBL_stackbeg + 0x%1x - 1;%8tn _HWI_STKBOTTOM = GBL_stackbeg;%12tn _HWI_STKTOP = (GBL_stackend + 1);%8tn }, _stackSize"}}})
  1281.     prop _memHdrSize :: 8
  1282.     prop GenLinkEpilogue :: ("%0t}")
  1283.     prop _stackSeg :: MEM.STACKSEG
  1284.     prop _textSeg :: MEM.TEXTSEG
  1285.     prop _frtSeg :: MEM.TEXTSEG
  1286.     prop _biosSeg :: MEM.BIOSSEG
  1287.     prop _dataSeg :: MEM.DATASEG
  1288.     prop _cioSeg :: MEM.CIOSEG
  1289.     prop _sysmemSeg :: MEM.SYSMEMSEG
  1290.     prop _constSeg :: MEM.CONSTSEG
  1291.     prop _initSeg :: MEM.INITSEG
  1292.     prop _pinitSeg :: MEM.PINITSEG
  1293.     prop _trcinitSeg :: MEM.TRCINITSEG
  1294.     prop _gblinitSeg :: MEM.BIOSINITSEG
  1295.     prop _regsSeg :: MEM.SYSDATASEG
  1296.     prop _sysdataSeg :: MEM.SYSDATASEG
  1297.     prop _argsSeg :: MEM.ARGSSEG
  1298.     prop _argsSize :: MEM.ARGSSIZE
  1299.     prop _bssSeg :: MEM.BSSSEG
  1300.     prop _farSeg :: MEM.FARSEG
  1301.     prop _cinitSeg :: MEM.CINITSEG
  1302.     prop _memObjSeg :: MEM.CFGOBJSEG
  1303.     prop _switchSeg :: MEM.SWITCHSEG
  1304.     prop _loadtextSeg :: MEM.LOADTEXTSEG
  1305.     prop _loadbiosSeg :: MEM.LOADBIOSSEG
  1306.     prop _loadconstSeg :: MEM.LOADCONSTSEG
  1307.     prop _loadinitSeg :: MEM.LOADINITSEG
  1308.     prop _loadpinitSeg :: MEM.LOADPINITSEG
  1309.     prop _loadtrcinitSeg :: MEM.LOADTRCINITSEG
  1310.     prop _loadgblinitSeg :: MEM.LOADBIOSINITSEG
  1311.     prop _loadcinitSeg :: MEM.LOADCINITSEG
  1312.     prop _loadswitchSeg :: MEM.LOADSWITCHSEG
  1313.     prop AllocInst :: (if (self.iAllocHeap == 1) {"1, _instAllocDesc, _objMemSeg, _placement"} )
  1314.     prop _instAllocDesc :: (if self.INITSEG.iAllocHeap && self.REUSE && self.INITSEG == self {"%8t .%0r$heap: {%12tn %0r$B = .;n%12tn _%0r_base = .;n . += 0x%2x;n *(.sysinit)n %0r$L = . + 0x%3x - %0r$B;n _%0r_length = . + 0x%3x - %0r$B;n . += 0x%1x;%8tn }, _heapsize, _sysinitgap, _heaplen"} else {"%8t .%0r$heap: {%12tn %0r$B = .;n _%0r_base = .;n %0r$L = 0x%2x;n _%0r_length = 0x%2x;n . += 0x%1x;%8tn }, _heapsize, _heaplen"})
  1315.     prop _objMemSeg :: self
  1316.     prop _placement :: 0x7fffffff - 1
  1317.     prop _heapsize :: (self.iHeapSize)
  1318.     prop _heaplen :: (self.iHeapSize)
  1319.     prop _sysinitgap :: 2 * 4
  1320.     prop GenInstLink :: (if GBL.DSPTYPE == 62 {"%0r %16t: origin = 0x%1x, %40tlen = 0x%2x%4t, _origin, _len"} else {if GBL.DSPTYPE == 55 {"%0r: %16torigin = 0x%1x, %40tlen = 0x%2x%4t, _cmd55origin, _cmd55len"} else {"PAGE %3d: %14t%0r: %26torigin = 0x%1x, %50tlen = 0x%2x%4t, _origin, _len, _page"}})
  1321.     prop localInit :: ($d = "ok", scan ($i; MEM) {if ($i.space == "code" && $i.iAllocHeap == 1) {$d = self.error("Code memory cannot have a heap")} }, if (self.SEGZERO.iAllocHeap == 1) {self.SEGZERO.iReqHeapCount++} else {$d = self.error("Segment for DSP/BIOS objects must be a memory segment with a heap")}, if (self.MALLOCSEG.iAllocHeap == 1) {self.MALLOCSEG.iReqHeapCount++} else {$d = self.error("Segment for malloc()/free() must be a memory segment with a heap")}, $d)
  1322.     prop _page :: (self.page)
  1323.     prop _origin :: (self.base)
  1324.     prop _len :: (self.len)
  1325.     prop maxObjs :: (32767)
  1326.     prop codeMember :: (if GBL.DSPTYPE == 62 {(($1.space == "code") || ($1.space == "code/data"))} else {if GBL.DSPTYPE == 54 {($1.space == "code")} else {if GBL.DSPTYPE == 28 {($1.space == "code")} else {($1.space == "code/data")}}})
  1327.     prop dataMember :: (if GBL.DSPTYPE == 62 {($1.space == "data" || $1.space == "code/data") && $1 != MEM_NULL} else {if GBL.DSPTYPE == 54 {(($1.space != "code") && ($1 != MEM_NULL)) && $1.space != "io"} else {if GBL.DSPTYPE == 28 {(($1.space != "code") && ($1 != MEM_NULL)) && $1.space != "io"} else {(($1.space == "code/data") && ($1 != MEM_NULL))}}})
  1328.     prop dataNullMember :: (if GBL.DSPTYPE == 62 {$1.space == "data" || $1.space == "code/data"} else {if GBL.DSPTYPE == 54 {$1.space != "code" && $1.space != "io"} else {if GBL.DSPTYPE == 28 {$1.space != "code" && $1.space != "io"} else {$1.space == "code/data"}}})
  1329.     prop dataCodeMember :: (if GBL.DSPTYPE == 62 {($1.space == "data" || $1.space == "code/data") && $1 != MEM_NULL} else {if GBL.DSPTYPE == 54 {$1.space == "code" && $1 != MEM_NULL} else {if GBL.DSPTYPE == 28 {$1.space == "code" && $1 != MEM_NULL} else {$1.space == "code/data" && $1 != MEM_NULL}}})
  1330.     prop memWritable :: (self.iIsModifiable && self.iDelUser != "MEM")
  1331.     prop validate :: ($e = self.checkMemOverlap($1), if ($e == "ok") {$e = self.checkHeapSize($1)} , $e)
  1332.     prop checkHeapSize :: ($e = "ok", if (MEM.NOHEAPS == 0) {if ($1.iAllocHeap && $1 != MEM_NULL) {if ($1.iHeapSize > $1.len) {$e = ("MEM segment %s: heap cannot be larger than the length of segment that contains it.")} } } , $e)
  1333.     prop checkMemOverlap :: ($e = "ok", if ($1 != MEM_NULL && $1.iIsUsed == 1) {if ($1.len == 0) {$a = $1.base} else {$a = ($1.base + $1.len - 1)}, scan ($j; MEM) {if ($1 != $j && $j != MEM_NULL && $j.iIsUsed == 1 && (GBL.DSPTYPE == 62 || GBL.DSPTYPE == 55 || $1.space == $j.space)) {if (!($j == CACHE_L2 && GBL.L2CONFIGURE == 0)) {$b = $j.base, if ($j.len == 0) {$c = $j.base} else {$c = ($j.base + $j.len - 1)}, if ($a >= $b && $1.base <= $c) {$e = ("MEM segment %s: overlaps with another segment or cache configuration."), break} } } }} , $e)
  1334.     prop checkHeapId :: ($e = "ok", scan ($i; MEM) {if ($i.iAllocHeap == 1 && $i.iUserHeapId == 1 && $i.iHeapId == $1 && $i.iHeapId != @segment_name) {$e = self.error("This identifier label is already in use"), break} }, $e)
  1335.     global gUser :: "USER" { 
  1336.         prop Visible :: 0
  1337.         prop Writable :: 0
  1338.         prop NoGen :: 1
  1339.     }
  1340.     global gSetOf :: 0 { 
  1341.         prop Visible :: 0
  1342.         prop Writable :: 0
  1343.         prop NoGen :: 1
  1344.     }
  1345.     global gNumOf :: 2 { 
  1346.         prop Visible :: 0
  1347.         prop Writable :: 0
  1348.         prop NoGen :: 1
  1349.     }
  1350.     global gDirty :: 1 { 
  1351.         prop Visible :: 0
  1352.         prop Writable :: 0
  1353.         prop NoGen :: 1
  1354.     }
  1355.     global gInitFlag :: 1 { 
  1356.         prop Visible :: 0
  1357.         prop Writable :: 0
  1358.         prop NoGen :: 1
  1359.     }
  1360.     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) { 
  1361.         prop Visible :: 0
  1362.         prop Writable :: 0
  1363.         prop NoGen :: 1
  1364.     }
  1365.     global CALLBACKOBJ :: nil { 
  1366.         prop Visible :: 0
  1367.         prop Writable :: 0
  1368.         prop NoGen :: 1
  1369.     }
  1370.     global gNumHeap :: = ($a = 0, scan ($i; MEM) {if ($i != MEM_NULL) {$a += $i.iAllocHeap} }, $a) { 
  1371.         prop NoGen :: 0
  1372.     }
  1373.     global REUSE :: = (if self.INITSEG.space != "code" && self.INITSEG.iAllocHeap == 1 {self.SAVEREUSE} else {0}) { 
  1374.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1375.         prop Label :: "Reuse Startup Code Space"
  1376.         prop JSName :: "REUSECODESPACE"
  1377.         prop Visible :: 1
  1378.         prop Writable :: self.INITSEG.space != "code" && self.INITSEG.iAllocHeap == 1
  1379.         prop NoGen :: 1
  1380.         prop Set :: (self.SAVEREUSE = $1, "ok")
  1381.     }
  1382.     global SAVEREUSE :: 0 { 
  1383.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1384.         prop NoGen :: 1
  1385.     }
  1386.     global doCheckOverlap :: 1 { 
  1387.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1388.         prop Visible :: 0
  1389.         prop Writable :: 1
  1390.         prop NoGen :: 1
  1391.     }
  1392.     global MAPSELECT :: "Map 1" { 
  1393.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  1394.         prop Label :: "Map Mode"
  1395.         prop JSName :: "MAPMODE"
  1396.         prop Enum :: "Map 0,Map 1"
  1397.         prop Visible :: 0
  1398.         prop Writable :: 0
  1399.         prop NoGen :: 1
  1400.     }
  1401.     global ARGSSIZE :: 4 { 
  1402.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1403.         prop Format :: "0x%04x"
  1404.         prop Style :: 0x01 | 0x02
  1405.         prop Label :: "Argument Buffer Size"
  1406.         prop JSName :: "ARGSSIZE"
  1407.         prop Visible :: 1
  1408.         prop Writable :: 1
  1409.         prop NoGen :: 1
  1410.         prop Set :: (if ($1 < 4) {self.error("The 'arguments' section must have at least 4 words.")} else {self.ARGSSIZE = $1, "ok"})
  1411.     }
  1412.     global ARGSSEG :: ISRAM { 
  1413.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1414.         prop MemberType :: MEM
  1415.         prop MemberTest :: self.dataMember($1)
  1416.         prop Label :: "Argument Buffer Section (.args)"
  1417.         prop JSName :: "ARGSSEG"
  1418.         prop Visible :: 1
  1419.         prop Writable :: 1
  1420.         prop NoGen :: 1
  1421.         prop TabName :: "BIOS Data"
  1422.     }
  1423.     global BIOSSEG :: ISRAM { 
  1424.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1425.         prop MemberType :: MEM
  1426.         prop MemberTest :: self.codeMember($1)
  1427.         prop Label :: "BIOS Code Section (.bios)"
  1428.         prop JSName :: "BIOSSEG"
  1429.         prop Visible :: 1
  1430.         prop Writable :: 1
  1431.         prop NoGen :: 1
  1432.         prop TabName :: "BIOS Code"
  1433.     }
  1434.     global STACKSIZE :: 1024 { 
  1435.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1436.         prop Format :: "0x%04x"
  1437.         prop Style :: 0x01 | 0x02
  1438.         prop Label :: "Stack Size (MAUs)"
  1439.         prop JSName :: "STACKSIZE"
  1440.         prop Visible :: 1
  1441.         prop Writable :: 1
  1442.         prop NoGen :: 1
  1443.         prop Set :: (self.STACKSIZE = $1, "ok")
  1444.         prop PropSetOkUserMsg :: if (MEM.STACKSIZE < GlobalStatus.MinStackSize) {"Warning: You are setting the stack size to a value that is less than the Estimated Minimum Stack Size!"} else {"ok"}
  1445.     }
  1446.     global USERCMD :: 0 { 
  1447.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1448.         prop Label :: "User .cmd File For Non-DSP/BIOS Sections"
  1449.         prop JSName :: "USERCOMMANDFILE"
  1450.         prop Visible :: 1
  1451.         prop Writable :: 1
  1452.         prop NoGen :: 1
  1453.         prop TabName :: "Compiler Sections"
  1454.     }
  1455.     global STACKSEG :: ISRAM { 
  1456.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1457.         prop MemberType :: MEM
  1458.         prop MemberTest :: self.dataMember($1)
  1459.         prop Label :: "Stack Section (.stack)"
  1460.         prop JSName :: "STACKSEG"
  1461.         prop Visible :: 1
  1462.         prop Writable :: 1
  1463.         prop NoGen :: 1
  1464.         prop TabName :: "BIOS Data"
  1465.         prop Set :: (if (GBL.DSPTYPE == 55) {(MEM.STACKSEG = $1), (MEM.SYSSTACKSEG = $1)} else {(MEM.STACKSEG = $1)}, "ok")
  1466.     }
  1467.     global ENABLELOADSEG :: 0 { 
  1468.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1469.         prop Label :: "Specify Separate Load Addresses"
  1470.         prop JSName :: "ENABLELOADADDR"
  1471.         prop Visible :: 1
  1472.         prop Writable :: 1
  1473.         prop NoGen :: 1
  1474.         prop TabName :: "Load Address"
  1475.     }
  1476.     global LOADBIOSSEG :: ISRAM { 
  1477.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1478.         prop MemberType :: MEM
  1479.         prop MemberTest :: self.codeMember($1)
  1480.         prop Label :: "Load Address - BIOS Code Section (.bios)"
  1481.         prop JSName :: "LOADBIOSSEG"
  1482.         prop Visible :: 1
  1483.         prop Writable :: (self.ENABLELOADSEG == 1)
  1484.         prop NoGen :: 1
  1485.         prop TabName :: "Load Address"
  1486.     }
  1487.     global INITSEG :: ISRAM { 
  1488.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1489.         prop MemberType :: MEM
  1490.         prop MemberTest :: self.codeMember($1)
  1491.         prop Label :: "Startup Code Section (.sysinit)"
  1492.         prop JSName :: "SYSINITSEG"
  1493.         prop Visible :: 1
  1494.         prop Writable :: 1
  1495.         prop NoGen :: 1
  1496.         prop TabName :: "BIOS Code"
  1497.     }
  1498.     global LOADINITSEG :: ISRAM { 
  1499.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1500.         prop MemberType :: MEM
  1501.         prop MemberTest :: self.codeMember($1)
  1502.         prop Label :: "Load Address - Startup Code Section (.sysinit)"
  1503.         prop JSName :: "LOADSYSINITSEG"
  1504.         prop Visible :: 1
  1505.         prop Writable :: (self.ENABLELOADSEG == 1)
  1506.         prop NoGen :: 1
  1507.         prop TabName :: "Load Address"
  1508.     }
  1509.     global BIOSINITSEG :: ISRAM { 
  1510.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1511.         prop MemberType :: MEM
  1512.         prop MemberTest :: self.dataCodeMember($1)
  1513.         prop Label :: "DSP/BIOS Init Tables (.gblinit)"
  1514.         prop JSName :: "GBLINITSEG"
  1515.         prop Visible :: 1
  1516.         prop Writable :: 1
  1517.         prop NoGen :: 1
  1518.         prop TabName :: "BIOS Data"
  1519.     }
  1520.     global TRCINITSEG :: ISRAM { 
  1521.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1522.         prop MemberType :: MEM
  1523.         prop MemberTest :: self.dataCodeMember($1)
  1524.         prop Label :: "TRC Initial Value (.trcdata)"
  1525.         prop JSName :: "TRCDATASEG"
  1526.         prop Visible :: 1
  1527.         prop Writable :: 1
  1528.         prop NoGen :: 1
  1529.         prop TabName :: "BIOS Data"
  1530.     }
  1531.     global LOADBIOSINITSEG :: ISRAM { 
  1532.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1533.         prop MemberType :: MEM
  1534.         prop MemberTest :: self.dataCodeMember($1)
  1535.         prop Label :: "Load Address - DSP/BIOS Init Tables (.gblinit)"
  1536.         prop JSName :: "LOADGBLINITSEG"
  1537.         prop Visible :: 1
  1538.         prop Writable :: (self.ENABLELOADSEG == 1)
  1539.         prop NoGen :: 1
  1540.         prop TabName :: "Load Address"
  1541.     }
  1542.     global LOADTRCINITSEG :: = self.TRCINITSEG { 
  1543.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1544.         prop MemberType :: MEM
  1545.         prop MemberTest :: self.dataCodeMember($1)
  1546.         prop Label :: "Load Address - TRC Initial Value (.trcdata)"
  1547.         prop JSName :: "LOADTRCDATASEG"
  1548.         prop Visible :: 1
  1549.         prop Writable :: (self.ENABLELOADSEG == 1)
  1550.         prop NoGen :: 1
  1551.         prop TabName :: "Load Address"
  1552.     }
  1553.     global SYSDATASEG :: ISRAM { 
  1554.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1555.         prop MemberType :: MEM
  1556.         prop MemberTest :: self.dataMember($1)
  1557.         prop Label :: "DSP/BIOS Kernel State (.sysdata)"
  1558.         prop JSName :: "SYSDATASEG"
  1559.         prop Visible :: 1
  1560.         prop Writable :: 1
  1561.         prop NoGen :: 1
  1562.         prop TabName :: "BIOS Data"
  1563.     }
  1564.     global CFGOBJSEG :: ISRAM { 
  1565.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1566.         prop MemberType :: MEM
  1567.         prop MemberTest :: self.dataMember($1)
  1568.         prop Label :: "DSP/BIOS Conf Sections (.*obj)"
  1569.         prop JSName :: "OBJSEG"
  1570.         prop Visible :: 1
  1571.         prop Writable :: 1
  1572.         prop NoGen :: 1
  1573.         prop TabName :: "BIOS Data"
  1574.     }
  1575.     global NOHEAPS :: 1 { 
  1576.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1577.         prop Label :: "No Dynamic Memory Heaps"
  1578.         prop JSName :: "NOMEMORYHEAPS"
  1579.         prop Visible :: 1
  1580.         prop Writable :: 1
  1581.         prop NoGen :: 1
  1582.         prop Set :: (if ($1) {self.SEGZERO.iReqHeapCount--, self.SEGZERO = MEM_NULL, self.MALLOCSEG.iReqHeapCount--, self.MALLOCSEG = MEM_NULL, TSK.STACKSEG.iReqHeapCount--, TSK.STACKSEG = MEM_NULL, scan ($i; MEM) {if ($i.iAllocHeap && $i != MEM_NULL) {$i.iAllocHeap = 0, $i.iHeapSize = 0} }} , self.NOHEAPS = $1, "ok")
  1583.         prop PropSetOkUserMsg :: if (MEM.NOHEAPS == 1) {"Currently specified heaps no longer valid"} else {"Please reconfigure heaps under individual mem segments"}
  1584.     }
  1585.     global SEGZERO :: MEM_NULL { 
  1586.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1587.         prop MemberType :: MEM
  1588.         prop MemberTest :: (self.dataNullMember($1) && $1.iAllocHeap)
  1589.         prop Label :: "Segment For DSP/BIOS Objects"
  1590.         prop JSName :: "BIOSOBJSEG"
  1591.         prop Visible :: 1
  1592.         prop Writable :: MEM.NOHEAPS == 0
  1593.         prop NoGen :: 0
  1594.         prop Set :: (if (self.SEGZERO.iReqHeapCount > 0) {self.SEGZERO.iReqHeapCount--} , self.SEGZERO = $1, self.SEGZERO.iReqHeapCount++, "ok")
  1595.     }
  1596.     global MALLOCSEG :: MEM_NULL { 
  1597.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1598.         prop MemberType :: MEM
  1599.         prop MemberTest :: (self.dataNullMember($1) && $1.iAllocHeap)
  1600.         prop Label :: "Segment For malloc() / free()"
  1601.         prop JSName :: "MALLOCSEG"
  1602.         prop Visible :: 1
  1603.         prop Writable :: (MEM.NOHEAPS == 0)
  1604.         prop NoGen :: 0
  1605.         prop Set :: (if (self.MALLOCSEG.iReqHeapCount > 0) {self.MALLOCSEG.iReqHeapCount--} , self.MALLOCSEG = $1, self.MALLOCSEG.iReqHeapCount++, "ok")
  1606.     }
  1607.     global LNKCMDFILE :: "" { 
  1608.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  1609.         prop Label :: "Specify User Linker cmd File"
  1610.         prop Visible :: 0
  1611.         prop Writable :: 1
  1612.         prop NoGen :: 1
  1613.     }
  1614.     global TEXTSEG :: ISRAM { 
  1615.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1616.         prop MemberType :: MEM
  1617.         prop MemberTest :: (self.codeMember($1))
  1618.         prop Label :: "Text Section (.text)"
  1619.         prop JSName :: "TEXTSEG"
  1620.         prop Visible :: 1
  1621.         prop Writable :: (self.USERCMD == 0)
  1622.         prop NoGen :: 1
  1623.         prop TabName :: "Compiler Sections"
  1624.     }
  1625.     global LOADTEXTSEG :: ISRAM { 
  1626.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1627.         prop MemberType :: MEM
  1628.         prop MemberTest :: (self.codeMember($1))
  1629.         prop Label :: "Load Address - Text Section (.text)"
  1630.         prop JSName :: "LOADTEXTSEG"
  1631.         prop Visible :: 1
  1632.         prop Writable :: (self.USERCMD == 0 && self.ENABLELOADSEG == 1)
  1633.         prop NoGen :: 1
  1634.         prop TabName :: "Load Address"
  1635.     }
  1636.     global SWITCHSEG :: ISRAM { 
  1637.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1638.         prop MemberType :: MEM
  1639.         prop MemberTest :: (self.dataCodeMember($1))
  1640.         prop Label :: "Switch Jump Tables (.switch)"
  1641.         prop JSName :: "SWITCHSEG"
  1642.         prop Visible :: 1
  1643.         prop Writable :: (self.USERCMD == 0)
  1644.         prop NoGen :: 1
  1645.         prop TabName :: "Compiler Sections"
  1646.     }
  1647.     global LOADSWITCHSEG :: ISRAM { 
  1648.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1649.         prop MemberType :: MEM
  1650.         prop MemberTest :: (self.dataCodeMember($1))
  1651.         prop Label :: "Load Address - Switch Jump Tables (.switch)"
  1652.         prop JSName :: "LOADSWITCHSEG"
  1653.         prop Visible :: 1
  1654.         prop Writable :: (self.USERCMD == 0 && self.ENABLELOADSEG == 1)
  1655.         prop NoGen :: 1
  1656.         prop TabName :: "Load Address"
  1657.     }
  1658.     global BSSSEG :: ISRAM { 
  1659.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1660.         prop MemberType :: MEM
  1661.         prop MemberTest :: (self.dataMember($1))
  1662.         prop Label :: "C Variables Section (.bss)"
  1663.         prop JSName :: "BSSSEG"
  1664.         prop Visible :: 1
  1665.         prop Writable :: (self.USERCMD == 0)
  1666.         prop NoGen :: 1
  1667.         prop TabName :: "Compiler Sections"
  1668.     }
  1669.     global FARSEG :: ISRAM { 
  1670.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1671.         prop MemberType :: MEM
  1672.         prop MemberTest :: (self.dataMember($1))
  1673.         prop Label :: "C Variables Section (.far)"
  1674.         prop JSName :: "FARSEG"
  1675.         prop Visible :: if GBL.DSPTYPE == 62 {1} else {0}
  1676.         prop Writable :: (self.USERCMD == 0)
  1677.         prop NoGen :: 1
  1678.         prop TabName :: "Compiler Sections"
  1679.     }
  1680.     global CINITSEG :: ISRAM { 
  1681.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1682.         prop MemberType :: MEM
  1683.         prop MemberTest :: (self.dataCodeMember($1))
  1684.         prop Label :: "Data Initialization Section (.cinit)"
  1685.         prop JSName :: "CINITSEG"
  1686.         prop Visible :: 1
  1687.         prop Writable :: (self.USERCMD == 0)
  1688.         prop NoGen :: 1
  1689.         prop TabName :: "Compiler Sections"
  1690.     }
  1691.     global LOADCINITSEG :: ISRAM { 
  1692.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1693.         prop MemberType :: MEM
  1694.         prop MemberTest :: (self.dataCodeMember($1))
  1695.         prop Label :: "Load Address - Data Initialization Section (.cinit)"
  1696.         prop JSName :: "LOADCINITSEG"
  1697.         prop Visible :: 1
  1698.         prop Writable :: (self.USERCMD == 0 && self.ENABLELOADSEG == 1)
  1699.         prop NoGen :: 1
  1700.         prop TabName :: "Load Address"
  1701.     }
  1702.     global PINITSEG :: ISRAM { 
  1703.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1704.         prop MemberType :: MEM
  1705.         prop MemberTest :: (self.dataCodeMember($1))
  1706.         prop Label :: "C Function Initialization Table (.pinit)"
  1707.         prop JSName :: "PINITSEG"
  1708.         prop Visible :: 1
  1709.         prop Writable :: (self.USERCMD == 0)
  1710.         prop NoGen :: 1
  1711.         prop TabName :: "Compiler Sections"
  1712.     }
  1713.     global LOADPINITSEG :: ISRAM { 
  1714.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1715.         prop MemberType :: MEM
  1716.         prop MemberTest :: (self.dataCodeMember($1))
  1717.         prop Label :: "Load Address - C Function Initialization Table (.pinit)"
  1718.         prop JSName :: "LOADPINITSEG"
  1719.         prop Visible :: 1
  1720.         prop Writable :: (self.USERCMD == 0 && self.ENABLELOADSEG == 1)
  1721.         prop NoGen :: 1
  1722.         prop TabName :: "Load Address"
  1723.     }
  1724.     global CONSTSEG :: ISRAM { 
  1725.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1726.         prop MemberType :: MEM
  1727.         prop MemberTest :: (self.dataMember($1))
  1728.         prop Label :: "Constant Section (.const)"
  1729.         prop JSName :: "CONSTSEG"
  1730.         prop Visible :: 1
  1731.         prop Writable :: (self.USERCMD == 0)
  1732.         prop NoGen :: 1
  1733.         prop TabName :: "Compiler Sections"
  1734.     }
  1735.     global LOADCONSTSEG :: ISRAM { 
  1736.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1737.         prop MemberType :: MEM
  1738.         prop MemberTest :: (self.dataMember($1))
  1739.         prop Label :: "Load Address - Constant Section (.const)"
  1740.         prop JSName :: "LOADCONSTSEG"
  1741.         prop Visible :: 1
  1742.         prop Writable :: (self.USERCMD == 0 && self.ENABLELOADSEG == 1)
  1743.         prop NoGen :: 1
  1744.         prop TabName :: "Load Address"
  1745.     }
  1746.     global DATASEG :: ISRAM { 
  1747.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1748.         prop MemberType :: MEM
  1749.         prop MemberTest :: (self.dataMember($1))
  1750.         prop Label :: "Data Section (.data)"
  1751.         prop JSName :: "DATASEG"
  1752.         prop Visible :: 1
  1753.         prop Writable :: (self.USERCMD == 0)
  1754.         prop NoGen :: 1
  1755.         prop TabName :: "Compiler Sections"
  1756.     }
  1757.     global CIOSEG :: ISRAM { 
  1758.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1759.         prop MemberType :: MEM
  1760.         prop MemberTest :: (self.dataMember($1))
  1761.         prop Label :: "Data Section (.cio)"
  1762.         prop JSName :: "CIOSEG"
  1763.         prop Visible :: 1
  1764.         prop Writable :: (self.USERCMD == 0)
  1765.         prop NoGen :: 1
  1766.         prop TabName :: "Compiler Sections"
  1767.     }
  1768.     global SYSMEMSEG :: = self.CIOSEG { 
  1769.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1770.         prop MemberType :: MEM
  1771.         prop MemberTest :: (self.dataMember($1))
  1772.         prop Label :: "Data Section (.sysmem)"
  1773.         prop JSName :: "SYSMEMSEG"
  1774.         prop Visible :: 0
  1775.         prop Writable :: (self.USERCMD == 0)
  1776.         prop NoGen :: 1
  1777.         prop TabName :: "Compiler Sections"
  1778.     }
  1779.     global STUBMEMSEG :: = HWI.STUBMEMSEG { 
  1780.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1781.         prop MemberType :: MEM
  1782.         prop MemberTest :: MEM.codeMember($1)
  1783.         prop Label :: "Function Stub Memory (.hwi)"
  1784.         prop JSName :: "HWISEG"
  1785.         prop Visible :: 1
  1786.         prop Writable :: 1
  1787.         prop NoGen :: 1
  1788.         prop TabName :: "BIOS Code"
  1789.         prop Set :: (self.STUBMEMSEG = $1, HWI.STUBMEMSEG = $1, "ok")
  1790.     }
  1791.     global LOADSTUBMEMSEG :: ISRAM { 
  1792.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1793.         prop MemberType :: MEM
  1794.         prop MemberTest :: MEM.codeMember($1)
  1795.         prop Label :: "Load Address - Function Stub Memory (.hwi)"
  1796.         prop JSName :: "LOADHWISEG"
  1797.         prop Visible :: 1
  1798.         prop Writable :: (self.ENABLELOADSEG == 1)
  1799.         prop NoGen :: 1
  1800.         prop TabName :: "Load Address"
  1801.     }
  1802.     global VECMEMSEG :: = HWI.VECMEMSEG { 
  1803.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1804.         prop MemberType :: MEM
  1805.         prop MemberTest :: MEM.codeMember($1)
  1806.         prop Label :: "Interrupt Service Table Memory (.hwi_vec)"
  1807.         prop JSName :: "HWIVECSEG"
  1808.         prop Visible :: 1
  1809.         prop Writable :: 1
  1810.         prop NoGen :: 1
  1811.         prop TabName :: "BIOS Code"
  1812.         prop Set :: (self.VECMEMSEG = $1, HWI.VECMEMSEG = $1, GlobalStatus.gDirty = 1, if ($1.base == 0) {HWI.GENERATE_RESET_VEC = 0} , "ok")
  1813.     }
  1814.     global LOADVECMEMSEG :: ISRAM { 
  1815.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1816.         prop MemberType :: MEM
  1817.         prop MemberTest :: MEM.codeMember($1)
  1818.         prop Label :: "Load Address -Interrupt Service Table Memory (.hwi_vec)"
  1819.         prop JSName :: "LOADHWIVECSEG"
  1820.         prop Visible :: 1
  1821.         prop Writable :: (self.ENABLELOADSEG == 1)
  1822.         prop NoGen :: 1
  1823.         prop TabName :: "Load Address"
  1824.     }
  1825.     global RTDXTEXTMEMSEG :: = RTDX.TEXTMEMSEG { 
  1826.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1827.         prop MemberType :: MEM
  1828.         prop MemberTest :: MEM.codeMember($1)
  1829.         prop Label :: "RTDX Text Segment (.rtdx_text)"
  1830.         prop JSName :: "RTDXTEXTSEG"
  1831.         prop Visible :: 1
  1832.         prop Writable :: RTDX.USERTDX
  1833.         prop NoGen :: 1
  1834.         prop TabName :: "BIOS Code"
  1835.         prop Set :: (self.RTDXTEXTMEMSEG = $1, RTDX.TEXTMEMSEG = $1, "ok")
  1836.     }
  1837.     global LOADRTDXTEXTMEMSEG :: ISRAM { 
  1838.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  1839.         prop MemberType :: MEM
  1840.         prop MemberTest :: MEM.codeMember($1)
  1841.         prop Label :: "Load Address - RTDX Text Segment (.rtdx_text)"
  1842.         prop JSName :: "LOADRTDXTEXTSEG"
  1843.         prop Visible :: 1
  1844.         prop Writable :: (RTDX.USERTDX && self.ENABLELOADSEG == 1)
  1845.         prop NoGen :: 1
  1846.         prop TabName :: "Load Address"
  1847.     }
  1848.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  1849.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  1850.         prop Label :: "comment"
  1851.         prop JSName :: "comment"
  1852.         prop Visible :: 1
  1853.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  1854.         prop NoGen :: 1
  1855.     }
  1856.     inst iIsUsed :: 0 { 
  1857.         prop Visible :: 0
  1858.         prop Writable :: 0
  1859.         prop NoGen :: 1
  1860.     }
  1861.     inst iId :: 0 { 
  1862.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1863.         prop Style :: 0x01
  1864.         prop Visible :: 0
  1865.         prop Writable :: 1
  1866.         prop NoGen :: 1
  1867.     }
  1868.     inst iDelUser :: "USER" { 
  1869.         prop Visible :: 0
  1870.         prop Writable :: 0
  1871.         prop NoGen :: 1
  1872.     }
  1873.     inst iDelMsg :: "ok" { 
  1874.         prop Visible :: 0
  1875.         prop Writable :: 0
  1876.         prop NoGen :: 1
  1877.     }
  1878.     inst base :: 0 { 
  1879.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1880.         prop Format :: if GBL.DSPTYPE == 62 {"0x%08x"} else {"0x%06x"}
  1881.         prop Style :: 0x02
  1882.         prop Label :: "base"
  1883.         prop JSName :: "base"
  1884.         prop Visible :: 1
  1885.         prop Writable :: (self.iIsModifiable)
  1886.         prop NoGen :: 1
  1887.         prop Set :: (self.base = $1, "ok")
  1888.     }
  1889.     inst len :: 0 { 
  1890.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1891.         prop Format :: if GBL.DSPTYPE == 62 {"0x%08x"} else {"0x%04x"}
  1892.         prop Style :: 0x08
  1893.         prop Label :: "len"
  1894.         prop JSName :: "len"
  1895.         prop Visible :: 1
  1896.         prop Writable :: (self.memWritable)
  1897.         prop NoGen :: 0
  1898.         prop Set :: (self.len = $1, "ok")
  1899.     }
  1900.     inst page :: = (if GBL.DSPTYPE == 62 {-1} else {if GBL.DSPTYPE == 55 {-1} else {if self.space == "code" {0} else {if self.space == "data" {1} else {if self.space == "io" {2} else {3}}}}}) { 
  1901.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1902.         prop NoGen :: 1
  1903.     }
  1904.     inst iAllocHeap :: if MEM.NOHEAPS == 1 {0} else {1} { 
  1905.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1906.         prop Label :: "create a heap in this memory"
  1907.         prop JSName :: "createHeap"
  1908.         prop Visible :: 1
  1909.         prop Writable :: (self.space == "data" || self.space == "code/data") && (MEM.NOHEAPS == 0) && self.iIsModifiable
  1910.         prop NoGen :: 0
  1911.         prop Set :: ($a = "ok", if ($1 == 0 && self.iReqHeapCount > 0) {self.error("This heap is used by one or more of: segment for DSP/BIOS objects, segment for malloc()/free(), TSK default stack segment")} else {if ($1 == 0) {self.iUserHeapId = 0, self.iHeapId = @segment_name} , self.iAllocHeap = $1, MEM.gDirty = 1, $a})
  1912.     }
  1913.     inst iHeapSize :: 0x8000 { 
  1914.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  1915.         prop Format :: if GBL.DSPTYPE == 62 {"0x%08x"} else {"0x%04x"}
  1916.         prop Style :: 0x02
  1917.         prop Label :: "heap size"
  1918.         prop JSName :: "heapSize"
  1919.         prop Visible :: 1
  1920.         prop Writable :: (self.iAllocHeap) && (self.iIsModifiable) && (MEM.NOHEAPS == 0)
  1921.         prop Set :: (self.iHeapSize = $1, "ok")
  1922.         prop NoGen :: 1
  1923.     }
  1924.     inst iSegZero :: = MEM.SEGZERO
  1925.     inst iUserHeapId :: 0 { 
  1926.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1927.         prop Label :: "enter a user defined heap identifier label"
  1928.         prop JSName :: "enableHeapLabel"
  1929.         prop Set :: (if ($1 == 0) {self.iHeapId = @segment_name} , self.iUserHeapId = $1, "ok")
  1930.         prop Visible :: 1
  1931.         prop Writable :: (self.iAllocHeap) && (self.iIsModifiable) && (self.NOHEAPS == 0)
  1932.         prop NoGen :: 1
  1933.     }
  1934.     inst iHeapId :: @segment_name { 
  1935.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  1936.         prop Label :: "heap identifier label"
  1937.         prop JSName :: "heapLabel"
  1938.         prop Set :: ($e = self.checkHeapId($1), if ($e == "ok") {self.iHeapId = $1} , $e)
  1939.         prop Writable :: (self.iAllocHeap) && (self.iIsModifiable) && (self.NOHEAPS == 0) && (self.iUserHeapId)
  1940.         prop Visible :: 1
  1941.         prop NoGen :: 0
  1942.     }
  1943.     inst iReqHeapCount :: 0 { 
  1944.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  1945.         prop NoGen :: 1
  1946.     }
  1947.     inst space :: (if GBL.DSPTYPE == 55 {"code/data"} else {"data"}) { 
  1948.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  1949.         prop Enum :: if GBL.DSPTYPE == 62 {"code,data,code/data"} else {if GBL.DSPTYPE == 54 {"code,data,io,other"} else {if GBL.DSPTYPE == 28 {"code,data,io,other"} else {"code/data,io"}}}
  1950.         prop JSName :: "space"
  1951.         prop Visible :: 1
  1952.         prop Writable :: (self.memWritable)
  1953.         prop NoGen :: 1
  1954.         prop Set :: ($e = "ok", if ($1 != "data" && $1 != "code/data" && self.iAllocHeap == 1) {$e = self.error("Cannot select this space if a heap will be created")} else {self.space = $1}, $e)
  1955.     }
  1956.     inst iIsModifiable :: 1 { 
  1957.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  1958.         prop Visible :: 0
  1959.         prop Writable :: 0
  1960.         prop NoGen :: 1
  1961.     }
  1962. }
  1963. object MEM_NULL :: MEM {
  1964.     param iComment :: "Place holder segment which allows user to disable heaps"
  1965.     param iIsUsed :: 0
  1966.     param iId :: 0
  1967.     param iDelUser :: "USER"
  1968.     param iDelMsg :: "ok"
  1969.     param base :: 0
  1970.     param len :: 0
  1971.     param iAllocHeap :: 1
  1972.     param iHeapSize :: 32768
  1973.     param iUserHeapId :: 0
  1974.     param iHeapId :: @segment_name
  1975.     param iReqHeapCount :: -1
  1976.     param space :: "data"
  1977.     param iIsModifiable :: 1
  1978. }
  1979. type OBJ {
  1980.     isa ObjectMgr
  1981.     prop name :: "OBJ"
  1982.     prop Visible :: 0
  1983.     prop AllocType :: (if (self.gNumOf > 0) {"1, _objMemDesc, _memSeg, _placement"} )
  1984.     prop _objMemDesc :: ("%8t .obj: {}")
  1985.     prop _memSeg :: MEM.CFGOBJSEG
  1986.     prop _placement :: (0x7fffffff / 2)
  1987.     global gUser :: "USER" { 
  1988.         prop Visible :: 0
  1989.         prop Writable :: 0
  1990.         prop NoGen :: 1
  1991.     }
  1992.     global gSetOf :: 0 { 
  1993.         prop Visible :: 0
  1994.         prop Writable :: 0
  1995.         prop NoGen :: 1
  1996.     }
  1997.     global gNumOf :: 0 { 
  1998.         prop Visible :: 0
  1999.         prop Writable :: 0
  2000.         prop NoGen :: 1
  2001.     }
  2002.     global gDirty :: 0 { 
  2003.         prop Visible :: 0
  2004.         prop Writable :: 0
  2005.         prop NoGen :: 1
  2006.     }
  2007.     global gInitFlag :: 1 { 
  2008.         prop Visible :: 0
  2009.         prop Writable :: 0
  2010.         prop NoGen :: 1
  2011.     }
  2012.     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) { 
  2013.         prop Visible :: 0
  2014.         prop Writable :: 0
  2015.         prop NoGen :: 1
  2016.     }
  2017.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  2018.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  2019.         prop Label :: "comment"
  2020.         prop JSName :: "comment"
  2021.         prop Visible :: 1
  2022.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  2023.         prop NoGen :: 1
  2024.     }
  2025.     inst iIsUsed :: 0 { 
  2026.         prop Visible :: 0
  2027.         prop Writable :: 0
  2028.         prop NoGen :: 1
  2029.     }
  2030.     inst iId :: 0 { 
  2031.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2032.         prop Style :: 0x01
  2033.         prop Visible :: 0
  2034.         prop Writable :: 1
  2035.         prop NoGen :: 1
  2036.     }
  2037.     inst iDelUser :: "USER" { 
  2038.         prop Visible :: 0
  2039.         prop Writable :: 0
  2040.         prop NoGen :: 1
  2041.     }
  2042.     inst iDelMsg :: "ok" { 
  2043.         prop Visible :: 0
  2044.         prop Writable :: 0
  2045.         prop NoGen :: 1
  2046.     }
  2047. }
  2048. type BUF {
  2049.     isa ObjectMgr
  2050.     prop name :: "BUF"
  2051.     prop Label :: "BUF - Buffer pool Manager"
  2052.     prop IsContainedIn :: SYSTEM
  2053.     prop GlobalIcon :: 199
  2054.     prop InstanceIcon :: 200
  2055.     prop InstanceHelpTopic :: (421)
  2056.     prop GlobalHelpTopic :: (321)
  2057.     prop InstancePropertyPage :: ("{B7240DE8-AA51-11cf-9BFE-0000C0AC14C7}")
  2058.     prop GlobalPropertyPage :: ("{B7240DE9-AA51-11cf-9BFE-0000C0AC14C7}")
  2059.     prop maxObjs :: (32767)
  2060.     prop AllocType :: (if (self.gNumOf > 0) {"1,      _globalAllocDesc, _memSeg, _placement"} )
  2061.     prop _globalAllocDesc :: ("%8t.buf:{}")
  2062.     prop _placement :: (0x7fffffff / 2)
  2063.     prop _memSeg :: self.OBJMEMSEG
  2064.     prop AllocInst :: ("1, _instAllocDesc, _instMemSeg, _placement")
  2065.     prop _instAllocDesc :: ("%8t .%0s$data: align = 0x%1x {%12tn %0s$databeg = .;n .+= %2d; %8tn }, _objAlign, _buflength")
  2066.     prop _objAlign :: self.align
  2067.     prop _instMemSeg :: self.bufseg
  2068.     prop _buflength :: (self.postalignsize * self.bufcount)
  2069.     prop cGen :: 1
  2070.     prop cHeaderName :: if self.gNumOf > 0 {"buf.h"} else {""}
  2071.     prop cGenHInst :: (if (GBL.DSPTYPE == 62) {"extern far BUF_Obj %0r;n"} else {"extern BUF_Obj %0r;n"})
  2072.     prop dataSize :: ($d = 0, scan ($i; BUF) {if ($i.IsConfObj()) {$d += $i.len} , $d += 7 * 4}, $d)
  2073.     global gUser :: "USER" { 
  2074.         prop Visible :: 0
  2075.         prop Writable :: 0
  2076.         prop NoGen :: 1
  2077.     }
  2078.     global gSetOf :: 0 { 
  2079.         prop Visible :: 0
  2080.         prop Writable :: 0
  2081.         prop NoGen :: 1
  2082.     }
  2083.     global gNumOf :: 0 { 
  2084.         prop Visible :: 0
  2085.         prop Writable :: 0
  2086.         prop NoGen :: 1
  2087.     }
  2088.     global gDirty :: 0 { 
  2089.         prop Visible :: 0
  2090.         prop Writable :: 0
  2091.         prop NoGen :: 1
  2092.     }
  2093.     global gInitFlag :: 1 { 
  2094.         prop Visible :: 0
  2095.         prop Writable :: 0
  2096.         prop NoGen :: 1
  2097.     }
  2098.     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) { 
  2099.         prop Visible :: 0
  2100.         prop Writable :: 0
  2101.         prop NoGen :: 1
  2102.     }
  2103.     global OBJMEMSEG :: ISRAM { 
  2104.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  2105.         prop MemberType :: MEM
  2106.         prop MemberTest :: MEM.dataMember($1)
  2107.         prop Label :: "Object Memory"
  2108.         prop JSName :: "OBJMEMSEG"
  2109.         prop Visible :: 1
  2110.         prop Writable :: 1
  2111.         prop NoGen :: 1
  2112.     }
  2113.     global ENABLED :: 1 { 
  2114.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2115.         prop Label :: "Compile in logging"
  2116.         prop Visible :: 0
  2117.         prop Writable :: 0
  2118.         prop NoGen :: 0
  2119.     }
  2120.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  2121.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  2122.         prop Label :: "comment"
  2123.         prop JSName :: "comment"
  2124.         prop Visible :: 1
  2125.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  2126.         prop NoGen :: 1
  2127.     }
  2128.     inst iIsUsed :: 0 { 
  2129.         prop Visible :: 0
  2130.         prop Writable :: 0
  2131.         prop NoGen :: 1
  2132.     }
  2133.     inst iId :: 0 { 
  2134.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2135.         prop Style :: 0x01
  2136.         prop Visible :: 0
  2137.         prop Writable :: 1
  2138.         prop NoGen :: 1
  2139.     }
  2140.     inst iDelUser :: "USER" { 
  2141.         prop Visible :: 0
  2142.         prop Writable :: 0
  2143.         prop NoGen :: 1
  2144.     }
  2145.     inst iDelMsg :: "ok" { 
  2146.         prop Visible :: 0
  2147.         prop Writable :: 0
  2148.         prop NoGen :: 1
  2149.     }
  2150.     inst bufseg :: self.OBJMEMSEG { 
  2151.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  2152.         prop MemberType :: MEM
  2153.         prop MemberTest :: MEM.dataMember($1)
  2154.         prop Label :: "Memory segment for buffer pool"
  2155.         prop JSName :: "bufSeg"
  2156.         prop Visible :: 1
  2157.         prop Writable :: 1
  2158.         prop NoGen :: 0
  2159.     }
  2160.     inst bufcount :: 1 { 
  2161.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2162.         prop Label :: "Buffer count"
  2163.         prop JSName :: "bufCount"
  2164.         prop Visible :: 1
  2165.         prop Writable :: 1
  2166.         prop NoGen :: 0
  2167.         prop Set :: (self.bufcount = $1, self.postalignsize = (self.size + (self.align - 1)) & ~(self.align - 1), self.len = $1 * self.postalignsize, "ok")
  2168.     }
  2169.     inst size :: 8 { 
  2170.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2171.         prop Label :: "Buffer size (MADUs)"
  2172.         prop JSName :: "size"
  2173.         prop Visible :: 1
  2174.         prop Writable :: 1
  2175.         prop NoGen :: 0
  2176.         prop Set :: (if ($1 < 8) {self.error("Size should be atleast 8 bytes")} else {self.size = $1, self.postalignsize = ($1 + (self.align - 1)) & ~(self.align - 1), self.len = self.postalignsize * self.bufcount, "ok"})
  2177.     }
  2178.     inst align :: 4 { 
  2179.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2180.         prop Label :: "Buffer alignment(Power of 2)"
  2181.         prop JSName :: "align"
  2182.         prop Visible :: 1
  2183.         prop Writable :: 1
  2184.         prop NoGen :: 0
  2185.         prop Set :: (if ($1 < 4) {self.error("Alignment should be atleast 4 ")} else {self.align = $1, self.postalignsize = (self.size + ($1 - 1)) & ~($1 - 1), self.len = self.postalignsize * self.bufcount, "ok"})
  2186.     }
  2187.     inst len :: self.size { 
  2188.         prop Label :: "Buffer pool length (MADUs)"
  2189.         prop JSName :: "len"
  2190.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2191.         prop Visible :: 1
  2192.         prop Writable :: 0
  2193.         prop NoGen :: 1
  2194.     }
  2195.     inst postalignsize :: self.size { 
  2196.         prop Label :: "Buffer size after alignment (MADUs)"
  2197.         prop JSName :: "postalignsize"
  2198.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2199.         prop Visible :: 1
  2200.         prop Writable :: 0
  2201.         prop NoGen :: 0
  2202.     }
  2203. }
  2204. type CLK {
  2205.     isa ObjectMgr
  2206.     prop name :: "CLK"
  2207.     prop Label :: "CLK - Clock Manager"
  2208.     prop IsContainedIn :: SCH
  2209.     prop IsConfMod :: 1
  2210.     prop GlobalIcon :: 103
  2211.     prop InstanceIcon :: 104
  2212.     prop InstanceHelpTopic :: (202)
  2213.     prop GlobalHelpTopic :: (102)
  2214.     prop InstancePropertyPage :: ("{EEB2AB41-51E3-11d0-A61D-0000C070F3E9}")
  2215.     prop GlobalPropertyPage :: ("{EEB2AB40-51E3-11d0-A61D-0000C070F3E9}")
  2216.     prop GenLinkPrologue :: ("SECTIONS {%4tn.%1L: {n%8t _CLK_start = %6s;n CLK_F_gethtime = %5s;n %1U_A_TABBEG = .;n %4Sn %1U_A_TABEND = .;n %1U_A_TABLEN = (. - %1U_A_TABBEG) / %2d;n%4t} > %3s , name, _objSize, _memSeg, _linkString, clkFxn, _clkStartFxn")
  2217.     prop _clkStartFxn :: if (GBL.SUPPORTCSL && self.USETIMER) {@_CLK_start6x} else {@FXN_F_nop}
  2218.     prop GenLinkEpilogue :: ("%0t}n_CLK_PRD = CLK_PRD;n_CLK_COUNTSPMS = CLK_COUNTSPMS;n_CLK_REGS = CLK_REGS;n_CLK_USETIMER = CLK_USETIMER;n_CLK_TIMERNUM = CLK_TIMERNUM;n_CLK_TDDR = CLK_TDDR;n")
  2219.     prop _linkString :: if self.gNumOf > 0 {"*(.%1L)"} else {"/* no CLK objs */"}
  2220.     prop _memSeg :: CLK.OBJMEMSEG
  2221.     prop _objSize :: 1
  2222.     prop clkFxn :: if (self.USETIMER == 1) {self.CLKFXN} else {@FXN_F_zero}
  2223.     prop maxObjs :: (32767)
  2224.     prop SortByField :: "iPri"
  2225.     prop SortGroups :: 1
  2226.     prop localInit :: (if (GBL.CALLBACKOBJ != CLK) {CLK.gGBLChain = GBL.CALLBACKOBJ, GBL.CALLBACKOBJ = CLK} )
  2227.     prop dataSize :: (1 * (CLK.gNumOf + 1))
  2228.     prop localCanCreate :: (if self.USETIMER {"ok"} else {self.error("The CLK Manager must be enabled before inserting a CLK")})
  2229.     prop localCreate :: (CLK.HOOKFXN = @HWI_F_dispatch, self.seizeHwi(self.WHICHHWI), "ok")
  2230.     prop localDelete :: (if (self.gNumOf == 1) {if (GBL.CALLMODEL == "far") {CLK.HOOKFXN = @CLK_F_frete, self.seizeHwi(self.WHICHHWI)} else {CLK.HOOKFXN = @CLK_F_rete, self.seizeHwi(self.WHICHHWI)}} , "ok")
  2231.     prop adjustPrd :: (if GBL.DSPTYPE == 62 {0} else {1})
  2232.     prop seizeHwi :: (if ($1.client == "USER" && $1.function != @HWI_unused) {self.error("Interrupt mapped to selected timer is already in use.")} else {if ($1.client == "CSL") {self.error("Interrupt mapped to selected timer is already in use by CSL.")} else {$1.function = @CLK_F_isr, $1.client = "CLK", $1.iUseDispatcher = (if CLK.HOOKFXN == @HWI_F_dispatch {1} else {0}), $1.iArg = (if $1.iUseDispatcher == 1 {@CLK_A_TABBEG} else {0}), HWI.gDirty = 1, "ok"}})
  2233.     prop releaseHwi :: ($1.function = @HWI_unused, $1.client = "USER", $1.iUseDispatcher = 0, $1.iArg = 0, HWI.gDirty = 1, "ok")
  2234.     prop seizeTimer :: (if ($1 == "Timer 0") {self.WHICHTIMER = "Timer 0", self.WHICHHWI = Timer_0.iHwi, self.REGS = 0x01000, self.TIMERNUM = 0, self.TIMERIMR = 0x0, self.TIMERIFR = 0x1, self.INTBIT = 4, self.TIMERIMRMASK = self.WHICHHWI.Ier0Mask, self.IMR0TINTMASK = self.WHICHHWI.Ier0Mask, self.IMR1TINTMASK = 0x0, self.setMicroseconds(self.MICROSECONDS)} else {if ($1 == "Timer 1") {self.WHICHTIMER = "Timer 1", self.WHICHHWI = Timer_1.iHwi, self.REGS = 0x2400, self.TIMERNUM = 1, self.TIMERIMR = 0x45, self.TIMERIFR = 0x46, self.INTBIT = 6, self.TIMERIMRMASK = self.WHICHHWI.Ier1Mask, self.IMR0TINTMASK = 0x0, self.IMR1TINTMASK = self.WHICHHWI.Ier1Mask, self.setMicroseconds(self.MICROSECONDS)} else {if ($1 == "Timer 2") {self.WHICHTIMER = "Timer 2", self.WHICHHWI = Timer_2.iHwi, self.REGS = 0x4000, self.TIMERNUM = 2, self.TIMERIMR = 0x0, self.TIMERIFR = 0x1, self.INTBIT = 11, self.TIMERIMRMASK = self.WHICHHWI.Ier0Mask, self.IMR0TINTMASK = self.WHICHHWI.Ier0Mask, self.IMR1TINTMASK = 0x0, self.setMicroseconds(self.MICROSECONDS)} }}, "ok")
  2235.     prop setMicroseconds :: ($a = if FIXTDDR == 1 {self.TDDR} else {(if GBL.DSPSUBTYPE == 5502 {CLK_MAXTDDR5502} else {0})}, $b = if GBL.DSPSUBTYPE == 5502 {CLK_MAXREG5502} else {0xffffffff}, $c = (float($a) + 1.0) * ((float($b) + self.adjustPrd) / (GBL.CPUCLOCK / 8)), if ($1 < $c && $1 > 0.1) {if (self.FIXTDDR == 0) {self.TDDR = int((1.0 * $1 * GBL.CPUCLOCK / 8) / (float($b) + self.adjustPrd))} , self.PRD = int((1.0 * $1 * GBL.CPUCLOCK) / (8 * (self.TDDR + 1.0))) - self.adjustPrd, self.MICROSECONDS = ((float((self.PRD)) + CLK.adjustPrd) * ((self.TDDR) + 1.0) * 8 / GBL.CPUCLOCK), if (self.CALLBACKOBJ != nil) {self.CALLBACKOBJ.call()} , "ok"} else {self.error("The on-chip timer does not have enough range to support this combination of DSP MIPS and Microseconds/Int")})
  2236.     prop call :: ($a = ((float((CLK.PRD)) + CLK.adjustPrd) * ((CLK.TDDR) + 1.0) * 8 / GBL.CPUCLOCK), $b = CLK.MICROSECONDS, $e = "ok", if (($e = self.setMicroseconds(CLK.MICROSECONDS)) == "ok") {if (CLK.gGBLChain != nil) {$e = CLK.gGBLChain.call()} , if ($e != "ok") {self.setMicroseconds($b), self.error($e)} else {"ok"}} else {$e})
  2237.     global gUser :: "USER" { 
  2238.         prop Visible :: 0
  2239.         prop Writable :: 0
  2240.         prop NoGen :: 1
  2241.     }
  2242.     global gSetOf :: 0 { 
  2243.         prop Visible :: 0
  2244.         prop Writable :: 0
  2245.         prop NoGen :: 1
  2246.     }
  2247.     global gNumOf :: 1 { 
  2248.         prop Visible :: 0
  2249.         prop Writable :: 0
  2250.         prop NoGen :: 1
  2251.     }
  2252.     global gDirty :: 1 { 
  2253.         prop Visible :: 0
  2254.         prop Writable :: 0
  2255.         prop NoGen :: 1
  2256.     }
  2257.     global gInitFlag :: 1 { 
  2258.         prop Visible :: 0
  2259.         prop Writable :: 0
  2260.         prop NoGen :: 1
  2261.     }
  2262.     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) { 
  2263.         prop Visible :: 0
  2264.         prop Writable :: 0
  2265.         prop NoGen :: 1
  2266.     }
  2267.     global gGBLChain :: nil { 
  2268.         prop Visible :: 0
  2269.         prop Writable :: 0
  2270.         prop NoGen :: 1
  2271.     }
  2272.     global OBJMEMSEG :: ISRAM { 
  2273.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  2274.         prop MemberType :: MEM
  2275.         prop MemberTest :: MEM.dataMember($1)
  2276.         prop Label :: "Object Memory"
  2277.         prop JSName :: "OBJMEMSEG"
  2278.         prop Visible :: 1
  2279.         prop Writable :: self.USETIMER
  2280.         prop NoGen :: 1
  2281.     }
  2282.     global WHICHHWI :: HWI_INT14 { 
  2283.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  2284.         prop MemberType :: HWI
  2285.         prop Label :: "CPU Interrupt"
  2286.         prop Visible :: 1
  2287.         prop Writable :: 0
  2288.         prop NoGen :: 1
  2289.     }
  2290.     global INTBIT :: = self.WHICHHWI.iIntrEnableMask
  2291.     global WHICHTIMER :: "Timer 0" { 
  2292.         prop Label :: "Timer Selection"
  2293.         prop JSName :: "TIMERSELECT"
  2294.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  2295.         prop Enum :: "Timer 0,Timer 1"
  2296.         prop Visible :: 1
  2297.         prop Writable :: self.USETIMER
  2298.         prop NoGen :: 1
  2299.         prop Set :: (if (self.WHICHTIMER != $1) {if (self.USETIMER == 0) {$e = "ok"} else {if ($1 == "Timer 0") {$a = Timer_0.iHwi} else {$a = Timer_1.iHwi}, $e = self.seizeHwi($a)}, if ($e == "ok") {self.releaseHwi(self.WHICHHWI), if ($1 == "Timer 0") {self.REGS = 0x01940000, self.TIMERNUM = 0, self.WHICHHWI = Timer_0.iHwi} else {self.REGS = 0x01980000, self.TIMERNUM = 1, self.WHICHHWI = Timer_1.iHwi}, self.WHICHTIMER = $1, self.HOOKFXN = if self.gNumOf > 0 {@HWI_F_dispatch} else {(if GBL.CALLMODEL == "far" {@CLK_F_frete} else {@CLK_F_rete})}, self.seizeHwi(self.WHICHHWI)} , $e} )
  2300.     }
  2301.     global REGS :: 26476544 { 
  2302.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2303.         prop Style :: 0x02
  2304.     }
  2305.     global TIMERNUM :: 0 { 
  2306.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2307.         prop Style :: 0x02
  2308.     }
  2309.     global USETIMER :: 1 { 
  2310.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2311.         prop Label :: "Enable CLK Manager"
  2312.         prop JSName :: "ENABLECLK"
  2313.         prop Visible :: 1
  2314.         prop Writable :: if self.gNumOf > 0 {0} else {1}
  2315.         prop NoGen :: 0
  2316.         prop Set :: (if ($1 == 1 && self.USETIMER == 0) {if (($e = self.seizeHwi(self.WHICHHWI)) == "ok") {self.USETIMER = 1, self.TIMEFXN = if CLK.HIRES {CLK.clkFxn()} else {@CLK_F_getltime}, self.HOOKFXN = if GBL.CALLMODEL == "far" {@CLK_F_frete} else {@CLK_F_rete}, self.seizeHwi(self.WHICHHWI), GlobalStatus.gDirty = 1, if (GlobalStatus.MinStackSize >= MEM.STACKSIZE) {self.releaseHwi(self.WHICHHWI), self.TIMEFXN = @FXN_F_zero, self.HOOKFXN = @FXN_F_nop, self.USETIMER = 0, GlobalStatus.gDirty = 1, self.error("Current stack size inadequate to enable CLK")} else {if (GBL.ENABLEINST == 1) {IDL_busyObj.Create("IDL"), IDL.USEIDLBUSYOBJ = 1, IDL_cpuLoad.Create("IDL"), IDL.AUTOCALCULATE = GBL.OLDAUTOCALCULATE} , $e}} else {$e}} else {if ($1 == 0 && self.USETIMER == 1) {self.releaseHwi(self.WHICHHWI), self.TIMEFXN = @FXN_F_zero, self.HOOKFXN = @FXN_F_nop, self.USETIMER = 0, if (GBL.ENABLEINST == 1) {IDL_busyObj.Delete("IDL"), IDL.USEIDLBUSYOBJ = 0, IDL_cpuLoad.Delete("IDL"), GBL.OLDAUTOCALCULATE = IDL.AUTOCALCULATE, IDL.AUTOCALCULATE = 0} , "ok"} else {"ok"}})
  2317.     }
  2318.     global HIRES :: = 1 { 
  2319.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2320.         prop Label :: "Use high resolution time for internal timings"
  2321.         prop JSName :: "HIRESTIME"
  2322.         prop Visible :: 1
  2323.         prop Writable :: self.USETIMER
  2324.         prop NoGen :: 1
  2325.         prop Set :: (if (CLK.USETIMER) {CLK.HIRES = $1, if (CLK.USETIMER) {CLK.TIMEFXN = if CLK.HIRES {CLK.clkFxn()} else {@CLK_F_getltime}} , "ok"} else {self.error("CLK Manager must be enabled in order to get high resolution timings.")})
  2326.     }
  2327.     global INSTRPERCLK :: 8 { 
  2328.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2329.         prop Visible :: 0
  2330.         prop Writable :: 0
  2331.         prop NoGen :: 1
  2332.     }
  2333.     global MICROSECONDS :: 1000.000000 { 
  2334.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  2335.         prop Style :: 0x04
  2336.         prop Format :: "%.4f"
  2337.         prop Label :: "Microseconds/Int"
  2338.         prop JSName :: "MICROSECONDS"
  2339.         prop Set :: (self.setMicroseconds($1))
  2340.         prop Visible :: 1
  2341.         prop Writable :: if ((CLK.PROGTIMREGS != 0) | (self.USETIMER == 0)) {0} else {1}
  2342.         prop NoGen :: 1
  2343.     }
  2344.     global PROGTIMREGS :: = 0 { 
  2345.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2346.         prop Label :: "Directly configure on-chip timer registers"
  2347.         prop JSName :: "CONFIGURETIMER"
  2348.         prop Visible :: 1
  2349.         prop Writable :: self.USETIMER
  2350.         prop NoGen :: 1
  2351.     }
  2352.     global TCR :: = 0x20 | CLK.TDDR { 
  2353.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2354.         prop Style :: 0x01 | 0x02
  2355.         prop Visible :: 0
  2356.         prop Writable :: 0
  2357.         prop NoGen :: 0
  2358.     }
  2359.     global FIXTDDR :: 1 { 
  2360.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2361.         prop Label :: "Fix TDDR"
  2362.         prop JSName :: "FIXTDDR"
  2363.         prop Visible :: GBL.DSPTYPE != 62
  2364.         prop Writable :: CLK.PROGTIMREGS && GBL.DSPTYPE != 62
  2365.         prop NoGen :: 1
  2366.     }
  2367.     global TDDR :: 0 { 
  2368.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2369.         prop Style :: if GBL.DSPSUBTYPE == 5502 {0x02} else {if GBL.DSPWORDSIZE == 16 {0x01 | 0x02} else {0x02}}
  2370.         prop Label :: if GBL.DSPSUBTYPE == 5561 {"TDDR Register (PREMD=0)"} else {"TDDR Register"}
  2371.         prop JSName :: "TCRTDDR"
  2372.         prop Set :: (if ((GBL.DSPSUBTYPE != 5502) && ($1 > 0)) {self.error("The on-chip timer does not have enough range to support this value, maximum is 15.")} else {CLK.TDDR = $1, CLK.MICROSECONDS = ((float((CLK.PRD)) + CLK.adjustPrd) * ((CLK.TDDR) + 1.0) * 8 / GBL.CPUCLOCK), if (CLK.CALLBACKOBJ != nil) {CLK.CALLBACKOBJ.call()} , "ok"})
  2373.         prop Visible :: GBL.DSPTYPE != 62
  2374.         prop Writable :: CLK.PROGTIMREGS && GBL.DSPTYPE != 62
  2375.         prop NoGen :: 0
  2376.     }
  2377.     global TDDRHIGH :: = ((self.TDDR & 0xffff0000) >> 16) { 
  2378.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2379.     }
  2380.     global PRD :: 75000 { 
  2381.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2382.         prop Style :: if GBL.DSPSUBTYPE == 5502 {0x02} else {if GBL.DSPWORDSIZE == 16 {0x01 | 0x02} else {0x02}}
  2383.         prop Label :: "PRD Register"
  2384.         prop JSName :: "PRD"
  2385.         prop Set :: (CLK.PRD = $1, CLK.MICROSECONDS = ((float((CLK.PRD)) + CLK.adjustPrd) * ((CLK.TDDR) + 1.0) * 8 / GBL.CPUCLOCK), if (CLK.CALLBACKOBJ != nil) {CLK.CALLBACKOBJ.call()} , "ok")
  2386.         prop Visible :: 1
  2387.         prop Writable :: if ((self.PROGTIMREGS) && (self.USETIMER)) {1} else {0}
  2388.         prop NoGen :: 0
  2389.     }
  2390.     global PRDHIGH :: = ((self.PRD & 0xffff0000) >> 16) { 
  2391.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2392.     }
  2393.     global COUNTSPMS :: = int(round(GBL.CPUCLOCK * 1000.0 / (CLK.TDDR + 1) / 8)) { 
  2394.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2395.     }
  2396.     global COUNTSPMSHIGH :: = ((self.COUNTSPMS & 0xffff0000) >> 16) { 
  2397.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2398.     }
  2399.     global INSTRUCTIONS :: = (1.0 * (float(CLK.PRD) + CLK.adjustPrd) * (CLK.TDDR + 1.0) * 8) { 
  2400.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  2401.         prop Style :: 0x04
  2402.         prop Format :: "%.0f"
  2403.         prop Label :: "Instructions/Int"
  2404.         prop Visible :: 1
  2405.         prop Writable :: 0
  2406.         prop NoGen :: 1
  2407.     }
  2408.     global TIMEFXN :: = CLK.clkFxn() { 
  2409.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2410.         prop Visible :: 0
  2411.         prop Writable :: 0
  2412.         prop NoGen :: 0
  2413.     }
  2414.     global HOOKFXN :: @HWI_F_dispatch { 
  2415.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2416.         prop Visible :: 0
  2417.         prop Writable :: 0
  2418.         prop NoGen :: 0
  2419.     }
  2420.     global CLKFXN :: = (if GBL.DSPSUBTYPE == 5502 {@CLK_F_getBIOStime} else {if (CLK.PRD == 0xffffffff) {@CLK_F_getfhtime} else {@CLK_F_getshtime}}) { 
  2421.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2422.         prop Visible :: 0
  2423.         prop Writable :: 0
  2424.         prop NoGen :: 1
  2425.     }
  2426.     global CALLBACKOBJ :: PRD { 
  2427.         prop Visible :: 0
  2428.         prop Writable :: 0
  2429.         prop NoGen :: 1
  2430.     }
  2431.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  2432.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  2433.         prop Label :: "comment"
  2434.         prop JSName :: "comment"
  2435.         prop Visible :: 1
  2436.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  2437.         prop NoGen :: 1
  2438.     }
  2439.     inst iIsUsed :: 0 { 
  2440.         prop Visible :: 0
  2441.         prop Writable :: 0
  2442.         prop NoGen :: 1
  2443.     }
  2444.     inst iId :: 0 { 
  2445.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2446.         prop Style :: 0x01
  2447.         prop Visible :: 0
  2448.         prop Writable :: 1
  2449.         prop NoGen :: 1
  2450.     }
  2451.     inst iDelUser :: "USER" { 
  2452.         prop Visible :: 0
  2453.         prop Writable :: 0
  2454.         prop NoGen :: 1
  2455.     }
  2456.     inst iDelMsg :: "ok" { 
  2457.         prop Visible :: 0
  2458.         prop Writable :: 0
  2459.         prop NoGen :: 1
  2460.     }
  2461.     inst function :: @FXN_F_nop { 
  2462.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2463.         prop Label :: "function"
  2464.         prop JSName :: "fxn"
  2465.         prop Visible :: 1
  2466.         prop Writable :: (if self.iDelUser == "USER" {1} else {0})
  2467.         prop NoGen :: 0
  2468.     }
  2469.     inst Order :: 0 { 
  2470.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2471.         prop JSName :: "order"
  2472.         prop NoGen :: 1
  2473.         prop Writable :: 1
  2474.     }
  2475.     inst iPri :: 0 { 
  2476.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  2477.         prop Visible :: 0
  2478.         prop NoGen :: 1
  2479.     }
  2480. }
  2481. type PRD {
  2482.     isa ObjectMgr
  2483.     prop name :: "PRD"
  2484.     prop Label :: "PRD - Periodic Function Manager"
  2485.     prop IsContainedIn :: SCH
  2486.     prop IsConfMod :: 1
  2487.     prop GlobalIcon :: 119
  2488.     prop InstanceIcon :: 120
  2489.     prop InstanceHelpTopic :: (210)
  2490.     prop GlobalHelpTopic :: (110)
  2491.     prop InstancePropertyPage :: ("{B7240DE0-AA51-11cf-9BFE-0000C0AC14C7}")
  2492.     prop GlobalPropertyPage :: ("{B7240DE1-AA51-11cf-9BFE-0000C0AC14C7}")
  2493.     prop STSGetMaxFmt :: ("%g ticks")
  2494.     prop STSGetSumFmt :: (PRD.STSGetMaxFmt())
  2495.     prop STSGetAvgFmt :: ("%.2f ticks")
  2496.     prop GetPeriod :: self.period
  2497.     prop IsOneShot :: if self.mode == "one-shot" {1} else {0}
  2498.     prop GenLinkPrologue :: ("SECTIONS {%4tn.%1L: {n%8t %1U_A_TABBEG = .;n %4Sn %1U_A_TABEND = .;n %1U_A_TABLEN = (. - %1U_A_TABBEG) / %2d;n%4t} > %3s%5s, name, objSize, memSeg, linkString, pageString")
  2499.     prop GenLinkEpilogue :: ("%0t}n")
  2500.     prop linkString :: if self.gNumOf > 0 {"*(.%1L)"} else {"/* no %1U objects */"}
  2501.     prop pageString :: if GBL.DSPTYPE == 62 {""} else {if GBL.DSPTYPE == 55 {""} else {if GBL.DSPTYPE == 28 {" PAGE 1 "} else {" PAGE 1"}}}
  2502.     prop memSeg :: PRD.OBJMEMSEG
  2503.     prop objSize :: if GBL.DSPTYPE == 55 {(8 * 4) * 2} else {(8 * 4)}
  2504.     prop dataSize :: ((8 * 4) * PRD.gNumOf)
  2505.     prop localInit :: (if (CLK.CALLBACKOBJ != nil) {self.error("PRD initialization failure")} , CLK.CALLBACKOBJ = PRD, if (PRD.USECLK && PRD_clock.iIsUsed == 0) {PRD_clock.Create("PRD")} , if (PRD_clock.iIsUsed == 1) {if (self.gNumOf == 0) {if (TSK.USETSK == 1 && TSK.TSKTICK == "PRD") {PRD_clock.function = @PRD_F_tick} else {PRD_clock.function = @FXN_F_nop}} else {PRD_clock.function = @PRD_F_tick}} )
  2506.     prop localCanCreate :: (if (GlobalStatus.MinStackSize >= MEM.STACKSIZE) {self.error(" System Stack Size too small")} else {self.myCreate("can")})
  2507.     prop localCreate :: (STS.gNumEmbed += 1, if (($a = self.myCreate("do")) == "ok") {if (PRD_clock.iIsUsed == 1) {if (self.gNumOf == 0) {PRD_clock.function = @PRD_F_tick} } } , $a)
  2508.     prop localCanDelete :: (self.myDelete("can"))
  2509.     prop localDelete :: (STS.gNumEmbed -= 1, if (($a = self.myDelete("do")) == "ok") {if (self.gNumOf == 1) {if (PRD_clock.iIsUsed == 1) {if (TSK.USETSK == 1 && TSK.TSKTICK == "PRD") {PRD_clock.function = @PRD_F_tick} else {PRD_clock.function = @FXN_F_nop}} } } , $a)
  2510.     prop maxObjs :: (32767)
  2511.     prop myCreate :: (if (PRD_swi.function != @PRD_F_swi) {PRD_swi.function = @PRD_F_swi} , if (PRD_swi.iIsUsed) {"ok"} else {if (SWI.CanCreate() == "ok") {if ($1 == "do") {if (KNL_swi.iIsUsed == 1 && PRD_swi.pri == 0) {PRD_swi.pri = 1} , PRD_swi.Create("PRD")} else {"ok"}} else {self.error("Can't create an SWI for PRD (try deleting a SWI)")}})
  2512.     prop myDelete :: (if (PRD_swi.function != @PRD_F_swi) {PRD_swi.function = @PRD_F_swi} , if (self.gNumOf == 1) {if ($1 == "do") {PRD_swi.Delete("PRD")} else {"ok"}} else {"ok"})
  2513.     prop call :: (if (CLK.USETIMER != 0) {PRD.MICROSECONDS = CLK.MICROSECONDS} , PRD.CALLBACKOBJ.call())
  2514.     prop cGen :: 1
  2515.     prop cHeaderName :: if self.gNumOf > 0 {"prd.h"} else {""}
  2516.     prop cGenHInst :: (if (GBL.DSPTYPE == 62) {"extern far PRD_Obj %0r;n"} else {"extern PRD_Obj %0r;n"})
  2517.     prop SortByField :: "iPri"
  2518.     prop SortGroups :: 1
  2519.     prop DEFAULT_THOOKFXN :: @_KNL_tick
  2520.     global gUser :: "USER" { 
  2521.         prop Visible :: 0
  2522.         prop Writable :: 0
  2523.         prop NoGen :: 1
  2524.     }
  2525.     global gSetOf :: 0 { 
  2526.         prop Visible :: 0
  2527.         prop Writable :: 0
  2528.         prop NoGen :: 1
  2529.     }
  2530.     global gNumOf :: 0 { 
  2531.         prop Visible :: 0
  2532.         prop Writable :: 0
  2533.         prop NoGen :: 1
  2534.     }
  2535.     global gDirty :: 1 { 
  2536.         prop Visible :: 0
  2537.         prop Writable :: 0
  2538.         prop NoGen :: 1
  2539.     }
  2540.     global gInitFlag :: 1 { 
  2541.         prop Visible :: 0
  2542.         prop Writable :: 0
  2543.         prop NoGen :: 1
  2544.     }
  2545.     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) { 
  2546.         prop Visible :: 0
  2547.         prop Writable :: 0
  2548.         prop NoGen :: 1
  2549.     }
  2550.     global OBJMEMSEG :: ISRAM { 
  2551.         prop Type :: "{7BA2DA00-5A53-11d0-9BFE-0000C0AC14C7}"
  2552.         prop MemberType :: MEM
  2553.         prop MemberTest :: MEM.dataMember($1)
  2554.         prop Label :: "Object Memory"
  2555.         prop JSName :: "OBJMEMSEG"
  2556.         prop Visible :: 1
  2557.         prop Writable :: 1
  2558.         prop NoGen :: 1
  2559.     }
  2560.     global USECLK :: 1 { 
  2561.         prop Type :: "{21455EA0-B96A-11cf-9BFE-0000C0AC14C7}"
  2562.         prop Label :: "Use CLK Manager to drive PRD"
  2563.         prop JSName :: "USECLK"
  2564.         prop Visible :: 1
  2565.         prop Writable :: 1
  2566.         prop Set :: (if ($1 == 1 && self.USECLK == 0) {if (CLK.USETIMER == 0) {self.error("In order to drive periodic functions, the CLK Manager must be enabled")} else {self.USECLK = 1, self.MICROSECONDS = CLK.MICROSECONDS, CLK.CALLBACKOBJ = PRD, PRD_clock.Create("PRD"), GlobalStatus.gDirty = 1, if (GlobalStatus.MinStackSize >= MEM.STACKSIZE) {self.USECLK = 0, self.MICROSECONDS = 0.0, CLK.CALLBACKOBJ = nil, PRD_clock.Delete("PRD"), self.error("Current Stack size inadequate to enable this option")} else {"ok"}}} else {if ($1 == 0 && self.USECLK == 1) {self.USECLK = 0, self.MICROSECONDS = 0.0, CLK.CALLBACKOBJ = nil, PRD_clock.Delete("PRD")} , "ok"})
  2567.         prop NoGen :: 1
  2568.     }
  2569.     global MICROSECONDS :: = CLK.MICROSECONDS { 
  2570.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  2571.         prop Style :: 0x04
  2572.         prop Format :: "%.1f"
  2573.         prop Label :: "Microseconds/Tick"
  2574.         prop JSName :: "MICROSECONDS"
  2575.         prop Visible :: 1
  2576.         prop Writable :: self.USECLK == 0
  2577.         prop NoGen :: 1
  2578.     }
  2579.     global SCALAR :: = ($d = 2, $f = 0, while ($d <= 0x4000 && $f == 0) {scan ($i; PRD) {if (($i.period / $d) * $d != $i.period) {$f = 1} }, if ($f == 0) {$d = 2 * $d} }, $d / 2) { 
  2580.         prop Visible :: 0
  2581.         prop Writable :: 0
  2582.         prop NoGen :: 0
  2583.     }
  2584.     global THOOKFXN :: @FXN_F_nop { 
  2585.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2586.         prop Label :: "System Tick Hook Function"
  2587.         prop Visible :: 0
  2588.         prop Writable :: 1
  2589.         prop NoGen :: 0
  2590.     }
  2591.     global CALLBACKOBJ :: STS { 
  2592.         prop Visible :: 0
  2593.         prop Writable :: 0
  2594.         prop NoGen :: 1
  2595.     }
  2596.     inst iComment :: if self.iDelUser == "USER" {"<add comments here>"} else {self.iDelMsg} { 
  2597.         prop Type :: "{21455EA3-B96A-11cf-9BFE-0000C0AC14C7}"
  2598.         prop Label :: "comment"
  2599.         prop JSName :: "comment"
  2600.         prop Visible :: 1
  2601.         prop Writable :: if self.iDelUser == "USER" {1} else {0}
  2602.         prop NoGen :: 1
  2603.     }
  2604.     inst iIsUsed :: 0 { 
  2605.         prop Visible :: 0
  2606.         prop Writable :: 0
  2607.         prop NoGen :: 1
  2608.     }
  2609.     inst iId :: 0 { 
  2610.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2611.         prop Style :: 0x01
  2612.         prop Visible :: 0
  2613.         prop Writable :: 1
  2614.         prop NoGen :: 1
  2615.     }
  2616.     inst iDelUser :: "USER" { 
  2617.         prop Visible :: 0
  2618.         prop Writable :: 0
  2619.         prop NoGen :: 1
  2620.     }
  2621.     inst iDelMsg :: "ok" { 
  2622.         prop Visible :: 0
  2623.         prop Writable :: 0
  2624.         prop NoGen :: 1
  2625.     }
  2626.     inst period :: 0xffff { 
  2627.         prop Label :: "period (ticks)"
  2628.         prop JSName :: "period"
  2629.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2630.         prop Style :: 0x01 | 0x02
  2631.         prop Visible :: 1
  2632.         prop Writable :: 1
  2633.         prop NoGen :: 0
  2634.         prop Set :: (if ($1 > 0) {self.period = $1, self.gDirty = 1, "ok"} else {self.error("Periodic function periods must be greater than 0")})
  2635.     }
  2636.     inst mode :: "continuous" { 
  2637.         prop Type :: "{21455EA1-B96A-11cf-9BFE-0000C0AC14C7}"
  2638.         prop Enum :: "continuous,one-shot"
  2639.         prop JSName :: "mode"
  2640.         prop Visible :: 1
  2641.         prop Writable :: 1
  2642.         prop NoGen :: 0
  2643.     }
  2644.     inst function :: @FXN_F_nop { 
  2645.         prop Type :: "{7C434D00-1629-11d0-9BFE-0000C0AC14C7}"
  2646.         prop JSName :: "fxn"
  2647.         prop Visible :: 1
  2648.         prop Writable :: 1
  2649.         prop NoGen :: 0
  2650.     }
  2651.     inst arg0 :: 0 { 
  2652.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  2653.         prop JSName :: "arg0"
  2654.         prop Visible :: 1
  2655.         prop Writable :: 1
  2656.         prop NoGen :: 0
  2657.     }
  2658.     inst arg1 :: 0 { 
  2659.         prop Type :: "{7C434D01-1629-11d0-9BFE-0000C0AC14C7}"
  2660.         prop JSName :: "arg1"
  2661.         prop Visible :: 1
  2662.         prop Writable :: 1
  2663.         prop NoGen :: 0
  2664.     }
  2665.     inst milliseconds :: = ((self.period * PRD.MICROSECONDS) / 1000.0) { 
  2666.         prop Label :: "period (ms)"
  2667.         prop Type :: "{3EE4CB80-E273-11d0-BB8F-0000C008F2E9}"
  2668.         prop Style :: 0x04
  2669.         prop Format :: "%.1f"
  2670.         prop Visible :: 1
  2671.         prop Writable :: 0
  2672.         prop NoGen :: 1
  2673.     }
  2674.     inst Order :: 0 { 
  2675.         prop Type :: "{21455EA2-B96A-11cf-9BFE-0000C0AC14C7}"
  2676.         prop JSName :: "order"
  2677.         prop NoGen :: 1
  2678.         prop Writable :: 1
  2679.     }
  2680.     inst iPri :: 0 { 
  2681.         prop Type :: "{A11FE980-C07A-11cf-9BFE-0000C0AC14C7}"
  2682.         prop Visible :: 0
  2683.         prop NoGen :: 1
  2684.     }
  2685. }
  2686. object PRD_swi :: SWI {