1 |
REM > JLibraries:Heap.2 |
2 |
REM © James Bursa, 1997 |
3 |
|
4 |
REM JB 16 Nov 1997 created |
5 |
|
6 |
|
7 |
DEF PROCHeap_Init(Anch%) |
8 |
Task_HeapBase% = HIMEM |
9 |
SYS"WimpExt_Heap", 0, HIMEM, Anch% |
10 |
ENDPROC |
11 |
|
12 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
13 |
|
14 |
DEF FNHeap_Alloc(Size%) |
15 |
LOCAL Anch% |
16 |
SYS"WimpExt_Heap", 2 ,, Size% TO ,Anch% |
17 |
=Anch% |
18 |
|
19 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
20 |
|
21 |
DEF PROCHeap_Free(Anch%) |
22 |
SYS"WimpExt_Heap", 3, Anch% |
23 |
ENDPROC |
24 |
|
25 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
26 |
|
27 |
DEF FNHeap_ReAlloc(Anch%, Size%) |
28 |
LOCAL Flag% |
29 |
SYS"WimpExt_Heap", 4, Anch%, Size% TO , Flag% |
30 |
=(Flag% <> 0) |
31 |
|
32 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
33 |
|
34 |
DEF FNHeap_Grab(Size%, Word%, Name$) |
35 |
LOCAL Anch% |
36 |
SYS"WimpExt_Heap", 2,, Size% TO , Anch% |
37 |
IF Anch% > 0 THEN PROCObject_Add(4, Anch%, Word%, Name$) |
38 |
=(Anch% <> 0) |
39 |
|
40 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
41 |
|
42 |
DEF FNHeap_Safe(Size%, Word%, Name$) |
43 |
IF NOT FNHeap_Grab(Size%, Word%, Name$) THEN ERROR Erro_Memo%, "" |
44 |
=FNHeap_Find(Word%, Name$) |
45 |
|
46 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
47 |
|
48 |
DEF FNHeap_Find(Word%, Name$) |
49 |
Hand% = FNObject_Hand(4, Name$, Word%) |
50 |
IF Hand% = &7FFFFFFF THEN ERROR 1, ("FNHeap_Find: "+Name$+", "+STR$Word%) |
51 |
=!Hand% |
52 |
|
53 |
REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ |
54 |
|
55 |
DEF PROCHeap_Lose(Word%, Name$) |
56 |
LOCAL Hand% |
57 |
IF Name$ = "*" THEN |
58 |
Hand% = FNObject_Find(4, Word%) |
59 |
WHILE Hand% <> &7FFFFFFF |
60 |
SYS"WimpExt_Heap", 3, Hand% |
61 |
PROCObject_Remove(4, Hand%, Word%) |
62 |
Hand% = FNObject_Find(4, Word%) |
63 |
ENDWHILE |
64 |
ELSE |
65 |
Hand% = FNObject_Hand(4, Name$, Word%) |
66 |
IF Hand% <> &7FFFFFFF THEN |
67 |
SYS"WimpExt_Heap", 3, Hand% |
68 |
PROCObject_Remove(4, Hand%, Word%) |
69 |
ENDIF |
70 |
ENDIF |
71 |
ENDPROC |