|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 1280 (0x500) Types: TextFile Names: »DYNALL.SRC«
└─⟦c9df7130d⟧ Bits:30005915 Pascal MT+ Release 5.2 (Jet-80) └─ ⟦this⟧ »DYNALL.SRC«
;DYNAMIC STORAGE ALLOCATION AND DE-ALLOCATION ROUTINES ; NAME DYNALL ENTRY NEW,MARK,RELEASE,L126,L127,L128 EXT HPERR INCLUDE DEFLT.SRC INCLUDE FCTMAC.SRC ; ; ; NEW -- ALLOCATE MORE STORAGE TO THE HEAP ; L126: NEW: IF NOT COMPILER ;DON'T USE WITH COMPILER PUSH B ;MOVE # BYTES TO ALTERNATE REGS; EXX ;GO TO ALTERNATE REGISTER SET POP D ;GET SIZE OF ALLOCATION DAD D ;ADD TO PREVIOUS TOP OF HEAP PUSH H ;MOVE POINTER TO ALTERNATE REGS EXX POP D MOV M,D ;STORE IN POINTER VARIABLE DCX H MOV M,E LXI H,-MARGIN DAD S ;CHECK FOR A HEAP OVERFLOW DSUB D JC HPERR RET ENDIF ; ; MARK POINTER VAR WITH THE PRESENT TOP OF HEAP ; L127: MARK: IF NOT COMPILER ;DON'T USE WITH COMPILER EXX PUSH H ;GET THE TOP OF THE HEAP EXX POP D ;AND STORE IT IN THE MOV M,D ;POINTER USED AS AN ARGUMENT DCX H ;TO THE MARK ROUTINE MOV M,E RET ENDIF ; ; RELEASE STORAGE TO THE POINT SPECIFIED L128: RELEASE: IF NOT COMPILER ;DON'T USE WITH COMPILER MOV D,M ;GET THE VALUE OF THE POINTER DCX H MOV E,M PUSH D ;MOVE POINTER TO ALTERNATE REGS EXX POP H ;NEW TOP OF HEAP EXX RET ENDIF «eof»