-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAPP_Power_Of_2.cmem
More file actions
185 lines (159 loc) · 8.46 KB
/
Copy pathAPP_Power_Of_2.cmem
File metadata and controls
185 lines (159 loc) · 8.46 KB
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
//==============================================================================
//
// Power of 2 calculator
//
// Usage: Enter a number between 0 and 9999 when requested. The program then
// calculates and prints 2^n. The sequence - ask, calculate, print -
// repeats.
//
// Algorithm: Start with the number 1 and keep adding it to itself n times.
//
// The IBM 1620 can natively perform arithmetic on variable-length
// decimal numbers that are only limited in length to memory
// capacity. But there is a performance penalty (80usec per digit)
// for using numbers longer than they need to be. So, this program
// starts with a 3-digit field for the sum and extends its length
// dynamically, only as needed.
//
// 2^9999 takes 20min. 36sec. to compute and 5min. 2 sec. to print
// the 3010 digit result.
//
// Program Switches:
// 1 - Don't ask to input n next time. Reuse the same, or incremented, n.
// 2 - Add one to n each new power calculation.
// 3 - Calculate, but don't print the power.
// 4 - Throw away the input or abort the calculation.
//
//==============================================================================
// Startup
00000: 04 09 00 00 04 00 02 00 00 00 00 00 // B START
00012: 00 00 00 00 00 00 00 00 00 00 00 00
00024: 00 00 00 00 00 00 00 00 00 00 00 00
00036: 00 00 00 00 00 00 00 00 00 00 00 00
00048: 00 00 00 00 00 00 00 00 00 00 00 00
00060: 00 00 00 00 00 00 00 00 00 00 00 00
00072: 00 00 00 00 00 00 00 00 00 00 00 00
00084: 00 00 00 00 00 00 00 00 00 00 00 00
00096: 00 00 00 00
// Multiply table
00100: 00 00 00 00 00 00 00 00 00 00 00 00 01 00 02 00 03 00 04 00
00120: 00 00 02 00 04 00 06 00 08 00 00 00 03 00 06 00 09 00 02 01
00140: 00 00 04 00 08 00 02 01 06 01 00 00 05 00 00 01 05 01 00 02
00160: 00 00 06 00 02 01 08 01 04 02 00 00 07 00 04 01 01 02 08 02
00180: 00 00 08 00 06 01 04 02 02 03 00 00 09 00 08 01 07 02 06 03
00200: 00 00 00 00 00 00 00 00 00 00 05 00 06 00 07 00 08 00 09 00
00220: 00 01 02 01 04 01 06 01 08 01 05 01 08 01 01 02 04 02 07 02
00240: 00 02 04 02 08 02 02 03 06 03 05 02 00 03 05 03 00 04 05 04
00260: 00 03 06 03 02 04 08 04 04 05 05 03 02 04 09 04 06 05 03 06
00280: 00 04 08 04 06 05 04 06 02 07 05 04 04 05 03 06 02 07 01 08
// Add table
00300: 00 01 02 03 04 05 06 07 08 09 01 02 03 04 05 06 07 08 09 10
00320: 02 03 04 05 06 07 08 09 10 11 03 04 05 06 07 08 09 10 11 12
00340: 04 05 06 07 08 09 10 11 12 13 05 06 07 08 09 10 11 12 13 14
00360: 06 07 08 09 10 11 12 13 14 15 07 08 09 10 11 12 13 14 15 16
00380: 08 09 10 11 12 13 14 15 16 17 09 10 11 12 13 14 15 16 17 18
// Record mark
00400: 0A 00
// Program
00402: 03 04 00 00 00 00 00 00 00 01 00 02 // START RCTY
00414: 03 04 00 00 00 00 00 00 00 01 00 02 // RCTY
00426: 03 04 00 00 00 00 00 00 00 01 00 02 // RCTY
00438: 03 04 00 00 00 00 00 00 00 01 00 02 // RCTY
00450: 03 04 00 00 00 00 00 00 00 01 00 02 // RCTY
00462: 03 09 00 02 01 00 01 00 00 01 00 00 // WATY STR1
00474: 03 04 00 00 00 00 00 00 00 01 00 02 // LAB1 RCTY
00486: 03 04 00 00 00 00 00 00 00 01 00 02 // RCTY
00498: 03 09 00 02 02 00 01 00 00 01 00 00 // WATY STR2
00510: 01 06 00 02 00 01 04 10 00 00 00 00 // TFM EXP,0
00522: 02 06 00 02 07 00 05 00 02 00 03 05 // TF INPUT,INIT
00534: 03 06 00 02 07 00 01 00 00 01 00 00 // RNTY INPUT-4
00546: 03 04 00 00 00 00 00 00 00 01 00 02 // RCTY
00558: 04 06 00 00 04 07 04 00 00 04 00 00 // BC4 LAB1
00570: 04 05 00 00 06 03 00 00 02 07 00 05 // BNR LAB2,INPUT
00582: 04 05 00 00 06 05 04 00 02 07 00 04 // BNR LAB3,INPUT-1
00594: 04 05 00 00 06 07 08 00 02 07 00 03 // BNR LAB4,INPUT-2
00606: 04 05 00 00 07 00 02 00 02 07 00 02 // BNR LAB5,INPUT-3
00618: 04 05 00 00 07 02 06 00 02 07 00 01 // BNR LAB6,INPUT-4
00630: 03 09 00 02 03 00 01 00 00 01 00 00 // LAB2 WATY STR3
00642: 04 09 00 00 04 07 04 00 00 00 00 00 // B LAB1
00654: 02 01 00 02 00 01 04 00 02 07 00 04 // LAB3 A EXP,INPUT-1
00666: 04 09 00 00 07 03 08 00 00 00 00 00 // B LAB7
00678: 02 01 00 02 00 01 04 00 02 07 00 03 // LAB4 A EXP,INPUT-2
00690: 04 09 00 00 07 03 08 00 00 00 00 00 // B LAB7
00702: 02 01 00 02 00 01 04 00 02 07 00 02 // LAB5 A EXP,INPUT-3
00714: 04 09 00 00 07 03 08 00 00 00 00 00 // B LAB7
00726: 02 01 00 02 00 01 04 00 02 07 00 01 // LAB6 A EXP,INPUT-4
00738: 02 06 00 02 00 02 04 00 02 00 01 04 // LAB7 TF CTR,EXP
00750: 01 06 00 09 09 09 09 00 00 10 00 01 // TFM POWER,1,9
00762: 01 05 01 00 00 00 00 00 00 00 00 0A // TDM POWER+1,#
00774: 01 06 00 02 00 00 04 10 09 09 09 08 // TFM PTR,POWER-1
00786: 01 04 00 02 00 02 04 10 00 00 00 00 // LAB8 CM CTR,0,10
00798: 04 06 00 00 09 03 00 00 01 02 00 00 // BE LAB11
00810: 02 01 00 09 09 09 09 00 09 09 09 09 // A POWER,POWER
00822: 04 06 00 01 02 00 06 00 00 04 00 00 // BC4 LAB18
00834: 02 06 00 00 08 05 07 00 02 00 00 04 // TF *+23,PTR
00846: 04 03 00 00 08 08 02 00 00 00 00 00 // BD LAB10,***
00858: 01 02 00 02 00 02 04 00 00 00 10 01 // LAB9 SM CTR,1,10
00870: 04 09 00 00 07 08 06 00 00 00 00 00 // B LAB8
00882: 01 02 00 02 00 00 04 00 00 00 10 01 // LAB10 SM PTR,1,10
00894: 02 06 00 00 09 01 02 00 02 00 00 04 // TF *+18,PTR
00906: 01 06 00 00 00 00 00 00 00 00 10 00 // TFM ***,0,10
00918: 04 09 00 00 08 05 08 00 00 00 00 00 // B LAB9
00930: 04 06 00 01 01 04 06 00 00 03 00 00 // LAB11 BC3 LAB16
00942: 01 01 00 02 00 00 04 00 00 00 10 01 // AM PTR,1,10
00954: 03 09 00 02 04 00 01 00 00 01 00 00 // WATY STR4
00966: 04 03 00 01 00 07 04 00 02 00 01 01 // BD LAB14,EXP-3
00978: 04 03 00 01 00 05 00 00 02 00 01 02 // BD LAB13,EXP-2
00990: 04 03 00 01 00 02 06 00 02 00 01 03 // BD LAB12,EXP-1
01002: 03 08 00 02 00 01 04 00 00 01 00 00 // WNTY EXP
01014: 04 09 00 01 00 08 06 00 00 00 00 00 // B LAB15
01026: 03 08 00 02 00 01 03 00 00 01 00 00 // LAB12 WNTY EXP-1
01038: 04 09 00 01 00 08 06 00 00 00 00 00 // B LAB15
01050: 03 08 00 02 00 01 02 00 00 01 00 00 // LAB13 WNTY EXP-2
01062: 04 09 00 01 00 08 06 00 00 00 00 00 // B LAB15
01074: 03 08 00 02 00 01 01 00 00 01 00 00 // LAB14 WNTY EXP-3
01086: 03 09 00 02 05 00 01 00 00 01 00 00 // LAB15 WATY STR5
01098: 02 06 00 01 01 01 06 00 02 00 00 04 // TF *+18,PTR
01110: 03 08 00 00 00 00 00 00 00 01 00 00 // WNTY ***
01122: 03 04 00 00 00 00 00 00 00 01 00 02 // RCTY
01134: 03 04 00 00 00 00 00 00 00 01 00 02 // RCTY
01146: 04 07 00 01 01 08 02 00 00 02 00 00 // LAB16 BNC2 LAB17
01158: 01 01 00 02 00 01 04 00 00 00 10 01 // AM EXP,1,10
01170: 01 05 00 02 00 01 00 00 00 00 00 10 // TDM EXP-4,0,11
01182: 04 06 00 00 07 03 08 00 00 01 00 00 // LAB17 BC1 LAB7
01194: 04 09 00 00 04 07 04 00 00 00 00 00 // B LAB1
01206: 03 09 00 02 06 00 01 00 00 01 00 00 // LAB18 WATY STR6
01218: 03 04 00 00 00 00 00 00 00 01 00 02 // RCTY
01230: 04 09 00 01 01 04 06 00 00 00 00 00 // B LAB16
// PTR DS 5
02000: 00 00 00 00 00
// EXP DC 5,00000
// DC 1,#
02010: 10 00 00 00 00
02015: 0A
// CTR DC 5,00000
02020: 10 00 00 00 00
// INIT DC 6,00000#
02030: 10 0A 0A 0A 0A 0A
// STR1 DAC "POWER OF 2 CALCULATOR#"
02100: 05 07 05 06 06 06 04 05 05 09 00 00 05 06 04 06 00 00 07 02
02120: 00 00 04 03 04 01 05 03 04 03 06 04 05 03 04 01 06 03 05 06
02140: 05 09 00 0A
// STR2 DAC "N = #"
02200: 05 05 00 00 03 03 00 00 00 0A
// STR3 DAC "THE NUMBER MUST BE BETWEEN 0 AND 9999.#"
02300: 06 03 04 08 04 05 00 00 05 05 06 04 05 04 04 02 04 05 05 09
02320: 00 00 05 04 06 04 06 02 06 03 00 00 04 02 04 05 00 00 04 02
02340: 04 05 06 03 06 06 04 05 04 05 05 05 00 00 07 00 00 00 04 01
02360: 05 05 04 04 00 00 07 09 07 09 07 09 07 09 00 03 00 0A
// STR4 DAC "2**#"
02400: 07 02 01 04 01 04 00 0A
// STR5 DAC " = #"
02500: 00 00 03 03 00 00 00 0A
// STR6 DAC "ABORTED#"
02600: 04 01 04 02 05 06 05 09 06 03 04 05 04 04 00 0A
// INPUT DS 6
02700: 10 0A 0A 0A 0A 0A
// POWER DS ,9999
// DEND
//==============================================================================