home *** CD-ROM | disk | FTP | other *** search
- ;
- ; uLLRICH VON bASSEWITZ, 2003-02-01
- ;
- ; rETURN THE AMOUNT OF FREE MEMORY ON THE HEAP.
- ;
- ; SIZE_T __FASTCALL__ _HEAPMEMAVAIL (VOID);
- ;
- ;
-
- .IMPORTZP PTR1, PTR2
- .IMPORT __HPTR, __HFIRST, __HLAST, __HEND
- .EXPORT __HEAPMEMAVAIL
-
- .INCLUDE "_HEAP.INC"
-
- .MACPACK GENERIC
-
- ;-----------------------------------------------------------------------------
- ; cODE
-
- __HEAPMEMAVAIL:
-
- ; SIZE_T sIZE = 0;
-
- LDA #0
- STA PTR2
- STA PTR2+1
-
- ; STRUCT FREEBLOCK* f = _HFIRST;
-
- LDA __HFIRST
- STA PTR1
- LDA __HFIRST+1
- @l1: STA PTR1+1
-
- ; WHILE (f) {$7b}
-
- ORA PTR1
- BEQ @l2 ; jUMP IF END OF FREE LIST REACHED
-
- ; sIZE += f->SIZE;
-
- LDY #FREEBLOCK_SIZE
- LDA (PTR1),Y
- ADD PTR2
- STA PTR2
- INY
- LDA (PTR1),Y
- ADC PTR2+1
- STA PTR2+1
-
- ; f = f->NEXT;
-
- INY ; pOINTS TO f->NEXT
- LDA (PTR1),Y
- TAX
- INY
- LDA (PTR1),Y
- STX PTR1
- JMP @l1
-
- ; RETURN sIZE + (_HEND - _HPTR) * SIZEOF (*_HEND);
-
- @l2: LDA PTR2
- ADD __HEND
- STA PTR2
- LDA PTR2+1
- ADC __HEND+1
- TAX
-
- LDA PTR2
- SUB __HPTR
- STA PTR2
- TXA
- SBC __HPTR+1
- TAX
- LDA PTR2
-
- RTS
-
-
-
-