2 NUMERI AUREI: Somma divisori(x)=x
\r
3 Fino a 0xFFFF sono 6/28/496/8128
\r
5 static unsigned int result[16]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
\r
6 -> { 6, 28, 496, 8128 ... }
\r
10 unsigned int res_pos=0,tested_num=0,divisor=0;
\r
11 unsigned long int acc=0;
\r
13 for(tested_num=1;tested_num<2;tested_num++)
\r
15 for(acc=0,divisor=1;divisor<tested_num;divisor++)
\r
17 if(!(tested_num%divisor))
\r
22 { result[res_pos++]=tested_num; }
\r
26 *************************************
\r
28 A: 0x00 HX: 0x1A00 PC: 0x18BE SP: 0x016F Z:1 (I:1)
\r
29 A: 0x00 HX: num PC: 0x1950 SP: 0x016F Z:1 (I:1)
\r
31 T(n) = 80+65*sum[i=1,n]{sum[k=1,i]{k}}
\r
33 T(n) = 80+(65*n*(n+1)*(n+2))/6
\r
35 n clocki clockf clocktot T(n)
\r
36 1000: 543 -> 156.302.031 | 156.301.488 | 10.865.855.080
\r
37 900: 543 -> 121.788.732 | 121.788.189 | 7.923.844.580
\r
38 800: 543 -> 91.818.647 | 91.818.104 | 5.567.484.080
\r
39 700: 543 -> 66.162.370 | 66.161.827 | 3.731.773.580
\r
40 600: 543 -> 44.814.748 | 44.814.205 | 2.351.713.080
\r
41 500: 543 -> 27.866.608 | 27.866.065 | 1.362.302.580
\r
42 *497: 543 -> 27.430.121 | 27.429.578 | 1.337.976.265
\r
43 496: 543 -> 27.284.097 | 27.283.554 | 1.329.932.320
\r
44 400: 543 -> 15.384.865 | 15.384.322 | 698.542.080
\r
45 300: 543 -> 7.308.541 | 7.307.998 | 295.431.580
\r
46 200: 543 -> 3.178.553 | 3.178.010 | 87.971.080
\r
47 100: 543 -> 826.875 | 826.332 | 11.160.580
\r
48 50: 543 -> 218.618 | 218.075 | 1.436.580
\r
49 *29: 543 -> 77.875 | 77.332 | 292.255
\r
50 28: 543 -> 72.452 | 71.909 | 263.980
\r
51 20: 543 -> 38.104 | 37.561 | 100.180
\r
52 10: 543 -> 10.307 | 9.764 | 14.380
\r
53 *7: 543 -> 5.411 | 4.868 | 5.540
\r
54 6: 543 -> 3.778 | 3.235 | 3.720
\r
55 5: 543 -> 2.849 | 2.306 | 2.355
\r
56 4: 543 -> 1.813 | 1.270 | 1.380
\r
57 3: 543 -> 1.182 | 639 | 730
\r
58 2: 543 -> 700 | 157 | 340
\r
59 1: 543 -> 623 | 80 | 145
\r
61 quindi tempo di esecuzione e T(n), cioe' o(n^3)
\r
63 *********************************************
\r
65 static unsigned int result[16]={ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
\r
66 word result[16] = 0x0100
\r
70 unsigned int res_pos=0,tested_num=0,divisor=0;
\r
71 unsigned long int acc=0;
\r
73 18BE A7 F6 AIS #-10 <----------- INGRESSO MAIN
\r
81 18CC CD 19 51 JSR 0x1951 ; 0x1951
\r
83 for(tested_num=1;tested_num<2;tested_num++)
\r
86 18CF 9E FF 01 STHX 1,SP
\r
87 18D2 20 72 BRA *+116 ; 0x1946
\r
88 18D4 AD 7B BSR *+125 ; 0x1951
\r
89 18D6 9E FF 03 STHX 3,SP
\r
91 for(acc=0,divisor=1;divisor<tested_num;divisor++)
\r
93 if(!(tested_num%divisor))
\r
97 18D9 20 3B BRA *+61 ; 0x1916
\r
98 18DB 9E FE 01 LDHX 1,SP
\r
101 18E0 9E FE 05 LDHX 5,SP
\r
102 18E3 CD 1A 1A JSR 0x1A1A ; 0x1A1A
\r
104 18E8 65 00 00 CPHX #0x0000
\r
105 18EB 26 1F BNE *+33 ; 0x190C
\r
120 18FE 9E FE 03 LDHX 3,SP
\r
121 1901 CD 1A 2A JSR 0x1A2A ; 0x1A2A
\r
124 1907 CD 1A 30 JSR 0x1A30 ; 0x1A30
\r
126 190C C7 18 00 STA 0x1800 ; <----------- WATCHDOG
\r
129 1912 26 02 BNE *+4 ; 0x1916
\r
131 1916 9E FE 01 LDHX 1,SP
\r
132 1919 9E F3 03 CPHX 3,SP
\r
133 191C 22 BD BHI *-65 ; 0x18DB
\r
135 if(acc==tested_num)
\r
136 { result[res_pos++]=tested_num; }
\r
140 191E 9E F3 07 CPHX 7,SP
\r
141 1921 26 1D BNE *+31 ; 0x1940
\r
142 1923 9E FE 05 LDHX 5,SP
\r
143 1926 26 18 BNE *+26 ; 0x1940
\r
144 1928 9E FE 09 LDHX 9,SP
\r
147 192E 9E FF 0A STHX 10,SP
\r
150 1933 9E E6 02 LDA 2,SP
\r
152 1937 D7 01 01 STA 257,X
\r
153 193A 9E E6 01 LDA 1,SP
\r
154 193D D7 01 00 STA 256,X
\r
157 1943 26 01 BNE *+3 ; 0x1946
\r
159 1946 9E FE 01 LDHX 1,SP
\r
160 1949 65 00 01 CPHX #0x0001 <----------------- END_NUM
\r
161 194C 25 86 BCS *-120 ; 0x18D4
\r
163 1950 81 RTS <------------- USCITA MAIN
\r
167 1953 9E FF 09 STHX 9,SP
\r
169 1957 9E FF 07 STHX 7,SP
\r
171 195B 81 RTS <----------- FINE MAIN
\r
173 static void _PUSH_ARGS_L(void) { ... }
\r
181 1966 9E FE 07 LDHX 7,SP
\r
183 196B 9E E7 11 STA 17,SP
\r
185 1970 9E E7 10 STA 16,SP
\r
187 1975 9E FF 0E STHX 14,SP
\r
188 1978 9E FE 05 LDHX 5,SP
\r
191 static void _ENTER_BINARY_L(void) { ... }
\r
197 1981 9E FE 06 LDHX 6,SP
\r
200 1986 9E FE 0A LDHX 10,SP
\r
201 1989 9E FF 08 STHX 8,SP
\r
202 198C 9E FE 0C LDHX 12,SP
\r
203 198F CC 19 5C JMP 0x195C
\r
205 static void _IDIVMOD (char dummy_sgn, int j, int dummy, int i, ...) { ... }
\r
206 1992 9E 6D 04 TST 4,SP
\r
207 1995 26 1A BNE *+28 ; 0x19B1
\r
213 199E 9E E7 04 STA 4,SP
\r
214 19A1 9E E6 09 LDA 9,SP
\r
216 19A5 9E E7 05 STA 5,SP
\r
217 19A8 9E 6F 08 CLR 8,SP
\r
220 19AD 9E E7 09 STA 9,SP
\r
224 19B3 AE 08 LDX #0x08
\r
226 19B6 9E 69 0A ROL 10,SP
\r
227 19B9 9E 69 09 ROL 9,SP
\r
228 19BC 9E 69 01 ROL 1,SP
\r
229 19BF 9E E6 05 LDA 5,SP
\r
230 19C2 9E E1 01 CMP 1,SP
\r
231 19C5 22 1D BHI *+31 ; 0x19E4
\r
232 19C7 26 08 BNE *+10 ; 0x19D1
\r
233 19C9 9E E6 0E LDA 6,SP
\r
234 19CC 9E E1 09 CMP 9,SP
\r
235 19CF 22 13 BHI *+21 ; 0x19E4
\r
236 19D1 9E E6 09 LDA 9,SP
\r
237 19D4 9E E0 06 SUB 6,SP
\r
238 19D7 9E E7 09 STA 9,SP
\r
239 19DA 9E E6 01 LDA 1,SP
\r
240 19DD 9E E2 05 SBC 5,SP
\r
241 19E0 9E E7 01 STA 1,SP
\r
243 19E4 5B D0 DBNZX *-46 ; 0x19B6
\r
244 19E6 9E E6 0A LDA 10,SP
\r
246 19EA 9E E7 06 STA 6,SP
\r
247 19ED 9E E6 09 LDA 9,SP
\r
248 19F0 9E E7 0A STA 10,SP
\r
250 19F4 9E E7 08 STA 8,SP
\r
251 19F7 9E 6F 04 CLR 4,SP
\r
254 static void _LADD_k_is_k_plus_j(_PARAM_BINARY_L) { ... }
\r
256 19FC E6 12 LDA 18,X
\r
258 1A00 E7 12 STA 18,X
\r
259 1A02 E6 11 LDA 17,X
\r
261 1A06 E7 11 STA 17,X
\r
262 1A08 E6 10 LDA 16,X
\r
264 1A0C E7 10 STA 16,X
\r
265 1A0E E6 0F LDA 15,X
\r
267 1A12 E7 0F STA 15,X
\r
274 void _IMODU_STAR08(int i, ...) { ... }
\r
276 1A1C 9E FF 01 STHX 1,SP
\r
278 1A20 CD 19 92 JSR 0x1992 ; 0x1992
\r
281 1A26 9E FE 03 LDHX 3,SP
\r
284 void _LADD(void) { ... }
\r
285 1A2A CD 19 7C JSR 0x197C ; 0x197C
\r
286 1A2D CD 19 FB JSR 0x19FB ; 0x19FB
\r
288 void _POP32(void) { ... }
\r
290 1A31 9E E6 04 LDA 4,SP
\r
292 1A35 9E E6 05 LDA 5,SP
\r
294 1A3A 9E E6 06 LDA 6,SP
\r
296 1A3F 9E E6 07 LDA 7,SP
\r