summaryrefslogtreecommitdiffstats
path: root/tests/pointer.awl
blob: c8185f4484e523a9195dc3ca3e467acf11aa7ae1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
ORGANIZATION_BLOCK OB 1
BEGIN
	// Check pointer immediates
	L		P#10.6
	__ASSERT==	__ACCU 1,	DW#16#00000056
	L		P#P 1.1
	__ASSERT==	__ACCU 1,	DW#16#80000009
	L		P#E 2.1
	__ASSERT==	__ACCU 1,	DW#16#81000011
	L		P#A 3.1
	__ASSERT==	__ACCU 1,	DW#16#82000019
	L		P#M 4.1
	__ASSERT==	__ACCU 1,	DW#16#83000021
	L		P#L 5.1
	__ASSERT==	__ACCU 1,	DW#16#86000029


	// Test address register instructions
	L		P#885.3
	LAR1
	L		P#886.2
	LAR2
	__ASSERT==	__ACCU 1,	P#886.2
	__ASSERT==	__ACCU 2,	P#885.3
	__ASSERT==	__AR 1,		P#885.3
	__ASSERT==	__AR 2,		P#886.2
	+AR1		P#1.1
	__ASSERT==	__AR 1,		P#886.4
	+AR2		P#5.1
	__ASSERT==	__AR 2,		P#891.3
	LAR1		P#12.3
	LAR2		P#32.1
	__ASSERT==	__AR 1,		P#12.3
	__ASSERT==	__AR 2,		P#32.1
	L		111
	L		222
	TAR1
	__ASSERT==	__ACCU 1,	P#12.3
	__ASSERT==	__ACCU 2,	222
	TAR2
	__ASSERT==	__ACCU 1,	P#32.1
	__ASSERT==	__ACCU 2,	P#12.3
	TAR1		LD 0
	TAR2		LD 4
	__ASSERT==	LD 0,		P#12.3
	__ASSERT==	LD 4,		P#32.1


	CALL FB 1, DB 1 (
		IN_VAL_0	:= 6666,
		IN_VAL_1	:= 6767,
	)

	CALL FC 1 (
		IN_VAL_0	:= 5555,
		IN_VAL_1	:= 5656,
	)
END_ORGANIZATION_BLOCK


FUNCTION_BLOCK FB 1
	VAR_INPUT
		IN_VAL_0	: INT
		IN_VAL_1	: INT
	END_VAR
BEGIN
	L		P##IN_VAL_0
	__ASSERT==	__ACCU 1,	DW#16#85000000
	L		P##IN_VAL_1
	__ASSERT==	__ACCU 1,	DW#16#85000010
END_FUNCTION_BLOCK


FUNCTION FC 1 : VOID
	VAR_INPUT
		IN_VAL_0	: INT
		IN_VAL_1	: INT
	END_VAR
BEGIN
	L		P##IN_VAL_0
	__ASSERT==	__ACCU 1,	DW#16#85000000 //FIXME should be area 87
	L		P##IN_VAL_1
	__ASSERT==	__ACCU 1,	DW#16#85000010 //FIXME should be area 87
END_FUNCTION


DATA_BLOCK DB 1
	FB 1
BEGIN
	IN_VAL_0	:= 88
	IN_VAL_1	:= 99
END_DATA_BLOCK
bues.ch cgit interface