summaryrefslogtreecommitdiff
path: root/programs/echo_int.pal
blob: 62886ffe8118c2979e5eb05dc493c7b3f2db8a56 (plain) (blame)
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
/ vim: set sw=8 noexpandtab :

*000

INTRET,	0
	JMP GOTINT

*010

HEAD,	7777		/ because preincrement
TAIL,	7777

*200

	CLA IAC
	KIE
	ION
	CLA
LOOP,	TAD TAIL
	CMA IAC
	TAD HEAD
	SNA
	JMP LOOP
	CLA
	CDF 0010
	TAD I TAIL
	CDF 0000
	IOF		/ critical section
	TLS
BUSY,	TSF		/ FIXME: remove busy wait inside IOF (see echo_optimal.pal)
	JMP BUSY
	TCF
	ION
	CLA		/ end critical section
	JMP LOOP

*400

SAVEA,	0
SAVEF,	0

GOTINT,	DCA SAVEA
	GTF
	AND (7577)
	DCA SAVEF
	KSF
	JMP RETINT
	KRB
	CDF 0010
	DCA I HEAD
	CDF 0000
RETINT,	CLA
	TAD SAVEF
	RTF
	CLA
	TAD SAVEA
	ION
	JMP I INTRET