summaryrefslogtreecommitdiff
path: root/programs/fib_mike.pal
blob: a20a8438dee4603cec91c07989c5cc4fb7f3684b (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
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
	*200
MAIN,	CLA
	TAD (-26)
	DCA FIBN
	DCA FIB0
	IAC
	DCA FIB1
LOOP,	CLA
	TAD FIB0
	JMS PUTN
	CLA
	TAD (012)
	JMS PUTC
	CLA
	TAD FIB0
	TAD FIB1
	DCA FIB2
	TAD FIB1
	DCA FIB0
	TAD FIB2
	DCA FIB1
	ISZ FIBN
	JMP LOOP
EXIT,   HLT
	CLA IAC
	DCA FIB1
	DCA FIB0
        JMP MAIN
PUTN,	0
	JMS ITOA
	CMA IAC
	IAC
	CMA IAC
	DCA 10
PUTNL,	CLA
	TAD I 10
        SPA
        JMP I PUTN
	TAD (60)
	JMS PUTC
	JMP PUTNL
PUTC,	0
	TLS
	TSF
	JMP .-1
	JMP I PUTC
ITOA,	0
	DCA ITOAV
	DCA ITOAD
	DCA ITOAD+1
	DCA ITOAD+2
	DCA ITOAD+3
	TAD (-14)
	DCA ITOAN
ITOAL,	CLL		/ LOOP OVER BINARY INPUT BITS
	TAD ITOAD+3
	JMS ITOA2X
	DCA ITOAD+3
	TAD ITOAD+2
	JMS ITOA2X
	DCA ITOAD+2
	TAD ITOAD+1
	JMS ITOA2X
	DCA ITOAD+1
	TAD ITOAD
	JMS ITOA2X
	DCA ITOAD
	CLL
	TAD ITOAV	/ SHIFT MSB OUT OF INPUT VALUE
	RAL
	DCA ITOAV
	RAL
	TAD ITOAD+3	/ ADD SHIFTED-OUT MSB TO DECIMAL LSD
	DCA ITOAD+3
	ISZ ITOAN
	JMP ITOAL	/ NEXT LOOP ITERATION
	TAD (ITOAD)
	DCA ITOAR
ITOAJ,	TAD I ITOAR
	SZA
	JMP ITOAX
	ISZ ITOAR
	TAD I ITOAR
	SZA
	JMP ITOAX
	ISZ ITOAR
	TAD I ITOAR
	SZA
	JMP ITOAX
	ISZ ITOAR
ITOAX,	CLA
	TAD ITOAR
	JMP I ITOA
ITOA2X,	0
	RAL		/ PUTS 0 IN LINK
	DCA ITOAT
	TAD (-12)
	TAD ITOAT	/ PUTS 1 IN LINK IF WRAPPED
	SMA
	DCA ITOAT
	CLA
	TAD ITOAT
	JMP I ITOA2X
FIB0,	0
FIB1,	1
FIB2,	0
FIBN,	-27
ITOAD,	0		/ OUTPUT DIGITS (MSD FIRST)
	0
	0
	0
	4000		/ OUTPUT SENTINEL
ITOAN,	0		/ INPUT BITS LOOP COUNTER
ITOAR,	0		/ POINTER TO FIRST NONZERO DIGIT
ITOAT,	0		/ SCRATCHPAD FOR ITOA2X
ITOAV,	0		/ VALUE BEING CONVERTED (TEMPORARY)
$