1
2SECTION code_clib
3SECTION code_adt_wa_priority_queue
4
5PUBLIC __wa_pq_setsize
6
7EXTERN __ba_pq_setsize, error_zc
8
9__wa_pq_setsize:
10
11   ; set the queue size as long as it remains <= queue.capacity
12   ;
13   ; enter : hl = queue *
14   ;         de = n = desired size in words
15   ;
16   ; exit  : success
17   ;
18   ;            de = n*2 = size in bytes
19   ;            bc = queue.data
20   ;            ix = queue.compar
21   ;            carry reset
22   ;
23   ;         fail if queue capacity too small
24   ;
25   ;            hl = 0
26   ;            carry set
27   ;
28   ; uses  : af, bc, de, hl, ix
29
30   sla e
31   rl d
32   jp nc, __ba_pq_setsize
33
34   jp error_zc
35