Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Some or all of this work - Copyright (c) 2006 - 2010, Intel Corp.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without modification,
  6.  * are permitted provided that the following conditions are met:
  7.  *
  8.  * Redistributions of source code must retain the above copyright notice,
  9.  * this list of conditions and the following disclaimer.
  10.  * Redistributions in binary form must reproduce the above copyright notice,
  11.  * this list of conditions and the following disclaimer in the documentation
  12.  * and/or other materials provided with the distribution.
  13.  * Neither the name of Intel Corporation nor the names of its contributors
  14.  * may be used to endorse or promote products derived from this software
  15.  * without specific prior written permission.
  16.  *
  17.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  18.  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  19.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20.  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  21.  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  22.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  23.  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  24.  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  25.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  26.  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27.  */
  28.  
  29. //
  30. //
  31. // Grammar.asl - Minimally excercises most ASL constructs
  32. //
  33. // NOTE -- use: iasl -f -of grammar.asl to compile
  34. //
  35. //         This 1) Ignores errors (checks compiler error handling)
  36. //              2) Disables constant folding
  37. //
  38. //
  39.  
  40. /*******************************************************************************
  41. Compilation should look like this:
  42.  
  43. C:\acpica\tests\misc>iasl -f -of grammar.asl
  44.  
  45. Intel ACPI Component Architecture
  46. ASL Optimizing Compiler version 20090422 [Apr 22 2009]
  47. Copyright (C) 2000 - 2009 Intel Corporation
  48. Supports ACPI Specification Revision 3.0a
  49.  
  50. grammar.asl   187:     Name (_NPK, Package (8)
  51. Warning  1098 -                 ^ Unknown reserved name (_NPK)
  52.  
  53. grammar.asl   510:     NAME (ESC1, "abcdefg\x00hijklmn")
  54. Warning  1042 -                                ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
  55.  
  56. grammar.asl   511:     NAME (ESC2, "abcdefg\000hijklmn")
  57. Warning  1042 -                                ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
  58.  
  59. grammar.asl   601:     Method (RCIV, 1)
  60. Warning  1087 -                   ^ Not all control paths return a value (RCIV)
  61.  
  62. grammar.asl   608:         RCIV (Subtract (Arg0, 1))
  63. Remark   5073 -               ^ Recursive method call (RCIV)
  64.  
  65. grammar.asl   937:     Method (_ERR, 2)
  66. Warning  1077 -                   ^ Reserved method has too few arguments (_ERR requires 3)
  67.  
  68. grammar.asl  1377:         Store (0x1234567887654321, QWD2)
  69. Warning  1032 -                                    ^ 64-bit integer in 32-bit table, truncating
  70.  
  71. grammar.asl  1379:         if (LNotEqual (Local0, 0x1234567887654321))
  72. Warning  1032 -         64-bit integer in 32-bit table, truncating ^
  73.  
  74. grammar.asl  1459:         SizeOf (BUFO)
  75. Warning  1105 -                       ^ Result is not used, operator has no effect
  76.  
  77. grammar.asl  1485:         Acquire (MTX2, 1)
  78. Warning  1104 -                           ^ Possible operator timeout is ignored
  79.  
  80. grammar.asl  1633:         Add (Local0, Local1)
  81. Warning  1105 -                      ^ Result is not used, operator has no effect
  82.  
  83. grammar.asl  1804:     Method (COND)
  84. Warning  1087 -                   ^ Not all control paths return a value (COND)
  85.  
  86. grammar.asl  6010:             Name (_HID, "*PNP0A06")
  87. Error    4001 -                                     ^ String must be entirely alphanumeric (*PNP0A06)
  88.  
  89. grammar.asl  6461:             Name (_CRS, Buffer(26)  {"\_SB_.PCI2._CRS..........."})
  90. Warning  1038 -        Invalid or unknown escape sequence ^
  91.  
  92. grammar.asl  6800:                 And (Local0, 1, Local0) //  Local0 &= 1
  93. Error    4050 -                              ^ Method local variable is not initialized (Local0)
  94.  
  95. grammar.asl  6886:             Name (_HID, "*PNP0C0A")     //  Control Method Battey ID
  96. Error    4001 -                                     ^ String must be entirely alphanumeric (*PNP0C0A)
  97.  
  98. ASL Input:  grammar.asl - 10254 lines, 322162 bytes, 4810 keywords
  99. AML Output: grammar.aml - 43392 bytes, 669 named objects, 4141 executable opcodes
  100.  
  101. Compilation complete. 3 Errors, 12 Warnings, 1 Remarks, 1101 Optimizations
  102.  
  103. ***************************************************************************************************/
  104.  
  105. DefinitionBlock (
  106.     "grammar.aml",      //Output filename
  107.     "DSDT",             //Signature
  108.     0x01,               //DSDT Revision ---> 32-bit table
  109.     "Intel",            //OEMID
  110.     "GRMTEST",          //TABLE ID
  111.     0x20090511          //OEM Revision
  112.     )
  113. {
  114.  
  115.     External (\ABCD, UnknownObj)
  116.  
  117.  
  118.     /* Device with _STA and _INI */
  119.  
  120.     Device (A1)
  121.     {
  122.         Method (_STA)
  123.         {
  124.             Return (0x0F)
  125.         }
  126.  
  127.         Method (_INI)
  128.         {
  129.             Return
  130.         }
  131.     }
  132.  
  133.     /* Device with no _STA, has _INI */
  134.  
  135.     Device (A2)
  136.     {
  137.         Method (_INI)
  138.         {
  139.             Return
  140.         }
  141.     }
  142.  
  143.     /* Device with _STA, no _INI */
  144.  
  145.     Device (A3)
  146.     {
  147.         Method (_STA)
  148.         {
  149.             Return (0x0F)
  150.         }
  151.     }
  152.  
  153.     /* Device with _STA and _INI, but not present */
  154.  
  155.     Device (A4)
  156.     {
  157.         Method (_STA)
  158.         {
  159.             Return (Zero)
  160.         }
  161.  
  162.         Method (_INI)
  163.         {
  164.             Return
  165.         }
  166.     }
  167.  
  168.  
  169.     /* Resource descriptors */
  170.  
  171.     Device (IRES)
  172.     {
  173.         Name (PRT0, ResourceTemplate ()
  174.         {
  175.             IRQ (Edge, ActiveHigh, Exclusive) {3,4,5,6,7,9,10,11,14,15}
  176.  
  177.             StartDependentFn (1,1)
  178.             {
  179.                 IRQNoFlags () {0,1,2}
  180.             }
  181.             EndDependentFn ()
  182.         })
  183.  
  184.         Method (_CRS, 0, NotSerialized)
  185.         {
  186.             Store ("_CRS:", Debug)
  187.             Store (PRT0, Debug)
  188.             Return (PRT0)
  189.         }
  190.  
  191.         Method (_SRS, 1, Serialized)
  192.         {
  193.             Store ("_SRS:", Debug)
  194.             Store (Arg0, Debug)
  195.             Return (Zero)
  196.         }
  197.     }
  198.  
  199.     Name (_NPK, Package ()
  200.     {
  201.         0x1111,
  202.         0x2222,
  203.         0x3333,
  204.         0x4444
  205.     })
  206.  
  207.  
  208.     Device (RES)
  209.     {
  210.         Name (_PRT, Package (0x04)
  211.         {
  212.             Package (0x04)
  213.             {
  214.                 0x0002FFFF,
  215.                 Zero,
  216.                 Zero,
  217.                 Zero
  218.             },
  219.  
  220.             Package (0x04)
  221.             {
  222.                 0x0002FFFF,
  223.                 One,
  224.                 Zero,
  225.                 Zero
  226.             },
  227.  
  228.             Package (0x04)
  229.             {
  230.                 0x000AFFFF,
  231.                 Zero,
  232.                 Zero,
  233.                 Zero
  234.             },
  235.  
  236.             Package (0x04)
  237.             {
  238.                 0x000BFFFF,
  239.                 Zero,
  240.                 Zero,
  241.                 Zero
  242.             }
  243.         })
  244.  
  245.         Method (_CRS, 0, NotSerialized)
  246.         {
  247.             Name (PRT0, ResourceTemplate ()
  248.             {
  249.                 WordBusNumber (ResourceConsumer, MinFixed, MaxFixed, SubDecode,
  250.                     0x0000, // Address Space Granularity
  251.                     0xFFF2, // Address Range Minimum
  252.                     0xFFF3, // Address Range Maximum
  253.                     0x0032, // Address Translation Offset
  254.                     0x0002,,,)
  255.                 WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode,
  256.                     0x0000, // Address Space Granularity
  257.                     0x0000, // Address Range Minimum
  258.                     0x00FF, // Address Range Maximum
  259.                     0x0000, // Address Translation Offset
  260.                     0x0100,,,)
  261.                 WordSpace (0xC3, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5,
  262.                     0x0000, // Address Space Granularity
  263.                     0xA000, // Address Range Minimum
  264.                     0xBFFF, // Address Range Maximum
  265.                     0x0000, // Address Translation Offset
  266.                     0x2000,,,)
  267.                 IO (Decode16, 0x0CF8, 0x0CFF, 0x01, 0x08)
  268.                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
  269.                     0x0000, // Address Space Granularity
  270.                     0x0000, // Address Range Minimum
  271.                     0x0CF7, // Address Range Maximum
  272.                     0x0000, // Address Translation Offset
  273.                     0x0CF8,,,
  274.                     , TypeStatic)
  275.                 WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
  276.                     0x0000, // Address Space Granularity
  277.                     0x0D00, // Address Range Minimum
  278.                     0xFFFF, // Address Range Maximum
  279.                     0x0000, // Address Translation Offset
  280.                     0xF300,,,
  281.                     , TypeStatic)
  282.                 DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
  283.                     0x00000000, // Address Space Granularity
  284.                     0x00000000, // Address Range Minimum
  285.                     0x00000CF7, // Address Range Maximum
  286.                     0x00000000, // Address Translation Offset
  287.                     0x00000CF8,,,
  288.                     , TypeStatic)
  289.                 DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
  290.                     0x00000000, // Address Space Granularity
  291.                     0x000C8000, // Address Range Minimum
  292.                     0x000EFFFF, // Address Range Maximum
  293.                     0x00000000, // Address Translation Offset
  294.                     0x00028000,,,
  295.                     , AddressRangeMemory, TypeStatic)
  296.                 DWordSpace (0xC3, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5,
  297.                     0x00000000, // Address Space Granularity
  298.                     0x000C8000, // Address Range Minimum
  299.                     0x000EFFFF, // Address Range Maximum
  300.                     0x00000000, // Address Translation Offset
  301.                     0x00028000,,,)
  302.                 QWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
  303.                     0x0000000000000000, // Address Space Granularity
  304.                     0x0000000000000000, // Address Range Minimum
  305.                     0x0000000000000CF7, // Address Range Maximum
  306.                     0x0000000000000000, // Address Translation Offset
  307.                     0x0000000000000CF8, 0x44, "This is a ResouceSource string",
  308.                     , TypeStatic)
  309.                 QWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
  310.                     0x0000000000000000, // Address Space Granularity
  311.                     0x0000000000000000, // Address Range Minimum
  312.                     0x0000000000000CF7, // Address Range Maximum
  313.                     0x0000000000000000, // Address Translation Offset
  314.                     0x0000000000000CF8,,,
  315.                     , TypeStatic)
  316.                 QWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
  317.                     0x0000000000000000, // Address Space Granularity
  318.                     0x0000000000100000, // Address Range Minimum
  319.                     0x00000000FFDFFFFF, // Address Range Maximum
  320.                     0x0000000000000000, // Address Translation Offset
  321.                     0x00000000FFD00000,,,
  322.                     , AddressRangeMemory, TypeStatic)
  323.                 QWordSpace (0xC3, ResourceConsumer, PosDecode, MinFixed, MaxFixed, 0xA5,
  324.                     0x0000000000000000, // Address Space Granularity
  325.                     0x0000000000000000, // Address Range Minimum
  326.                     0x0000000000000CF7, // Address Range Maximum
  327.                     0x0000000000000000, // Address Translation Offset
  328.                     0x0000000000000CF8,,,)
  329.                 ExtendedIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
  330.                     0x0000000000000000, // Address Space Granularity
  331.                     0x0000000000000000, // Address Range Minimum
  332.                     0x0000000000000CF7, // Address Range Maximum
  333.                     0x0000000000000000, // Address Translation Offset
  334.                     0x0000000000000CF8, // Address Length
  335.                     0x0000000000000000, // Type Specific Attributes
  336.                     , TypeStatic)
  337.                 ExtendedMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
  338.                     0x0000000000000000, // Address Space Granularity
  339.                     0x0000000000100000, // Address Range Minimum
  340.                     0x00000000FFDFFFFF, // Address Range Maximum
  341.                     0x0000000000000000, // Address Translation Offset
  342.                     0x00000000FFD00000, // Address Length
  343.                     0x0000000000000000, // Type Specific Attributes
  344.                     , AddressRangeMemory, TypeStatic)
  345.                 ExtendedSpace (0xC3, ResourceProducer, PosDecode, MinFixed, MaxFixed, 0xA3,
  346.                     0x0000000000000000, // Address Space Granularity
  347.                     0x0000000000100000, // Address Range Minimum
  348.                     0x00000000FFDFFFFF, // Address Range Maximum
  349.                     0x0000000000000000, // Address Translation Offset
  350.                     0x00000000FFD00000, // Address Length
  351.                     0x0000000000000000) // Type Specific Attributes
  352.                 IO (Decode16, 0x0010, 0x0020, 0x01, 0x10)
  353.                 IO (Decode16, 0x0090, 0x00A0, 0x01, 0x10)
  354.                 FixedIO (0x0061, 0x01)
  355.                 IRQNoFlags () {2}
  356.                 DMA (Compatibility, BusMaster, Transfer8_16) {4}
  357.                 DMA (Compatibility, BusMaster, Transfer8) {2,5,7}
  358.                 Memory32Fixed (ReadWrite, 0x00100000, 0x00000000)
  359.                 Memory32Fixed (ReadOnly, 0xFFFE0000, 0x00020000)
  360.                 Memory32 (ReadOnly, 0x00020000, 0xFFFE0000, 0x00000004, 0x00000200)
  361.                 Memory24 (ReadOnly, 0x1111, 0x2222, 0x0004, 0x0200)
  362.                 Interrupt (ResourceConsumer, Level, ActiveLow, Exclusive, 0xE, "\\_SB_.TEST")
  363.                 {
  364.                     0x00000E01,
  365.                 }
  366.                 Interrupt (ResourceConsumer, Edge, ActiveHigh, Exclusive, 0x6, "xxxx")
  367.                 {
  368.                     0x00000601,
  369.                     0x00000003,
  370.                     0x00000002,
  371.                     0x00000001,
  372.                 }
  373.                 Interrupt (ResourceProducer, Edge, ActiveHigh, Exclusive)
  374.                 {
  375.                     0xFFFF0000,
  376.                     0x00000003,
  377.                     0x00000002,
  378.                     0x00000001,
  379.                     0x00000005,
  380.                     0x00000007,
  381.                     0x00000009,
  382.                 }
  383.                 VendorShort () {0x01, 0x02, 0x03}
  384.                 VendorLong ()
  385.                 {
  386.                     0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
  387.                     0x09
  388.                 }
  389.                 Register (SystemIO, 0x08, 0x00, 0x00000000000000B2, , R000)
  390.                 Register (SystemMemory, 0x08, 0x00, 0x00000000000000B2)
  391.                 StartDependentFnNoPri ()
  392.                 {
  393.                     IRQNoFlags () {0,1,2}
  394.                     IRQ (Level, ActiveLow, Shared) {3,4,5,6,7,9,10,11,14,15}
  395.                 }
  396.                 EndDependentFn ()
  397.             })
  398.             CreateWordField (PRT0, 0x08, BMIN)
  399.             CreateByteField (PRT0, R000._ASZ, RSIZ)
  400.             Store (0x03, BMIN)
  401.             Return (PRT0)
  402.         }
  403.  
  404.         Method (_PRS, 0, NotSerialized)
  405.         {
  406.             Name (BUF0, ResourceTemplate ()
  407.             {
  408.                 StartDependentFn (0x01, 0x02)
  409.                 {
  410.                     IO (Decode16, 0x03D8, 0x03F8, 0x01, 0x08)
  411.                     IRQNoFlags () {4}
  412.                 }
  413.                 StartDependentFn (0x02, 0x01)
  414.                 {
  415.                     IO (Decode16, 0x03D8, 0x03E8, 0x01, 0x08)
  416.                     IRQNoFlags () {4}
  417.                 }
  418.                 StartDependentFn (0x00, 0x02)
  419.                 {
  420.                     IO (Decode16, 0x02E8, 0x02F8, 0x01, 0x08)
  421.                     IRQNoFlags () {3}
  422.                 }
  423.                 StartDependentFn (0x00, 0x02)
  424.                 {
  425.                     IO (Decode16, 0x02D8, 0x02E8, 0x01, 0x08)
  426.                     IRQNoFlags () {3}
  427.                 }
  428.                 StartDependentFn (0x02, 0x00)
  429.                 {
  430.                     IO (Decode16, 0x0100, 0x03F8, 0x08, 0x08)
  431.                     IRQNoFlags () {1,3,4,5,6,7,8,10,11,12,13,14,15}
  432.                 }
  433.                 EndDependentFn ()
  434.             })
  435.             Return (BUF0)
  436.         }
  437.  
  438.         Method (_SRS, 1, Serialized)
  439.         {
  440.             Return (Zero)
  441.         }
  442.     }
  443.  
  444.  
  445.     Name(\_S0,Package(0x04){
  446.         0x00,
  447.         0x00,
  448.         0x00,
  449.         0x00
  450.     })
  451.     Name(\_S3,Package(0x04){
  452.         0x05,
  453.         0x05,
  454.         0x00,
  455.         0x00
  456.     })
  457.     Name(\_S4,Package(0x04){
  458.         0x06,
  459.         0x06,
  460.         0x00,
  461.         0x00
  462.     })
  463.     Name(\_S5,Package(0x04){
  464.         0x07,
  465.         0x07,
  466.         0x00,
  467.         0x00
  468.     })
  469.  
  470. /* Examine this table header (DSDT) */
  471.  
  472. /*
  473.     DataTableRegion (HDR, "DSDT", "", "")
  474.     Field (HDR, AnyAcc, NoLock, Preserve)
  475.     {
  476.         SIG,  32,
  477.         LENG, 32,
  478.         REV,  8,
  479.         SUM,  8,
  480.         OID,  48,
  481.         OTID, 64,
  482.         OREV, 32,
  483.         CID,  32,
  484.         CREV, 32
  485.     }
  486.  
  487.     Method (SIZE)
  488.     {
  489.         If (LLess (REV, 2))
  490.         {
  491.             Store ("32-bit table", Debug)
  492.         }
  493.         else
  494.         {
  495.             Store ("64-bit table", Debug)
  496.         }
  497.         Return (0)
  498.     }
  499.  
  500. */
  501.     Name (SIZE, 0)
  502.  
  503.     /* Custom operation region */
  504.  
  505.     OperationRegion(MYOP,0x80,0xFD60,0x6)
  506.     Field(MYOP,ByteAcc,NoLock,Preserve)
  507.     {
  508.         MFLD,8
  509.     }
  510.  
  511.     Method (TCOP)
  512.     {
  513.         Name (_STR, Unicode ("test"))
  514.         Store (4, MFLD)
  515.         Store (MFLD, Local0)
  516.     }
  517.  
  518.     Name (ERRS, 0x0)
  519.  
  520.     /* Warning should be issued for premature string termination */
  521.  
  522.     NAME (ESC1, "abcdefg\x00hijklmn")
  523.     NAME (ESC2, "abcdefg\000hijklmn")
  524.     Name (ESC3, "abc\a\bdef\f\n\r\t\v\x03ffff\432")
  525.  
  526.  
  527.     Name(CRSA,ResourceTemplate()
  528.     {
  529.         WORDBusNumber(ResourceProducer,MinFixed,MaxFixed,PosDecode,0x0000,0x0019,0x001D,0x0000,0x0005)
  530.         WORDIO(ResourceProducer,MinFixed,MaxFixed,PosDecode,NonISAOnlyRanges,0x0000,0xC000,0xCFFF,0x0000,0x1000)
  531.         DWORDMemory(ResourceProducer,PosDecode,MinFixed,MaxFixed,NonCacheable,ReadWrite,0x00000000,0xD8000000,0xDBFFFFFF,0x00000000,0x04000000)
  532.  
  533.     })
  534.     Name(CRSB,ResourceTemplate()
  535.     {
  536.         DWORDMemory(ResourceProducer,PosDecode,MinFixed,MaxFixed,NonCacheable,ReadWrite,0x00000000,0xD8000000,0xDBFFFFFF,0x00000000,0x04000000)
  537.  
  538.     })
  539.  
  540.     Name(CRSC,ResourceTemplate()
  541.     {
  542.         VendorShort () {0x1, 0x2, 0x3}
  543.     })
  544.     Name(CRSD,ResourceTemplate()
  545.     {
  546.         VendorLong (VNDL) {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9}
  547.     })
  548.  
  549.     Name(CRSE,ResourceTemplate()
  550.     {
  551.         IRQNoFlags(){3,4,10,11}
  552.         IRQNoFlags(xxxt){3,4,10,11}
  553.     })
  554.     Name(CRSR, Buffer (Add (SizeOf(CRSA),SizeOf(CRSB))){})
  555.     Method(_CRS,0,NotSerialized)
  556.     {
  557.         Return(CRSR)
  558.     }
  559.  
  560.  
  561.     //
  562.     // Unnamed scope
  563.     //
  564.     Scope (\)
  565.     {
  566.         Name(Bxxx,0xFFFFFFFF)
  567.     }
  568.  
  569.     Name (LANS, 0x0)
  570.  
  571.     PowerResource(LANP,1,0)
  572.     {
  573.         Method(_STA){
  574.             If(LEqual(And(LANS,0x30),0x30)){
  575.                 Return(One)
  576.             } Else {
  577.                 Return(Zero)
  578.             }
  579.         }
  580.         Method(_ON){
  581.             If(LNot(_STA())){
  582.                 Store (0x30, LANS)
  583.             }
  584.         }
  585.         Method(_OFF){
  586.             If(_STA()){
  587.                 Store (0, LANS)
  588.             }
  589.         }
  590.     }
  591.  
  592.  
  593.     /* Can a method define another method? */
  594.  
  595.     /**********************************
  596.     Method (TASK, 2, SERIALIZED)
  597.     {
  598.         Sleep (100)
  599.  
  600.         Method (TAS2)
  601.         {
  602.             Sleep (100)
  603.         }
  604.  
  605.         TAS2()
  606.         Return
  607.  
  608.     }
  609.     ************************************/
  610.  
  611.     /* A recursive method */
  612.  
  613.     Method (RCIV, 1)
  614.     {
  615.         Store (Arg0, Debug)
  616.         If (Lequal (Arg0, 0))
  617.         {
  618.             Return ()
  619.         }
  620.         RCIV (Subtract (Arg0, 1))
  621.     }
  622.  
  623.     Method (RTOP)
  624.     {
  625.         RCIV (100)
  626.     }
  627.  
  628.  
  629.     Scope(\_PR)
  630.     {
  631.         Processor(CPU0,0x0,0xFFFFFFFF,0x0) {}
  632.     }
  633.  
  634.     Name(B1TP,0xFFFFFFFF)
  635.  
  636.     Name(B2TP,0xFFFFFFFF)
  637.     Name(ADPS,0xFFFFFFFF)
  638.     Name(B1PS,0xFFFFFFFF)
  639.     Name(B1RS,0xFFFFFFFF)
  640.     Name(B1CS,0xFFFFFFFF)
  641.     Name(B2PS,0xFFFFFFFF)
  642.     Name(B2RS,0xFFFFFFFF)
  643.     Name(B2CS,0xFFFFFFFF)
  644.     Name(B1DC,3000)
  645.     Name(B2DC,2600)
  646.     Name(B1LF,3000)
  647.     Name(B2LF,2600)
  648.     Name(BPIF,0)
  649.     Name(PBLL,0)
  650.  
  651.     Name(RBIF,Package()
  652.     {
  653.         0x1,
  654.         2200,
  655.         2200,
  656.         0x1,
  657.         10800,
  658.         0,
  659.         0,
  660.         1,
  661.         1,
  662.         "CA54200-5003/5",
  663.         "1",
  664.         "LION",
  665.         "Fujitsu"
  666.     })
  667.  
  668.     Method(SMWE, 4)
  669.     {
  670.        return(ONES)
  671.     }
  672.  
  673.     Method(SMRE, 4)
  674.     {
  675.        return(ONES)
  676.     }
  677.  
  678. /*
  679.     Method(RDBT,0,Serialized){
  680.         If(LNot(SMWE(0x09,0x15,1,1))){
  681.                     Store(0x18,Local2)
  682.             }
  683.     }
  684. */
  685.     Scope(_SB)
  686.     {
  687.  
  688.         Name (SBUF, Buffer (128) {})
  689.  
  690.         CreateBitField (SBUF, 3, BITY)
  691.         CreateByteField (SBUF, 1, BYTY)
  692.         CreateWordField (SBUF, 2, WRDZ)
  693.         CreateDwordField (SBUF, 4, DWDZ)
  694.         CreateQwordField (SBUF, 8, QWDZ)
  695.         CreateField (SBUF, 128, 12, FLDZ)
  696.         CreateField (SBUF, 148, 96, FLDY)
  697.         CreateField (SBUF, 148, 96, \_SB_.FLDW)
  698.  
  699.         Method (_INI)
  700.         {
  701.             CreateField (\_SB_.SBUF, 148, 96, FLDV)
  702.         }
  703.  
  704.  
  705.         Device(PCI0)
  706.         {
  707.             Name(_HID,EISAID("PNP0A03"))
  708.             Name(_ADR,0x0)
  709.  
  710.             Method(_CRS)
  711.             {
  712.                 Name(PRT0, ResourceTemplate() {
  713.                     WORDBusNumber(                          // Bus number resource(0)
  714.                             ResourceConsumer,               // bit 0 of general flags is 1
  715.                             MinFixed,                       // Range is notfixed
  716.                             MaxFixed,                       // Range is not fixed
  717.                             SubDecode,                      // SubDecode
  718.                             0x0000,                           // Granularity
  719.                             0xfff1,                           // Min
  720.                             0xfff2,                           // Max
  721.                             0x0032,                           // Translation
  722.                             0x0002,,,                         // Range Length
  723.                             BUS0
  724.                     ) } )// PRT0
  725.  
  726.                 CreateWordField(PRT0, BUS0._MIN, BMIN)          //Minimum bus number suported under this bridge.
  727.  
  728.                 Store(3, BMIN)
  729.                 Return(PRT0)
  730.  
  731.             } // _CRS
  732.  
  733.             Method(_SRS)
  734.             {
  735.                 Return ()
  736.             }
  737.  
  738.             Device(EIO)
  739.             {
  740.                 OperationRegion(FJIO,SystemIO,0xFD60,0x6)
  741.                     Field(FJIO,ByteAcc,NoLock,Preserve)
  742.                     {
  743.                         GIDX,8,
  744.  
  745.                         GDTA,8,
  746.  
  747.                         PIDX,8,
  748.  
  749.                         PDTA,8,
  750.  
  751.                         SIDX,8,
  752.  
  753.                         SDTA,8
  754.                     }
  755.                     IndexField(GIDX,GDTA,ByteAcc,NoLock,Preserve)
  756.                     {
  757.                         Offset(0x2),
  758.                          ,5,
  759.                         VGAS,2,
  760.                         Offset(0x4),
  761.                          ,4,
  762.                         DCKE,1,
  763.                         Offset(0x5),
  764.                          ,6,
  765.                         ACPW,1,
  766.  
  767.                         Offset(0xA),
  768.                         B1P,1,
  769.  
  770.                         B2P,1,
  771.  
  772.                         B1C,1,
  773.  
  774.                         B2C,1,
  775.  
  776.                         B1ER,1,
  777.  
  778.                         B2ER,1,
  779.  
  780.                         Offset(0xB),
  781.                         B1CP,8,
  782.  
  783.                         B2CP,8,
  784.  
  785.                         BCP,8,
  786.  
  787.                         B1VH,8,
  788.  
  789.                         B1VL,8,
  790.  
  791.                         B2VH,8,
  792.  
  793.                         B2VL,8,
  794.  
  795.                         B1TM,8,
  796.  
  797.                         B2TM,8,
  798.  
  799.                         B1CH,8,
  800.  
  801.                         B1CL,8,
  802.  
  803.                         B2CH,8,
  804.  
  805.                         B2CL,8
  806.                     }
  807.                 }
  808.             }
  809.         }
  810.  
  811.         Method(RDBT,3,Serialized){
  812.             Store(0x1FFF,Local1)
  813.             If( Arg0 ){
  814.                 Store(0x2FFF,Local1)
  815.             }
  816.             Store(0x18,Local2)
  817.             If( Arg1 ){
  818.                 Store(0x10,Local2)
  819.             }
  820.             If(LNot(SMRE(0x09,0x15,1,RefOf(Local0)))){
  821.                 If(LNot(SMWE(0x08,0x14,1,Local1))){
  822.                     If(LNot(SMRE(0x09,0x17,Local2,RefOf(Local3)))){
  823.                         Store(Local1,Arg2)
  824.                     }
  825.                 }
  826.                 Or(Local0,0xFFF,Local0)
  827.                 SMWE(0x08,0x14,1,Local0)
  828.             }
  829.         }
  830.         Method(MKWD,2)
  831.         {
  832.             If(And(Arg1,0x80)) {
  833.                 Or(0xFFFF0000,Arg0,Local0)
  834.                 Or(Local0,ShiftLeft(Arg1,8),Local0)
  835.                 Subtract(Zero,Local0,Local0)
  836.             } else {
  837.                 Store(Arg0,Local0)
  838.                 Or(Local0,ShiftLeft(Arg1,8),Local0)
  839.             }
  840.             Return(Local0)
  841.         }
  842.  
  843.         Device(CMB1)
  844.         {
  845.             Name(_HID,EISAID("PNP0C0A"))
  846.             Name(_UID,0x1)
  847.             Alias(\_SB.PCI0.EIO.B1P,\_SB_.PCI0.XXXX)
  848.             Alias(\_SB.PCI0.EIO.B1P,B1P)
  849.             Alias(\_SB.PCI0.EIO.B1C,B1C)
  850.             Alias(\_SB.PCI0.EIO.B1CH,B1CH)
  851.             Alias(\_SB.PCI0.EIO.B1CL,B1CL)
  852.             Alias(\_SB.PCI0.EIO.B1VH,B1VH)
  853.             Alias(\_SB.PCI0.EIO.B1VL,B1VL)
  854.             Alias(\_SB.PCI0.EIO.B1CP,B1CP)
  855.  
  856.             Method(_INI)
  857.                         {
  858.                 Store(B1P, B1PS)
  859.                 Store(B1CP,B1RS)
  860.                 Store(B1C, B1CS)
  861.             }
  862.  
  863.             Method(_BIF){
  864.                 RDBT(Zero,Zero,RefOf(B1DC))
  865.                 RDBT(Zero,One,RefOf(B1LF))
  866.                 Store(B1DC,Index(RBIF,1))
  867.                 Store(B1LF,Index(RBIF,2))
  868.                 Store("CA54200-5003/5",Index(RBIF,9))
  869.                 Store("1",Index(RBIF,10))
  870.                 Return(RBIF)
  871.             }
  872.  
  873.             Method(_BST) {
  874.  
  875.                 _INI()
  876.  
  877.                 Store(Zero,Local0)
  878.  
  879.                 if (LAnd(B1P,LNot(B1C))){
  880.                     Or(Local0,1,Local0)
  881.                 }
  882.  
  883.                 if (LAnd(B1P,B1C)) {
  884.                     Or(Local0,2,Local0)
  885.                 }
  886.  
  887.                 if (LLessEqual(B1CP,1)) {
  888.                     Or(Local0,4,Local0)
  889.                 }
  890.  
  891.                 Store(MKWD(B1CL,B1CH),Local1)
  892.  
  893.                 Store(Divide(Add(Multiply(B1CP,B1LF),99),100),Local2)
  894.  
  895.                 Store(MKWD(B1VL,B1VH),Local3)
  896.  
  897.                 Name(STAT,Package(4){})
  898.                 Store(Local0,Index(STAT,0))
  899.                 Store(Local1,Index(STAT,1))
  900.                 Store(Local2,Index(STAT,2))
  901.                 Store(Local3,Index(STAT,3))
  902.  
  903.                 If(LNot(BPIF)){
  904. //                    \_SB.PCI0.EIO.EC0.IECT()
  905. //                    \_SB.PCI0.EIO.EC0.SECT()
  906.                     Store(One,BPIF)
  907.                 }
  908.                 return(STAT)
  909.             }
  910.  
  911.         }
  912.  
  913.     Device (DEV1)
  914.     {
  915.     }
  916.  
  917.     Scope(\_TZ)
  918.     {
  919.         ThermalZone(TZ1)
  920.         {
  921.             Name(_PSL,Package()
  922.             {
  923.                 \_PR.CPU0
  924.             })
  925.         }
  926.     }
  927.  
  928.     Method (TZ2, 0, SERIALIZED)
  929.     {
  930.         Name(_PSL,Package()
  931.         {
  932.             \_PR.CPU0
  933.         })
  934.  
  935.         Return (_PSL)
  936.     }
  937.  
  938.     ThermalZone (THM1)
  939.     {
  940.     }
  941.  
  942.     Method (NOTI)
  943.     {
  944.         Notify (\DEV1, 0)
  945.         Notify (\THM1, 0)
  946.         Notify (\_PR.CPU0, 0)
  947.     }
  948.  
  949.     Method (_ERR, 2)
  950.     {
  951.         Increment (ERRS)
  952.         Store ("Run-time exception:", Debug)
  953.         Store (Arg0, Debug)
  954.         Store (Arg1, Debug)
  955.  
  956.         Return (0)          // Map error to AE_OK
  957.     }
  958.  
  959.     Method (DIV0)
  960.     {
  961.         Store (1, Local0)
  962.         Store (0, Local1)
  963.         Divide (Local0, Local1, Local3)
  964.  
  965.         Store ("DIV0 - noabort", Debug)
  966.     }
  967.  
  968.     Method (ERR_, 1)
  969.     {
  970.         if (LEqual (Arg0, 0))
  971.         {
  972.             Store ("+*+*+*+* MTHD_ERROR: Results not equal!", Debug)
  973.         }
  974.         if (LEqual (Arg0, 1))
  975.         {
  976.             Store ("+*+*+*+* MTHD_ERROR: Numeric result is incorrect!", Debug)
  977.         }
  978.         if (LEqual (Arg0, 2))
  979.         {
  980.             Store ("+*+*+*+* MTHD_ERROR: Operand was clobbered!", Debug)
  981.         }
  982.  
  983.         Notify (DEV1, Arg0)
  984.         Increment (ERRS)
  985.     }
  986.  
  987.     Method (R226, 2)
  988.     {
  989.     }
  990.     Method (R225, 2)
  991.     {
  992.         R226 (Arg0, Arg1)
  993.     }
  994.     Method (R224, 2)
  995.     {
  996.         R225 (Arg1, Arg0)
  997.     }
  998.     Method (R223, 2)
  999.     {
  1000.         R224 (Arg0, Arg1)
  1001.     }
  1002.     Method (R222, 2)
  1003.     {
  1004.         R223 (Arg1, Arg0)
  1005.     }
  1006.     Method (R111)
  1007.     {
  1008.         Store (0x01010101, Local0)
  1009.         R222 (0xABAB, Local0)
  1010.         Store (Local0, Local1)
  1011.     }
  1012.  
  1013.     Method (MAIN)
  1014.     {
  1015.  
  1016. //      SIZE()
  1017.         Store (NUM1(), Local0)
  1018.         \CMB1._BST()
  1019.         RDBT(1,2,3)
  1020.         OBJ1(1)
  1021.         OBJ2(2)
  1022.         CHEK()
  1023.         RETZ()
  1024.         BITZ()
  1025.         LOGS()
  1026.         REFS()
  1027.         COND()
  1028.         TZ2()
  1029.  
  1030.         //
  1031.         // iPCO tests added
  1032.         //
  1033.         Store (\IFEL.TEST(), Local0)
  1034.         if (LGreater (Local0, 0))
  1035.         {
  1036.             ERR_ (1)
  1037.             Return(Local0)
  1038.         }
  1039.  
  1040.         Store (\NOSV.TEST(), Local0)
  1041.         if (LGreater (Local0, 0))
  1042.         {
  1043.             ERR_ (1)
  1044.             Return(Local0)
  1045.         }
  1046.  
  1047.         Store (\IDXF.TEST(), Local0)
  1048.         if (LGreater (Local0, 0))
  1049.         {
  1050.             ERR_ (1)
  1051.             Return(Local0)
  1052.         }
  1053.  
  1054.         Store (\_SB_.NSTL.TEST(), Local0)
  1055.         if (LGreater (Local0, 0))
  1056.         {
  1057.             ERR_ (1)
  1058.             Return(Local0)
  1059.         }
  1060.  
  1061.         Store (\RTBF.TEST(), Local0)
  1062.         if (LGreater (Local0, 0))
  1063.         {
  1064.             ERR_ (1)
  1065.             Return(Local0)
  1066.         }
  1067.  
  1068.         Store (\_SB_.RTLV.TEST(), Local0)
  1069.         if (LGreater (Local0, 0))
  1070.         {
  1071.             ERR_ (1)
  1072.             Return(Local0)
  1073.         }
  1074.  
  1075.         Store (\_SB_.RETP.TEST(), Local0)
  1076.         if (LGreater (Local0, 0))
  1077.         {
  1078.             ERR_ (1)
  1079.             Return(Local0)
  1080.         }
  1081.  
  1082.         Store (\WHLR.TEST(), Local0)
  1083.         if (LGreater (Local0, 0))
  1084.         {
  1085.             ERR_ (1)
  1086.             Return(Local0)
  1087.         }
  1088.  
  1089.         Store (\ANDO.TEST(), Local0)
  1090.         if (LGreater (Local0, 0))
  1091.         {
  1092.             ERR_ (1)
  1093.             Return(Local0)
  1094.         }
  1095.  
  1096.         Store (\BRKP.TEST(), Local0)
  1097.         if (LGreater (Local0, 0))
  1098.         {
  1099.             ERR_ (1)
  1100.             Return(Local0)
  1101.         }
  1102.  
  1103.         Store (\ADSU.TEST(), Local0)
  1104.         if (LGreater (Local0, 0))
  1105.         {
  1106.             ERR_ (1)
  1107.             Return(Local0)
  1108.         }
  1109.  
  1110.         Store (\INDC.TEST(), Local0)
  1111.         if (LGreater (Local0, 0))
  1112.         {
  1113.             ERR_ (1)
  1114.             Return(Local0)
  1115.         }
  1116.  
  1117.         Store (\LOPS.TEST(), Local0)
  1118.         if (LGreater (Local0, 0))
  1119.         {
  1120.             ERR_ (1)
  1121.             Return(Local0)
  1122.         }
  1123.  
  1124.         Store (\FDSO.TEST(), Local0)
  1125.         if (LGreater (Local0, 0))
  1126.         {
  1127.             ERR_ (1)
  1128.             Return(Local0)
  1129.         }
  1130.  
  1131.         Store (\MLDV.TEST(), Local0)
  1132.         if (LGreater (Local0, 0))
  1133.         {
  1134.             ERR_ (1)
  1135.             Return(Local0)
  1136.         }
  1137.  
  1138.         Store (\NBIT.TEST(), Local0)
  1139.         if (LGreater (Local0, 0))
  1140.         {
  1141.             ERR_ (1)
  1142.             Return(Local0)
  1143.         }
  1144.  
  1145.         Store (\SHFT.TEST(), Local0)
  1146.         if (LGreater (Local0, 0))
  1147.         {
  1148.             ERR_ (1)
  1149.             Return(Local0)
  1150.         }
  1151.  
  1152.         Store (\XORD.TEST(), Local0)
  1153.         if (LGreater (Local0, 0))
  1154.         {
  1155.             ERR_ (1)
  1156.             Return(Local0)
  1157.         }
  1158.  
  1159.         Store (\CRBF.TEST(), Local0)
  1160.         if (LGreater (Local0, 0))
  1161.         {
  1162.             ERR_ (1)
  1163.             Return(Local0)
  1164.         }
  1165.  
  1166.         Store (\IDX4.TEST(), Local0)
  1167.         if (LGreater (Local0, 0))
  1168.         {
  1169.             ERR_ (1)
  1170.             Return(Local0)
  1171.         }
  1172.  
  1173.         Store (\EVNT.TEST(), Local0)
  1174.         if (LGreater (Local0, 0))
  1175.         {
  1176.             ERR_ (1)
  1177.             Return(Local0)
  1178.         }
  1179.  
  1180.         Store (\SZLV.TEST(), Local0)
  1181.         if (LGreater (Local0, 0))
  1182.         {
  1183.             ERR_ (1)
  1184.             Return(Local0)
  1185.         }
  1186.  
  1187.         Store (\_SB_.BYTF.TEST(), Local0)
  1188.         if (LGreater (Local0, 0))
  1189.         {
  1190.             ERR_ (1)
  1191.             Return(Local0)
  1192.         }
  1193.  
  1194.         Store (\DWDF.TEST(), Local0)
  1195.         if (LGreater (Local0, 0))
  1196.         {
  1197.             ERR_ (1)
  1198.             Return(Local0)
  1199.         }
  1200.  
  1201.         Store (\DVAX.TEST(), Local0)
  1202.         if (LGreater (Local0, 0))
  1203.         {
  1204.             ERR_ (1)
  1205.             Return(Local0)
  1206.         }
  1207.  
  1208.         Store (\IDX6.TEST(), Local0)
  1209.         if (LGreater (Local0, 0))
  1210.         {
  1211.             ERR_ (1)
  1212.             Return(Local0)
  1213.         }
  1214.  
  1215.         Store (\IDX5.TEST(), Local0)
  1216.         if (LGreater (Local0, 0))
  1217.         {
  1218.             ERR_ (1)
  1219.             Return(Local0)
  1220.         }
  1221.  
  1222.         Store (\_SB_.IDX0.TEST(), Local0)
  1223.         if (LGreater (Local0, 0))
  1224.         {
  1225.             ERR_ (1)
  1226.             Return(Local0)
  1227.         }
  1228.  
  1229.         Store (\_SB_.IDX3.TEST(), Local0)
  1230.         if (LGreater (Local0, 0))
  1231.         {
  1232.             ERR_ (1)
  1233.             Return(Local0)
  1234.         }
  1235.  
  1236.         Store (\IDX7.TEST(), Local0)
  1237.         if (LGreater (Local0, 0))
  1238.         {
  1239.             ERR_ (1)
  1240.             Return(Local0)
  1241.         }
  1242.  
  1243.         Store (\MTCH.TEST(), Local0)
  1244.         if (LGreater (Local0, 0))
  1245.         {
  1246.             ERR_ (1)
  1247.             Return(Local0)
  1248.         }
  1249.  
  1250.         Store (\WHLB.TEST(), Local0)
  1251.         if (LGreater (Local0, 0))
  1252.         {
  1253.             ERR_ (1)
  1254.             Return(Local0)
  1255.         }
  1256.  
  1257.         Store (\_SB_.IDX2.TEST(), Local0)
  1258.         if (LGreater (Local0, 0))
  1259.         {
  1260.             ERR_ (1)
  1261.             Return(Local0)
  1262.         }
  1263.  
  1264.         Store (\SIZO.TEST(), Local0)
  1265.         if (LGreater (Local0, 0))
  1266.         {
  1267.             ERR_ (1)
  1268.             Return(Local0)
  1269.         }
  1270.  
  1271.         Store (\_SB_.SMIS.TEST(), Local0)
  1272.         if (LGreater (Local0, 0))
  1273.         {
  1274.             ERR_ (1)
  1275.             Return(Local0)
  1276.         }
  1277.  
  1278.         if (LGreater (ERRS, 0))
  1279.         {
  1280.             Store ("****** There were errors during the execution of the test ******", Debug)
  1281.         }
  1282.  
  1283.         //
  1284.         // Last Test
  1285.         //
  1286.  
  1287.         Return(0) // Success
  1288.     }
  1289.  
  1290.  
  1291.     Method (OBJ1, 1, SERIALIZED)
  1292.     {
  1293.  
  1294.         Store (3, Local0)
  1295.         Name(BUFR, Buffer (Local0) {})
  1296.         Name(BUF1, Buffer (4) {1,2,3,4})
  1297.         Name(BUF2, Buffer (4) {})
  1298.  
  1299.         Store (BUF1, BUF2)
  1300.         Mutex (MTX1, 4)
  1301.  
  1302.         Alias (MTX1, MTX2)
  1303.     }
  1304.  
  1305.  
  1306.     Mutex (MTXT, 0)
  1307.     Mutex (MTXX, 0)
  1308.  
  1309.     /*
  1310.      * Field Creation
  1311.      */
  1312.  
  1313.     Method (FLDS)
  1314.     {
  1315.         Store ("++++++++ Creating BufferFields", Debug)
  1316.         Name (BUF2, Buffer (128) {})
  1317.  
  1318.         CreateBitField (BUF2, 3, BIT2)
  1319.         CreateByteField (BUF2, 1, BYT2)
  1320.         CreateWordField (BUF2, 2, WRD2)
  1321.         CreateDwordField (BUF2, 4, DWD2)
  1322.         CreateQwordField (BUF2, 8, QWD2)
  1323.         CreateField (BUF2, 128, 12, FLD2)
  1324.         CreateField (BUF2, 148, 96, FLD3)
  1325.  
  1326.         Store (0x1, BIT2)
  1327.         Store (BIT2, Local0)
  1328.         if (LNotEqual (Local0, 0x1))
  1329.         {
  1330.             ERR_ (1)
  1331.         }
  1332.         else
  1333.         {
  1334.             Store (DerefOf (Index (BUF2, 0)), Local0)
  1335.             if (LNotEqual (Local0, 0x08))
  1336.             {
  1337.                 ERR_ (1)
  1338.             }
  1339.             else
  1340.             {
  1341.                 Store ("++++++++ Bit BufferField I/O PASS", Debug)
  1342.             }
  1343.         }
  1344.  
  1345.         Store (0x1A, BYT2)
  1346.         Store (BYT2, Local0)
  1347.         if (LNotEqual (Local0, 0x1A))
  1348.         {
  1349.             ERR_ (1)
  1350.         }
  1351.         else
  1352.         {
  1353.             Store ("++++++++ Byte BufferField I/O PASS", Debug)
  1354.         }
  1355.  
  1356.         Store (0x1234, WRD2)
  1357.         Store (WRD2, Local0)
  1358.         if (LNotEqual (Local0, 0x1234))
  1359.         {
  1360.             ERR_ (1)
  1361.         }
  1362.         else
  1363.         {
  1364.             Store ("++++++++ Word BufferField I/O PASS", Debug)
  1365.         }
  1366.  
  1367.         Store (0x123, FLD2)
  1368.         Store (FLD2, Local0)
  1369.         if (LNotEqual (Local0, 0x123))
  1370.         {
  1371.             ERR_ (1)
  1372.         }
  1373.         else
  1374.         {
  1375.             Store ("++++++++ 12-bit BufferField I/O PASS", Debug)
  1376.         }
  1377.  
  1378.         Store (0x12345678, DWD2)
  1379.         Store (DWD2, Local0)
  1380.         if (LNotEqual (Local0, 0x12345678))
  1381.         {
  1382.             ERR_ (1)
  1383.         }
  1384.         else
  1385.         {
  1386.             Store ("++++++++ Dword BufferField I/O PASS", Debug)
  1387.         }
  1388.  
  1389.         Store (0x1234567887654321, QWD2)
  1390.         Store (QWD2, Local0)
  1391.         if (LNotEqual (Local0, 0x1234567887654321))
  1392.         {
  1393.             ERR_ (1)
  1394.         }
  1395.         else
  1396.         {
  1397.             Store ("++++++++ Qword BufferField I/O PASS", Debug)
  1398.         }
  1399.     }
  1400.  
  1401.  
  1402.     /* Field execution */
  1403.  
  1404.     Method (FLDX)
  1405.     {
  1406.         Field (\_SB_.MEM.SMEM, AnyAcc, NoLock, Preserve)
  1407.         {   //  Field:  SMEM overlay using 32-bit field elements
  1408.             SMD0,   32, //  32-bits
  1409.             SMD1,   32,     //  32-bits
  1410.             SMD2,   32,     //  32-bits
  1411.             SMD3,   32  //  32-bits
  1412.         }   //  Field:  SMEM overlay using 32-bit field elements
  1413.         Field (\_SB_.MEM.SMEM, AnyAcc, NoLock, Preserve)
  1414.         {   //  Field:  SMEM overlay using greater than 32-bit field elements
  1415.             SME0,   69, //  larger than an integer (32 or 64)
  1416.             SME1,   97  //  larger than an integer
  1417.         }   //  Field:  SMEM overlay using greater than 32-bit field elements
  1418.     }
  1419.  
  1420.  
  1421.     Method (MTX_, )
  1422.     {
  1423.         /* Test "Force release" of mutex on method exit */
  1424.  
  1425.         Acquire (MTXT, 0xFFFF)
  1426.         Acquire (MTXX, 0xFFFF)
  1427.  
  1428.         Store ("++++++++ Acquiring Mutex MTX2", Debug)
  1429.         Acquire (_GL_, 0xFFFF)
  1430.  
  1431.  
  1432.         Store ("++++++++ Releasing Mutex MTX2", Debug)
  1433.         Release (_GL_)
  1434.     }
  1435.  
  1436.  
  1437.     Method (OBJ2, 1)
  1438.     {
  1439.         Store ("++++++++ Creating Buffer BUFO", Debug)
  1440.         Name (BUFO, Buffer (32) {})
  1441.  
  1442.         Store ("++++++++ Creating OpRegion OPR2", Debug)
  1443.         OperationRegion (OPR2, SystemMemory, Arg0, 256)
  1444.  
  1445.         Store ("++++++++ Creating Field(s) in OpRegion OPR2", Debug)
  1446.         Field (OPR2, ByteAcc, NoLock, Preserve)
  1447.         {
  1448.             IDX2, 8,
  1449.             DAT2, 8,
  1450.             BNK2, 4
  1451.         }
  1452.  
  1453.         Store ("++++++++ Creating BankField BNK2 in OpRegion OPR2", Debug)
  1454.         //
  1455.         // mcw 3/20/00 - changed FET0, 4, FET1, 3 to FET0, 1, FET1, 1
  1456.         //
  1457.         BankField (OPR2, BNK2, 0, ByteAcc, NoLock, Preserve)
  1458.         {
  1459.             FET0, 4,
  1460.             FET1, 3
  1461.         }
  1462.  
  1463.         Store ("++++++++ Creating IndexField", Debug)
  1464.         IndexField (IDX2, DAT2, ByteAcc, NoLock, Preserve)
  1465.         {
  1466.             FET2, 4,
  1467.             FET3, 3
  1468.         }
  1469.  
  1470.         Store ("++++++++ SizeOf (BUFO)", Debug)
  1471.         SizeOf (BUFO)
  1472.  
  1473.         Store ("++++++++ Store (SizeOf (BUFO), Local0)", Debug)
  1474.         Store (SizeOf (BUFO), Local0)
  1475.  
  1476.         Store ("++++++++ Concatenate (\"abd\", \"def\", Local0)", Debug)
  1477.         Concatenate ("abd", "def", Local0)
  1478.         Store (Local0, Debug)
  1479.  
  1480.         Store ("++++++++ Concatenate (\"abd\", 0x7B, Local0)", Debug)
  1481.         Concatenate ("abd", 0x7B, Local0)
  1482.         Store (Local0, Debug)
  1483.  
  1484.         Store ("++++++++ Creating Event EVT2", Debug)
  1485.         Event (EVT2)
  1486.  
  1487.         Store ("++++++++ Creating Mutex MTX2", Debug)
  1488.         Mutex (MTX2, 0)
  1489.  
  1490.         Store ("++++++++ Creating Alias MTXA to MTX2", Debug)
  1491.         Alias (MTX2, MTXA)
  1492.  
  1493.         Store ("++++++++ Acquiring Mutex MTX2", Debug)
  1494.         Acquire (MTX2, 0xFFFF)
  1495.  
  1496.         Store ("++++++++ Acquiring Mutex MTX2 (2nd acquire)", Debug)
  1497.         Acquire (MTX2, 1)
  1498.  
  1499.         Store ("++++++++ Releasing Mutex MTX2", Debug)
  1500.         Release (MTX2)
  1501.  
  1502.         // Type 1 opcodes
  1503.  
  1504.         Store ("++++++++ Signalling Event EVT2", Debug)
  1505.         Signal (EVT2)
  1506.  
  1507.         Store ("++++++++ Resetting Event EVT2", Debug)
  1508.         Reset (EVT2)
  1509.  
  1510.         Store ("++++++++ Signalling Event EVT2", Debug)
  1511.         Signal (EVT2)
  1512.  
  1513.         Store ("++++++++ Waiting Event EVT2", Debug)
  1514.         Wait (EVT2, 0xFFFF)
  1515.  
  1516.         Store ("++++++++ Sleep", Debug)
  1517.         Sleep (100)
  1518.  
  1519.         Store ("++++++++ Stall", Debug)
  1520.         Stall (254)
  1521.  
  1522.         Store ("++++++++ NoOperation", Debug)
  1523.         Noop
  1524.  
  1525.         // Type 2 Opcodes
  1526.  
  1527.         Store ("++++++++ Return from Method OBJ2", Debug)
  1528.         return (4)
  1529.     }
  1530.  
  1531.  
  1532.     Method (NUM1, 0)
  1533.     {
  1534.         /* ADD */
  1535.  
  1536.         Store ("++++++++ Add (0x12345678, 0x11111111, Local0)", Debug)
  1537.         Add (0x12345678, 0x11111111, Local0)
  1538.  
  1539.         Store ("++++++++ Store (Add (0x12345678, 0x11111111), Local1)", Debug)
  1540.         Store (Add (0x12345678, 0x11111111), Local1)
  1541.  
  1542.         Store ("++++++++ Checking result from ADD", Debug)
  1543.         if (LNotEqual (Local0, Local1))
  1544.         {
  1545.             ERR_ (0)
  1546.         }
  1547.  
  1548.  
  1549.         /* SUBTRACT */
  1550.  
  1551.         Store ("++++++++ Subtract (0x87654321, 0x11111111, Local4)", Debug)
  1552.         Subtract (0x87654321, 0x11111111, Local4)
  1553.  
  1554.         Store ("++++++++ Store (Subtract (0x87654321, 0x11111111), Local5)", Debug)
  1555.         Store (Subtract (0x87654321, 0x11111111), Local5)
  1556.  
  1557.         Store ("++++++++ Checking result from SUBTRACT", Debug)
  1558.         if (LNotEqual (Local4, Local5))
  1559.         {
  1560.             ERR_ (0)
  1561.         }
  1562.  
  1563.  
  1564.         /* MULTIPLY */
  1565.  
  1566.         Store ("++++++++ Multiply (33, 10, Local6)", Debug)
  1567.         Multiply (33, 10, Local6)
  1568.  
  1569.         Store ("++++++++ Store (Multiply (33, 10), Local7)", Debug)
  1570.         Store (Multiply (33, 10), Local7)
  1571.  
  1572.  
  1573.         Store ("++++++++ Checking result from MULTIPLY", Debug)
  1574.         if (LNotEqual (Local6, Local7))
  1575.         {
  1576.             ERR_ (0)
  1577.         }
  1578.  
  1579.  
  1580.         /* DIVIDE */
  1581.  
  1582.         Store ("++++++++ Divide (100, 9, Local1, Local2)", Debug)
  1583.         Divide (100, 9, Local1, Local2)
  1584.  
  1585.         Store ("++++++++ Store (Divide (100, 9), Local3)", Debug)
  1586.         Store (Divide (100, 9), Local3)
  1587.  
  1588.         Store ("++++++++ Checking (quotient) result from DIVIDE", Debug)
  1589.         if (LNotEqual (Local2, Local3))
  1590.         {
  1591.             ERR_ (0)
  1592.         }
  1593.  
  1594.  
  1595.         /* INCREMENT */
  1596.  
  1597.         Store ("++++++++ Increment (Local0)", Debug)
  1598.         Store (1, Local0)
  1599.         Store (2, Local1)
  1600.         Increment (Local0)
  1601.  
  1602.         Store ("++++++++ Checking result from INCREMENT", Debug)
  1603.         if (LNotEqual (Local0, Local1))
  1604.         {
  1605.             ERR_ (0)
  1606.         }
  1607.  
  1608.  
  1609.         /* DECREMENT */
  1610.  
  1611.         Store ("++++++++ Decrement (Local0)", Debug)
  1612.         Store (2, Local0)
  1613.         Store (1, Local1)
  1614.         Decrement (Local0)
  1615.  
  1616.         Store ("++++++++ Checking result from DECREMENT", Debug)
  1617.         if (LNotEqual (Local0, Local1))
  1618.         {
  1619.             ERR_ (0)
  1620.         }
  1621.  
  1622.  
  1623.         /* TOBCD */
  1624.         /* FROMBCD */
  1625.  
  1626.         Store ("++++++++ ToBCD (0x1234, Local5)", Debug)
  1627.         ToBCD (0x1234, Local5)
  1628.  
  1629.         Store ("++++++++ FromBCD (Local5, Local6)", Debug)
  1630.         FromBCD (Local5, Local6)
  1631.  
  1632.         Store ("++++++++ Return (Local6)", Debug)
  1633.         Return (Local6)
  1634.     }
  1635.  
  1636.  
  1637.     Method (CHEK)
  1638.     {
  1639.  
  1640.         Store (3, Local0)
  1641.         Store (3, Debug)
  1642.         Store (Local0, Debug)
  1643.         Store (7, Local1)
  1644.  
  1645.         Add (Local0, Local1)
  1646.         if (LNotEqual (Local0, 3))
  1647.         {
  1648.             ERR_ (2)
  1649.         }
  1650.         if (LNotEqual (Local1, 7))
  1651.         {
  1652.             ERR_ (2)
  1653.         }
  1654.  
  1655.  
  1656.         Add (Local0, Local1, Local2)
  1657.         if (LNotEqual (Local0, 3))
  1658.         {
  1659.             ERR_ (2)
  1660.         }
  1661.         if (LNotEqual (Local1, 7))
  1662.         {
  1663.             ERR_ (2)
  1664.         }
  1665.     }
  1666.  
  1667.  
  1668.     Method (RET1)
  1669.     {
  1670.         Store (3, Local0)
  1671.         Return (Local0)
  1672.     }
  1673.  
  1674.     Method (RET2)
  1675.     {
  1676.         Return (RET1())
  1677.     }
  1678.  
  1679.     Method (RETZ)
  1680.     {
  1681.         RET2 ()
  1682.     }
  1683.  
  1684.  
  1685.     Method (BITZ)
  1686.     {
  1687.         Store ("++++++++ FindSetLeftBit (0x00100100, Local0)", Debug)
  1688.         FindSetLeftBit (0x00100100, Local0)
  1689.         if (LNotEqual (Local0, 21))
  1690.         {
  1691.             ERR_ (1)
  1692.         }
  1693.  
  1694.         Store ("++++++++ FindSetRightBit (0x00100100, Local1)", Debug)
  1695.         FindSetRightBit (0x00100100, Local1)
  1696.         if (LNotEqual (Local1, 9))
  1697.         {
  1698.             ERR_ (1)
  1699.         }
  1700.  
  1701.         Store ("++++++++ And (0xF0F0F0F0, 0x11111111, Local2)", Debug)
  1702.         And (0xF0F0F0F0, 0x11111111, Local2)
  1703.         if (LNotEqual (Local2, 0x10101010))
  1704.         {
  1705.             ERR_ (1)
  1706.         }
  1707.  
  1708.         Store ("++++++++ NAnd (0xF0F0F0F0, 0x11111111, Local3)", Debug)
  1709.         NAnd (0xF0F0F0F0, 0x11111111, Local3)
  1710.         if (LNotEqual (Local3, 0xEFEFEFEF))
  1711.         {
  1712.             ERR_ (1)
  1713.         }
  1714.  
  1715.         Store ("++++++++ Or (0x11111111, 0x22222222, Local4)", Debug)
  1716.         Or (0x11111111, 0x22222222, Local4)
  1717.         if (LNotEqual (Local4, 0x33333333))
  1718.         {
  1719.             ERR_ (1)
  1720.         }
  1721.  
  1722.         Store ("++++++++ NOr (0x11111111, 0x22222222, Local5)", Debug)
  1723.         NOr (0x11111111, 0x22222222, Local5)
  1724.         if (LNotEqual (Local5, 0xCCCCCCCC))
  1725.         {
  1726.             ERR_ (1)
  1727.         }
  1728.  
  1729.         Store ("++++++++ XOr (0x11113333, 0x22222222, Local6)", Debug)
  1730.         XOr (0x11113333, 0x22222222, Local6)
  1731.         if (LNotEqual (Local6, 0x33331111))
  1732.         {
  1733.             ERR_ (1)
  1734.         }
  1735.  
  1736.         Store ("++++++++ ShiftLeft (0x11112222, 2, Local7)", Debug)
  1737.         ShiftLeft (0x11112222, 2, Local7)
  1738.         if (LNotEqual (Local7, 0x44448888))
  1739.         {
  1740.             ERR_ (1)
  1741.         }
  1742.  
  1743.         Store ("++++++++ ShiftRight (Local7, 2, Local7)", Debug)
  1744.         ShiftRight (Local7, 2, Local7)
  1745.         if (LNotEqual (Local7, 0x11112222))
  1746.         {
  1747.             ERR_ (1)
  1748.         }
  1749.  
  1750.  
  1751.         Store ("++++++++ Not (Local0, Local1)", Debug)
  1752.         Store (0x22224444, Local0)
  1753.         Not (Local0, Local1)
  1754.         if (LNotEqual (Local0, 0x22224444))
  1755.         {
  1756.             ERR_ (2)
  1757.         }
  1758.  
  1759.         if (LNotEqual (Local1, 0xDDDDBBBB))
  1760.         {
  1761.             ERR_ (1)
  1762.         }
  1763.  
  1764.         Return (Local7)
  1765.     }
  1766.  
  1767.  
  1768.     Method (LOGS)
  1769.     {
  1770.  
  1771.         Store ("++++++++ Store (LAnd (0xFFFFFFFF, 0x11111111), Local0)", Debug)
  1772.         Store (LAnd (0xFFFFFFFF, 0x11111111), Local0)
  1773.  
  1774.         Store ("++++++++ Store (LEqual (0xFFFFFFFF, 0x11111111), Local)", Debug)
  1775.         Store (LEqual (0xFFFFFFFF, 0x11111111), Local1)
  1776.  
  1777.         Store ("++++++++ Store (LGreater (0xFFFFFFFF, 0x11111111), Local2)", Debug)
  1778.         Store (LGreater (0xFFFFFFFF, 0x11111111), Local2)
  1779.  
  1780.         Store ("++++++++ Store (LGreaterEqual (0xFFFFFFFF, 0x11111111), Local3)", Debug)
  1781.         Store (LGreaterEqual (0xFFFFFFFF, 0x11111111), Local3)
  1782.  
  1783.         Store ("++++++++ Store (LLess (0xFFFFFFFF, 0x11111111), Local4)", Debug)
  1784.         Store (LLess (0xFFFFFFFF, 0x11111111), Local4)
  1785.  
  1786.         Store ("++++++++ Store (LLessEqual (0xFFFFFFFF, 0x11111111), Local5)", Debug)
  1787.         Store (LLessEqual (0xFFFFFFFF, 0x11111111), Local5)
  1788.  
  1789.         Store ("++++++++ Store (LNot (0x31313131), Local6)", Debug)
  1790.         Store (0x00001111, Local6)
  1791.         Store (LNot (Local6), Local7)
  1792.         if (LNotEqual (Local6, 0x00001111))
  1793.         {
  1794.             ERR_ (2)
  1795.         }
  1796.  
  1797.         if (LNotEqual (Local7, 0x0))
  1798.         {
  1799.             ERR_ (1)
  1800.         }
  1801.  
  1802.  
  1803.         Store ("++++++++ Store (LNotEqual (0xFFFFFFFF, 0x11111111), Local7)", Debug)
  1804.         Store (LNotEqual (0xFFFFFFFF, 0x11111111), Local7)
  1805.  
  1806.         Store ("++++++++ Lor (0x0, 0x1)", Debug)
  1807.         if (Lor (0x0, 0x1))
  1808.         {
  1809.             Store ("+_+_+_+_+ Lor (0x0, 0x1) returned TRUE", Debug)
  1810.         }
  1811.  
  1812.         return (Local7)
  1813.     }
  1814.  
  1815.  
  1816.     Method (COND)
  1817.     {
  1818.         Store ("++++++++ Store (0x4, Local0)", Debug)
  1819.         Store (0x4, Local0)
  1820.  
  1821.         Store ("++++++++ While (Local0)", Debug)
  1822.         While (Local0)
  1823.         {
  1824.             Store ("++++++++ Decrement (Local0)", Debug)
  1825.             Decrement (Local0)
  1826.         }
  1827.  
  1828.  
  1829.         Store ("++++++++ Store (0x3, Local6)", Debug)
  1830.         Store (0x3, Local6)
  1831.  
  1832.         Store ("++++++++ While (Subtract (Local6, 1))", Debug)
  1833.         While (Subtract (Local6, 1))
  1834.         {
  1835.             Store ("++++++++ Decrement (Local6)", Debug)
  1836.             Decrement (Local6)
  1837.         }
  1838.  
  1839.  
  1840.         Store ("++++++++ [LVL1] If (LGreater (0x2, 0x1))", Debug)
  1841.         If (LGreater (0x2, 0x1))
  1842.         {
  1843.             Store ("++++++++ [LVL2] If (LEqual (0x11111111, 0x22222222))", Debug)
  1844.             If (LEqual (0x11111111, 0x22222222))
  1845.             {
  1846.                 Store ("++++++++ ERROR: If (LEqual (0x11111111, 0x22222222)) returned TRUE", Debug)
  1847.             }
  1848.  
  1849.             else
  1850.             {
  1851.                 Store ("++++++++ [LVL3] If (LNot (0x0))", Debug)
  1852.                 If (LNot (0x0))
  1853.                 {
  1854.                     Store ("++++++++ [LVL4] If (LAnd (0xEEEEEEEE, 0x2))", Debug)
  1855.                     If (LAnd (0xEEEEEEEE, 0x2))
  1856.                     {
  1857.                         Store ("++++++++ [LVL5] If (LLess (0x44444444, 0x3))", Debug)
  1858.                         If (LLess (0x44444444, 0x3))
  1859.                         {
  1860.                             Store ("++++++++ ERROR: If (LLess (0x44444444, 0x3)) returned TRUE", Debug)
  1861.                         }
  1862.  
  1863.                         else
  1864.                         {
  1865.                             Store ("++++++++ Exiting from nested IF/ELSE statements", Debug)
  1866.                         }
  1867.                     }
  1868.                 }
  1869.             }
  1870.         }
  1871.  
  1872.  
  1873.         Store ("++++++++ [LVL1] If (LGreater (0x2, 0x1))", Debug)
  1874.         If (LGreater (0x2, 0x1))
  1875.         {
  1876.             Store ("++++++++ [LVL2] If (LEqual (0x11111111, 0x22222222))", Debug)
  1877.             If (LEqual (0x11111111, 0x22222222))
  1878.             {
  1879.                 Store ("++++++++ ERROR: If (LEqual (0x11111111, 0x22222222)) returned TRUE", Debug)
  1880.             }
  1881.  
  1882.             else
  1883.             {
  1884.                 Store ("++++++++ [LVL3] If (LNot (0x0))", Debug)
  1885.                 If (LNot (0x0))
  1886.                 {
  1887.                     Store ("++++++++ [LVL4] If (LAnd (0xEEEEEEEE, 0x2))", Debug)
  1888.                     If (LAnd (0xEEEEEEEE, 0x2))
  1889.                     {
  1890.                         Store ("++++++++ [LVL5] If (LLess (0x44444444, 0x3))", Debug)
  1891.                         If (LLess (0x44444444, 0x3))
  1892.                         {
  1893.                             Store ("++++++++ ERROR: If (LLess (0x44444444, 0x3)) returned TRUE", Debug)
  1894.                         }
  1895.  
  1896.                         else
  1897.                         {
  1898.                             Store ("++++++++ Returning from nested IF/ELSE statements", Debug)
  1899.                             Return (Local6)
  1900.                         }
  1901.                     }
  1902.                 }
  1903.             }
  1904.         }
  1905.  
  1906.     }
  1907.  
  1908.  
  1909.     Method (REFS)
  1910.     {
  1911.         Name (BBUF, Buffer() {0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7})
  1912.  
  1913.         Name (NEST, Package ()
  1914.         {
  1915.             Package ()
  1916.             {
  1917.                 0x01, 0x02, 0x03, 0x04, 0x05, 0x06
  1918.             },
  1919.             Package ()
  1920.             {
  1921.                 0x11, 0x12, 0x12, 0x14, 0x15, 0x16
  1922.             }
  1923.         })
  1924.  
  1925.     /* Parser thinks this is a method invocation!! */
  1926.  
  1927.         Store (RefOf (MAIN), Local5)
  1928.  
  1929.         // For this to work, ABCD must NOT exist.
  1930.  
  1931.         Store (CondRefOf (ABCD, Local0), Local1)
  1932.         if (LNotEqual (Local1, 0))
  1933.         {
  1934.             ERR_ (2)
  1935.         }
  1936.  
  1937.         Store (CondRefOf (BBUF, Local0), Local1)
  1938.         if (LNotEqual (Local1, Ones))
  1939.         {
  1940.             ERR_ (2)
  1941.         }
  1942.  
  1943.         Store (DeRefOf (Index (BBUF, 3)), Local6)
  1944.         if (LNotEqual (Local6, 0xB3))
  1945.         {
  1946.             ERR_ (2)
  1947.         }
  1948.  
  1949.         Store (DeRefOf (Index (DeRefOf (Index (NEST, 1)), 3)), Local0)
  1950.         if (LNotEqual (Local0, 0x14))
  1951.         {
  1952.             ERR_ (2)
  1953.         }
  1954.  
  1955.  
  1956.         Store (0x11223344, Local0)
  1957.         Store (RefOf (Local0), Local1)
  1958.  
  1959.         Store (DerefOf (Local1), Local2)
  1960.         If (LNotEqual (Local2, 0x11223344))
  1961.         {
  1962.             ERR_ (2)
  1963.         }
  1964.  
  1965.  
  1966.     /* Parser thinks this is a method invocation!! */
  1967.  
  1968.     //  RefOf (MAIN)
  1969.  
  1970.  
  1971.     //  RefOf (R___)
  1972.     //  RefOf (BBUF)
  1973.  
  1974.     //  Store (RefOf (Local0), Local1)
  1975.  
  1976.     //  CondRefOf (BBUF, Local2)
  1977.     //  CondRefOf (R___, Local3)
  1978.  
  1979.     //  Store (DerefOf (Local1), Local4)
  1980.  
  1981.     //  Return (Local4)
  1982.     }
  1983.  
  1984.  
  1985.     Method (INDX, 0)
  1986.     {
  1987.         Name(STAT,Package(4){})
  1988.         Store(0x44443333,Index(STAT,0))
  1989.     }
  1990.  
  1991. //=================================================================
  1992. //=================================================================
  1993. //===================== iPCO TESTS ================================
  1994. //=================================================================
  1995. //=================================================================
  1996. //
  1997. //
  1998. // test IfElseOp.asl
  1999. //
  2000. //  test for IfOp and ElseOp, including validation of object stack cleanup
  2001. //
  2002.     Device (IFEL)
  2003.     {
  2004.         Name (DWRD, 1)
  2005.         Name (RSLT, 0)
  2006.  
  2007.         //  IFNR control method executes IfOp branch with NO nested Return
  2008.         //  and no Else branch
  2009.         Method (IFNR)
  2010.         {
  2011.             Store (DWRD, RSLT)
  2012.             If (LEqual (DWRD, 1))
  2013.             {
  2014.                 Store (0, RSLT)
  2015.             }
  2016.         }   //  IFNR
  2017.  
  2018.         //  NINR control method does not execute If branch and has no Else branch
  2019.         Method (NINR)
  2020.         {
  2021.             Store (0, RSLT)
  2022.             If (LNotEqual (DWRD, 1))
  2023.             {
  2024.                 Store (DWRD, RSLT)
  2025.             }
  2026.         }   //  NINR
  2027.  
  2028.         //  IENR control method executes IfOp branch with NO nested Return
  2029.         Method (IENR)
  2030.         {
  2031.             If (LEqual (DWRD, 1))
  2032.             {
  2033.                 Store (0, RSLT)
  2034.             }
  2035.             Else
  2036.             {
  2037.                 Store (DWRD, RSLT)
  2038.             }
  2039.         }   //  IENR
  2040.  
  2041.         //  ELNR control method executes ElseOp branch with NO nested Return
  2042.         Method (ELNR)
  2043.         {
  2044.             If (LNotEqual (DWRD, 1))
  2045.             {
  2046.                 Store (DWRD, RSLT)
  2047.             }
  2048.             Else
  2049.             {
  2050.                 Store (0, RSLT)
  2051.             }
  2052.         }   //  ELNR
  2053.  
  2054.         //  IFRT control method executes IfOp branch with nested Return with
  2055.         //  no Else branch
  2056.         Method (IFRT)
  2057.  
  2058.         {
  2059.             If (LEqual (DWRD, 1))
  2060.             {
  2061.                 Return (0)
  2062.             }
  2063.             Return (DWRD)
  2064.         }   //  IFRT
  2065.  
  2066.         //  IERT control method executes IfOp branch with nested Return with
  2067.         //  Else branch
  2068.         Method (IERT)
  2069.         {
  2070.             If (LEqual (DWRD, 1))
  2071.             {
  2072.                 Return (0)
  2073.             }
  2074.             Else
  2075.             {
  2076.                 Return (DWRD)
  2077.             }
  2078.         }   //  IERT
  2079.  
  2080.         //  ELRT control method executes ElseOp branch with nested Return
  2081.         Method (ELRT)
  2082.         {
  2083.             If (LNotEqual (DWRD, 1))
  2084.             {
  2085.                 Return (DWRD)
  2086.             }
  2087.             Else
  2088.             {
  2089.                 Return (0)
  2090.             }
  2091.         }   //  ELRT
  2092.  
  2093.         Method (TEST)
  2094.         {
  2095.             Store ("++++++++ IfElseOp Test", Debug)
  2096.  
  2097.             //  IfOp with NO return value
  2098.             IFNR()
  2099.             If (LNotEqual (RSLT, 0))
  2100.             {
  2101.                 Return (RSLT)
  2102.             }
  2103.  
  2104.             //  IfOp with NO return value
  2105.             NINR()
  2106.             If (LNotEqual (RSLT, 0))
  2107.             {
  2108.                 Return (RSLT)
  2109.             }
  2110.  
  2111.             //  IfOp with NO return value
  2112.             IENR()
  2113.             If (LNotEqual (RSLT, 0))
  2114.             {
  2115.                 Return (RSLT)
  2116.             }
  2117.  
  2118.             //  ElseOp with NO return value
  2119.             ELNR()
  2120.             If (LNotEqual (RSLT, 0))
  2121.             {
  2122.                 Return (RSLT)
  2123.             }
  2124.  
  2125.             //  IfOp with return value
  2126.             Store (IFRT, RSLT)
  2127.             If (LNotEqual (RSLT, 0))
  2128.             {
  2129.                 Return (RSLT)
  2130.             }
  2131.  
  2132.             //  IfOp with return value
  2133.             Store (IERT, RSLT)
  2134.             If (LNotEqual (RSLT, 0))
  2135.             {
  2136.                 Return (RSLT)
  2137.             }
  2138.  
  2139.             //  ElseOp with return value
  2140.             Store (ELRT, RSLT)
  2141.             If (LNotEqual (RSLT, 0))
  2142.             {
  2143.                 Return (RSLT)
  2144.             }
  2145.  
  2146.             Return (0)
  2147.         }   //  TEST
  2148.     }   //  IFEL
  2149.  
  2150. //
  2151. // test NoSave.asl
  2152. //
  2153. //
  2154. //  Internal test cases to validate IfOp (Operator (,,)) where Operator
  2155. //  target is ZeroOp to throw away the results.
  2156. //  Includes internal test cases for logical operators with no destination
  2157. //  operands.
  2158. //
  2159.     Device (NOSV)
  2160.     {
  2161.         Method (TEST)
  2162.         {
  2163.             Store ("++++++++ NoSave Test", Debug)
  2164.  
  2165.             Name (WRD, 0x1234)
  2166.  
  2167.             //
  2168.             //  Begin test of nested operators without saving results
  2169.             //
  2170.  
  2171.             //  Test If (And ()) with no save of And result
  2172.             If (And (3, 1, ))
  2173.             {
  2174.                 Store (1, WRD)  //  pass -- just do something
  2175.             }
  2176.             else
  2177.             {
  2178.                 Return (1)      //  fail
  2179.             }
  2180.  
  2181.             //  Test If (And ()) with no save of And result
  2182.             If (And (4, 1, ))
  2183.             {
  2184.                 Return (2)      //  fail
  2185.             }
  2186.             else
  2187.             {
  2188.                 Store (2, WRD)  //  pass -- just do something
  2189.             }
  2190.  
  2191.  
  2192.             //  Test If (NAnd ()) with no save of NAnd result
  2193.             If (NAnd (3, 1, ))
  2194.             {
  2195.                 Store (3, WRD)  //  pass -- just do something
  2196.             }
  2197.             else
  2198.             {
  2199.                 Return (3)      //  fail
  2200.             }
  2201.  
  2202.             //  Test If (NAnd ()) with no save of NAnd result
  2203.             If (NAnd (0xFFFFFFFF, 0xFFFFFFFF, ))
  2204.             {
  2205.                 Return (4)      // fail
  2206.             }
  2207.             else
  2208.             {
  2209.                 Store (4, WRD)  //  pass -- just do something
  2210.             }
  2211.  
  2212.  
  2213.             //  Test If (NOr ()) with no save of NOr result
  2214.             If (NOr (0, 1, ))
  2215.             {
  2216.                 Store (5, WRD)  //  pass -- just do something
  2217.             }
  2218.             else
  2219.             {
  2220.                 Return (5)      //  fail
  2221.             }
  2222.  
  2223.             //  Test If (NOr ()) with no save of NOr result
  2224.             If (NOr (0xFFFFFFFE, 1, ))
  2225.             {
  2226.                 Return (6)      // fail
  2227.             }
  2228.             else
  2229.             {
  2230.                 Store (6, WRD)  //  pass -- just do something
  2231.             }
  2232.  
  2233.  
  2234.             //  Test If (Not ()) with no save of Not result
  2235.             If (Not (1, ))
  2236.             {
  2237.                 Store (7, WRD)  //  pass -- just do something
  2238.             }
  2239.             else
  2240.             {
  2241.                 Return (7)      //  fail
  2242.             }
  2243.  
  2244.             //  Test If (Not ()) with no save of Not result
  2245.             If (Not (0xFFFFFFFF, ))
  2246.             {
  2247.                 Return (8)      // fail
  2248.             }
  2249.             else
  2250.             {
  2251.                 Store (8, WRD)  //  pass -- just do something
  2252.             }
  2253.  
  2254.  
  2255.             //  Test If (Or ()) with no save of Or result
  2256.             If (Or (3, 1, ))
  2257.             {
  2258.                 Store (9, WRD)  //  pass -- just do something
  2259.             }
  2260.             else
  2261.             {
  2262.                 Return (9)      //  fail
  2263.             }
  2264.  
  2265.             //  Test If (Or ()) with no save of Or result
  2266.             If (Or (0, 0, ))
  2267.             {
  2268.                 Return (10)     //  fail
  2269.             }
  2270.             else
  2271.             {
  2272.                 Store (10, WRD) //  pass -- just do something
  2273.             }
  2274.  
  2275.  
  2276.             //  Test If (XOr ()) with no save of XOr result
  2277.             If (XOr (3, 1, ))
  2278.             {
  2279.                 Store (11, WRD) //  pass -- just do something
  2280.             }
  2281.             else
  2282.             {
  2283.                 Return (11)     // fail
  2284.             }
  2285.  
  2286.             //  Test If (XOr ()) with no save of XOr result
  2287.             If (XOr (3, 3, ))
  2288.             {
  2289.                 Return (12)     // fail
  2290.             }
  2291.             else
  2292.             {
  2293.                 Store (12, WRD) //  pass -- just do something
  2294.             }
  2295.  
  2296.  
  2297.             //
  2298.             //  Begin test of logical operators with no destination operands
  2299.             //
  2300.  
  2301.             //  Test If (LAnd ()) with no save of LAnd result
  2302.             If (LAnd (3, 3))
  2303.             {
  2304.                 Store (21, WRD) //  pass -- just do something
  2305.             }
  2306.             else
  2307.             {
  2308.                 Return (21)     // fail
  2309.             }
  2310.  
  2311.             //  Test If (LAnd ()) with no save of LAnd result
  2312.             If (LAnd (3, 0))
  2313.             {
  2314.                 Return (22)     // fail
  2315.             }
  2316.             else
  2317.             {
  2318.                 Store (22, WRD) //  pass -- just do something
  2319.             }
  2320.  
  2321.             //  Test If (LAnd ()) with no save of LAnd result
  2322.             If (LAnd (0, 3))
  2323.             {
  2324.                 Return (23)     //  fail
  2325.             }
  2326.             else
  2327.             {
  2328.                 Store (23, WRD) //  pass -- just do something
  2329.             }
  2330.  
  2331.             //  Test If (LAnd ()) with no save of LAnd result
  2332.             If (LAnd (0, 0))
  2333.             {
  2334.                 Return (24)     //  fail
  2335.             }
  2336.             else
  2337.             {
  2338.                 Store (24, WRD) //  pass -- just do something
  2339.             }
  2340.  
  2341.  
  2342.             //  Test If (LEqual ()) with no save of LEqual result
  2343.             If (LEqual (3, 3))
  2344.             {
  2345.                 Store (31, WRD) //  pass -- just do something
  2346.             }
  2347.             else
  2348.             {
  2349.                 Return (31)     //  fail
  2350.             }
  2351.  
  2352.             //  Test If (LEqual ()) with no save of LEqual result
  2353.             If (LEqual (1, 3))
  2354.             {
  2355.                 Return (32)     //  fail
  2356.             }
  2357.             else
  2358.             {
  2359.                 Store (32, WRD) //  pass -- just do something
  2360.             }
  2361.  
  2362.  
  2363.             //  Test If (LGreater ()) with no save of LGreater result
  2364.             If (LGreater (3, 1))
  2365.             {
  2366.                 Store (41, WRD) //  pass -- just do something
  2367.             }
  2368.             else
  2369.             {
  2370.                 Return (41)     //  fail
  2371.             }
  2372.  
  2373.             //  Test If (LGreater ()) with no save of LGreater result
  2374.             If (LGreater (4, 4))
  2375.             {
  2376.                 Return (42)     //  fail
  2377.             }
  2378.             else
  2379.             {
  2380.                 Store (42, WRD) //  pass -- just do something
  2381.             }
  2382.  
  2383.             //  Test If (LGreater ()) with no save of LGreater result
  2384.             If (LGreater (1, 4))
  2385.             {
  2386.                 Return (43)     //  fail
  2387.             }
  2388.             else
  2389.             {
  2390.                 Store (43, WRD) //  pass -- just do something
  2391.             }
  2392.  
  2393.             //  Test If (LGreaterEqual ()) with no save of LGreaterEqual result
  2394.             If (LGreaterEqual (3, 1))
  2395.             {
  2396.                 Store (44, WRD) //  pass -- just do something
  2397.             }
  2398.             else
  2399.             {
  2400.                 Return (44)     //  fail
  2401.             }
  2402.  
  2403.             //  Test If (LGreaterEqual ()) with no save of LGreaterEqual result
  2404.             If (LGreaterEqual (3, 3))
  2405.             {
  2406.                 Store (45, WRD) //  pass -- just do something
  2407.             }
  2408.             else
  2409.             {
  2410.                 Return (45)     //  fail
  2411.             }
  2412.  
  2413.             //  Test If (LGreaterEqual ()) with no save of LGreaterEqual result
  2414.             If (LGreaterEqual (3, 4))
  2415.             {
  2416.                 Return (46)     //  fail
  2417.             }
  2418.             else
  2419.             {
  2420.                 Store (46, WRD) //  pass -- just do something
  2421.             }
  2422.  
  2423.  
  2424.             //  Test If (LLess ()) with no save of LLess result
  2425.             If (LLess (1, 3))
  2426.             {
  2427.                 Store (51, WRD) //  pass -- just do something
  2428.             }
  2429.             else
  2430.             {
  2431.                 Return (51)     //  fail
  2432.             }
  2433.  
  2434.             //  Test If (LLess ()) with no save of LLess result
  2435.             If (LLess (2, 2))
  2436.             {
  2437.                 Return (52)     //  fail
  2438.             }
  2439.             else
  2440.             {
  2441.                 Store (52, WRD) //  pass -- just do something
  2442.             }
  2443.  
  2444.             //  Test If (LLess ()) with no save of LLess result
  2445.             If (LLess (4, 2))
  2446.             {
  2447.                 Return (53)     //  fail
  2448.             }
  2449.             else
  2450.             {
  2451.                 Store (53, WRD) //  pass -- just do something
  2452.             }
  2453.  
  2454.  
  2455.             //  Test If (LLessEqual ()) with no save of LLessEqual result
  2456.             If (LLessEqual (1, 3))
  2457.             {
  2458.                 Store (54, WRD) //  pass -- just do something
  2459.             }
  2460.             else
  2461.             {
  2462.                 Return (54)     //  fail
  2463.             }
  2464.  
  2465.             //  Test If (LLessEqual ()) with no save of LLessEqual result
  2466.             If (LLessEqual (2, 2))
  2467.             {
  2468.                 Store (55, WRD) //  pass -- just do something
  2469.             }
  2470.             else
  2471.             {
  2472.                 Return (55)     //  fail
  2473.             }
  2474.  
  2475.             //  Test If (LLessEqual ()) with no save of LLessEqual result
  2476.             If (LLessEqual (4, 2))
  2477.             {
  2478.                 Return (56)     //  fail
  2479.             }
  2480.             else
  2481.             {
  2482.                 Store (56, WRD) //  pass -- just do something
  2483.             }
  2484.  
  2485.  
  2486.             //  Test If (LNot ()) with no save of LNot result
  2487.             If (LNot (0))
  2488.             {
  2489.                 Store (61, WRD) //  pass -- just do something
  2490.             }
  2491.             else
  2492.             {
  2493.                 Return (61)     //  fail
  2494.             }
  2495.  
  2496.             //  Test If (LNot ()) with no save of LNot result
  2497.             If (LNot (1))
  2498.             {
  2499.                 Return (62)     //  fail
  2500.             }
  2501.             else
  2502.             {
  2503.                 Store (62, WRD) //  pass -- just do something
  2504.             }
  2505.  
  2506.  
  2507.             //  Test If (LNotEqual ()) with no save of LNotEqual result
  2508.             If (LNotEqual (3, 3))
  2509.             {
  2510.                 Return (63)     //  fail
  2511.             }
  2512.             else
  2513.             {
  2514.                 Store (63, WRD) //  pass -- just do something
  2515.             }
  2516.  
  2517.             //  Test If (LNotEqual ()) with no save of LNotEqual result
  2518.             If (LNotEqual (1, 3))
  2519.             {
  2520.                 Store (64, WRD) //  pass -- just do something
  2521.             }
  2522.             else
  2523.             {
  2524.                 Return (64)     //  fail
  2525.             }
  2526.  
  2527.  
  2528.             //  Test If (LOr ()) with no save of LOr result
  2529.             If (LOr (3, 1))
  2530.             {
  2531.                 Store (71, WRD) //  pass -- just do something
  2532.             }
  2533.             else
  2534.             {
  2535.                 Return (71)     //  fail
  2536.             }
  2537.  
  2538.             //  Test If (LOr ()) with no save of LOr result
  2539.             If (LOr (0, 1))
  2540.             {
  2541.                 Store (72, WRD) //  pass -- just do something
  2542.             }
  2543.             else
  2544.             {
  2545.                 Return (72)     //  fail
  2546.             }
  2547.  
  2548.             //  Test If (LOr ()) with no save of LOr result
  2549.             If (LOr (3, 0))
  2550.             {
  2551.                 Store (73, WRD) //  pass -- just do something
  2552.             }
  2553.             else
  2554.             {
  2555.                 Return (73)     //  fail
  2556.             }
  2557.  
  2558.             //  Test If (LOr ()) with no save of LOr result
  2559.             If (LOr (0, 0))
  2560.             {
  2561.                 Return (74)     //  fail
  2562.             }
  2563.             else
  2564.             {
  2565.                 Store (74, WRD) //  pass -- just do something
  2566.             }
  2567.  
  2568.             Return (0)
  2569.         }   //  TEST
  2570.     }   //  NOSV
  2571.  
  2572.  
  2573. //
  2574. // test IndxFld.asl
  2575. //
  2576. //  IndexFld test
  2577. //      This is just a subset of the many RegionOp/Index Field test cases.
  2578. //      Tests index field element AccessAs macro.
  2579. //
  2580.     Device (IDXF)
  2581.     {   //  Test device name
  2582.  
  2583.         OperationRegion (SIO, SystemIO, 0x100, 2)
  2584.         Field (SIO, ByteAcc, NoLock, Preserve)
  2585.         {
  2586.             INDX,   8,
  2587.             DATA,   8
  2588.         }
  2589.         IndexField (INDX, DATA, AnyAcc, NoLock, WriteAsOnes)
  2590.         {
  2591.             AccessAs (ByteAcc, 0),
  2592.             IFE0,   8,
  2593.             IFE1,   8,
  2594.             IFE2,   8,
  2595.             IFE3,   8,
  2596.             IFE4,   8,
  2597.             IFE5,   8,
  2598.             IFE6,   8,
  2599.             IFE7,   8,
  2600.             IFE8,   8,
  2601.             IFE9,   8,
  2602.         }
  2603.  
  2604.         Method (TEST)
  2605.         {
  2606.             Store ("++++++++ IndxFld Test", Debug)
  2607.  
  2608.             Store (IFE0, Local0)
  2609.             Store (IFE1, Local1)
  2610.             Store (IFE2, Local2)
  2611.  
  2612.             Return (0)
  2613.         }   //  TEST
  2614.     }   //  IDXF
  2615.  
  2616. //
  2617. // test NestdLor.asl
  2618. //
  2619.     Scope (\_SB)    //  System Bus
  2620.     {   //  _SB system bus
  2621.  
  2622.         Name (ZER0, 0)
  2623.         Name (ZER1, 0)
  2624.         Name (ZER2, 0)
  2625.         Name (ONE0, 1)
  2626.  
  2627.         Device (NSTL)
  2628.         {
  2629.             Method (TEST)
  2630.             {
  2631.                 Store ("++++++++ NestdLor Test", Debug)
  2632.  
  2633.                 If (Lor (ZER0, Lor (ZER1, Lor (ZER2, ONE0))))
  2634.                 {   //  Indicate Pass
  2635.                     Store (0x00, Local0)
  2636.                 }
  2637.  
  2638.                 Else
  2639.                 {   //  Indicate Fail
  2640.                     Store (0x01, Local0)
  2641.                 }
  2642.  
  2643.                 Return (Local0)
  2644.             }   //  End Method TEST
  2645.         }   //  Device NSTL
  2646.     }   //  _SB system bus
  2647.  
  2648. //
  2649. // test RetBuf.asl
  2650. //
  2651. //  Test ReturnOp(Buffer)
  2652. //      This is required to support Control Method Batteries on
  2653. //          Dell Latitude Laptops (e.g., CP1-A)
  2654. //
  2655.     Device (RTBF)
  2656.     {
  2657.         Method (SUBR, 1)
  2658.         {
  2659.             Return (Arg0)
  2660.         }
  2661.  
  2662.         Method (RBUF)
  2663.         {   //  RBUF: Return Buffer from local variable
  2664.             Name (ABUF, Buffer() {"ARBITRARY_BUFFER"})
  2665.  
  2666.             //  store local buffer ABUF into Local0
  2667.             Store (ABUF, Local0)
  2668.  
  2669.             //  save Local0 object type value into Local1
  2670.             Store (ObjectType (Local0), Local1)
  2671.  
  2672.             //  validate Local0 is a Buffer
  2673.             If (LNotEqual (Local1, 3))  //  Buffer type is 3
  2674.             {
  2675.                 Return (1)      //  failure
  2676.             }
  2677.  
  2678.             //  store value returned by control method SUBR into Local0
  2679.             Store (SUBR (ABUF), Local0)
  2680.  
  2681.             //  save Local0 object type value into Local1
  2682.             Store (ObjectType (Local0), Local1)
  2683.  
  2684.             //  validate Local0 is a Buffer
  2685.             If (LNotEqual (Local1, 3))  //  Buffer type is 3
  2686.             {
  2687.                 Return (2)      //  failure
  2688.             }
  2689.  
  2690.             //  allocate buffer using Local1 as buffer size (run-time evaluation)
  2691.             Store (5, Local1)
  2692.             Name (BUFR, Buffer(Local1) {})
  2693.  
  2694.             //  store value returned by control method SUBR into Local0
  2695.             Store (SUBR (BUFR), Local0)
  2696.  
  2697.             //  save Local0 object type value into Local1
  2698.             Store (ObjectType (Local0), Local1)
  2699.  
  2700.             //  validate Local0 is a Buffer
  2701.             If (LNotEqual (Local1, 3))  //  Buffer type is 3
  2702.             {
  2703.                 Return (3)      //  failure
  2704.             }
  2705.  
  2706.             //  store BUFR Buffer into Local0
  2707.             Store (BUFR, Local0)
  2708.  
  2709.             //  save Local0 object type value into Local1
  2710.             Store (ObjectType (Local0), Local1)
  2711.  
  2712.             //  validate Local0 is a Buffer
  2713.             If (LNotEqual (Local1, 3))  //  Buffer type is 3
  2714.             {
  2715.                 Return (4)      //  failure
  2716.             }
  2717.  
  2718.  
  2719.             //  return Local0 Buffer
  2720.             Return (Local0)
  2721.         }   //  RBUF
  2722.  
  2723.         Method (TEST)
  2724.         {
  2725.             Store ("++++++++ RetBuf Test", Debug)
  2726.  
  2727.             //  store RBUF Buffer return value into Local0
  2728.             Store (RBUF, Local0)
  2729.  
  2730.             //  save Local0 object type value into Local1
  2731.             Store (ObjectType (Local0), Local1)
  2732.  
  2733.             //  validate Local0 is a Buffer
  2734.             If (LNotEqual (Local1, 3))  //  Buffer type is 3
  2735.             {
  2736.                 Return (10)     //  failure
  2737.             }
  2738.             Else
  2739.             {
  2740.                 Return (0)      //  success
  2741.             }
  2742.         }   //  TEST
  2743.     }   //  RTBF
  2744.  
  2745. //
  2746. // test RetLVal.asl
  2747. //
  2748. //  Test ReturnOp(Lvalue)
  2749. //      This is required to support _PSR on IBM ThinkPad 560D and
  2750. //      _DCK on Toshiba Tecra 8000.
  2751. //
  2752.  
  2753.     Device (GPE2)
  2754.     {
  2755.         Method (_L03)
  2756.         {
  2757.             Store ("Method GPE2._L03 invoked", Debug)
  2758.             Return ()
  2759.         }
  2760.  
  2761.         Method (_E05)
  2762.         {
  2763.             Store ("Method GPE2._E05 invoked", Debug)
  2764.             Return ()
  2765.         }
  2766.     }
  2767.  
  2768.     Device (PRW2)
  2769.     {
  2770.         Name (_PRW, Package(2) {Package(2){\GPE2, 0x05}, 3})
  2771.     }
  2772.  
  2773.  
  2774.     Scope (\_GPE)
  2775.     {
  2776.         Name (ACST, 0xFF)
  2777.  
  2778.         Method (_L08)
  2779.         {
  2780.             Store ("Method _GPE._L08 invoked", Debug)
  2781.             Return ()
  2782.         }
  2783.  
  2784.         Method (_E09)
  2785.         {
  2786.             Store ("Method _GPE._E09 invoked", Debug)
  2787.             Return ()
  2788.         }
  2789.  
  2790.         Method (_E11)
  2791.         {
  2792.             Store ("Method _GPE._E11 invoked", Debug)
  2793.             Notify (\PRW1, 2)
  2794.         }
  2795.  
  2796.         Method (_L22)
  2797.         {
  2798.             Store ("Method _GPE._L22 invoked", Debug)
  2799.             Return ()
  2800.         }
  2801.  
  2802.         Method (_L33)
  2803.         {
  2804.             Store ("Method _GPE._L33 invoked", Debug)
  2805.             Return ()
  2806.         }
  2807.  
  2808.         Method (_E64)
  2809.         {
  2810.             Store ("Method _GPE._E64 invoked", Debug)
  2811.             Return ()
  2812.         }
  2813.  
  2814.     }   //  _GPE
  2815.  
  2816.     Device (PRW1)
  2817.     {
  2818.         Name (_PRW, Package(2) {0x11, 3})
  2819.     }
  2820.  
  2821.     Device (PWRB)
  2822.     {
  2823.         Name (_HID, EISAID("PNP0C0C"))
  2824.         Name (_PRW, Package(2) {0x33, 3})
  2825.     }
  2826.  
  2827.  
  2828.     Scope (\_SB)    //  System Bus
  2829.     {   //  _SB system bus
  2830.  
  2831.         Device (ACAD)
  2832.         {   //  ACAD:   AC adapter device
  2833.             Name (_HID, "ACPI0003") //  AC adapter device
  2834.  
  2835.             Name (_PCL, Package () {\_SB})
  2836.  
  2837.             OperationRegion (AREG, SystemIO, 0x0372, 2)
  2838.             Field (AREG, ByteAcc, NoLock, Preserve)
  2839.             {
  2840.                 AIDX,   8,
  2841.                 ADAT,   8
  2842.             }
  2843.             IndexField (AIDX, ADAT, ByteAcc, NoLock, Preserve)
  2844.             {
  2845.                      ,  1,  //  skips
  2846.                 ACIN,   1,
  2847.                      ,  2,  //  skips
  2848.                 CHAG,   1,
  2849.                      ,  3,  //  skips
  2850.                      ,  7,  //  skips
  2851.                 ABAT,   1,
  2852.             }   //  IndexField
  2853.  
  2854.             Method (_PSR)
  2855.             {
  2856.                 Store (\_GPE.ACST, Local0)
  2857.                 Store (ACIN, Local1)
  2858.                 If (LNotEqual (\_GPE.ACST, Local1))
  2859.                 {
  2860.                     Store (Local1, \_GPE.ACST)
  2861.                     // This Notify is commented because it causes a
  2862.                     //  method error when running on a system without the
  2863.                     //  specific device.
  2864.                     // Notify (\_SB_.ACAD, 0)
  2865.                 }
  2866.                 Return (Local0)
  2867.             }   //  _PSR
  2868.  
  2869.             Method (_STA)
  2870.             {
  2871.                 Return (0x0F)
  2872.             }
  2873.  
  2874.             Method (_INI)
  2875.             {
  2876.                 Store (ACIN, \_GPE.ACST)
  2877.             }
  2878.         }   //  ACAD:   AC adapter device
  2879.  
  2880.         //  test implicit return from control method
  2881.         Method (DIS_, 1)
  2882.         {
  2883.             Store (Arg0, Local0)
  2884.         }
  2885.  
  2886.         Device (RTLV)
  2887.         {
  2888.             //  test implicit return inside nested if with explicit return of Lvalue
  2889.             Method (_DCK, 1)
  2890.             //  Arg0:   1 == dock, 0 == undock
  2891.             {
  2892.                 If (Arg0)
  2893.                 {   //  dock
  2894.                     Store (0x87, Local0)
  2895.  
  2896.                     If (Local0)
  2897.                     {
  2898.                         DIS_ (0x23)
  2899.                         Return (1)
  2900.                     }
  2901.  
  2902.                     Return (0)
  2903.                 }   //  dock
  2904.                 Else
  2905.                 {   //  undock
  2906.                     Store (Arg0, Local0)
  2907.  
  2908.                     If (Local0)
  2909.                     {
  2910.                         DIS_ (0x23)
  2911.                         Return (1)
  2912.                     }
  2913.  
  2914.                     Return (0)
  2915.                 }   //  undock
  2916.             }   //  _DCK control method
  2917.  
  2918.             Method (TEST)
  2919.             {
  2920.                 Store ("++++++++ RetLVal Test", Debug)
  2921.  
  2922.                 //  store _PSR return value into Local0
  2923.                 Store (\_SB_.ACAD._PSR, Local0)
  2924.  
  2925.                 //  save Local0 object type value into Local1
  2926.                 Store (ObjectType (Local0), Local1)
  2927.  
  2928.                 //  validate Local0 is a Number
  2929.                 If (LNotEqual (Local1, 1))  //  Number/Integer type is 1
  2930.                 {
  2931.                     Return (1)      //  failure
  2932.                 }
  2933.  
  2934.                 //  test implicit return inside nested if with explicit return of Lvalue
  2935.                 Store (_DCK (1), Local2)
  2936.  
  2937.                 //  save Local2 object type value into Local3
  2938.                 Store (ObjectType (Local2), Local3)
  2939.  
  2940.                 //  validate Local2 is a Number
  2941.                 If (LNotEqual (Local3, 1))  //  Number/Integer type is 1
  2942.                 {
  2943.                     Return (2)      //  failure
  2944.                 }
  2945.  
  2946.                 If (LNotEqual (Local2, 1))
  2947.                 {
  2948.                     Return (3)      //  failure
  2949.                 }
  2950.  
  2951.                 Return (0)  //  success
  2952.             }   //  TEST
  2953.         }   //  RTLV
  2954.     }   //  _SB system bus
  2955.  
  2956. //
  2957. // test RetPkg.asl
  2958. //
  2959. //  Test ReturnOp(Package)
  2960. //      This is required to support _PRT on Dell Optiplex Workstations (e.g. GX1)
  2961. //
  2962.  
  2963.     Scope (\_SB)    //  System Bus
  2964.     {   //  _SB system bus
  2965.         Device(LNKA)
  2966.         {
  2967.             Name (_HID, EISAID("PNP0C0F"))  //  PCI interrupt link
  2968.             Name (_UID, 1)
  2969.         }
  2970.         Device(LNKB)
  2971.         {
  2972.             Name (_HID, EISAID("PNP0C0F"))  //  PCI interrupt link
  2973.             Name (_UID, 2)
  2974.         }
  2975.         Device(LNKC)
  2976.         {
  2977.             Name (_HID, EISAID("PNP0C0F"))  //  PCI interrupt link
  2978.             Name (_UID, 3)
  2979.         }
  2980.         Device(LNKD)
  2981.         {
  2982.             Name (_HID, EISAID("PNP0C0F"))  //  PCI interrupt link
  2983.             Name (_UID, 4)
  2984.         }
  2985.  
  2986.         Device (PCI1)
  2987.         {   //  PCI1:   Root PCI Bus
  2988.             Name (_HID, "PNP0A03")  //  Need _HID for root device (String format)
  2989.             Name (_ADR,0x00000000)
  2990.             Name (_CRS,0)
  2991.  
  2992.             Name (_PRT, Package ()
  2993.             {
  2994.                 Package () {0x0004ffff, 0, LNKA, 0},            //  Slot 1, INTA
  2995.                 Package () {0x0004ffff, 1, LNKB, 0},            //  Slot 1, INTB
  2996.                 Package () {0x0004ffff, 2, LNKC, 0},            //  Slot 1, INTC
  2997.                 Package () {0x0004ffff, 3, LNKD, 0},            //  Slot 1, INTD
  2998.                 Package () {0x0005ffff, 0, \_SB_.LNKB, 0},  //  Slot 2, INTA
  2999.                 Package () {0x0005ffff, 1, \_SB_.LNKC, 0},  //  Slot 2, INTB
  3000.                 Package () {0x0005ffff, 2, \_SB_.LNKD, 0},  //  Slot 2, INTC
  3001.                 Package () {0x0006ffff, 3, \_SB_.LNKA, 0},  //  Slot 2, INTD
  3002.                 Package () {0x0006ffff, 0, LNKC, 0},            //  Slot 3, INTA
  3003.                 Package () {0x0006ffff, 1, LNKD, 0},            //  Slot 3, INTB
  3004.                 Package () {0x0006ffff, 2, LNKA, 0},            //  Slot 3, INTC
  3005.                 Package () {0x0006ffff, 3, LNKB, 0},            //  Slot 3, INTD
  3006.             })
  3007.  
  3008.             Device (PX40)
  3009.             {   // Map f0 space, Start PX40
  3010.                 Name (_ADR,0x00070000)  //  Address+function.
  3011.             }
  3012.         }   //  PCI0:   Root PCI Bus
  3013.  
  3014.         Device (RETP)
  3015.         {
  3016.             Method (RPKG)
  3017.             {   //  RPKG: Return Package from local variable
  3018.  
  3019.                 //  store _PRT package into Local0
  3020.                 Store (\_SB_.PCI1._PRT, Local0)
  3021.  
  3022.                 //  return Local0 Package
  3023.                 Return (Local0)
  3024.             }   //  RPKG
  3025.  
  3026.             Method (TEST)
  3027.             {
  3028.                 Store ("++++++++ RetPkg Test", Debug)
  3029.  
  3030.                 //  store RPKG package return value into Local0
  3031.                 Store (RPKG, Local0)
  3032.  
  3033.                 //  save Local0 object type value into Local1
  3034.                 Store (ObjectType (Local0), Local1)
  3035.  
  3036.                 //  validate Local0 is a Package
  3037.                 If (LNotEqual (Local1, 4))  //  Package type is 4
  3038.                     {   Return (1)  }   //  failure
  3039.                 Else
  3040.                     {   Return (0)  }   //  success
  3041.             }   //  TEST
  3042.         }   //  RETP
  3043.     } // _SB_
  3044.  
  3045. //
  3046. // test WhileRet.asl
  3047. //
  3048. //  WhileRet.asl tests a ReturnOp nested in a IfOp nested in a WhileOp.
  3049. //
  3050.     Device (WHLR)
  3051.     {
  3052.         Name (LCNT, 0)
  3053.         Method (WIR)
  3054.         {   //  WIR:    control method that returns inside of IfOp inside of WhileOp
  3055.             While (LLess (LCNT, 4))
  3056.             {
  3057.                     If (LEqual (LCNT, 2))
  3058.                     {
  3059.                         Return (0)
  3060.                     }
  3061.  
  3062.                 Increment (LCNT)
  3063.             }
  3064.  
  3065.             Return (LCNT)
  3066.         }   //  WIR:    control method that returns inside of IfOp inside of WhileOp
  3067.  
  3068.         Method (TEST)
  3069.         {
  3070.             Store ("++++++++ WhileRet Test", Debug)
  3071.  
  3072.             Store (WIR, Local0)
  3073.  
  3074.             Return (Local0)
  3075.         }   //  TEST
  3076.     }   //  WHLR
  3077.  
  3078. //
  3079. // test AndOrOp.asl
  3080. //
  3081. //This code tests the bitwise AndOp and OrOp Operator terms
  3082. //
  3083. //Syntax of Andop term
  3084. //And - Bitwise And
  3085. //AndTerm   := And(
  3086. //  Source1,    //TermArg=>Integer
  3087. //  Source2,    //TermArg=>Integer
  3088. //  Result  //Nothing | SuperName
  3089. //) => Integer
  3090. //Source1 and Source2 are evaluated as integer data types,
  3091. // a bit-wise AND is performed, and the result is optionally
  3092. //stored into Result.
  3093. //
  3094. //
  3095. //Syntax of OrOp
  3096. //Or - Bit-wise Or
  3097. //OrTerm    := Or(
  3098. //  Source1,    //TermArg=>Integer
  3099. //  Source2 //TermArg=>Integer
  3100. //  Result  //Nothing | SuperName
  3101. //) => Integer
  3102. //Source1 and Source2 are evaluated as integer data types,
  3103. // a bit-wide OR is performed, and the result is optionally
  3104. //stored in Result
  3105. //
  3106.     Device (ANDO)
  3107.     {
  3108.         OperationRegion (TMEM, SystemMemory, 0xC4, 0x02)
  3109.         Field (TMEM, ByteAcc, NoLock, Preserve)
  3110.         {
  3111.                 ,   3,
  3112.             TOUD,   13
  3113.         }
  3114.  
  3115.         //Create System Memory Operation Region and field overlays
  3116.         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
  3117.         Field (RAM, AnyAcc, NoLock, Preserve)
  3118.         {
  3119.             SMDW,   32, //  32-bit DWORD
  3120.             SMWD,   16, //  16-bit WORD
  3121.             SMBY,   8,  //  8-bit BYTE
  3122.         }// Field(RAM)
  3123.  
  3124.  
  3125.         //And with Byte Data
  3126.         Name (BYT1, 0xff)
  3127.         Name (BYT2, 0xff)
  3128.         Name (BRSL, 0x00)
  3129.  
  3130.         //And with Word Data
  3131.         Name (WRD1, 0xffff)
  3132.         Name (WRD2, 0xffff)
  3133.         Name (WRSL, 0x0000)
  3134.  
  3135.         //And with DWord Data
  3136.         Name (DWD1, 0xffffffff)
  3137.         Name (DWD2, 0xffffffff)
  3138.         Name (DRSL, 0x00000000)
  3139.  
  3140.         Method (ANDP)
  3141.         {
  3142.             //Check with 1 And 1 on byte data
  3143.             And(BYT1, BYT2, BRSL)
  3144.             if(LNotEqual(BRSL,0xff))
  3145.             {Return(1)}
  3146.  
  3147.             //Check with 1 And 1 on Word data
  3148.             And(WRD1, WRD2, WRSL)
  3149.             if(LNotEqual(WRSL,0xffff))
  3150.             {
  3151.                 Return (1)      //  failure
  3152.             }
  3153.  
  3154.             //Check with 1 And 1 Dword
  3155.             And(DWD1, DWD2, DRSL)
  3156.             if(LNotEqual(DRSL,0xffffffff))
  3157.             {
  3158.                 Return (1)      //  failure
  3159.             }
  3160.  
  3161.             //Check with 0 And 0 on byte data
  3162.             Store(0x00,BYT1)
  3163.             Store(0x00,BYT2)
  3164.             Store(0x00,BRSL)
  3165.             And(BYT1, BYT2, BRSL)
  3166.             if(LNotEqual(BRSL,0x00))
  3167.             {
  3168.                 Return (1)      //  failure
  3169.             }
  3170.  
  3171.             //Check with 0 And 0 on Word data
  3172.             Store (0x0000,WRD1)
  3173.             Store (0x0000,WRD2)
  3174.             Store (0x0000,WRSL)
  3175.             And(WRD1, WRD2, WRSL)
  3176.             if(LNotEqual(WRSL,0x0000))
  3177.             {
  3178.                 Return (1)      //  failure
  3179.             }
  3180.  
  3181.             //Check with 0 And 0 Dword
  3182.             Store (0x00000000,DWD1)
  3183.             Store (0x00000000,DWD2)
  3184.             Store (0x00000000,DRSL)
  3185.             And(DWD1, DWD2, DRSL)
  3186.             if(LNotEqual(DRSL,0x00000000))
  3187.             {
  3188.                 Return (1)      //  failure
  3189.             }
  3190.  
  3191.  
  3192.             //Check with 1 And 0 on byte data
  3193.             Store(0x55,BYT1)
  3194.             Store(0xAA,BYT2)
  3195.             Store(0x00,BRSL)
  3196.             And(BYT1, BYT2, BRSL)
  3197.             if(LNotEqual(BRSL,0x00))
  3198.             {
  3199.                 Return (1)      //  failure
  3200.             }
  3201.  
  3202.             //Check with 1 And 0 on Word data
  3203.             Store (0x5555,WRD1)
  3204.             Store (0xAAAA,WRD2)
  3205.             Store (0x0000,WRSL)
  3206.             And(WRD1, WRD2, WRSL)
  3207.             if(LNotEqual(WRSL,0x0000))
  3208.             {
  3209.                 Return (1)      //  failure
  3210.             }
  3211.  
  3212.             //Check with 1 And 0 on Dword
  3213.             Store (0x55555555,DWD1)
  3214.             Store (0xAAAAAAAA,DWD2)
  3215.             Store (0x00000000,DRSL)
  3216.             And(DWD1, DWD2, DRSL)
  3217.             if(LNotEqual(DRSL,0x00000000))
  3218.             {
  3219.                 Return (1)      //  failure
  3220.             }
  3221.  
  3222.             Store (0x1FFF, TOUD)
  3223.             Store (TOUD, Local0)
  3224.             if(LNotEqual(Local0,0x1FFF))
  3225.             {
  3226.                 Return (1)      //  failure
  3227.             }
  3228.  
  3229.             //TBD- Do We need to check for system memory data also for each test case ??
  3230.  
  3231.             Return(0)
  3232.  
  3233.         }//ANDP
  3234.  
  3235.         Method (OROP)
  3236.         {
  3237.  
  3238.             //Check with 1 Ored with 1 on byte data
  3239.             Store(0xff,BYT1)
  3240.             Store(0xff,BYT2)
  3241.             Store(0x00,BRSL)
  3242.             Or(BYT1, BYT2, BRSL)
  3243.             if(LNotEqual(BRSL,0xff))
  3244.             {
  3245.                 Return (1)      //  failure
  3246.             }
  3247.  
  3248.  
  3249.             //Check with 1 Ored with 1 on Word data
  3250.             Store(0xffff,WRD1)
  3251.             Store(0xffff,WRD2)
  3252.             Store(0x0000,WRSL)
  3253.             Or(WRD1, WRD2, WRSL)
  3254.             if(LNotEqual(WRSL,0xffff))
  3255.             {
  3256.                 Return (1)      //  failure
  3257.             }
  3258.  
  3259.             //Check with 1 Ored with 1 on Dword data
  3260.             Store(0xffffffff,DWD1)
  3261.             Store(0xffffffff,DWD2)
  3262.             Store(0x00000000,DRSL)
  3263.             Or(DWD1, DWD2, DRSL)
  3264.             if(LNotEqual(DRSL,0xffffffff))
  3265.             {
  3266.                 Return (1)      //  failure
  3267.             }
  3268.  
  3269.             //Check with 0 Ored with 0 on byte data
  3270.             Store(0x00,BYT1)
  3271.             Store(0x00,BYT2)
  3272.             Store(0x00,BRSL)
  3273.             Or(BYT1, BYT2, BRSL)
  3274.             if(LNotEqual(BRSL,0x00))
  3275.             {
  3276.                 Return (1)      //  failure
  3277.             }
  3278.  
  3279.             //Check with 0 Ored with 0 on Word data
  3280.             Store (0x0000,WRD1)
  3281.             Store (0x0000,WRD2)
  3282.             Store (0x0000,WRSL)
  3283.             Or(WRD1, WRD2, WRSL)
  3284.             if(LNotEqual(WRSL,0x0000))
  3285.             {
  3286.                 Return (1)      //  failure
  3287.             }
  3288.  
  3289.             //Check with 0 Ored with  0 Dword data
  3290.             Store (0x00000000,DWD1)
  3291.             Store (0x00000000,DWD2)
  3292.             Store (0x00000000,DRSL)
  3293.             Or(DWD1, DWD2, DRSL)
  3294.             if(LNotEqual(DRSL,0x00000000))
  3295.             {
  3296.                 Return (1)      //  failure
  3297.             }
  3298.  
  3299.  
  3300.             //Check with 1 Ored with 0 on byte data
  3301.             Store(0x55,BYT1)
  3302.             Store(0xAA,BYT2)
  3303.             Store(0x00,BRSL)
  3304.             Or(BYT1, BYT2, BRSL)
  3305.             if(LNotEqual(BRSL,0xff))
  3306.             {
  3307.                 Return (1)      //  failure
  3308.             }
  3309.  
  3310.             //Check with 1 Ored with 0 on Word data
  3311.             Store (0x5555,WRD1)
  3312.             Store (0xAAAA,WRD2)
  3313.             Store (0x0000,WRSL)
  3314.             Or(WRD1, WRD2, WRSL)
  3315.             if(LNotEqual(WRSL,0xffff))
  3316.             {
  3317.                 Return (1)      //  failure
  3318.             }
  3319.  
  3320.             //Check with 1 Ored with 0 on Dword data
  3321.             Store (0x55555555,DWD1)
  3322.             Store (0xAAAAAAAA,DWD2)
  3323.             Store (0x00000000,DRSL)
  3324.             Or(DWD1, DWD2, DRSL)
  3325.             if(LNotEqual(DRSL,0xffffffff))
  3326.             {
  3327.                 Return (1)      //  failure
  3328.             }
  3329.  
  3330.             //TBD - Do We need to check for system memory data also for each test case ??
  3331.  
  3332.             Return(0)
  3333.  
  3334.         }//OROP
  3335.  
  3336.         Method(TEST)
  3337.         {
  3338.             Store ("++++++++ AndOrOp Test", Debug)
  3339.  
  3340.             Name(RSLT,1)
  3341.             //Call Andop method
  3342.             Store(ANDP,RSLT)
  3343.             if(LEqual(RSLT,1))
  3344.             {
  3345.                 Return (RSLT)
  3346.             }
  3347.  
  3348.             //Call OrOp Method
  3349.             Store(OROP,RSLT)
  3350.             if(LEqual(RSLT,1))
  3351.             {
  3352.                 Return(RSLT)
  3353.             }
  3354.  
  3355.             //
  3356.             // Return original conditions to allow iterative execution
  3357.             //
  3358.             Store(0xff,BYT1)
  3359.             Store(0xff,BYT2)
  3360.             Store(0x00,BRSL)
  3361.             Store (0xffff,WRD1)
  3362.             Store (0xffff,WRD2)
  3363.             Store (0x0000,WRSL)
  3364.             Store (0xffffffff,DWD1)
  3365.             Store (0xffffffff,DWD2)
  3366.             Store (0x00000000,DRSL)
  3367.  
  3368.             Return(0)
  3369.         }   //TEST
  3370.     }   //ANDO
  3371.  
  3372. //
  3373. // test BreakPnt.asl
  3374. //
  3375. // This code tests the BreakPoint opcode term. The syntax of BreakPoint Term is
  3376. // BreakPointTerm    := BreakPoint
  3377. // Used for debugging, the Breakpoint opcode stops the execution and enters the AML debugger.
  3378. // In the non-debug version of the interpreter, BreakPoint is equivalent to Noop.
  3379. //
  3380.     Device (BRKP)
  3381.     {
  3382.         Name(CNT0,0)
  3383.  
  3384.         Method (BK1)
  3385.         {
  3386.             BreakPoint
  3387.             Return(0)
  3388.         }
  3389.  
  3390.         Method (TEST)
  3391.         {
  3392.             Store ("++++++++ BreakPnt Test", Debug)
  3393.  
  3394.             Store(0,CNT0)
  3395.  
  3396.             //Check BreakPoint statement
  3397.             While(LLess(CNT0,10))
  3398.             {
  3399.                 Increment(CNT0)
  3400.             }
  3401.  
  3402.             //Check the BreakPoint statement
  3403.             If(LEqual(CNT0,10))
  3404.             {
  3405.     //            BreakPoint
  3406.                 Return(0)
  3407.             }
  3408.  
  3409.             //failed
  3410.             Return(1)
  3411.         }
  3412.     }
  3413.  
  3414. //
  3415. // test AddSubOp.asl
  3416. //
  3417.     Device (ADSU)
  3418.     {
  3419.         //  create System Memory Operation Region and field overlays
  3420.         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
  3421.         Field (RAM, AnyAcc, NoLock, Preserve)
  3422.         {
  3423.             SMDW,   32, //  32-bit DWORD
  3424.             SMWD,   16, //  16-bit WORD
  3425.             SMBY,   8,  //  8-bit BYTE
  3426.         }   //  Field(RAM)
  3427.  
  3428.         Method (TEST)
  3429.         {
  3430.             Store ("++++++++ AddSubOp Test", Debug)
  3431.  
  3432.             Name (DWRD, 0x12345678)
  3433.             Name (WRD, 0x1234)
  3434.             Name (BYT, 0x12)
  3435.  
  3436.             //  Test AddOp with DWORD data
  3437.             Store (0x12345678, DWRD)
  3438.             Add (DWRD, 7, DWRD)
  3439.             If (LNotEqual (DWRD, 0x1234567F))
  3440.                 {   Return (DWRD)   }
  3441.  
  3442.             //  Test AddOp with WORD data
  3443.             Add (WRD, 5, WRD)
  3444.             If (LNotEqual (WRD, 0x1239))
  3445.                 {   Return (WRD)    }
  3446.  
  3447.             //  Test AddOp with BYTE data
  3448.             Add (BYT, 3, BYT)
  3449.             If (LNotEqual (BYT, 0x15))
  3450.                 {   Return (BYT)    }
  3451.  
  3452.             //  Test SubtractOp with DWORD data
  3453.             Subtract (DWRD, 7, DWRD)
  3454.             If (LNotEqual (DWRD, 0x12345678))
  3455.                 {   Return (DWRD)   }
  3456.  
  3457.             //  Test SubtractOp with WORD data
  3458.             Subtract (WRD, 3, WRD)
  3459.             If (LNotEqual (WRD, 0x1236))
  3460.                 {   Return (WRD)    }
  3461.  
  3462.             //  Test SubtractOp with BYTE data
  3463.             Subtract (BYT, 3, BYT)
  3464.             If (LNotEqual (BYT, 0x12))
  3465.                 {   Return (BYT)    }
  3466.  
  3467.  
  3468.             //  test AddOp with DWORD SystemMemory OpRegion
  3469.             Store (0x01234567, SMDW)
  3470.             Add (SMDW, 8, SMDW)
  3471.             If (LNotEqual (SMDW, 0x0123456F))
  3472.                 {   Return (SMDW)   }
  3473.  
  3474.             //  test SubtractOp with DWORD SystemMemory OpRegion
  3475.             Subtract (SMDW, 7, SMDW)
  3476.             If (LNotEqual (SMDW, 0x01234568))
  3477.                 {   Return (SMDW)   }
  3478.  
  3479.  
  3480.             //  test AddOp with WORD SystemMemory OpRegion
  3481.             Store (0x0123, SMWD)
  3482.             Add (SMWD, 6, SMWD)
  3483.             If (LNotEqual (SMWD, 0x0129))
  3484.                 {   Return (SMWD)   }
  3485.  
  3486.             //  test SubtractOp with WORD SystemMemory OpRegion
  3487.             Subtract (SMWD, 5, SMWD)
  3488.             If (LNotEqual (SMWD, 0x0124))
  3489.                 {   Return (SMWD)   }
  3490.  
  3491.  
  3492.             //  test AddOp with BYTE SystemMemory OpRegion
  3493.             Store (0x01, SMBY)
  3494.             Add (SMBY, 4, SMBY)
  3495.             If (LNotEqual (SMBY, 0x05))
  3496.                 {   Return (SMBY)   }
  3497.  
  3498.             //  test SubtractOp with BYTE SystemMemory OpRegion
  3499.             Subtract (SMBY, 3, SMBY)
  3500.             If (LNotEqual (SMBY, 0x02))
  3501.                 {   Return (SMBY)   }
  3502.  
  3503.             Return (0)
  3504.         }   //  TEST
  3505.     }   //  ADSU
  3506.  
  3507. //
  3508. // test IncDecOp.asl
  3509. //
  3510.     Device (INDC)
  3511.     {
  3512.         //  create System Memory Operation Region and field overlays
  3513.         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
  3514.         Field (RAM, AnyAcc, NoLock, Preserve)
  3515.         {
  3516.             SMDW,   32, //  32-bit DWORD
  3517.             SMWD,   16, //  16-bit WORD
  3518.             SMBY,   8,  //  8-bit BYTE
  3519.         }   //  Field(RAM)
  3520.  
  3521.         Method (TEST)
  3522.         {
  3523.             Store ("++++++++ IncDecOp Test", Debug)
  3524.  
  3525.             Name (DWRD, 0x12345678)
  3526.             Name (WRD, 0x1234)
  3527.             Name (BYT, 0x12)
  3528.  
  3529.             //  Test IncrementOp with DWORD data
  3530.             Store (0x12345678, DWRD)
  3531.             Increment (DWRD)
  3532.             If (LNotEqual (DWRD, 0x12345679))
  3533.                 {   Return (DWRD)   }
  3534.  
  3535.             //  Test IncrementOp with WORD data
  3536.             Increment (WRD)
  3537.             If (LNotEqual (WRD, 0x1235))
  3538.                 {   Return (WRD)    }
  3539.  
  3540.             //  Test IncrementOp with BYTE data
  3541.             Increment (BYT)
  3542.             If (LNotEqual (BYT, 0x13))
  3543.                 {   Return (BYT)    }
  3544.  
  3545.             //  Test DecrementOp with DWORD data
  3546.             Decrement (DWRD)
  3547.             If (LNotEqual (DWRD, 0x12345678))
  3548.                 {   Return (DWRD)   }
  3549.  
  3550.             //  Test DecrementOp with WORD data
  3551.             Decrement (WRD)
  3552.             If (LNotEqual (WRD, 0x1234))
  3553.                 {   Return (WRD)    }
  3554.  
  3555.             //  Test DecrementOp with BYTE data
  3556.             Decrement (BYT)
  3557.             If (LNotEqual (BYT, 0x12))
  3558.                 {   Return (BYT)    }
  3559.  
  3560.  
  3561.             //  test IncrementOp with DWORD SystemMemory OpRegion
  3562.             Store (0x01234567, SMDW)
  3563.             Increment (SMDW)
  3564.             If (LNotEqual (SMDW, 0x01234568))
  3565.                 {   Return (SMDW)   }
  3566.  
  3567.             //  test DecrementOp with DWORD SystemMemory OpRegion
  3568.             Decrement (SMDW)
  3569.             If (LNotEqual (SMDW, 0x01234567))
  3570.                 {   Return (SMDW)   }
  3571.  
  3572.  
  3573.             //  test IncrementOp with WORD SystemMemory OpRegion
  3574.             Store (0x0123, SMWD)
  3575.             Increment (SMWD)
  3576.             If (LNotEqual (SMWD, 0x0124))
  3577.                 {   Return (SMWD)   }
  3578.  
  3579.             //  test DecrementOp with WORD SystemMemory OpRegion
  3580.             Decrement (SMWD)
  3581.             If (LNotEqual (SMWD, 0x0123))
  3582.                 {   Return (SMWD)   }
  3583.  
  3584.  
  3585.             //  test IncrementOp with BYTE SystemMemory OpRegion
  3586.             Store (0x01, SMBY)
  3587.             Increment (SMBY)
  3588.             If (LNotEqual (SMBY, 0x02))
  3589.                 {   Return (SMBY)   }
  3590.  
  3591.             //  test DecrementOp with BYTE SystemMemory OpRegion
  3592.             Decrement (SMBY)
  3593.             If (LNotEqual (SMBY, 0x01))
  3594.                 {   Return (SMBY)   }
  3595.  
  3596.             Return (0)
  3597.         }   //  TEST
  3598.     }   //  INDC
  3599.  
  3600. //
  3601. // test LOps.asl
  3602. //
  3603. //This source tests all the logical operators. Logical operators in ASL are as follows.
  3604. //LAnd, LEqual, LGreater, LLess, LNot, LNotEqual, LOr.
  3605. // Success will return 0 and failure will return a non zero number. Check the source code for
  3606. // non zero number to find where the test failed
  3607.  
  3608.     Device (LOPS)
  3609.     {
  3610.         //Create System Memory Operation Region and field overlays
  3611.         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
  3612.         Field (RAM, AnyAcc, NoLock, Preserve)
  3613.         {
  3614.             SMDW,   32, //  32-bit DWORD
  3615.             SMWD,   16, //  16-bit WORD
  3616.             SMBY,   8,  //  8-bit BYTE
  3617.         }// Field(RAM)
  3618.  
  3619.         //And with Byte Data
  3620.         Name (BYT1, 0xff)
  3621.         Name (BYT2, 0xff)
  3622.         Name (BRSL, 0x00)
  3623.  
  3624.         //And with Word Data
  3625.         Name (WRD1, 0xffff)
  3626.         Name (WRD2, 0xffff)
  3627.         Name (WRSL, 0x0000)
  3628.  
  3629.         //And with DWord Data
  3630.         Name (DWD1, 0xffffffff)
  3631.         Name (DWD2, 0xffffffff)
  3632.         Name (DRSL, 0x00000000)
  3633.  
  3634.         Name(RSLT,1)
  3635.  
  3636.         Method (ANDL,2) // Test Logical And
  3637.         {
  3638.             //test with the arguments passed
  3639.             if(LEqual(Arg0,Arg1))
  3640.             { Store(LAnd(Arg0,Arg1),RSLT)
  3641.                 if(LNotEqual(Ones,RSLT))
  3642.                 {Return(11)}
  3643.             }
  3644.  
  3645.             //test with he locals
  3646.             Store(Arg0,Local0)
  3647.             Store(Arg1,Local1)
  3648.  
  3649.             if(LEqual(Local0,Local1))
  3650.             {
  3651.                 Store(LAnd(Local0,Local1),RSLT)
  3652.                 if(LNotEqual(Ones,RSLT))
  3653.                     {Return(12)}
  3654.             }
  3655.  
  3656.             //test with BYTE data
  3657.             if(LEqual(BYT1,BYT2))
  3658.             { Store(LAnd(BYT1,BYT2),BRSL)
  3659.                 if(LNotEqual(Ones,BRSL))
  3660.                 {Return(13)}
  3661.             }
  3662.  
  3663.             //test with WORD data
  3664.             if(LEqual(WRD1,WRD2))
  3665.             { Store(LAnd(WRD1,WRD2),WRSL)
  3666.                 if(LNotEqual(Ones,WRSL))
  3667.                 {Return(14)}
  3668.             }
  3669.  
  3670.             //test with DWORD data
  3671.             if(LEqual(DWD1,DWD2))
  3672.             { Store(LAnd(DWD1,DWD2),DRSL)
  3673.                 if(LNotEqual(Ones,DRSL))
  3674.                 {Return(15)}
  3675.             }
  3676.  
  3677.             //Test for system memory data for each test case.
  3678.  
  3679.                 Store(0xff,BYT1)
  3680.                 Store(0xff,SMBY)
  3681.                 Store(0x00,BRSL)
  3682.  
  3683.             //test with BYTE system memory data
  3684.             if(LEqual(BYT1,SMBY))
  3685.             { Store(LAnd(BYT1,SMBY),BRSL)
  3686.                 if(LNotEqual(Ones,BRSL))
  3687.                 {Return(16)}
  3688.             }
  3689.  
  3690.             Store (0xffff,WRD1)
  3691.             Store(0xffff,SMWD)
  3692.             Store(0x0000,WRSL)
  3693.             //test with WORD system memory data
  3694.             if(LEqual(WRD1,SMWD))
  3695.             { Store(LAnd(WRD1,SMWD),WRSL)
  3696.                 if(LNotEqual(Ones,WRSL))
  3697.                 {Return(17)}
  3698.             }
  3699.  
  3700.             Store(0x000000,DRSL)
  3701.             Store (0xffffff,DWD1)
  3702.             Store(0xffffff,SMDW)
  3703.  
  3704.             //test with DWORD system memory data
  3705.             if(LEqual(DWD1,SMDW))
  3706.             { Store(LAnd(DWD1,SMDW),DRSL)
  3707.                 if(LNotEqual(Ones,DRSL))
  3708.                 {Return(18)}
  3709.             }
  3710.  
  3711.             Return(0)
  3712.  
  3713.         }//ANDL
  3714.  
  3715.         //Test the LOr Operator
  3716.  
  3717.         Method (ORL_,2)
  3718.         {//ORL_
  3719.  
  3720.             //test with the arguments passed
  3721.             if(LEqual(Arg0,Arg1))
  3722.             {
  3723.                 Store(LOr(Arg0,Arg1),RSLT)
  3724.                 if(LNotEqual(Ones,RSLT))
  3725.                 {
  3726.                     Return(21)
  3727.                 }
  3728.             }
  3729.  
  3730.             //test with he locals
  3731.             Store(Arg0,Local0)
  3732.             Store(Arg1,Local1)
  3733.  
  3734.             if(LEqual(Local0,Local1))
  3735.             {
  3736.                 Store(LOr(Local0,Local1),RSLT)
  3737.                 if(LNotEqual(Ones,RSLT))
  3738.                     {Return(22)}
  3739.             }
  3740.  
  3741.             //Check with 1 LOred with 0 on byte data
  3742.             Store(0xff,BYT1)
  3743.             Store(0x00,BYT2)
  3744.             Store(0x00,BRSL)
  3745.  
  3746.             if(LNotEqual(BYT1, BYT2))
  3747.             {
  3748.                 Store(LOr(BYT1, BYT2), BRSL)
  3749.                 if(LNotEqual(Ones,BRSL))
  3750.                 {Return(23)}
  3751.             }
  3752.  
  3753.             //Check with 1 LOred with 0 on WORD data
  3754.             Store(0xffff,WRD1)
  3755.             Store(0x0000,WRD2)
  3756.             Store(0x0000,WRSL)
  3757.  
  3758.             if(LNotEqual(WRD1, WRD2))
  3759.             {
  3760.                 Store(LOr(WRD1, WRD2), WRSL)
  3761.                 if(LNotEqual(Ones,WRSL))
  3762.                 {Return(24)}
  3763.             }
  3764.  
  3765.             //Check with 1 LOred with 0 on DWORD data
  3766.             Store(0xffffffff,DWD1)
  3767.             Store(0x00000000,DWD2)
  3768.             Store(0x00000000,DRSL)
  3769.  
  3770.             if(LNotEqual(DWD1, DWD2))
  3771.             {
  3772.                 Store(LOr(DWD1, DWD2), DRSL)
  3773.                 if(LNotEqual(Ones,DRSL))
  3774.                 {Return(25)}
  3775.             }
  3776.  
  3777.             Store(0x00,BYT1)
  3778.             Store(0xff,SMBY)
  3779.             Store(0x00,BRSL)
  3780.  
  3781.             //test with BYTE system memory data
  3782.             if(LEqual(BYT1,SMBY))
  3783.             { Store(LOr(BYT1,SMBY),BRSL)
  3784.                 if(LNotEqual(Ones,BRSL))
  3785.                 {Return(26)}
  3786.             }
  3787.  
  3788.             Store (0x0000,WRD1)
  3789.             Store(0xffff,SMWD)
  3790.             Store(0x0000,WRSL)
  3791.  
  3792.             //test with WORD system memory data
  3793.             if(LEqual(WRD1,SMWD))
  3794.             { Store(LOr(WRD1,SMWD),WRSL)
  3795.                 if(LNotEqual(Ones,WRSL))
  3796.                 {Return(27)}
  3797.             }
  3798.  
  3799.  
  3800.             Store(0x00000000,DWD1)
  3801.             Store(0xffffffff,SMDW)
  3802.             Store(0x00000000,DRSL)
  3803.  
  3804.             //test with DWORD system memory data
  3805.             if(LEqual(DWD1,SMDW))
  3806.             { Store(LAnd(DWD1,SMDW),DRSL)
  3807.                 if(LNotEqual(Ones,DRSL))
  3808.                 {Return(28)}
  3809.             }
  3810.             Return(0)
  3811.  
  3812.         }//ORL_
  3813.  
  3814.         //This method tests LGreater and LNot operator
  3815.         Method(LSGR,2)
  3816.         {//LSGR
  3817.  
  3818.             //Test on arguements passed
  3819.  
  3820.             //in test data, Arg1 > Arg0
  3821.             if(LEqual(Ones,LNot(LGreater(Arg1,Arg0))))
  3822.             {Return(31)}
  3823.  
  3824.             //test LLessEqual
  3825.             if(LEqual(Ones,LNot(LGreaterEqual(Arg1,Arg0))))
  3826.             {Return(32)}
  3827.  
  3828.             if(LEqual(Ones,LLess(Arg1,Arg0)))
  3829.             {Return(33)}
  3830.  
  3831.             //test LLessEqual
  3832.             if(LEqual(Ones,LLessEqual(Arg1,Arg0)))
  3833.             {Return(34)}
  3834.  
  3835.             Store(Arg0,Local0)
  3836.             Store(Arg1,Local1)
  3837.  
  3838.             //test with the locals
  3839.             if(LNot(LGreater(Local1,Local0)))
  3840.                 {Return(35)}
  3841.  
  3842.             //test on Byte data
  3843.             Store(0x12,BYT1)
  3844.             Store(0x21,BYT2)
  3845.  
  3846.             if(LNot(LGreater(BYT2,BYT1)))
  3847.                 {Return(36)}
  3848.  
  3849.             if(LNot(LLess(BYT1,BYT2)))
  3850.                 {Return(37)}
  3851.  
  3852.             //test LGreaterEqual with byte data
  3853.             if(LNot(LGreaterEqual(BYT2,BYT1)))
  3854.                 {Return(38)}
  3855.  
  3856.             //test LLessEqual byte data
  3857.             if(LNot(LLessEqual(BYT1,BYT2)))
  3858.                 {Return(39)}
  3859.  
  3860.  
  3861.             //test on Word data
  3862.             Store(0x1212,WRD1)
  3863.             Store(0x2121,WRD2)
  3864.  
  3865.             if(LNot(LGreater(WRD2,WRD1)))
  3866.                 {Return(310)}
  3867.  
  3868.             if(LNot(LLess(WRD1,WRD2)))
  3869.                 {Return(311)}
  3870.  
  3871.             //Test LGreaterEqual with Word Data
  3872.             if(LNot(LGreaterEqual(WRD2,WRD1)))
  3873.                 {Return(312)}
  3874.  
  3875.  
  3876.             //Test LLessEqual with Word Data
  3877.             if(LNot(LLessEqual(WRD1,WRD2)))
  3878.                 {Return(313)}
  3879.  
  3880.             //test on DWord data
  3881.             Store(0x12121212,DWD1)
  3882.             Store(0x21212121,DWD2)
  3883.  
  3884.             if(LNot(LGreater(DWD2,DWD1)))
  3885.                 {Return(314)}
  3886.  
  3887.             if(LNot(LLess(DWD1,DWD2)))
  3888.                 {Return(315)}
  3889.  
  3890.  
  3891.             //Test LGreaterEqual with Dword
  3892.             if(LNot(LGreaterEqual(DWD2,DWD1)))
  3893.                 {Return(316)}
  3894.  
  3895.             //Test LLessEqual DWord
  3896.             if(LNot(LLessEqual(DWD1,DWD2)))
  3897.                 {Return(317)}
  3898.  
  3899.             Return(0)
  3900.         }//LSGR
  3901.  
  3902.         //The test method
  3903.         Method(TEST)
  3904.         {
  3905.             Store ("++++++++ LOps Test", Debug)
  3906.  
  3907.             Store(0,RSLT)
  3908.             //Call LAndOp method
  3909.             Store(ANDL(2,2),RSLT)
  3910.             if(LNotEqual(RSLT,0))
  3911.              {Return(RSLT)}
  3912.  
  3913.             //Call LOrOp Method
  3914.             Store(ORL_(5,5),RSLT)
  3915.             if(LNotEqual(RSLT,0))
  3916.             {Return(RSLT)}
  3917.  
  3918.             //Call LSGR Method
  3919.             Store(LSGR(5,7),RSLT)
  3920.             if(LNotEqual(RSLT,0))
  3921.             {Return(RSLT)}
  3922.  
  3923.             Return(0)
  3924.         }//TEST
  3925.     }//LOPS
  3926.  
  3927. //
  3928. // test FdSetOps.asl
  3929. //
  3930. //  FindSetLeftBit - Find Set Left Bit
  3931. //  FindSetLeftBitTerm  := FindSetLeftBit
  3932. //  (   Source, //TermArg=>Integer
  3933. //      Result  //Nothing | SuperName
  3934. //  ) => Integer
  3935. //  Source is evaluated as integer data type, and the one-based bit location of
  3936. //  the first MSb (most significant set bit) is optionally stored into Result.
  3937. //  The result of 0 means no bit was set, 1 means the left-most bit set is the
  3938. //  first bit, 2 means the left-most bit set is the second bit, and so on.
  3939. //  FindSetRightBit - Find Set Right Bit
  3940.  
  3941. //  FindSetRightBitTerm := FindSetRightBit
  3942. //  (   Source, //TermArg=>Integer
  3943. //      Result  //Nothing | SuperName
  3944. //  ) => Integer
  3945. //  Source is evaluated as integer data type, and the one-based bit location of
  3946. //  the most LSb (least significant set bit) is optionally stored in Result.
  3947. //  The result of 0 means no bit was set, 32 means the first bit set is the
  3948. //  32nd bit, 31 means the first bit set is the 31st bit, and so on.
  3949.  
  3950. //  If the Control method is success Zero is returned. Otherwise a non-zero
  3951. //  number is returned.
  3952. //
  3953.     Device (FDSO)
  3954.     {   //  FDSO
  3955.  
  3956.         //  Create System Memory Operation Region and field overlays
  3957.         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
  3958.         Field (RAM, AnyAcc, NoLock, Preserve)
  3959.         {
  3960.             SMDW,   32, //  32-bit DWORD
  3961.             SMWD,   16, //  16-bit WORD
  3962.             SMBY,   8,      //  8-bit BYTE
  3963.         }   //  Field(RAM)
  3964.  
  3965.         //  Byte Data
  3966.         Name (BYT1, 1)
  3967.         Name (BRSL, 0x00)
  3968.  
  3969.         //  Word Data
  3970.         Name (WRD1, 0x100)
  3971.         Name (WRSL, 0x0000)
  3972.  
  3973.         //  DWord Data
  3974.         Name (DWD1, 0x10000)
  3975.         Name (DRSL, 0x00000000)
  3976.         Name (RSLT, 1)
  3977.         Name (CNTR, 1)
  3978.  
  3979.         Method (SHFT,2)
  3980.         //  Arg0 is the actual data and Arg1 is the bit position
  3981.         {   //  SHFT
  3982.             Store (Arg0, Local0)
  3983.             Store (Arg1, Local1)
  3984.  
  3985.             FindSetLeftBit (Arg0, BRSL)
  3986.             If (LNotEqual (BRSL, Arg1))
  3987.                 {   Return (0x11)   }
  3988.             If (LNotEqual (Arg0, Local0))
  3989.                 {   Return (0x12)   }
  3990.  
  3991.             FindSetLeftBit (Local0, BRSL)
  3992.             If (LNotEqual (BRSL, Local1))
  3993.                 {   Return (0x13)   }
  3994.             If (LNotEqual (Arg0, Local0))
  3995.                 {   Return (0x14)   }
  3996.  
  3997.             //  test the byte value for SetLeftBit
  3998.             Store (7, BYT1)
  3999.             FindSetLeftBit (BYT1, BRSL)
  4000.             If (LNotEqual (BRSL, 3))
  4001.                 {   Return (0x15)   }
  4002.             If (LNotEqual (BYT1, 7))
  4003.                 {   Return (0x16)   }
  4004.  
  4005.             Store (1, BYT1)
  4006.             Store (1, CNTR)
  4007.             While (LLessEqual (CNTR, 8))
  4008.             {   //  FindSetLeftBit check loop for byte data
  4009.                 FindSetLeftBit (BYT1, BRSL)
  4010.                 If (LNotEqual (BRSL, CNTR))
  4011.                     {   Return (0x17)   }
  4012.  
  4013.                 //  Shift the bits to check the same
  4014.                 ShiftLeft (BYT1, 1, BYT1)
  4015.                 Increment (CNTR)
  4016.             }   //  FindSetLeftBit check loop for byte data
  4017.  
  4018.  
  4019.             //  Check BYTE value for SetRightBit
  4020.             Store (7, BYT1)
  4021.             FindSetRightBit (BYT1, BRSL)
  4022.             If (LNotEqual (BRSL, 1))
  4023.                 {   Return (0x21)   }
  4024.             If (LNotEqual (BYT1, 7))
  4025.                 {   Return (0x22)   }
  4026.  
  4027.             Store (1, CNTR)
  4028.             Store (0xFF, BYT1)
  4029.             While (LLessEqual (CNTR, 8))
  4030.             {   //  FindSetRightBit check loop for byte data
  4031.                 FindSetRightBit (BYT1, BRSL)
  4032.                 If (LNotEqual (BRSL, CNTR))
  4033.                     {   Return (0x23)   }
  4034.  
  4035.                 ShiftLeft (BYT1, 1, BYT1)
  4036.                 Increment (CNTR)
  4037.             }   //  FindSetRightBit check loop for byte data
  4038.  
  4039.  
  4040.             //  Test Word value for SetLeftBit
  4041.             Store (9, CNTR)
  4042.             Store (0x100, WRD1)
  4043.             While (LLessEqual (CNTR, 16))
  4044.             {
  4045.                 //  FindSetLeftBit check loop for Word data
  4046.                 FindSetLeftBit (WRD1, WRSL)
  4047.                 If (LNotEqual (WRSL, CNTR))
  4048.                     {   Return (0x31)   }
  4049.  
  4050.                 //  Shift the bits to check the same
  4051.                 ShiftLeft (WRD1, 1, WRD1)
  4052.                 Increment (CNTR)
  4053.             }   //  FindSetLeftBit check loop for Word data
  4054.  
  4055.             //  Check Word value for SetRightBit
  4056.             Store (9, CNTR)
  4057.             Store (0xFF00, WRD1)
  4058.             While (LLessEqual (CNTR, 16))
  4059.             {
  4060.                 //  FindSetRightBit check loop for Word data
  4061.                 FindSetRightBit (WRD1, WRSL)
  4062.                 If (LNotEqual (WRSL, CNTR))
  4063.                     {   Return (0x32)   }
  4064.  
  4065.                 ShiftLeft (WRD1, 1, WRD1)
  4066.                 Increment (CNTR)
  4067.             }   //  FindSetRightBit check loop for Word data
  4068.  
  4069.             //  Test the DWord value for SetLeftBit
  4070.             Store (17, CNTR)
  4071.             Store (0x10000, DWD1)
  4072.             While (LLessEqual (CNTR, 32))
  4073.             {
  4074.                 //  FindSetLeftBit check loop for Dword
  4075.                 FindSetLeftBit (DWD1, DRSL)
  4076.                 If (LNotEqual (DRSL, CNTR))
  4077.                     {   Return (0x41)   }
  4078.  
  4079.                 //  Shift the bits to check the same
  4080.                 ShiftLeft (DWD1, 1, DWD1)
  4081.                 Increment (CNTR)
  4082.             }   //  FindSetLeftBit check loop for Dword
  4083.  
  4084.             //  Check DWord value for SetRightBit
  4085.             Store (17, CNTR)
  4086.             Store (0xFFFF0000, DWD1)
  4087.             While (LLessEqual (CNTR, 32))
  4088.             {   //  FindSetRightBit Check loop for DWORD
  4089.                 FindSetRightBit (DWD1, DRSL)
  4090.                 If (LNotEqual (DRSL, CNTR))
  4091.                     {   Return (0x42)   }
  4092.  
  4093.                 ShiftLeft (DWD1, 1, DWD1)
  4094.                 Increment (CNTR)
  4095.             }   //  FindSetRightBit Check loop for DWORD
  4096.  
  4097.             Return (0)
  4098.         }   //  SHFT
  4099.  
  4100.         //  Test method called from amlexec
  4101.         Method (TEST)
  4102.         {   //  TEST
  4103.  
  4104.             Store ("++++++++ FdSetOps Test", Debug)
  4105.  
  4106.             Store (SHFT (0x80, 8), RSLT)
  4107.             If (LNotEqual (RSLT, 0))
  4108.                 {   Return (RSLT)   }
  4109.  
  4110.             Return (0)  //  pass
  4111.         }   //  TEST
  4112.     }   //  Device FDSO
  4113.  
  4114. //
  4115. // test MulDivOp.asl
  4116. //
  4117.     Device (MLDV)
  4118.     {
  4119.         //  create System Memory Operation Region and field overlays
  4120.         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
  4121.         Field (RAM, AnyAcc, NoLock, Preserve)
  4122.         {
  4123.             SMDW,   32, //  32-bit DWORD
  4124.             SMWD,   16, //  16-bit WORD
  4125.             SMBY,   8,  //  8-bit BYTE
  4126.         }   //  Field(RAM)
  4127.  
  4128.         Method (TEST)
  4129.         {
  4130.             Store ("++++++++ MulDivOp Test", Debug)
  4131.  
  4132.             Name (RMDR, 0)
  4133.             Name (DWRD, 0x12345678)
  4134.             Name (WRD, 0x1234)
  4135.             Name (BYT, 0x12)
  4136.  
  4137.             //  Test MultiplyOp with DWORD data
  4138.             Store (0x12345678, DWRD)
  4139.             Multiply (DWRD, 3, DWRD)
  4140.             If (LNotEqual (DWRD, 0x369D0368))
  4141.                 {   Return (DWRD)   }
  4142.  
  4143.             //  Test MultiplyOp with WORD data
  4144.             Multiply (WRD, 4, WRD)
  4145.             If (LNotEqual (WRD, 0x48D0))
  4146.                 {   Return (WRD)    }
  4147.  
  4148.             //  Test MultiplyOp with BYTE data
  4149.             Multiply (BYT, 5, BYT)
  4150.             If (LNotEqual (BYT, 0x5A))
  4151.                 {   Return (BYT)    }
  4152.  
  4153.             //  Test DivideOp with DWORD data
  4154.             Divide (DWRD, 3, DWRD, RMDR)
  4155.             If (LNotEqual (DWRD, 0x12345678))
  4156.                 {   Return (DWRD)   }
  4157.             If (LNotEqual (RMDR, 0))
  4158.                 {   Return (RMDR)   }
  4159.  
  4160.             //  Test DivideOp with WORD data
  4161.             Divide (WRD, 4, WRD, RMDR)
  4162.             If (LNotEqual (WRD, 0x1234))
  4163.                 {   Return (WRD)    }
  4164.             If (LNotEqual (RMDR, 0))
  4165.                 {   Return (RMDR)   }
  4166.  
  4167.             //  Test DivideOp with BYTE data
  4168.             Divide (BYT, 5, BYT, RMDR)
  4169.             If (LNotEqual (BYT, 0x12))
  4170.                 {   Return (BYT)    }
  4171.             If (LNotEqual (RMDR, 0))
  4172.                 {   Return (RMDR)   }
  4173.  
  4174.  
  4175.             //  test MultiplyOp with DWORD SystemMemory OpRegion
  4176.             Store (0x01234567, SMDW)
  4177.             Multiply (SMDW, 2, SMDW)
  4178.             If (LNotEqual (SMDW, 0x02468ACE))
  4179.                 {   Return (SMDW)   }
  4180.  
  4181.             //  test DivideOp with DWORD SystemMemory OpRegion
  4182.             Divide (SMDW, 3, SMDW, RMDR)
  4183.             If (LNotEqual (SMDW, 0x00C22E44))
  4184.                 {   Return (SMDW)   }
  4185.             If (LNotEqual (RMDR, 2))
  4186.                 {   Return (RMDR)   }
  4187.  
  4188.  
  4189.             //  test MultiplyOp with WORD SystemMemory OpRegion
  4190.             Store (0x0123, SMWD)
  4191.             Multiply (SMWD, 3, SMWD)
  4192.             If (LNotEqual (SMWD, 0x369))
  4193.                 {   Return (SMWD)   }
  4194.  
  4195.             //  test DivideOp with WORD SystemMemory OpRegion
  4196.             Divide (SMWD, 2, SMWD, RMDR)
  4197.             If (LNotEqual (SMWD, 0x01B4))
  4198.                 {   Return (SMWD)   }
  4199.             If (LNotEqual (RMDR, 1))
  4200.                 {   Return (RMDR)   }
  4201.  
  4202.  
  4203.             //  test MultiplyOp with BYTE SystemMemory OpRegion
  4204.             Store (0x01, SMBY)
  4205.             Multiply (SMBY, 7, SMBY)
  4206.             If (LNotEqual (SMBY, 0x07))
  4207.                 {   Return (SMBY)   }
  4208.  
  4209.             //  test DivideOp with BYTE SystemMemory OpRegion
  4210.             Divide (SMBY, 4, SMBY, RMDR)
  4211.             If (LNotEqual (SMBY, 0x01))
  4212.                 {   Return (SMBY)   }
  4213.             If (LNotEqual (RMDR, 3))
  4214.                 {   Return (RMDR)   }
  4215.  
  4216.             Return (0)
  4217.         }   //  TEST
  4218.     }   //  MLDV
  4219.  
  4220. //
  4221. // test NBitOps.asl
  4222. //
  4223. //NAnd - Bit-wise NAnd
  4224. //NAndTerm  := NAnd(
  4225. //  Source1,    //TermArg=>Integer
  4226. //  Source2 //TermArg=>Integer
  4227. //  Result  //Nothing | SuperName
  4228. //) => Integer
  4229. //Source1 and Source2 are evaluated as integer data types, a bit-wise NAND is performed, and the result is optionally
  4230. //stored in Result.
  4231.  
  4232. //NOr - Bitwise NOr
  4233. //NOrTerm   := NOr(
  4234. //  Source1,    //TermArg=>Integer
  4235. //  Source2 //TermArg=>Integer
  4236. //  Result  //Nothing | SuperName
  4237. //) => Integer
  4238. //Source1 and Source2 are evaluated as integer data types, a bit-wise NOR is performed, and the result is optionally
  4239. //stored in Result.
  4240. // Not - Not
  4241. //NotTerm   := Not(
  4242. //  Source, //TermArg=>Integer
  4243. //  Result  //Nothing | SuperName
  4244. //) => Integer
  4245. //Source1 is evaluated as an integer data type, a bit-wise NOT is performed, and the result is optionally stored in
  4246. //Result.
  4247.  
  4248. //If the Control method is success Zero is returned else a non-zero number is returned
  4249.  
  4250.     Device (NBIT)
  4251.     {//NBIT
  4252.  
  4253.         //Create System Memory Operation Region and field overlays
  4254.         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
  4255.         Field (RAM, AnyAcc, NoLock, Preserve)
  4256.         {
  4257.             SMDW,   32, //  32-bit DWORD
  4258.             SMWD,   16, //  16-bit WORD
  4259.             SMBY,   8,  //  8-bit BYTE
  4260.         }// Field(RAM)
  4261.  
  4262.  
  4263.         //And with Byte Data
  4264.         Name (BYT1, 0xff)
  4265.         Name (BYT2, 0xff)
  4266.         Name (BRSL, 0x00)
  4267.  
  4268.         //And with Word Data
  4269.         Name (WRD1, 0xffff)
  4270.         Name (WRD2, 0xffff)
  4271.         Name (WRSL, 0x0000)
  4272.  
  4273.         //And with DWord Data
  4274.         Name (DWD1, 0xffffffff)
  4275.         Name (DWD2, 0xffffffff)
  4276.         Name (DRSL, 0x00000000)
  4277.         Name(RSLT,1)
  4278.  
  4279.  
  4280.         Name(ARSL,0x00)
  4281.         Name(LRSL,0x00)
  4282.  
  4283.         Method(NNDB,2)
  4284.         {//NNDB
  4285.  
  4286.             Store(0xffffffff,SMDW)
  4287.             Store(0xffff,SMWD)
  4288.             Store(0xff,SMBY)
  4289.  
  4290.  
  4291.             NAnd(Arg0,Arg1,ARSL)
  4292.             if(LNotEqual(ARSL,0xfffffffd))
  4293.              {Return(11)}
  4294.  
  4295.              Store(Arg0,local0)
  4296.              Store(Arg1,Local1)
  4297.  
  4298.              NAnd(Local0,Local1,LRSL)
  4299.                 if(LNotEqual(LRSL,0xfffffffd))
  4300.              {Return(12)}
  4301.  
  4302.  
  4303.             //Byte data
  4304.             NAnd(BYT1,BYT2,BRSL)
  4305.             if(LNotEqual(BRSL,0xffffff00))
  4306.              {Return(13)}
  4307.  
  4308.             //Word Data
  4309.              NAnd(WRD1,WRD2,WRSL)
  4310.             if(LNotEqual(WRSL,0xffff0000))
  4311.              {Return(14)}
  4312.  
  4313.              //DWord Data
  4314.              NAnd(DWD1,DWD2,DRSL)
  4315.             if(LNotEqual(DRSL,0x00000000))
  4316.              {Return(15)}
  4317.  
  4318.              //Byte data
  4319.             NAnd(SMBY,0xff,BRSL)
  4320.             if(LNotEqual(BRSL,0xffffff00))
  4321.              {Return(16)}
  4322.  
  4323.             //Word Data
  4324.              NAnd(SMWD,0xffff,WRSL)
  4325.             if(LNotEqual(WRSL,0xffff0000))
  4326.              {Return(17)}
  4327.  
  4328.              //DWord Data
  4329.              NAnd(SMDW,0xffffffff,DRSL)
  4330.             if(LNotEqual(DRSL,0x00000000))
  4331.              {Return(18)}
  4332.  
  4333.             Return(0)
  4334.  
  4335.         }//NNDB
  4336.  
  4337.         Method(NNOR,2)
  4338.         {//NNOR
  4339.  
  4340.             NOr(Arg0,Arg1,ARSL)
  4341.             if(LNotEqual(ARSL,0xfffffffd))
  4342.              {Return(21)}
  4343.  
  4344.             Store(Arg0,local0)
  4345.             Store(Arg1,Local1)
  4346.  
  4347.             NOr(Local0,Local1,LRSL)
  4348.             if(LNotEqual(LRSL,0xfffffffd))
  4349.              {Return(22)}
  4350.  
  4351.  
  4352.             //Byte data
  4353.             NOr(BYT1,BYT2,BRSL)
  4354.             if(LNotEqual(BRSL,0xffffff00))
  4355.              {Return(23)}
  4356.  
  4357.             //Word Data
  4358.             NOr(WRD1,WRD2,WRSL)
  4359.             if(LNotEqual(WRSL,0xffff0000))
  4360.              {Return(24)}
  4361.  
  4362.             //DWord Data
  4363.             NOr(DWD1,DWD2,DRSL)
  4364.             if(LNotEqual(DRSL,0x00000000))
  4365.              {Return(25)}
  4366.  
  4367.              //System Memory Byte data
  4368.             NOr(SMBY,0xff,BRSL)
  4369.             if(LNotEqual(BRSL,0xffffff00))
  4370.              {Return(26)}
  4371.  
  4372.             //System Memory Word Data
  4373.             NOr(SMWD,0xffff,WRSL)
  4374.             if(LNotEqual(WRSL,0xffff0000))
  4375.              {Return(27)}
  4376.  
  4377.             //System Memory DWord Data
  4378.             NOr(SMDW,0xffffffff,DRSL)
  4379.             if(LNotEqual(DRSL,0x00000000))
  4380.              {Return(28)}
  4381.  
  4382.             Return(0)
  4383.  
  4384.         }//NNOR
  4385.  
  4386.         Method(NNOT,2)
  4387.         {//NNOT
  4388.  
  4389.             Or(Arg0,Arg1,ARSL)
  4390.             Not(ARSL,ARSL)
  4391.             if(LNotEqual(ARSL,0xfffffffd))
  4392.              {Return(31)}
  4393.  
  4394.             Store(Arg0,local0)
  4395.             Store(Arg1,Local1)
  4396.  
  4397.             Or(Local0,Local1,LRSL)
  4398.             Not(LRSL,LRSL)
  4399.             if(LNotEqual(LRSL,0xfffffffd))
  4400.              {Return(32)}
  4401.  
  4402.  
  4403.             //Byte data
  4404.             Or(BYT1,BYT2,BRSL)
  4405.             Not(BRSL,BRSL)
  4406.             if(LNotEqual(BRSL,0xffffff00))
  4407.              {Return(33)}
  4408.  
  4409.             //Word Data
  4410.             Or(WRD1,WRD2,WRSL)
  4411.             Not(WRSL,WRSL)
  4412.             if(LNotEqual(WRSL,0xffff0000))
  4413.              {Return(34)}
  4414.  
  4415.             //DWord Data
  4416.             Or(DWD1,DWD2,DRSL)
  4417.             Not(DRSL,DRSL)
  4418.             if(LNotEqual(DRSL,0x00000000))
  4419.              {Return(35)}
  4420.  
  4421.              //System Memory Byte data
  4422.             Or(SMBY,0xff,BRSL)
  4423.             Not(BRSL,BRSL)
  4424.             if(LNotEqual(BRSL,0xffffff00))
  4425.              {Return(36)}
  4426.  
  4427.             //System Memory Word Data
  4428.             Or(SMWD,0xffff,WRSL)
  4429.             Not(WRSL,WRSL)
  4430.             if(LNotEqual(WRSL,0xffff0000))
  4431.              {Return(37)}
  4432.  
  4433.             //System Memory DWord Data
  4434.             Or(SMDW,0xffffffff,DRSL)
  4435.             Not(DRSL,DRSL)
  4436.             if(LNotEqual(DRSL,0x00000000))
  4437.              {Return(38)}
  4438.  
  4439.             Return(0)
  4440.         }//NNOT
  4441.  
  4442.  
  4443.         Method(TEST)
  4444.         {
  4445.  
  4446.             Store ("++++++++ NBitOps Test", Debug)
  4447.  
  4448.             Store(NNDB(2,2),RSLT)
  4449.             if(LNotEqual(RSLT,0))
  4450.                 {Return(RSLT)}
  4451.  
  4452.             Store(NNOR(2,2),RSLT)
  4453.             if(LNotEqual(RSLT,0))
  4454.                 {Return(RSLT)}
  4455.  
  4456.             Store(NNOT(2,2),RSLT)
  4457.             if(LNotEqual(RSLT,0))
  4458.                 {Return(RSLT)}
  4459.  
  4460.  
  4461.            Return(0)
  4462.         }
  4463.  
  4464.     }//Device NBIT
  4465.  
  4466. //
  4467. // test ShftOp.asl
  4468. //
  4469. //ShiftRightTerm    := ShiftRight(
  4470. //  Source, //TermArg=>Integer
  4471. //  ShiftCount  //TermArg=>Integer
  4472. //  Result  //Nothing | SuperName
  4473. //) => Integer
  4474. //Source and ShiftCount are evaluated as integer data types. Source is shifted right with the most significant bit
  4475. //zeroed ShiftCount times.  The result is optionally stored into Result.
  4476.  
  4477. //ShiftLeft(
  4478. //  Source, //TermArg=>Integer
  4479. //  ShiftCount  //TermArg=>Integer
  4480. //  Result  //Nothing | SuperName
  4481. //) => Integer
  4482. //Source and ShiftCount are evaluated as integer data types. Source is shifted left with the least significant
  4483. //bit zeroed ShiftCount times. The result is optionally stored into Result.
  4484.  
  4485. //If the Control method is success Zero is returned else a non-zero number is returned
  4486.     Device (SHFT)
  4487.     {//SHFT
  4488.  
  4489.         //Create System Memory Operation Region and field overlays
  4490.         OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
  4491.         Field (RAM, AnyAcc, NoLock, Preserve)
  4492.         {
  4493.             SMDW,   32, //  32-bit DWORD
  4494.             SMWD,   16, //  16-bit WORD
  4495.             SMBY,   8,  //  8-bit BYTE
  4496.         }// Field(RAM)
  4497.  
  4498.  
  4499.         Name(SHFC,0x00)
  4500.  
  4501.         //And with Byte Data
  4502.         Name (BYT1, 0xff)
  4503.         Name (BRSL, 0x00)
  4504.  
  4505.         //And with Word Data
  4506.         Name (WRD1, 0xffff)
  4507.         Name (WRSL, 0x0000)
  4508.  
  4509.         //And with DWord Data
  4510.         Name (DWD1, 0xffffffff)
  4511.         Name (DRSL, 0x00000000)
  4512.  
  4513.         Name(RSLT,1)
  4514.  
  4515.         Name(ARSL,0x00)
  4516.         Name(LRSL,0x00)
  4517.  
  4518.         Method(SLFT,2)
  4519.         {//SLFT
  4520.  
  4521.             Store(0xffffffff,SMDW)
  4522.             Store(0xffff,SMWD)
  4523.             Store(0xff,SMBY)
  4524.  
  4525.  
  4526.             //Arg0-> 2 & Arg1->2
  4527.             ShiftLeft(Arg0,Arg1,ARSL)
  4528.             if(LNotEqual(ARSL,8))
  4529.             {Return(11)}
  4530.  
  4531.              Store(Arg0,local0)
  4532.              Store(Arg1,Local1)
  4533.  
  4534.              //Local0->8 and Local1->2
  4535.              ShiftLeft(Local0,Local1,LRSL)
  4536.                 if(LNotEqual(LRSL,8))
  4537.              {Return(12)}
  4538.  
  4539.             Store(2,SHFC)
  4540.             //Byte data
  4541.             ShiftLeft(BYT1,SHFC,BRSL)
  4542.             if(LNotEqual(BRSL,0x3FC))
  4543.              {Return(13)}
  4544.  
  4545.             Store(4,SHFC)
  4546.             //Word Data
  4547.              ShiftLeft(WRD1,SHFC,WRSL)
  4548.             if(LNotEqual(WRSL,0xFFFF0))
  4549.              {Return(14)}
  4550.  
  4551.             Store(8,SHFC)
  4552.             //DWord Data
  4553.             ShiftLeft(DWD1,SHFC,DRSL)
  4554.             if(LNotEqual(DRSL,0xFFFFFF00))
  4555.              {Return(15)}
  4556.  
  4557.  
  4558.              //System Memory Byte data
  4559.             Store(4,SHFC)
  4560.             ShiftLeft(SMBY,SHFC,BRSL)
  4561.             if(LNotEqual(BRSL,0xFF0))
  4562.             {Return(16)}
  4563.  
  4564.             //Word Data
  4565.             Store(4,SHFC)
  4566.             ShiftLeft(SMWD,SHFC,WRSL)
  4567.             if(LNotEqual(WRSL,0xffff0))
  4568.              {Return(17)}
  4569.  
  4570.             //DWord Data
  4571.             Store(8,SHFC)
  4572.             ShiftLeft(SMDW,SHFC,DRSL)
  4573.             if(LNotEqual(DRSL,0xFFFFFF00))
  4574.                 {Return(18)}
  4575.  
  4576.             Return(0)
  4577.  
  4578.         }//SLFT
  4579.  
  4580.         Method(SRGT,2)
  4581.         {//SRGT
  4582.             //And with Byte Data
  4583.             Store (0xff,BYT1)
  4584.             Store (0x00,BRSL)
  4585.  
  4586.             //And with Word Data
  4587.             Store (0xffff,WRD1)
  4588.             Store (0x0000,WRSL)
  4589.  
  4590.             //And with DWord Data
  4591.             Store(0xffffffff,DWD1)
  4592.             Store (0x00000000,DRSL)
  4593.  
  4594.             //Reinitialize the result objects
  4595.             Store(0x00,ARSL)
  4596.             Store(0x00,LRSL)
  4597.  
  4598.             Store(0xffffffff,SMDW)
  4599.             Store(0xffff,SMWD)
  4600.             Store(0xff,SMBY)
  4601.  
  4602.             //Arg0-> 2 & Arg1->2
  4603.             ShiftRight(Arg0,Arg1,ARSL)
  4604.             if(LNotEqual(ARSL,0))
  4605.             {Return(21)}
  4606.  
  4607.              Store(Arg0,local0)
  4608.              Store(Arg1,Local1)
  4609.  
  4610.              //Local0->8 and Local1->2
  4611.              ShiftRight(Local0,Local1,LRSL)
  4612.                 if(LNotEqual(LRSL,0))
  4613.              {Return(22)}
  4614.  
  4615.             Store(2,SHFC)
  4616.             //Byte data
  4617.             ShiftRight(BYT1,SHFC,BRSL)
  4618.             if(LNotEqual(BRSL,0x3F))
  4619.              {Return(23)}
  4620.  
  4621.             Store(4,SHFC)
  4622.             //Word Data
  4623.              ShiftRight(WRD1,SHFC,WRSL)
  4624.             if(LNotEqual(WRSL,0xFFF))
  4625.              {Return(24)}
  4626.  
  4627.             Store(8,SHFC)
  4628.             //DWord Data
  4629.             ShiftRight(DWD1,SHFC,DRSL)
  4630.             if(LNotEqual(DRSL,0xFFFFFF))
  4631.              {Return(25)}
  4632.  
  4633.             //System Memory Byte data
  4634.             Store(4,SHFC)
  4635.             ShiftRight(SMBY,SHFC,BRSL)
  4636.             if(LNotEqual(BRSL,0xF))
  4637.             {Return(26)}
  4638.  
  4639.             //Word Data
  4640.             Store(4,SHFC)
  4641.             ShiftRight(SMWD,SHFC,WRSL)
  4642.             if(LNotEqual(WRSL,0xFFF))
  4643.              {Return(27)}
  4644.  
  4645.             //DWord Data
  4646.             Store(8,SHFC)
  4647.             ShiftRight(SMDW,SHFC,DRSL)
  4648.             if(LNotEqual(DRSL,0xFFFFFF))
  4649.                 {Return(28)}
  4650.  
  4651.             Return(0)
  4652.         }//SRGT
  4653.  
  4654.         //Test method called from amlexec
  4655.         Method(TEST)
  4656.         {
  4657.             Store ("++++++++ ShftOp Test", Debug)
  4658.  
  4659.             Store(SLFT(2,2),RSLT)
  4660.             if(LNotEqual(RSLT,0))
  4661.                 {Return(RSLT)}
  4662.             Store(SRGT(2,2),RSLT)
  4663.             if(LNotEqual(RSLT,0))
  4664.                 {Return(RSLT)}
  4665.            Return(0)
  4666.         }
  4667.  
  4668.     }//Device SHFT
  4669.  
  4670. //
  4671. // test Xor.asl and slightly modified
  4672. //
  4673. //This code tests the XOR opcode term
  4674. //Syntax of XOR term
  4675. //          XOr(
  4676. //                  Source1  //TermArg=>BufferTerm
  4677. //                  Source2  //TermArg=>Integer
  4678. //                  Result //NameString
  4679. //              )
  4680. //"Source1" and "Source2" are evaluated as integers, a bit-wise XOR is performed, and the result is optionally stored in
  4681. // Result
  4682.     Device (XORD)
  4683.     {
  4684.         //This Method tests XOr operator for all the data types i.e. BYTE, WORD and DWORD
  4685.         Method (TEST)
  4686.         {
  4687.             Store ("++++++++ Xor Test", Debug)
  4688.  
  4689.             //Overlay in system memory
  4690.             OperationRegion (RAM, SystemMemory, 0x800000, 256)
  4691.             Field (RAM, ByteAcc, NoLock, Preserve)
  4692.             {
  4693.                 RES1,   1,  //Offset
  4694.                 BYT1,   8,  //First BYTE
  4695.                 BYT2,   8,  //Second BYTE
  4696.                 RBYT,   8,  //Result Byte
  4697.                 RES2,   1,  //Offset
  4698.                 WRD1,   16, //First WORD field
  4699.                 WRD2,   16, //Second WORD field
  4700.                 RWRD,   16, //RSLT WORD field
  4701.                 RES3,   1,  //Offset
  4702.                 DWD1,   32, //First Dword
  4703.                 DWD2,   32, //Second Dword
  4704.                 RDWD,   32, //Result Dword
  4705.                 RES4,   1,  //Offset
  4706.             }
  4707.  
  4708.             // Store bits in the single bit fields for checking
  4709.             //  at the end
  4710.             Store(1, RES1)
  4711.             Store(1, RES2)
  4712.             Store(1, RES3)
  4713.             Store(1, RES4)
  4714.  
  4715.             // Check the stored single bits
  4716.             if(LNotEqual(RES1, 1))
  4717.             {
  4718.                 Return(1)
  4719.             }
  4720.  
  4721.             if(LNotEqual(RES2, 1))
  4722.             {
  4723.                 Return(1)
  4724.             }
  4725.  
  4726.             if(LNotEqual(RES3, 1))
  4727.             {
  4728.                 Return(1)
  4729.             }
  4730.  
  4731.             if(LNotEqual(RES4, 1))
  4732.             {
  4733.                 Return(1)
  4734.             }
  4735.  
  4736.             //************************************************
  4737.             // (BYT1) Bit1 ->0 and (BYT2)Bit2 -> 0 condition
  4738.             Store(0x00,BYT1)
  4739.             Store(0x00,BYT2)
  4740.             XOr(BYT1,BYT2,Local0)
  4741.             Store (Local0, RBYT)
  4742.             if(LNotEqual(RBYT,0))
  4743.             {   Return(1)}
  4744.  
  4745.             // (BYT1) Bit1 ->1 and (BYT2)Bit2 -> 1 condition
  4746.             Store(0xff,BYT1)
  4747.             Store(0xff,BYT2)
  4748.             XOr(BYT1,BYT2,Local0)
  4749.             Store (Local0, RBYT)
  4750.             if(LNotEqual(RBYT,0))
  4751.             {   Return(1)}
  4752.  
  4753.             // (BYT1) Bit1 ->1 and (BYT)Bit2 -> 0 condition
  4754.             Store(0x55,BYT1)
  4755.             Store(0xAA,BYT2)
  4756.             XOr(BYT1,BYT2,Local0)
  4757.             Store (Local0, RBYT)
  4758.             if(LNotEqual(RBYT,0xFF))
  4759.             {   Return(1)}
  4760.  
  4761.             //(BYT1) Bit1 ->0 and (BYT2)Bit2 -> 1 condition
  4762.             Store(0xAA,BYT1)
  4763.             Store(0x55,BYT2)
  4764.             XOr(BYT1,BYT2,Local0)
  4765.             Store (Local0, RBYT)
  4766.             if(LNotEqual(RBYT,0xFF))
  4767.             {   Return(1)}
  4768.  
  4769.             Store(0x12,BYT1)
  4770.             Store(0xED,BYT2)
  4771.  
  4772.             XOr(BYT1,BYT2,Local0)
  4773.             Store (Local0, RBYT)
  4774.             if(LNotEqual(RBYT,0xFF))
  4775.             {
  4776.                 Return(1)
  4777.             }
  4778.  
  4779.             // Store known values for checking later
  4780.             Store(0x12, BYT1)
  4781.             if(LNotEqual(BYT1, 0x12))
  4782.             {
  4783.                 Return(1)
  4784.             }
  4785.  
  4786.             Store(0xFE, BYT2)
  4787.             if(LNotEqual(BYT2, 0xFE))
  4788.             {
  4789.                 Return(1)
  4790.             }
  4791.  
  4792.             Store(0xAB, RBYT)
  4793.             if(LNotEqual(RBYT, 0xAB))
  4794.             {
  4795.                 Return(1)
  4796.             }
  4797.  
  4798.             //***********************************************
  4799.             // (WRD1) Bit1 ->0 and (WRD2)Bit2 -> 0 condition
  4800.             Store(0x0000,WRD1)
  4801.             Store(0x0000,WRD2)
  4802.             XOr(WRD1,WRD2,RWRD)
  4803.             if(LNotEqual(RWRD,0))
  4804.             {   Return(1)}
  4805.  
  4806.             // (WRD1) Bit1 ->1 and (WRD2)Bit2 -> 1 condition
  4807.             Store(0xffff,WRD1)
  4808.             Store(0xffff,WRD2)
  4809.             XOr(WRD1,WRD2,RWRD)
  4810.             if(LNotEqual(RWRD,0))
  4811.             {   Return(1)}
  4812.  
  4813.             // (WRD1) Bit1 ->1 and (WRD2)Bit2 -> 0 condition
  4814.             Store(0x5555,WRD1)
  4815.             Store(0xAAAA,WRD2)
  4816.             XOr(WRD1,WRD2,RWRD)
  4817.             if(LNotEqual(RWRD,0xFFFF))
  4818.             {   Return(1)}
  4819.  
  4820.             //(WRD1) Bit1 ->0 and (WRD2)Bit2 -> 1 condition
  4821.             Store(0xAAAA,WRD1)
  4822.             Store(0x5555,WRD2)
  4823.             XOr(WRD1,WRD2,RWRD)
  4824.             if(LNotEqual(RWRD,0xFFFF))
  4825.             {   Return(1)}
  4826.  
  4827.             Store(0x1234,WRD1)
  4828.             Store(0xEDCB,WRD2)
  4829.             XOr(WRD1,WRD2,RWRD)
  4830.             if(LNotEqual(RWRD,0xFFFF))
  4831.             {   Return(1)}
  4832.  
  4833.             // Store known values for checking later
  4834.             Store(0x1234, WRD1)
  4835.             if(LNotEqual(WRD1, 0x1234))
  4836.             {
  4837.                 Return(1)
  4838.             }
  4839.  
  4840.             Store(0xFEDC, WRD2)
  4841.             if(LNotEqual(WRD2, 0xFEDC))
  4842.             {
  4843.                 Return(1)
  4844.             }
  4845.  
  4846.             Store(0x87AB, RWRD)
  4847.             if(LNotEqual(RWRD, 0x87AB))
  4848.             {
  4849.                 Return(1)
  4850.             }
  4851.  
  4852.  
  4853.             //**************************************************
  4854.             // (DWD1) Bit1 ->0 and (DWD2)Bit2 -> 0 condition
  4855.             Store(0x00000000,DWD1)
  4856.             Store(0x00000000,DWD2)
  4857.             XOr(DWD1,DWD2,RDWD)
  4858.             if(LNotEqual(RDWD,0))
  4859.             {   Return(1)}
  4860.  
  4861.             // (DWD1) Bit1 ->1 and (DWD2)Bit2 -> 1 condition
  4862.             Store(0xffffffff,DWD1)
  4863.             Store(0xffffffff,DWD2)
  4864.             XOr(DWD1,DWD2,RDWD)
  4865.             if(LNotEqual(RDWD,0))
  4866.             {   Return(1)}
  4867.  
  4868.             // (DWD1) Bit1 ->1 and (DWD2)Bit2 -> 0 condition
  4869.             Store(0x55555555,DWD1)
  4870.             Store(0xAAAAAAAA,DWD2)
  4871.             XOr(DWD1,DWD2,RDWD)
  4872.             if(LNotEqual(RDWD,0xFFFFFFFF))
  4873.             {   Return(1)}
  4874.  
  4875.             //(DWD1) Bit1 ->0 and (DWD2)Bit2 -> 1 condition
  4876.             Store(0xAAAAAAAA,DWD1)
  4877.             Store(0x55555555,DWD2)
  4878.             XOr(DWD1,DWD2,RDWD)
  4879.             if(LNotEqual(RDWD,0xFFFFFFFF))
  4880.             {   Return(1)}
  4881.  
  4882.             // (DWD1) Bit1 ->1 and (DWD2)Bit2 -> 0 condition
  4883.             Store(0x12345678,DWD1)
  4884.             Store(0xEDCBA987,DWD2)
  4885.             XOr(DWD1,DWD2,RDWD)
  4886.             if(LNotEqual(RDWD,0xFFFFFFFF))
  4887.             {   Return(1)}
  4888.  
  4889.             Store(0x12345678,DWD1)
  4890.             if(LNotEqual(DWD1,0x12345678))
  4891.             {
  4892.                 Return(1)
  4893.             }
  4894.  
  4895.             Store(0xFEDCBA98,DWD2)
  4896.             if(LNotEqual(DWD2,0xFEDCBA98))
  4897.             {
  4898.                 Return(1)
  4899.             }
  4900.  
  4901.             Store(0x91827364,RDWD)
  4902.             if(LNotEqual(RDWD,0x91827364))
  4903.             {
  4904.                 Return(1)
  4905.             }
  4906.  
  4907.             //****************************************************
  4908.             // Check the stored single bits
  4909.             if(LNotEqual(RES1, 1))
  4910.             {
  4911.                 Return(1)
  4912.             }
  4913.  
  4914.             if(LNotEqual(RES2, 1))
  4915.             {
  4916.                 Return(1)
  4917.             }
  4918.  
  4919.             if(LNotEqual(RES3, 1))
  4920.             {
  4921.                 Return(1)
  4922.             }
  4923.  
  4924.             if(LNotEqual(RES4, 1))
  4925.             {
  4926.                 Return(1)
  4927.             }
  4928.  
  4929.             // Change all of the single bit fields to zero
  4930.             Store(0, RES1)
  4931.             Store(0, RES2)
  4932.             Store(0, RES3)
  4933.             Store(0, RES4)
  4934.  
  4935.             // Now, check all of the fields
  4936.  
  4937.             // Byte
  4938.             if(LNotEqual(BYT1, 0x12))
  4939.             {
  4940.                 Return(1)
  4941.             }
  4942.  
  4943.             if(LNotEqual(BYT2, 0xFE))
  4944.             {
  4945.                 Return(1)
  4946.             }
  4947.  
  4948.             if(LNotEqual(RBYT, 0xAB))
  4949.             {
  4950.                 Return(1)
  4951.             }
  4952.  
  4953.             // Word
  4954.             if(LNotEqual(WRD1, 0x1234))
  4955.             {
  4956.                 Return(1)
  4957.             }
  4958.  
  4959.             if(LNotEqual(WRD2, 0xFEDC))
  4960.             {
  4961.                 Return(1)
  4962.             }
  4963.  
  4964.             if(LNotEqual(RWRD, 0x87AB))
  4965.             {
  4966.                 Return(1)
  4967.             }
  4968.  
  4969.             // Dword
  4970.             if(LNotEqual(DWD1, 0x12345678))
  4971.             {
  4972.                 Return(1)
  4973.             }
  4974.  
  4975.             if(LNotEqual(DWD2, 0xFEDCBA98))
  4976.             {
  4977.                 Return(1)
  4978.             }
  4979.  
  4980.             if(LNotEqual(RDWD, 0x91827364))
  4981.             {
  4982.                 Return(1)
  4983.             }
  4984.  
  4985.             // Bits
  4986.             if(LNotEqual(RES1, 0))
  4987.             {
  4988.                 Return(1)
  4989.             }
  4990.  
  4991.             if(LNotEqual(RES2, 0))
  4992.             {
  4993.                 Return(1)
  4994.             }
  4995.  
  4996.             if(LNotEqual(RES3, 0))
  4997.             {
  4998.                 Return(1)
  4999.             }
  5000.  
  5001.             if(LNotEqual(RES4, 0))
  5002.             {
  5003.                 Return(1)
  5004.             }
  5005.  
  5006.  
  5007.             Return(0)
  5008.         }   //  TEST
  5009.     }   //  XORD
  5010.  
  5011. //
  5012. // test CrBytFld.asl
  5013. //
  5014. //  CrBytFld test
  5015. //      Test for CreateByteField.
  5016. //      Tests creating byte field overlay of buffer stored in Local0.
  5017. //      Tests need to be added for Arg0 and Name buffers.
  5018. //
  5019.     Device (CRBF)
  5020.     {   //  Test device name
  5021.         Method (TEST)
  5022.         {
  5023.             Store ("++++++++ CrBytFld Test", Debug)
  5024.  
  5025.             //  Local0 is unitialized buffer with 4 elements
  5026.             Store (Buffer (4) {}, Local0)
  5027.  
  5028.             //  create Byte Field named BF0 based on Local0 element 0
  5029.             CreateByteField (Local0, 0, BF0)
  5030.  
  5031.             //  validate CreateByteField did not alter Local0
  5032.             Store (ObjectType (Local0), Local1) //  Local1 = Local0 object type
  5033.             If (LNotEqual (Local1, 3))  //  Buffer object type value is 3
  5034.                 {   Return (2)  }
  5035.  
  5036.             //  store something into BF0
  5037.             Store (1, BF0)
  5038.  
  5039.             //  validate Store did not alter Local0 object type
  5040.             Store (ObjectType (Local0), Local1) //  Local1 = Local0 object type
  5041.             If (LNotEqual (Local1, 3))  //  Buffer object type value is 3
  5042.                 {   Return (3)  }
  5043.  
  5044.             //  verify that the Store into BF0 was successful
  5045.             If (LNotEqual (BF0, 1))
  5046.                 {   Return (4)  }
  5047.  
  5048.  
  5049.             //  create Byte Field named BF1 based on Local0 element 1
  5050.             CreateByteField (Local0, 1, BF1)
  5051.  
  5052.             //  validate CreateByteField did not alter Local0
  5053.             Store (ObjectType (Local0), Local1) //  Local1 = Local0 object type
  5054.             If (LNotEqual (Local1, 3))  //  Buffer object type value is 3
  5055.                 {   Return (10) }
  5056.  
  5057.             //  store something into BF1
  5058.             Store (5, BF1)
  5059.  
  5060.             //  validate Store did not alter Local0 object type
  5061.             Store (ObjectType (Local0), Local1) //  Local1 = Local0 object type
  5062.             If (LNotEqual (Local1, 3))  //  Buffer object type value is 3
  5063.                 {   Return (11) }
  5064.  
  5065.             //  verify that the Store into BF1 was successful
  5066.             If (LNotEqual (BF1, 5))
  5067.                 {   Return (12) }
  5068.  
  5069.             //  verify that the Store into BF1 did not alter BF0
  5070.             If (LNotEqual (BF0, 1))
  5071.                 {   Return (13) }
  5072.  
  5073.  
  5074.             //  store something into BF0
  5075.             Store (0xFFFF, BF0)
  5076.  
  5077.             //  verify that the Store into BF0 was successful
  5078.             If (LNotEqual (BF0, 0xFF))
  5079.                 {   Return (20) }
  5080.  
  5081.             //  verify that the Store into BF0 did not alter BF1
  5082.             If (LNotEqual (BF1, 5))
  5083.                 {   Return (21) }
  5084.  
  5085.  
  5086.             Return (0)
  5087.         }   //  TEST
  5088.     }   //  CRBF
  5089.  
  5090. //
  5091. // test IndexOp4.asl
  5092. //
  5093. //  IndexOp4 test
  5094. //      This is just a subset of the many RegionOp/Index Field test cases.
  5095. //      Tests access of index fields smaller than 8 bits.
  5096. //
  5097.     Device (IDX4)
  5098.     {   //  Test device name
  5099.  
  5100.         //  MADM:   Misaligned Dynamic RAM SystemMemory OperationRegion
  5101.         //          Tests OperationRegion memory access using misaligned BYTE,
  5102.         //          WORD, and DWORD field element accesses. Validation is performed
  5103.         //          using both misaligned field entries and aligned field entries.
  5104.         //
  5105.         //          MADM returns 0 if all test cases pass or non-zero identifying
  5106.         //          the failing test case for debug purposes. This non-zero numbers
  5107.         //          are not guaranteed to be in perfect sequence (i.e., test case
  5108.         //          index), but are guaranteed to be unique so the failing test
  5109.         //          case can be uniquely identified.
  5110.         //
  5111.         Method (MADM, 1)    //  Misaligned Dynamic RAM SystemMemory OperationRegion
  5112.         //  Arg0    --  SystemMemory OperationRegion base address
  5113.         {   //  MADM:   Misaligned Dynamic RAM SystemMemory OperationRegion
  5114.             OperationRegion (RAM, SystemMemory, Arg0, 0x100)
  5115.             Field (RAM, DwordAcc, NoLock, Preserve)
  5116.             {   //  aligned field definition (for verification)
  5117.                 DWD0,   32, //  aligned DWORD field
  5118.                 DWD1,   32      //  aligned DWORD field
  5119.             }
  5120.             Field (RAM, ByteAcc, NoLock, Preserve)
  5121.             {   //  bit access field definition
  5122.                 BIT0,   1,      //  single bit field entry
  5123.                 BIT1,   1,      //  single bit field entry
  5124.                 BIT2,   1,      //  single bit field entry
  5125.                 BIT3,   1,      //  single bit field entry
  5126.                 BIT4,   1,      //  single bit field entry
  5127.                 BIT5,   1,      //  single bit field entry
  5128.                 BIT6,   1,      //  single bit field entry
  5129.                 BIT7,   1,      //  single bit field entry
  5130.                 BIT8,   1,      //  single bit field entry
  5131.                 BIT9,   1,      //  single bit field entry
  5132.                 BITA,   1,      //  single bit field entry
  5133.                 BITB,   1,      //  single bit field entry
  5134.                 BITC,   1,      //  single bit field entry
  5135.                 BITD,   1,      //  single bit field entry
  5136.                 BITE,   1,      //  single bit field entry
  5137.                 BITF,   1,      //  single bit field entry
  5138.                 BI10,   1,      //  single bit field entry
  5139.                 BI11,   1,      //  single bit field entry
  5140.                 BI12,   1,      //  single bit field entry
  5141.                 BI13,   1,      //  single bit field entry
  5142.                 BI14,   1,      //  single bit field entry
  5143.                 BI15,   1,      //  single bit field entry
  5144.                 BI16,   1,      //  single bit field entry
  5145.                 BI17,   1,      //  single bit field entry
  5146.                 BI18,   1,      //  single bit field entry
  5147.                 BI19,   1,      //  single bit field entry
  5148.                 BI1A,   1,      //  single bit field entry
  5149.                 BI1B,   1,      //  single bit field entry
  5150.                 BI1C,   1,      //  single bit field entry
  5151.                 BI1D,   1,      //  single bit field entry
  5152.                 BI1E,   1,      //  single bit field entry
  5153.                 BI1F,   1       //  single bit field entry
  5154.             }   //  bit access field definition
  5155.  
  5156.             Field (RAM, ByteAcc, NoLock, Preserve)
  5157.             {   //  two-bit access field definition
  5158.                 B2_0,   2,      //  single bit field entry
  5159.                 B2_1,   2,      //  single bit field entry
  5160.                 B2_2,   2,      //  single bit field entry
  5161.                 B2_3,   2,      //  single bit field entry
  5162.                 B2_4,   2,      //  single bit field entry
  5163.                 B2_5,   2,      //  single bit field entry
  5164.                 B2_6,   2,      //  single bit field entry
  5165.                 B2_7,   2,      //  single bit field entry
  5166.                 B2_8,   2,      //  single bit field entry
  5167.                 B2_9,   2,      //  single bit field entry
  5168.                 B2_A,   2,      //  single bit field entry
  5169.                 B2_B,   2,      //  single bit field entry
  5170.                 B2_C,   2,      //  single bit field entry
  5171.                 B2_D,   2,      //  single bit field entry
  5172.                 B2_E,   2,      //  single bit field entry
  5173.                 B2_F,   2       //  single bit field entry
  5174.             }   //  bit access field definition
  5175.  
  5176.             //  initialize memory contents using aligned field entries
  5177.             Store (0x5AA55AA5, DWD0)
  5178.             Store (0x5AA55AA5, DWD1)
  5179.  
  5180.             //  set memory contents to known values using misaligned field entries
  5181.             Store (0, BIT0)
  5182.                 //  verify memory contents using misaligned field entries
  5183.                 If (LNotEqual (BIT0, 0))
  5184.                     {   Return (1)  }
  5185.                 //  verify memory contents using aligned field entries
  5186.                 If (LNotEqual (DWD0, 0x5AA55AA4))
  5187.                     {   Return (2)  }
  5188.  
  5189.             //  set memory contents to known values using misaligned field entries
  5190.             Store (1, BIT1)
  5191.                 //  verify memory contents using misaligned field entries
  5192.                 If (LNotEqual (BIT1, 1))
  5193.                     {   Return (3)  }
  5194.                 //  verify memory contents using aligned field entries
  5195.                 If (LNotEqual (DWD0, 0x5AA55AA6))
  5196.                     {   Return (4)  }
  5197.  
  5198.             //  set memory contents to known values using misaligned field entries
  5199.             Store (0, BIT2)
  5200.                 //  verify memory contents using misaligned field entries
  5201.                 If (LNotEqual (BIT2, 0))
  5202.                     {   Return (5)  }
  5203.                 //  verify memory contents using aligned field entries
  5204.                 If (LNotEqual (DWD0, 0x5AA55AA2))
  5205.                     {   Return (6)  }
  5206.  
  5207.             //  set memory contents to known values using misaligned field entries
  5208.             Store (1, BIT3)
  5209.                 //  verify memory contents using misaligned field entries
  5210.                 If (LNotEqual (BIT3, 1))
  5211.                     {   Return (7)  }
  5212.                 //  verify memory contents using aligned field entries
  5213.                 If (LNotEqual (DWD0, 0x5AA55AAA))
  5214.                     {   Return (8)  }
  5215.  
  5216.             //  set memory contents to known values using misaligned field entries
  5217.             Store (1, BIT4)
  5218.                 //  verify memory contents using misaligned field entries
  5219.                 If (LNotEqual (BIT4, 1))
  5220.                     {   Return (9)  }
  5221.                 //  verify memory contents using aligned field entries
  5222.                 If (LNotEqual (DWD0, 0x5AA55ABA))
  5223.                     {   Return (10) }
  5224.  
  5225.             //  set memory contents to known values using misaligned field entries
  5226.             Store (0, BIT5)
  5227.                 //  verify memory contents using misaligned field entries
  5228.                 If (LNotEqual (BIT5, 0))
  5229.                     {   Return (11) }
  5230.                 //  verify memory contents using aligned field entries
  5231.                 If (LNotEqual (DWD0, 0x5AA55A9A))
  5232.                     {   Return (12) }
  5233.  
  5234.             //  set memory contents to known values using misaligned field entries
  5235.             Store (1, BIT6)
  5236.                 //  verify memory contents using misaligned field entries
  5237.                 If (LNotEqual (BIT6, 1))
  5238.                     {   Return (13) }
  5239.                 //  verify memory contents using aligned field entries
  5240.                 If (LNotEqual (DWD0, 0x5AA55ADA))
  5241.                     {   Return (14) }
  5242.  
  5243.             //  set memory contents to known values using misaligned field entries
  5244.             Store (0, BIT7)
  5245.                 //  verify memory contents using misaligned field entries
  5246.                 If (LNotEqual (BIT7, 0))
  5247.                     {   Return (15) }
  5248.                 //  verify memory contents using aligned field entries
  5249.                 If (LNotEqual (DWD0, 0x5AA55A5A))
  5250.                     {   Return (16) }
  5251.  
  5252.             //  set memory contents to known values using misaligned field entries
  5253.             Store (1, BIT8)
  5254.                 //  verify memory contents using misaligned field entries
  5255.                 If (LNotEqual (BIT8, 1))
  5256.                     {   Return (17) }
  5257.                 //  verify memory contents using aligned field entries
  5258.                 If (LNotEqual (DWD0, 0x5AA55B5A))
  5259.                     {   Return (18) }
  5260.  
  5261.             //  set memory contents to known values using misaligned field entries
  5262.             Store (0, BIT9)
  5263.                 //  verify memory contents using misaligned field entries
  5264.                 If (LNotEqual (BIT9, 0))
  5265.                     {   Return (19) }
  5266.                 //  verify memory contents using aligned field entries
  5267.                 If (LNotEqual (DWD0, 0x5AA5595A))
  5268.                     {   Return (20) }
  5269.  
  5270.             //  set memory contents to known values using misaligned field entries
  5271.             Store (1, BITA)
  5272.                 //  verify memory contents using misaligned field entries
  5273.                 If (LNotEqual (BITA, 1))
  5274.                     {   Return (21) }
  5275.                 //  verify memory contents using aligned field entries
  5276.                 If (LNotEqual (DWD0, 0x5AA55D5A))
  5277.                     {   Return (22) }
  5278.  
  5279.             //  set memory contents to known values using misaligned field entries
  5280.             Store (0, BITB)
  5281.                 //  verify memory contents using misaligned field entries
  5282.                 If (LNotEqual (BITB, 0))
  5283.                     {   Return (23) }
  5284.                 //  verify memory contents using aligned field entries
  5285.                 If (LNotEqual (DWD0, 0x5AA5555A))
  5286.                     {   Return (24) }
  5287.  
  5288.             //  set memory contents to known values using misaligned field entries
  5289.             Store (0, BITC)
  5290.                 //  verify memory contents using misaligned field entries
  5291.                 If (LNotEqual (BITC, 0))
  5292.                     {   Return (25) }
  5293.                 //  verify memory contents using aligned field entries
  5294.                 If (LNotEqual (DWD0, 0x5AA5455A))
  5295.                     {   Return (26) }
  5296.  
  5297.             //  set memory contents to known values using misaligned field entries
  5298.             Store (1, BITD)
  5299.                 //  verify memory contents using misaligned field entries
  5300.                 If (LNotEqual (BITD, 1))
  5301.                     {   Return (27) }
  5302.                 //  verify memory contents using aligned field entries
  5303.                 If (LNotEqual (DWD0, 0x5AA5655A))
  5304.                     {   Return (28) }
  5305.  
  5306.             //  set memory contents to known values using misaligned field entries
  5307.             Store (0, BITE)
  5308.                 //  verify memory contents using misaligned field entries
  5309.                 If (LNotEqual (BITE, 0))
  5310.                     {   Return (29) }
  5311.                 //  verify memory contents using aligned field entries
  5312.                 If (LNotEqual (DWD0, 0x5AA5255A))
  5313.                     {   Return (30) }
  5314.  
  5315.             //  set memory contents to known values using misaligned field entries
  5316.             Store (1, BITF)
  5317.                 //  verify memory contents using misaligned field entries
  5318.                 If (LNotEqual (BITF, 1))
  5319.                     {   Return (31) }
  5320.                 //  verify memory contents using aligned field entries
  5321.                 If (LNotEqual (DWD0, 0x5AA5A55A))
  5322.                     {   Return (32) }
  5323.  
  5324.             //  set memory contents to known values using misaligned field entries
  5325.             Store (0, BI10)
  5326.                 //  verify memory contents using misaligned field entries
  5327.                 If (LNotEqual (BI10, 0))
  5328.                     {   Return (33) }
  5329.                 //  verify memory contents using aligned field entries
  5330.                 If (LNotEqual (DWD0, 0x5AA4A55A))
  5331.                     {   Return (34) }
  5332.  
  5333.             //  set memory contents to known values using misaligned field entries
  5334.             Store (1, BI11)
  5335.                 //  verify memory contents using misaligned field entries
  5336.                 If (LNotEqual (BI11, 1))
  5337.                     {   Return (35) }
  5338.                 //  verify memory contents using aligned field entries
  5339.                 If (LNotEqual (DWD0, 0x5AA6A55A))
  5340.                     {   Return (36) }
  5341.  
  5342.             //  set memory contents to known values using misaligned field entries
  5343.             Store (0, BI12)
  5344.                 //  verify memory contents using misaligned field entries
  5345.                 If (LNotEqual (BI12, 0))
  5346.                     {   Return (37) }
  5347.                 //  verify memory contents using aligned field entries
  5348.                 If (LNotEqual (DWD0, 0x5AA2A55A))
  5349.                     {   Return (38) }
  5350.  
  5351.             //  set memory contents to known values using misaligned field entries
  5352.             Store (1, BI13)
  5353.                 //  verify memory contents using misaligned field entries
  5354.                 If (LNotEqual (BI13, 1))
  5355.                     {   Return (39) }
  5356.                 //  verify memory contents using aligned field entries
  5357.                 If (LNotEqual (DWD0, 0x5AAAA55A))
  5358.                     {   Return (40) }
  5359.  
  5360.             //  set memory contents to known values using misaligned field entries
  5361.             Store (1, BI14)
  5362.                 //  verify memory contents using misaligned field entries
  5363.                 If (LNotEqual (BI14, 1))
  5364.                     {   Return (41) }
  5365.                 //  verify memory contents using aligned field entries
  5366.                 If (LNotEqual (DWD0, 0x5ABAA55A))
  5367.                     {   Return (42) }
  5368.  
  5369.             //  set memory contents to known values using misaligned field entries
  5370.             Store (0, BI15)
  5371.                 //  verify memory contents using misaligned field entries
  5372.                 If (LNotEqual (BI15, 0))
  5373.                     {   Return (43) }
  5374.                 //  verify memory contents using aligned field entries
  5375.                 If (LNotEqual (DWD0, 0x5A9AA55A))
  5376.                     {   Return (44) }
  5377.  
  5378.             //  set memory contents to known values using misaligned field entries
  5379.             Store (1, BI16)
  5380.                 //  verify memory contents using misaligned field entries
  5381.                 If (LNotEqual (BI16, 1))
  5382.                     {   Return (45) }
  5383.                 //  verify memory contents using aligned field entries
  5384.                 If (LNotEqual (DWD0, 0x5ADAA55A))
  5385.                     {   Return (46) }
  5386.  
  5387.             //  set memory contents to known values using misaligned field entries
  5388.             Store (0, BI17)
  5389.                 //  verify memory contents using misaligned field entries
  5390.                 If (LNotEqual (BI17, 0))
  5391.                     {   Return (47) }
  5392.                 //  verify memory contents using aligned field entries
  5393.                 If (LNotEqual (DWD0, 0x5A5AA55A))
  5394.                     {   Return (48) }
  5395.  
  5396.             //  set memory contents to known values using misaligned field entries
  5397.             Store (1, BI18)
  5398.                 //  verify memory contents using misaligned field entries
  5399.                 If (LNotEqual (BI18, 1))
  5400.                     {   Return (49) }
  5401.                 //  verify memory contents using aligned field entries
  5402.                 If (LNotEqual (DWD0, 0x5B5AA55A))
  5403.                     {   Return (50) }
  5404.  
  5405.             //  set memory contents to known values using misaligned field entries
  5406.             Store (0, BI19)
  5407.                 //  verify memory contents using misaligned field entries
  5408.                 If (LNotEqual (BI19, 0))
  5409.                     {   Return (51) }
  5410.                 //  verify memory contents using aligned field entries
  5411.                 If (LNotEqual (DWD0, 0x595AA55A))
  5412.                     {   Return (52) }
  5413.  
  5414.             //  set memory contents to known values using misaligned field entries
  5415.             Store (1, BI1A)
  5416.                 //  verify memory contents using misaligned field entries
  5417.                 If (LNotEqual (BI1A, 1))
  5418.                     {   Return (53) }
  5419.                 //  verify memory contents using aligned field entries
  5420.                 If (LNotEqual (DWD0, 0x5D5AA55A))
  5421.                     {   Return (54) }
  5422.  
  5423.             //  set memory contents to known values using misaligned field entries
  5424.             Store (0, BI1B)
  5425.                 //  verify memory contents using misaligned field entries
  5426.                 If (LNotEqual (BI1B, 0))
  5427.                     {   Return (55) }
  5428.                 //  verify memory contents using aligned field entries
  5429.                 If (LNotEqual (DWD0, 0x555AA55A))
  5430.                     {   Return (56) }
  5431.  
  5432.             //  set memory contents to known values using misaligned field entries
  5433.             Store (0, BI1C)
  5434.                 //  verify memory contents using misaligned field entries
  5435.                 If (LNotEqual (BI1C, 0))
  5436.                     {   Return (57) }
  5437.                 //  verify memory contents using aligned field entries
  5438.                 If (LNotEqual (DWD0, 0x455AA55A))
  5439.                     {   Return (58) }
  5440.  
  5441.             //  set memory contents to known values using misaligned field entries
  5442.             Store (1, BI1D)
  5443.                 //  verify memory contents using misaligned field entries
  5444.                 If (LNotEqual (BI1D, 1))
  5445.                     {   Return (59) }
  5446.                 //  verify memory contents using aligned field entries
  5447.                 If (LNotEqual (DWD0, 0x655AA55A))
  5448.                     {   Return (60) }
  5449.  
  5450.             //  set memory contents to known values using misaligned field entries
  5451.             Store (0, BI1E)
  5452.                 //  verify memory contents using misaligned field entries
  5453.                 If (LNotEqual (BI1E, 0))
  5454.                     {   Return (61) }
  5455.                 //  verify memory contents using aligned field entries
  5456.                 If (LNotEqual (DWD0, 0x255AA55A))
  5457.                     {   Return (62) }
  5458.  
  5459.             //  set memory contents to known values using misaligned field entries
  5460.             Store (1, BI1F)
  5461.                 //  verify memory contents using misaligned field entries
  5462.                 If (LNotEqual (BI1F, 1))
  5463.                     {   Return (63) }
  5464.                 //  verify memory contents using aligned field entries
  5465.                 If (LNotEqual (DWD0, 0xA55AA55A))
  5466.                     {   Return (64) }
  5467.  
  5468.  
  5469.             //  set memory contents to known values using misaligned field entries
  5470.             Store (3, B2_0)
  5471.                 //  verify memory contents using misaligned field entries
  5472.                 If (LNotEqual (B2_0, 3))
  5473.                     {   Return (65) }
  5474.                 //  verify memory contents using aligned field entries
  5475.                 If (LNotEqual (DWD0, 0xA55AA55B))
  5476.                     {   Return (66) }
  5477.  
  5478.             //  set memory contents to known values using misaligned field entries
  5479.             Store (1, B2_1)
  5480.                 //  verify memory contents using misaligned field entries
  5481.                 If (LNotEqual (B2_1, 1))
  5482.                     {   Return (67) }
  5483.                 //  verify memory contents using aligned field entries
  5484.                 If (LNotEqual (DWD0, 0xA55AA557))
  5485.                     {   Return (68) }
  5486.  
  5487.             //  set memory contents to known values using misaligned field entries
  5488.             Store (0, B2_2)
  5489.                 //  verify memory contents using misaligned field entries
  5490.                 If (LNotEqual (B2_2, 0))
  5491.                     {   Return (69) }
  5492.                 //  verify memory contents using aligned field entries
  5493.                 If (LNotEqual (DWD0, 0xA55AA547))
  5494.                     {   Return (70) }
  5495.  
  5496.             //  set memory contents to known values using misaligned field entries
  5497.             Store (3, B2_3)
  5498.                 //  verify memory contents using misaligned field entries
  5499.                 If (LNotEqual (B2_3, 3))
  5500.                     {   Return (71) }
  5501.                 //  verify memory contents using aligned field entries
  5502.                 If (LNotEqual (DWD0, 0xA55AA5C7))
  5503.                     {   Return (72) }
  5504.  
  5505.             //  set memory contents to known values using misaligned field entries
  5506.             Store (3, B2_4)
  5507.                 //  verify memory contents using misaligned field entries
  5508.                 If (LNotEqual (B2_4, 3))
  5509.                     {   Return (73) }
  5510.                 //  verify memory contents using aligned field entries
  5511.                 If (LNotEqual (DWD0, 0xA55AA7C7))
  5512.                     {   Return (74) }
  5513.  
  5514.             //  set memory contents to known values using misaligned field entries
  5515.             Store (0, B2_5)
  5516.                 //  verify memory contents using misaligned field entries
  5517.                 If (LNotEqual (B2_5, 0))
  5518.                     {   Return (75) }
  5519.                 //  verify memory contents using aligned field entries
  5520.                 If (LNotEqual (DWD0, 0xA55AA3C7))
  5521.                     {   Return (76) }
  5522.  
  5523.             //  set memory contents to known values using misaligned field entries
  5524.             Store (1, B2_6)
  5525.                 //  verify memory contents using misaligned field entries
  5526.                 If (LNotEqual (B2_6, 1))
  5527.                     {   Return (77) }
  5528.                 //  verify memory contents using aligned field entries
  5529.                 If (LNotEqual (DWD0, 0xA55A93C7))
  5530.                     {   Return (78) }
  5531.  
  5532.             //  set memory contents to known values using misaligned field entries
  5533.             Store (1, B2_7)
  5534.                 //  verify memory contents using misaligned field entries
  5535.                 If (LNotEqual (B2_7, 1))
  5536.                     {   Return (79) }
  5537.                 //  verify memory contents using aligned field entries
  5538.                 If (LNotEqual (DWD0, 0xA55A53C7))
  5539.                     {   Return (80) }
  5540.  
  5541.             //  set memory contents to known values using misaligned field entries
  5542.             Store (0, B2_8)
  5543.                 //  verify memory contents using misaligned field entries
  5544.                 If (LNotEqual (B2_8, 0))
  5545.                     {   Return (81) }
  5546.                 //  verify memory contents using aligned field entries
  5547.                 If (LNotEqual (DWD0, 0xA55853C7))
  5548.                     {   Return (82) }
  5549.  
  5550.             //  set memory contents to known values using misaligned field entries
  5551.             Store (1, B2_9)
  5552.                 //  verify memory contents using misaligned field entries
  5553.                 If (LNotEqual (B2_9, 1))
  5554.                     {   Return (83) }
  5555.                 //  verify memory contents using aligned field entries
  5556.                 If (LNotEqual (DWD0, 0xA55453C7))
  5557.                     {   Return (84) }
  5558.  
  5559.             //  set memory contents to known values using misaligned field entries
  5560.             Store (2, B2_A)
  5561.                 //  verify memory contents using misaligned field entries
  5562.                 If (LNotEqual (B2_A, 2))
  5563.                     {   Return (85) }
  5564.                 //  verify memory contents using aligned field entries
  5565.                 If (LNotEqual (DWD0, 0xA56453C7))
  5566.                     {   Return (86) }
  5567.  
  5568.             //  set memory contents to known values using misaligned field entries
  5569.             Store (2, B2_B)
  5570.                 //  verify memory contents using misaligned field entries
  5571.                 If (LNotEqual (B2_B, 2))
  5572.                     {   Return (87) }
  5573.                 //  verify memory contents using aligned field entries
  5574.                 If (LNotEqual (DWD0, 0xA5A453C7))
  5575.                     {   Return (88) }
  5576.  
  5577.             //  set memory contents to known values using misaligned field entries
  5578.             Store (3, B2_C)
  5579.                 //  verify memory contents using misaligned field entries
  5580.                 If (LNotEqual (B2_C, 3))
  5581.                     {   Return (89) }
  5582.                 //  verify memory contents using aligned field entries
  5583.                 If (LNotEqual (DWD0, 0xA7A453C7))
  5584.                     {   Return (90) }
  5585.  
  5586.             //  set memory contents to known values using misaligned field entries
  5587.             Store (3, B2_D)
  5588.                 //  verify memory contents using misaligned field entries
  5589.                 If (LNotEqual (B2_D, 3))
  5590.                     {   Return (91) }
  5591.                 //  verify memory contents using aligned field entries
  5592.                 If (LNotEqual (DWD0, 0xAFA453C7))
  5593.                     {   Return (92) }
  5594.  
  5595.             //  set memory contents to known values using misaligned field entries
  5596.             Store (1, B2_E)
  5597.                 //  verify memory contents using misaligned field entries
  5598.                 If (LNotEqual (B2_E, 1))
  5599.                     {   Return (93) }
  5600.                 //  verify memory contents using aligned field entries
  5601.                 If (LNotEqual (DWD0, 0x9FA453C7))
  5602.                     {   Return (94) }
  5603.  
  5604.             //  set memory contents to known values using misaligned field entries
  5605.             Store (0, B2_F)
  5606.                 //  verify memory contents using misaligned field entries
  5607.                 If (LNotEqual (B2_F, 0))
  5608.                     {   Return (95) }
  5609.                 //  verify memory contents using aligned field entries
  5610.                 If (LNotEqual (DWD0, 0x1FA453C7))
  5611.                     {   Return (96) }
  5612.  
  5613.  
  5614.             Return (0)  //  pass
  5615.         }   //  MADM:   Misaligned Dynamic RAM SystemMemory OperationRegion
  5616.  
  5617.         Method (TEST)
  5618.         {
  5619.             Store ("++++++++ IndexOp4 Test", Debug)
  5620.  
  5621.             //  MADM (Misaligned Dynamic RAM SystemMemory OperationRegion) arguments:
  5622.             //      Arg0    --  SystemMemory OperationRegion base address
  5623.             Store (MADM (0x800000), Local0)
  5624.             If (LNotEqual (Local0, 0))      //  MADM returns zero if successful
  5625.                 {   Return (Local0) }       //  failure:    return MADM error code
  5626.  
  5627.             Return (Local0)
  5628.         }   //  TEST
  5629.     }   //  IDX4
  5630.  
  5631. //
  5632. // test Event.asl
  5633. //
  5634. //  EventOp, ResetOp, SignalOp, and WaitOp test cases.
  5635. //
  5636.     Device (EVNT)
  5637.     {
  5638.         Event (EVNT)    //  event synchronization object
  5639.  
  5640.         Method (TEVN, 1)
  5641.         //  Arg0:   time to Wait for event in milliseconds
  5642.         {   //  TEVN control method to test ResetOp, SignalOp, and WaitOp
  5643.             //  reset EVNT to initialization (zero) state
  5644.             Reset (EVNT)
  5645.  
  5646.             //  prime EVNT with two outstanding signals
  5647.             Signal (EVNT)
  5648.             Signal (EVNT)
  5649.  
  5650.  
  5651.             //  acquire existing signal
  5652.             Store (Wait (EVNT, Arg0), Local0)
  5653.  
  5654.             //  validate Local0 is a Number
  5655.             Store (ObjectType (Local0), Local1)
  5656.             If (LNotEqual (Local1, 1))  //  Number is type 1
  5657.                 {   Return (0x21)   }       //  Local1 indicates Local0 is not a Number
  5658.  
  5659.             If (LNotEqual (Local0, 0))  //  Number is type 1
  5660.                 {   Return (0x22)   }       //  timeout occurred without acquiring signal
  5661.  
  5662.             Store ("Acquire 1st existing signal PASS", Debug)
  5663.  
  5664.  
  5665.             //  acquire existing signal
  5666.             Store (Wait (EVNT, Arg0), Local0)
  5667.  
  5668.             //  validate Local0 is a Number
  5669.             Store (ObjectType (Local0), Local1)
  5670.             If (LNotEqual (Local1, 1))  //  Number is type 1
  5671.                 {   Return (0x31)   }       //  Local1 indicates Local0 is not a Number
  5672.  
  5673.             If (LNotEqual (Local0, 0))  //  Number is type 1
  5674.                 {   Return (0x32)   }       //  timeout occurred without acquiring signal
  5675.  
  5676.             Store ("Acquire 2nd existing signal PASS", Debug)
  5677.  
  5678.  
  5679.             //  ensure WaitOp timeout test cases do not hang
  5680.             if (LEqual (Arg0, 0xFFFF))
  5681.                 {   Store (0xFFFE, Arg0)    }
  5682.  
  5683.             //  acquire non-existing signal
  5684.             Store (Wait (EVNT, Arg0), Local0)
  5685.  
  5686.             //  validate Local0 is a Number
  5687.             Store (ObjectType (Local0), Local1)
  5688.             If (LNotEqual (Local1, 1))  //  Number is type 1
  5689.                 {   Return (0x41)   }       //  Local1 indicates Local0 is not a Number
  5690.  
  5691.             If (LEqual (Local0, 0))     //  Number is type 1
  5692.                 {   Return (0x42)   }       //  non-existant signal was acquired
  5693.  
  5694.             Store ("Acquire signal timeout PASS", Debug)
  5695.  
  5696.  
  5697.             //  prime EVNT with two outstanding signals
  5698.             Signal (EVNT)
  5699.             Signal (EVNT)
  5700.  
  5701.             //  reset EVNT to initialization (zero) state
  5702.             Reset (EVNT)
  5703.  
  5704.             //  acquire non-existing signal
  5705.             Store (Wait (EVNT, Arg0), Local0)
  5706.  
  5707.             //  validate Local0 is a Number
  5708.             Store (ObjectType (Local0), Local1)
  5709.             If (LNotEqual (Local1, 1))  //  Number is type 1
  5710.                 {   Return (0x51)   }       //  Local1 indicates Local0 is not a Number
  5711.  
  5712.             If (LEqual (Local0, 0))     //  Number is type 1
  5713.                 {   Return (0x52)   }       //  non-existant signal was acquired
  5714.  
  5715.             Store ("Reset signal PASS", Debug)
  5716.  
  5717.  
  5718.             //  acquire non-existing signal using Lvalue timeout
  5719.             Store (Wait (EVNT, Zero), Local0)
  5720.  
  5721.             //  validate Local0 is a Number
  5722.             Store (ObjectType (Local0), Local1)
  5723.             If (LNotEqual (Local1, 1))  //  Number is type 1
  5724.                 {   Return (0x61)   }       //  Local1 indicates Local0 is not a Number
  5725.  
  5726.             If (LEqual (Local0, 0))     //  Number is type 1
  5727.                 {   Return (0x62)   }       //  non-existant signal was acquired
  5728.  
  5729.             Store ("Zero Lvalue PASS", Debug)
  5730.  
  5731.  
  5732.             //  acquire non-existing signal using Lvalue timeout
  5733.             Store (Wait (EVNT, One), Local0)
  5734.  
  5735.             //  validate Local0 is a Number
  5736.             Store (ObjectType (Local0), Local1)
  5737.             If (LNotEqual (Local1, 1))  //  Number is type 1
  5738.                 {   Return (0x71)   }       //  Local1 indicates Local0 is not a Number
  5739.  
  5740.             If (LEqual (Local0, 0))     //  Number is type 1
  5741.                 {   Return (0x72)   }       //  non-existant signal was acquired
  5742.  
  5743.             Store ("One Lvalue PASS", Debug)
  5744.  
  5745.             //  Lvalue Event test cases
  5746.     // ILLEGAL SOURCE OPERAND        Store (EVNT, Local2)
  5747.  
  5748.             //  validate Local2 is an Event
  5749.             Store (ObjectType (EVNT), Local1)
  5750.             If (LNotEqual (Local1, 7))  //  Event is type 7
  5751.                 {   Return (0x81)   }       //  Local1 indicates Local0 is not a Number
  5752.  
  5753.             //  reset EVNT to initialization (zero) state
  5754.             Reset (EVNT)
  5755.  
  5756.             //  prime EVNT with two outstanding signals
  5757.             Signal (EVNT)
  5758.  
  5759.             //  acquire existing signal
  5760.             Store (Wait (EVNT, Arg0), Local0)
  5761.  
  5762.             //  validate Local0 is a Number
  5763.             Store (ObjectType (Local0), Local1)
  5764.             If (LNotEqual (Local1, 1))  //  Number is type 1
  5765.                 {   Return (0x82)   }       //  Local1 indicates Local0 is not a Number
  5766.  
  5767.             If (LNotEqual (Local0, 0))  //  Number is type 1
  5768.                 {   Return (0x83)   }       //  timeout occurred without acquiring signal
  5769.  
  5770.             Store ("Acquire Lvalue existing signal PASS", Debug)
  5771.  
  5772.  
  5773.             //  acquire non-existing signal
  5774.             Store (Wait (EVNT, Arg0), Local0)
  5775.  
  5776.             //  validate Local0 is a Number
  5777.             Store (ObjectType (Local0), Local1)
  5778.             If (LNotEqual (Local1, 1))  //  Number is type 1
  5779.                 {   Return (0x84)   }       //  Local1 indicates Local0 is not a Number
  5780.  
  5781.             If (LEqual (Local0, 0))     //  Number is type 1
  5782.                 {   Return (0x85)   }       //  non-existant signal was acquired
  5783.  
  5784.             Store ("Acquire Lvalue signal timeout PASS", Debug)
  5785.  
  5786.  
  5787.             Return (0)  //  success
  5788.         }   //  TEVN control method to test ResetOp, SignalOp, and WaitOp
  5789.  
  5790.         Method (TEST)
  5791.         {
  5792.             Store ("++++++++ Event Test", Debug)
  5793.  
  5794.             Store (TEVN (100), Local0)
  5795.  
  5796.             Return (Local0)
  5797.         }   //  TEST
  5798.     }   //  EVNT
  5799.  
  5800. //
  5801. // test SizeOfLv.asl
  5802. //
  5803. //  Test for SizeOf (Lvalue)
  5804. //
  5805. //  This next section will contain the packages that the SizeOfOp will be
  5806. //  exercised on.  The first one, PKG0, is a regular package of 3 elements.
  5807. //  The 2nd one, PKG1, is a nested package with 3 packages inside it, each
  5808. //  with 3 elements.  It is expected that SizeOf operator will return the
  5809. //  same value for these two packages since they both have 3 elements.  The
  5810. //  final package, PKG2, has 4 elements and the SizeOf operator is expected
  5811. //  to return different results for this package.
  5812.  
  5813.     Name (PKG0,
  5814.         Package (3)
  5815.         {0x0123, 0x4567, 0x89AB}
  5816.     )   //  PKG0
  5817.  
  5818.     Name (PKG1,
  5819.         Package (3)
  5820.         {
  5821.             Package (3) {0x0123, 0x4567, 0x89AB},
  5822.             Package (3) {0xCDEF, 0xFEDC, 0xBA98},
  5823.             Package (3) {0x7654, 0x3210, 0x1234}
  5824.         }
  5825.     )   //  PKG1
  5826.  
  5827.     Name (PKG2,
  5828.         Package (4)
  5829.         {0x0123, 0x4567, 0x89AB, 0x8888}
  5830.     )   //  PKG2
  5831.  
  5832.     Name (PKG3,
  5833.         Package (5)
  5834.         {0x0123, 0x4567, 0x89AB, 0x8888, 0x7777}
  5835.     )   //  PKG3
  5836.  
  5837. //  End Packages    **********************************************************
  5838.  
  5839. //  The following section will declare the data strings that will be used to
  5840. //  exercise the SizeOf operator.  STR0 and STR1 are expected to be equal,
  5841. //  STR2 is expected to have a different SizeOf value than STR0 and STR1.
  5842.  
  5843.     Name (STR0, "ACPI permits very flexible methods of expressing a system")
  5844.  
  5845.     Name (STR1, "MIKE permits very flexible methods of expressing a system")
  5846.  
  5847.     Name (STR2, "Needless to say, Mike and ACPI are frequently at odds")
  5848.  
  5849. //  This string is being made in case we want to do a SizeOf comparison
  5850. //  between strings and packages or buffers
  5851.     Name (STR3, "12345")
  5852.  
  5853. //  End Strings     **********************************************************
  5854.  
  5855. //  The following section will declare the buffers that will be used to exercise
  5856. //  the SizeOf operator.
  5857.  
  5858.     Name (BUF0, Buffer (10) {})
  5859.     Name (BUF1, Buffer (10) {})
  5860.     Name (BUF2, Buffer (8)  {})
  5861.     Name (BUF3, Buffer (5)  {})
  5862.  
  5863. //  End Buffers     **********************************************************
  5864.     Device (SZLV)
  5865.     {
  5866.  
  5867.         Method (CMPR, 2)
  5868.         {
  5869.             //  CMPR is passed two arguments.  If unequal, return 1 to indicate
  5870.             //  that, otherwise return 0 to indicate SizeOf each is equal.
  5871.  
  5872.             Store (0x01, Local0)
  5873.  
  5874.             if (LEqual (SizeOf(Arg0), SizeOf(Arg1)))
  5875.             {
  5876.                 Store (0x00, Local0)
  5877.             }
  5878.  
  5879.             return (Local0)
  5880.         }   //  CMPR
  5881.  
  5882.  
  5883.         Method (TEST)
  5884.         {
  5885.  
  5886.             Store ("++++++++ SizeOfLv Test", Debug)
  5887.  
  5888.             //  TBD:    SizeOf ("string")
  5889.             //          SizeOf (Buffer)
  5890.             //          SizeOf (Package)
  5891.             //          SizeOf (String)
  5892.             //          SizeOf (STR0)   --  where Name (STR0,...) -- lot's of cases
  5893.             //              buffer, string, package,
  5894.             //          SizeOf (METH) -- where METH control method returns
  5895.             //              buffer, string, package,
  5896.  
  5897.             //  TBD:    SLOC [SizeOf (Local0)] -- dup SARG
  5898.  
  5899.             //  Compare the elements that we expect to be the same.  Exit out with an error
  5900.             //  code on the first failure.
  5901.             if (LNotEqual (0x00, CMPR (STR0, STR1)))
  5902.             {
  5903.                 Return (0x01)
  5904.             }
  5905.  
  5906.             if (LNotEqual (0x00, CMPR (STR3, BUF3)))
  5907.             {
  5908.                 Return (0x02)
  5909.             }
  5910.  
  5911.             if (LNotEqual (0x00, CMPR (STR3, PKG3)))
  5912.             {
  5913.                 Return (0x03)
  5914.             }
  5915.  
  5916.             //  In the following section, this test will cover the SizeOf
  5917.             //  operator for Local values.
  5918.             //  In this case, both Local0 and Local1 should have the same Size
  5919.             Store (STR0, Local0)
  5920.             Store (STR1, Local1)
  5921.  
  5922.             if (LNotEqual (SizeOf (Local0), SizeOf (Local1)))
  5923.             {
  5924.                 Return (0x04)
  5925.             }
  5926.  
  5927.             //  Now create a case where Local0 and Local1 are different
  5928.             Store (STR2, Local1)
  5929.  
  5930.             if (LEqual (SizeOf (Local0), SizeOf (Local1)))
  5931.             {
  5932.                 Return (0x05)
  5933.             }
  5934.  
  5935.             //  Finally, check for the return of SizeOf for a known Buffer.  Just
  5936.             //  in case we magically pass above cases due to all Buffers being Zero
  5937.             //  bytes in size, or Infinity, etc.
  5938.             if (LNotEqual (0x05, SizeOf (BUF3)))
  5939.             {
  5940.                 Return (0x06)
  5941.             }
  5942.  
  5943.             Return (0)
  5944.         }   //  TEST
  5945.     }   //  SZLV
  5946.  
  5947.  
  5948. //
  5949. // test BytField.asl
  5950. //
  5951. //  BytField test
  5952. //      This is just a subset of the many RegionOp/Index Field test cases.
  5953. //      Tests access of TBD.
  5954. //
  5955.     Scope (\_SB)    //  System Bus
  5956.     {   //  _SB system bus
  5957.         Device (BYTF)
  5958.         {   //  Test device name
  5959.             Method (TEST)
  5960.             {
  5961.                 Store ("++++++++ BytField Test", Debug)
  5962.  
  5963.                 Return (\_TZ.C19B.RSLT)
  5964.             }   //  TEST
  5965.         }   //  BYTF
  5966.  
  5967.         Device (C005)
  5968.         {   //  Device C005
  5969.             Device (C013)
  5970.             {   //  Device C013
  5971.             }   //  Device C013
  5972.         }   //  Device C005
  5973.  
  5974.         Method (C115)
  5975.         {   //  C115 control method
  5976.             Acquire (\_GL, 0xFFFF)
  5977.             Store (\_SB.C005.C013.C058.C07E, Local0)
  5978.             Release (\_GL)
  5979.             And (Local0, 16, Local0)
  5980.             Store (ShiftRight (Local0, 4, ), Local1)
  5981.             If (LEqual (Local1, 0))
  5982.                 {   Return (1)  }
  5983.             Else
  5984.                 {   Return (0)  }
  5985.         }   //  C115 control method
  5986.     }   //  _SB system bus
  5987.  
  5988.     OperationRegion (C018, SystemIO, 0x5028, 4)
  5989.     Field (C018, AnyAcc, NoLock, Preserve)
  5990.     {   //  Field overlaying C018
  5991.         C019,   32
  5992.     }   //  Field overlaying C018
  5993.  
  5994.     OperationRegion (C01A, SystemIO, 0x5030, 4)
  5995.     Field (C01A, ByteAcc, NoLock, Preserve)
  5996.     {   //  Field overlaying C01A
  5997.         C01B,   8,
  5998.         C01C,   8,
  5999.         C01D,   8,
  6000.         C01E,   8
  6001.     }   //  Field overlaying C01A
  6002.  
  6003.     Mutex (\C01F, 0)
  6004.     Name (\C020, 0)
  6005.     Name (\C021, 0)
  6006.  
  6007.     Method (\C022, 0)
  6008.     {   //  \C022 control method
  6009.         Acquire (\C01F, 0xFFFF)
  6010.         If (LEqual (\C021, 0))
  6011.         {
  6012.             Store (C019, Local0)
  6013.             And (Local0, 0xFFFEFFFE, Local0)
  6014.             Store (Local0, C019)
  6015.             Increment (\C021)
  6016.         }
  6017.         Release (\C01F)
  6018.     }   //  \C022 control method
  6019.  
  6020.     Scope (\_SB.C005.C013)
  6021.     {   //  Scope \_SB.C005.C013
  6022.         Device (C058)
  6023.         {   //  Device C058
  6024.             Name (_HID, "*PNP0A06")
  6025.  
  6026.             OperationRegion (C059, SystemIO, 0xE0, 2)
  6027.             Field (C059, ByteAcc, NoLock, Preserve)
  6028.             {   //  Field overlaying C059
  6029.                 C05A,   8,
  6030.                 C05B,   8
  6031.             }   //  Field overlaying C059
  6032.  
  6033.             OperationRegion (C05C, SystemIO, 0xE2, 2)
  6034.             Field (C05C, ByteAcc, NoLock, Preserve)
  6035.             {   //  Field overlaying C05C
  6036.                 C05D,   8,
  6037.                 C05E,   8
  6038.             }   //  Field overlaying C05C
  6039.             IndexField (C05D, C05E, ByteAcc, NoLock, Preserve)
  6040.             {   //  IndexField overlaying C05D/C05E
  6041.                 ,       0x410,  //  skip
  6042.                 C05F,   8,
  6043.                 C060,   8,
  6044.                 C061,   8,
  6045.                 C062,   8,
  6046.                 C063,   8,
  6047.                 C064,   8,
  6048.                 C065,   8,
  6049.                 C066,   8,
  6050.                 C067,   8,
  6051.                 C068,   8,
  6052.                 C069,   8,
  6053.                 C06A,   8,
  6054.                 C06B,   8,
  6055.                 C06C,   8,
  6056.                 C06D,   8,
  6057.                 C06E,   8,
  6058.                 ,       0x70,       //  skip
  6059.                 C06F,   8,
  6060.                 C070,   8,
  6061.                 C071,   8,
  6062.                 C072,   8,
  6063.                 C073,   8,
  6064.                 C074,   8,
  6065.                 C075,   8,
  6066.                 C076,   8,
  6067.                 C077,   8,
  6068.                 C078,   8,
  6069.                 C079,   8,
  6070.                 C07A,   8,
  6071.                 C07B,   8,
  6072.                 C07C,   8,
  6073.                 C07D,   8,
  6074.                 C07E,   8
  6075.             }   //  IndexField overlaying C05D/C05E
  6076.  
  6077.             OperationRegion (C07F, SystemIO, 0xE4, 2)
  6078.             Field (C07F, ByteAcc, NoLock, Preserve)
  6079.             {   //  Field overlaying C07F
  6080.                 C080,   8,
  6081.                 C081,   8
  6082.             }   //  Field overlaying C07F
  6083.  
  6084.             OperationRegion (C082, SystemIO, 0xE0, 1)
  6085.             Field (C082, ByteAcc, NoLock, Preserve)
  6086.             {   //  Field overlaying C082
  6087.                 C083,   8
  6088.             }   //  Field overlaying C082
  6089.  
  6090.             OperationRegion (C084, SystemIO, 0xFF, 1)
  6091.             Field (C084, ByteAcc, NoLock, Preserve)
  6092.             {   //  Field overlaying C084
  6093.                 C085,   8
  6094.             }   //  Field overlaying C084
  6095.  
  6096.             OperationRegion (C086, SystemIO, 0xFD, 1)
  6097.             Field (C086, ByteAcc, NoLock, Preserve)
  6098.             {   //  Field overlaying C086
  6099.                 C087,   8
  6100.             }   //  Field overlaying C086
  6101.  
  6102.             Mutex (C088, 0)
  6103.             Mutex (C089, 0)
  6104.             Mutex (C08A, 0)
  6105.             Mutex (C08B, 0)
  6106.             Mutex (C08C, 0)
  6107.             Mutex (C08D, 0)
  6108.  
  6109.             Name (C08E, 0xFFFFFFFD)
  6110.             Name (C08F, 0)
  6111.  
  6112.             Method (C0AA, 4)
  6113.             {   //  C0AA control method
  6114.                 Store (Buffer (4) {}, Local7)
  6115.                 CreateByteField (Local7, 0, C0AB)
  6116.                 CreateByteField (Local7, 1, C0AC)
  6117.                 CreateByteField (Local7, 2, C0AD)
  6118.                 CreateByteField (Local7, 3, C0AE)
  6119.                 Acquire (^C08B, 0xFFFF)
  6120.                 Acquire (\_GL, 0xFFFF)
  6121.                 \C022 ()
  6122.                 Store (1, \_SB.C005.C013.C058.C06B)
  6123.                 While (LNot (LEqual (0, \_SB.C005.C013.C058.C06B)))
  6124.                     {   Stall (100) }
  6125.                 Store (Arg3, \_SB.C005.C013.C058.C06E)
  6126.                 Store (Arg2, \_SB.C005.C013.C058.C06D)
  6127.                 Store (Arg1, \_SB.C005.C013.C058.C06C)
  6128.                 Store (Arg0, \_SB.C005.C013.C058.C06B)
  6129.                 While (LNot (LEqual (0, \_SB.C005.C013.C058.C06B)))
  6130.                     {   Stall (100) }
  6131.                 Store (\_SB.C005.C013.C058.C06E, C0AB)
  6132.                 Store (\_SB.C005.C013.C058.C06D, C0AC)
  6133.                 Store (\_SB.C005.C013.C058.C06C, C0AD)
  6134.                 Store (\_SB.C005.C013.C058.C06B, C0AE)
  6135.                 If (LNot (LEqual (Arg0, 23)))
  6136.                 {
  6137.                     Store (2, \_SB.C005.C013.C058.C06B)
  6138.                     Stall (100)
  6139.                 }
  6140.                 Release (\_GL)
  6141.                 Release (^C08B)
  6142.                 Return (Local7)
  6143.             }   //  C0AA control method
  6144.         }   //  Device C058
  6145.     }   //  Scope \_SB.C005.C013
  6146.  
  6147.     Scope (\_TZ)
  6148.     {   //  \_TZ thermal zone scope
  6149.         Name (C18B, Package (2)
  6150.         {
  6151.             Package (2)
  6152.             {
  6153.                 Package (5) {0x05AC, 0x0CD2, 0x0D68, 0x0DE0, 0x0E4E},
  6154.                 Package (5) {0x0D04, 0x0D9A, 0x0DFE, 0x0E80, 0x0FA2}
  6155.             },
  6156.             Package (2)
  6157.             {
  6158.                 Package (5) {0x05AC, 0x0CD2, 0x0D68, 0x0DE0, 0x0E4E},
  6159.                 Package (5) {0x0D04, 0x0D9A, 0x0DFE, 0x0E80, 0x0FA2}
  6160.             }
  6161.         })  //  C18B
  6162.  
  6163.         Name (C18C, Package (2)
  6164.         {
  6165.             Package (2)
  6166.             {
  6167.                 Package (3) {0x64, 0x4B, 0x32},
  6168.                 Package (3) {0x64, 0x4B, 0x32}
  6169.             }
  6170.         })  //  C81C
  6171.  
  6172.         Name (C18D, 0)
  6173.         Name (C18E, 0)
  6174.         Name (C18F, 0)
  6175.         Name (C190, 0)
  6176.         Name (C191, 3)
  6177.         Name (C192, 0)
  6178.         Name (C193, 1)
  6179.         Name (C194, 2)
  6180.         Mutex (C195, 0)
  6181.         Name (C196, 1)
  6182.         Name (C197, 0x0B9C)
  6183.         Name (C198, 0x0B9C)
  6184.         Name (C199, 0xFFFFFFFD)
  6185.         Name (C19A, 0)
  6186.  
  6187.         Device (C19B)
  6188.         {   //  Device C19B
  6189.             Name (RSLT, 0)  //  default to zero
  6190.  
  6191.             Method (XINI)
  6192.             {   //  _INI control method (Uses Global Lock -- can't run under AcpiExec)
  6193.                 Store (\_SB.C115, C19A)
  6194.                 \_TZ.C19C._SCP (0)
  6195.                 Subtract (0x0EB2, 0x0AAC, Local1)   //  Local1 = AACh - EB2h
  6196.                 Divide (Local1, 10, Local0, Local2) //  Local0 = Local1 / 10
  6197.                                                                 //  Local2 = Local1 % 10
  6198.                 \_SB.C005.C013.C058.C0AA (14, Local2, 0, 0)
  6199.                 Store
  6200.                     (DerefOf (Index (DerefOf (Index (\_TZ.C18C, C19A, )), 0, )), C18D)
  6201.                 Store
  6202.                     (DerefOf (Index (DerefOf (Index (\_TZ.C18C, C19A, )), 1, )), C18E)
  6203.                 Store
  6204.                     (DerefOf (Index (DerefOf (Index (\_TZ.C18C, C19A, )), 2, )), C18F)
  6205.  
  6206.                 Store (1, RSLT) //  set RSLT to 1 if _INI control method completes
  6207.             }   //  _INI control method
  6208.  
  6209.             //  PowerResource (C19D) {...}
  6210.         }   //  Device C19B
  6211.  
  6212.         ThermalZone (C19C)
  6213.         {
  6214.             Method (_SCP, 1)
  6215.             {   //  _SCP control method
  6216.                 Store (Arg0, Local0)
  6217.                 If (LEqual (Local0, 0))
  6218.                 {
  6219.                     Store (0, \_TZ.C192)
  6220.                     Store (1, \_TZ.C193)
  6221.                     Store (2, \_TZ.C194)
  6222.                     Store (3, \_TZ.C191)
  6223.                 }
  6224.                 Else
  6225.                 {
  6226.                     Store (0, \_TZ.C191)
  6227.                     Store (1, \_TZ.C192)
  6228.                     Store (2, \_TZ.C193)
  6229.                     Store (3, \_TZ.C194)
  6230.                 }
  6231.             }   //  _SCP control method
  6232.         }   //  ThermalZone C19C
  6233.     }   //  \_TZ thermal zone scope
  6234.  
  6235.  
  6236. //
  6237. // test DwrdFld.asl
  6238. //
  6239.     Name (BUFR, buffer(10) {0,0,0,0,0,0,0,0,0,0} )
  6240.  
  6241.     Device (DWDF)
  6242.     {
  6243.         Method (TEST)
  6244.         {
  6245.             Store ("++++++++ DwrdFld Test", Debug)
  6246.  
  6247.             CreateByteField (BUFR, 0, BYTE)
  6248.             Store (0xAA, BYTE)
  6249.  
  6250.             CreateWordField (BUFR, 1, WORD)
  6251.             Store (0xBBCC, WORD)
  6252.  
  6253.             CreateDWordField (BUFR, 3, DWRD)
  6254.             Store (0xDDEEFF00, DWRD)
  6255.  
  6256.             CreateByteField (BUFR, 7, BYT2)
  6257.             Store (0x11, BYT2)
  6258.  
  6259.             CreateWordField (BUFR, 8, WRD2)
  6260.             Store (0x2233, WRD2)
  6261.  
  6262.             Return (0)
  6263.  
  6264.         }   //  End Method TEST
  6265.     }   //  Device DWDF
  6266.  
  6267.     //
  6268.     // test DivAddx.asl
  6269.     //
  6270.     Name (B1LO, 0xAA)
  6271.     Name (B1HI, 0xBB)
  6272.  
  6273.     Method (MKW_, 2)
  6274.     {   //  This control method will take two bytes and make them into a WORD
  6275.  
  6276.         Multiply (B1HI, 256, Local0)    //  Make high byte.....high
  6277.         Or (Local0, B1LO, Local0)       //  OR in the low byte
  6278.         Return (Local0)                 //  Return the WORD
  6279.  
  6280.     }   //  MKW_
  6281.  
  6282.     Device (DVAX)
  6283.     {
  6284.         Method (TEST)
  6285.         {
  6286.  
  6287.             Store ("++++++++ DivAddx Test", Debug)
  6288.  
  6289.             Store (25, B1LO)
  6290.             Store (0, B1HI)
  6291.  
  6292.             //  We'll multiply 25 * 3 to get 75, add 99 to it then divide
  6293.             //  by 100.  We expect to get 74 for the remainder and 1 for
  6294.             //  the quotient.
  6295.             Divide(
  6296.                 Add (Multiply (3, MKW_ (B1LO, B1HI)), 0x63),
  6297.                             //  Dividend,
  6298.                 100,        //  Divisor
  6299.                 Local4,     //  Remainder
  6300.                 Local2)     //  Quotient
  6301.  
  6302.             If (LAnd (LEqual (74, Local4), LEqual (1, Local2)))
  6303.             {   //  Indicate Pass
  6304.                 Store (0x00, Local0)
  6305.             }
  6306.  
  6307.             Else
  6308.             {   //  Indicate Fail
  6309.                 Store (0x01, Local0)
  6310.             }
  6311.  
  6312.             Return (Local0)
  6313.         }   //  End Method TEST
  6314.     }   //  Device DVAX
  6315.  
  6316. //
  6317. // test IndexFld.asl (IndexOp6.asl)
  6318. //
  6319. //  IndexFld test
  6320. //      This is just a subset of the many RegionOp/Index Field test cases.
  6321. //      Tests index field element AccessAs macro.
  6322. //      Also tests name resolution of index field elements with same names
  6323. //      but different namespace scopes.
  6324. //
  6325.     Device (IDX6)
  6326.     {   //  Test device name
  6327.  
  6328.         OperationRegion (SIO, SystemIO, 0x100, 2)
  6329.         Field (SIO, ByteAcc, NoLock, Preserve)
  6330.         {
  6331.             INDX,   8,
  6332.             DATA,   8
  6333.         }
  6334.         IndexField (INDX, DATA, AnyAcc, NoLock, WriteAsOnes)
  6335.         {
  6336.             AccessAs (ByteAcc, 0),
  6337.             IFE0,   8,
  6338.             IFE1,   8,
  6339.             IFE2,   8,
  6340.             IFE3,   8,
  6341.             IFE4,   8,
  6342.             IFE5,   8,
  6343.             IFE6,   8,
  6344.             IFE7,   8,
  6345.             IFE8,   8,
  6346.             IFE9,   8,
  6347.         }
  6348.  
  6349.         Device (TST_)
  6350.         {   //  TST_:   provides a different namespace scope for IFE0 and IFE1
  6351.             OperationRegion (SIO2, SystemIO, 0x100, 2)
  6352.             Field (SIO2, ByteAcc, NoLock, Preserve)
  6353.             {
  6354.                 IND2,   8,
  6355.                 DAT2,   8
  6356.             }
  6357.             IndexField (IND2, DAT2, AnyAcc, NoLock, WriteAsOnes)
  6358.             {
  6359.                 IFE0,   8,  //  duplicate IndexField name with different scope
  6360.                 IFE1,   8
  6361.             }
  6362.         }   //  TST_:   provides a different namespace scope for IFE0 and IFE1
  6363.  
  6364.         Method (TEST)
  6365.         {
  6366.             Store ("++++++++ IndexOp6 Test", Debug)
  6367.  
  6368.             Store (IFE0, Local0)
  6369.             Store (IFE1, Local1)
  6370.             Store (IFE2, Local2)
  6371.  
  6372.             //  validate name resolution of IndexFields with different scopes
  6373.             Store (\IDX6.IFE0, Local3)
  6374.             Store (\IDX6.IFE1, Local4)
  6375.             //  verioading of namespace can resolve following names
  6376.             Store (\IDX6.TST_.IFE0, Local5)
  6377.             Store (\IDX6.TST_.IFE1, Local6)
  6378.  
  6379.             Return (0)
  6380.         }   //  TEST
  6381.     }   //  IDX6
  6382.  
  6383. //
  6384. // test IndexOp5.asl
  6385. //
  6386. //  IndexOp5 test
  6387. //      This is just a subset of the many RegionOp/Index Field test cases.
  6388. //      Tests copying string into buffer then performing IndexOp on result.
  6389. //
  6390.     Device (IDX5)
  6391.     {   //  Test device name
  6392.  
  6393.         Name (OSFL, 0)  //  0 == Windows 98, 1 == Windows NT
  6394.  
  6395.         //  MCTH is a control method to compare two strings. It returns
  6396.         //  zero if the strings mismatch, or 1 if the strings match.
  6397.         //  This exercises the test case of copying a string into a buffer
  6398.         //  and performing an IndexOp on the resulting buffer.
  6399.         Method (MCTH, 2)    //  Control Method to compare two strings
  6400.         {   //  MCTH:   Control Method to compare two strings
  6401.             //  Arg0:       first string to compare
  6402.             //  Arg1:       second string to compare
  6403.             //  Return: zero if strings mismatch, 1 if strings match
  6404.  
  6405.             //  check if first string's length is less than second string's length
  6406.             If (LLess (SizeOf (Arg0), SizeOf (Arg1)))
  6407.                 {   Return (0)  }
  6408.  
  6409.             //  increment length to include NULL termination character
  6410.             Add (SizeOf (Arg0), 1, Local0)  //  Local0 = strlen(Arg0) + 1
  6411.  
  6412.             //  create two buffers of size Local0 [strlen(Arg0)+1]
  6413.             Name (BUF0, Buffer (Local0) {})
  6414.             Name (BUF1, Buffer (Local0) {})
  6415.  
  6416.             //  copy strings into buffers
  6417.             Store (Arg0, BUF0)
  6418.             Store (Arg1, BUF1)
  6419.  
  6420.             //  validate BUF0 and BUF1 are still buffers
  6421.             Store (ObjectType (BUF0), Local1)
  6422.             If (LNotEqual (Local1, 3))  //  Buffer is type 3
  6423.                 {   Return (20) }
  6424.             Store (ObjectType (BUF1), Local1)
  6425.             If (LNotEqual (Local1, 3))  //  Buffer is type 3
  6426.                 {   Return (21) }
  6427.  
  6428.             // Decrement because the Index base below is zero based
  6429.             //  while Local0 length is one based.
  6430.             Decrement (Local0)
  6431.  
  6432.             While (Local0)
  6433.             {   //  loop through all BUF0 buffer elements
  6434.                 Decrement (Local0)
  6435.  
  6436.                 //  check if BUF0[n] == BUF1[n]
  6437.                 If (LEqual (DerefOf (Index (BUF0, Local0, )),
  6438.                         DerefOf (Index (BUF1, Local0, ))))
  6439.                     {   }   //  this is how the code was really implemented
  6440.                 Else
  6441.                     {   Return (Zero)   }
  6442.             }   //  loop through all BUF0 buffer elements
  6443.  
  6444.             Return (One)    //  strings / buffers match
  6445.         }   //  MCTH:   Control Method to compare two strings
  6446.  
  6447.  
  6448.         Method (TEST)
  6449.         {
  6450.             Store ("++++++++ IndexOp5 Test", Debug)
  6451.  
  6452.             If (MCTH (\_OS, "Microsoft Windows NT"))
  6453.                 {   Store (1, OSFL) }
  6454.  
  6455.             If (LNotEqual (OSFL, 1))
  6456.                 {   Return (11) }
  6457.  
  6458.             Return (0)
  6459.         }   //  TEST
  6460.     }   //  IDX5
  6461.  
  6462. //
  6463. // test IndexOp.asl
  6464. //
  6465.     Scope (\_SB)    //  System Bus
  6466.     {   //  _SB system bus
  6467.  
  6468.         Method (C097)
  6469.             {   Return (1)  }
  6470.  
  6471.         Device (PCI2)
  6472.         {   //  Root PCI Bus
  6473.             Name (_HID, EISAID("PNP0A03"))
  6474.             Name (_ADR, 0x00000000)
  6475.             Name (_CRS, Buffer(26)  {"\_SB_.PCI2._CRS..........."})
  6476.             Method (_STA)   {Return (0x0F)}
  6477.  
  6478.             Device (ISA)
  6479.             {   //  ISA bridge
  6480.                 Name (_ADR, 0x00030000)     //  ISA bus ID
  6481.  
  6482.                 Device (EC0)
  6483.                 {   //  Embedded Controller
  6484.                     Name (_GPE, 0)              //  EC use GPE0
  6485.                     Name (_ADR, 0x0030000)  //  PCI address
  6486.  
  6487.                     Method (_STA,0)         //  EC Status
  6488.                         {   Return(0xF) }       //  EC is functioning
  6489.  
  6490.                     Name (_CRS, ResourceTemplate()
  6491.                         {
  6492.                             IO (Decode16, 0x62, 0x62, 1, 1)
  6493.                             IO (Decode16, 0x66, 0x66, 1, 1)
  6494.                         }
  6495.                     )
  6496.  
  6497.                 //  create EC's region and field
  6498.                     OperationRegion (RAM, SystemMemory, 0x400000, 0x100)
  6499.                     Field (RAM, AnyAcc, NoLock, Preserve)
  6500.                     {
  6501.                         //  AC information
  6502.                         ADP,    1,      //  AC Adapter 1:On-line, 0:Off-line
  6503.                         AFLT,   1,      //  AC Adapter Fault  1:Fault  0:Normal
  6504.                         BAT0,   1,      //  BAT0  1:present, 0:not present
  6505.                         ,       1,      //  reserved
  6506.                         ,       28, //  filler to force DWORD alignment
  6507.  
  6508.                         //  CMBatt information
  6509.                         BPU0,   32, //  Power Unit
  6510.                         BDC0,   32, //  Designed Capacity
  6511.                         BFC0,   32, //  Last Full Charge Capacity
  6512.                         BTC0,   32, //  Battery Technology
  6513.                         BDV0,   32, //  Design Voltage
  6514.                         BST0,   32, //  Battery State
  6515.                         BPR0,   32, //  Battery Present Rate
  6516.                                         //  (Designed Capacity)x(%)/{(h)x100}
  6517.                         BRC0,   32, //  Battery Remaining Capacity
  6518.                                         //  (Designed Capacity)(%)^100
  6519.                         BPV0,   32, //  Battery Present Voltage
  6520.                         BTP0,   32, //  Trip Point
  6521.                         BCW0,   32, //  Design capacity of Warning
  6522.                         BCL0,   32, //  Design capacity of Low
  6523.                         BCG0,   32, //  capacity granularity 1
  6524.                         BG20,   32, //  capacity granularity 2
  6525.                         BMO0,   32, //  Battery model number field
  6526.                         BIF0,   32, //  OEM Information(00h)
  6527.                         BSN0,   32, //  Battery Serial Number
  6528.                         BTY0,   32, //  Battery Type (e.g., "Li-Ion")
  6529.                         BTY1,   32      //  Battery Type (e.g., "Li-Ion")
  6530.                     }   //  Field
  6531.                 }   //  EC0: Embedded Controller
  6532.             }   //  ISA bridge
  6533.         }   //  PCI2 Root PCI Bus
  6534.  
  6535.         Device (IDX0)
  6536.         {   //  Test device name
  6537.             Name (_HID, EISAID ("PNP0C0A"))     //  Control Method Battey ID
  6538.             Name (_PCL, Package() {\_SB})
  6539.             Method (_STA)
  6540.             {
  6541.                 //  _STA bits 0-3 indicate existence of battery slot
  6542.                 //  _STA bit 4 indicates battery (not) present
  6543.                 If (\_SB.PCI2.ISA.EC0.BAT0)
  6544.                     {   Return (0x1F)   }   //  Battery present
  6545.                 else
  6546.                     {   Return (0x0F)   }   //  Battery not present
  6547.             }   //  _STA
  6548.  
  6549.             Method (_BIF)
  6550.             {
  6551.                 Name (BUFR, Package(13) {})
  6552.                 Store (\_SB.PCI2.ISA.EC0.BPU0, Index (BUFR,0))  //  Power Unit
  6553.                 Store (\_SB.PCI2.ISA.EC0.BDC0, Index (BUFR,1))  //  Designed Capacity
  6554.                 Store (\_SB.PCI2.ISA.EC0.BFC0, Index (BUFR,2))  //  Last Full Charge Capa.
  6555.                 Store (\_SB.PCI2.ISA.EC0.BTC0, Index (BUFR,3))  //  Battery Technology
  6556.                 Store (\_SB.PCI2.ISA.EC0.BDV0, Index (BUFR,4))  //  Designed Voltage
  6557.                 Store (\_SB.PCI2.ISA.EC0.BCW0, Index (BUFR,5))  //  Designed warning level
  6558.                 Store (\_SB.PCI2.ISA.EC0.BCL0, Index (BUFR,6))  //  Designed Low level
  6559.                 Store (\_SB.PCI2.ISA.EC0.BCG0, Index (BUFR,7))  //  Capacity granularity 1
  6560.                 Store (\_SB.PCI2.ISA.EC0.BG20, Index (BUFR,8))  //  Capacity granularity 2
  6561.  
  6562.                 Store ("", Index (BUFR,9))                              //  Model Number
  6563.  
  6564.                 Store ("", Index (BUFR,10))                         //  Serial Number
  6565.  
  6566.                 Store ("LiOn", Index (BUFR,11))                     //  Battery Type
  6567.  
  6568.                 Store ("Chicony", Index (BUFR,12))                  //  OEM Information
  6569.  
  6570.                 Return (BUFR)
  6571.             }   //  _BIF
  6572.  
  6573.             Method (_BST)
  6574.             {
  6575.                 Name (BUFR, Package(4) {1, 0x100, 0x76543210, 0x180})
  6576.                 Return (BUFR)
  6577.             }   //  _BST
  6578.  
  6579.             Method (_BTP,1)
  6580.             {
  6581.                 Store (arg0, \_SB.PCI2.ISA.EC0.BTP0)    //  Set Battery Trip point
  6582.             }
  6583.  
  6584.             Method (TEST)
  6585.             {
  6586.  
  6587.                 Store ("++++++++ IndexOp Test", Debug)
  6588.  
  6589.                 //  test storing into uninitialized package elements
  6590.                 Name (PBUF, Package(4) {})  //  leave unitialized
  6591.                 Store (0x01234567, Index (PBUF,0))
  6592.                 Store (0x89ABCDEF, Index (PBUF,1))
  6593.                 Store (0xFEDCBA98, Index (PBUF,2))
  6594.                 Store (0x76543210, Index (PBUF,3))
  6595.  
  6596.                 //  verify values stored into uninitialized package elements
  6597.                 If (LNotEqual (DerefOf (Index (PBUF,0)), 0x01234567))
  6598.                     {   Return (0x10)   }
  6599.  
  6600.                 If (LNotEqual (DerefOf (Index (PBUF,1)), 0x89ABCDEF))
  6601.                     {   Return (0x11)   }
  6602.  
  6603.                 If (LNotEqual (DerefOf (Index (PBUF,2)), 0xFEDCBA98))
  6604.                     {   Return (0x12)   }
  6605.  
  6606.                 If (LNotEqual (DerefOf (Index (PBUF,3)), 0x76543210))
  6607.                     {   Return (0x13)   }
  6608.  
  6609.  
  6610.                 //  store _BIF package return value into Local0
  6611.                 Store (_BIF, Local0)
  6612.  
  6613.                 //  save Local0 object type value into Local1
  6614.                 Store (ObjectType (Local0), Local1)
  6615.  
  6616.                 //  validate Local0 is a Package
  6617.                 If (LNotEqual (Local1, 4))  //  Package type is 4
  6618.                     {   Return (0x21)   }   //  failure
  6619.  
  6620.  
  6621.                 //  test storing into buffer field elements
  6622.                 Name (BUFR, Buffer(16)
  6623.                     {   //  initial values
  6624.                         00, 00, 00, 00, 00, 00, 00, 00,
  6625.                         00, 00, 00, 00, 00, 00, 00, 00,
  6626.                     }
  6627.                 )   //  BUFR
  6628.                 //  test storing into buffer field elements
  6629.                 Store (0x01234567, Index (BUFR,0))  //  should only store 0x67
  6630.                 Store (0x89ABCDEF, Index (BUFR,4))  //  should only store 0xEF
  6631.                 Store (0xFEDCBA98, Index (BUFR,8))  //  should only store 0x98
  6632.                 Store (0x76543210, Index (BUFR,12)) //  should only store 0x10
  6633.  
  6634.                 //  verify storing into buffer field elements
  6635.                 If (LNotEqual (DerefOf (Index (BUFR,0)), 0x67))
  6636.                     {   Return (0x30)   }
  6637.  
  6638.                 If (LNotEqual (DerefOf (Index (BUFR,1)), 0))
  6639.                     {   Return (0x31)   }
  6640.  
  6641.                 If (LNotEqual (DerefOf (Index (BUFR,4)), 0xEF))
  6642.                     {   Return (0x34)   }
  6643.  
  6644.                 If (LNotEqual (DerefOf (Index (BUFR,8)), 0x98))
  6645.                     {   Return (0x38)   }
  6646.  
  6647.                 If (LNotEqual (DerefOf (Index (BUFR,12)), 0x10))
  6648.                     {   Return (0x3C)   }
  6649.  
  6650.  
  6651.                 Return (0)  //  pass
  6652.             }   //  TEST
  6653.         }   //  IDX0
  6654.     }   //  _SB system bus
  6655.  
  6656. //
  6657. // test BitIndex.asl
  6658. //
  6659. //  BitIndex test
  6660. //  This is a test case for accessing fields defined as single bits in
  6661. //  memory.  This is done by creating two index fields that overlay the
  6662. //  same DWORD in memory.  One field accesses the DWORD as a DWORD, the
  6663. //  other accesses individual bits of the same DWORD field in memory.
  6664. //
  6665.     Scope (\_SB)    //  System Bus
  6666.     {   //  _SB system bus
  6667.         OperationRegion (RAM, SystemMemory, 0x800000, 0x100)
  6668.         Field (RAM, AnyAcc, NoLock, Preserve)
  6669.         {   //  Any access
  6670.             TREE,   3,
  6671.             WRD0,   16,
  6672.             WRD1,   16,
  6673.             WRD2,   16,
  6674.             WRD3,   16,
  6675.             WRD4,   16,
  6676.             DWRD,   32, //  DWORD field
  6677.         }
  6678.         Field (RAM, AnyAcc, NoLock, Preserve)
  6679.         {   //  Any access
  6680.             THRE,   3,
  6681.             WD00,   16,
  6682.             WD01,   16,
  6683.             WD02,   16,
  6684.             WD03,   16,
  6685.             WD04,   16,
  6686.             BYT0,   8,  //  Start off with a BYTE
  6687.             BIT0,   1,  //  single-bit field
  6688.             BIT1,   1,  //  single-bit field
  6689.             BIT2,   1,  //  single-bit field
  6690.             BIT3,   1,  //  single-bit field
  6691.             BIT4,   1,  //  single-bit field
  6692.             BIT5,   1,  //  single-bit field
  6693.             BIT6,   1,  //  single-bit field
  6694.             BIT7,   1,  //  single-bit field
  6695.             BIT8,   1,  //  single-bit field
  6696.             BIT9,   1,  //  single-bit field
  6697.             BITA,   1,  //  single-bit field
  6698.             BITB,   1,  //  single-bit field
  6699.             BITC,   1,  //  single-bit field
  6700.             BITD,   1,  //  single-bit field
  6701.             BITE,   1,  //  single-bit field
  6702.             BITF,   1,  //  single-bit field
  6703.             BYTZ,   8,  //  End with a BYTE for a total of 32 bits
  6704.         }
  6705.  
  6706.         Device (BITI)
  6707.         {   //  Test device name
  6708.  
  6709.             Method (MBIT)   //  Test single bit memory accesses
  6710.             {
  6711.  
  6712.                 If (LNotEqual (DWRD, 0x00))
  6713.                 {
  6714.                     Store (0xFF00, Local0)
  6715.                 }
  6716.                 Else
  6717.                 {
  6718.                     //  Prime Local0 with 0...assume passing condition
  6719.                     Store (0, Local0)
  6720.  
  6721.                     //  set memory contents to known values using DWORD field
  6722.                     Store (0x5A5A5A5A, DWRD)
  6723.  
  6724.                     //  Given the value programmed into DWRD, only the odd bits
  6725.                     //  of the lower nibble should be set. BIT1, BIT3 should be set.
  6726.                     //  BIT0 and BIT2 should be clear
  6727.  
  6728.                     If (BIT0)
  6729.                     {
  6730.                         Or (Local0, 0x01, Local0)
  6731.                     }
  6732.  
  6733.                     If (LNot (BIT1))
  6734.                     {
  6735.                         Or (Local0, 0x02, Local0)
  6736.                     }
  6737.  
  6738.                     If (BIT2)
  6739.                     {
  6740.                         Or (Local0, 0x04, Local0)
  6741.                     }
  6742.  
  6743.                     If (LNot (BIT3))
  6744.                     {
  6745.                         Or (Local0, 0x08, Local0)
  6746.                     }
  6747.  
  6748.                     //  Now check the upper nibble.  Only the "even" bits should
  6749.                     //  be set.  BIT4, BIT6.  BIT5 and BIT7 should be clear.
  6750.                     If (LNot (BIT4))
  6751.                     {
  6752.                         Or (Local0, 0x10, Local0)
  6753.                     }
  6754.  
  6755.                     If (BIT5)
  6756.                     {
  6757.                         Or (Local0, 0x20, Local0)
  6758.                     }
  6759.  
  6760.                     If (LNot (BIT6))
  6761.                     {
  6762.                         Or (Local0, 0x40, Local0)
  6763.                     }
  6764.  
  6765.                     If (BIT7)
  6766.                     {
  6767.                         Or (Local0, 0x80, Local0)
  6768.                     }
  6769.                 }   //  End Else DWRD zeroed out
  6770.  
  6771.                 Return (Local0)
  6772.             }   //  MBIT:   Test single bit memory accesses
  6773.  
  6774.             Method (TEST)
  6775.             {
  6776.  
  6777.                 Store ("++++++++ BitIndex Test", Debug)
  6778.  
  6779.                 //  Zero out DWRD
  6780.                 Store (0x00000000, DWRD)
  6781.  
  6782.                 //  MBIT returns zero if successful
  6783.                 //  This may be causing problems -- Return (MBIT)
  6784.                 Store (MBIT, Local0)
  6785.  
  6786.                 Return (Local0)
  6787.             }   //  TEST
  6788.         }   //  BITI
  6789.     }   //  _SB system bus
  6790.  
  6791. //
  6792. // test IndexOp3.asl
  6793. //
  6794. //  Additional IndexOp test cases to support ACPICMB (control method battery
  6795. //  test) on Compaq laptops. Test cases include storing a package into
  6796. //  an IndexOp target and validating that changing source and destination
  6797. //  package contents are independent of each other.
  6798. //
  6799.     Scope (\_SB)    //  System Bus
  6800.     {   //  _SB system bus
  6801.  
  6802.         Name (C174, 13)
  6803.         Name (C175, 8)
  6804.  
  6805.         Device (C158)
  6806.         {   //  C158:   AC Adapter device
  6807.             Name (_HID, "ACPI0003") //  AC Adapter device
  6808.             Name (_PCL, Package (1) {\_SB})
  6809.  
  6810.             Method (_PSR)
  6811.             {
  6812.                 Acquire (\_GL, 0xFFFF)
  6813.                 Release (\_GL)
  6814.                 And (Local0, 1, Local0) //  Local0 &= 1
  6815.                 Return (Local0)
  6816.             }   //  _PSR
  6817.         }   //  C158:   AC Adapter device
  6818.  
  6819.         Name (C176, Package (4) {"Primary", "MultiBay", "DockRight", "DockLeft"})
  6820.  
  6821.         Name (C177, Package (4) {0x99F5, 0x99F5, 0x995F, 0x995F})
  6822.  
  6823.         Name (C178, Package (4)
  6824.         {
  6825.             Package (4) {0, 0, 0x966B, 0x4190},
  6826.             Package (4) {0, 0, 0x966B, 0x4190},
  6827.             Package (4) {0, 0, 0x966B, 0x4190},
  6828.             Package (4) {0, 0, 0x966B, 0x4190}
  6829.         })  //  C178
  6830.  
  6831.         Name (C179, Package (4) {0, 0, 0x966B, 0x4190})
  6832.  
  6833.         Name (C17A, Package (4)
  6834.         {
  6835.             Package (3) {0, 0, 0},
  6836.             Package (3) {0, 0, 0},
  6837.             Package (3) {0, 0, 0},
  6838.             Package (3) {0, 0, 0}
  6839.         })  //  C17A
  6840.  
  6841.         Method (C17B, 1)
  6842.         {   //  C17B:   _BIF implementation
  6843.             Name (C17C, Package (13)
  6844.             {   //  C17C:   _BIF control method return package
  6845.                 0,                  //  Power Unit (0 ==> mWh and mW)
  6846.                 0x99F5,         //  Design Capacity
  6847.                 0x99F5,         //  Last Full Charge Capacity
  6848.                 1,                  //  Battery Technology (1 ==> rechargeable)
  6849.                 0x3840,         //  Design Voltage
  6850.                 0x1280,         //  Design Capacity of Warning
  6851.                 0x0AC7,         //  Design Capacity of Low
  6852.                 1,                  //  Battery Capacity Granularity 1 (Low -- Warning)
  6853.                 1,                  //  Battery Capacity Granularity 2 (Warning -- Full)
  6854.                 "2891",         //  Model Number (ASCIIZ)
  6855.                 "(-Unknown-)",  //  Serial Number (ASCIIZ)
  6856.                 "LIon",         //  Battery Type (ASCIIZ)
  6857.                 0                   //  OEM Information (ASCIIZ)
  6858.             })  //  C17C:   _BIF control method return package
  6859.  
  6860.             And (Arg0, 7, Local0)                       //  Local0 = Arg0 & 7
  6861.  
  6862.             ShiftRight (Local0, 1, Local4)          //  Local4 = Local0 >> 1
  6863.  
  6864.             Store (C179, Index (C178, Local4, ))    //  C178->Local4 = C179
  6865.  
  6866.             //  verify source and destination packages can be altered independent
  6867.             //  of each other (i.e., changing one's contents does NOT change other's
  6868.             //  contents)
  6869.             Store (0x1234, Index (C179, 2, ))               //  C179[2] = 0x1234
  6870.             Store (DerefOf (Index (C179, 2, )), Local2) //  Local2 = C179[2]
  6871.             if (LNotEqual (Local2, 0x1234))
  6872.                 {   Return (0x1234) }
  6873.                                                                         //  Local2 = C178[0,2]
  6874.             Store (DerefOf (Index (DerefOf (Index (C178, 0, )), 2, )), Local2)
  6875.             if (LNotEqual (Local2, 0x966B))
  6876.                 {   Return (0x1234) }
  6877.  
  6878.             // Restore data to allow iterative execution
  6879.             Store (0x966B, Index (C179, 2, ))               //  C179[2] = 0x966B
  6880.  
  6881.                                                                         //  C178[0,3] = 0x5678
  6882.             Store (0x5678, Index (DerefOf (Index (C178, 0, )), 3, ))
  6883.                                                                         //  Local2 = C178[0,3]
  6884.             Store (DerefOf (Index (DerefOf (Index (C178, 0, )), 3, )), Local2)
  6885.             if (LNotEqual (Local2, 0x5678))
  6886.                 {   Return (0x5678) }
  6887.  
  6888.             Store (DerefOf (Index (C179, 3, )), Local2) //  Local2 = C179[3]
  6889.             if (LNotEqual (Local2, 0x4190))
  6890.                 {   Return (0x5678) }
  6891.  
  6892.             // Restore data to allow iterative execution
  6893.             Store (0x4190, Index (DerefOf (Index (C178, 0, )), 3, ))    //  C179[2] = 0x4190
  6894.  
  6895.             Return (C17C)
  6896.         }   //  C17B:   _BIF implementation
  6897.  
  6898.         Device (C154)
  6899.         {   //  C154:   Battery 0
  6900.             Name (_HID, "*PNP0C0A")     //  Control Method Battey ID
  6901.             Name (_UID, 0)                  //  first instance
  6902.  
  6903.             Method (_BIF)
  6904.             {   //  _BIF
  6905.                 Return (C17B (48))
  6906.             }   //  _BIF
  6907.         }   //  C154:   Battery 0
  6908.  
  6909.         Device (IDX3)
  6910.         {
  6911.             Method (LCLB)
  6912.             {   //  LCLB control method: test Index(Local#) where Local# is buffer
  6913.                 //  Local0 is index counter
  6914.                 //  Local1 is buffer
  6915.                 //  Local2 receives BUFR[Local0] via Deref(Index(Local1...))
  6916.                 //  Local3 is Local1 or Local2 object type
  6917.                 //  Local4 is return error code
  6918.  
  6919.                 Name (BUFR, Buffer ()   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
  6920.  
  6921.                 //  save PKG into Local1
  6922.                 Store (BUFR, Local1)
  6923.  
  6924.                 //  save Local2 object type value into Local3
  6925.                 Store (ObjectType (Local1), Local3)
  6926.  
  6927.                 //  validate Local1 is a Buffer
  6928.                 If (LNotEqual (Local3, 3))      //  Buffer type is 3
  6929.                     {   Return (0x9F)   }
  6930.  
  6931.  
  6932.                 Store (0, Local0)
  6933.                 While (LLess (Local0, 5))
  6934.                 {   //  While (Local0 < 5)
  6935.                     //  Local2 = Local1[Local0]
  6936.                     Store (DerefOf (Index (Local1, Local0, )), Local2)
  6937.  
  6938.                     //  save Local2 object type value into Local3
  6939.                     Store (ObjectType (Local2), Local3)
  6940.  
  6941.                     //  validate Local2 is a Number
  6942.                     If (LNotEqual (Local3, 1))      //  Number type is 1
  6943.                         {   Return (0x9E)   }
  6944.  
  6945.                     //  validate Local1[Local0] value == Local0
  6946.                     If (LNotEqual (Local0, Local2))
  6947.                     {   //  Local0 != Local2 == PKG[Local0]
  6948.                         //  Local4 = 0x90 + loop index (Local0)
  6949.                         Add (0x90, Local0, Local4)
  6950.  
  6951.                         //  return 0x90 + loop index
  6952.                         Return (Local4)
  6953.                     }
  6954.  
  6955.                     Increment (Local0)
  6956.                 }   //  While (Local0 < 5)
  6957.  
  6958.                 Store ("DerefOf(Index(LocalBuffer,,)) PASS", Debug)
  6959.  
  6960.                 Return (0)  //  Pass
  6961.             }   //  LCLB control method: test Index(Local#) where Local# is buffer
  6962.  
  6963.             Method (LCLP)
  6964.             {   //  LCLP control method: test Index(Local#) where Local# is package
  6965.                 //  Local0 is index counter
  6966.                 //  Local1 is package
  6967.                 //  Local2 receives PKG[Local0] via Deref(Index(Local1...))
  6968.                 //  Local3 is Local1 or Local2 object type
  6969.                 //  Local4 is return error code
  6970.  
  6971.                 Name (PKG, Package ()   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
  6972.  
  6973.                 //  save PKG into Local1
  6974.                 Store (PKG, Local1)
  6975.  
  6976.                 //  save Local2 object type value into Local3
  6977.                 Store (ObjectType (Local1), Local3)
  6978.  
  6979.                 //  validate Local1 is a Package
  6980.                 If (LNotEqual (Local3, 4))      //  Package type is 4
  6981.                     {   Return (0x8F)   }
  6982.  
  6983.  
  6984.                 Store (0, Local0)
  6985.                 While (LLess (Local0, 5))
  6986.                 {   //  While (Local0 < 5)
  6987.                     //  Local2 = Local1[Local0]
  6988.                     Store (DerefOf (Index (Local1, Local0, )), Local2)
  6989.  
  6990.                     //  save Local2 object type value into Local3
  6991.                     Store (ObjectType (Local2), Local3)
  6992.  
  6993.                     //  validate Local2 is a Number
  6994.                     If (LNotEqual (Local3, 1))      //  Number type is 1
  6995.                         {   Return (0x8E)   }
  6996.  
  6997.                     //  validate Local1[Local0] value == Local0
  6998.                     If (LNotEqual (Local0, Local2))
  6999.                     {   //  Local0 != Local2 == PKG[Local0]
  7000.                         //  Local4 = 0x80 + loop index (Local0)
  7001.                         Add (0x80, Local0, Local4)
  7002.  
  7003.                         //  return 0x80 + loop index
  7004.                         Return (Local4)
  7005.                     }
  7006.  
  7007.                     Increment (Local0)
  7008.                 }   //  While (Local0 < 5)
  7009.  
  7010.                 Store ("DerefOf(Index(LocalPackage,,)) PASS", Debug)
  7011.  
  7012.                 Return (0)  //  Pass
  7013.             }   //  LCLP control method: test Index(Local#) where Local# is package
  7014.  
  7015.             Method (TEST)
  7016.             {
  7017.  
  7018.                 Store ("++++++++ IndexOp3 Test", Debug)
  7019.  
  7020.                 //  store _BIF package return value into Local0
  7021.                 Store (\_SB.C154._BIF, Local0)
  7022.  
  7023.                 //  save Local0 object type value into Local1
  7024.                 Store (ObjectType (Local0), Local1)
  7025.  
  7026.                 //  validate Local0 is a Package
  7027.                 If (LNotEqual (Local1, 4))      //  Package type is 4
  7028.                 {   //  failure: did not return a Package (type 4)
  7029.                     //  if Local0 is a Number, it contains an error code
  7030.                     If (LEqual (Local1, 1))     //  Number type is 1
  7031.                         {   Return (Local0) }   //  return Local0 error code
  7032.                     Else                                //  Local0 is not a Number
  7033.                         {   Return (1)  }           //  return default error code
  7034.                 }   //  failure: did not return a Package (type 4)
  7035.  
  7036.                 //  save LCLB control method return value into Local2
  7037.                 Store (LCLB, Local2)
  7038.                 If (LNotEqual (Local2, 0))
  7039.                     {   Return (Local2) }   //  return failure code
  7040.  
  7041.                 //  save LCLP control method return value into Local2
  7042.                 Store (LCLP, Local2)
  7043.                 If (LNotEqual (Local2, 0))
  7044.                     {   Return (Local2) }   //  return failure code
  7045.  
  7046.                 Return (0)  //  Pass
  7047.             }   //  TEST
  7048.         }   //  IDX3:   Test device name
  7049.     }   //  _SB system bus
  7050.  
  7051. //
  7052. // MTL developed test to exercise Indexes into buffers
  7053. //
  7054.     Device(IDX7)
  7055.     {
  7056.  
  7057.         Name (PKG4, Package() {
  7058.                 0x2,
  7059.                 "A short string",
  7060.                 Buffer() {0xA, 0xB, 0xC, 0xD},
  7061.                 0x1234,
  7062.                 Package() {IDX7, 0x3}
  7063.                 })
  7064.  
  7065.         //
  7066.         // Generic Test method
  7067.         //
  7068.         // This test returns 0xE (14) - ObjectType = Buffer Field
  7069.         Method(TST1)
  7070.         {
  7071.             Name (DEST, Buffer ()                           //  62 characters plus NULL
  7072.                 {"Destination buffer that is longer than the short source buffer"})
  7073.  
  7074.             //  verify object type returned by Index(Buffer,Element,)
  7075.             Store (Index (DEST, 2, ), Local1)
  7076.             Store (ObjectType (Local1), Local2)
  7077.             If (LEqual(Local2, 14))
  7078.             {
  7079.                 Return(0)
  7080.             }
  7081.             Else
  7082.             {
  7083.                 Return(0x1)
  7084.             }
  7085.  
  7086.         }
  7087.  
  7088.         Method(TST2)
  7089.         {
  7090.             Name (BUF0, Buffer() {0x1, 0x2, 0x3, 0x4, 0x5})
  7091.             Store(0x55, Index(BUF0, 2))
  7092.             Store(DerefOf(Index(BUF0, 2)), Local0)
  7093.             If (LEqual(Local0, 0x55))
  7094.             {
  7095.                 Return(0)
  7096.             }
  7097.             Else
  7098.             {
  7099.                 Return(0x2)
  7100.             }
  7101.  
  7102.  
  7103.         }
  7104.  
  7105.         Method(TST3)
  7106.         {
  7107.             Name (BUF1, Buffer() {0x1, 0x2, 0x3, 0x4, 0x5})
  7108.             Store(Index(BUF1, 1), Local0)
  7109.             Store(DerefOf(Local0), Local1)
  7110.             If (LEqual(Local1, 0x2))
  7111.             {
  7112.                 Return(0)
  7113.             }
  7114.             Else
  7115.             {
  7116.                 Return(0x3)
  7117.             }
  7118.  
  7119.         }
  7120.  
  7121.         Method(TST4)
  7122.         {
  7123.             // Index (PKG4, 0) is a Number
  7124.             Store (Index (PKG4, 0), Local0)
  7125.             Store (ObjectType(Local0), Local1)
  7126.             If (LEqual(Local1, 0x1))
  7127.             {
  7128.                 Return(0)
  7129.             }
  7130.             Else
  7131.             {
  7132.                 Return(0x4)
  7133.             }
  7134.  
  7135.         }
  7136.  
  7137.         Method(TST5)
  7138.         {
  7139.             // Index (PKG4, 1) is a String
  7140.             Store (Index (PKG4, 1), Local0)
  7141.             Store (ObjectType(Local0), Local1)
  7142.             If (LEqual(Local1, 0x2))
  7143.             {
  7144.                 Return(0)
  7145.             }
  7146.             Else
  7147.             {
  7148.                 Return(0x5)
  7149.             }
  7150.  
  7151.         }
  7152.  
  7153.         Method(TST6)
  7154.         {
  7155.             // Index (PKG4, 2) is a Buffer
  7156.             Store (Index (PKG4, 2), Local0)
  7157.             Store (ObjectType(Local0), Local1)
  7158.             If (LEqual(Local1, 0x3))
  7159.             {
  7160.                 Return(0)
  7161.             }
  7162.             Else
  7163.             {
  7164.                 Return(0x6)
  7165.             }
  7166.  
  7167.         }
  7168.  
  7169.         Method(TST7)
  7170.         {
  7171.             // Index (PKG4, 3) is a Number
  7172.             Store (Index (PKG4, 3), Local0)
  7173.             Store (ObjectType(Local0), Local1)
  7174.             If (LEqual(Local1, 0x1))
  7175.             {
  7176.                 Return(0)
  7177.             }
  7178.             Else
  7179.             {
  7180.                 Return(0x7)
  7181.             }
  7182.  
  7183.         }
  7184.  
  7185.         Method(TST8)
  7186.         {
  7187.             // Index (PKG4, 4) is a Package
  7188.             Store (Index (PKG4, 4), Local0)
  7189.             Store (ObjectType(Local0), Local1)
  7190.             If (LEqual(Local1, 0x4))
  7191.             {
  7192.                 Return(0)
  7193.             }
  7194.             Else
  7195.             {
  7196.                 Return(0x8)
  7197.             }
  7198.  
  7199.         }
  7200.  
  7201.         Method(TST9)
  7202.         {
  7203.             // DerefOf (Index (PKG4, 0)) is a Number
  7204.             Store (DerefOf (Index (PKG4, 0)), Local0)
  7205.             If (LEqual(Local0, 0x2))
  7206.             {
  7207.                 Return(0)
  7208.             }
  7209.             Else
  7210.             {
  7211.                 Return(0x9)
  7212.             }
  7213.  
  7214.         }
  7215.  
  7216.         Method(TSTA)
  7217.         {
  7218.             // DerefOf (Index (PKG4, 1)) is a String
  7219.             Store (DerefOf (Index (PKG4, 1)), Local0)
  7220.             Store (SizeOf(Local0), Local1)
  7221.             If (LEqual(Local1, 0xE))
  7222.             {
  7223.                 Return(0)
  7224.             }
  7225.             Else
  7226.             {
  7227.                 Return(0xA)
  7228.             }
  7229.  
  7230.         }
  7231.  
  7232.         Method(TSTB)
  7233.         {
  7234.             // DerefOf (Index (PKG4, 2)) is a Buffer
  7235.             Store (DerefOf (Index (PKG4, 2)), Local0)
  7236.             Store (SizeOf(Local0), Local1)
  7237.             If (LEqual(Local1, 0x4))
  7238.             {
  7239.                 Return(0)
  7240.             }
  7241.             Else
  7242.             {
  7243.                 Return(0xB)
  7244.             }
  7245.  
  7246.         }
  7247.  
  7248.         Method(TSTC)
  7249.         {
  7250.             // DerefOf (Index (PKG4, 3)) is a Number
  7251.             Store (DerefOf (Index (PKG4, 3)), Local0)
  7252.             If (LEqual(Local0, 0x1234))
  7253.             {
  7254.                 Return(0)
  7255.             }
  7256.             Else
  7257.             {
  7258.                 Return(0xC)
  7259.             }
  7260.  
  7261.         }
  7262.  
  7263.         Method(TSTD)
  7264.         {
  7265.             // DerefOf (Index (PKG4, 4)) is a Package
  7266.             Store (DerefOf (Index (PKG4, 4)), Local0)
  7267.             Store (SizeOf(Local0), Local1)
  7268.             If (LEqual(Local1, 0x2))
  7269.             {
  7270.                 Return(0)
  7271.             }
  7272.             Else
  7273.             {
  7274.                 Return(0xD)
  7275.             }
  7276.  
  7277.         }
  7278.  
  7279.         Method(TSTE)
  7280.         {
  7281.             // DerefOf (Index (PKG4, 2)) is a Buffer
  7282.             Store (DerefOf (Index (PKG4, 2)), Local0)
  7283.             // DerefOf (Index (Local0, 1)) is a Number
  7284.             Store (DerefOf (Index (Local0, 1)), Local1)
  7285.             If (LEqual(Local1, 0xB))
  7286.             {
  7287.                 Return(0)
  7288.             }
  7289.             Else
  7290.             {
  7291.                 Return(0xE)
  7292.             }
  7293.  
  7294.         }
  7295.  
  7296.         Method (TSTF)
  7297.         {
  7298.             Name (SRCB, Buffer (12) {}) //  12 characters
  7299.             Store ("Short Buffer", SRCB)
  7300.  
  7301.             Name (DEST, Buffer ()                       //  62 characters plus NULL
  7302.                 {"Destination buffer that is longer than the short source buffer"})
  7303.  
  7304.             //  overwrite DEST contents, starting at buffer position 2
  7305.             Store (SRCB, Index (DEST, 2))
  7306.  
  7307.             //
  7308.             //  The DEST buffer element should be replaced with the last element of
  7309.             //      the SRCB element (i.e. 's'->'r')
  7310.             Store (DerefOf (Index (DEST, 2)), Local0)
  7311.  
  7312.             If (LNotEqual (Local0, 0x72))       //  'r'
  7313.             {
  7314.                 //  DEST element does not match the value from SRCB
  7315.                 Return(Or(Local0, 0x1000))
  7316.             }
  7317.  
  7318.             Return(0)
  7319.         }
  7320.  
  7321.         Method (TSTG)
  7322.         {
  7323.  
  7324.             Name (SRCB, Buffer (12) {}) //  12 characters
  7325.             Store ("Short Buffer", SRCB)
  7326.  
  7327.             Name (DEST, Buffer ()                       //  62 characters plus NULL
  7328.                 {"Destination buffer that is longer than the short source buffer"})
  7329.  
  7330.             //  overwrite DEST contents, starting at buffer position 2
  7331.             Store (SRCB, Index (DEST, 2))
  7332.  
  7333.             //
  7334.             // The next element of DEST should be unchanged
  7335.             //
  7336.             Store (DerefOf (Index (DEST, 3)), Local0)
  7337.  
  7338.             If (LNotEqual (Local0, 0x74))       //  't'
  7339.             {
  7340.                 //  DEST has been changed
  7341.                 Return(Or(Local0, 0x2000))
  7342.             }
  7343.  
  7344.             //
  7345.             // The next element of DEST should be unchanged
  7346.             //
  7347.             Store (DerefOf (Index (DEST, 4)), Local0)
  7348.  
  7349.             If (LNotEqual (Local0, 0x69))       //  'i'
  7350.             {
  7351.                 //  DEST has been changed
  7352.                 Return(Or(Local0, 0x2100))
  7353.             }
  7354.  
  7355.             //
  7356.             // The next element of DEST should be unchanged
  7357.             //
  7358.             Store (DerefOf (Index (DEST, 5)), Local0)
  7359.  
  7360.             If (LNotEqual (Local0, 0x6E))       //  'n'
  7361.             {
  7362.                 //  DEST has been changed
  7363.                 Return(Or(Local0, 0x2200))
  7364.             }
  7365.  
  7366.             //
  7367.             // The next element of DEST should be unchanged
  7368.             //
  7369.             Store (DerefOf (Index (DEST, 6)), Local0)
  7370.  
  7371.             If (LNotEqual (Local0, 0x61))       //  'a'
  7372.             {
  7373.                 //  DEST has been changed
  7374.                 Return(Or(Local0, 0x2300))
  7375.             }
  7376.  
  7377.             //
  7378.             // The next element of DEST should be unchanged
  7379.             //
  7380.             Store (DerefOf (Index (DEST, 7)), Local0)
  7381.  
  7382.             If (LNotEqual (Local0, 0x74))       //  't'
  7383.             {
  7384.                 //  DEST has been changed
  7385.                 Return(Or(Local0, 0x2400))
  7386.             }
  7387.  
  7388.             //
  7389.             //  Verify DEST elements beyond end of SRCB buffer copy
  7390.             //  have not been changed
  7391.             Store (DerefOf (Index (DEST, 14)), Local0)
  7392.  
  7393.             If (LNotEqual (Local0, 0x66))       // 'f'
  7394.             {
  7395.                 //  DEST has been changed
  7396.                 Return(Or(Local0, 0x2400))
  7397.             }
  7398.  
  7399.             Return(0)
  7400.         }
  7401.  
  7402.         //
  7403.         // This test shows that MS ACPI.SYS stores only the lower 8-bits of a 32-bit
  7404.         //  number into the index'ed buffer
  7405.         //
  7406.         Method (TSTH)
  7407.         {
  7408.             // Create a Destination Buffer
  7409.             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
  7410.  
  7411.             // Store a number > UINT8 into an index of the buffer
  7412.             Store (0x12345678, Index(DBUF, 2))
  7413.  
  7414.             // Check the results
  7415.             Store (DerefOf (Index (DBUF, 2)), Local0)
  7416.             If (LNotEqual (Local0, 0x78))   // 0x78
  7417.             {
  7418.                 Return(Or(Local0, 0x3000))
  7419.             }
  7420.  
  7421.             Store (DerefOf (Index (DBUF, 3)), Local0)
  7422.             If (LNotEqual (Local0, 0x64))   // 'd'
  7423.             {
  7424.                 Return(Or(Local0, 0x3100))
  7425.             }
  7426.  
  7427.             Store (DerefOf (Index (DBUF, 4)), Local0)
  7428.             If (LNotEqual (Local0, 0x65))   // 'e'
  7429.             {
  7430.                 Return(Or(Local0, 0x3200))
  7431.             }
  7432.  
  7433.             Store (DerefOf (Index (DBUF, 5)), Local0)
  7434.             If (LNotEqual (Local0, 0x66))   // 'f'
  7435.             {
  7436.                 Return(Or(Local0, 0x3300))
  7437.             }
  7438.  
  7439.             Return(0)
  7440.         }
  7441.  
  7442.         Method (TSTI)
  7443.         {
  7444.             // Create a Destination Buffer
  7445.             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
  7446.  
  7447.             // Store a String into an index of the buffer
  7448.             Store ("ABCDEFGH", Index(DBUF, 2))
  7449.  
  7450.             // Check the results
  7451.             Store (DerefOf (Index (DBUF, 2)), Local0)
  7452.             If (LNotEqual (Local0, 0x48))   // 'H'
  7453.             {
  7454.                 Return(Or(Local0, 0x4000))
  7455.             }
  7456.  
  7457.             Store (DerefOf (Index (DBUF, 3)), Local0)
  7458.             If (LNotEqual (Local0, 0x64))   // 'd'
  7459.             {
  7460.                 Return(Or(Local0, 0x4100))
  7461.             }
  7462.  
  7463.             Store (DerefOf (Index (DBUF, 4)), Local0)
  7464.             If (LNotEqual (Local0, 0x65))   // 'e'
  7465.             {
  7466.                 Return(Or(Local0, 0x4200))
  7467.             }
  7468.  
  7469.             Store (DerefOf (Index (DBUF, 5)), Local0)
  7470.             If (LNotEqual (Local0, 0x66))   // 'f'
  7471.             {
  7472.                 Return(Or(Local0, 0x4300))
  7473.             }
  7474.  
  7475.             Return(0)
  7476.         }
  7477.  
  7478.         Method(TSTJ)
  7479.         {
  7480.             // Create a Destination Buffer
  7481.             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
  7482.  
  7483.             // Store a number > UINT8 into an index of the buffer
  7484.             Store (0x1234, Index(DBUF, 2))
  7485.  
  7486.             // Check the results
  7487.             Store (DerefOf (Index (DBUF, 2)), Local0)
  7488.             If (LNotEqual (Local0, 0x34))   // 0x34
  7489.             {
  7490.                 Return(Or(Local0, 0x3000))
  7491.             }
  7492.  
  7493.             Store (DerefOf (Index (DBUF, 3)), Local0)
  7494.             If (LNotEqual (Local0, 0x64))   // 'd'
  7495.             {
  7496.                 Return(Or(Local0, 0x3100))
  7497.             }
  7498.  
  7499.             Store (DerefOf (Index (DBUF, 4)), Local0)
  7500.             If (LNotEqual (Local0, 0x65))   // 'e'
  7501.             {
  7502.                 Return(Or(Local0, 0x3200))
  7503.             }
  7504.  
  7505.             Store (DerefOf (Index (DBUF, 5)), Local0)
  7506.             If (LNotEqual (Local0, 0x66))   // 'f'
  7507.             {
  7508.                 Return(Or(Local0, 0x3300))
  7509.             }
  7510.  
  7511.             Return(0)
  7512.         }
  7513.  
  7514.         Method(TSTK)
  7515.         {
  7516.             // Create a Destination Buffer
  7517.             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
  7518.  
  7519.             // Store a number > UINT8 into an index of the buffer
  7520.             Store (0x123456, Index(DBUF, 2))
  7521.  
  7522.             // Check the results
  7523.             Store (DerefOf (Index (DBUF, 2)), Local0)
  7524.             If (LNotEqual (Local0, 0x56))   // 0x56
  7525.             {
  7526.                 Return(Or(Local0, 0x3000))
  7527.             }
  7528.  
  7529.             Store (DerefOf (Index (DBUF, 3)), Local0)
  7530.             If (LNotEqual (Local0, 0x64))   // 'd'
  7531.             {
  7532.                 Return(Or(Local0, 0x3100))
  7533.             }
  7534.  
  7535.             Store (DerefOf (Index (DBUF, 4)), Local0)
  7536.             If (LNotEqual (Local0, 0x65))   // 'e'
  7537.             {
  7538.                 Return(Or(Local0, 0x3200))
  7539.             }
  7540.  
  7541.             Store (DerefOf (Index (DBUF, 5)), Local0)
  7542.             If (LNotEqual (Local0, 0x66))   // 'f'
  7543.             {
  7544.                 Return(Or(Local0, 0x3300))
  7545.             }
  7546.  
  7547.             Return(0)
  7548.         }
  7549.  
  7550.         Method(TSTL)
  7551.         {
  7552.             // Create a Destination Buffer
  7553.             Name (DBUF, Buffer () {"abcdefghijklmnopqrstuvwxyz"})
  7554.  
  7555.             // Store a number > UINT8 into an index of the buffer
  7556.             Store (0x12, Index(DBUF, 2))
  7557.  
  7558.             // Check the results
  7559.             Store (DerefOf (Index (DBUF, 2)), Local0)
  7560.             If (LNotEqual (Local0, 0x12))   // 0x12
  7561.             {
  7562.                 Return(Or(Local0, 0x3000))
  7563.             }
  7564.  
  7565.             Store (DerefOf (Index (DBUF, 3)), Local0)
  7566.             If (LNotEqual (Local0, 0x64))   // 'd'
  7567.             {
  7568.                 Return(Or(Local0, 0x3100))
  7569.             }
  7570.  
  7571.             Store (DerefOf (Index (DBUF, 4)), Local0)
  7572.             If (LNotEqual (Local0, 0x65))   // 'e'
  7573.             {
  7574.                 Return(Or(Local0, 0x3200))
  7575.             }
  7576.  
  7577.             Store (DerefOf (Index (DBUF, 5)), Local0)
  7578.             If (LNotEqual (Local0, 0x66))   // 'f'
  7579.             {
  7580.                 Return(Or(Local0, 0x3300))
  7581.             }
  7582.  
  7583.             Return(0)
  7584.         }
  7585.  
  7586.         Method(TEST)
  7587.         {
  7588.             Store ("++++++++ IndexOp7 Test", Debug)
  7589.  
  7590.             Store(TST1(), Local0)
  7591.             if (LGreater (Local0, 0))
  7592.             {
  7593.                 Return(Local0)
  7594.             }
  7595.  
  7596.             Store(TST2(), Local0)
  7597.             if (LGreater (Local0, 0))
  7598.             {
  7599.                 Return(Local0)
  7600.             }
  7601.  
  7602.             Store(TST3(), Local0)
  7603.             if (LGreater (Local0, 0))
  7604.             {
  7605.                 Return(Local0)
  7606.             }
  7607.  
  7608.             Store(TST4(), Local0)
  7609.             if (LGreater (Local0, 0))
  7610.             {
  7611.                 Return(Local0)
  7612.             }
  7613.  
  7614.             Store(TST5(), Local0)
  7615.             if (LGreater (Local0, 0))
  7616.             {
  7617.                 Return(Local0)
  7618.             }
  7619.  
  7620.             Store(TST6(), Local0)
  7621.             if (LGreater (Local0, 0))
  7622.             {
  7623.                 Return(Local0)
  7624.             }
  7625.  
  7626.             Store(TST7(), Local0)
  7627.             if (LGreater (Local0, 0))
  7628.             {
  7629.                 Return(Local0)
  7630.             }
  7631.  
  7632.             Store(TST8(), Local0)
  7633.             if (LGreater (Local0, 0))
  7634.             {
  7635.                 Return(Local0)
  7636.             }
  7637.  
  7638.             Store(TST9(), Local0)
  7639.             if (LGreater (Local0, 0))
  7640.             {
  7641.                 Return(Local0)
  7642.             }
  7643.  
  7644.             Store(TSTA(), Local0)
  7645.             if (LGreater (Local0, 0))
  7646.             {
  7647.                 Return(Local0)
  7648.             }
  7649.  
  7650.             Store(TSTB(), Local0)
  7651.             if (LGreater (Local0, 0))
  7652.             {
  7653.                 Return(Local0)
  7654.             }
  7655.  
  7656.             Store(TSTC(), Local0)
  7657.             if (LGreater (Local0, 0))
  7658.             {
  7659.                 Return(Local0)
  7660.             }
  7661.  
  7662.             Store(TSTD(), Local0)
  7663.             if (LGreater (Local0, 0))
  7664.             {
  7665.                 Return(Local0)
  7666.             }
  7667.  
  7668.             Store(TSTE(), Local0)
  7669.             if (LGreater (Local0, 0))
  7670.             {
  7671.                 Return(Local0)
  7672.             }
  7673.  
  7674.     /* No longer ACPI compliant */
  7675.     /*
  7676.             Store(TSTF(), Local0)
  7677.             if (LGreater (Local0, 0))
  7678.             {
  7679.                 Return(Local0)
  7680.             }
  7681.     */
  7682.  
  7683.             Store(TSTG(), Local0)
  7684.             if (LGreater (Local0, 0))
  7685.             {
  7686.                 Return(Local0)
  7687.             }
  7688.  
  7689.             Store(TSTH(), Local0)
  7690.             if (LGreater (Local0, 0))
  7691.             {
  7692.                 Return(Local0)
  7693.             }
  7694.  
  7695.     /* No longer ACPI compliant */
  7696.     /*
  7697.             Store(TSTI(), Local0)
  7698.             if (LGreater (Local0, 0))
  7699.             {
  7700.                 Return(Local0)
  7701.             }
  7702.     */
  7703.             Store(TSTJ(), Local0)
  7704.             if (LGreater (Local0, 0))
  7705.             {
  7706.                 Return(Local0)
  7707.             }
  7708.  
  7709.             Store(TSTK(), Local0)
  7710.             if (LGreater (Local0, 0))
  7711.             {
  7712.                 Return(Local0)
  7713.             }
  7714.  
  7715.             Store(TSTL(), Local0)
  7716.             if (LGreater (Local0, 0))
  7717.             {
  7718.                 Return(Local0)
  7719.             }
  7720.  
  7721.             Return(Local0)
  7722.  
  7723.         }
  7724.  
  7725.     } // Device(IDX7)
  7726.  
  7727. //
  7728. // test MatchOp.asl
  7729. //
  7730. //  MatchOp test cases that utilize nested DerefOf(Index(...)) to validate
  7731. //  MatchOp, DerefOfOp, and IndexOp of nested packages.
  7732. //
  7733.     Device (MTCH)
  7734.     {
  7735.  
  7736.         Method (TEST)
  7737.         {
  7738.             Store ("++++++++ MatchOp Test", Debug)
  7739.  
  7740.             Name (TIM0, Package ()
  7741.                 {
  7742.                     Package ()  {0x78, 0xB4, 0xF0, 0x0384},
  7743.                     Package ()  {0x23, 0x21, 0x10, 0},
  7744.                     Package ()  {0x0B, 9, 4, 0},
  7745.                     Package ()  {0x70, 0x49, 0x36, 0x27, 0x19},
  7746.                     Package ()  {0, 1, 2, 1, 2},
  7747.                     Package ()  {0, 0, 0, 1, 1},
  7748.                     Package ()  {4, 3, 2, 0},
  7749.                     Package ()  {2, 1, 0, 0}
  7750.                 })  //  TIM0
  7751.  
  7752.             Name (TMD0, Buffer (20) {0xFF, 0xFF, 0xFF, 0xFF })
  7753.             CreateDWordField (TMD0, 0, PIO0)    //  0xFFFFFFFF
  7754.             CreateDWordField (TMD0, 4, DMA0)
  7755.             CreateDWordField (TMD0, 8, PIO1)
  7756.             CreateDWordField (TMD0, 12, DMA1)
  7757.             CreateDWordField (TMD0, 16, CHNF)
  7758.  
  7759.  
  7760.             //  validate PIO0 value
  7761.             Store (PIO0, Local3)
  7762.  
  7763.             //  save Local3 object type value into Local2
  7764.             Store (ObjectType (Local3), Local2)
  7765.  
  7766.             //  validate Local3 is a Number
  7767.             If (LNotEqual (Local2, 1))  //  Number type is 1
  7768.                 {   Return (2)  }   //  failure
  7769.  
  7770.             //  validate Local3 Number value
  7771.             If (LNotEqual (Local3, 0xFFFFFFFF)) //  Number value 0xFFFFFFFF
  7772.                 {   Return (3)  }   //  failure
  7773.  
  7774.             Store ("DWordField PASS", Debug)
  7775.  
  7776.  
  7777.             Store (0, Local5)
  7778.             Store (Match (DerefOf (Index (TIM0, 1, )), MLE, Local5, MTR, 0, 0), Local6)
  7779.  
  7780.             //  save Local6 object type value into Local2
  7781.             Store (ObjectType (Local6), Local2)
  7782.  
  7783.             //  validate Local6 is a Number
  7784.             If (LNotEqual (Local2, 1))  //  Number type is 1
  7785.                 {   Return (4)  }   //  failure
  7786.  
  7787.             Store ("Match(DerefOf(Index(TIM0,1)),... PASS", Debug)
  7788.  
  7789.  
  7790.             //  validate following produces a nested package to validate
  7791.             //  that MatchOp did not corrupt SearchPackage (TIM0)
  7792.             Store (DerefOf (Index (TIM0, 1, )), Local4)
  7793.  
  7794.             //  save Local4 object type value into Local2
  7795.             Store (ObjectType (Local4), Local2)
  7796.  
  7797.             //  validate Local4 is a Package
  7798.             If (LNotEqual (Local2, 4))  //  Package type is 4
  7799.                 {   Return (5)  }   //  failure
  7800.  
  7801.             Store ("DerefOf(Index(TIM0,1)),... PASS", Debug)
  7802.  
  7803.  
  7804.             And (Match (DerefOf (Index (TIM0, 0, )), MGE, PIO0, MTR, 0, 0), 3, Local0)
  7805.  
  7806.             //  save Local0 object type value into Local2
  7807.             Store (ObjectType (Local0), Local2)
  7808.  
  7809.             //  validate Local0 is a Number
  7810.             If (LNotEqual (Local2, 1))  //  Number type is 1
  7811.                 {   Return (6)  }   //  failure
  7812.  
  7813.             //  validate Local0 Number value
  7814.             If (LNotEqual (Local0, 3))  //  Number value 3
  7815.                 {   Return (7)  }   //  failure
  7816.  
  7817.             Store ("And(Match(DerefOf(Index(TIM0,0)),... PASS", Debug)
  7818.  
  7819.  
  7820.             //  again, validate following produces a nested package
  7821.             Store (DerefOf (Index (TIM0, 1, )), Local4)
  7822.  
  7823.             //  save Local4 object type value into Local2
  7824.             Store (ObjectType (Local4), Local2)
  7825.  
  7826.             //  validate Local4 is a Package
  7827.             If (LNotEqual (Local2, 4))  //  Package type is 4
  7828.                 {   Return (8)  }   //  failure
  7829.  
  7830.             Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
  7831.  
  7832.  
  7833.             //  again, validate following produces a nested package
  7834.             Store (DerefOf (Index (TIM0, 1, )), Local4)
  7835.  
  7836.             //  save Local4 object type value into Local2
  7837.             Store (ObjectType (Local4), Local2)
  7838.  
  7839.             //  validate Local4 is a Package
  7840.             If (LNotEqual (Local2, 4))  //  Package type is 4
  7841.                 {   Return (9)  }   //  failure
  7842.  
  7843.             Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
  7844.  
  7845.  
  7846.             //  test nested DerefOf(Index) operators
  7847.             Store (DerefOf (Index (DerefOf (Index (TIM0, 1, )), Local0, )), Local1)
  7848.  
  7849.             //  save Local1 object type value into Local2
  7850.             Store (ObjectType (Local1), Local2)
  7851.  
  7852.             //  validate Local1 is a Number
  7853.             If (LNotEqual (Local2, 1))  //  Number type is 1
  7854.                 {   Return (10) }   //  failure
  7855.  
  7856.             //  zero indicates pass, non-zero is an error code
  7857.             If (LNotEqual (Local1, 0))
  7858.                 {   Return (11) }   //  failure
  7859.  
  7860.             Store ("DerefOf(Index(DerefOf(Index(TIM0,1)),... PASS", Debug)
  7861.  
  7862.  
  7863.             //  again, validate following produces a nested package
  7864.             Store (DerefOf (Index (TIM0, 1, )), Local4)
  7865.  
  7866.             //  save Local4 object type value into Local2
  7867.             Store (ObjectType (Local4), Local2)
  7868.  
  7869.             //  validate Local4 is a Package
  7870.             If (LNotEqual (Local2, 4))  //  Package type is 4
  7871.                 {   Return (12) }   //  failure
  7872.  
  7873.             Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
  7874.  
  7875.  
  7876.             //  retest nested DerefOf(Index) operators
  7877.             Store (DerefOf (Index (DerefOf (Index (TIM0, 1, )), Local0, )), Local1)
  7878.  
  7879.             //  save Local1 object type value into Local2
  7880.             Store (ObjectType (Local1), Local2)
  7881.  
  7882.             //  validate Local1 is a Number
  7883.             If (LNotEqual (Local2, 1))  //  Number type is 1
  7884.                 {   Return (13) }   //  failure
  7885.  
  7886.             //  zero indicates pass, non-zero is an error code
  7887.             If (LNotEqual (Local1, 0))
  7888.                 {   Return (14) }   //  failure
  7889.  
  7890.             Store ("DerefOf(Index(DerefOf(Index(TIM0,1)),... PASS again", Debug)
  7891.  
  7892.  
  7893.             //  again, validate following produces a nested package
  7894.             Store (DerefOf (Index (TIM0, 1, )), Local4)
  7895.  
  7896.             //  save Local4 object type value into Local2
  7897.             Store (ObjectType (Local4), Local2)
  7898.  
  7899.             //  validate Local4 is a Package
  7900.             If (LNotEqual (Local2, 4))  //  Package type is 4
  7901.                 {   Return (15) }   //  failure
  7902.  
  7903.             Store ("DerefOf(Index(TIM0,1)),... PASS again", Debug)
  7904.  
  7905.  
  7906.             Return (0)  //  pass
  7907.         }   //  TEST
  7908.     }   // MTCH
  7909.  
  7910. //
  7911. // test WhileBrk.asl
  7912. //
  7913. //  This code tests the Break term and While term
  7914. //
  7915. //  Syntax of Break term
  7916. //      BreakTerm := Break
  7917. //  The break operation causes the current package execution to complete.
  7918. //
  7919. //  Syntax of While Term
  7920. //      WhileTerm   := While(
  7921. //          Predicate   //TermArg=>Integer
  7922. //      ) {TermList}
  7923. //  Predicate is evaluated as an integer.
  7924. //  If the integer is non-zero, the list of terms in TermList is executed.
  7925. //  The operation repeats until the Predicate evaluates to zero.
  7926. //
  7927. // MTL NOTE: This test has been modified to reflect ACPI 2.0 break
  7928. // NOTE: This test, when run under the MS ACPI.SYS grinds the system to
  7929. //  a halt.
  7930. //
  7931.     Device (WHLB)
  7932.     {
  7933.         Name (CNT0, 0)
  7934.         Name (CNT1, 0)
  7935.  
  7936.         Method (TEST)
  7937.         {
  7938.             //  Check Break statement nested in If nested in While nested in
  7939.             //  While only exits inner-most While loop
  7940.             Store (0, CNT0)
  7941.  
  7942.             While (LLess (CNT0, 4))
  7943.             {
  7944.                 Store (0, CNT1)
  7945.                 While (LLess (CNT1, 10))
  7946.                 {
  7947.                     if (LEqual (CNT1, 1))
  7948.                     {
  7949.                         Break       //  exit encompassing loop
  7950.                     }
  7951.  
  7952.                     Increment (CNT1)
  7953.                 }
  7954.  
  7955.                 If (LNotEqual (CNT1, 1))
  7956.                 {
  7957.                     //  failure
  7958.                     Return (7)
  7959.                 }
  7960.  
  7961.                 Increment (CNT0)
  7962.             }
  7963.  
  7964.             //  Verify Break only exited inner-most While loop
  7965.  
  7966.             If (LNotEqual (CNT0, 4))
  7967.             {
  7968.                 //  failure
  7969.                 Return (8)
  7970.             }
  7971.  
  7972.             Store ("While/While/If/Break PASS", Debug)
  7973.  
  7974.             Store ("++++++++ WhileBrk Test", Debug)
  7975.  
  7976.             //  Check Break statement nested in While
  7977.             Store (0, CNT0)
  7978.  
  7979.             While (LLess (CNT0, 10))
  7980.             {
  7981.                 Break       //  exit encompassing package
  7982.                 Increment (CNT0)
  7983.             }
  7984.  
  7985.             If (LNotEqual (CNT0, 0))    //  instruction after Break executed
  7986.             {
  7987.                 Return (4)
  7988.             }
  7989.  
  7990.  
  7991.             Store (0, CNT0)
  7992.  
  7993.             //  Test While Term
  7994.             While (LLess (CNT0, 10))
  7995.             {
  7996.                 Increment (CNT0)
  7997.             }
  7998.  
  7999.             //  Check if the while loop was executed until the condition is satisfied.
  8000.             If (LNotEqual (CNT0, 10))
  8001.             {
  8002.                 Return (1)
  8003.             }
  8004.  
  8005.  
  8006.             //  While loop in a reverse order
  8007.             While (LGreater (CNT0, 0))
  8008.             {
  8009.                 Decrement (CNT0)
  8010.             }
  8011.  
  8012.             //  Check if the while loop was executed until the condition is satisfied.
  8013.             If (LNotEqual (CNT0, 0))
  8014.             {
  8015.                 Return (2)
  8016.             }
  8017.  
  8018.  
  8019.             Store ("While/Break PASS", Debug)
  8020.  
  8021.  
  8022.             //  Check Break statement nested in If nested in While
  8023.             Store (0, CNT0)
  8024.  
  8025.             While (LLess (CNT0, 10))
  8026.             {
  8027.                 if (LEqual (CNT0, 5))
  8028.                 {
  8029.                     Break       //  exit encompassing Package (If)
  8030.  
  8031.                     //  if we execute the next instruction,
  8032.                     //  Break did not exit the loop
  8033.                     Store (20, CNT0)    //  exit While loop with value larger
  8034.                                             //  than above
  8035.                 }
  8036.  
  8037.                 Increment (CNT0)    //  check if Break exited both If and While
  8038.             }   //  While
  8039.  
  8040.             If (LGreater (CNT0, 19))
  8041.             {   //  instruction after Break inside IfOp executed
  8042.                 Return (5)
  8043.             }
  8044.  
  8045.             //
  8046.             // Break will exit out of the while loop, therefore
  8047.             //  the CNT0 counter should still Increment until 5
  8048.             //
  8049.             If (LNotEqual (CNT0, 5))
  8050.             {   //  instruction after Break inside WhileOp executed
  8051.                 Return (6)
  8052.             }
  8053.             Store ("While/If/Break PASS", Debug)
  8054.  
  8055.  
  8056.             //  All the conditions passed
  8057.             Return (0)
  8058.         }   //  TEST
  8059.     }   //  WHLB
  8060.  
  8061.  
  8062. //
  8063. // test IndexOp2.asl
  8064. //
  8065. //  Additional IndexOp test cases to support ACPICMB (control method battery
  8066. //  test) on Toshiba Portege 7020CT. Test cases include appropriate bit
  8067. //  shifting of Field elements and reading Field elements greater than 64 bits.
  8068. //
  8069. // MTL NOTE: This test has been modified slightly from the original test
  8070. //  to take into account ACPI specification limitations.
  8071. //
  8072.     Scope (\_SB)    //  System Bus
  8073.     {   //  _SB system bus
  8074.  
  8075.         Device (MEM)
  8076.         {   //  MEM
  8077.             Name (_HID, 0x010CD041)
  8078.             Name (_STA, 0x0F)
  8079.  
  8080.             OperationRegion (SMEM, SystemMemory, 0x800000, 0x100)
  8081.             Field (SMEM, AnyAcc, NoLock, Preserve)
  8082.             {   //  Field:  SMEM overlay using 32-bit field elements
  8083.                 SMD0,   32, //  32-bits
  8084.                 SMD1,   32,     //  32-bits
  8085.                 SMD2,   32,     //  32-bits
  8086.                 SMD3,   32  //  32-bits
  8087.             }   //  Field:  SMEM overlay using 32-bit field elements
  8088.             Field (SMEM, AnyAcc, NoLock, Preserve)
  8089.             {   //  Field:  SMEM overlay using greater than 32-bit field elements
  8090.                 SME0,   69, //  larger than an integer (32 or 64)
  8091.                 SME1,   97  //  larger than an integer
  8092.             }   //  Field:  SMEM overlay using greater than 32-bit field elements
  8093.  
  8094.             OperationRegion (SRAM, SystemMemory, 0x100B0000, 0xF000)
  8095.             Field (SRAM, AnyAcc, NoLock, Preserve)
  8096.             {   //  Field:  SRAM overlay
  8097.                     ,   0x34000,    //  skip
  8098.                 IEAX,   0x20,
  8099.                 IEBX,   0x20,
  8100.                 IECX,   0x20,
  8101.                 IEDX,   0x20,
  8102.                 IESI,   0x20,
  8103.                 IEDI,   0x20,
  8104.                 IEBP,   0x20,
  8105.                     ,   0x20,
  8106.                 OEAX,   0x20,
  8107.                 OEBX,   0x20,
  8108.                 OECX,   0x20,
  8109.                 OEDX,   0x20,
  8110.                 OESI,   0x20,
  8111.                 OEDI,   0x20,
  8112.                 OEBP,   0x20,
  8113.                     ,   0x618,  //  skip
  8114.                 ACST,   1,
  8115.                 BES1,   1,
  8116.                 BES2,   1,
  8117.                     ,   5,          //  skip
  8118.                 BMN1,   0x68,
  8119.                 BSN1,   0x58,
  8120.                 BTP1,   0x48,
  8121.                 BPU1,   0x20,
  8122.                 BDC1,   0x20,
  8123.                 BLF1,   0x20,
  8124.                 BTC1,   0x20,
  8125.                 BDV1,   0x20,
  8126.                 BST1,   0x20,
  8127.                 BPR1,   0x20,
  8128.                 BRC1,   0x20,
  8129.                 BPV1,   0x20,
  8130.                     ,   0x20,
  8131.                 BCW1,   0x20,
  8132.                 BCL1,   0x20,
  8133.                 BG11,   0x20,
  8134.                 BG21,   0x20,
  8135.                 BOI1,   0x20,
  8136.                     ,   0x530,  //  skip
  8137.                 BMN2,   0x68,
  8138.                 BSN2,   0x58,
  8139.                 BTP2,   0x48,
  8140.                 BPU2,   0x20,
  8141.                 BDC2,   0x20,
  8142.                 BLF2,   0x20,
  8143.                 BTC2,   0x20,
  8144.                 BDV2,   0x20,
  8145.                 BST2,   0x20,
  8146.                 BPR2,   0x20,
  8147.                 BRC2,   0x20,
  8148.                 BPV2,   0x20,
  8149.                     ,   0x20,
  8150.                 BCW2,   0x20,
  8151.                 BCL2,   0x20,
  8152.                 BG12,   0x20,
  8153.                 BG22,   0x20,
  8154.                 BOI2,   0x20,
  8155.                     ,   0x518,  //  skip
  8156.                 AC01,   0x10,
  8157.                 AC11,   0x10,
  8158.                 PSV1,   0x10,
  8159.                 CRT1,   0x10,
  8160.                 TMP1,   0x10,
  8161.                 AST1,   0x10,
  8162.                 AC21,   0x10,
  8163.                 AC31,   0x10,
  8164.                 AC02,   0x10,
  8165.                 AC12,   0x10,
  8166.                 PSV2,   0x10,
  8167.                 CRT2,   0x10,
  8168.                 TMP2,   0x10,
  8169.                 AST2,   0x10,
  8170.                 AC22,   0x10,
  8171.                 AC32,   0x10,
  8172.                 AC03,   0x10,
  8173.                 AC13,   0x10,
  8174.                 PSV3,   0x10,
  8175.                 CRT3,   0x10,
  8176.                 TMP3,   0x10,
  8177.                 AST3,   0x10,
  8178.                 AC23,   0x10,
  8179.                 AC33,   0x10,
  8180.                     ,   0x80,       //  skip
  8181.                 TMPF,   0x10,
  8182.                     ,   0x570,  //  skip
  8183.                 FANH,   1,
  8184.                 FANL,   7,
  8185.                 TF11,   1,
  8186.                 TF21,   1,
  8187.                 TF31,   1,
  8188.                     ,   1,
  8189.                 TF10,   1,
  8190.                 TF20,   1,
  8191.                 TF30,   1,
  8192.                     ,   1,
  8193.                 TP11,   1,
  8194.                 TP21,   1,
  8195.                 TP31,   1,
  8196.                     ,   0x6D,   //  109
  8197.                 GP50,   1,
  8198.                 GP51,   1,
  8199.                 GP52,   1,
  8200.                 GP53,   1,
  8201.                     ,   4,
  8202.                 GP60,   1,
  8203.                 GP61,   1,
  8204.                 GP62,   1,
  8205.                 GP63,   1,
  8206.                 GP64,   1,
  8207.                 GP65,   1,
  8208.                 GP66,   1,
  8209.                     ,   1,
  8210.                 GP70,   1,
  8211.                 GP71,   1,
  8212.                 GP72,   1,
  8213.                 GP73,   1,
  8214.                 GP74,   1,
  8215.                 GP75,   1,
  8216.                 GP76,   1,
  8217.                     ,   1,
  8218.                 WED0,   1,
  8219.                 WED1,   1,
  8220.                 WED2,   1,
  8221.                 WED3,   1,
  8222.                 WED4,   1,
  8223.                     ,   3,
  8224.                 SBL0,   1,
  8225.                 SBL1,   1,
  8226.                 SBL2,   1,
  8227.                 SBL3,   1,
  8228.                     ,   4,
  8229.                 LIDS,   1,
  8230.                 VALF,   1,
  8231.                     ,   2,
  8232.                 DCKI,   1,
  8233.                 DCKF,   1,
  8234.                 BT1F,   1,
  8235.                 BT2F,   1,
  8236.                     ,   0x7D0,  //  skip
  8237.                 HKCD,   8,
  8238.                     ,   8,
  8239.                 DLID,   0x20,
  8240.                 DSRN,   0x20,
  8241.                     ,   0x20,
  8242.                 BDID,   0x20,
  8243.                 DSPW,   1,
  8244.                 VGAF,   1,
  8245.                 VWE0,   1,
  8246.                 VWE1,   1,
  8247.                 PPSC,   1,
  8248.                 SPSC,   1,
  8249.                 EWLD,   1,
  8250.                 EWPS,   1,
  8251.                     ,   0x1768, //  skip
  8252.                 PRES,   0x8000
  8253.             }   //  Field:  SRAM overlay
  8254.         }   //  MEM
  8255.  
  8256.         Device (BAT1)
  8257.         {   //  BAT1
  8258.             Name (_HID, EISAID ("PNP0C0A"))     //  Control Method Battey ID
  8259.             Name (_UID, 1)
  8260.             Name (_PCL, Package (1) {\_SB})
  8261.  
  8262.             Method (_STA)
  8263.             {   //  _STA
  8264.                 If (\_SB.MEM.BES1)
  8265.                     {   Return (0x1F)   }   //  battery present
  8266.                 Else
  8267.                     {   Return (0x0F)   }   //  battery not present
  8268.             }   //  _STA
  8269.  
  8270.             Method (_BIF)
  8271.             {   //  _BIF
  8272.                 Name (BUFR, Package (13)    {})
  8273.  
  8274.                 Store (\_SB.MEM.BPU1, Index (BUFR, 0))
  8275.                 Store (\_SB.MEM.BDC1, Index (BUFR, 1))
  8276.                 Store (\_SB.MEM.BLF1, Index (BUFR, 2))
  8277.                 Store (\_SB.MEM.BTC1, Index (BUFR, 3))
  8278.                 Store (\_SB.MEM.BDV1, Index (BUFR, 4))
  8279.                 Store (\_SB.MEM.BCW1, Index (BUFR, 5))
  8280.                 Store (\_SB.MEM.BCL1, Index (BUFR, 6))
  8281.                 Store (\_SB.MEM.BG11, Index (BUFR, 7))
  8282.                 Store (\_SB.MEM.BG21, Index (BUFR, 8))
  8283.                 Store (\_SB.MEM.BMN1, Index (BUFR, 9))
  8284.                 Store (\_SB.MEM.BSN1, Index (BUFR, 10))
  8285.                 Store (\_SB.MEM.BTP1, Index (BUFR, 11))
  8286.                 Store (\_SB.MEM.BOI1, Index (BUFR, 12))
  8287.  
  8288.                 Return (BUFR)
  8289.             }   //  _BIF
  8290.         }   //  BAT1
  8291.  
  8292.         Device (IDX2)
  8293.         {
  8294.             Method (B2IB)
  8295.             {   //  B2IB:   store from Buffer into Index'ed Buffer
  8296.  
  8297.                 Name (SRCB, Buffer ()   {"Short Buffer"})   //  12 characters plus NULL
  8298.  
  8299.                 Name (DEST, Buffer ()                           //  62 characters plus NULL
  8300.                     {"Destination buffer that is longer than the short source buffer"})
  8301.  
  8302.  
  8303.                 //  verify object type returned by Index(Buffer,Element,)
  8304.  
  8305.                 Store (Index (DEST, 2, ), Local1)
  8306.                 Store (ObjectType (Local1), Local2)
  8307.  
  8308.                 If (LNotEqual (Local2, 14))     //  Buffer Field is type 14
  8309.                 {
  8310.                     //  Local2 indicates Local1 is not a Buffer Field
  8311.  
  8312.                     Return (0x61)
  8313.                 }
  8314.  
  8315.                 //  verify object type and value returned by DerefOf(Index(Buffer,Element,))
  8316.                 //  should return Number containing element value
  8317.  
  8318.                 Store (DerefOf (Local1), Local3)
  8319.                 Store (ObjectType (Local3), Local4)
  8320.  
  8321.                 If (LNotEqual (Local4, 1))          //  Number is type 1
  8322.                 {
  8323.                     //  Local2 indicates Local1 is not a Number
  8324.                     Return (0x62)
  8325.                 }
  8326.                 Else
  8327.                 {
  8328.                     If (LNotEqual (Local3, 0x73))       //  expect 's' element from DEST
  8329.                     {
  8330.                         Return (0x63)
  8331.                     }
  8332.                 }
  8333.  
  8334.                 Store ("DerefOf(Index(Buffer,,)) PASS", Debug)
  8335.  
  8336.  
  8337.                 //
  8338.                 // The following sections have been rewritten because storing into
  8339.                 // an Indexed buffer only changes one byte - the FIRST byte of the
  8340.                 // buffer is written to the source index.  This is the ONLY byte
  8341.                 // written -- as per ACPI 2.0
  8342.                 //
  8343.                 // Overwrite DEST contents, at buffer position 2 [only]
  8344.  
  8345.                 Store (SRCB, Index (DEST, 2, ))
  8346.  
  8347.                 //
  8348.                 // Check that the next byte is not changed
  8349.                 //
  8350.                 Store (DerefOf (Index (DEST, 3, )), Local0)
  8351.                 If (LNotEqual (Local0, 0x74))       //  't'
  8352.                 {
  8353.                     //  DEST element is not matching original value
  8354.                     If (LEqual (Local0, 0x68))
  8355.                     {
  8356.                         //  DEST element was altered to 'h'
  8357.                         Return (0x68)
  8358.                     }
  8359.                     Else
  8360.                     {
  8361.                         // DEST element is an unknown value
  8362.                         Return (0x69)
  8363.                     }
  8364.                 }
  8365.  
  8366.                 //
  8367.                 // Check that the elements beyond the SRCB buffer copy
  8368.                 //  have not been altered.
  8369.                 //
  8370.                 Store (DerefOf (Index (DEST, 14)), Local0)
  8371.  
  8372.                 //
  8373.                 // This should be an 'f'.
  8374.                 //
  8375.                 If (LNotEqual (Local0, 0x66))
  8376.                 {
  8377.                     //  DEST element was zero'd by buffer copy
  8378.                     If (LEqual (Local0, 0))
  8379.                     {
  8380.                         //  DEST element is zero
  8381.                         Return (0x6A)
  8382.                     }
  8383.                     Else
  8384.                     {
  8385.                         //  DEST element is unknown value
  8386.                         Return (0x6B)
  8387.                     }
  8388.                 }
  8389.  
  8390.                 Store ("Store(SRCB,Index(Buffer,,)) PASS", Debug)
  8391.  
  8392.                 //
  8393.                 //  verify altering SRCB does NOT alter DEST
  8394.                 //
  8395.                 Store (0x6A, Index (SRCB, 1))   //  SRCB = "Sjort Buffer"
  8396.  
  8397.                 Store (DerefOf (Index (SRCB, 1)), Local0)
  8398.  
  8399.                 If (LNotEqual (Local0, 0x6A))       //  'j'
  8400.                 {
  8401.                     //  SRCB element is unaltered
  8402.                     Return (0x71)
  8403.                 }
  8404.  
  8405.                 Store (DerefOf (Index (DEST, 3)), Local0) // DEST = "Destination buffer that...
  8406.  
  8407.                 If (LNotEqual (Local0, 0x74))       //  't'
  8408.                 {
  8409.                     //  DEST element is altered
  8410.                     If (LEqual (Local0, 0x6A))  //  'j'
  8411.                     {
  8412.                         //  SRCB change altered DEST element
  8413.                         Return (0x72)
  8414.                     }
  8415.                     Else
  8416.                     {
  8417.                         //  DEST element is unknown value
  8418.                         Return (0x73)
  8419.                     }
  8420.                 }
  8421.  
  8422.                 //  verify altering DEST does NOT alter SRCB
  8423.  
  8424.                 Store (0x6B, Index (DEST, 4, )) //  DEST = "DeSkination buffer..."
  8425.  
  8426.                 Store (DerefOf (Index (DEST, 4, )), Local0)
  8427.  
  8428.                 If (LNotEqual (Local0, 0x6B))       //  'k'
  8429.                 {
  8430.                     //  DEST element is unaltered
  8431.                     Return (0x74)
  8432.                 }
  8433.  
  8434.                 Store (DerefOf (Index (SRCB, 2, )), Local0)
  8435.  
  8436.                 If (LNotEqual (Local0, 0x6F))       //  'o'
  8437.                 {   //  SRC element is altered
  8438.                     If (LEqual (Local0, 0x6B))  //  'k'
  8439.                     {
  8440.                         //  DEST change altered SRCB element
  8441.                         Return (0x75)
  8442.                     }
  8443.                     Else
  8444.                     {
  8445.                         //  SRCB element is unknown value
  8446.                         Return (0x76)
  8447.                     }
  8448.                 }
  8449.  
  8450.                 Store ("SRCB and DEST independent PASS", Debug)
  8451.  
  8452.  
  8453.                 // verify string can be written to Index target/destination
  8454.                 // Only FIRST byte is written
  8455.  
  8456.                 Store ("New Buff", Index (DEST, 2, ))   //  DEST = "DeNkination buffer..."
  8457.  
  8458.                 Store (DerefOf (Index (DEST, 2, )), Local0)
  8459.  
  8460.                 If (LNotEqual (Local0, 0x4E))       //  'N'
  8461.                 {
  8462.                     //  DEST element is unaltered
  8463.                     Return (0x81)
  8464.                 }
  8465.  
  8466.                 Store (DerefOf (Index (DEST, 6, )), Local0)
  8467.  
  8468.                 If (LNotEqual (Local0, 0x61))       //  'a'
  8469.                 {
  8470.                     //  DEST element is unaltered
  8471.                     Return (0x82)
  8472.                 }
  8473.  
  8474.                 Store (DerefOf (Index (DEST, 10, )), Local0)
  8475.  
  8476.                 If (LNotEqual (Local0, 0x6E))       //  'n'
  8477.                 {
  8478.                     //  DEST element is unaltered
  8479.                     Return (0x83)
  8480.                 }
  8481.  
  8482.                 Store ("Store(String,Index) PASS", Debug)
  8483.  
  8484.  
  8485.                 Return (0)  //  pass
  8486.             }   //  B2IB:   store from Buffer into Index'ed Buffer
  8487.  
  8488.             Method (FB2P)
  8489.             {   //  FB2P:   store from Field Buffer into Index'ed Package
  8490.                 Name (DEST, Package (2) {})
  8491.  
  8492.                 //  initialize memory using 32-bit field elements
  8493.                 Store (0x01234567, \_SB.MEM.SMD0)
  8494.                 Store (0x89ABCDEF, \_SB.MEM.SMD1)
  8495.                 Store (0xFEDCBA98, \_SB.MEM.SMD2)
  8496.                 Store (0x76543210, \_SB.MEM.SMD3)
  8497.  
  8498.                 //  move greater than 64-bit buffers into DEST package
  8499.                 Store (\_SB.MEM.SME0, Index (DEST, 0))
  8500.                 Store (\_SB.MEM.SME1, Index (DEST, 1))
  8501.  
  8502.                 //  validate DEST contents
  8503.                 Store (DerefOf (Index (DEST, 0, )), Local0)
  8504.                 Store (DerefOf (Index (DEST, 1, )), Local1)
  8505.  
  8506.                 //  verify Local0 and Local1 are Buffers
  8507.                 Store (ObjectType (Local0), Local2)
  8508.                 if (LNotEqual (Local2, 3))  //  Buffer type is 3
  8509.                 {
  8510.                     Return (0x11)
  8511.                 }
  8512.  
  8513.                 Store (ObjectType (Local1), Local3)
  8514.                 if (LNotEqual (Local3, 3))  //  Buffer type is 3
  8515.                 {
  8516.                     Return (0x12)
  8517.                 }
  8518.  
  8519.                 //  validate DEST buffer contents
  8520.                 Store (DerefOf (Index (DerefOf (Index (DEST, 0)), 0)), Local4)
  8521.                 If (LNotEqual (Local4, 0x67))
  8522.                 {
  8523.                     Return (0x13)
  8524.                 }
  8525.  
  8526.                 Store (DerefOf (Index (DerefOf (Index (DEST, 0)), 1)), Local4)
  8527.                 If (LNotEqual (Local4, 0x45))
  8528.                 {
  8529.                     Return (0x14)
  8530.                 }
  8531.  
  8532.                 Store (DerefOf (Index (DerefOf (Index (DEST, 0)), 4)), Local4)
  8533.                 If (LNotEqual (Local4, 0xEF))
  8534.                 {
  8535.                     Return (0x15)
  8536.                 }
  8537.  
  8538.                 Store (DerefOf (Index (DerefOf (Index (DEST, 0, )), 5, )), Local4)
  8539.                 If (LNotEqual (Local4, 0xCD))
  8540.                 {
  8541.                     Return (0x16)
  8542.                 }
  8543.  
  8544.                 Store ("Store(Mem,PkgElement) PASS", Debug)
  8545.  
  8546.  
  8547.                 //  validate changing source \_SB.MEM.SMD* does not impact DEST
  8548.                 Store (0x12345678, \_SB.MEM.SMD0)
  8549.  
  8550.                 Store (DerefOf (Index (DerefOf (Index (DEST, 0, )), 0, )), Local5)
  8551.                 If (LNotEqual (Local5, 0x67))
  8552.                 {
  8553.                     Return (0x21)
  8554.                 }
  8555.  
  8556.                 Store (DerefOf (Index (DerefOf (Index (DEST, 0, )), 1, )), Local5)
  8557.                 If (LNotEqual (Local5, 0x45))
  8558.                 {
  8559.                     Return (0x22)
  8560.                 }
  8561.  
  8562.                 //  validate changing DEST does not impact source \_SB.MEM.SMD*
  8563.                 Store (0x30, Index (DerefOf (Index (DEST, 0)), 0))
  8564.  
  8565.                 Store (DerefOf(Index (DerefOf (Index (DEST, 0)), 0)), Local5)
  8566.                 If (LNotEqual (Local5, 0x30))
  8567.                 {
  8568.                     Return (0x23)
  8569.                 }
  8570.  
  8571.                 //
  8572.                 // This section was modified from the original iPCO code because
  8573.                 //  it attempted to compare two buffers.  This is not allowed until
  8574.                 //  ACPI v2.0, so the test has been modified to just check the
  8575.                 //  changed \_SB.MEM.SMD0
  8576.                 //
  8577.                 Store (\_SB.MEM.SMD0, Local5)
  8578.  
  8579.                 If(LNotEqual(Local5, 0x12345678))
  8580.                 {
  8581.                     Return (0x24)
  8582.                 }
  8583.  
  8584.                 Store ("Mem and Pkg independent PASS", Debug)
  8585.  
  8586.  
  8587.                 Return (0)
  8588.             }   //  FB2P:   store from Field Buffer into Index'ed Package
  8589.  
  8590.             Method (TEST)
  8591.             {
  8592.                 Store ("++++++++ IndexOp2 Test", Debug)
  8593.  
  8594.                 //  store _BIF package return value into Local0
  8595.  
  8596.                 Store (\_SB.BAT1._BIF, Local0)
  8597.  
  8598.                 //  save Local0 object type value into Local1
  8599.                 Store (ObjectType (Local0), Local1)
  8600.  
  8601.                 //  validate Local0 is a Package
  8602.                 If (LNotEqual (Local1, 4))  //  Package type is 4
  8603.                 {
  8604.                     //  failure
  8605.                     Return (2)
  8606.                 }
  8607.  
  8608.                 //  validate source and destination buffers are independent of each
  8609.                 //  of each other (i.e., changing one's contents does not change
  8610.                 //  other's contents) using B2IB (store from Buffer into Index'ed
  8611.                 //  Buffer) and FB2P (store from Field Buffer into Index'ed Package)
  8612.  
  8613.                 //  call B2IB (store from Buffer into Index'ed Buffer)
  8614.                 Store (B2IB, Local2)    //  Local2 is B2IB return value
  8615.  
  8616.                 //  save Local2 object type value into Local3
  8617.                 Store (ObjectType (Local2), Local3)
  8618.  
  8619.                 //  validate Local2 is a Number
  8620.                 If (LNotEqual (Local3, 1))  //  Number type is 1
  8621.                 {
  8622.                     //  failure
  8623.                     Return (4)
  8624.                 }
  8625.  
  8626.                 //  zero indicates pass, non-zero is an error code
  8627.                 If (LNotEqual (Local2, 0))
  8628.                 {
  8629.                     //  return B2IB error code
  8630.                     Return (Local2)
  8631.                 }
  8632.  
  8633.                 //  call FB2P (store from Field Buffer into Index'ed Package)
  8634.                 Store (FB2P, Local2)    //  Local2 is FB2P return value
  8635.  
  8636.                 //  save Local2 object type value into Local3
  8637.                 Store (ObjectType (Local2), Local3)
  8638.  
  8639.                 //  validate Local2 is a Number
  8640.                 If (LNotEqual (Local3, 1))  //  Number type is 1
  8641.                 {
  8642.                     //  failure
  8643.                     Return (5)
  8644.                 }
  8645.  
  8646.                 //  zero indicates pass, non-zero is an error code
  8647.                 If (LNotEqual (Local2, 0))
  8648.                 {
  8649.                     //  return FB2P error code
  8650.                     Return (Local2)
  8651.                 }
  8652.  
  8653.  
  8654.                 Return (0)
  8655.             }   //  TEST
  8656.         }   //  IDX2:   Test device name
  8657.     }   //  _SB system bus
  8658.  
  8659. //
  8660. // test SizeOf.asl
  8661. //
  8662. //  Test for SizeOf
  8663. //      test cases include following SizeOf arguments:
  8664. //          buffer, buffer field;
  8665. //          control method argument, control method local variable;
  8666. //          control method return values;
  8667. //          direct string, string;
  8668. //          package;
  8669. //          buffer, package, and string package elements
  8670. //
  8671. // MTL NOTE: This test has been modified to remove any SizeOf(Index(Buff,...
  8672. //  calls because it is not legal to perform a SizeOf operation on a Buffer Field.
  8673. //  This test has also been extended to test additional Package element sizes.
  8674. //
  8675.     Device (SIZO)
  8676.     {
  8677.         //  SAR0 control method validates SizeOf(Arg)
  8678.         //      SAR0 should only be called by SARG
  8679.         Method (SAR0, 2)
  8680.         //  Arg0    object to determine size of
  8681.         //  Arg1    expected Arg length
  8682.         {   //  SAR0:   SizeOf(Arg) test control method
  8683.             //  Local0  Arg0 length
  8684.             //  Local1  Local0 object type
  8685.  
  8686.             //  Store first string size (Arg0) into Local7
  8687.             Store (SizeOf (Arg0), Local0)
  8688.  
  8689.             //  save Local0 object type value into Local1
  8690.             Store (ObjectType (Local0), Local1)
  8691.  
  8692.             //  validate Local0 is a Number
  8693.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8694.                 {   Return (0x21)   }
  8695.  
  8696.             //  If strings are not of equal size, return error code
  8697.             If (LNotEqual (Local0, Arg1))
  8698.                 {   Return (0x22)   }
  8699.  
  8700.             Return (0)
  8701.         }   //  SAR0:   SizeOf(Arg) test control method
  8702.  
  8703.         Method (SARG)
  8704.         {   //  SARG:   SizeOf(Arg) test control method
  8705.             Name (BUFR, Buffer (12) {}) //  uninitialized Buffer
  8706.             Name (BUF1, Buffer() {0x01, 0x02, 0x03, 0x04, 0x05})
  8707.             Name (PKG0, Package (4) {}) //  uninitialized Package
  8708.             Name (STR0, "String")
  8709.             Name (PKG1, Package (4)
  8710.             {
  8711.                 BUFR,
  8712.                 "String2",
  8713.                 STR0,
  8714.                 PKG0
  8715.             })  //  PKG1
  8716.  
  8717.             Name (PKG2, Package (4)
  8718.             {
  8719.                 Buffer (15) {},
  8720.                 "String 1",
  8721.                 Package (2) {}
  8722.             })  //  PKG2
  8723.  
  8724.             //  Namespace entry buffer reference
  8725.             Store (SAR0 (BUFR, 12), Local0)
  8726.  
  8727.             //  save Local0 object type value into Local1
  8728.             Store (ObjectType (Local0), Local1)
  8729.  
  8730.             //  validate Local0 is a Number
  8731.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8732.             {
  8733.                 Return (0x23)
  8734.             }
  8735.  
  8736.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8737.             {
  8738.                 Return (Local0)
  8739.             }
  8740.  
  8741.             Store ("SizeOf(Arg=BUFR) PASS", Debug)
  8742.  
  8743.  
  8744.             //  Namespace entry package reference
  8745.             Store (SAR0 (PKG0, 4), Local0)
  8746.  
  8747.             //  save Local0 object type value into Local1
  8748.             Store (ObjectType (Local0), Local1)
  8749.  
  8750.             //  validate Local0 is a Number
  8751.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8752.             {
  8753.                 Return (0x24)
  8754.             }
  8755.  
  8756.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8757.             {
  8758.                 Return (Local0)
  8759.             }
  8760.  
  8761.             Store ("SizeOf(Arg=PKG0) PASS", Debug)
  8762.  
  8763.  
  8764.             //  Namespace entry string reference
  8765.             Store (SAR0 (STR0, 6), Local0)
  8766.  
  8767.             //  save Local0 object type value into Local1
  8768.             Store (ObjectType (Local0), Local1)
  8769.  
  8770.             //  validate Local0 is a Number
  8771.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8772.             {
  8773.                 Return (0x25)
  8774.             }
  8775.  
  8776.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8777.             {
  8778.                 Return (Local0)
  8779.             }
  8780.  
  8781.             Store ("SizeOf(Arg=STR0) PASS", Debug)
  8782.  
  8783.  
  8784.             //  direct string reference
  8785.             Store (SAR0 ("String", 6), Local0)
  8786.  
  8787.             //  save Local0 object type value into Local1
  8788.             Store (ObjectType (Local0), Local1)
  8789.  
  8790.             //  validate Local0 is a Number
  8791.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8792.             {
  8793.                 Return (0x26)
  8794.             }
  8795.  
  8796.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8797.             {
  8798.                 Return (Local0)
  8799.             }
  8800.  
  8801.             Store ("SizeOf(Arg=String) PASS", Debug)
  8802.  
  8803.             Store (0x55, Index (BUF1, 2))
  8804.  
  8805.             /****************************************************
  8806.             //
  8807.             // This section is commented because it is illegal to
  8808.             //  perform a SizeOf operation on a Buffer Field
  8809.             //
  8810.             //  Namespace BufferField reference
  8811.             Store (SAR0 (Index (BUFR, 2, ), 10), Local0)
  8812.  
  8813.             //  save Local0 object type value into Local1
  8814.             Store (ObjectType (Local0), Local1)
  8815.  
  8816.             //  validate Local0 is a Number
  8817.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8818.                 {   Return (0x27)   }
  8819.  
  8820.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8821.                 {   Return (Local0) }
  8822.  
  8823.             Store ("SizeOf(Arg=BufferField) PASS", Debug)
  8824.             ****************************************************/
  8825.  
  8826.             //  Namespace BufferPackageElement reference
  8827.             //
  8828.             Store (SAR0 (Index(PKG1, 0), 12), Local0)
  8829.  
  8830.             //  save Local0 object type value into Local1
  8831.             Store (ObjectType (Local0), Local1)
  8832.  
  8833.             //  validate Local0 is a Number
  8834.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8835.             {
  8836.                 Return (0x28)
  8837.             }
  8838.  
  8839.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8840.             {
  8841.                 Return (Local0)
  8842.             }
  8843.  
  8844.             Store ("SizeOf(Arg=PackageBuffer NTE Reference Element) PASS", Debug)
  8845.  
  8846.  
  8847.             //  Namespace StringPackageElement reference
  8848.             Store (SAR0 (Index (PKG1, 1, ), 7), Local0)
  8849.  
  8850.             //  save Local0 object type value into Local1
  8851.             Store (ObjectType (Local0), Local1)
  8852.  
  8853.             //  validate Local0 is a Number
  8854.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8855.             {
  8856.                 Return (0x29)
  8857.             }
  8858.  
  8859.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8860.             {
  8861.                 Return (Local0)
  8862.             }
  8863.  
  8864.             Store ("SizeOf(Arg=Package String Element) PASS", Debug)
  8865.  
  8866.  
  8867.             //  Namespace StringPackageElement reference
  8868.             Store (SAR0 (Index (PKG1, 2, ), 6), Local0)
  8869.  
  8870.             //  save Local0 object type value into Local1
  8871.             Store (ObjectType (Local0), Local1)
  8872.  
  8873.             //  validate Local0 is a Number
  8874.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8875.             {
  8876.                 Return (0x2A)
  8877.             }
  8878.  
  8879.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8880.             {
  8881.                 Return (Local0)
  8882.             }
  8883.  
  8884.             Store ("SizeOf(Arg=Package String NTE Reference Element) PASS", Debug)
  8885.  
  8886.  
  8887.             //  Namespace PackagePackageElement reference
  8888.             Store (SAR0 (Index (PKG1, 3, ), 4), Local0)
  8889.  
  8890.             //  save Local0 object type value into Local1
  8891.             Store (ObjectType (Local0), Local1)
  8892.  
  8893.             //  validate Local0 is a Number
  8894.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8895.             {
  8896.                 Return (0x2B)
  8897.             }
  8898.  
  8899.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8900.             {
  8901.                 Return (Local0)
  8902.             }
  8903.  
  8904.             Store ("SizeOf(Arg=Package Package NTE Reference Element) PASS", Debug)
  8905.  
  8906.             // Package Buffer Element
  8907.             Store (SAR0 (Index (PKG2, 0), 15), Local0)
  8908.  
  8909.             //  save Local0 object type value into Local1
  8910.             Store (ObjectType (Local0), Local1)
  8911.  
  8912.             //  validate Local0 is a Number
  8913.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8914.             {
  8915.                 Return (0x2B)
  8916.             }
  8917.  
  8918.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8919.             {
  8920.                 Return (Local0)
  8921.             }
  8922.  
  8923.             Store ("SizeOf(Arg=Package Buffer Element) PASS", Debug)
  8924.  
  8925.             // Package String Element
  8926.             Store (SAR0 (Index (PKG2, 1), 8), Local0)
  8927.  
  8928.             //  save Local0 object type value into Local1
  8929.             Store (ObjectType (Local0), Local1)
  8930.  
  8931.             //  validate Local0 is a Number
  8932.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8933.             {
  8934.                 Return (0x2B)
  8935.             }
  8936.  
  8937.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8938.             {
  8939.                 Return (Local0)
  8940.             }
  8941.  
  8942.             Store ("SizeOf(Arg=Package String Element) PASS", Debug)
  8943.  
  8944.             // Package Package Element
  8945.             Store (SAR0 (Index (PKG2, 2), 2), Local0)
  8946.  
  8947.             //  save Local0 object type value into Local1
  8948.             Store (ObjectType (Local0), Local1)
  8949.  
  8950.             //  validate Local0 is a Number
  8951.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8952.             {
  8953.                 Return (0x2B)
  8954.             }
  8955.  
  8956.             If (LNotEqual (Local0, 0))      //  Local0 is SAR0 return error code
  8957.             {
  8958.                 Return (Local0)
  8959.             }
  8960.  
  8961.             Store ("SizeOf(Arg=Package Package Element) PASS", Debug)
  8962.  
  8963.             Store ("SizeOf(Arg) PASS", Debug)
  8964.  
  8965.             Return (0)
  8966.         }   //  SARG:   SizeOf(Arg) test control method
  8967.  
  8968.         Method (SBUF)
  8969.         {   //  SBUF:   SizeOf(Buffer) test control method
  8970.             Name (BUFR, Buffer (12) {})
  8971.  
  8972.             //  store size of BUFR buffer into Local0
  8973.             Store (SizeOf (BUFR), Local0)
  8974.  
  8975.             //  save Local0 object type value into Local1
  8976.             Store (ObjectType (Local0), Local1)
  8977.  
  8978.             //  validate Local0 is a Number
  8979.             If (LNotEqual (Local1, 1))      //  Number type is 1
  8980.             {
  8981.                 Return (0x31)
  8982.             }
  8983.  
  8984.             If (LNotEqual (Local0, 12))     //  BUFR size is 12
  8985.             {
  8986.                 Return (0x32)
  8987.             }
  8988.  
  8989.             Store ("SizeOf(BUFR) PASS", Debug)
  8990.  
  8991.             Return (0)
  8992.         }   //  SBUF:   SizeOf(Buffer) test control method
  8993.  
  8994.  
  8995.         /****************************************************
  8996.         //
  8997.         // This section is commented because it is illegal to
  8998.         //  perform a SizeOf operation on a Buffer Field
  8999.         //
  9000.         Method (SIND)
  9001.         {   //  SIND:   SizeOf(Index(,,)) test control method
  9002.             Name (BUFR, Buffer (12) {})
  9003.  
  9004.             //  store size of Index(BUFR,2,) buffer into Local0
  9005.             Store (SizeOf (Index (BUFR, 2, )), Local0)
  9006.  
  9007.             //  save Local0 object type value into Local1
  9008.             Store (ObjectType (Local0), Local1)
  9009.  
  9010.             //  validate Local0 is a Number
  9011.             If (LNotEqual (Local1, 1))      //  Number type is 1
  9012.             {
  9013.                 Return (0x41)
  9014.             }
  9015.  
  9016.             If (LNotEqual (Local0, 10))     //  12 - 2 = 10
  9017.             {
  9018.                 Return (0x42)
  9019.             }
  9020.  
  9021.             Store ("SizeOf(Index(BUFR,,)) PASS", Debug)
  9022.  
  9023.             //  TBD:    strings and packages
  9024.  
  9025.             Return (0)
  9026.         }   //  SIND:   SizeOf(Index(,,)) test control method
  9027.         ****************************************************/
  9028.  
  9029.         Method (SLOC)
  9030.         {   //  SLOC:   SizeOf(Local) test control method
  9031.             Name (BUFR, Buffer (12) {}) //  uninitialized Buffer
  9032.             Name (STR0, "String")
  9033.             Name (PKG0, Package (4) {}) //  uninitialized Package
  9034.  
  9035.  
  9036.             //  store BUFR Buffer into Local2
  9037.             Store (BUFR, Local2)
  9038.  
  9039.             //  store size of BUFR buffer into Local0
  9040.             Store (SizeOf (Local2), Local0)
  9041.  
  9042.             //  save Local0 object type value into Local1
  9043.             Store (ObjectType (Local0), Local1)
  9044.  
  9045.             //  validate Local0 is a Number
  9046.             If (LNotEqual (Local1, 1))      //  Number type is 1
  9047.             {
  9048.                 Return (0x51)
  9049.             }
  9050.  
  9051.             If (LNotEqual (Local0, 12)) //  BUFR size is 12
  9052.             {
  9053.                 Return (0x52)
  9054.             }
  9055.  
  9056.             Store ("SizeOf(Local2=Buffer) PASS", Debug)
  9057.  
  9058.  
  9059.             //  store STR0 string into Local2
  9060.             Store (STR0, Local2)
  9061.  
  9062.             //  store size of STR0 buffer into Local0
  9063.             Store (SizeOf (Local2), Local0)
  9064.  
  9065.             //  save Local0 object type value into Local1
  9066.             Store (ObjectType (Local0), Local1)
  9067.  
  9068.             //  validate Local0 is a Number
  9069.             If (LNotEqual (Local1, 1))      //  Number type is 1
  9070.             {
  9071.                 Return (0x53)
  9072.             }
  9073.  
  9074.             If (LNotEqual (Local0, 6))      //  STR0 size is 6
  9075.             {
  9076.                 Return (0x54)
  9077.             }
  9078.  
  9079.             Store ("SizeOf(Local2=String) PASS", Debug)
  9080.  
  9081.  
  9082.             //  store PKG0 Package into Local2
  9083.             Store (PKG0, Local2)
  9084.  
  9085.             //  store size of PKG0 buffer into Local0
  9086.             Store (SizeOf (Local2), Local0)
  9087.  
  9088.             //  save Local0 object type value into Local1
  9089.             Store (ObjectType (Local0), Local1)
  9090.  
  9091.             //  validate Local0 is a Number
  9092.             If (LNotEqual (Local1, 1))      //  Number type is 1
  9093.             {
  9094.                 Return (0x55)
  9095.             }
  9096.  
  9097.             If (LNotEqual (Local0, 4))      //  PKG0 size is 4
  9098.             {
  9099.                 Return (0x56)
  9100.             }
  9101.  
  9102.             Store ("SizeOf(Local2=Package) PASS", Debug)
  9103.  
  9104.  
  9105.             Return (0)
  9106.         }   //  SLOC:   SizeOf(Local) test control method
  9107.  
  9108.         Method (TEST)
  9109.         {
  9110.             Store ("++++++++ SizeOf Test", Debug)
  9111.  
  9112.             //  Store current operating system string into Local0
  9113.             Store (_OS, Local0)
  9114.  
  9115.             Store (SizeOf (_OS), Local3)
  9116.  
  9117.             //  save Local3 object type value into Local4
  9118.             Store (ObjectType (Local3), Local4)
  9119.  
  9120.             //  validate Local3 is a Number
  9121.             If (LNotEqual (Local4, 1))  //  Number type is 1
  9122.             {
  9123.                 //  failure
  9124.                 Return (0x61)
  9125.             }
  9126.  
  9127.             //  Store current operating system string into Local0
  9128.             //  This verifies above SizeOf(_OS) did not corrupt ACPI namespace
  9129.             Store (_OS, Local0)
  9130.  
  9131.             //  Store SARG [Validate SizeOf(Arg)] return value into Local1
  9132.             Store (SARG, Local1)
  9133.  
  9134.             //  save Local1 object type value into Local2
  9135.             Store (ObjectType (Local1), Local2)
  9136.  
  9137.             //  validate Local1 is a Number
  9138.             If (LNotEqual (Local2, 1))  //  Number type is 1
  9139.             {
  9140.                 //  failure
  9141.                 Return (0x62)
  9142.             }
  9143.  
  9144.             //  zero indicates pass, non-zero is an error code
  9145.             If (LNotEqual (Local1, 0))
  9146.             {
  9147.                 //  return SARG error code
  9148.                 Return (Local1)
  9149.             }
  9150.  
  9151.  
  9152.             //  Store SBUF [Validate SizeOf(Buffer)] return value into Local1
  9153.             Store (SBUF, Local1)
  9154.  
  9155.             //  save Local1 object type value into Local2
  9156.             Store (ObjectType (Local1), Local2)
  9157.  
  9158.             //  validate Local1 is a Number
  9159.             If (LNotEqual (Local2, 1))  //  Number type is 1
  9160.             {
  9161.                 //  failure
  9162.                 Return (0x63)
  9163.             }
  9164.  
  9165.             //  zero indicates pass, non-zero is an error code
  9166.             If (LNotEqual (Local1, 0))
  9167.             {
  9168.                 //  return SBUF error code
  9169.                 Return (Local1)
  9170.             }
  9171.  
  9172.             /****************************************************
  9173.             //
  9174.             // This section is commented because it is illegal to
  9175.             //  perform a SizeOf operation on a Buffer Field
  9176.             //
  9177.             //  Store SIND [verify SizeOf(Index(,,))] return value into Local1
  9178.             Store (SIND, Local1)
  9179.  
  9180.             //  save Local1 object type value into Local2
  9181.             Store (ObjectType (Local1), Local2)
  9182.  
  9183.             //  validate Local1 is a Number
  9184.             If (LNotEqual (Local2, 1))  //  Number type is 1
  9185.             {
  9186.                 //  failure
  9187.                 Return (0x64)
  9188.             }
  9189.  
  9190.             //  zero indicates pass, non-zero is an error code
  9191.             If (LNotEqual (Local1, 0))
  9192.             {
  9193.                 //  return SARG error code
  9194.                 Return (Local1)
  9195.             }
  9196.             ****************************************************/
  9197.  
  9198.             //  Store SLOC [verify SizeOf(Local)] return value into Local1
  9199.             Store (SLOC, Local1)
  9200.  
  9201.             //  save Local1 object type value into Local2
  9202.             Store (ObjectType (Local1), Local2)
  9203.  
  9204.             //  validate Local1 is a Number
  9205.             If (LNotEqual (Local2, 1))  //  Number type is 1
  9206.             {
  9207.                 //  failure
  9208.                 Return (0x65)
  9209.             }
  9210.  
  9211.             //  zero indicates pass, non-zero is an error code
  9212.             If (LNotEqual (Local1, 0))
  9213.             {
  9214.                 //  return SLOC error code
  9215.                 Return (Local1)
  9216.             }
  9217.  
  9218.  
  9219.             //  TBD:    SizeOf (METH) -- where METH control method returns
  9220.             //              buffer, BufferField, string, package, package element
  9221.  
  9222.  
  9223.             Return (0)
  9224.         }   //  TEST
  9225.     }   //  SIZO
  9226.  
  9227. //
  9228. // test SmiShare.asl
  9229. //
  9230.     Scope (\_SB)    //  System Bus
  9231.     {   //  _SB system bus
  9232.         //  Declare an OpRegion in Memory starting at offset 0x400000 that is 10 bytes long
  9233.         OperationRegion(RAM1, SystemMemory, 0x400000, 0xA)
  9234.  
  9235.         Field (RAM1, AnyAcc, NoLock, Preserve)
  9236.         {
  9237.             BI1T, 1,        // Create some bits in memory to access
  9238.             BI2T, 2,
  9239.             BI3T, 3,
  9240.             LST2, 2
  9241.         }   //  End Field RAM1
  9242.  
  9243.         Field (RAM1, WordAcc, NoLock, WriteAsZeros)
  9244.         {
  9245.             WRD, 16
  9246.         }   //  End 2nd Field RAM1
  9247.  
  9248.         Field (RAM1, ByteAcc, NoLock, WriteAsOnes)
  9249.         {
  9250.             BYTE, 8
  9251.         }   //  End 3rd Field RAM1
  9252.  
  9253.         Field (RAM1, ByteAcc, NoLock, Preserve)
  9254.         {
  9255.             SMIC, 8,
  9256.             SMID, 8
  9257.         }
  9258.  
  9259.         Device (MBIT)
  9260.         {
  9261.             Method (_INI)
  9262.             {
  9263.                 Store (0, BI1T)
  9264.                 Store (3, BI2T)
  9265.                 Store (7, BI3T)
  9266.                 Store (0, LST2)
  9267.             }   //  End _INI Method
  9268.         }   //  End Device MBIT
  9269.  
  9270.         Device (MWRD)
  9271.         {
  9272.             Method (_INI)
  9273.             {
  9274.                 Store (0, WRD)
  9275.             }   //  End _INI Method
  9276.         }   //  End Device MWRD
  9277.  
  9278.         Device (MBYT)
  9279.         {
  9280.             Method (_INI)
  9281.             {
  9282.                 Store (0, BYTE)
  9283.                 Store (0xC, SMIC)
  9284.                 Store (0xD, SMID)
  9285.             }   //  End _INI Method
  9286.         }   //  End Device MBYT
  9287.  
  9288.     /*
  9289.         //  Declare an OpRegion in Memory starting at offset 0x400000 that is 10 bytes long
  9290.         OperationRegion(\RAM1, SystemMemory, 0x400000, 0xA)
  9291.  
  9292.         Field (\RAM1, AnyAcc, NoLock, Preserve)
  9293.         {
  9294.             BI1T, 1,        // Create some bits in memory to access
  9295.             BI2T, 2,
  9296.             BI3T, 3,
  9297.             LST2, 2
  9298.         }   //  End Field RAM1
  9299.  
  9300.         Field (\RAM1, WordAcc, NoLock, WriteAsZeros)
  9301.         {
  9302.             WRD, 16
  9303.         }   //  End 2nd Field RAM1
  9304.  
  9305.         Field (\RAM1, ByteAcc, NoLock, WriteAsOnes)
  9306.         {
  9307.             BYTE, 8
  9308.         }   //  End 3rd Field RAM1
  9309.  
  9310.         Field (\RAM1, ByteAcc, NoLock, Preserve)
  9311.         {
  9312.             SMIC, 8,
  9313.             SMID, 8
  9314.         }
  9315.     */
  9316.         Method (SMIX)
  9317.         {
  9318.             Return (BYTE)
  9319.         }   //  End SMIX
  9320.  
  9321.         Method (EVNT)
  9322.         {
  9323.             Store (SMIX, Local0)
  9324.  
  9325.             If (And (Local0, 0x01))
  9326.             {   Notify (\_SB_.SMIS, 0x21)}
  9327.  
  9328.             If (And (Local0, 0x02))
  9329.             {   Notify (\_SB_.SMIS, 0x22)}
  9330.  
  9331.             If (And (Local0, 0x04))
  9332.             {   Notify (\_SB_.SMIS, 0x24)}
  9333.  
  9334.             If (And (Local0, 0x08))
  9335.             {   Notify (\_SB_.SMIS, 0x28)}
  9336.  
  9337.         }   //  End Method EVNT
  9338.  
  9339.         Device (SMIS)
  9340.         {
  9341.             Method (BINK)
  9342.             {
  9343.                 Store (0, Local0)               //  Zero out Local0
  9344.  
  9345.                 If (LNotEqual (SMID, 0xD))
  9346.                 {   Or (0x80, Local0, Local0)}
  9347.  
  9348.                 If (LNotEqual (SMIC, 0xC))
  9349.                 {   Or (0x40, Local0, Local0)}
  9350.  
  9351.                 If (LNotEqual (BYTE, 0))
  9352.                 {   Or (0x20, Local0, Local0)}
  9353.  
  9354.                 If (LNotEqual (WRD, 0))
  9355.                 {   Or (0x10, Local0, Local0)}
  9356.  
  9357.                 If (LNotEqual (LST2, 0))
  9358.                 {   Or (0x8, Local0, Local0)}
  9359.  
  9360.                 If (LNotEqual (BI3T, 0x7))
  9361.                 {   Or (0x4, Local0, Local0)}
  9362.  
  9363.                 If (LNotEqual (BI2T, 0x3))
  9364.                 {   Or (0x2, Local0, Local0)}
  9365.  
  9366.                 If (LNotEqual (BI1T, 0))
  9367.                 {   Or (0x1, Local0, Local0)}
  9368.  
  9369.                 Return (Local0)
  9370.             }   //  End Method BINK
  9371.  
  9372.             Method (TEST)
  9373.             {
  9374.                 Store ("++++++++ SmiShare Test", Debug)
  9375.  
  9376.                 //  Expect EVNT to generate Notify value we just previously
  9377.                 //  stored in BYTE
  9378.                 Store (0x20, BYTE)
  9379.                 EVNT ()
  9380.                 Store (0x21, BYTE)
  9381.                 EVNT ()
  9382.                 Store (0x22, BYTE)
  9383.                 EVNT ()
  9384.                 Store (0x23, BYTE)
  9385.                 EVNT ()
  9386.  
  9387.                 Return (0)  //  pass
  9388.             }   //  End Method TEST
  9389.         }   //  Device SMIS
  9390.  
  9391.         Device(CNDT)
  9392.         {
  9393.             Method(TEST)
  9394.             {
  9395.                 If (ECOK)
  9396.                 {
  9397.                     return("Broken")
  9398.                 }
  9399.                 Else
  9400.                 {
  9401.                     return("Works")
  9402.                 }
  9403.             }
  9404.  
  9405.             Method(ECOK)
  9406.             {
  9407.                 Return(0x0)
  9408.             }
  9409.         }
  9410.  
  9411.     }   //  _SB system bus
  9412.  
  9413.  
  9414. /* Test a very big buffer */
  9415.  
  9416.     Name(WQAB, Buffer(6756)
  9417.     {
  9418.         0x46,0x4F,0x4D,0x42,0x01,0x00,0x00,0x00,
  9419.         0x54,0x1A,0x00,0x00,0xBA,0xAD,0x00,0x00,
  9420.         0x44,0x53,0x00,0x01,0x1A,0x7D,0xDA,0x54,
  9421.         0x98,0xBD,0x92,0x00,0x01,0x06,0x18,0x42,
  9422.         0x10,0x47,0x10,0x92,0x46,0x62,0x02,0x89,
  9423.         0x80,0x90,0x18,0x18,0x14,0x81,0x85,0x00,
  9424.         0x49,0x02,0x88,0xC4,0x41,0xE1,0x20,0xD4,
  9425.         0x9F,0x40,0x7E,0x05,0x20,0x74,0x28,0x40,
  9426.         0xA6,0x00,0x83,0x02,0x9C,0x22,0x88,0xA0,
  9427.         0x57,0x01,0x36,0x05,0x98,0x14,0x60,0x51,
  9428.         0x80,0x76,0x01,0x96,0x05,0xE8,0x16,0x20,
  9429.         0x1D,0x96,0x88,0x04,0x47,0x89,0x01,0x47,
  9430.         0xE9,0xC4,0x16,0x6E,0xD8,0xE0,0x85,0xA2,
  9431.         0x68,0x06,0x51,0x12,0x94,0x8B,0x20,0x5D,
  9432.         0x10,0x52,0x2E,0xC0,0x37,0x82,0x06,0x10,
  9433.         0xA5,0x77,0x01,0xB6,0x05,0x98,0x86,0x27,
  9434.         0xD2,0x20,0xE4,0x60,0x08,0x54,0xCE,0x80,
  9435.         0x20,0x69,0x44,0x21,0x1E,0xA7,0x44,0x08,
  9436.         0x0A,0x84,0x90,0xD4,0xF1,0xA0,0xA0,0x71,
  9437.         0x88,0xAD,0xCE,0x46,0x93,0xA9,0x74,0x7E,
  9438.         0x48,0x82,0x70,0xC6,0x2A,0x7E,0x3A,0x9A,
  9439.         0xD0,0xD9,0x9C,0x60,0xE7,0x18,0x72,0x3C,
  9440.         0x48,0xF4,0x20,0xB8,0x00,0x0F,0x1C,0x2C,
  9441.         0x34,0x84,0x22,0x6B,0x80,0xC1,0x8C,0xDD,
  9442.         0x63,0xB1,0x0B,0x4E,0x0A,0xEC,0x61,0xB3,
  9443.         0x01,0x19,0xA2,0x24,0x38,0xD4,0x11,0xC0,
  9444.         0x12,0x05,0x98,0x1F,0x87,0x0C,0x0F,0x95,
  9445.         0x8C,0x25,0x24,0x1B,0xAB,0x87,0xC2,0xA5,
  9446.         0x40,0x68,0x6C,0x27,0xED,0x19,0x45,0x2C,
  9447.         0x79,0x4A,0x82,0x49,0xE0,0x51,0x44,0x36,
  9448.         0x1A,0x27,0x28,0x1B,0x1A,0x25,0x03,0x42,
  9449.         0x9E,0x05,0x58,0x07,0x26,0x04,0x76,0x2F,
  9450.         0xC0,0x9A,0x00,0x73,0xB3,0x90,0xB1,0xB9,
  9451.         0xE8,0xFF,0x0F,0x71,0xB0,0x31,0xDA,0x9A,
  9452.         0xAE,0x90,0xC2,0xC4,0x88,0x12,0x2C,0x5E,
  9453.         0xC5,0xC3,0x10,0xCA,0x93,0x42,0xA8,0x48,
  9454.         0x95,0xA1,0x68,0xB4,0x51,0x2A,0x14,0xE0,
  9455.         0x4C,0x80,0x30,0x5C,0x1D,0x03,0x82,0x46,
  9456.         0x88,0x15,0x29,0x56,0xFB,0x83,0x20,0xF1,
  9457.         0x2D,0x40,0x54,0x01,0xA2,0x48,0xA3,0x41,
  9458.         0x9D,0x03,0x3C,0x5C,0x0F,0xF5,0xF0,0x3D,
  9459.         0xF6,0x93,0x0C,0x72,0x90,0x67,0xF1,0xA8,
  9460.         0x70,0x9C,0x06,0x49,0xE0,0x0B,0x80,0x4F,
  9461.         0x08,0x1E,0x38,0xDE,0x35,0xA0,0x66,0x7C,
  9462.         0xBC,0x4C,0x10,0x1C,0x6A,0x88,0x1E,0x68,
  9463.         0xB8,0x13,0x38,0x44,0x06,0xE8,0x49,0x3D,
  9464.         0x52,0x60,0x07,0x77,0x32,0xEF,0x01,0xAF,
  9465.         0x0A,0xCD,0x5E,0x12,0x08,0xC1,0xF1,0xF8,
  9466.         0x7E,0xC0,0x26,0x9C,0xC0,0xF2,0x07,0x81,
  9467.         0x1A,0x99,0xA1,0x3D,0xCA,0xD3,0x8A,0x19,
  9468.         0xF2,0x31,0xC1,0x04,0x16,0x0B,0x21,0x05,
  9469.         0x10,0x1A,0x0F,0xF8,0x6F,0x00,0x8F,0x17,
  9470.         0xBE,0x12,0xC4,0xF6,0x80,0x12,0x0C,0x0B,
  9471.         0x21,0x23,0xAB,0xF0,0x78,0xE8,0x28,0x7C,
  9472.         0x95,0x38,0x9C,0xD3,0x8A,0x67,0x82,0xE1,
  9473.         0x20,0xF4,0x05,0x90,0x00,0x51,0xE7,0x0C,
  9474.         0xD4,0x61,0xC1,0xE7,0x04,0x76,0x33,0x38,
  9475.         0x83,0x47,0x00,0x8F,0xE4,0x84,0xFC,0x2B,
  9476.         0xF1,0xC0,0xE0,0x03,0xE2,0xEF,0x1F,0xA7,
  9477.         0xEC,0x11,0x9C,0xA9,0x01,0x7D,0x1C,0xF0,
  9478.         0xFF,0x7F,0x28,0x7C,0x88,0x1E,0xDF,0x29,
  9479.         0x1F,0xAF,0x4F,0x17,0x96,0x35,0x4E,0xE8,
  9480.         0x77,0x08,0x9F,0x38,0x7C,0x64,0x71,0x44,
  9481.         0x08,0x39,0x39,0x05,0xA0,0x81,0x4F,0xF7,
  9482.         0xEC,0x22,0x9C,0xAE,0x27,0xE5,0x40,0xC3,
  9483.         0xA0,0xE3,0x04,0xC7,0x79,0x00,0x1C,0xE3,
  9484.         0x84,0x7F,0x2E,0x80,0x3F,0x40,0x7E,0xCA,
  9485.         0x78,0xC5,0x48,0xE0,0x98,0x23,0x44,0x9F,
  9486.         0x6B,0x3C,0x42,0x2C,0xFC,0x53,0x45,0xE1,
  9487.         0x03,0x21,0x63,0x04,0x17,0xA0,0xC7,0x08,
  9488.         0x7C,0x03,0x8E,0x11,0x7D,0x94,0xE0,0xEA,
  9489.         0x0F,0x1A,0x74,0x80,0xB8,0xFF,0xFF,0x00,
  9490.         0xE1,0x83,0x7A,0x80,0xC0,0x37,0xFA,0xD1,
  9491.         0x03,0x3D,0x2E,0x8B,0x3E,0x0F,0xC8,0xF8,
  9492.         0x89,0x46,0xF3,0xE2,0xA7,0x03,0x7E,0xF8,
  9493.         0x00,0x0F,0xA8,0x87,0x84,0x03,0xC5,0x4C,
  9494.         0x9B,0x83,0x3E,0xBB,0x1C,0x3A,0x76,0xB8,
  9495.         0xE0,0x3F,0x81,0x80,0x4B,0xDE,0x21,0x0C,
  9496.         0x14,0x23,0xC6,0x9F,0x83,0x7C,0x0A,0x03,
  9497.         0xFF,0xFF,0xFF,0x14,0x06,0xFE,0xE1,0xF0,
  9498.         0x20,0x4F,0x07,0x9F,0xB6,0xA8,0x74,0x18,
  9499.         0xD4,0x81,0x0B,0xB0,0x32,0x89,0x08,0xCF,
  9500.         0x12,0xB5,0x41,0xE8,0xD4,0xF0,0x36,0xF1,
  9501.         0xB6,0xE5,0x5B,0x40,0x9C,0xD3,0xEC,0xED,
  9502.         0xC0,0x45,0x30,0x22,0xD4,0x0C,0x45,0x4E,
  9503.         0x5A,0x11,0x63,0x44,0x79,0xDC,0x32,0xCA,
  9504.         0xDB,0xD6,0x0B,0x40,0xBC,0x13,0x7B,0xDE,
  9505.         0x32,0x46,0xF0,0xC8,0x0F,0x5C,0x2C,0xC6,
  9506.         0xEA,0xF5,0x5F,0xF3,0x81,0x0B,0x70,0xF6,
  9507.         0xFF,0x3F,0x70,0x01,0x1C,0x0A,0x7A,0x18,
  9508.         0x42,0x0F,0xC3,0x53,0x39,0x97,0x87,0xC8,
  9509.         0x53,0x89,0x18,0x35,0x4C,0xD4,0x67,0x28,
  9510.         0xDF,0x2D,0x7C,0x20,0x02,0xDF,0x99,0x0B,
  9511.         0xF8,0xFD,0xFF,0x0F,0x44,0x70,0x8E,0x29,
  9512.         0xB8,0x33,0x0D,0x78,0x7C,0xCE,0x40,0x20,
  9513.         0xA7,0xE2,0x43,0x0D,0x60,0x41,0xF4,0x13,
  9514.         0xC2,0x27,0x1A,0x2A,0x13,0x06,0x75,0xA8,
  9515.         0x01,0xAC,0x5C,0x61,0x9E,0x46,0xCF,0xF9,
  9516.         0x59,0xC6,0xA7,0x1A,0x1F,0x4A,0x8D,0x63,
  9517.         0x88,0x97,0x99,0x87,0x1A,0x1F,0x0B,0x5E,
  9518.         0x49,0x7D,0xA8,0x31,0x54,0x9C,0x87,0x1A,
  9519.         0x0F,0x37,0x50,0xD4,0x37,0x9B,0x67,0x1B,
  9520.         0xA3,0xC7,0xF7,0x0D,0xD5,0x10,0x0F,0x35,
  9521.         0x4C,0xF2,0x4A,0x35,0x16,0x1F,0x6A,0xC0,
  9522.         0xF1,0xFF,0x3F,0xD4,0x00,0xFC,0xFF,0xFF,
  9523.         0x1F,0x6A,0x00,0x47,0x47,0x03,0x38,0x47,
  9524.         0x46,0xDC,0xD1,0x00,0x5C,0x87,0x52,0xE0,
  9525.         0x70,0x34,0x00,0x1E,0x47,0x21,0x30,0x5F,
  9526.         0x68,0x7C,0x14,0x02,0x16,0xFF,0xFF,0xA3,
  9527.         0x10,0xF8,0x65,0x9F,0x83,0x50,0x42,0x8F,
  9528.         0x42,0x80,0xA0,0xDB,0xCF,0x53,0xC4,0xB3,
  9529.         0x8F,0x2F,0x3F,0x0F,0x04,0x11,0x5E,0xF3,
  9530.         0x7D,0x0A,0xF2,0x21,0xDF,0x47,0x21,0x06,
  9531.         0x63,0x28,0x5F,0x83,0x7C,0x14,0x62,0x50,
  9532.         0xAF,0x41,0xBE,0xEF,0x1B,0xE4,0xF1,0x22,
  9533.         0x48,0xEC,0x67,0x02,0x1F,0x85,0x98,0xE8,
  9534.         0xA3,0x10,0xA0,0xF0,0xFF,0x7F,0x14,0x02,
  9535.         0xF8,0xFF,0xFF,0x3F,0x0A,0x01,0xCE,0x02,
  9536.         0x1C,0x0D,0x40,0x37,0xAD,0x47,0x21,0xF0,
  9537.         0xDE,0x59,0x4E,0xFB,0x04,0x7C,0x16,0x02,
  9538.         0xCC,0xFE,0xFF,0xCF,0x42,0xC0,0xEC,0x28,
  9539.         0x74,0x14,0x67,0xF9,0x2A,0xF4,0x04,0xF0,
  9540.         0x02,0x10,0x23,0xCC,0x3B,0xD0,0x4B,0x26,
  9541.         0xBB,0x8B,0x1B,0xE7,0xC9,0xE5,0x2C,0x9E,
  9542.         0xC4,0x7D,0x09,0xF2,0x81,0xE2,0x59,0xC8,
  9543.         0x50,0xA7,0x1B,0xF4,0x8D,0xDC,0x03,0x8B,
  9544.         0x19,0x3F,0xC4,0xF3,0x90,0x21,0x9E,0x85,
  9545.         0x00,0x76,0xFD,0xFF,0xCF,0x42,0x00,0xFF,
  9546.         0xFF,0xFF,0x47,0x03,0xF8,0x2F,0x00,0x9F,
  9547.         0x85,0x80,0xE7,0x09,0xE0,0x41,0xDB,0x67,
  9548.         0x21,0x80,0x33,0x87,0xCB,0xF3,0x7F,0x05,
  9549.         0x3A,0x96,0xF7,0x08,0xCF,0xFA,0x24,0x5F,
  9550.         0x2F,0x3D,0xD3,0x87,0x82,0x67,0x21,0x86,
  9551.         0x75,0x18,0x3E,0x0B,0x31,0x88,0x17,0x4D,
  9552.         0x43,0xBC,0x70,0xFA,0x30,0xE0,0xFF,0x3F,
  9553.         0x5E,0xE0,0x57,0x4E,0x03,0x05,0x09,0xF4,
  9554.         0x2C,0x04,0x30,0xFE,0xFF,0x7F,0x16,0x02,
  9555.         0xC8,0xB8,0x46,0x9D,0x85,0x80,0xE5,0x6D,
  9556.         0xE5,0x19,0xDB,0xA7,0x95,0x04,0xFF,0xFF,
  9557.         0x67,0x21,0xC0,0x41,0x2E,0x23,0x07,0x21,
  9558.         0x4C,0xC4,0x87,0x83,0x8F,0x99,0x80,0x9E,
  9559.         0x29,0xBE,0xB8,0x1B,0xE3,0x09,0xE0,0x45,
  9560.         0xE2,0x31,0x93,0x1D,0x35,0x0D,0xF3,0x2C,
  9561.         0x64,0xBC,0xB3,0x78,0x0D,0x78,0x82,0xF7,
  9562.         0xE4,0x9F,0x85,0x18,0xD8,0x61,0x05,0x7B,
  9563.         0x14,0x32,0xA8,0xC1,0x63,0x87,0x08,0x13,
  9564.         0xE8,0x59,0x88,0xC5,0x7D,0xAE,0xE8,0x3C,
  9565.         0xE1,0xB3,0x10,0xF0,0xFE,0xFF,0x9F,0x25,
  9566.         0xE0,0x5E,0x0D,0x9E,0x85,0x00,0x13,0x87,
  9567.         0x0D,0x9F,0x35,0xC0,0x33,0x7C,0x8F,0xEA,
  9568.         0x1C,0x1E,0x8F,0x81,0x7F,0x56,0x1D,0xE7,
  9569.         0x04,0x96,0x7B,0xD1,0xB2,0x71,0xA0,0xA1,
  9570.         0x23,0xB2,0x3A,0x20,0x8D,0x0D,0x73,0x29,
  9571.         0x89,0x7C,0x72,0x6C,0xD4,0x56,0x04,0xA7,
  9572.         0x33,0x93,0x4F,0x00,0xD6,0x42,0x21,0x05,
  9573.         0x34,0x1A,0x8B,0xE1,0x9D,0xF9,0xE8,0x44,
  9574.         0x41,0x0C,0xE8,0xE3,0x90,0x6D,0x1C,0x0A,
  9575.         0x50,0x7B,0xD1,0x14,0xC8,0x39,0x07,0xA3,
  9576.         0x7F,0x76,0x74,0x36,0xBE,0x13,0x70,0x0D,
  9577.         0x10,0x3A,0x25,0x18,0xDA,0x6A,0x04,0xFC,
  9578.         0xFF,0x67,0x89,0x01,0x33,0xFE,0x53,0x8C,
  9579.         0x09,0x7C,0x8E,0xC1,0x1F,0x0C,0xF0,0x03,
  9580.         0x7F,0x31,0xA8,0xFA,0x5E,0xA0,0xFB,0x82,
  9581.         0xD5,0xDD,0x64,0x20,0xCC,0xC8,0x04,0xF5,
  9582.         0x9D,0x0E,0x40,0x01,0xE4,0x0B,0x81,0xCF,
  9583.         0x51,0x0F,0x05,0x6C,0x22,0x21,0xC2,0x44,
  9584.         0x33,0x3A,0x62,0xC2,0xA8,0xE8,0x13,0xA6,
  9585.         0x20,0x9E,0xB0,0x63,0x4D,0x18,0x3D,0x13,
  9586.         0x5F,0x74,0xD8,0x88,0x31,0x21,0xAE,0x1E,
  9587.         0xD0,0x26,0x18,0xD4,0x97,0x22,0x58,0x43,
  9588.         0xE6,0x63,0xF1,0x05,0x02,0x37,0x65,0x30,
  9589.         0xCE,0x89,0x5D,0x13,0x7C,0xD9,0xC1,0xCD,
  9590.         0x19,0x8C,0xF0,0x98,0xBB,0x18,0xBF,0x3A,
  9591.         0x79,0x74,0xFC,0xA0,0xE0,0x1B,0x0E,0xC3,
  9592.         0x7E,0x32,0xF3,0x8C,0xDE,0xCB,0x7C,0x8D,
  9593.         0xC3,0xC0,0x7A,0xBC,0x1C,0xD6,0x68,0x61,
  9594.         0x0F,0xED,0x3D,0xC4,0xFF,0xFF,0x43,0x8C,
  9595.         0xCF,0x13,0xC6,0x08,0xEB,0xDB,0x0B,0x38,
  9596.         0xEE,0x59,0xF0,0xEF,0x1A,0xE0,0xB9,0x84,
  9597.         0xF8,0xAE,0x01,0x30,0xF0,0xFF,0x7F,0xD7,
  9598.         0x00,0x4E,0xD7,0x04,0xDF,0x35,0x80,0xF7,
  9599.         0xD0,0x7D,0xD7,0x00,0xAE,0xD9,0xEF,0x1A,
  9600.         0xA8,0x63,0x80,0x15,0xDE,0x35,0xA0,0x5D,
  9601.         0xD9,0xDE,0xD7,0x9E,0xB0,0xAC,0xE9,0xB2,
  9602.         0x81,0x52,0x73,0xD9,0x00,0x14,0xFC,0xFF,
  9603.         0x2F,0x1B,0x80,0x01,0x29,0x13,0x46,0x85,
  9604.         0x9F,0x30,0x05,0xF1,0x84,0x1D,0xEC,0xB2,
  9605.         0x01,0x8A,0x18,0x97,0x0D,0xD0,0x8F,0xED,
  9606.         0x65,0x03,0x18,0xDC,0x13,0xF8,0x6D,0x03,
  9607.         0x78,0x43,0xFA,0xB6,0x01,0xD6,0xFF,0xFF,
  9608.         0x6D,0x03,0xAC,0xF9,0x6F,0x1B,0x28,0x0E,
  9609.         0xAB,0xBC,0x6D,0x40,0x3C,0xC9,0x33,0x02,
  9610.         0xAB,0xBA,0x6E,0xA0,0xF4,0x5C,0x37,0x00,
  9611.         0x12,0x88,0x99,0x30,0x2A,0xFE,0x84,0x29,
  9612.         0x88,0x27,0xEC,0x68,0xD7,0x0D,0x50,0x04,
  9613.         0xB9,0x6E,0x80,0x7E,0x5E,0x09,0xFE,0xFF,
  9614.         0xAF,0x1B,0xC0,0xE0,0xA2,0x80,0xB9,0x6F,
  9615.         0x00,0x6F,0x58,0x7E,0xDF,0x00,0x7C,0xDC,
  9616.         0xC4,0x31,0xF7,0x0D,0xC0,0xCC,0xFF,0xFF,
  9617.         0xBE,0x01,0xB0,0xE7,0xA2,0x80,0xBB,0x6F,
  9618.         0x00,0xEF,0x8B,0xB4,0xEF,0x1B,0x60,0xFE,
  9619.         0xFF,0xDF,0x37,0xC0,0x28,0x6D,0xFD,0x1E,
  9620.         0x1C,0x3D,0x21,0x78,0x7C,0xB8,0xFB,0xA5,
  9621.         0xC7,0xE7,0xBB,0x39,0x38,0x06,0x79,0x8C,
  9622.         0x87,0x76,0xC0,0xAF,0xEF,0x9E,0x98,0xEF,
  9623.         0xE6,0xC0,0xFF,0x4C,0x70,0x3C,0x18,0x68,
  9624.         0x1C,0x62,0xAB,0x97,0x06,0x72,0x34,0x38,
  9625.         0x3F,0xDC,0x19,0x81,0x61,0x15,0x7F,0xF2,
  9626.         0x47,0x38,0xC7,0xD0,0xD9,0xE1,0x20,0xB1,
  9627.         0x83,0xE0,0xC1,0x56,0x6D,0x02,0x85,0x86,
  9628.         0x50,0x14,0x18,0x14,0x8B,0x0F,0x18,0xF8,
  9629.         0x61,0xB3,0xB3,0x00,0x93,0x04,0x87,0x3A,
  9630.         0x02,0xF8,0x3E,0xD1,0xFC,0x38,0x74,0x37,
  9631.         0x38,0x54,0x8F,0xE5,0xA1,0x80,0x9E,0x01,
  9632.         0x71,0xC7,0x0C,0x32,0x69,0xCF,0x28,0xE2,
  9633.         0x53,0xC2,0x29,0x85,0x49,0xE0,0xF3,0x03,
  9634.         0x43,0xE3,0x04,0xAF,0x0D,0xA1,0xF9,0xFF,
  9635.         0xFF,0xA4,0xC0,0x3C,0xDF,0x31,0x04,0x6C,
  9636.         0x02,0xBB,0xBF,0x64,0xC8,0xDA,0xC0,0x75,
  9637.         0x4B,0x32,0x44,0x6F,0x38,0xB2,0x85,0xA2,
  9638.         0xE9,0x44,0x79,0xDF,0x88,0x62,0x67,0x08,
  9639.         0xC2,0x88,0x12,0x2C,0xC8,0xA3,0x42,0xAC,
  9640.         0x28,0x2F,0x05,0x46,0x88,0x18,0xE2,0x95,
  9641.         0x23,0xD0,0x09,0x87,0x0F,0xF2,0xD8,0x14,
  9642.         0xA7,0xFD,0x41,0x90,0x58,0x4F,0x02,0x8D,
  9643.         0xC5,0x91,0x46,0x83,0x3A,0x07,0x78,0xB8,
  9644.         0x3E,0xC4,0x78,0xF8,0x0F,0x21,0x06,0x39,
  9645.         0xC8,0x73,0x7B,0x54,0x38,0x4E,0x5F,0x25,
  9646.         0x4C,0xF0,0x02,0xE0,0x83,0x0A,0x1C,0xD7,
  9647.         0x80,0x9A,0xF1,0x33,0x06,0x58,0x8E,0xE3,
  9648.         0x3E,0xA9,0xC0,0x1D,0x8F,0xEF,0x07,0x6C,
  9649.         0xC2,0x09,0x2C,0x7F,0x10,0xA8,0xE3,0x0C,
  9650.         0x9F,0xE7,0x0B,0x8B,0x21,0x1F,0x13,0x4C,
  9651.         0x60,0xB1,0x27,0x1B,0x3A,0x1E,0xF0,0xDF,
  9652.         0x63,0x1E,0x2F,0x7C,0x32,0xF1,0x7C,0x4D,
  9653.         0x30,0x22,0x84,0x9C,0x8C,0x07,0x7D,0x87,
  9654.         0xC0,0x5C,0x6F,0xD8,0xB9,0x85,0x8B,0x3A,
  9655.         0x68,0xA0,0x4E,0x0B,0x3E,0x28,0xB0,0x9B,
  9656.         0x11,0xE6,0xB8,0xCE,0xCF,0x2A,0x60,0xF8,
  9657.         0xFF,0x9F,0x55,0x60,0x8F,0x10,0xFE,0xED,
  9658.         0xC1,0xF3,0xF2,0x95,0xE1,0xD5,0x21,0x81,
  9659.         0x43,0x8E,0x10,0x3D,0x2E,0x8F,0x10,0x73,
  9660.         0x3E,0xC2,0x0C,0x11,0x5C,0x67,0x01,0x70,
  9661.         0x0C,0x11,0xF8,0x1C,0x70,0xC0,0x71,0x69,
  9662.         0xE2,0x03,0xF5,0x01,0x07,0x70,0x70,0x4D,
  9663.         0xC3,0x1D,0x70,0xC0,0x71,0x16,0x60,0xFF,
  9664.         0xFF,0xC3,0x0D,0x2C,0x49,0x26,0x0E,0x23,
  9665.         0x18,0x11,0x30,0x28,0x02,0x02,0xA4,0xB3,
  9666.         0x80,0x0F,0x29,0x00,0x1F,0xAE,0x0C,0x0F,
  9667.         0x29,0xD8,0x93,0x86,0x07,0x8E,0x1B,0x85,
  9668.         0x07,0x8D,0x0B,0x30,0x68,0x7A,0xE2,0x80,
  9669.         0x7F,0x4C,0xF0,0x19,0x05,0x1C,0xE3,0x06,
  9670.         0xDF,0x2A,0x0C,0xFC,0xFF,0x3F,0x30,0xCC,
  9671.         0xE1,0xC2,0x63,0x39,0x8A,0xA0,0x07,0x1E,
  9672.         0xD4,0xF7,0x8C,0x33,0xF7,0x24,0x8F,0xD1,
  9673.         0x51,0x0F,0x27,0xF4,0xE4,0x85,0x3B,0x57,
  9674.         0xF9,0x0A,0x71,0x14,0x18,0xB8,0x77,0x29,
  9675.         0x8F,0xCF,0x17,0x2B,0xC3,0x63,0x46,0xFB,
  9676.         0x1E,0x72,0xD6,0x11,0x02,0xE2,0x2F,0x75,
  9677.         0x6C,0xC0,0x60,0x39,0x18,0x00,0x87,0x01,
  9678.         0xE3,0x13,0x0D,0x58,0x67,0x1B,0x3C,0xF4,
  9679.         0x69,0x31,0xC4,0xE3,0x0B,0xFB,0x56,0x61,
  9680.         0x82,0xEA,0x41,0x75,0x12,0xF4,0xD0,0xC0,
  9681.         0x01,0xE8,0xA1,0xC1,0x3F,0xB9,0x90,0xFB,
  9682.         0x2B,0x1D,0x82,0xB5,0xE2,0x69,0xDE,0x47,
  9683.         0x1E,0xF3,0xDC,0xA2,0xBC,0x0D,0x3C,0x07,
  9684.         0xF0,0xD3,0x82,0x87,0xE3,0x63,0x81,0xC7,
  9685.         0xE9,0x4B,0x58,0x82,0xF7,0x1A,0x9F,0x6C,
  9686.         0x1E,0x5C,0x58,0xB2,0x21,0xA0,0x06,0xEB,
  9687.         0x21,0x60,0xA6,0x9A,0xC0,0x49,0x46,0x80,
  9688.         0xCA,0x00,0xA1,0x1B,0xCB,0xE9,0x3E,0x8B,
  9689.         0x84,0x38,0xCD,0x47,0x99,0xC7,0x02,0x8F,
  9690.         0xF5,0xC1,0xC0,0xFF,0x7F,0xCD,0x23,0xD4,
  9691.         0x7D,0xCD,0x33,0x7B,0x3A,0xC0,0xAC,0x22,
  9692.         0xDC,0x7B,0xCE,0x1B,0x86,0xD1,0x9E,0x2D,
  9693.         0x7C,0xCD,0x78,0xD6,0x34,0x42,0x38,0x76,
  9694.         0x83,0xF3,0x48,0x8C,0xF0,0x82,0xC0,0x4E,
  9695.         0x0C,0x0F,0x30,0xC6,0x39,0x79,0xC3,0xFA,
  9696.         0xC2,0xCB,0x40,0x83,0x19,0xDB,0x97,0x01,
  9697.         0x36,0x2A,0xDF,0x88,0xC0,0x97,0xFC,0x62,
  9698.         0x00,0x65,0x16,0xBE,0x9E,0xF8,0xA0,0xC4,
  9699.         0x2E,0x06,0x2C,0xE5,0xC5,0x00,0x54,0x37,
  9700.         0x0C,0x5F,0x0C,0xE0,0x5F,0x89,0x5E,0x0C,
  9701.         0xC0,0x70,0x71,0xF2,0x3D,0xC0,0x1E,0xEE,
  9702.         0xA3,0x74,0x9C,0xBE,0xFD,0xBD,0x19,0xF8,
  9703.         0x6C,0xC0,0x60,0x3C,0xC3,0x30,0xC6,0x08,
  9704.         0xE3,0x51,0x86,0x31,0xC1,0xDC,0xB7,0x03,
  9705.         0xE8,0x39,0x87,0x81,0x4A,0x78,0x3B,0x80,
  9706.         0x72,0x0E,0xE8,0xF2,0x68,0x42,0x4F,0x01,
  9707.         0x4F,0x07,0x3E,0x29,0x1A,0xA2,0xAF,0xB1,
  9708.         0x0A,0x26,0x50,0xC4,0x07,0x0D,0x3E,0xB5,
  9709.         0x28,0x3E,0x15,0x78,0x2D,0xCF,0x4E,0xE1,
  9710.         0xE2,0x9C,0x89,0xA7,0x6A,0x38,0x03,0xBD,
  9711.         0xE6,0x86,0x63,0xFF,0x7F,0x38,0xFC,0xA9,
  9712.         0xE0,0x35,0x80,0x1D,0x24,0x3D,0x2D,0x23,
  9713.         0xC2,0x38,0xA4,0x3C,0x32,0xF8,0xB6,0x18,
  9714.         0xC7,0x90,0x0F,0x91,0xBE,0x13,0x18,0xF2,
  9715.         0x21,0xEF,0x79,0xC7,0xC0,0xAF,0x08,0x71,
  9716.         0x9E,0xB2,0x7C,0x67,0xF0,0x65,0x01,0x7C,
  9717.         0x91,0x2E,0x0B,0x68,0x68,0x9F,0x64,0x7C,
  9718.         0x41,0x30,0xEC,0x89,0xB3,0x00,0x77,0x05,
  9719.         0x50,0x81,0xFA,0xAE,0x00,0xFF,0x42,0xF0,
  9720.         0xAE,0x00,0x86,0x79,0xF9,0x56,0xC0,0x35,
  9721.         0x1D,0x4A,0xD0,0x67,0x12,0x5F,0x17,0x70,
  9722.         0x53,0x64,0xA9,0x8E,0x0A,0xD0,0x53,0x4C,
  9723.         0x02,0x75,0x47,0xF7,0x51,0x01,0xC6,0x4D,
  9724.         0xD9,0x07,0x54,0x76,0x5A,0x60,0x67,0x21,
  9725.         0x76,0x1D,0xC1,0x5D,0x49,0x18,0xCA,0xB3,
  9726.         0x81,0x2F,0x59,0xFC,0x70,0x00,0x03,0xDC,
  9727.         0xB3,0x38,0xC4,0x08,0xB1,0xD9,0x81,0xEB,
  9728.         0x75,0xD2,0x70,0x2F,0x44,0xEC,0xFF,0x7F,
  9729.         0x32,0x00,0xE3,0x51,0x1B,0x1C,0x27,0x9D,
  9730.         0xF0,0x91,0x9E,0x59,0xF8,0x49,0x19,0x30,
  9731.         0x71,0xF2,0x03,0xE3,0xC9,0x1A,0xC6,0x00,
  9732.         0xB8,0xBC,0x57,0x95,0x81,0xFC,0x43,0x90,
  9733.         0x20,0x18,0xD4,0x29,0x19,0x38,0x1C,0xC5,
  9734.         0x70,0xA7,0x64,0x78,0x50,0xF8,0xC3,0x00,
  9735.         0xE6,0x46,0xE8,0x7B,0x82,0xA1,0xDE,0x93,
  9736.         0x0E,0xE3,0x91,0xD0,0x04,0x3E,0x2D,0xC3,
  9737.         0xFA,0xFF,0x9F,0x96,0x81,0xD5,0xB1,0xDD,
  9738.         0x43,0xF6,0x59,0x01,0x77,0x76,0x80,0x3B,
  9739.         0x3D,0x7E,0x7A,0x00,0x9C,0x00,0x3D,0x3D,
  9740.         0x80,0xED,0xBC,0x01,0xF7,0x40,0x80,0x38,
  9741.         0xFE,0xA3,0x82,0x5F,0x59,0x28,0x1C,0x3F,
  9742.         0xB6,0xF3,0x63,0x09,0xEE,0x70,0xE0,0x23,
  9743.         0x83,0x0F,0x90,0xB8,0xA1,0xF8,0x50,0x81,
  9744.         0x3C,0x0B,0x80,0x62,0xF4,0x6C,0x04,0xEC,
  9745.         0x06,0xF3,0xD2,0x12,0xE5,0xFF,0xFF,0xDE,
  9746.         0xC0,0x4E,0x29,0xB8,0x83,0x00,0xF8,0x8E,
  9747.         0x01,0xE0,0x1D,0x0C,0x97,0x35,0x66,0x94,
  9748.         0x10,0x18,0x8D,0x19,0x77,0x08,0xE1,0x27,
  9749.         0x02,0xDC,0x98,0x3D,0x6E,0x8F,0x19,0x77,
  9750.         0x9C,0xE5,0xA3,0x7A,0xCA,0x08,0xE5,0x03,
  9751.         0x07,0x3B,0x67,0xBC,0x11,0xF0,0xA1,0x03,
  9752.         0x8F,0x03,0x0C,0xEE,0x48,0x01,0xC6,0xCB,
  9753.         0x01,0x1B,0x3B,0xB8,0x83,0x90,0x53,0x20,
  9754.         0x4B,0x87,0xD1,0xD8,0x71,0xB2,0x81,0x74,
  9755.         0x8C,0xF1,0x21,0xD7,0x63,0xC7,0x0D,0xD6,
  9756.         0x63,0xC7,0x1D,0x5F,0xB0,0xFF,0xFF,0xE3,
  9757.         0x0B,0x18,0xC6,0xC0,0xC5,0x0F,0x03,0x7D,
  9758.         0xF3,0xF3,0xE8,0x0C,0xEE,0x61,0xFB,0x04,
  9759.         0x13,0xE3,0xF9,0x25,0xC4,0x23,0xCC,0x8B,
  9760.         0x4B,0x84,0xA3,0x08,0xF2,0xE6,0x12,0xE7,
  9761.         0xD5,0x20,0xCC,0x63,0x4B,0x94,0x10,0x11,
  9762.         0x0E,0x26,0xCE,0x13,0x8C,0x11,0x0E,0x3C,
  9763.         0x8A,0x21,0x22,0x9C,0x40,0x88,0x93,0x3E,
  9764.         0xD9,0x20,0xE1,0x63,0x84,0x8D,0xF6,0x04,
  9765.         0xC3,0xC7,0xC2,0xCF,0x2B,0x1E,0x3C,0x3F,
  9766.         0xAD,0xF9,0x2E,0xE8,0xC9,0x9C,0xE3,0x43,
  9767.         0x96,0xA7,0xF6,0x38,0xE9,0xC3,0x2C,0x6E,
  9768.         0x50,0x0F,0x8E,0xEC,0xAE,0xE3,0xE3,0x35,
  9769.         0xF6,0x14,0xE4,0x21,0xF0,0x13,0x81,0x2F,
  9770.         0x88,0x9E,0xAC,0xEF,0x7A,0xEC,0x5E,0x66,
  9771.         0x8C,0xEA,0xA7,0x80,0x3A,0xA6,0x9C,0xC1,
  9772.         0x2B,0x04,0xBB,0xE7,0xF9,0x90,0xED,0xBB,
  9773.         0x24,0x1B,0x05,0xEE,0x90,0xE0,0x33,0x12,
  9774.         0x3F,0x55,0x78,0x18,0x1E,0x05,0x8C,0x19,
  9775.         0xBC,0x23,0x1C,0x5A,0x88,0x03,0x7E,0xDF,
  9776.         0x65,0x43,0x8D,0x71,0x7A,0x3E,0x7F,0xB0,
  9777.         0x41,0xC0,0x87,0x3A,0x54,0x0F,0xF3,0xA8,
  9778.         0x5E,0x0A,0x19,0xCE,0xD9,0xC1,0x1D,0x04,
  9779.         0xF6,0xF8,0xE1,0x41,0xF0,0x9B,0x25,0x1F,
  9780.         0x04,0x3B,0xDF,0xBC,0xC1,0x19,0xE4,0xFF,
  9781.         0x7F,0x0C,0xB0,0xCF,0x54,0x3E,0x9A,0x20,
  9782.         0x8E,0x80,0xE8,0xF3,0x87,0xC7,0xF0,0x26,
  9783.         0xC7,0x87,0x83,0x3D,0x7A,0xE0,0x4E,0x22,
  9784.         0x70,0x8F,0x5D,0x07,0xED,0x6B,0x9C,0x2F,
  9785.         0x5A,0x30,0xEE,0x7B,0xCF,0x22,0xE0,0xC7,
  9786.         0x78,0x6C,0x01,0xC7,0xA1,0x04,0xDC,0xC1,
  9787.         0x8E,0x6B,0x1C,0x42,0x51,0x60,0x74,0x28,
  9788.         0xC1,0xC5,0x00,0x12,0x8C,0x63,0x9C,0xD1,
  9789.         0xD0,0x97,0x48,0x1F,0xD2,0xE0,0x0C,0x1A,
  9790.         0xF6,0x3C,0x9F,0x50,0xB8,0x3D,0x01,0x8A,
  9791.         0x4E,0x28,0x20,0xC3,0x7D,0x06,0xC1,0x9E,
  9792.         0x10,0xF8,0x19,0x84,0xFD,0xFF,0x0F,0x8E,
  9793.         0x1E,0xF7,0x7B,0xA3,0x4F,0x8D,0x6C,0xEE,
  9794.         0x0F,0x01,0x27,0x70,0xEE,0xEC,0xD4,0x8C,
  9795.         0x3B,0x33,0x60,0xCF,0x1F,0x1E,0x02,0x3F,
  9796.         0x17,0x78,0xF8,0x1E,0x02,0x7E,0xF0,0x0F,
  9797.         0xCC,0x06,0x07,0xE3,0x29,0xC2,0xD7,0x0E,
  9798.         0x0E,0xCE,0x4F,0x03,0x06,0xE7,0xAF,0x50,
  9799.         0x9F,0xE7,0x19,0x38,0xF6,0xD4,0xEB,0x7B,
  9800.         0x87,0xE7,0xEB,0x43,0x05,0xFE,0xA6,0xE7,
  9801.         0x43,0x05,0x38,0x0E,0x0F,0xFC,0xB0,0xC2,
  9802.         0x86,0xF0,0x28,0x80,0x3F,0xB5,0xF8,0xF8,
  9803.         0x17,0xE7,0x29,0x82,0xDD,0x46,0xB0,0x87,
  9804.         0x0B,0xC0,0x51,0xB4,0xB3,0x18,0x2A,0xCC,
  9805.         0x59,0x8C,0xFC,0xFF,0xCF,0x51,0xA8,0xB3,
  9806.         0x18,0x3D,0x5C,0x00,0x2E,0x04,0x1F,0x0F,
  9807.         0x40,0x73,0x10,0x78,0x5C,0xF0,0x85,0xE0,
  9808.         0x48,0x0E,0xE4,0xE9,0x00,0xF0,0x19,0x4A,
  9809.         0xC3,0xA1,0x09,0x13,0x03,0x06,0x75,0x3E,
  9810.         0xF0,0x09,0xC5,0xC7,0x0E,0x7E,0x36,0xF0,
  9811.         0x8D,0xDC,0x43,0xE5,0xA7,0x66,0x5F,0xF2,
  9812.         0x11,0xE0,0x02,0x75,0xA0,0x61,0xA0,0x46,
  9813.         0xE4,0x23,0xD2,0xFF,0xFF,0xB9,0x0D,0x1B,
  9814.         0x60,0x68,0xF4,0x1C,0x0E,0xE3,0x80,0xEB,
  9815.         0x73,0x38,0x76,0x40,0x3E,0x87,0xC3,0x3F,
  9816.         0x47,0xC3,0x1F,0x1B,0x3B,0xDD,0xF3,0x81,
  9817.         0xC1,0xBA,0x7E,0x63,0x06,0x06,0xB6,0x6F,
  9818.         0x91,0x07,0x06,0x1C,0x51,0xCF,0xC6,0x57,
  9819.         0x08,0x0F,0x0C,0x6C,0x80,0x1E,0x18,0xF0,
  9820.         0x89,0x05,0x21,0x27,0x03,0x43,0x9D,0x32,
  9821.         0x8C,0x1C,0xF3,0x89,0xC3,0xC3,0xF0,0xA1,
  9822.         0x22,0xEA,0x33,0xC0,0x23,0x1E,0x1B,0x1B,
  9823.         0xFB,0xFF,0x8F,0x0D,0x2C,0xC7,0x16,0x8F,
  9824.         0x0D,0xFC,0x47,0x78,0xFC,0xD8,0xE0,0x8C,
  9825.         0xE5,0xD1,0xC4,0x97,0x99,0x23,0x3B,0x8D,
  9826.         0x33,0x7B,0x0D,0xF1,0xD1,0xEE,0xF1,0xDB,
  9827.         0x63,0x03,0x97,0x85,0xB1,0x01,0xA5,0x90,
  9828.         0x63,0x43,0x1F,0x52,0x7C,0x0A,0xB0,0x71,
  9829.         0x54,0x32,0x0F,0x1F,0xAF,0x7C,0x62,0x38,
  9830.         0xBA,0x20,0x6F,0xE8,0xBE,0x5C,0xF8,0x48,
  9831.         0x63,0x30,0x5F,0x5A,0x7C,0x06,0xE5,0x43,
  9832.         0x04,0xD7,0x57,0xC5,0x43,0x04,0x3E,0xA1,
  9833.         0x86,0x88,0x1E,0xCF,0xFF,0xFF,0x11,0xCC,
  9834.         0x43,0x64,0x43,0x03,0xAF,0x87,0xA1,0x01,
  9835.         0xA5,0x98,0xC0,0x5E,0x85,0x87,0x46,0x4F,
  9836.         0x3F,0x3E,0x04,0x30,0x08,0xDF,0x06,0xD8,
  9837.         0x55,0xC0,0x57,0x21,0x83,0x24,0x18,0xE7,
  9838.         0x64,0x41,0x07,0x07,0x8E,0x21,0x79,0x70,
  9839.         0xF0,0x07,0xE3,0x21,0x70,0x60,0xCF,0xE0,
  9840.         0xB9,0xE8,0x31,0xD8,0xA7,0x1D,0x9F,0x4A,
  9841.         0xC0,0x77,0xE6,0x04,0xC7,0xE9,0x1D,0x7B,
  9842.         0x29,0xF0,0x08,0x1E,0xAD,0x3C,0x02,0x7E,
  9843.         0xB4,0x02,0x66,0xFF,0xFF,0xA3,0x15,0x30,
  9844.         0x09,0x7A,0xE6,0xA4,0x03,0x77,0x34,0x18,
  9845.         0xD4,0xD1,0x0A,0x5C,0x11,0xC0,0x75,0xDC,
  9846.         0xF0,0xD1,0x02,0xCE,0x50,0x0F,0xDA,0x07,
  9847.         0x65,0xCF,0xDA,0x97,0x21,0x76,0xB4,0x00,
  9848.         0x97,0x89,0x43,0x08,0xD0,0x04,0x3E,0x89,
  9849.         0x67,0xEF,0x43,0x03,0xB3,0x8A,0xA1,0x01,
  9850.         0xA5,0xA3,0x01,0xEE,0x44,0x81,0xFD,0xFF,
  9851.         0x9F,0x28,0x60,0xDE,0x30,0x70,0x07,0x0A,
  9852.         0xC0,0xCD,0xE9,0xDB,0xE3,0xE2,0xD0,0x38,
  9853.         0xC4,0xE7,0xA7,0x73,0xF6,0xD1,0xE8,0x4C,
  9854.         0x71,0x67,0x11,0x30,0x9C,0x7D,0x11,0x8F,
  9855.         0x18,0x03,0xF9,0x81,0x21,0x59,0x30,0x28,
  9856.         0x16,0x0F,0xC5,0x07,0x03,0x0E,0xEC,0x23,
  9857.         0x02,0x3B,0x17,0xB0,0x73,0xAD,0xE1,0xF8,
  9858.         0x59,0xC0,0xA7,0x84,0xB7,0xA6,0x17,0x7B,
  9859.         0x9F,0xD7,0x7D,0xD6,0x08,0xC9,0xCE,0xF4,
  9860.         0x3E,0x89,0xE2,0x0E,0xA2,0x70,0x4E,0x9F,
  9861.         0xE0,0x22,0xF0,0x65,0xDF,0xA3,0xE0,0xA7,
  9862.         0x07,0xCF,0xF1,0x8D,0xC1,0xA7,0x07,0xE6,
  9863.         0x7E,0xF8,0x9A,0xF1,0x33,0xC3,0xE3,0x43,
  9864.         0x88,0x27,0xE2,0xDA,0xA6,0x20,0x5B,0x18,
  9865.         0x42,0x09,0xF4,0xFF,0x8F,0x10,0xE5,0x6D,
  9866.         0x20,0xCA,0x29,0x44,0x88,0x12,0xA4,0xB1,
  9867.         0xC9,0x0B,0x35,0xCA,0xD9,0x45,0x6E,0x6D,
  9868.         0xF6,0x82,0x0B,0x14,0x2A,0x66,0x9C,0x28,
  9869.         0xEF,0x10,0xB1,0xDA,0x1F,0x04,0x91,0xF4,
  9870.         0x32,0xD0,0x71,0xC9,0x91,0x0E,0x7D,0xE8,
  9871.         0x61,0xFB,0x04,0x8C,0x3F,0x48,0xE2,0xAE,
  9872.         0x2A,0x3E,0x28,0xF8,0x00,0x80,0x77,0x09,
  9873.         0xA8,0x5B,0x9D,0xC7,0xED,0xF3,0x06,0xF8,
  9874.         0xAF,0x17,0x58,0x82,0xF2,0x07,0x81,0x1A,
  9875.         0x99,0xA1,0x3D,0xCC,0xB7,0x19,0x43,0xBE,
  9876.         0x07,0x1C,0x16,0x3B,0x27,0xF9,0xF0,0x08,
  9877.         0x1C,0x8E,0x01,0x4F,0x1B,0xBE,0x51,0x7B,
  9878.         0xBE,0x3E,0x62,0x01,0x8E,0xFE,0xFF,0x47,
  9879.         0x2C,0x30,0x9D,0xDF,0x7D,0x82,0x01,0xC7,
  9880.         0xCD,0x82,0x9F,0x61,0x00,0x67,0x40,0xCF,
  9881.         0x30,0x60,0x1F,0x2A,0x6E,0x08,0x5C,0xEE,
  9882.         0x8A,0x28,0x90,0x05,0xC2,0xA0,0x0E,0xFD,
  9883.         0xE4,0x08,0x42,0xCF,0x9C,0x70,0x86,0x72,
  9884.         0xB2,0xBD,0x5F,0x1D,0xC8,0x2D,0xC2,0x43,
  9885.         0x3D,0x8B,0xC7,0x04,0x76,0xDA,0x02,0x36,
  9886.         0xFF,0xFF,0xE3,0x29,0xB0,0x98,0xF7,0xD3,
  9887.         0x69,0x84,0x63,0x03,0xFB,0x71,0x0B,0x38,
  9888.         0x1D,0xCC,0xE0,0xDC,0x7F,0xD8,0x2D,0x1A,
  9889.         0x37,0x34,0xB0,0x0D,0xCC,0x43,0x03,0x3E,
  9890.         0x27,0x47,0x30,0x9E,0x98,0xF8,0x55,0xE2,
  9891.         0xE1,0x89,0x1F,0x43,0xC0,0xFA,0xFF,0x3F,
  9892.         0x99,0x01,0xF6,0x84,0x1E,0xCB,0x50,0xD2,
  9893.         0x4E,0x66,0x80,0xC0,0xFB,0xD8,0x3B,0xC3,
  9894.         0x4B,0x83,0xE7,0x74,0xD2,0xCF,0x62,0x3E,
  9895.         0x99,0x19,0x21,0x0A,0xBB,0x8F,0x19,0xAD,
  9896.         0x37,0x14,0xCD,0x3C,0xE8,0x3B,0x99,0x51,
  9897.         0x62,0x46,0x6A,0x0E,0x4C,0x48,0x11,0x0F,
  9898.         0x27,0x4A,0x88,0x60,0xAF,0x13,0x6F,0x67,
  9899.         0x4F,0x66,0x4C,0xD6,0xC9,0x0C,0x24,0xFF,
  9900.         0xFF,0x93,0x19,0x98,0x5C,0x9F,0xCC,0x80,
  9901.         0xCA,0x39,0x0A,0x7F,0x32,0x03,0x78,0x74,
  9902.         0xC0,0xC2,0x9D,0xCC,0xC0,0xF2,0xFF,0x3F,
  9903.         0xC4,0x00,0xCE,0xC7,0x0A,0x63,0x0C,0x3C,
  9904.         0xDA,0xC1,0x0C,0x15,0xE6,0x6C,0x86,0x0E,
  9905.         0x72,0x08,0xA1,0xC1,0x0E,0x21,0x50,0xE6,
  9906.         0x72,0xA0,0xA7,0xF0,0x9A,0xE0,0x73,0x14,
  9907.         0xD8,0x0F,0x67,0xC0,0xE1,0xD4,0x80,0x0F,
  9908.         0x74,0xE2,0x42,0x8F,0xC2,0x23,0x0E,0x58,
  9909.         0xFD,0xC0,0xC8,0xFF,0xFF,0x64,0x06,0x18,
  9910.         0x78,0x6A,0xF8,0x40,0x82,0x63,0x31,0xEA,
  9911.         0x1B,0xC4,0x21,0xBE,0x8D,0xF8,0xE8,0xFE,
  9912.         0x6A,0xE2,0x4B,0x00,0xE6,0x42,0xE2,0xD3,
  9913.         0x09,0xB3,0x70,0x38,0x03,0x5A,0x43,0x60,
  9914.         0x57,0x26,0xCF,0x9C,0x0F,0xE1,0x6C,0x3C,
  9915.         0x7A,0xDC,0xE9,0x04,0xDE,0x38,0x7C,0x3A,
  9916.         0x01,0x5E,0x07,0x0C,0xCC,0x0C,0xC2,0x3F,
  9917.         0x84,0xB0,0x21,0x9C,0xAA,0xC7,0x70,0xEE,
  9918.         0xAF,0x38,0x3E,0x9D,0x80,0xF3,0xFF,0x7F,
  9919.         0x62,0x03,0x0C,0x0A,0x7E,0x32,0xF8,0xB8,
  9920.         0x46,0x25,0xC2,0xA0,0x8E,0xE6,0x80,0x7B,
  9921.         0x98,0x27,0x36,0x26,0x6F,0xC5,0x1A,0x8B,
  9922.         0x4F,0x6C,0x30,0xFF,0xFF,0x27,0x36,0x80,
  9923.         0xD1,0x87,0x20,0xB0,0xFD,0xFF,0x0F,0x41,
  9924.         0x60,0x1C,0xA0,0x0F,0x41,0x80,0x9B,0xD3,
  9925.         0x09,0xEE,0xC4,0x07,0xB6,0x63,0x10,0x60,
  9926.         0x6D,0xE8,0x3E,0x06,0x81,0xF9,0xFF,0x3F,
  9927.         0x5A,0x98,0xA3,0xE0,0xC2,0x8E,0x7C,0x28,
  9928.         0x29,0xA7,0x3E,0xB4,0x0C,0x20,0x69,0x38,
  9929.         0xC9,0x01,0x9D,0xD3,0x3D,0x70,0x92,0x75,
  9930.         0xEA,0x40,0x8F,0xC7,0xA0,0xAF,0x1C,0xBE,
  9931.         0x12,0xF0,0x23,0x07,0x93,0x00,0xAA,0x41,
  9932.         0xFA,0xCC,0x07,0x9C,0x8E,0x1C,0xE0,0x38,
  9933.         0x26,0x05,0xC6,0xDE,0x0E,0xDE,0x22,0x3D,
  9934.         0x89,0xA7,0xA1,0xE3,0x0C,0x51,0x38,0x26,
  9935.         0x39,0x18,0x44,0x7A,0x95,0x62,0x03,0x7C,
  9936.         0xAB,0xF1,0xD9,0xC8,0x07,0x10,0x78,0xE3,
  9937.         0xF6,0xD8,0x61,0xFF,0xFF,0x0F,0x75,0xC0,
  9938.         0x01,0xE2,0xA4,0xF8,0x21,0xC3,0x98,0x67,
  9939.         0xC5,0x0F,0x75,0x80,0xF5,0x18,0x27,0x3A,
  9940.         0x94,0xF0,0x43,0x1D,0x20,0xE8,0xFF,0x7F,
  9941.         0xA8,0x03,0x86,0x38,0x6F,0x24,0xD1,0x1E,
  9942.         0xEA,0x98,0xE8,0x43,0x1D,0x40,0xC8,0xFF,
  9943.         0xFF,0xA1,0x0E,0x18,0x9E,0x87,0x00,0xAE,
  9944.         0x9C,0xEF,0xC0,0x7C,0x22,0x02,0xEF,0xFF,
  9945.         0xFF,0x7C,0x07,0xB8,0x1B,0x2D,0xCC,0x51,
  9946.         0x70,0x41,0xAF,0x0E,0x03,0x51,0x09,0x30,
  9947.         0x28,0x02,0xC7,0x5F,0x9B,0x60,0x1C,0xEA,
  9948.         0x7C,0x87,0x3E,0x2F,0x78,0xD8,0x4F,0x05,
  9949.         0x9E,0xC4,0xA9,0xFA,0x5A,0x70,0x14,0x4F,
  9950.         0x00,0x3E,0xE1,0x01,0xFF,0xA1,0xC1,0x9A,
  9951.         0x44,0xF1,0x43,0x03,0xF5,0x11,0xE4,0xFF,
  9952.         0x7F,0x68,0xC0,0x28,0xEA,0xF9,0x06,0x7D,
  9953.         0xCC,0xF2,0xD9,0x20,0xE6,0x0B,0x48,0x84,
  9954.         0x07,0x10,0x5F,0x1F,0xD8,0x71,0xD2,0x67,
  9955.         0xA0,0x40,0x51,0xDE,0x37,0xF8,0x09,0x07,
  9956.         0x5C,0x83,0xF3,0x09,0x07,0xBC,0x87,0x23,
  9957.         0x1F,0x4B,0xC0,0x77,0xD0,0x84,0x73,0x81,
  9958.         0xF1,0x8D,0x8D,0x9D,0x06,0xC0,0x76,0x00,
  9959.         0x06,0xDF,0x69,0x00,0x1C,0xC7,0x24,0x7E,
  9960.         0x3A,0x04,0x13,0xCC,0xC1,0xBC,0x34,0xFB,
  9961.         0xFF,0xEF,0xFD,0x94,0x43,0xCF,0x86,0x80,
  9962.         0x75,0x49,0x07,0x43,0x94,0x88,0xB3,0x21,
  9963.         0x20,0xFD,0xFF,0x7F,0x36,0xC4,0x20,0xC4,
  9964.         0x09,0xFC,0x12,0xD1,0xDC,0xD9,0x90,0xAE,
  9965.         0xD8,0x67,0x43,0x80,0xE1,0xFF,0xFF,0x23,
  9966.         0x00,0xF6,0x7C,0x04,0x38,0x3D,0x64,0x83,
  9967.         0xE7,0x14,0x08,0xE3,0xE4,0x03,0x38,0xFE,
  9968.         0xFF,0x8F,0x15,0xE6,0x18,0x78,0xEA,0x97,
  9969.         0x9B,0x8F,0x03,0x54,0xD4,0x2B,0xC2,0x30,
  9970.         0x94,0xC5,0x87,0x05,0x1F,0x11,0xF8,0x61,
  9971.         0xC1,0x23,0xA8,0x78,0x9C,0xF4,0x74,0xE3,
  9972.         0x33,0x21,0x3B,0x24,0x38,0xFC,0x20,0xE9,
  9973.         0x41,0x13,0x3C,0xE7,0x23,0x78,0xB7,0x1E,
  9974.         0x38,0xA7,0x02,0xC0,0x4D,0xAE,0x27,0xA3,
  9975.         0x4E,0x17,0x0E,0x70,0x8E,0x92,0x8D,0x63,
  9976.         0x08,0xE5,0x70,0xCC,0xB7,0x87,0xA6,0xC9,
  9977.         0x4E,0x56,0x30,0x63,0x41,0xEA,0x24,0xE0,
  9978.         0x01,0x38,0x10,0x8C,0xB4,0x93,0x68,0x34,
  9979.         0x86,0xB3,0x5A,0x18,0xC1,0x19,0xC4,0xC7,
  9980.         0x11,0xE7,0x3A,0x19,0xA1,0x3F,0x07,0x3E,
  9981.         0x15,0x61,0x82,0xDC,0x4B,0xE8,0xBC,0x7D,
  9982.         0x37,0xE0,0x57,0x61,0x8F,0xC5,0xFF,0x7F,
  9983.         0x60,0xDF,0x4E,0xC0,0x31,0x17,0xAB,0x01,
  9984.         0x45,0x0D,0xC0,0x68,0x98,0x53,0xC0,0x53,
  9985.         0x09,0xB8,0x82,0xCD,0x0D,0x7D,0x61,0xB1,
  9986.         0xD6,0xA9,0xE8,0x14,0xF4,0x3E,0x70,0x70,
  9987.         0xC0,0x63,0xF6,0x1E,0x1C,0x2C,0x34,0x0F,
  9988.         0x0E,0x6C,0xD9,0x06,0x87,0x56,0x72,0x17,
  9989.         0x21,0x87,0x0F,0xFC,0xEC,0x80,0x03,0xA0,
  9990.         0x67,0x07,0x0B,0xC9,0xB3,0x03,0x9B,0xBE,
  9991.         0xB3,0x08,0x28,0x70,0xFE,0xFF,0x11,0xDE,
  9992.         0x3B,0x7C,0x6E,0x79,0xF6,0x60,0x63,0x78,
  9993.         0x74,0x31,0x9A,0xD1,0xB9,0xA6,0xDB,0x04,
  9994.         0x4A,0xC5,0x6D,0x82,0x82,0xF8,0x06,0xE0,
  9995.         0x84,0x34,0xBA,0x75,0xE2,0x66,0x62,0xFC,
  9996.         0x47,0x0C,0x1F,0x11,0x0E,0xE9,0x6C,0x4D,
  9997.         0x30,0x0F,0xA4,0x9E,0x81,0xBE,0xB3,0xE1,
  9998.         0x67,0x1F,0xF2,0xC1,0xC5,0xD3,0xF0,0xF5,
  9999.         0x86,0xDC,0x3B,0xE8,0xB4,0x7D,0x66,0xC0,
  10000.         0x1C,0x74,0x7D,0x9D,0x7A,0x83,0x27,0x57,
  10001.         0x09,0xEA,0xE1,0x02,0x42,0x2F,0x34,0xBE,
  10002.         0xDC,0x25,0x78,0xE0,0xF4,0xE9,0xEE,0xBD,
  10003.         0x84,0x9D,0xF1,0x12,0xBC,0xE0,0x25,0x98,
  10004.         0x77,0x10,0xA8,0x51,0x79,0x10,0x98,0xAB,
  10005.         0x3C,0xCB,0x37,0x06,0x54,0xB2,0x8B,0x16,
  10006.         0x3D,0xC3,0xBC,0xC3,0xF8,0x92,0xE0,0xEB,
  10007.         0x87,0xCF,0x2D,0x5E,0xC0,0xEB,0x16,0x0C,
  10008.         0x82,0x67,0xA0,0x57,0x17,0xDF,0xD9,0x0D,
  10009.         0xFC,0x2A,0xF0,0x46,0x13,0x22,0x98,0x61,
  10010.         0x0F,0xFF,0xDD,0xDD,0xA8,0xBE,0xE9,0x18,
  10011.         0xEB,0x75,0xC4,0x23,0xE5,0xC7,0x96,0x03,
  10012.         0x8A,0xF4,0xF2,0xE6,0x09,0xF8,0x2C,0xE3,
  10013.         0x53,0xDD,0x49,0xF9,0x7A,0x68,0xF4,0x57,
  10014.         0x08,0x1F,0x7E,0x8C,0xEC,0x73,0x0E,0x3B,
  10015.         0xDF,0xB1,0x41,0x71,0xC4,0x07,0x86,0x97,
  10016.         0x1A,0x4F,0x85,0x9D,0xBB,0x60,0x1C,0x1C,
  10017.         0xD8,0xB1,0x08,0x73,0x7C,0x05,0xD7,0xC9,
  10018.         0xE6,0xFF,0xFF,0xE4,0x00,0x6E,0x78,0xCC,
  10019.         0xC1,0xD7,0xE7,0x0D,0xDF,0x0C,0x3C,0x2E,
  10020.         0x7E,0xE4,0xF0,0x49,0xE3,0xA5,0xD3,0xD8,
  10021.         0xA7,0xE9,0xA3,0xD1,0xCB,0x9B,0x4F,0x2F,
  10022.         0x18,0x58,0x5F,0x1A,0x38,0xAC,0xD1,0xC2,
  10023.         0x3E,0x06,0x9C,0xB9,0x2F,0x44,0xB8,0xC3,
  10024.         0x23,0x58,0x00,0xF1,0xB7,0x92,0x47,0x0E,
  10025.         0x4F,0xC0,0x80,0x4C,0xD3,0xBA,0x74,0x20,
  10026.         0xE2,0xA7,0x3C,0x2B,0x5F,0x99,0x2E,0x43,
  10027.         0x0C,0xE3,0xA9,0xF2,0xF1,0xC3,0xB3,0xF1,
  10028.         0x51,0xC0,0xC7,0x28,0xCF,0xFC,0x8C,0x22,
  10029.         0xBD,0x32,0x10,0x50,0x9D,0x88,0xB8,0x42,
  10030.         0x18,0x89,0xA1,0xD1,0x9D,0x83,0xC7,0x1F,
  10031.         0x22,0x05,0x31,0xA0,0x6F,0x2E,0xC0,0xF4,
  10032.         0x4C,0x04,0x5C,0xFE,0xFF,0x37,0x17,0x80,
  10033.         0xFF,0xFF,0xFF,0x9B,0x0B,0xE0,0xE6,0xFE,
  10034.         0xE0,0x9B,0x0B,0x70,0x8D,0xB4,0x2A,0x7A,
  10035.         0x61,0x77,0x08,0x18,0xD4,0x9D,0x1D,0x70,
  10036.         0x78,0x2B,0x78,0x67,0x87,0xF5,0xFF,0xBF,
  10037.         0xB3,0xC3,0xC3,0x8C,0x13,0xE5,0x85,0x21,
  10038.         0xC6,0x3B,0x3B,0x0B,0xF0,0x26,0xD0,0x51,
  10039.         0xC6,0x77,0x76,0x80,0x1F,0x67,0xD8,0x77,
  10040.         0x69,0xF0,0x5E,0x75,0x81,0xF5,0xFF,0xFF,
  10041.         0xAA,0x0B,0x3C,0x04,0xDF,0xA7,0x41,0x3E,
  10042.         0x5E,0x30,0x8C,0x83,0x2B,0x27,0xA1,0xC7,
  10043.         0x02,0x6B,0x85,0x41,0xDD,0xA9,0xC1,0xA5,
  10044.         0x09,0x5C,0x17,0x5F,0x1F,0x6A,0x7C,0xA4,
  10045.         0xC5,0x9F,0x2F,0x70,0x01,0x86,0x4C,0x4F,
  10046.         0x65,0x30,0xAE,0x29,0x3E,0x95,0x61,0xEE,
  10047.         0x0E,0x1E,0x90,0x8F,0x18,0xC0,0x67,0x15,
  10048.         0x1E,0x18,0xEE,0xB4,0xE0,0x9B,0x92,0x41,
  10049.         0xCF,0x31,0xA8,0x8F,0x3C,0x27,0xEF,0x7B,
  10050.         0xC2,0xE3,0x84,0xA3,0x9E,0x83,0xE8,0xD8,
  10051.         0xC0,0x71,0xDC,0xC0,0xFD,0xFF,0xC7,0x06,
  10052.         0xEF,0x70,0x83,0x3B,0xE8,0xF8,0x62,0x70,
  10053.         0x5C,0x18,0xB8,0xE7,0x02,0x0F,0xC3,0x37,
  10054.         0x1D,0x8F,0x08,0x33,0xFE,0xD7,0x3F,0x23,
  10055.         0x04,0xC4,0x5F,0x8C,0xD8,0x80,0xC1,0x78,
  10056.         0x6B,0xF3,0xF5,0x0D,0x37,0x60,0x5F,0x1D,
  10057.         0x7C,0xC1,0xF0,0x09,0xCC,0xE8,0x2F,0x30,
  10058.         0x4F,0x62,0x3E,0x36,0x90,0x0B,0x1C,0x1D,
  10059.         0x30,0x38,0x00,0x3D,0x60,0xF8,0x87,0x8B,
  10060.         0x77,0x39,0x30,0x5C,0x05,0x7D,0x5C,0xF0,
  10061.         0xB1,0xC7,0x8A,0xEE,0x72,0xE8,0x9B,0x9C,
  10062.         0x61,0xE2,0x18,0xE2,0x0D,0x8C,0xDD,0x25,
  10063.         0xC8,0x61,0x0E,0xEA,0x5D,0xC2,0x73,0xE0,
  10064.         0x67,0x0B,0x9F,0xE0,0x7C,0xF3,0x09,0x71,
  10065.         0xAA,0x8F,0x56,0xEF,0x01,0x3E,0x7A,0xBC,
  10066.         0x77,0xF9,0xEC,0xC4,0x2E,0x02,0x3E,0x72,
  10067.         0x19,0xC7,0xD3,0xF4,0x15,0xD0,0x43,0x36,
  10068.         0xD8,0xAB,0x86,0x4F,0x60,0x3E,0xBA,0xE1,
  10069.         0x8E,0x51,0x9E,0x89,0xA7,0xEF,0x3B,0x08,
  10070.         0x3B,0x92,0x1C,0x75,0xA8,0x6B,0x7A,0x44,
  10071.         0xF9,0xFF,0x9F,0xD0,0x81,0xF8,0xD6,0x06,
  10072.         0xCE,0x68,0xF7,0x0F,0xF4,0x36,0x3D,0x32,
  10073.         0xCC,0xD1,0x00,0xD6,0x25,0x04,0x5C,0x77,
  10074.         0x0C,0x5F,0x42,0x80,0x4F,0xD0,0x4B,0x04,
  10075.         0xFA,0x9A,0xE1,0xD1,0x3D,0x02,0x60,0xAE,
  10076.         0x18,0xEC,0x58,0xE0,0xC3,0x86,0xAF,0x01,
  10077.         0xEC,0x5E,0xE0,0x30,0xF7,0x08,0x50,0x81,
  10078.         0x7A,0x78,0xF0,0xD5,0xDE,0x23,0x40,0x71,
  10079.         0xB2,0xF4,0xA1,0xC1,0x03,0xB5,0xAA,0x33,
  10080.         0x26,0x94,0x23,0x26,0x3F,0x9B,0xF9,0x26,
  10081.         0x81,0xB9,0x5D,0xFA,0x26,0x01,0x37,0xCF,
  10082.         0x2C,0x50,0x49,0x20,0xF4,0xFF,0xBF,0x49,
  10083.         0xC0,0x85,0xE9,0xF2,0x32,0x43,0xE7,0x7F,
  10084.         0xE0,0xBE,0xD5,0x79,0x84,0x3E,0x44,0x30,
  10085.         0x94,0xF7,0x3C,0x9F,0xC2,0xF8,0x19,0xC2,
  10086.         0x07,0x4C,0x76,0xA6,0xE0,0x67,0x4D,0xDC,
  10087.         0x1D,0xC0,0x28,0x6F,0x9E,0x9E,0x00,0x3B,
  10088.         0x7F,0x1A,0xF9,0xDD,0xE0,0x5D,0xC0,0xD3,
  10089.         0xF7,0xBD,0x88,0x9F,0x28,0xC0,0x17,0xEC,
  10090.         0x4E,0x07,0x05,0xFA,0x84,0x3C,0x22,0xA3,
  10091.         0xFA,0x88,0xC0,0x2F,0x49,0x60,0x3C,0x92,
  10092.         0xF8,0x40,0x01,0x84,0xEE,0x05,0xA8,0xD3,
  10093.         0x07,0x47,0x3D,0xE3,0x17,0x54,0x63,0xBE,
  10094.         0x5B,0x3D,0xC2,0x79,0x72,0x98,0xCB,0x01,
  10095.         0x8B,0x73,0x4D,0x02,0xD5,0x71,0x97,0x8F,
  10096.         0x0E,0xEE,0xB5,0x15,0xFB,0xFF,0x27,0x38,
  10097.         0xB8,0x77,0x96,0x77,0x3E,0x43,0x79,0x90,
  10098.         0xE0,0xBB,0xB6,0x82,0xE3,0xAA,0x06,0xE3,
  10099.         0xD8,0xC2,0x2F,0x79,0x80,0x9D,0x61,0x71,
  10100.         0xC1,0x7F,0x0F,0x03,0x51,0x89,0x30,0x28,
  10101.         0x02,0xCB,0xBB,0xB7,0x52,0xF8,0x43,0x06,
  10102.         0xE3,0x4D,0x81,0x4F,0x1A,0x3B,0x6A,0xE0,
  10103.         0xFB,0xFF,0x1F,0x35,0xD8,0x86,0x8A,0xBB,
  10104.         0x29,0x82,0x75,0xAA,0x98,0x21,0xF0,0x60,
  10105.         0x0F,0x00,0x9F,0xAF,0x7C,0x06,0x50,0x14,
  10106.         0x18,0xD4,0xA1,0x1D,0xCE,0x6D,0x18,0x70,
  10107.         0x30,0x62,0xDC,0xA5,0x10,0xEE,0x94,0xDF,
  10108.         0x51,0x62,0x3F,0x97,0xB3,0xE9,0xE2,0xAE,
  10109.         0xE6,0x3E,0x9D,0xB0,0x0B,0x32,0x8C,0xB3,
  10110.         0xC0,0x23,0xC0,0xAB,0x39,0xBF,0x20,0x3F,
  10111.         0x17,0xBF,0x10,0x3C,0x26,0x85,0x78,0x53,
  10112.         0x7A,0x25,0x36,0xC6,0x93,0x71,0x73,0xB7,
  10113.         0x62,0x72,0xDE,0x79,0x41,0x36,0xC6,0xD1,
  10114.         0x44,0x8C,0x72,0x6E,0x0F,0x03,0x91,0x5F,
  10115.         0x90,0x7D,0x3F,0x79,0x21,0x88,0x18,0xCD,
  10116.         0x10,0x41,0x9F,0x97,0x8D,0x15,0x28,0xDE,
  10117.         0x0B,0x32,0x13,0xF8,0x56,0xD0,0xC1,0xC5,
  10118.         0x17,0x64,0xEC,0xFF,0xFF,0x82,0x0C,0x30,
  10119.         0xE2,0x64,0x04,0xF8,0x3C,0x71,0xE0,0xCE,
  10120.         0x35,0x30,0xFE,0xFF,0x97,0x6A,0xD8,0x27,
  10121.         0x1B,0xC0,0xD9,0xD0,0x7D,0xB2,0x01,0xF7,
  10122.         0x68,0xE1,0x1D,0x4D,0x10,0x27,0x1B,0x0A,
  10123.         0xE4,0xE0,0xEB,0xA2,0x70,0x3C,0xF4,0x49,
  10124.         0x84,0x1E,0x9D,0x7C,0x94,0xC4,0x9D,0x19,
  10125.         0x3C,0x91,0x77,0x16,0x8F,0xE2,0x65,0xD0,
  10126.         0xF7,0x82,0x13,0x79,0x7D,0xB0,0x9C,0x63,
  10127.         0x24,0xA8,0x46,0xE2,0xE3,0x03,0xFC,0xEB,
  10128.         0x8B,0x8F,0x91,0xF0,0xF9,0xFC,0xC3,0xF2,
  10129.         0x60,0x0C,0xF9,0xFF,0x7F,0x8A,0xC4,0x80,
  10130.         0x3C,0xBB,0x3C,0x86,0xF0,0x0B,0x24,0xDC,
  10131.         0xD3,0xCC,0x01,0x60,0x64,0x5D,0x1E,0xD1,
  10132.         0x67,0x47,0x8E,0x11,0xD7,0x17,0x45,0x5F,
  10133.         0x81,0x7D,0x10,0x38,0x9F,0xE7,0x44,0xB0,
  10134.         0x8E,0x9A,0x1F,0x6D,0xF8,0xF8,0x39,0xF8,
  10135.         0x5B,0xC1,0x03,0xA5,0x8F,0x45,0x21,0x1E,
  10136.         0x91,0xF8,0x39,0x11,0x5C,0x26,0xCE,0x89,
  10137.         0x40,0xE2,0xD0,0x0B,0xE3,0xB4,0x80,0x1B,
  10138.         0x88,0xCF,0x94,0xD8,0x29,0x9F,0x08,0x3B,
  10139.         0x97,0x60,0x46,0x07,0xAE,0xCB,0xBD,0x47,
  10140.         0x07,0xFE,0x93,0x00,0x1E,0xEB,0xFF,0xFF,
  10141.         0x78,0x07,0xBE,0x93,0xBA,0xEF,0x26,0xBE,
  10142.         0xC8,0xF8,0x50,0xF4,0x7C,0x07,0xF8,0x0F,
  10143.         0x77,0xB8,0x43,0xC5,0x39,0xDF,0x01,0xD2,
  10144.         0xFE,0xFF,0xE7,0x3B,0x60,0x79,0xB6,0x7E,
  10145.         0xBE,0x03,0xBB,0xC8,0xF3,0x1D,0x40,0xAC,
  10146.         0xFF,0xFF,0xF9,0x0E,0xB0,0x73,0x46,0xC3,
  10147.         0x9D,0xEF,0xC0,0x76,0xB4,0x01,0xCC,0x4D,
  10148.         0xE3,0xD1,0x06,0xDC,0xC3,0x85,0x3D,0x0C,
  10149.         0xAE,0xD0,0xA6,0x4F,0x8D,0x46,0xAD,0x1A,
  10150.         0x94,0xA9,0x51,0xE6,0xFF,0xDF,0xA0,0x56,
  10151.         0x9F,0x4A,0x8D,0x19,0xCB,0x0E,0xA5,0x80,
  10152.         0x8F,0x0A,0x8D,0xCD,0xF2,0x28,0x04,0x62,
  10153.         0x31,0xAF,0x06,0x81,0x38,0x2C,0x08,0x8D,
  10154.         0xF4,0xCA,0x11,0x88,0x25,0x3F,0xFB,0x05,
  10155.         0x62,0xB9,0x6F,0x06,0x81,0x38,0xE0,0x1B,
  10156.         0x4C,0xE0,0xE4,0x61,0x25,0x70,0xF2,0x6E,
  10157.         0x10,0x88,0x23,0x83,0x50,0xA1,0x3A,0x40,
  10158.         0x58,0x4C,0x10,0x1A,0xCA,0x07,0x08,0x93,
  10159.         0xFE,0x48,0x10,0x20,0x31,0x02,0xC2,0xC2,
  10160.         0xBD,0xBF,0x04,0x62,0x69,0xEF,0x09,0x81,
  10161.         0x58,0x88,0x15,0x10,0x16,0x17,0x84,0x86,
  10162.         0xD3,0x02,0xC2,0x24,0x99,0x01,0x61,0x81,
  10163.         0x40,0xA8,0x7C,0x35,0x20,0x4C,0xA4,0x1B,
  10164.         0x40,0xBA,0x7A,0x81,0x38,0x88,0x1E,0x10,
  10165.         0x26,0xC3,0x0F,0x08,0x0B,0x0D,0x42,0xA3,
  10166.         0x3D,0x30,0x04,0x48,0x0C,0x81,0xB0,0xF8,
  10167.         0x8E,0x40,0x98,0xF8,0x57,0x91,0x40,0x9C,
  10168.         0xDF,0x12,0xC4,0x4D,0x69,0x88,0x35,0x01,
  10169.         0x31,0x0D,0x9E,0x80,0x98,0x22,0x10,0x01,
  10170.         0x39,0xF6,0xD3,0x43,0x40,0xD6,0x60,0x0A,
  10171.         0x88,0x45,0x07,0x11,0x90,0x85,0xA8,0x02,
  10172.         0x62,0x79,0x5D,0x01,0xB1,0xF0,0x20,0x02,
  10173.         0x72,0xE6,0x97,0x9F,0x80,0xAC,0xE0,0xA5,
  10174.         0xF3,0x10,0xC0,0xDE,0x10,0x81,0x48,0x72,
  10175.         0x10,0x01,0x39,0xB0,0x2F,0x20,0x16,0x1F,
  10176.         0x44,0x40,0xCE,0xFA,0x28,0x14,0x90,0x83,
  10177.         0x83,0x68,0x10,0xE4,0x6B,0x26,0x20,0xA7,
  10178.         0x07,0x11,0x10,0xF9,0x04,0x05,0x21,0x6A,
  10179.         0xBD,0x81,0x30,0x3D,0x8F,0x42,0x0D,0x85,
  10180.         0x80,0x50,0xE5,0xEA,0xCE,0x31,0x2C,0x07,
  10181.         0x08,0xCD,0x05,0x22,0x30,0xAB,0x70,0x07,
  10182.         0xC4,0x54,0x81,0x08,0xC8,0x09,0x80,0xC8,
  10183.         0xFF,0x9F,0x60,0x2A,0x10,0x9A,0x12,0x8C,
  10184.         0xEA,0x92,0x07,0xC4,0x12,0x80,0xD0,0x54,
  10185.         0x20,0x34,0x25,0x88,0x00,0xAD,0xCA,0x1E,
  10186.         0x10,0x53,0x0A,0x42,0x95,0x83,0xD0,0x74,
  10187.         0x20,0x54,0xB6,0xBE,0xC3,0x02,0x05,0x11,
  10188.         0x90,0xA3,0x83,0x50,0xE1,0xFE,0x40,0x98,
  10189.         0xDE,0x97,0x86,0x00,0x9D,0x0E,0x44,0x40,
  10190.         0x4E,0x0C,0x42,0x15,0x7C,0x32,0x82,0x10,
  10191.         0xB1,0x20,0x54,0xC1,0x27,0x23,0x28,0xD1,
  10192.         0xF2,0xB2,0x13,0x90,0xF5,0x81,0x50,0xBD,
  10193.         0x20,0x02,0x73,0x36,0x20,0x9A,0x17,0x84,
  10194.         0xE6,0x07,0xA3,0x5A,0x8D,0x02,0x31,0xFD,
  10195.         0x20,0x34,0x0F,0x88,0xC0,0xAC,0xE0,0xF9,
  10196.         0x71,0xC0,0x0C,0x84,0xAA,0x04,0x11,0x98,
  10197.         0x73,0x01,0xD1,0xAC,0x20,0x34,0x3B,0x18,
  10198.         0xD5,0xFE,0x0F,0xD1,0x00,0x08,0x08,0xCD,
  10199.         0x07,0xA2,0xC3,0x00,0x79,0x96,0x09,0xC8,
  10200.         0x1A,0x41,0xA8,0x66,0x10,0x81,0x39,0x27,
  10201.         0x10,0xCD,0x0E,0x42,0x95,0xFD,0x4D,0x82,
  10202.         0x91,0x8C,0x0F,0xD0,0x40,0x24,0x37,0x08,
  10203.         0xD5,0xF1,0x0C,0x0A,0x46,0x74,0x83,0x08,
  10204.         0xC8,0x59,0x40,0x68,0x36,0x30,0x9A,0x4C,
  10205.         0xED,0x91,0x80,0xBA,0x05,0x61,0xE9,0x41,
  10206.         0x68,0x3A,0xBB,0x83,0xA7,0x20,0x54,0x81,
  10207.         0x5E,0x30,0xA6,0x19,0x44,0x87,0x05,0x02,
  10208.         0x42,0x73,0x81,0x51,0x1D,0xAF,0x96,0x40,
  10209.         0x44,0x1B,0x08,0xD5,0x0A,0xA2,0x81,0x93,
  10210.         0x1F,0x53,0x10,0x92,0x14,0x84,0xFC,0xFF,
  10211.         0x07,0xAA,0xC7,0x9C,0x40,0xAC,0xFA,0x5B,
  10212.         0x25,0x50,0x27,0x01,0xA1,0xC9,0x40,0x74,
  10213.         0x7C,0x20,0x0F,0xB8,0x83,0x64,0x20,0x54,
  10214.         0x29,0x88,0xC0,0xAC,0xF4,0x63,0xA4,0x23,
  10215.         0x05,0x51,0x7D,0xBC,0xA0,0x20,0x34,0xD1,
  10216.         0x3B,0x2C,0x08,0x7B,0xB8,0x69,0xA8,0xE4,
  10217.         0x59,0xA5,0xA1,0x12,0x10,0x9A,0x0D,0x44,
  10218.         0xC7,0x04,0xF2,0xAA,0x79,0x4C,0x60,0x20,
  10219.         0x54,0x2F,0x08,0xCD,0x01,0x42,0x13,0x83,
  10220.         0x08,0xD4,0xA9,0xBF,0x37,0x1A,0x2A,0xF9,
  10221.         0x5B,0x09,0xC4,0xCA,0x5E,0x69,0x02,0xB1,
  10222.         0xDE,0xA7,0x4E,0x20,0xE6,0x1D,0x98,0xA9,
  10223.         0x05,0xA1,0xEA,0x41,0x04,0xE6,0xB4,0x40,
  10224.         0x54,0x81,0x78,0x10,0xA6,0x08,0x44,0x60,
  10225.         0x4E,0x02,0x44,0xD3,0x81,0xD0,0xEC,0x60,
  10226.         0x54,0xE7,0xA3,0x4D,0x40,0xD6,0x0E,0x42,
  10227.         0xB3,0x80,0x08,0xCC,0x59,0x1E,0x69,0x02,
  10228.         0xB1,0x92,0x2F,0x9D,0x0E,0x24,0x04,0x84,
  10229.         0x26,0xD3,0x7F,0x68,0xA1,0x05,0x80,0x99,
  10230.         0x84,0x04,0x20,0x4C,0x16,0x88,0x0E,0x27,
  10231.         0xD6,0x08,0x22,0x40,0xC7,0x01,0xA3,0xD1,
  10232.         0x40,0x68,0x5C,0x40,0x9A,0x1D,0x90,0x2A,
  10233.         0x6D,0x00,0xC6,0x54,0x83,0xD0,0x24,0x20,
  10234.         0x02,0x74,0x2C,0x10,0x01,0x5A,0x74,0x04,
  10235.         0x30,0x16,0x01,0x84,0x46,0x05,0xA1,0xC9,
  10236.         0x2A,0x80,0xB2,0x9C,0x20,0x1A,0x20,0xC9,
  10237.         0x30,0x60,0x0A,0x42,0x33,0x81,0xD0,0x8C,
  10238.         0x20,0x54,0x7C,0x07,0x10,0x16,0x04,0x84,
  10239.         0x86,0x03,0xD1,0x00,0xFE,0xFF,0x8F,0x0C,
  10240.         0x02,0xD1,0x00,0x9C,0x23,0xC4,0x61,0x85,
  10241.         0x82,0xD0,0xF4,0x20,0x34,0x6C,0x09,0x50,
  10242.         0x16,0x1D,0x44,0xC7,0x23,0x92,0x02,0x8C,
  10243.         0x05,0x02,0xA1,0x31,0x41,0x68,0x6C,0x10,
  10244.         0x1A,0x29,0x06,0x28,0x13,0x54,0xE3,0x50,
  10245.         0x44,0x7B,0x80,0x31,0x99,0x20,0x54,0x36,
  10246.         0x88,0xC0,0x1C,0x14,0x88,0x86,0x07,0xA1,
  10247.         0x62,0x82,0x00,0x52,0x10,0x01,0x12,0x20,
  10248.         0x1A,0x1E,0x84,0x8A,0x29,0x32,0x74,0x0A,
  10249.         0x42,0x55,0x24,0x39,0x9A,0x50,0x10,0x1D,
  10250.         0x4D,0x08,0x08,0xCD,0x07,0x46,0x75,0x35,
  10251.         0x39,0x6E,0x50,0x10,0xAA,0x1D,0x84,0x06,
  10252.         0x05,0xA1,0x39,0xA2,0x80,0xB2,0xEC,0x20,
  10253.         0x02,0xB2,0x9E,0x2A,0x87,0x0A,0x0A,0x22,
  10254.         0x30,0xA7,0x02,0xA2,0x49,0x41,0xA8,0x8E,
  10255.         0x2C,0x47,0x0A,0x9A,0x06,0x84,0x25,0x06,
  10256.         0xA1,0xC9,0xDA,0x80,0xB0,0x0C,0x75,0x0E,
  10257.         0x24,0x14,0x84,0xE6,0x04,0xA1,0x4A,0xF2,
  10258.         0x0C,0x8F,0x82,0xE8,0x38,0x42,0x80,0x68,
  10259.         0x7A,0x10,0xAA,0xA6,0xCF,0x00,0x28,0x88,
  10260.         0x06,0x40,0x40,0x68,0x4E,0x30,0xAA,0xA8,
  10261.         0xD1,0xD1,0x84,0x82,0x50,0xDD,0x2F,0x4E,
  10262.         0x81,0xF8,0xFF,0x0F,
  10263.     })  // END MBUF
  10264.  
  10265. } //end DefinitionBlock
  10266.  
  10267.