1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-24 17:36:15 +00:00
Files
PDP-10.its/src/clib/c10cor.cmid
2018-10-23 19:37:16 +02:00

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