mirror of
https://github.com/PDP-10/its.git
synced 2026-03-24 17:36:15 +00:00
55 lines
911 B
Plaintext
55 lines
911 B
Plaintext
;
|
|
; C10COR - Basic Storage Allocation
|
|
;
|
|
; This file is ITS dependent.
|
|
;
|
|
|
|
TITLE CCORE
|
|
.INSRT NC
|
|
.INSRT NM
|
|
|
|
.GLOBAL FNWORD
|
|
|
|
;
|
|
; GETCORE - BASIC CORE ALLOCATOR
|
|
;
|
|
; GETCORE (SIZE) => SIZE,,ADDR
|
|
;
|
|
|
|
CENTRY GETCORE,[BSIZE],[NPAGES,PTR]
|
|
|
|
MOVE B,BSIZE
|
|
ADDI B,1777
|
|
LSH B,-10. ; NUMBER OF PAGES NEEDED
|
|
MOVEM B,NPAGES
|
|
CALL PGJGET,[NPAGES] ; GET PAGES
|
|
MOVN B,NPAGES ; MINUS NUMBER OF PAGES
|
|
JUMPLE A,CODE [
|
|
CROAK STORAGE EXHAUSTED
|
|
GO DOT
|
|
]
|
|
MOVEM A,PTR
|
|
HRL A,B ; AOBJN POINTER TO NEW PAGES
|
|
TRYAGN: .CALL [SETZ
|
|
'CORBLK
|
|
1000,,300000 ; WANT READ AND WRITE ACCESS
|
|
1000,,-1 ; PUT PAGE IN MY MAP
|
|
A ; WHERE TO PUT THEM
|
|
401000,,400001 ; GET FRESH PAGES
|
|
]
|
|
GO CODE [
|
|
CROAK UNABLE TO GET CORE
|
|
MOVEI 0,30.
|
|
.SLEEP 0,
|
|
GO TRYAGN
|
|
]
|
|
MOVE A,PTR
|
|
LSH A,10. ; POINTER TO FIRST PAGE
|
|
MOVE B,NPAGES
|
|
LSH B,10. ; NUMBER OF WORDS GOTTEN
|
|
ADDM B,FNWORDS ; SAVE FOR STATS
|
|
HRL A,B ; SIZE,,ADDR
|
|
RETURN
|
|
|
|
END
|