1/*
2 * Tests originated from namespace/ns1
3 */
4
5/*
6 * Package/Buffer/String/Field/IndexField/BankField/BufferField
7 *
8 * Tests below are here
9 * as specific type arguments passing -
10 * arguments though passed directly to method, not as references,
11 * nevertheless allow access to the elements of original objects.
12 */
13
14Name(z164, 164)
15
16/*
17 *
18 * Read/write access to elements of Package passed to method.
19 *
20 */
21
22/*
23 *
24 * Elements of Package are constant Integer (0xabcd0000)
25 *
26 */
27
28/*
29 * Package is passed by ArgX to method:
30 * - directly
31 */
32Method(in10)
33{
34	Name(ts, "in10")
35	Name(p000, Package() {0xabcd0000, 0xabcd0001, 0xabcd0002})
36	Method(m001, 2)
37	{
38		Store(DerefOf(Index(arg0, 0)), Local0)
39		if (LNotEqual(Local0, 0xabcd0000)) {
40			err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0000)
41		}
42
43		Store(0x11112222, Index(arg0, 0))
44
45		Store(DerefOf(Index(arg0, 0)), Local0)
46		if (LNotEqual(Local0, 0x11112222)) {
47			err(ts, z164, __LINE__, 0, 0, Local0, 0x11112222)
48		}
49	}
50
51	m001(p000, RefOf(p000))
52
53	Store(DerefOf(Index(p000, 0)), Local0)
54	if (LNotEqual(Local0, 0x11112222)) {
55		err(ts, z164, __LINE__, 0, 0, Local0, 0x11112222)
56	}
57
58	Store(DerefOf(Index(p000, 1)), Local0)
59	if (LNotEqual(Local0, 0xabcd0001)) {
60		err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0001)
61	}
62}
63
64/*
65 * Package is passed by ArgX to method:
66 * - by ORef
67 */
68Method(in11)
69{
70	Name(ts, "in11")
71	Name(p000, Package() {0xabcd0000, 0xabcd0001, 0xabcd0002})
72	Method(m001, 2)
73	{
74		Store(DerefOf(arg1), Local7)
75
76		Store(DerefOf(Index(Local7, 1)), Local0)
77		if (LNotEqual(Local0, 0xabcd0001)) {
78			err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0001)
79		}
80
81		Store(0x33334444, Index(Local7, 1))
82
83		Store(DerefOf(Index(Local7, 1)), Local0)
84		if (LNotEqual(Local0, 0x33334444)) {
85			err(ts, z164, __LINE__, 0, 0, Local0, 0x33334444)
86		}
87	}
88
89	m001(p000, RefOf(p000))
90
91	Store(DerefOf(Index(p000, 0)), Local0)
92	if (LNotEqual(Local0, 0xabcd0000)) {
93		err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0000)
94	}
95
96	Store(DerefOf(Index(p000, 1)), Local0)
97	if (LNotEqual(Local0, 0xabcd0001)) {
98		err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0001)
99	}
100}
101
102/*
103 * Package is passed by ArgX to method:
104 * - directly
105 * - by ORef
106 */
107Method(in12)
108{
109	Name(ts, "in12")
110	Name(p000, Package() {0xabcd0000, 0xabcd0001, 0xabcd0002})
111	Method(m001, 2)
112	{
113		Store(0x11112222, Index(arg0, 0))
114
115		Store(DerefOf(Index(arg0, 0)), Local0)
116		if (LNotEqual(Local0, 0x11112222)) {
117			err(ts, z164, __LINE__, 0, 0, Local0, 0x11112222)
118		}
119
120		Store(DerefOf(arg1), Local7)
121		Store(0x33334444, Index(Local7, 1))
122
123		Store(DerefOf(Index(Local7, 1)), Local0)
124		if (LNotEqual(Local0, 0x33334444)) {
125			err(ts, z164, __LINE__, 0, 0, Local0, 0x33334444)
126		}
127	}
128
129	m001(p000, RefOf(p000))
130
131	Store(DerefOf(Index(p000, 0)), Local0)
132	if (LNotEqual(Local0, 0x11112222)) {
133		err(ts, z164, __LINE__, 0, 0, Local0, 0x11112222)
134	}
135
136	Store(DerefOf(Index(p000, 1)), Local0)
137	if (LNotEqual(Local0, 0xabcd0001)) {
138		err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0001)
139	}
140}
141
142/*
143 * Package is given directly by name:
144 * - do ORef and pass to LocalX
145 * - do DerefOf and pass to LocalX
146 */
147Method(in13)
148{
149	Name(ts, "in13")
150	Name(p000, Package() {0xabcd0000, 0xabcd0001, 0xabcd0002})
151	Method(m001, 2)
152	{
153		Store(RefOf(p000), Local6)
154		Store(DerefOf(Local6), Local7)
155
156		Store(DerefOf(Index(Local7, 1)), Local0)
157		if (LNotEqual(Local0, 0xabcd0001)) {
158			err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0001)
159		}
160
161		Store(0x33334444, Index(Local7, 1))
162
163		Store(DerefOf(Index(Local7, 1)), Local0)
164		if (LNotEqual(Local0, 0x33334444)) {
165			err(ts, z164, __LINE__, 0, 0, Local0, 0x33334444)
166		}
167	}
168
169	m001(p000, RefOf(p000))
170
171	Store(DerefOf(Index(p000, 0)), Local0)
172	if (LNotEqual(Local0, 0xabcd0000)) {
173		err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0000)
174	}
175	Store(DerefOf(Index(p000, 1)), Local0)
176	if (LNotEqual(Local0, 0xabcd0001)) {
177		err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0001)
178	}
179	Store(DerefOf(Index(p000, 2)), Local0)
180	if (LNotEqual(Local0, 0xabcd0002)) {
181		err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0002)
182	}
183}
184
185/*
186 *
187 * Elements of Package are Named Integer (i000)
188 *
189 */
190
191/*
192 * Package is passed by ArgX to method
193 *
194 * fail
195 *
196 * Note:
197 *   Named element of Package is simply not implemented by MS,
198 *   i000 in Package(){i000} is, on MS, the same as Package(){"i000"}.
199 */
200Method(in14)
201{
202	Name(ts, "in14")
203	Name(i000, 0xabcd0000)
204	Name(i001, 0xabcd0001)
205	Name(i002, 0xabcd0002)
206
207	Name(ii00, 0x11112222)
208
209	Name(p000, Package() {i000, i001, i002, "i000"})
210	Method(m001, 2)
211	{
212		Store(DerefOf(Index(arg0, 0)), Local0)
213		if (LNotEqual(Local0, 0xabcd0000)) {
214			err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0000)
215		}
216		Store(DerefOf(Index(arg0, 1)), Local0)
217		if (LNotEqual(Local0, 0xabcd0001)) {
218			err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0001)
219		}
220		Store(DerefOf(Index(arg0, 2)), Local0)
221		if (LNotEqual(Local0, 0xabcd0002)) {
222			err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0002)
223		}
224		Store(DerefOf(Index(arg0, 3)), Local0)
225		if (LNotEqual(Local0, "i000")) {
226			err(ts, z164, __LINE__, 0, 0, Local0, "i000")
227		}
228
229		Store(ii00, Index(arg0, 0))
230
231		Store(DerefOf(Index(arg0, 0)), Local0)
232		if (LNotEqual(Local0, 0x11112222)) {
233			err(ts, z164, __LINE__, 0, 0, Local0, 0x11112222)
234		}
235	}
236
237	m001(p000, RefOf(p000))
238
239	Store(DerefOf(Index(p000, 0)), Local0)
240	if (LNotEqual(Local0, 0x11112222)) {
241		err(ts, z164, __LINE__, 0, 0, Local0, 0x11112222)
242	}
243
244	Store(DerefOf(Index(p000, 1)), Local0)
245	if (LNotEqual(Local0, 0xabcd0001)) {
246		err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0001)
247	}
248
249	Store(DerefOf(Index(p000, 2)), Local0)
250	if (LNotEqual(Local0, 0xabcd0002)) {
251		err(ts, z164, __LINE__, 0, 0, Local0, 0xabcd0002)
252	}
253
254	Store(DerefOf(Index(p000, 3)), Local0)
255	if (LNotEqual(Local0, "i000")) {
256		err(ts, z164, __LINE__, 0, 0, Local0, "i000")
257	}
258}
259
260/*
261 * Package is used directly by Name
262 *
263 * Example to show behaviour of MS for Package(){i000}
264 *
265 * Note:
266 *   Named element of Package is simply not implemented by MS,
267 *   i000 in Package(){i000} is, on MS, the same as Package(){"i000"}.
268 */
269Method(in15)
270{
271	Name(ts, "in15")
272	Name(i000, 0xabcd0000)
273	Name(i001, 0xabcd0001)
274	Name(i002, 0xabcd0002)
275
276	Name(ii00, 0x11112222)
277
278	Name(p000, Package() {i000, i001, i002, "i000"})
279
280	Store(DerefOf(Index(p000, 0)), Local0)
281	OUTP(Local0)
282	Store(DerefOf(Index(p000, 1)), Local0)
283	OUTP(Local0)
284	Store(DerefOf(Index(p000, 2)), Local0)
285	OUTP(Local0)
286	Store(DerefOf(Index(p000, 3)), Local0)
287	OUTP(Local0)
288
289	Store(ii00, Index(p000, 1))
290
291	OUTP("After re-write 1-th element:")
292
293	Store(DerefOf(Index(p000, 0)), Local0)
294	OUTP(Local0)
295	Store(DerefOf(Index(p000, 1)), Local0)
296	OUTP(Local0)
297	Store(DerefOf(Index(p000, 2)), Local0)
298	OUTP(Local0)
299	Store(DerefOf(Index(p000, 3)), Local0)
300	OUTP(Local0)
301}
302
303/*
304 * Buffer
305 */
306
307Method(in16)
308{
309	Name(ts, "in16")
310	Name(b000, Buffer() {0x10, 0x11, 0x12})
311	Method(m001, 2)
312	{
313		// arg0 - b000
314		Store(DerefOf(Index(arg0, 0)), Local0)
315		if (LNotEqual(Local0, 0x10)) {
316			err(ts, z164, __LINE__, 0, 0, Local0, 0x10)
317		}
318
319		Store(0x67, Index(arg0, 0))
320
321		Store(DerefOf(Index(arg0, 0)), Local0)
322		if (LNotEqual(Local0, 0x67)) {
323			err(ts, z164, __LINE__, 0, 0, Local0, 0x67)
324		}
325
326		// arg1 - RefOf(b000)
327
328		Store(DerefOf(arg1), Local7)
329		Store(0x55, Index(Local7, 1))
330
331		Store(DerefOf(Index(Local7, 1)), Local0)
332		if (LNotEqual(Local0, 0x55)) {
333			err(ts, z164, __LINE__, 0, 0, Local0, 0x55)
334		}
335	}
336
337	m001(b000, RefOf(b000))
338
339	Store(DerefOf(Index(b000, 0)), Local0)
340	if (LNotEqual(Local0, 0x67)) {
341		err(ts, z164, __LINE__, 0, 0, Local0, 0x67)
342	}
343
344	Store(DerefOf(Index(b000, 1)), Local0)
345	if (LNotEqual(Local0, 0x11)) {
346		err(ts, z164, __LINE__, 0, 0, Local0, 0x11)
347	}
348
349	Store(DerefOf(Index(b000, 2)), Local0)
350	if (LNotEqual(Local0, 0x12)) {
351		err(ts, z164, __LINE__, 0, 0, Local0, 0x12)
352	}
353}
354
355/*
356 * Element of Package instead of i000 (in in02)
357 *
358 * Recursive call to m001
359 */
360Method(in17)
361{
362	Name(ts, "in17")
363	Name(i001, 0)
364	Name(pp00, Package() {0x11111111, 0x00100000, 0x22223333})
365
366	Method(m001)
367	{
368		/*
369		 * Because of the stack overflow issues on MS the number
370		 * of repetitions was changed from 100 to 11 here.
371		 */
372		if (LLess(i001, 11)) {
373
374			Store(DerefOf(Index(pp00, 1)), Local0)
375			Increment(Local0)
376			Store(Local0, Index(pp00, 1))
377			Increment(i001)
378			Add(DerefOf(Index(pp00, 1)), m001(), Local0)
379			Return (Local0)
380		}
381		Return (0)
382	}
383	Store(Add(DerefOf(Index(pp00, 1)), m001()), Local0)
384
385	if (LNotEqual(Local0, 0x00c00042)) {
386		err(ts, z164, __LINE__, 0, 0, Local0, 0x00c00042)
387	}
388
389	Store(DerefOf(Index(pp00, 1)), Local0)
390
391	if (LNotEqual(Local0, 0x0010000b)) {
392		err(ts, z164, __LINE__, 0, 0, Local0, 0x0010000b)
393	}
394
395	CH03(ts, z164, 0x00c, __LINE__, 0)
396}
397
398/*
399 * Buffer Field instead of i000 (in in01)
400 *
401 * fail
402 *
403 * Note: Buffer Field in expressions is not supported by MS,
404 *       see msfail.asl
405 */
406
407/*
408 * Field instead of i000 (in in01)
409 */
410Method(in18, 1)
411{
412	Name(ts, "in18")
413	Name(i001, 0)
414	OperationRegion(r000, SystemMemory, 0x100, 0x100)
415	Field(r000, ByteAcc, NoLock, Preserve) { f000,32, f001,32 }
416
417	CH03(ts, z164, 0x011, __LINE__, 0)
418
419	Store(arg0, i001)
420
421	Method(m001)
422	{
423		Method(m002)
424		{
425			Method(m003)
426			{
427				Method(m004)
428				{
429					Method(m005)
430					{
431						Method(m006)
432						{
433							Method(m007)
434							{
435								Method(m008)
436								{
437									if (i001)
438									{
439										Store(0x11223344, f001)
440									}
441									Return (0)
442								}
443								Store(0x80000000, f001)
444								Return (Add(f001, m008()))
445							}
446							Store(0x07000000, f001)
447							Return (Add(f001, m007()))
448						}
449						Store(0x00600000, f001)
450						Return (Add(f001, m006()))
451					}
452					Store(0x00050000, f001)
453					Return (Add(f001, m005()))
454				}
455				Store(0x00004000, f001)
456				Return (Add(f001, m004()))
457			}
458			Store(0x00000300, f001)
459			Return (Add(f001, m003()))
460		}
461		Store(0x00000020, f001)
462		Return (Add(f001, m002()))
463	}
464
465	Store(0x00000001, f001)
466
467	Store(Add(f001, m001()), Local0)
468
469	if (LNotEqual(Local0, 0x87654321)) {
470		err(ts, z164, __LINE__, 0, 0, Local0, 0x87654321)
471	}
472
473	if (arg0) {
474		Store(0x11223344, Local1)
475	} else {
476		Store(0x80000000, Local1)
477	}
478
479	if (LNotEqual(f001, Local1)) {
480		err(ts, z164, __LINE__, 0, 0, f001, Local1)
481	}
482
483	CH03(ts, z164, 0x014, __LINE__, 0)
484}
485
486/*
487 * Bank Field instead of i000 (in in01)
488 *
489 * (is this test correct?)
490 */
491Method(in19, 1)
492{
493	Name(ts, "in19")
494	Name(i001, 0)
495	OperationRegion(r000, SystemMemory, 0x100, 0x100)
496	Field(r000, ByteAcc, NoLock, Preserve) { f000,32, f001,32 }
497	BankField(r000, f001, 0, ByteAcc, NoLock, Preserve) { bnk0, 32 }
498
499	CH03(ts, z164, 0x015, __LINE__, 0)
500
501	Store(arg0, i001)
502
503	Method(m001)
504	{
505		Method(m002)
506		{
507			Method(m003)
508			{
509				Method(m004)
510				{
511					Method(m005)
512					{
513						Method(m006)
514						{
515							Method(m007)
516							{
517								Method(m008)
518								{
519									if (i001)
520									{
521										Store(0x11223344, bnk0)
522									}
523									Return (0)
524								}
525								Store(0x80000000, bnk0)
526								Return (Add(bnk0, m008()))
527							}
528							Store(0x07000000, bnk0)
529							Return (Add(bnk0, m007()))
530						}
531						Store(0x00600000, bnk0)
532						Return (Add(bnk0, m006()))
533					}
534					Store(0x00050000, bnk0)
535					Return (Add(bnk0, m005()))
536				}
537				Store(0x00004000, bnk0)
538				Return (Add(bnk0, m004()))
539			}
540			Store(0x00000300, bnk0)
541			Return (Add(bnk0, m003()))
542		}
543		Store(0x00000020, bnk0)
544		Return (Add(bnk0, m002()))
545	}
546
547	Store(0x00000001, bnk0)
548
549	Store(Add(bnk0, m001()), Local0)
550
551	if (LNotEqual(Local0, 0x87654321)) {
552		err(ts, z164, __LINE__, 0, 0, Local0, 0x87654321)
553	}
554
555	if (arg0) {
556		Store(0x11223344, Local1)
557	} else {
558		Store(0x80000000, Local1)
559	}
560
561	if (LNotEqual(bnk0, Local1)) {
562		err(ts, z164, __LINE__, 0, 0, bnk0, Local1)
563	}
564
565	CH03(ts, z164, 0x018, __LINE__, 0)
566}
567
568/*
569 * Index Field instead of i000 (in in01)
570 *
571 * (is this test correct?)
572 */
573Method(in1a, 1)
574{
575	Name(ts, "in1a")
576	Name(i001, 0)
577	OperationRegion(r000, SystemMemory, 0x100, 0x100)
578	Field(r000, ByteAcc, NoLock, Preserve) { f000,32, f001,32 }
579	IndexField(f000, f001, ByteAcc, NoLock, Preserve) { if00, 32 }
580
581	CH03(ts, z164, 0x019, __LINE__, 0)
582
583	Store(arg0, i001)
584
585	Method(m001)
586	{
587		Method(m002)
588		{
589			Method(m003)
590			{
591				Method(m004)
592				{
593					Method(m005)
594					{
595						Method(m006)
596						{
597							Method(m007)
598							{
599								Method(m008)
600								{
601									if (i001)
602									{
603										Store(0x11223344, if00)
604									}
605									Return (0)
606								}
607								Store(0x80000000, if00)
608								Return (Add(if00, m008()))
609							}
610							Store(0x07000000, if00)
611							Return (Add(if00, m007()))
612						}
613						Store(0x00600000, if00)
614						Return (Add(if00, m006()))
615					}
616					Store(0x00050000, if00)
617					Return (Add(if00, m005()))
618				}
619				Store(0x00004000, if00)
620				Return (Add(if00, m004()))
621			}
622			Store(0x00000300, if00)
623			Return (Add(if00, m003()))
624		}
625		Store(0x00000020, if00)
626		Return (Add(if00, m002()))
627	}
628
629	Store(0x00000001, if00)
630
631	Store(Add(if00, m001()), Local0)
632
633	/*
634	 * The benchmark values for arg0==0 below
635	 * are how MS actually works.
636	 */
637
638	if (LNotEqual(Local0, 0x87878787)) {
639		err(ts, z164, __LINE__, 0, 0, Local0, 0x87878787)
640	}
641
642	if (arg0) {
643		Store(0x11223344, Local1)
644	} else {
645		Store(0x80808080, Local1)
646	}
647
648	if (LNotEqual(if00, Local1)) {
649		err(ts, z164, __LINE__, 0, 0, if00, Local1)
650	}
651
652	CH03(ts, z164, 0x01c, __LINE__, 0)
653}
654
655/*
656 * Element of Buffer instead of i000 (in in01)
657 */
658Method(in1b, 1)
659{
660	Name(ts, "in1b")
661	Name(i001, 0)
662	Name(b000, Buffer() {0x11, 0x01, 0x22})
663
664	CH03(ts, z164, 0x01d, __LINE__, 0)
665
666	Store(arg0, i001)
667
668	Method(m001)
669	{
670		Method(m002)
671		{
672			Method(m003)
673			{
674				Method(m004)
675				{
676					Method(m005)
677					{
678						Method(m006)
679						{
680							Method(m007)
681							{
682								Return (0)
683							}
684							Store(0x07, Index(b000, 1))
685							Return (Add(DerefOf(Index(b000, 1)), m007()))
686						}
687						Store(0x06, Index(b000, 1))
688						Return (Add(DerefOf(Index(b000, 1)), m006()))
689					}
690					Store(0x05, Index(b000, 1))
691					Return (Add(DerefOf(Index(b000, 1)), m005()))
692				}
693				Store(0x04, Index(b000, 1))
694				Return (Add(DerefOf(Index(b000, 1)), m004()))
695			}
696			Store(0x03, Index(b000, 1))
697			Return (Add(DerefOf(Index(b000, 1)), m003()))
698		}
699		Store(0x02, Index(b000, 1))
700		Return (Add(DerefOf(Index(b000, 1)), m002()))
701	}
702	Store(Add(DerefOf(Index(b000, 1)), m001()), Local0)
703
704	if (LNotEqual(Local0, 0x1c)) {
705		err(ts, z164, __LINE__, 0, 0, Local0, 0x1c)
706	}
707
708	Store(DerefOf(Index(b000, 1)), Local0)
709
710	if (arg0) {
711		Store(0xff, Local1)
712	} else {
713		Store(0x07, Local1)
714	}
715
716	if (LNotEqual(Local0, Local1)) {
717		err(ts, z164, __LINE__, 0, 0, Local0, Local1)
718	}
719
720	CH03(ts, z164, 0x020, __LINE__, 0)
721}
722
723/*
724 * Element of Buffer instead of i000 (in in01)
725 *
726 * in1b+:
727 *   added argument to methods and b000 passed without any use of that
728 *   parameter inside the methods
729 */
730Method(in1c, 1)
731{
732	Name(ts, "in1c")
733	Name(i001, 0)
734	Name(b000, Buffer() {0x11, 0x01, 0x22})
735
736	CH03(ts, z164, 0x01d, __LINE__, 0)
737
738	Store(arg0, i001)
739
740	Method(m000, 1)
741	{
742
743	Method(m001, 1)
744	{
745		Method(m002, 1)
746		{
747			Method(m003, 1)
748			{
749				Method(m004, 1)
750				{
751					Method(m005, 1)
752					{
753						Method(m006, 1)
754						{
755							Method(m007, 1)
756							{
757								Return (0)
758							}
759							Store(0x07, Index(b000, 1))
760							Return (Add(DerefOf(Index(b000, 1)), m007(b000)))
761						}
762						Store(0x06, Index(b000, 1))
763						Return (Add(DerefOf(Index(b000, 1)), m006(b000)))
764					}
765					Store(0x05, Index(b000, 1))
766					Return (Add(DerefOf(Index(b000, 1)), m005(b000)))
767				}
768				Store(0x04, Index(b000, 1))
769				Return (Add(DerefOf(Index(b000, 1)), m004(b000)))
770			}
771			Store(0x03, Index(b000, 1))
772			Return (Add(DerefOf(Index(b000, 1)), m003(b000)))
773		}
774		Store(0x02, Index(b000, 1))
775		Return (Add(DerefOf(Index(b000, 1)), m002(b000)))
776	}
777	Store(Add(DerefOf(Index(b000, 1)), m001(b000)), Local0)
778	Return (Local0)
779	}
780
781	CH03(ts, z164, 0x000, __LINE__, 0)
782
783	Store(m000(b000), Local0)
784
785	if (LNotEqual(Local0, 0x1c)) {
786		err(ts, z164, __LINE__, 0, 0, Local0, 0x1c)
787	}
788
789	Store(DerefOf(Index(b000, 1)), Local0)
790
791	if (arg0) {
792		Store(0xff, Local1)
793	} else {
794		Store(0x07, Local1)
795	}
796
797	if (LNotEqual(Local0, Local1)) {
798		err(ts, z164, __LINE__, 0, 0, Local0, Local1)
799	}
800
801	CH03(ts, z164, 0x020, __LINE__, 0)
802}
803
804
805/*
806 * Element of Package instead of i000 (in in01)
807 */
808Method(in1d)
809{
810	Name(ts, "in1d")
811	Name(i001, 0)
812	Name(p000, Package() {1,2,3,4})
813	Name(pp00, Package() {0x11111111, 0x00000001, 0x22223333})
814
815	CH03(ts, z164, 0x006, __LINE__, 0)
816
817	Method(m001)
818	{
819		Method(m002)
820		{
821			Method(m003)
822			{
823				Method(m004)
824				{
825					Method(m005)
826					{
827						Method(m006)
828						{
829							Method(m007)
830							{
831								Return (0)
832							}
833							Store(0x07000000, Index(pp00, 1))
834							Return (Add(DerefOf(Index(pp00, 1)), m007()))
835						}
836						Store(0x00600000, Index(pp00, 1))
837						Return (Add(DerefOf(Index(pp00, 1)), m006()))
838					}
839					Store(0x00050000, Index(pp00, 1))
840					Return (Add(DerefOf(Index(pp00, 1)), m005()))
841				}
842				Store(0x00004000, Index(pp00, 1))
843				Return (Add(DerefOf(Index(pp00, 1)), m004()))
844			}
845			Store(0x00000300, Index(pp00, 1))
846			Return (Add(DerefOf(Index(pp00, 1)), m003()))
847		}
848		Store(0x00000020, Index(pp00, 1))
849		Return (Add(DerefOf(Index(pp00, 1)), m002()))
850	}
851	Store(Add(DerefOf(Index(pp00, 1)), m001()), Local0)
852
853	if (LNotEqual(Local0, 0x07654321)) {
854		err(ts, z164, __LINE__, 0, 0, Local0, 0x07654321)
855	}
856
857	Store(DerefOf(Index(pp00, 1)), Local0)
858
859	if (LNotEqual(Local0, 0x07000000)) {
860		err(ts, z164, __LINE__, 0, 0, Local0, 0x07000000)
861	}
862
863	CH03(ts, z164, 0x009, __LINE__, 0)
864}
865
866/*
867 * Element of Package instead of i000 (in in01)
868 *
869 * in1d+:
870 *   added argument to methods and b000 passed without any use of that
871 *   parameter inside the methods
872 */
873Method(in1e)
874{
875	Name(ts, "in1e")
876	Name(i001, 0)
877	Name(p000, Package() {1,2,3,4})
878	Name(pp00, Package() {0x11111111, 0x00000001, 0x22223333})
879
880	CH03(ts, z164, 0x006, __LINE__, 0)
881
882	Method(m000, 1)
883	{
884
885	Method(m001, 1)
886	{
887		Method(m002, 1)
888		{
889			Method(m003, 1)
890			{
891				Method(m004, 1)
892				{
893					Method(m005, 1)
894					{
895						Method(m006, 1)
896						{
897							Method(m007, 1)
898							{
899								Return (0)
900							}
901							Store(0x07000000, Index(pp00, 1))
902							Return (Add(DerefOf(Index(pp00, 1)), m007(pp00)))
903						}
904						Store(0x00600000, Index(pp00, 1))
905						Return (Add(DerefOf(Index(pp00, 1)), m006(pp00)))
906					}
907					Store(0x00050000, Index(pp00, 1))
908					Return (Add(DerefOf(Index(pp00, 1)), m005(pp00)))
909				}
910				Store(0x00004000, Index(pp00, 1))
911				Return (Add(DerefOf(Index(pp00, 1)), m004(pp00)))
912			}
913			Store(0x00000300, Index(pp00, 1))
914			Return (Add(DerefOf(Index(pp00, 1)), m003(pp00)))
915		}
916		Store(0x00000020, Index(pp00, 1))
917		Return (Add(DerefOf(Index(pp00, 1)), m002(pp00)))
918	}
919	Store(Add(DerefOf(Index(pp00, 1)), m001(pp00)), Local0)
920	Return (Local0)
921	}
922
923	CH03(ts, z164, 0x000, __LINE__, 0)
924
925	Store(m000(pp00), Local0)
926
927	if (LNotEqual(Local0, 0x07654321)) {
928		err(ts, z164, __LINE__, 0, 0, Local0, 0x07654321)
929	}
930
931	Store(DerefOf(Index(pp00, 1)), Local0)
932
933	if (LNotEqual(Local0, 0x07000000)) {
934		err(ts, z164, __LINE__, 0, 0, Local0, 0x07000000)
935	}
936
937	CH03(ts, z164, 0x009, __LINE__, 0)
938}
939
940Method(ini1)
941{
942	SRMT("in10")
943	in10()
944	SRMT("in11")
945	in11()
946	SRMT("in12")
947	in12()
948	SRMT("in13")
949	in13()
950	SRMT("in14")
951	if (chk0) {
952		in14()
953	} else {
954		BLCK()
955	}
956	SRMT("in15")
957	if (chk0) {
958		in15()
959	} else {
960		BLCK()
961	}
962	SRMT("in16")
963	in16()
964	SRMT("in17")
965	in17()
966	SRMT("in18-0")
967	in18(0)
968	SRMT("in19-0")
969	in19(0)
970	SRMT("in1a-0")
971	in1a(0)
972	SRMT("in1b-0")
973	in1b(0)
974	SRMT("in1c-0")
975	in1c(0)
976	SRMT("in1d")
977	in1d()
978	SRMT("in1e")
979	if (fix0) {
980		in1e()
981	} else {
982		BLCK()
983	}
984}
985