1 1 ;--------------------------------------------------------
2 2 ; File Created by SDCC : FreeWare ANSI-C Compiler
3 3 ; Version 2.1.9Ga Sun Jan 16 17:31:35 2000
5 5 ;--------------------------------------------------------
7 7 ;--------------------------------------------------------
8 8 ; publics variables in this module
9 9 ;--------------------------------------------------------
12 12 .globl _init_dynamic_memory
13 13 .globl _init_dynamic_memory_PARM_2
14 14 ;--------------------------------------------------------
15 15 ; special function registers
16 16 ;--------------------------------------------------------
17 17 ;--------------------------------------------------------
18 18 ; special function bits
19 19 ;--------------------------------------------------------
20 20 ;--------------------------------------------------------
21 21 ; internal ram data
22 22 ;--------------------------------------------------------
24 0000 24 _malloc_sloc0_1_0:
26 0002 26 _malloc_sloc1_1_0:
28 28 ;--------------------------------------------------------
29 29 ; overlayable items in internal ram
30 30 ;--------------------------------------------------------
31 31 .area OSEG (OVR,DATA)
32 32 ;--------------------------------------------------------
33 33 ; indirectly addressable internal ram data
34 34 ;--------------------------------------------------------
36 36 ;--------------------------------------------------------
38 38 ;--------------------------------------------------------
40 40 ;--------------------------------------------------------
41 41 ; external ram data
42 42 ;--------------------------------------------------------
44 0000 44 Fmalloc$FIRST_MEMORY_HEADER_PTR$0$0==.
45 0000 45 _FIRST_MEMORY_HEADER_PTR:
47 0002 47 _init_dynamic_memory_PARM_2:
49 0004 49 _init_dynamic_memory_array_1_1:
51 0006 51 _malloc_size_1_1:
53 0008 53 _malloc_current_header_1_1:
57 57 ;--------------------------------------------------------
58 58 ; global & static initialisations
59 59 ;--------------------------------------------------------
60 60 .area GSINIT (CODE)
61 61 ;--------------------------------------------------------
63 63 ;--------------------------------------------------------
65 0000 65 G$init_dynamic_memory$0$0 ==.
67 67 ; -----------------------------------------
68 68 ; function init_dynamic_memory
69 69 ; -----------------------------------------
70 0000 70 _init_dynamic_memory:
80 0000 C0 83 80 push dph
81 0002 C0 82 81 push dpl
82 0004 90s00r04 82 mov dptr,#_init_dynamic_memory_array_1_1
84 0009 F0 84 movx @dptr,a
87 000D F0 87 movx @dptr,a
89 000E 90s00r04 89 mov dptr,#_init_dynamic_memory_array_1_1
90 0011 E0 90 movx a,@dptr
93 0014 E0 93 movx a,@dptr
94 94 ; Peephole 135 removed redundant mov
97 97 ; Peephole 109 removed ljmp by inverse jump logic
98 0017 70 20 98 jnz 00102$
101 0019 90s00r04 101 mov dptr,#_init_dynamic_memory_array_1_1
102 001C 74 01 102 mov a,#0x01
104 001F F0 104 movx @dptr,a
105 105 ; Peephole 180 changed mov to clr
107 0021 3B 107 addc a,r3
109 0023 F0 109 movx @dptr,a
111 0024 90s00r02 111 mov dptr,#_init_dynamic_memory_PARM_2
112 0027 E0 112 movx a,@dptr
115 002A E0 115 movx a,@dptr
118 002D BA FF 01 118 cjne r2,#0xff,00107$
121 0031 90s00r02 121 mov dptr,#_init_dynamic_memory_PARM_2
123 0035 F0 123 movx @dptr,a
126 0038 F0 126 movx @dptr,a
129 0039 90s00r04 129 mov dptr,#_init_dynamic_memory_array_1_1
130 003C E0 130 movx a,@dptr
133 003F E0 133 movx a,@dptr
135 0041 90s00r00 135 mov dptr,#_FIRST_MEMORY_HEADER_PTR
137 0045 F0 137 movx @dptr,a
140 0048 F0 140 movx @dptr,a
142 0049 90s00r02 142 mov dptr,#_init_dynamic_memory_PARM_2
143 004C E0 143 movx a,@dptr
146 004F E0 146 movx a,@dptr
152 0055 3B 152 addc a,r3
155 0058 24 FA 155 add a,#0xfa
158 005C 34 FF 158 addc a,#0xff
160 005F 8A 82 160 mov dpl,r2
161 0061 8B 83 161 mov dph,r3
163 0064 F0 163 movx @dptr,a
166 0067 F0 166 movx @dptr,a
168 0068 8C 82 168 mov dpl,r4
169 006A 8D 83 169 mov dph,r5
170 170 ; Peephole 101 removed redundant mov
171 171 ; Peephole 180 changed mov to clr
173 006D F0 173 movx @dptr,a
175 006F F0 175 movx @dptr,a
177 0070 74 02 177 mov a,#0x02
179 0073 F5 82 179 mov dpl,a
180 180 ; Peephole 180 changed mov to clr
182 0076 3B 182 addc a,r3
183 0077 F5 83 183 mov dph,a
184 184 ; Peephole 101 removed redundant mov
185 185 ; Peephole 180 changed mov to clr
187 007A F0 187 movx @dptr,a
189 007C F0 189 movx @dptr,a
191 007D 74 04 191 mov a,#0x04
193 0080 F5 82 193 mov dpl,a
194 194 ; Peephole 180 changed mov to clr
196 0083 3B 196 addc a,r3
197 0084 F5 83 197 mov dph,a
198 198 ; Peephole 101 removed redundant mov
199 199 ; Peephole 180 changed mov to clr
201 0087 F0 201 movx @dptr,a
203 0089 F0 203 movx @dptr,a
205 008A 205 C$malloc.c$64$1$1 ==.
206 008A 206 XG$init_dynamic_memory$0$0 ==.
208 008B 208 G$malloc$0$0 ==.
210 210 ; -----------------------------------------
211 211 ; function malloc
212 212 ; -----------------------------------------
215 008B C0 83 215 push dph
216 008D C0 82 216 push dpl
217 008F 90s00r06 217 mov dptr,#_malloc_size_1_1
218 0092 D0 E0 218 pop acc
219 0094 F0 219 movx @dptr,a
220 0095 D0 E0 220 pop acc
222 0098 F0 222 movx @dptr,a
224 0099 90s00r06 224 mov dptr,#_malloc_size_1_1
225 009C E0 225 movx a,@dptr
228 009F E0 228 movx a,@dptr
230 00A1 8A 04 230 mov ar4,r2
231 00A3 8B 05 231 mov ar5,r3
232 00A5 7E 00 232 mov r6,#0x00
233 00A7 7F 00 233 mov r7,#0x00
235 00AA 74 F9 235 mov a,#0xf9
236 00AC 9C 236 subb a,r4
237 00AD 74 FF 237 mov a,#0xff
238 00AF 9D 238 subb a,r5
239 239 ; Peephole 180 changed mov to clr
241 00B1 9E 241 subb a,r6
242 242 ; Peephole 180 changed mov to clr
244 00B3 9F 244 subb a,r7
245 245 ; Peephole 108 removed ljmp by inverse jump logic
246 00B4 50 06 246 jnc 00102$
248 248 ; Peephole 181 used 16 bit load of dptr
249 00B6 90 00 00 249 mov dptr,#0x0000
250 00B9 02s01rC3 250 ljmp 00114$
253 00BC 74 06 253 mov a,#0x06
256 256 ; Peephole 180 changed mov to clr
258 00C1 3B 258 addc a,r3
260 00C3 90s00r06 260 mov dptr,#_malloc_size_1_1
262 00C7 F0 262 movx @dptr,a
265 00CA F0 265 movx @dptr,a
267 00CB 90s00r00 267 mov dptr,#_FIRST_MEMORY_HEADER_PTR
268 00CE E0 268 movx a,@dptr
271 00D1 E0 271 movx a,@dptr
273 00D3 90s00r08 273 mov dptr,#_malloc_current_header_1_1
275 00D7 F0 275 movx @dptr,a
278 00DA F0 278 movx @dptr,a
282 00DB 90s00r08 282 mov dptr,#_malloc_current_header_1_1
283 00DE E0 283 movx a,@dptr
286 00E1 E0 286 movx a,@dptr
288 00E3 8C 82 288 mov dpl,r4
289 00E5 8D 83 289 mov dph,r5
290 00E7 E0 290 movx a,@dptr
293 00EA E0 293 movx a,@dptr
295 00EC 8E 00 295 mov ar0,r6
296 00EE 8F 01 296 mov ar1,r7
298 00F0 C0 06 298 push ar6
299 00F2 C0 07 299 push ar7
300 00F4 8C 06 300 mov ar6,r4
301 00F6 8D 07 301 mov ar7,r5
304 00FA 9E 304 subb a,r6
307 00FD 9F 307 subb a,r7
310 00FF 74 04 310 mov a,#0x04
312 0102 F5*00 312 mov _malloc_sloc0_1_0,a
313 313 ; Peephole 180 changed mov to clr
315 0105 3D 315 addc a,r5
316 0106 F5*01 316 mov (_malloc_sloc0_1_0 + 1),a
317 0108 85*00 82 317 mov dpl,_malloc_sloc0_1_0
318 010B 85*01 83 318 mov dph,(_malloc_sloc0_1_0 + 1)
319 010E E0 319 movx a,@dptr
320 010F F5*02 320 mov _malloc_sloc1_1_0,a
322 0112 E0 322 movx a,@dptr
323 0113 F5*03 323 mov (_malloc_sloc1_1_0 + 1),a
326 0117 95*02 326 subb a,_malloc_sloc1_1_0
329 011B 95*03 329 subb a,(_malloc_sloc1_1_0 + 1)
333 0120 9A 333 subb a,r2
335 0122 9B 335 subb a,r3
338 0125 D0 07 338 pop ar7
339 0127 D0 06 339 pop ar6
340 340 ; Peephole 110 removed ljmp by inverse jump logic
341 0129 60 1D 341 jz 00109$
344 012B 90s00r08 344 mov dptr,#_malloc_current_header_1_1
346 012F F0 346 movx @dptr,a
349 0132 F0 349 movx @dptr,a
351 0133 8E 82 351 mov dpl,r6
352 0135 8F 83 352 mov dph,r7
353 0137 E0 353 movx a,@dptr
356 013A E0 356 movx a,@dptr
357 357 ; Peephole 135 removed redundant mov
360 013D 60 03 360 jz 00124$
361 013F 02s00rDB 361 ljmp 00108$
363 363 ; Peephole 181 used 16 bit load of dptr
364 0142 90 00 00 364 mov dptr,#0x0000
365 0145 02s01rC3 365 ljmp 00114$
368 0148 E5*02 368 mov a,_malloc_sloc1_1_0
369 014A 45*03 369 orl a,(_malloc_sloc1_1_0 + 1)
370 370 ; Peephole 109 removed ljmp by inverse jump logic
371 014C 70 19 371 jnz 00111$
374 014E 85*00 82 374 mov dpl,_malloc_sloc0_1_0
375 0151 85*01 83 375 mov dph,(_malloc_sloc0_1_0 + 1)
377 0155 F0 377 movx @dptr,a
380 0158 F0 380 movx @dptr,a
382 0159 74 06 382 mov a,#0x06
385 385 ; Peephole 180 changed mov to clr
387 015E 3D 387 addc a,r5
389 0160 88 82 389 mov dpl,r0
390 0162 89 83 390 mov dph,r1
391 0164 02s01rC3 391 ljmp 00114$
394 0167 E5*02 394 mov a,_malloc_sloc1_1_0
397 016B E5*03 397 mov a,(_malloc_sloc1_1_0 + 1)
398 016D 3D 398 addc a,r5
401 016F 88 82 401 mov dpl,r0
402 0171 89 83 402 mov dph,r1
404 0174 F0 404 movx @dptr,a
407 0177 F0 407 movx @dptr,a
409 0178 74 02 409 mov a,#0x02
411 017B F5 82 411 mov dpl,a
412 412 ; Peephole 180 changed mov to clr
414 017E 39 414 addc a,r1
415 017F F5 83 415 mov dph,a
417 0182 F0 417 movx @dptr,a
420 0185 F0 420 movx @dptr,a
422 0186 8C 82 422 mov dpl,r4
423 0188 8D 83 423 mov dph,r5
425 018B F0 425 movx @dptr,a
428 018E F0 428 movx @dptr,a
432 432 ; Peephole 110 removed ljmp by inverse jump logic
433 0191 60 17 433 jz 00113$
435 0193 88 82 435 mov dpl,r0
436 0195 89 83 436 mov dph,r1
437 0197 E0 437 movx a,@dptr
440 019A E0 440 movx a,@dptr
442 019C 74 02 442 mov a,#0x02
444 019F F5 82 444 mov dpl,a
445 445 ; Peephole 180 changed mov to clr
447 01A2 3D 447 addc a,r5
448 01A3 F5 83 448 mov dph,a
450 01A6 F0 450 movx @dptr,a
453 01A9 F0 453 movx @dptr,a
456 01AA 74 04 456 mov a,#0x04
458 01AD F5 82 458 mov dpl,a
459 459 ; Peephole 180 changed mov to clr
461 01B0 39 461 addc a,r1
462 01B1 F5 83 462 mov dph,a
464 01B4 F0 464 movx @dptr,a
467 01B7 F0 467 movx @dptr,a
469 01B8 74 06 469 mov a,#0x06
472 472 ; Peephole 180 changed mov to clr
474 01BD 39 474 addc a,r1
476 01BF 88 82 476 mov dpl,r0
477 01C1 89 83 477 mov dph,r1
479 01C3 479 C$malloc.c$102$1$1 ==.
480 01C3 480 XG$malloc$0$0 ==.
482 01C4 482 G$free$0$0 ==.
484 484 ; -----------------------------------------
486 486 ; -----------------------------------------
489 01C4 C0 83 489 push dph
490 01C6 C0 82 490 push dpl
491 01C8 90s00r0A 491 mov dptr,#_free_p_1_1
492 01CB D0 E0 492 pop acc
493 01CD F0 493 movx @dptr,a
494 01CE D0 E0 494 pop acc
496 01D1 F0 496 movx @dptr,a
498 01D2 90s00r0A 498 mov dptr,#_free_p_1_1
499 01D5 E0 499 movx a,@dptr
502 01D8 E0 502 movx a,@dptr
503 503 ; Peephole 135 removed redundant mov
506 01DB 70 03 506 jnz 00113$
507 01DD 02s02r35 507 ljmp 00108$
511 01E1 24 FA 511 add a,#0xfa
514 01E5 34 FF 514 addc a,#0xff
516 01E8 90s00r0A 516 mov dptr,#_free_p_1_1
518 01EC F0 518 movx @dptr,a
521 01EF F0 521 movx @dptr,a
523 01F0 74 02 523 mov a,#0x02
525 01F3 F5 82 525 mov dpl,a
526 526 ; Peephole 180 changed mov to clr
528 01F6 3D 528 addc a,r5
529 01F7 F5 83 529 mov dph,a
530 01F9 E0 530 movx a,@dptr
533 01FC E0 533 movx a,@dptr
534 534 ; Peephole 135 removed redundant mov
537 537 ; Peephole 110 removed ljmp by inverse jump logic
538 01FF 60 26 538 jz 00104$
541 0201 8C 82 541 mov dpl,r4
542 0203 8D 83 542 mov dph,r5
543 0205 E0 543 movx a,@dptr
546 0208 E0 546 movx a,@dptr
548 020A 8E 82 548 mov dpl,r6
549 020C 8F 83 549 mov dph,r7
551 020F F0 551 movx @dptr,a
554 0212 F0 554 movx @dptr,a
558 558 ; Peephole 110 removed ljmp by inverse jump logic
559 0215 60 1E 559 jz 00108$
561 0217 74 02 561 mov a,#0x02
563 021A F5 82 563 mov dpl,a
564 564 ; Peephole 180 changed mov to clr
566 021D 3D 566 addc a,r5
567 021E F5 83 567 mov dph,a
569 0221 F0 569 movx @dptr,a
572 0224 F0 572 movx @dptr,a
573 573 ; Peephole 132 changed ljmp to sjmp
574 0225 80 0E 574 sjmp 00108$
577 0227 74 FE 577 mov a,#0xfe
579 022A F5 82 579 mov dpl,a
580 022C 74 FF 580 mov a,#0xff
581 022E 3B 581 addc a,r3
582 022F F5 83 582 mov dph,a
583 583 ; Peephole 101 removed redundant mov
584 584 ; Peephole 180 changed mov to clr
586 0232 F0 586 movx @dptr,a
588 0234 F0 588 movx @dptr,a
590 0235 590 C$malloc.c$118$2$1 ==.
591 0235 591 XG$free$0$0 ==.
593 593 .area CSEG (CODE)