DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦06505aaef⟧ TextFile

    Length: 1280 (0x500)
    Types: TextFile
    Names: »DYNALL.SRC«

Derivation

└─⟦c9df7130d⟧ Bits:30005915 Pascal MT+ Release 5.2 (Jet-80)
    └─ ⟦this⟧ »DYNALL.SRC« 

TextFile

;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»